XML 목적
XML 설계 목적
W3C에 의하면 XML은 원래 다음과 같은 목적으로 설계되었습니다.
1. XML은 인터넷상에서 명확하게 사용할 수 있어야 합니다.
2. XML은 다양한 응용 프로그램을 지원해야 합니다.
3. XML은 SGML과 호환되어야 합니다.
4. XML 문서를 처리하는 프로그램은 손쉽게 작성될 수 있어야 합니다.
5. XML에서 제공하는 옵션의 수는 최소한으로 유지되어야 합니다.
6. XML 문서는 인간이 읽을 수 있어야 하며, 의미가 명확해야 합니다.
7. XML의 설계는 빠르게 이루어져야 합니다.
8. XML의 설계는 공식적이면서 간결해야 합니다.
9. XML 문서는 작성하기 쉬워야 합니다.
10. XML 마크업의 간결성은 그다지 중요하지 않습니다.
XML 목적
서로 호환되지 않는 데이터 타입을 사용하는 시스템 간의 데이터 교환에는 많은 시간과 노력이 발생합니다.
또한, 이렇게 데이터를 변환하는 과정에서 데이터의 손실이 발생하는 경우도 종종 있습니다.
하지만 XML은 데이터를 텍스트 형식으로 저장하므로, 소프트웨어나 하드웨어에 독립적으로 데이터를 저장하고 전달할 수 있습니다.
따라서 XML을 사용하면 새로운 운영체제나 프로그램, 브라우저 등에 상관없이 데이터를 안전하고 손쉽게 전달할 수 있습니다.
HTML로부터 데이터 분리
HTML 문서의 데이터를 XML 파일로 따로 저장할 수 있습니다.
이러한 데이터는 몇 줄의 자바스크립트 코드로도 간단히 읽어 들일 수 있으며, HTML 문서 내에서 불러온 데이터를 손쉽게 이용할 수 있습니다.
다음 예제는 HTML 문서에서 분리된 XML 파일로부터 데이터를 읽어들여, 해당 데이터를 웹 페이지에 표시하는 예제입니다.
예제
function loadDoc() {
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if(this.status == 200 && this.readyState == this.DONE) {
displayData(xmlHttp);
}
};
xmlHttp.open("GET", "/examples/media/korean_major_cities.xml", true);
xmlHttp.send();
}
function displayData(xmlHttp) {
var xmlObj, cityList, result, idx;
xmlObj = xmlHttp.responseXML; // 요청한 데이터를 XML DOM 객체로 반환함.
result = "<table><tr><th>도시 이름</th><th>행정구역</th></tr>";
cityList = xmlObj.getElementsByTagName("city");
for(idx = 0; idx < cityList.length; idx++) {
result += "<tr><td>" +
cityList[idx].getElementsByTagName("name")[0].childNodes[0].nodeValue + "</td><td>" +
cityList[idx].getElementsByTagName("class")[0].childNodes[0].nodeValue + "</td></tr>";
}
result += "</table>";
document.getElementById("text").innerHTML = result;
}
위의 예제가 복잡하고 어렵게 느껴지겠지만, XML 수업들을 차근차근 공부해 나가다 보면 모두 이해할 수 있게 될 것입니다.
위의 예제에서 사용되는 korean_major_cities.xml 파일의 코드는 다음과 같습니다.