XML 이해

Dare Obasanjo
Microsoft Corporation

2003년 7월

요약: XML(Extensible Markup Language)이 Universal Data Access를 활용하는 방법을 알아보겠습니다. XML은 일반 텍스트 유니코드 기반 메타 언어로 태그 언어를 정의하기 위한 언어입니다. XML은 특정 프로그래밍 언어, 운영 체제 또는 소프트웨어 공급업체와 관련이 없습니다. XML은 데이터 조작, 구성, 변환 및 쿼리를 위한 다양한 기술에 대한 액세스를 제공합니다.

목차

소개 소개
어디서나 채택할 수 있는 XML 어디서나 채택할 수 있는 XML
XML 1.0 구문 XML 1.0 구문
Infoset 및 XML 기술군 Infoset 및 XML 기술군
결론 결론
참고 자료 참고 자료

소개

XML(Extensible Markup Language)은 원래 World Wide Web의 새 문서 형식을 정의하기 위한 언어로 구상되었습니다. XML은 SGML(Standard Generalized Markup Language)에서 파생되었고 태그 언어를 정의하기 위한 언어인 메타 언어로 간주할 수 있습니다. SGML 및 XML은 태그('<' 및 '>'로 묶인 단어)를 사용하여 문서 구조를 설명하는 메커니즘을 제공하는 텍스트 기반 형식입니다. 웹 개발자의 경우 HTML과 XML이 유사하다는 점을 알 수 있을 것입니다. 이는 두 언어 모두가 SGML에서 파생되었기 때문입니다.

XML의 이용이 늘어남에 따라 이제 XML은 웹의 새 문서 형식을 설명하는 데 유용할 뿐만 아니라 구조화된 데이터를 설명하는 데도 적합한 것으로 널리 인식되고 있습니다. 구조화된 데이터의 예로는 스프레드시트, 프로그램 구성 파일 및 네트워크 프로토콜에 일반적으로 포함된 정보를 들 수 있습니다.

XML은 테이블 형식 데이터(예: 데이터베이스나 스프레드시트의 관계형 데이터)와 부분 구조화된 데이터(예: 웹 페이지 또는 업무 문서)를 모두 쉽게 표현할 수 있기 때문에 기존 데이터 형식보다 더 자주 사용됩니다. 널리 사용되는 기존의 파일 형식 중에서 CSV(쉼표로 구분된 값) 파일은 테이블 형식 데이터에 대해 잘 작동하지만 부분 구조화된 데이터는 잘 처리하지 못하며, RTF는 부분 구조화된 테스트 문서용으로 설계되었습니다. 이 때문에 XML이 정보 교환을 위한 국제 공통어로 널리 채택되고 있습니다.

어디서나 채택할 수 있는 XML

XML은 구조화된 데이터 및 부분 구조화된 데이터 모두를 표현할 수 있는 점 외에도 몇 가지 특성 때문에 데이터 표현 형식으로 널리 채택되고 있습니다. XML은 확장 가능하고 플랫폼에 독립적이며 유니코드와 완벽하게 호환되므로 국제적으로 지원됩니다. XML은 텍스트 기반 형식이기 때문에 언제든지 일반 텍스트 편집 도구를 사용하여 XML 문서를 읽고 편집할 수 있습니다.

XML의 확장성은 여러 가지 면에서 확연히 드러납니다. 무엇보다도 HTML과 달리 XML에는 고정된 어휘가 없습니다. 대신 XML을 사용하면 특정 응용 프로그램 또는 산업 분야별로 고유한 어휘를 정의할 수 있습니다. 둘째로, XML 형식을 처리 또는 사용하는 응용 프로그램은 제공되는 XML의 구성상의 변경 사항에 대해 해당 변경 사항이 부수적인 경우 다른 형식을 사용하는 응용 프로그램에 비해 영향을 덜 받습니다. 예를 들어 <Customer> 요소를 customer-id 특성과 함께 처리해야 하는 응용 프로그램의 경우 last-purchase-date와 같은 다른 특성이 <Customer> 요소에 추가되더라도 일반적으로 손상되지 않습니다. 이러한 융통성은 다른 데이터 형식에서는 찾아보기 힘들기 때문에 XML 사용의 중요한 이점입니다.

