Today
-
Yesterday
-
Total
-
  • XML
    Programmer/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)
    예를 들면, 해석기의 오류를 막기 위해서 '<' 대신에 "&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 문자로 예약되어 있다. [본문으로]

    댓글

Designed by Tistory.