XML: 두 판 사이의 차이

위키백과, 우리 모두의 백과사전.
내용 삭제됨 내용 추가됨
편집 요약 없음
편집 요약 없음
115번째 줄: 115번째 줄:
잘 구성됨에 더하여, XML 문서에는 유효성(''validity'')이라는 것이 있다. 이는 문서가 [[문서 형식 정의|Document Type Definition]] (DTD)에 대한 참조를 포함하고, 문서의 엘리먼트들과 애트리뷰트들이 그 DTD에 선언되어 있으며 DTD가 명시하는 문법 규칙을 따른다는 것을 의미한다.
잘 구성됨에 더하여, XML 문서에는 유효성(''validity'')이라는 것이 있다. 이는 문서가 [[문서 형식 정의|Document Type Definition]] (DTD)에 대한 참조를 포함하고, 문서의 엘리먼트들과 애트리뷰트들이 그 DTD에 선언되어 있으며 DTD가 명시하는 문법 규칙을 따른다는 것을 의미한다.


XML 프로세서는 ''유효화하는validating'' 또는 ''유효화하지 않는non-validating''으로, 유효성 검증 여부에 따라 분류한다. 유효성 오류를 조사하는 프로세서는 그것을 보고할 수 있어야 하지만, 정상 처리를 계속할 수도 있다.
XML processors are classified as ''validating'' or ''non-validating'' depending on whether or not they check XML documents for validity. A processor that discovers a validity error must be able to report it, but may continue normal processing.


DTD는 ''[[XML schema|schema]]'' 또는 ''문법''의 예이다. XML 1.0의 초판 발표 이래로, XML을 위한 스키마 언어 분야의 연구가 많이 이루어졌다. 그런 스키마 언어들은 전형적으로 어떤 문서에서 사용되어도 좋은 엘리먼트의 종류, 그 엘리먼트들에 적용되어도 좋은 애트리뷰트의 종류, 나타나는 순서, 허용 가능한 부모-자식 관계 등을 제한한다.
A DTD is an example of a ''[[XML schema|schema]]'' or ''grammar''. Since the initial publication of XML 1.0, there has been substantial work in the area of schema languages for XML. Such schema languages typically constrain the set of elements that may be used in a document, which attributes may be applied to them, the order in which they may appear, and the allowable parent/child relationships.


===Document Type Definition===
{{Main|Document Type Definition}}
The oldest schema language for XML is the [[Document Type Definition]] (DTD), inherited from [[SGML]].

DTDs have the following benefits:
* DTD support is ubiquitous due to its inclusion in the XML 1.0 standard.
* DTDs are terse compared to element-based schema languages and consequently present more information in a single screen.
* DTDs allow the declaration of [[SGML entity|standard public entity sets]] for publishing characters.
* DTDs define a ''document type'' rather than the types used by a namespace, thus grouping all constraints for a document in a single collection.

DTDs have the following limitations:
* They have no explicit support for newer [[feature (software design)|feature]]s of XML, most importantly [[XML Namespace|namespaces]].
* They lack expressiveness. XML DTDs are simpler than SGML DTDs and there are certain structures that cannot be expressed with regular grammars. DTDs only support rudimentary datatypes.
* They lack readability. DTD designers typically make heavy use of parameter entities (which behave essentially as textual [[macro (computer science)|macros]]), which make it easier to define complex grammars, but at the expense of clarity.
* They use a syntax based on [[regular expression]] syntax, inherited from [[SGML]], to describe the schema. Typical XML APIs such as [[Simple API for XML|SAX]] do not attempt to offer applications a structured representation of the syntax, so it is less accessible to programmers than an element-based syntax may be.

Two peculiar features that distinguish DTDs from other schema types are the syntactic support for embedding a DTD within XML documents and for defining ''entities'', which are arbitrary fragments of text and/or markup that the XML processor inserts in the DTD itself and in the XML document wherever they are referenced, like character escapes.

DTD technology is still used in many applications because of its ubiquity.


== 같이 보기 ==
== 같이 보기 ==

2013년 9월 18일 (수) 21:41 판

XML
파일 확장자.xml
인터넷 미디어 타입
application/xml
개발W3C
포맷 종류마크업 언어
웹사이트http://www.w3c.org
XML 예제

