'XML'에 해당되는 글 1건

  1. 2008.12.03 XML이란
Programming/WEB2008. 12. 3. 15:13

XML이란

문헌의 구조를 기술하는 메타언어
W3C standard: eXtensible Markup Language(XML)
 

1. 등장배경

  XML은 구조화된 문헌을 웹 상에서  전송할 수 있도록 설계된 표준화된 텍스트 포맷으로 1996년 W3C (World Wide Web Consortium)가 개발하여 1998년 2월 사실상의 표준으로 제정되었다. W3C는 그 목적을 "일반적인 SGML이 웹 상에서 마치 HTML이 웹에서 처리, 이용되는 것처럼 활동할 수 있게 하며 XML은 SGML과 HTML을 같이 사용하면서도 구현하기 쉽고 상호 운용할 수 있도록 고안되었다" 라고 말하고 있다. 즉 각각의 단점은 피하면서 그 장점만을 최대한 살린 언어라는 의미이다.


  SGML은 기기나 처리 시스템에 독립적이고, 문헌을 구조화시켜 그 내용이  물리적인 형태와는 별도로 유지되어 융통성 있고 확장 가능하며 다양한 응용에 사용할 수 있다는 장점이 있는 반면에 기능의 복잡성으로 인해 SGML을 지원하는 소프트웨어의 개발이 쉽지 않으며 비용도 많이 든다.


HTML은 흔히 웹의 언어라고도 하는데 현재 대부분의 웹 페이지는 HTML을 사용하여 작성되었고 넷스케이프 (Netscape)나 익스플로러 (Internet Explorer)와 같은 웹 브라우저들이 이 언어를 인식하고 있다. HTML은 단순성, 이식성, 사용의 용이성이라는 장점을 가지면서도 제한된 태그 집합을 가짐으로써 확장할 수 없으므로 문헌의 여러 가지 특성을 반영시키는 충분한 태그가 없다. 그러므로 문헌을 충분히 표현할 수 없다는 단점이 있다.


 그러나 XML은 SGML을 복잡하게 하는 요인인 많은 선택 기법들을 채택하지 않았기 때문에 복잡하지 않으며 또한 SGML의 장점인 구조성과 융통성을 유지하고 있다. 그리고 XML은 SGML과 마찬가지로 확장 가능하므로 HTML보다 표현력이 있다.   따라서 XML은 SGML의 간단한 하부집합이며 문헌의 유형을 쉽게 정의할 수 있게 한다. 또한 SGML을 따르는 문헌을 쉽게 작성하고 관리할 수 있게 하며 웹 상에서 그러한 문헌들을 전송하고 공유할 수 있도록 한다. 그러면서도 XML을 기술하고 있는 그 명세서 (Specification)의 분량은 SGML의 그것보다 1/10 정도밖에 되지 않는다. 


2 . 목적 및 장점


  W3C에 의하면 XML은 다음과 같은 목적을 가지고 설계되었다.

  ① 인터넷 상에서 쉽게 사용할 수 있어야 한다.

  ② 다양한 어플리케이션들을 지원해야 한다.

  ③ SGML과 호환 가능해야 한다.

  ④ XML 문헌을 처리하는 프로그램을 쉽게 작성할 수 있어야 한다.

  ⑤ XML이 제공하는 선택 기법의 수는 최소로 유지되어야 한다.

  ⑥ XML 문헌은 인간이 읽을 수 있어야 하며 명확해야 한다.

  ⑦ XML의 설계는 빠르게 이루어져야 한다.

  ⑧ XML의 설계는 공식적이고 간결해야 한다.

  ⑨ XML 문헌은 만들기 쉬워야 한다.

  ⑩ XML 마크업의 간결성은 그다지 중요하지 않다.


  이와 같은 목적을 가지고 개발된 XML의 장점은 다음과 같다.

  - 첫째, 장치와 시스템에 독립적이다. 즉 다양한 소프트웨어와 하드웨어에서 이용할 수 있으며 어떠한 XML 소프트웨어에 의해서도 처리될 수 있도록 설계되었다. 


  - 둘째, XML은 매우 명확하다. 선택 기법의 수가 적고 태그의 생략을 유발하는 태그 최소화가 없기 때문이다. SGML이 개발된 당시에는 입력에 대한 부담, 시간, 비용, 저장용량의 제한 등의 이유로 이러한 기법을 허용했으나 기술에 발전에 따라 처리용량의 증가, 코딩을 도와주는 저작 소프트웨어의 개발 등으로 인해 더 이상 문제되지 않는다.
 

  -셋째, 이용자 고유의 태그를 만들 수 있다. 이는 확장성의 개념을 반영하는 것으로서, 이용자의 편의에 따라 혹은 이용자가 가진 데이터의 특성을 반영하거나 구별하고 위해 새로운 태그를 임의로 만들 수 있다는 의미이다. 또한 문헌이 잘 정의되었다면 DTD는 없어도 된다.


  -넷째, XML은 이용자로 하여금 문헌을 여러 방법으로 디스플레이할 수 있게 한다. XML은 문헌의 물리적 구조와 논리적 구조를 분리시키기 때문에 문헌을 여러 방법으로 표현할 수 있다. 


  -다섯째, 특정 언어에 한정되어 있지 않다. XML은 ISO 10646 (Unicode)을 수용하고 있기 때문에 어떤 언어라도 마크업에 사용할 수 있다. 따라서 이는 XML이 언어나 국가에 대한 제한없이 국제적으로 사용될 수 있게 하는 특징이다.


