Theory/Data Exchange

XML

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)
예를 들면, 해석기의 오류를 막기 위해서 '<' 대신에 "&lt;"를 사용한다. 자세한 내용은 아래 표를 참고한다.

&lt; < less than
&gt; > greater than
&amp; & ampersand
&apos; ' apostrophe
&quot; " quotation mark


XML 요소
XML 요소는 다른 요소, 테스트, 속성 또는 이들을 혼합한 형태를 담을 수 있다.


XML 요소 vs 속성

  • 되도록이면 모든 데이타는 XML의 요소를 사용하여 표현한다.
  • 메타데이터[각주:4]의 경우에는 XML 속성으로 표현하는 것이 좋다.


실수하기 쉬운 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 보다 더 가벼운 것이 특징이다.


관련 링크



  1. 키-값 방식의 간단한 포맷이나, JSON이 대안이 될 수 있다 [본문으로]
  2. 최근에는 스토리지나 네트워크 자원의 매우 저렴하여 단점으로 보기 어렵다. 이 문제를 압축을 이용하여 해결할 수도 있다. [본문으로]
  3. 자식 요소 (child elements)라고도 부른다. [본문으로]
  4. 메타데이터는 데이터를 보조한다. 메타데이터는 생략되어도 내용 자체가 변경되지 않는다. [본문으로]
  5. 몇몇 프로그램에서는 "-" 연산자로 오인될 수 있다. [본문으로]
  6. 프로그램에 따라서 참조 연산자로 해석될 수 있다. [본문으로]
  7. namespace 문자로 예약되어 있다. [본문으로]
신고

'Theory > Data Exchange' 카테고리의 다른 글

JSON  (0) 2017.02.01
XML 스키마  (0) 2012.12.28
DTD  (0) 2012.12.27
XML  (0) 2012.12.21

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

카운터

Today : 68
Yesterday : 341
Total : 179,320