-
XMLProgrammer/Computer Science 2012. 12. 21. 11:36
XML은 EXtensible Markup Language의 약어로써, 데이타를 저장하거나 주고받는데 사용하는 마크업(markup) 언어이다.
특징과 장단점
- 뛰어난 호환성을 제공한다. 많은 프로그램 언어와 웹, 소프트웨어에서 XML을 지원한다.
- 텍스트 파일로서 사람이 읽을 수 있다. 이는 디버깅에 매우 효과적이다.
- 내용과 표현이 분리되어 있다. XML 문서가 다루는 것은 오직 데이터의 내용이다. 이것을 어떻게 사용할 것인지는 프로그램의 몫이다.
- 구조가 간단한 데이타에 사용하기에는 비용이 많이 든다.. 1
- 텍스트 파일임으로 이진 데이타보다 더 많은 용량을 차지한다. 2
XML의 형식
XML의 예 : SMIL
<smil xmlnl="http://www.w3.org/2001/SMIL20/"> <head> <meta name="sync" content="soft"/> <layout> <root-layout id="SMIL-" width="492" height="810"/> <region id="address-region" width="50%" height="8%"/> <region id="image-region" top="8%" height="91%"/> </layout> </head> <body> <seq> <par> <text type="text/plain" region="address-region" src="Herengracht284.txt" dur="2s"/> <img region="image-region" src="http://www.amsterdam.nl/bmz/adam/pics/h284.jpg"/> </par> <par> <text type="text/plain" region="address-region" src="Herengracht539.txt"/> <img region="image-region" src="http://www.amsterdam.nl/bmz/adam/pics/h539.jpg" dur="2s"/> </par> </seq> </body> </smil>
나무 구조(tree structure)
- 반드시 하나의 최상의 요소(root element)를 가진다.
- 모든 요소(element)는 여러 개의 하위 요소(sub elements)를 가질 수 있다. 3
- 요소들간의 관계: 부모(parent), 자식(child), 형제(sibling)
- 부모 요소는 여러 자식 요소을 가실 수 있다.
- 같은 레벨의 자식 요소들의 관계를 형제라고 부른다.
XML 트리 구조의 예 : Smooth Streaming Client Manifest
- StreamIndex 요소는 Quality, c, Content 라는 자식 요소를 가진다.
- Quality, c, Content는 형제 관계이다.
사소하면서 놓치기 쉬운 내용
- XML 태그는 대소문자를 구별한다.
- XML 문서는 반드시 하나의 최상의 요소를 가진다.
- XML 속성은 반드시 인용부호로 감싸야한다.
해석 오류를 유발하는 5개의 문자 참조 (character entity references)
예를 들면, 해석기의 오류를 막기 위해서 '<' 대신에 "<"를 사용한다. 자세한 내용은 아래 표를 참고한다.
< < less than > > greater than & & ampersand ' ' apostrophe " " quotation mark XML 요소
XML 요소는 다른 요소, 테스트, 속성 또는 이들을 혼합한 형태를 담을 수 있다.XML 요소 vs 속성
실수하기 쉬운 XML 이름 규칙
- (필수) 문자로 시작한다.
- (필수) xml, XML, Xml 등을 사용하지 않는다.
- (권장) "_"나 대소문자를 사용하고, "-", "." 5, ":" 6 문자는 피한다. 7
- (권장) 영문자를 사용한다.
CDATA
- Parsed Character Data (PCDATA)와 비교되는 것으로 XML 해석기에서 해석하면 안되는 데이타를 말한다.
- XML 해석기는 CDATA 섹션을 해석하지 않는다.
<script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1; } else { return 0; } } ]]> </script>
대안으로 사용하는 언어
- JSON : XML 보다 더 가벼운 것이 특징이다.
관련 링크
- 키-값 방식의 간단한 포맷이나, JSON이 대안이 될 수 있다 [본문으로]
- 최근에는 스토리지나 네트워크 자원의 매우 저렴하여 단점으로 보기 어렵다. 이 문제를 압축을 이용하여 해결할 수도 있다. [본문으로]
- 자식 요소 (child elements)라고도 부른다. [본문으로]
- 메타데이터는 데이터를 보조한다. 메타데이터는 생략되어도 내용 자체가 변경되지 않는다. [본문으로]
- 몇몇 프로그램에서는 "-" 연산자로 오인될 수 있다. [본문으로]
- 프로그램에 따라서 참조 연산자로 해석될 수 있다. [본문으로]
- namespace 문자로 예약되어 있다. [본문으로]
'Programmer > Computer Science' 카테고리의 다른 글
GLib의 GHashTable로 알아보는 해시 테이블의 충동 해결 방법 (1) 2013.09.17 GLib의 GTree로 알아보는 균형 이진 트리 알고리즘 (0) 2013.08.20 XML 스키마 (0) 2012.12.28 DTD (0) 2012.12.27 이동 통신 표준 표 - 초간단 버젼 (0) 2012.12.06 댓글