XML(Extensible Markup Language)은 W3C에서 다른 특수 목적의 마크업 언어를 만드는 용도에서 권장되는 다목적 마크업 언어이다. XML은 SGML의 단순화된 부분집합이지만, 수많은 종류의 데이터를 기술하는 데 적용할 수 있다. XML은 주로 다른 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다.

XML은 마크업 언어의 일종으로, 문서를 사람기계 모두가 읽을 수 있는 형식으로 부호화하는 규칙의 집합을 정의한다. W3C가 만든 XML 1.0 Specification[1]과 몇몇 다른 관련 명세들[2]과 모든 자유 개방형 표준[3]에서 정의되었다.

XML의 설계 목표는 단순성, 일반성, 인터넷을 통한 사용가능성을 강조하였다.[4] XML은 텍스트 데이터 형식으로 유니코드를 통해 전 세계 언어를 지원한다. XML 설계가 문서에 집중하지만, 임의의 자료구조를 나타내는 데 널리 쓰이고 있다. 예를 들어 웹 서비스가 그렇다.

많은 API (application programming interfaces)가 XML 데이터를 처리하는 소프트웨어 개발자를 지원하기 위해 개발되었다. 또한, XML 기반 언어의 정의를 돕기 위한 여러 가지 schema systems가 존재한다.

기본 개념

XML에서의 기본 개념에는 10가지가 있다.

  • XML은 구조적인 데이터를 위한 것이다.
  • XML은 다소 HTML 같이 보인다.
  • XML은 텍스트이며, 읽혀지는 것만을 뜻하지 않는다.
  • XML은 크기가 커진다.
  • XML은 기술의 집합이다.
  • XML은 새로운 기술이 아니라 발전한 기술이다.
  • XML은 HTML에서 XHTML로 이끌었다.
  • XML은 모듈식이다.
  • XML은 RDF시맨틱 웹의 토대이다.
  • XML은 라이선스 제약이 없으며, 플랫폼이 독립적이고, 많은 지원이 있다.

XML 기반 언어

XML 기반 언어는 다음과 같다.

이들 언어들은 단일하게 규정된 방식으로 정의되었기 때문에, 사전 정보가 없어도 이들 언어로 작성된 문서에 대해 수정이나 유효성 검사를 하는 프로그램도 제작할 수 있다.

중요 용어

이 절의 내용은 XML 명세에 기반한다. XML에 나타나는 모든 요소의 목록이 아니다. 가장 많이 쓰이는 핵심 요소만을 소개한다.

(유니코드) 문자
정의 상, XML 문서는 문자로 이루어진 문자열이다. 거의 모든 올바른 유니코드 문자는 XML 문서에 나타날 수 있다.
프로세서(processor)와 애플리케이션(application)
프로세서는 마크업을 분석하고 구조화된 정보를 애플리케이션에 넘긴다. 이 명세는 XML 프로세서가 무엇을 해야하고 하지 말아야 하는지 제시하지만, 애플리케이션에 대해서는 다루지 않는다. 이 프로세서(명세가 부르기를)는 흔히 XML parser라 불린다.
마크업(markup)과 내용(content)
XML 문서를 구성하는 문자들은 마크업내용으로 나뉘는데, 그 구분은 간단한 문법 규칙으로 이루어진다. 일반적으로 마크업을 구성하는 문자열은 문자 <로 시작하여문자 >로 끝나거나, 문자 &로 시작하여 문자 ;로 끝난다. 마크업이 아닌 문자열은 내용이다. 그러나, CDATA 절에서, 구분자 <![CDATA[]]>는 마크업으로 분류된다. 그들 사이의 텍스트는 내용으로 구분된다. 추가로, 가장 바깥 엘리먼트의 앞과 뒤의 공백(whitespace)은 마크업으로 분류된다.
태그(tag)
<로 시작하여 >로 끝나는 마크업 구조. Tags come in three flavors:
  • 시작 태그(start-tag); 예: <section>
  • 끝 태그(end-tag); 예: </section>
  • 빈 엘리먼트(empty-element) 태그; 예: <line-break />