XML은 특정 프로그래밍 언어, 운영 체제 또는 소프트웨어 공급업체와 관련이 없습니다. 실제로 다양한 프로그래밍 언어를 사용하여 XML을 작성 또는 활용하는 작업은 상당히 간단합니다. XML은 플랫폼에 독립적이기 때문에 서로 다른 프로그래밍 플랫폼과 운영 체제 간의 상호 운용성을 확보하는 수단으로 매우 유용합니다.

XML로 데이터를 제공할 때의 이점이 널리 인식되면서 XML 데이터 원본이 폭발적으로 증가했습니다. 업무 문서, 데이터베이스, 업무간 통신 등이 모두 XML을 표시 형식으로 사용하여 전파 중이거나 전파된 정보 원본의 예입니다. Microsoft Office, Microsoft SQL Server™ 및 Microsoft .NET Framework와 같은 Microsoft 제품을 사용하면 최종 사용자와 개발자가 문서, 네트워크 메시지 및 기타 데이터를 XML로 작성 및 소비할 수 있습니다.

XML 1.0 구문

앞에서 언급한 것처럼 W3C XML 1.0 권장 사항에서는 HTML과 유사한 구문을 사용하여 구조화된 데이터 및 부분 구조화된 데이터를 설명하기 위한 텍스트 기반 형식을 설명합니다.

XML 및 HTML 비교

HTML과 XML 문서는 "시작 태그"(예: <order>), "종료 태그"(예: </order>) 및 두 태그 사이의 정보(요소의 내용이라고 함)로 되어 있는 요소들로 구성됩니다. 요소에는 요소와 그 내용에 대한 메타데이터를 포함하는 특성과 함께 주석을 달 수 있습니다.

그러나 HTML과 XML에는 중요한 차이가 있습니다. XML은 대/소문자를 구분하지만 HTML은 그렇지 않습니다. 따라서 XML에서는 시작 태그 <Table> 과 <table>이 다르지만 HTML에서는 같습니다. HTML과 XML의 또 다른 차이는 XML은 올바른 형식이라는 개념을 도입한 점입니다. XML의 올바른 형식 규칙은 HTML과 같은 태그 언어 처리에서 발생하는 모호성을 제거합니다. 즉, 모든 특성 값을 따옴표로 묶어야 하고 모든 요소에는 시작 태그와 종료 태그가 있어야 한다거나 빈 요소임을 명시적으로 표시해야 한다는 등의 규칙을 엄격히 따르도록 했습니다. 올바른 형식에 대한 간략한 설명은 XML FAQ의 D.2 섹션을 참조하십시오.

HTML과 XML의 가장 중요한 차이점은 HTML에는 해당 동작이 지정된 미리 정의된 요소와 특성이 있지만 XML에는 없습니다. 대신 문서 작성자가 자신의 응용 프로그램이나 업무 필요에 적합한 고유한 XML 어휘를 만들 수 있습니다. XML 어휘에는 현재 금융 문서 작성(XBRL) 및 금융 서비스(FpML)에서 웹 문서(XHTML) 및 네트워크 프로토콜(SOAP)에 이르는 다양한 산업 부문과 응용 프로그램을 위한 어휘가 있습니다. XML 문서를 렌더링 또는 표시하는 방식을 지정하는 미리 정의된 요소 및 특성은 별로 중요하지 않기 때문에 문서 작성자는 특정 문제와 관련된 의미론적 정보만 포함하는 문서를 작성하는 데만 중점을 둘 수 있습니다. XML 어휘에서 사용하는 내용과 표시를 구분하면 더 많은 정보를 다시 사용하고 내용의 용도를 변경할 수 있습니다.

XML 문서 분석

아래는 음반 가게의 고객 주문을 나타내는 예제 XML 문서입니다. 이 문서에서 CD에 대한 정보를 설명하는 엄격히 구조화된 데이터와 특정 고객에 대한 특수한 설명 및 메모를 포함하는 부분 구조화된 데이터를 쉽게 표시하는 방법을 주목하여 살펴보십시오.

