Mark Up/XML XML 기초
  • 728x90
    반응형


    XML 기초




    XML



    XML은 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어이다.

    XML은 EXtensible Markup Language의 약자로, 수많은 응용 분야에서 데이터를 저장하고 전달하는 중요한 역할을 맡고 있다.


    예제

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <?xml version="1.0" encoding="UTF-8"?>
     
    <programming_languages>
     
        <language>
     
            <name>HTML</name>
     
            <category>web</category>
     
            <developer>W3C</developer>
     
            <version status="working draft">5.1</version>
     
            <priority rating="1">high</priority>
     
        </language>
     
        <language>
     
            <name>CSS</name>
     
            <category>web</category>
     
            <developer>W3C</developer>
     
            <version status="stable">3.0</version>
     
            <priority rating="3">middle</priority>
     
        </language>
     
        <language>
     
            <name korean="자바">Java</name>
     
            <category>application</category>
     
            <developer>Oracle</developer>
     
            <version status="stable">8.91</version>
     
            <priority rating="2">high</priority>
     
        </language>
     
        <language>
     
            <name korean="파이썬">Python</name>
     
            <category>application</category>
     
            <developer>Python</developer>
     
            <version status="stable">3.52</version>
     
            <priority rating="4">middle</priority>
     
        </language>
     
    </programming_languages>
    cs


    XML 이란?



    XML은 EXtensible Markup Language의 약자이며, 1998년에 W3C 표준 권고안에 포함되었다.


    XML은 HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)이다.

    이 언어는 사람과 기계가 동시에 읽기 편한 구조로 되어 있다.


    그러나 XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로 만들어졌다.

    또한, XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.



    XML의 특징



    XML의 중요한 특징은 다음과 같다.

    1. XML은 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어이다.
    2. XML은 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해준다.
    3. XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋다.
    4. XML은 데이터를 보여주지 않고, 데이터를 전달하고 저장하는 것만을 목적으로 한다.
    5. XML은 텍스트 데이터 형식의 언어로 모든 XML 문서는 유니코드 문자로만 이루어진다.

    Tip : XML은 문서용 마크업 언어를 정의하기 위한 메타언어인 SGML(Standard Generalized Markup Language)을 기반으로 만들어졌다.



    XML 기반의 언어



    XML을 기반으로 하는 대표적인 언어는 다음과 같다.


    1. XHTML
    2. SVG
    3. RDF
    4. RSS
    5. Atom
    6. MathML

    XML 표준



    XML 표준화 작업은 1996년 W3C에서 지원하는 XML 워킹 그룹에 의해 시작된다.

    그 후 1997년에 XML 1.0 초안이 완성되고, 1998년에 마침내 XML 1.0 표준 권고안이 공표된다.

    XML 1.0의 오류를 수정하고 발전을 거듭하여 2008년에는 XML 1.0의 다섯 번째 버전이 발표되기에 이른다.


    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 파일로 부터 데이터를 읽어들여, 해당 데이터를 웹 페이지에 표시하는 예제이다.


    예제

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <!DOCTYPE html>
    <html lang="ko">
     
    <head>
        <meta charset="UTF-8">
        <title>XML INTRO</title>
        <style>
            table, th, td {
                border: 1px solid black;
                border-collapse: collapse;
            }
       </style>
        <script>
            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;
            }
       </script>
    </head>
     
    <body>
     
        <h1>HTML로부터 데이터 분리</h1>
        <button onclick="loadDoc()">XML 데이터 불러오기!</button>
        <p id="text"></p>
        
    </body>
     
    </html>
    cs

    위의 예제에서 사용되는 korean_major_cities.xml 파일의 코드는 다음과 같다.





    728x90
    반응형

    'Mark Up > XML' 카테고리의 다른 글

    XML/XPath  (0) 2018.11.09
    XML 노드  (0) 2018.11.05
    XML DOM  (0) 2018.11.05
    XSLT  (1) 2018.11.05
    XML 구조  (0) 2018.11.02
상단으로