엘리먼트(element)
문서의 논리 요소로서, 시작 태그로 시작하여 짝이 되는 끝 태그로 끝나거나, 빈 엘리먼트 태그만으로 이루어진다. 시작 태그와 끝 태그 사이의 문자들은(있다면) 엘리먼트의 내용이고, 마크업을 포함할 수 있다. 이 마크업은 자식 엘리먼트(child elements)라 부르는 다른 엘리먼트들을 포함할 수도 있다. 엘리먼트의 예는 <Greeting>Hello, world.</Greeting> (see hello world). 다른 예는 <line-break />.
애트리뷰트(Attribute)
이름/값 짝으로 이루어진 마크업 구조로 시작 태그 또는 빈 엘리먼트 태그 속에 위치한다. 다음 예에서 엘리먼트 imgsrcalt의 두 애트리뷰트를 갖는다:
<img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/>
다른 예로
<step number="3">Connect A to B.</step>
에서 애트리뷰트 이름은 "number"이고 값은 "3"이다.
XML 선언
XML 문서는 다음과 같이 자신에 대한 정보 일부를 선언하는 것으로 시작할 수 있다:
<?xml version="1.0" encoding="UTF-8" ?>

문자와 이스케이프

XML 문서는 완전히 유니코드 문자로만 이루어진다. 소수의 일부 특별히 제외된 제어 문자(control characters)를 제외하면, 유니코드에 정의된 어떤 문자든 XML 문서 내용에 나타날 수 있다.

XML은 문서를 구성하는 유니코드 문자들의 인코딩을 인식하고 맞게 출력하는 기능을 포함한다.

인코딩 감지

유니코드 문자셋은 저장 또는 전송을 위해 여러 방법으로 부호화될 수 있다("인코딩"). Unicode itself defines encodings that cover the entire repertoire; 잘 알려진 것으로 UTF-8UTF-16이 있다.[5] 유니코드 이전에 ASCIIISO/IEC 8859 같은, 많은 텍스트 인코딩 방식이 있었다. 이들의 문자 집합은 대개 유니코드 문자 집합의 부분집합이다.

XML은 유니코드가 정의한 어떤 인코딩이든 사용하는 것을 허용하며, 문자들이 유니코드에 나타나는 다른 인코딩도 사용할 수 있다. XML은 또한 XML 프로세서가 안정적으로, 사전지식 없이, 어느 인코딩이 사용되고 있는지 결정하는 메커니즘을 제공한다.[6] UTF-8 또는 UTF-16이 아닌 인코딩은 XML 파서에 인식되지 못할 가능성이 있다.

주석

주석은 다른 마크업의 밖이라면 어디서나 나타날 수 있다. XML 선언 전에는 올 수 없다. "<!--"로 시작하여 "-->"로 끝난다. 문자열 "--" (하이픈 두 개)는 주석 안에서는 허용되지 않는다; 즉 주석은 겹쳐질(nested) 수 없다. 주석 내에서는 앰퍼샌드(ampersand, &)가 특별한 의미를 갖지 않는다. 따라서 엔티티나 문자 참조에 이를 쓸 수 없고, 문서 인코딩에 쓰인 문자 집합 이외의 문자를 주석 내에서는 표현할 방법이 없게 된다.

유효한 주석의 예: "<!-- no need to escape <code> & such in comments -->"

국제어 사용

XML 1.0 (Fifth Edition)과 XML 1.1은 거의 모든 유니코드 문자의 이름, 애트리뷰트, 주석, 문자 데이터, 처리 명령어에 대한 직접 사용을 지원한다.(XML 자체에 대한 특별한 기호적 의미가 있는, 예를 들어 "<" 같은 문자는 제외). 아래는 잘 구성된(well-formed) XML 문서로 한자키릴 문자를 포함하고 있다:

<?xml version="1.0" encoding="UTF-8" ?>
<俄语>данные</俄语>

웰 폼(Well-formed) 문서와 유효 XML 문서

XML 문서에는 두 가지 수준의 수정 절차가 있다:

  • 웰 폼(Well-formed) : 웰 폼 문서는 모든 XML의 구문을 허용한다. 예를 들어, 한 요소가 닫기 태그와 자체 닫기 없이 열기 태그를 가지고 있으면, 웰 폼이라고 부르지 않는다. 웰 폼이 아닌 문서는 XML이 된다고 말하지 않는다. 순응 파서[7]는 이를 처리하도록 허용하지 않는다.
  • 유효 : 유효 문서는 추가적으로 몇 가지 의미적 규칙을 허용한다. 이러한 규칙들은 사용자 정의로 되어 있거나, XML 계획 또는 DTD로 포함된다. 예를 들어, 어느 문서가 정의되지 않은 태그를 포함하고 있으면, 유효한 것이 아니다. 유효화 파서는 이를 처리하도록 허용하지 않는다.