<xml version="1.0" encoding="ks_c_5601-1987" >
< xml-stylesheet href="orders.xsl" >
<order id="ord123456">
  <customer id="cust0921">
    <first-name>Dare</first-name>
    <last-name>Obasanjo</last-name>
    <address>
      <street>One Microsoft Way</street>
      <city>Redmond</city>
      <state>WA</state>
      <zip>98052</zip>
    </address>
  </customer>
  <items>
    <compact-disc>
      <price>16.95</price>
      <artist>Nelly</artist>
      <title>Nellyville</title>
    </compact-disc>
    <compact-disc>
      <price>17.55</price>
       <artist>Baby D</artist>
       <title>Lil Chopper Toy</title>
    </compact-disc>
  </items>
  <!--  Always go the extra mile for the customer -->
  <special-instructions xmlns:html="http://www.w3.org/1999/xhtml/">
    <html:p>If customer is not available at the address then attempt 
      leave package at one of the following locations listed in order of 
      which should be attempted first 
    <html:ol>
      <html:li>Next Door</html:li>
      <html:li>Front Desk</html:li>
      <html:li>On Doorstep</html:li>
    </html:ol>
    <html:b>Note</html:b> Remember to leave a note detailing where 
      to pick up the package.
    </html:p>
  </special-instructions>
</order> 

문서는 사용 중인 XML의 버전과 문서에서 사용되는 문자 인코딩을 지정하는 XML 선언(옵션)으로 시작합니다. 그 다음에는 XML 스타일시트 처리 명령이 나옵니다. 이 명령은 웹 브라우저와 같이 사용자 응용 프로그램을 보다 효과적인 방법으로 렌더링하기 위해 사용하는 XML 문서에 대한 서식 명령을 포함하는 스타일시트를 바인딩하는 데 사용됩니다. 처리 명령을 사용하여 일반적으로 응용 프로그램 관련 정보를 XML 문서에 포함시킵니다. 예를 들어 위 문서의 내용을 처리하는 대부분의 응용 프로그램은 xml 스타일시트 처리 명령을 무시합니다. 한편 웹 브라우저와 같이 XML 문서를 표시하는 데 사용되는 응용 프로그램은 처리 명령의 정보를 사용하여 문서 표시를 위한 특수 명령을 포함하는 스타일시트를 배치할 위치를 결정합니다.

유니코드 + 꺾쇠 괄호 = 상호 운용성

XML 1.0 구문이 텍스트 기반이고 구문 분석이 매우 간단하다는 점 때문에 플랫폼간 상호 운용성이 필요한 경우 XML이 주요한 데이터 교환 형식으로 사용되게 되었습니다. 널리 사용되는 여러 운영 체제에서 XML 파서를 사용할 가능성이 높아짐에 따라 교환 형식으로 XML을 표준화하여 서로 다른 플랫폼의 사용자들 간에 정보를 쉽게 교환할 수 있습니다.

XML은 유니코드를 기반으로 하기 때문에 World Wide Web과 같은 전세계 네트워크를 통해 정보를 공유하는 데 적합합니다.

Infoset 및 XML 기술군

텍스트 기반 XML 구문을 사용하여 얻을 수 있는 플랫폼 상호 운용성과 확장성이 XML을 데이터 표시 형식으로 사용할 때의 가장 좋은 이점이지만 응용 프로그램 개발자에게 있어 이러한 이점은 XML의 유용한 점 중 하나일 뿐입니다. XML을 사용하여 얻을 수 있는 또 다른 주요한 이점은 한 번의 액세스를 통해 데이터 조작, 구성, 변환 및 쿼리를 위한 다양한 기술을 사용할 수 있다는 점입니다.

XML Infoset

W3C XML Information Set 권장 사항에서는 XML 문서에 대한 이론적인 표현을 설명합니다. XML Infoset는 기본적으로 XML 기술이 XML 문서의 어느 부분에서 작동하는지를 공식적으로 설명하는 정의 집합의 역할을 합니다. SOAP 1.2, XML Schema 및 XQuery를 비롯한 여러 W3C XML 기술은 XML Infoset의 용어와 관련하여 설명할 수 있습니다.

XML Infoset는 XML 문서의 트리 기반 계층 표현입니다. XML 문서의 정보 집합은 XML 문서 구성 요소의 추상 표현인 여러 정보 항목으로 구성됩니다. 이러한 정보 항목에는 요소, 특성, 처리 명령, 주석, 문자, 표기법, 네임스페이스, 구문 분석되지 않은 엔터티, 확장되지 않은 엔터티 참조 및 문서 형식 선언 등 문서를 표시하는 정보 항목이 있습니다. XML Infoset는 공식적으로 XML 문서에서 중요한 정보로 취급해야 하는 정보를 정의하기 위해 노력한 첫 시도입니다. 예를 들어 infoset는 두 가지 형식의 빈 요소를 구분하지 않습니다. 따라서 XML Infoset에서는 다음

