XML(eXtensible Markup Language)이란?
XML(eXtensible Markup Language)
XML은 HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)으로, 사람과 기계가 동시에 읽기 편한 구조로 되어 있다. 그러나 XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어이다. XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.
XML 문서는 텍스트, 기타 요소 또는 둘 다를 포함할 수 있는 요소로 구성된다. 요소는 꺾쇠 괄호로 묶인 시작 및 끝 태그로 표시된다.
XML을 기반으로 하는 대표적인 언어로는 XHTML, SVG, RDF, RSS, Atom, MathML이 있다.
예시
<?xml version="1.0" encoding="UTF-8"?>
<programming_languages>
<language>
<name korean="자바">Java</name>
<category>application</category>
<developer>Oracle</developer>
<version status="stable">8.91</version>
<priority rating="2">high</priority>
</language>
</programming_languages>
XML의 특징
1. XML은 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어이다.
2. XML은 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해준다.
3. XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋다.
4. XML은 데이터를 보여주지 않고, 데이터를 전달하고 저장하는 것만을 목적으로 한다.
5. XML은 텍스트 데이터 형식의 언어로 모든 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 선언
XML 문서는 맨 첫 줄에 <xml>태그를 사용하여 XML 문서임을 명시해야 한다. 이것을 XML 프롤로그(prolog)라고 하며, 이때 사용되는 <xml>태그의 이름은 소문자 xml로만 사용해야 한다.
XML 프롤로그의 문법
<?xml version="XML문서버전" encoding="문자셋" standalone="yes|no"?>
version 속성에는 XML 문서에 사용된 XML의 버전을 명시한다.
encoding 속성에는 XML 문서의 문자셋(character set)을 명시하며, 기본값은 UTF-8로 설정된다.
standalone 속성은 XML 문서가 외부 DTD(Document Type Definition)와 같은 외부 소스의 데이터에 의존하고 있는 문서인지 아닌지를 XML 파서(parser)에 알려주는 역할을 한다.
이 속성의 기본값은 no이며, yes로 설정하면 이 문서를 파싱(parsing)할 때 참조해야 할 외부 소스가 없다는 것을 의미한다.
XML 문법
1. 모든 XML 요소는 종료 태그를 가져야 한다. → </>
2. XML 태그는 대소문자를 구분한다.
3. XML에서는 시작 태그와 종료 태그가 모두 대소문자까지 같아야 합니다(HTML에서는 속성값을 따옴표로 감싸지 않아도 큰 문제 없이 동작한다).
4. XML 태그의 여닫는 순서는 반드시 지켜져야 한다.
5. XML에서 속성값은 반드시 따옴표로 감싸야 한다.
6. XML에서는 띄어쓰기를 인식한다.
참고 및 출처
https://appmaster.io/ko/blog/xmliran-mueosibnigga
http://www.tcpschool.com/xml/xml_basic_element