잘 구성됨(Well-formedness)과 오류 처리(error-handling)

XML 명세는 XML 문서를 well-formed 텍스트로 정의한다. 이는 명세에 제공된 문법 규칙들을 만족한다는 뜻이다. 긴 목록 중 핵심을 짚어 보면,

  • 문서는 적절히 인코딩된 올바른(legal) 유니코드 문자만을 포함한다.
  • <& 같은 특수 문법 문자 중 어떤 것도, 원래의 마크업 경계 식별 목적 이외의 목적으로 나타나지 않는다.
  • 엘리먼트의 한계를 정하는 시작 태그, 끝 태그, 빈 엘리먼트 태그들은 모두 올바르게, 빠지거나 중복됨이 없이, 겹쳐진다(nested).
  • 엘리먼트의 태그는 대소문자를 구분한다; the beginning and end tags must match exactly. 태그 이름은 다음 문자를 포함할 수 없다 !"#$%&'()*+,/;<=>?@[\]^`{|}~. 또 공백 문자도 포함할 수 없으며, -, ., 또는 숫자로 시작할 수 없다.
  • 하나의 "루트root" 엘리먼트가 다른 모든 엘리먼트를 포함한다.

스키마(Schema)와 유효화(Validation)

잘 구성됨에 더하여, XML 문서에는 유효성(validity)이라는 것이 있다. 이는 문서가 Document Type Definition (DTD)에 대한 참조를 포함하고, 문서의 엘리먼트들과 애트리뷰트들이 그 DTD에 선언되어 있으며 DTD가 명시하는 문법 규칙을 따른다는 것을 의미한다.

XML 프로세서는 유효화하는validating 또는 유효화하지 않는non-validating으로, 유효성 검증 여부에 따라 분류한다. 유효성 오류를 조사하는 프로세서는 그것을 보고할 수 있어야 하지만, 정상 처리를 계속할 수도 있다.

DTD는 schema 또는 문법의 예이다. XML 1.0의 초판 발표 이래로, XML을 위한 스키마 언어 분야의 연구가 많이 이루어졌다. 그런 스키마 언어들은 전형적으로 어떤 문서에서 사용되어도 좋은 엘리먼트의 종류, 그 엘리먼트들에 적용되어도 좋은 애트리뷰트의 종류, 나타나는 순서, 허용 가능한 부모-자식 관계 등을 제한한다.

Document Type Definition

The oldest schema language for XML is the Document Type Definition (DTD), inherited from SGML.

DTDs have the following benefits:

  • DTD support is ubiquitous due to its inclusion in the XML 1.0 standard.
  • DTDs are terse compared to element-based schema languages and consequently present more information in a single screen.
  • DTDs allow the declaration of standard public entity sets for publishing characters.
  • DTDs define a document type rather than the types used by a namespace, thus grouping all constraints for a document in a single collection.

DTDs have the following limitations:

  • They have no explicit support for newer features of XML, most importantly namespaces.
  • They lack expressiveness. XML DTDs are simpler than SGML DTDs and there are certain structures that cannot be expressed with regular grammars. DTDs only support rudimentary datatypes.
  • They lack readability. DTD designers typically make heavy use of parameter entities (which behave essentially as textual macros), which make it easier to define complex grammars, but at the expense of clarity.
  • They use a syntax based on regular expression syntax, inherited from SGML, to describe the schema. Typical XML APIs such as SAX do not attempt to offer applications a structured representation of the syntax, so it is less accessible to programmers than an element-based syntax may be.

Two peculiar features that distinguish DTDs from other schema types are the syntactic support for embedding a DTD within XML documents and for defining entities, which are arbitrary fragments of text and/or markup that the XML processor inserts in the DTD itself and in the XML document wherever they are referenced, like character escapes.

DTD technology is still used in many applications because of its ubiquity.

같이 보기

주석

  1. “XML 1.0 Specification”. World Wide Web Consortium. 2010년 8월 22일에 확인함. 
  2. “XML and Semantic Web W3C Standards Timeline” (PDF). 2012년 2월 4일. 
  3. “W3C DOCUMENT LICENSE”. 
  4. “XML 1.0 Origin and Goals”. July 2009에 확인함. 
  5. “Characters vs. Bytes”. 
  6. “Autodetection of Character Encodings”. 
  7. 파서: 컴퓨터에 입력된 정보를 번역, 처리하는 프로그램

바깥 고리