<test></test>
  <test/> 

를 동일한 것으로 간주합니다. 마찬가지로 특성에 사용된 인용 부호의 종류는 중요하게 고려되지 않으므로 다음 요소

<test attr='value'/>
  <test attr="value"/> 

도 동일한 것으로 간주됩니다. XML Infoset에서 중요하게 고려되지 않는 XML 1.0 구문에 대한 목록은 W3C XML Information Set 권장 사항의 부록 D에 나와 있습니다.

XML Information Set 권장 사항에서는 텍스트 XML 문서의 구문 분석 외의 방법으로 만든 infoset인 종합적인 infoset의 개념을 설명합니다. 종합 infoset는 해당 데이터를 XML Infoset에 매핑할 수 있는 경우 XML 기술을 사용하여 비 XML 데이터를 처리할 수 있는 길을 열었습니다. 종합 infoset 처리의 예로는 XPath를 사용하여 .NET Framework의 개체를 쿼리하거나 XSLT를 사용하여 이 개체를 변환할 수 있도록 하는 ObjectXPathNavigator (US)를 들 수 있습니다.

스키마 언어

XML 스키마 언어는 XML 문서의 구조와 내용을 설명하는 데 사용됩니다. 예를 들어 스키마를 사용하여 price, title 및 artist 요소를 자식으로 포함하는 하나 이상의 compact-disc 요소로 구성되는 문서를 지정할 수 있습니다. XML 스키마가 XML 작성자와 소비자 간의 올바른 XML 메시지를 구성하는 요소에 대해 설명하므로 문서 교환 시 XML 스키마에서는 두 당사자 간의 계약에 대해 설명합니다. DTD에서 XDR에 이르는 여러 종류의 XML용 스키마 언어가 있지만 현재 주로 사용되는 것은 대개 XSD라고도 하는 W3C XML 스키마 정의 언어입니다.

XSD는 문서를 교환하는 두 엔터티 간의 계약을 설명하는 전통적인 역할을 넘어 XML 스키마의 역할을 확장하려는 첫 시도라는 점에서 XML 스키마 언어 중에서 다른 언어들과는 확연히 구분되는 언어입니다. XSD는 PSVI(Post Schema Validation Infoset)의 개념을 도입합니다. 규칙 XSD 프로세서는 XML Infoset를 입력으로 받아 들여 이를 유효성 검사를 통해 PSVI(Post Schema Validation Infoset)로 변환합니다. PSVI는 새 정보 항목이 추가되고 기존 정보 항목에 새 속성이 추가된 원래 입력 XML Infoset입니다. W3C XML 스키마 권장 사항에서는 PSVI를 활용하여 얻을 수 있는 이점을 나열합니다.

PSVI를 활용하여 얻을 수 있는 이점에서 중요한 부분 중 하나는 형식 주석입니다. 요소와 특성의 형식이 엄격하게 지정되며 이 형식에 연결된 데이터 형식 정보를 갖습니다. 이러한 강력한 형식의 XML은 .NET Framework XmlSerializer (US)와 같은 기술을 사용하여 개체에 매핑되고, SQLXML (US) 및 .NET Framework DataSet (US)와 같은 기술을 사용하여 관계형 테이블에 매핑되며, XPath 2.0 및 XQuery와 같이 강력한 형식을 사용하는 XML 쿼리 언어를 사용하여 처리될 수 있기 때문에 다양하게 사용할 수 있습니다.

다음은 XML 문서 분석이라는 제목의 섹션에 있는 예제 문서의 items 요소를 설명하는 예제 스키마 단편입니다.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="items">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="compact-disc" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
</xs:element>
<xs:element name="compact-disc">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="price" type="xs:decimal" />
      <xs:element name="artist" type="xs:string" />
      <xs:element name="title" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>

트리 모델 기반 API

트리 모델 API는 일반적으로 한번에 메모리로 로드되는 트리 노드로 XML 문서를 표시합니다. 가장 널리 사용되는 XML용 트리 모델 API는 W3C DOM(Document Object Model)입니다. DOM을 사용하면 프로그래밍 방식으로 XML 문서를 읽고 조작하고 수정할 수 있습니다.

다음은 .NET Framework의 XmlDocument (US) 클래스를 사용하여 items 요소에서 첫째 compact-disc의 가수 이름과 제목을 가져오는 예제입니다.

