XML: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
TedBot (토론 | 기여)
잔글 봇: 문단 이름 변경 (주석 → 각주)
Choboty (토론 | 기여)
잔글 영어판 분류 정보를 이용.+분류:데이터 직렬화 포맷; 예쁘게 바꿈
48번째 줄:
이들 언어들은 단일하게 규정된 방식으로 정의되었기 때문에, 사전 정보가 없어도 이들 언어로 작성된 문서에 대해 수정이나 유효성 검사를 하는 프로그램도 제작할 수 있다.
 
== 중요 용어 ==
이 절의 내용은 XML 명세에 기반한다. XML에 나타나는 모든 요소의 목록이 아니다. 가장 많이 쓰이는 핵심 요소만을 소개한다.
 
58번째 줄:
 
;태그(tag)
:<code><</code>로 시작하여 <code>></code>로 끝나는 마크업 구조. Tags come in three flavors:
:* ''시작 태그(start-tag)''; 예: <code>&lt;section></code>
:* ''끝 태그(end-tag)''; 예: <code>&lt;/section></code>
:* ''빈 엘리먼트(empty-element) 태그''; 예: <code>&lt;line-break&nbsp;/></code>
 
;엘리먼트(element): 문서의 논리 요소로서, 시작 태그로 시작하여 짝이 되는 끝 태그로 끝나거나, 빈 엘리먼트 태그만으로 이루어진다. 시작 태그와 끝 태그 사이의 문자들은(있다면) 엘리먼트의 ''내용''이고, 마크업을 포함할 수 있다. 이 마크업은 ''자식 엘리먼트(child elements)''라 부르는 다른 엘리먼트들을 포함할 수도 있다. 엘리먼트의 예는 <code>&lt;Greeting>Hello,&nbsp;world.&lt;/Greeting></code> (see [[Hello world program|hello world]]). 다른 예는 <code>&lt;line-break&nbsp;/></code>.
72번째 줄:
:<source lang="xml"><?xml version="1.0" encoding="UTF-8" ?></source>
 
== 문자와 이스케이프 ==
XML 문서는 완전히 [[유니코드]] 문자로만 이루어진다. 소수의 일부 특별히 제외된 [[제어 문자]]([[control characters]])를 제외하면, 유니코드에 정의된 어떤 문자든 XML 문서 내용에 나타날 수 있다.
 
XML은 문서를 구성하는 유니코드 문자들의 ''인코딩''을 인식하고 맞게 출력하는 기능을 포함한다.
 