3. 구성(문법)


  - XML (Extensible Markup Language): 문헌의 구조와 내용을 표현

  1) XML 문헌의 구조

  모든 XML 문헌은 엔티티 (entity)라고 부르는 가상의 저장 단위로 이루어진 물리적 구조와 선언, 주석, 문자참조, 엘리먼트, 처리규칙 등을 포함하는 논리적 구조를 가지고 있다. 이러한 XML 문헌은 다시 XML 선언부 (XML Declaration), 문헌유형정의부 (Document Type Definition), 실제 문헌부 (Document Instance)로 나뉜다. 

  그러나 XML 문헌은 SGML과는 달리 문헌이 well-formed되었다면 DTD를 사용하지 않아도 된다. well-formed 문헌이란 적절하게 선언된 물리구조에 따라 정확한 형식으로 작성된 XML 문헌으로서 DTD없이도 유효하다. XML의 well-formed 문헌이 되기 위해서는 실제 문헌이 XML에서 정한 규칙에 따라야 한다.


그 규칙은:

 - 문헌은 하나 이상의 엘리먼트를 포함해야 하고 이들은 모두 시작 및 종료 태그로 한정되어야 하며 서로 적절히 중첩되어야 하고 모든 엔티티와 어트리뷰트는 선언되어야 한다는 등의 여러 가지 제약 조건을 만족시켜야 한다. 잘 정의된 문헌에 한해서 DTD의 부재를 허용하는 XML은 복잡한 DTD의 작성 및 검증 과정을 피할 수 있게 하여 시간과 비용을 절약할 수 있도록 하였으며 DTD에 관한 깊은 지식이 없는 사람도 XML 문헌을 비교적 쉽게 작성할 수 있도록 한다는 이점이 있다. 그럼에도 불구하고 XML에 유효한 문헌은 DTD를 가지고 작성하는 것이 훨씬 쉽다.


 다음은 XML의 구조이다.

* XML 선언부

XML 선언부는 해당 문헌이 XML 문헌임을 알리고 사용하고 있는 XML의 버전, 인코딩 방식에 관한 정보를 표현한다. 다음은 XML 선언부의 예이다.

<? xml version = "1.0"  encoding = "UTF-8" ?>

이 선언은 현재 사용하는 XML의 버전이 "1.0"이고 인코딩은 "UTF-8 (Unicode Transformation -8bit)" 방식을 사용하고 있음을 기술하고 있다.


* 문헌유형정의부

문헌유형정의부는 XML 문헌이 따르고 있는 규칙을 정의한 것이다. 이러한 DTD는 미리 정의된 외부 파일을 부르는 외부 참조의 형태를 지닐 수도 있고 문헌 내부에 직접 포함될 수도 있다. DTD는 크게 엘리먼트, 어트리뷰트, 엔티티 선언으로 이루어져 있다. 엘리먼트 선언 (Element declaration)은 XML 문헌이 가지는 엘리먼트의 명칭, 내용 등을 기술한다. XML 문헌은 수많은 엘리먼트를 가질 수 있지만 최상위 엘리먼트는 단 하나이어야 한다. 이러한 엘리먼트는 태그에 의해 구분되는데 내용이 있다면 시작태그와 종료태그로 엘리먼트의 경계를 표시해주고, 내용이 없다면 태그의 끝 부분에 "/"을 포함시켜 '이 엘리먼트는 아무런 내용이 없음 (empty element)'이라고 표시한다. 다음은 엘리먼트 선언에 관한 예이다.