using System;
using System.Xml; 
public class Test{
  public static void Main(string[] args){
    XmlDocument doc = new XmlDocument(); 
    doc.Load("test.xml"); 
    XmlElement firstCD = (XmlElement) doc.DocumentElement.FirstChild;
XmlElement artist  = 
(XmlElement) firstCD.GetElementsByTagName("artist")[0];
    XmlElement title   =
(XmlElement) firstCD.GetElementsByTagName("title")[0]
    Console.WriteLine("Artist={0}, Title={1}", artist.InnerText, title.InnerText);
  }
}

커서 기반 API

XML 커서 API는 문서의 고유한 측면에 초점을 맞추고 지정된 대로 XML 문서를 이동하는 렌즈로 생각할 수 있습니다. XML 커서 API의 예로는 .NET Framework의 XPathNavigator Class (US)가 있습니다. 트리 모델 API와 비교했을 때 XML 커서 API의 이점은 전체 XML 문서를 메모리 내에 둘 필요가 없다는 점입니다. 이로 인해 "필요할 때"마다 문서를 제작하는 XML 문서 작성 측면에서 볼 때 작업을 최적화할 수 있는 길이 열렸습니다.

다음은 .NET Framework의 XPathNavigator Class (US)를 사용하여 items 요소에서 첫째 compact-disc의 가수 이름과 제목을 가져오는 예제입니다.

using System;
using System.Xml; 
using System.Xml.XPath; 
public class Test{
  public static void Main(string[] args){
    XmlDocument doc = new XmlDocument(); 
    doc.Load("test.xml"); 
    XPathNavigator nav = doc.CreateNavigator(); 
    nav.MoveToFirstChild(); //루트 노드에서 문서 요소(항목)로 이동
    nav.MoveToFirstChild(); //항목 요소에서 첫째 CD 요소로 이동
    //CD 요소에서 가수 요소로 이동
    nav.MoveToFirstChild();
    nav.MoveToNext(); 
    string artist = nav.Value; 
    //가수 요소에서 제목 요소로 이동
    nav.MoveToNext(); 
    string title = nav.Value; 
    Console.WriteLine("Artist={0}, Title={1}", artist, title);
  }
} 

스트리밍 API

XML 처리용 스트리밍 API를 사용하면 메모리에서 처리 중인 현재 노드의 컨텍스트 외에 다른 요소를 저장할 필요 없이 XML 문서를 처리할 수 있습니다. 이러한 API를 사용하면 많은 메모리 공간을 사용하지 않고도 큰 XML 파일을 처리할 수 있습니다. XML 처리용 스트리밍 API에는 푸시 기반 XML 파서와 풀 기반 XML 파서라는 두 가지 주요 클래스가 있습니다.

SAX와 같은 푸시 기반 파서는 XML 스트림을 통해 이동한 다음 XML 노드가 발견되면 등록된 이벤트 처리기로 이벤트를 "푸시"하여(콜백 메서드) 작동합니다. .NET Framework의 XmlReader Class (US)와 같은 풀 기반 파서는 XML 스트림에서 전진 전용 커서로 작동합니다.

다음은 .NET Framework의 XmlReader class (US)를 사용하여 items 요소에서 첫째 compact-disc의 가수 이름과 제목을 가져오는 예제입니다.

using System;
using System.Xml.Xsl;
public class Test{
  public static void Main(string[] args){
    string artist = null, title = null; 
    XmlTextReader reader = new XmlTextReader("test.xml"); 
    reader.MoveToContent(); //루트 노드에서 문서 요소(항목)로 이동
    /* 첫 번째 <artist> 요소에 이를 때까지 계속 읽습니다.*/
    while(reader.Read()){
      if((reader.NodeType == XmlNodeType.Element) && reader.Name.Equals("artist")){
        artist = reader.ReadElementString();
        title  = reader.ReadElementString(); 
        break; 
      }
    }
    Console.WriteLine("Artist={0}, Title={1}", artist, title);
  }
}

XML 쿼리

일부 경우 데이터 검색 조건이 특수하거나 API에서 특정 쿼리로 처리할 수 있는 XML 문서의 특정 측면을 노출하지 못하기 때문에 API를 사용하여 XML 문서에서 정보를 추출하는 일이 번거로울 수 있습니다. XPath 1.0 및 발표 예정인 XQuery와 같은 XML 쿼리 언어에서는 XML infoset에서 정보를 추출하기 위한 풍부한 메커니즘을 제공합니다.