=== 인코딩 감지 ===
유니코드 문자 집합은 저장 또는 전송을 위해 여러 방법으로 부호화될 수 있다("인코딩"). Unicode itself defines encodings that cover the entire repertoire; 잘 알려진 것으로 [[UTF-8]]과 [[UTF-16]]이 있다.<ref>{{웹 인용|url=http://www.tbray.org/ongoing/When/200x/2003/04/26/UTF|제목=Characters vs. Bytes}}</ref> 유니코드 이전에 [[ASCII]]나 [[ISO/IEC 8859]] 같은, 많은 텍스트 인코딩 방식이 있었다. 이들의 문자 집합은 대개 유니코드 문자 집합의 부분집합이다.
 
XML은 유니코드가 정의한 어떤 인코딩이든 사용하는 것을 허용하며, 문자들이 유니코드에 나타나는 다른 인코딩도 사용할 수 있다. XML은 또한 XML 프로세서가 안정적으로, 사전지식 없이, 어느 인코딩이 사용되고 있는지 결정하는 메커니즘을 제공한다.<ref>{{웹 인용|url=http://www.w3.org/TR/REC-xml/#sec-guessing|제목=Autodetection of Character Encodings}}</ref> UTF-8 또는 UTF-16이 아닌 인코딩은 XML 파서에 인식되지 못할 가능성이 있다.
 
=== 각주 ===
88번째 줄:
"<code>&lt;!-- no need to escape &lt;code&gt; &amp; such in comments --&gt;</code>"
 
=== 국제어 사용 ===
XML 1.0 (Fifth Edition)과 XML 1.1은 거의 모든 [[유니코드]] 문자의 이름, 애트리뷰트, 주석, 문자 데이터, 처리 명령어에 대한 직접 사용을 지원한다.(XML 자체에 대한 특별한 기호적 의미가 있는, 예를 들어 "<" 같은 문자는 제외). 아래는 잘 구성된(well-formed) XML 문서로 [[한자]]와 [[키릴 문자]]를 포함하고 있다:
<source lang="xml">
101번째 줄:
* '''유효''' : 유효 문서는 추가적으로 몇 가지 의미적 규칙을 허용한다. 이러한 규칙들은 사용자 정의로 되어 있거나, [[XML Schema|XML 계획]] 또는 [[문서 형식 정의|DTD]]로 포함된다. 예를 들어, 어느 문서가 정의되지 않은 태그를 포함하고 있으면, ''유효''한 것이 아니다. ''유효화 파서''는 이를 처리하도록 허용하지 않는다.
 
== 잘 구성됨(Well-formedness)과 오류 처리(error-handling) ==
{{본문|Well-formed document}}
XML 명세는 XML 문서를 [[Well-formed element|well-formed]] 텍스트로 정의한다. 이는 명세에 제공된 문법 규칙들을 만족한다는 뜻이다. 긴 목록 중 핵심을 짚어 보면,
111번째 줄:
* 하나의 "루트root" 엘리먼트가 다른 모든 엘리먼트를 포함한다.
 
== 스키마(Schema)와 유효화(Validation) ==
잘 구성됨에 더하여, XML 문서에는 유효성(''validity'')이라는 것이 있다. 이는 문서가 [[문서 형식 정의|Document Type Definition]] (DTD)에 대한 참조를 포함하고, 문서의 엘리먼트들과 애트리뷰트들이 그 DTD에 선언되어 있으며 DTD가 명시하는 문법 규칙을 따른다는 것을 의미한다.
 
XML 프로세서는 ''유효화하는validating'' 또는 ''유효화하지 않는non-validating''으로, 유효성 검증 여부에 따라 분류한다. 유효성 오류를 조사하는 프로세서는 그것을 보고할 수 있어야 하지만, 정상 처리를 계속할 수도 있다.
118번째 줄:
DTD는 ''[[XML schema|schema]]'' 또는 ''문법''의 예이다. XML 1.0의 초판 발표 이래로, XML을 위한 스키마 언어 분야의 연구가 많이 이루어졌다. 그런 스키마 언어들은 전형적으로 어떤 문서에서 사용되어도 좋은 엘리먼트의 종류, 그 엘리먼트들에 적용되어도 좋은 애트리뷰트의 종류, 나타나는 순서, 허용 가능한 부모-자식 관계 등을 제한한다.
 
=== Document Type Definition ===
{{본문|문서 형식 정의}}
XML을 위한 가장 오래된 스키마 언어는 [[SGML]]에서 유래한 [[문서 형식 정의|Document Type Definition]](DTD)이다.
132번째 줄:
* 가독성이 떨어진다. DTD 설계자는 전형적으로 파라미터 엔티티를 많이 사용한다(텍스트 [[매크로]]처럼 동작하는). 이로써 복잡한 문법을 정의하기는 쉬워지지만 명료성이 떨어진다.
 
=== XML 스키마 ===
{{본문|XML 스키마 (W3C)}}
DTD의 후계자로서 W3C에 의해 기술된 새로운 스키마 언어가 [[XML Schema (W3C)|XML Schema]]이다. XSD는 DTD보다 XML 언어 기술에 훨씬 강력하다. 더 풍부한 [[Data type|datatyping]] 시스템을 사용하며 XML 문서 논리 구조에 더 세세한 제약을 가할 수 있다. XSD도 XML-기반 형식을 사용하므로, 일반적인 XML 도구로 처리할 수 있다.
147번째 줄:
* [[XHTML]]
 
== 각주 ==
<references />
 
164번째 줄:
[[분류:마크업 언어]]
[[분류:표현 계층 프로토콜]]
[[분류:데이터 직렬화 포맷]]