<!ELEMENT  paragraph    - -     (#PCDATA, emptyspace)      >

<!ELEMENT  emptyspace    - -      EMPTY  >


<paragraph>모든 언어와 어플리케이션에 적합한 단일한 코딩 스킴을 고안하는 것은 불가능하다.<emptyspace/>대신 서로 다른 환경 내에서도 교환할 수 있도록 하는. . . . . . </paragraph>

어트리뷰트 선언은 엘리먼트와 그것이 가진 성질, 즉 어트리뷰트, 그리고 그 값을 연관시키기 위한 것이다. 그러므로 어트리뷰트 선언은 주어진 엘리먼트 유형과 관계된 어트리뷰트의 집합을 정의하고 이러한 어트리뷰트에 제한을 주는 유형 집합을 설정하고 어트리뷰트를 위한 값을 부여하는데 사용된다.

다음은 어트리뷰트 선언의 예이다.


<!ATTLIST  picture
               type  NOTATION  (format1 | format2)  "format1"
               image  CDATA  #IMPLIED  >


엔티티 선언은 엔티티라는 하나 이상의 가상적인 저장 단위를 정의하기 위한 것이다. 이는 문헌의 어떤 부분일 수도 있고 텍스트나 바이너리 (binary) 데이터를 포함한 외부 파일에 대한 참조일 수도 있다. 선언된 엔티티는 문헌내 또는 DTD내에서 여러 번 참조될 수 있다. 다음은 엔티티 선언의 간단한 예이다.

<!ENTITY  ProductName "RF-2000-QJ-46" >
<p>이 제품의 명칭은 &ProductName; 으로서 다음과 같은 기능을. . . . . </p>

* 실제 문헌부

  이는 XML의 DTD에서 정의한 모든 규칙에 따라 문헌이 구조화된 XML 문헌의 실제 내용이다.


4. XML의 응용


  - XLL (Extensible Linking Language): 웹 상에서 활용할 수 있도록 링크 정보를 표현

  - XSL (Extensible Style Language): 문헌의 외양 (스타일) 혹은 출력 형식을 정의


1) XLL (Extensible Linking Language)

  XLL은 XML을 위한 표준적인 링킹 모델 (linking model)을 제공하는 언어로서 기존의 HyTime과 TEI의 많은 기능을 수용하여 단순화시켰다. 이는 XML을 웹 상에서 활용할 수 있게 하는 원동력으로서 XML 문헌이 참조하는 정보원간의 관계를 링크로서 표현하며, 문헌 내부 또는 외부에 존재할 수 있는 이러한 링크를 표현하기 위한 효과적이고 간단한 구조를 가지고 있다. 또한 XLL은 현재 많이 사용되고 있는 HTML의 링크와의 상호 운용성을 고려하여 설계되었다.


  XLL은 다양한 유형의 위치 식별자 (locator), XML과 SGML 데이터내 정보원의 위치 등에 관해 기술한다. 예를 들어 XML-LINK라는 어트리뷰트를 가진 모든 엘리먼트는 링크를 의미하며 그 엘리먼트의 값은 엘리먼트가 가진 링크를 명세한다.


 이러한 XLL은 둘 이상의 정보원과 연관 있는 확장된 링크, 정보원을 위치시키는 방법, 링크가 가진 의미에 대한 통제방법 등을 제공한다.  XLL이 지원하는 링크 유형은 크게 SIMPLE과 EXTENDED로 나눌 수 있다. 단순 링크 (Simple link)는 HTML의 링크와 유사한 것으로 2개의 정보원간의 링크를 식별하며 항상 단방향이고 URL (Uniform Resource Locator)로 정보원의 위치를 지시한다. 확장 링크 (Extended link)는 둘 이상의 정보원간의 관계를 표현하며 양방향 혹은 다중 링크가 가능하다.


2) XSL (Extensible Style Language)

  마크업을 사용하여 문헌을 구조화시키는 방법의 가장 큰 장점은 문헌의 내용과 외양 (스타일)을 분리시킨다는 것이다. 현재 이러한 목적을 위해 HTML은  CSS (Cascading Style Sheets)를 사용하며, SGML은 DSSSL (Document Style Semantics and Specification Language)을 사용하고 있다. 그러나 기능 면에서 CSS는 강력하지 않고 DSSSL은 사용하기 어렵고 복잡하다. 따라서 XML 문헌의 외양을 처리해주기 위한 방법으로서 간단하면서도 강력한 기능을 가진 XSL이 개발되었다.

  XSL은 DSSSL에 기반하여 단순화시켰으며 CSS를 지원한다. 또한 확장 가능하므로 stylesheet 설계자가 다양한 새로운 태그를 만들 수 있고, 출력 (printing)과 온라인 디스플레이 (online display)를 지원한다. XSL은 현재 표준화 작업 중이다.


출처 sookmyung.ac.kr/~ksh/xml.htm

Posted by skensita