다음은 XPath를 사용하여 items 요소에서 첫째 compact-disc의 가수 이름과 제목을 가져오는 방법을 보여주는 예제입니다.

using System;
using System.Xml.XPath; 
public class Test{
  public static void Main(string[] args){
    XPathDocument doc   = new XPathDocument("test.xml"); 
    XPathNavigator nav  = doc.CreateNavigator(); 
    XPathNodeIterator iterator = nav.Select("/items/compact-disc[1]/artist | /items/compact-disc[1]/title");
    iterator.MoveNext();
    Console.WriteLine("Artist={0}", iterator.Current);
    iterator.MoveNext();
    Console.WriteLine("Title={0}", iterator.Current);
  }
}

XML 변환

종종 XML 문서를 하나의 어휘에서 다른 어휘로 변환할 필요가 있는데 인쇄에 알맞은 형식이나 웹 브라우저로 렌더링하는 경우가 있습니다. 이러한 경우에 어휘 변환을 통해 외부 엔터티에서 수신한 문서를 좀 더 익숙한 형식으로 변환할 수 있습니다.

XSLT (US)는 주요한 XML 변환 언어입니다. XSLT로 표현되는 변환에서는 소스 트리를 결과 트리로 변환하는 규칙을 설명합니다. 변환은 패턴과 템플릿을 연결하여 수행합니다. 패턴은 XPath 표현으로 문자열의 일부를 일치시키는 것이 아닌 XML 소스 트리의 일부를 일치시키는 정규식으로 간주할 수 있습니다. 패턴은 소스 트리의 요소와 일치합니다. 일치에 성공하면 템플릿이 인스턴스화되어 결과 트리의 일부를 만듭니다. 결과 트리를 구성할 때 소스 트리의 요소를 필터링하고 재정렬하고 임의의 구조를 추가할 수 있습니다.

다음 XSLT 스타일시트는 items 요소를 CD 정보 표를 포함하는 XHTML 웹 페이지로 변환합니다.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" indent="yes"
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 
    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" />
    <xsl:template match="/">
    <html lang="en" xml:lang="en">
     <head>
      <title>Order Information - ord123456</title>
     </head>
     <body>
       <table border="1">
        <tr><th>Artist</th><th>Title</th><th>Price</th></tr>
        <xsl:for-each select="items/compact-disc">
        <tr>
        <td><xsl:value-of  select="artist" /></td>
        <td><xsl:value-of  select="title" /></td>
        <td><xsl:value-of  select="price" /></td>
        </tr>
        </xsl:for-each>
       </table>
     </body>     
    </html>
   </xsl:template>
</xsl:stylesheet> 

이 스타일시트로 만든 XHTML 문서는 다음과 같습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Order Information - ord123456</title>
  </head>
  <body>
    <table border="1">
      <tr>
        <th>가수 이름</th>
        <th>제목</th>
        <th>가격</th>
      </tr>
      <tr>
        <td>Nelly</td>
        <td>Nellyville</td>
        <td>16.95</td>
      </tr>
      <tr>
        <td>Baby D</td>
        <td>Lil Chopper Toy</td>
        <td>17.55</td>
      </tr>
    </table>
  </body>
</html>

웹 브라우저에 렌더링하면 다음과 같이 표시됩니다.

가수 이름

제목

가격

Nelly

Nellyville

16.95

Baby D

Lil Chopper Toy

17.55

결론

XML은 문서를 설명하는 텍스트 형식 이상의 기능을 합니다. XML은 구조화된 데이터와 부분 구조화된 데이터를 설명하는 메커니즘이며 이러한 데이터를 처리하는 여러 기술에 대한 액세스를 제공합니다. XML Information Set와 같은 강력한 추상화는 텍스트가 아닌 데이터(예: 파일 시스템, Windows 레지스트리, 관계형 데이터베이스, 프로그래밍 언어 개체 등)를 XML 기술을 사용하여 처리할 수 있는 길을 열었습니다. XML을 통해 Universal Data Access에 한 걸음 더 가까워졌습니다.

참고 자료

XML in 10 Points (US)

Lessons from the Component Wars: An XML Manifesto (US)

XML Information Set Recommendation (US)

최종 수정일: 2003년 9월 23일