XML
XML확장 가능한 마크업 언어 | |
![]() | |
줄임말 | XML |
---|---|
상황 | 공개, W3C 권장사항 |
시작한 해 | 전( |
초판 | 1998년 2월 10일, | 전(
최신 버전 | 1.1 (제2판) 2006년 9월 29일, 전( |
조직 | 월드와이드웹컨소시엄(W3C) |
에디터 | 팀 브레이, 장 파올리, 마이클 스퍼버그-맥퀸, 이브 말러, 프랑수아 예르조, 존 W. 코완 |
기본 규격 | SGML |
관련 기준 | W3C XML 스키마 |
도메인 | 시리얼화 |
웹 사이트 | www |
파일 이름 확장자 | .xml |
---|---|
인터넷 미디어 유형 | application/xml ,text/xml [1] |
Uniform Type Identifier(UTI; 균일 유형 식별자) | public.xml |
UTI 컨피규레이션 | public.text를 표시합니다. |
매직 넘버 | <?xml |
개발자 | 월드 와이드 웹 컨소시엄 |
포맷의 종류 | 마크업 언어 |
확장원 | SGML |
확장처 | XHTML, RSS, Atom, KML 등 다양한 언어 |
표준. | |
오픈 포맷? | 네. |
프리 포맷? | 네. |
Extensible Markup Language(XML)는 임의의 데이터를 저장, 전송 및 재구축하기 위한 마크업 언어 및 파일 형식입니다.문서를 사람이 읽을 수 있는 형식과 시스템이 읽을 수 있는 형식으로 인코딩하기 위한 규칙 집합을 정의합니다.World Wide Web Consortium의 1998년 XML[3] 1.0 사양[2] 및 기타 몇 가지 관련 사양[4](모두 무료 개방형 표준)은 [5]XML을 정의합니다.
XML의 설계 목표는 인터넷 [6]전반에 걸쳐 단순성, 일반성 및 사용성을 강조합니다.이는 다양한 인간 언어를 유니코드를 통해 강력하게 지원하는 텍스트 데이터 형식입니다.XML의 설계는 문서에 중점을 두고 있지만, 언어는 웹 서비스에서 사용되는 것과 같은 임의[7] 데이터 구조를 표현하기 위해 널리 사용됩니다.
XML 기반 언어의 정의를 지원하기 위해 여러 스키마 시스템이 존재하는 반면 프로그래머는 XML 데이터 처리를 지원하기 위해 많은 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)를 개발했습니다.
개요
XML의 주요 목적은 시리얼라이제이션, 즉 임의의 데이터를 저장, 전송 및 재구성하는 것입니다.서로 다른 두 시스템이 정보를 교환하려면 파일 형식에 동의해야 합니다.XML은 이 프로세스를 표준화합니다.XML은 [8]: 1 정보를 나타내는 언어 프랑카와 유사합니다.
XML은 마크업 언어로서 [8]: 11 정보에 라벨을 붙이고 분류하며 정보를 구조적으로 정리합니다.XML 태그는 데이터 구조를 나타내며 메타데이터를 포함합니다.태그에는 XML 표준이 [8]: 11 지정하는 방식으로 인코딩된 데이터가 포함됩니다.추가 XML 스키마(XSD)는 XML 해석 및 검증에 필요한 메타데이터를 정의합니다(이것은 표준 스키마라고도 불립니다).[8]: 135 기본 XML 규칙을 준수하는 XML 문서는 "올바른 형식"이며 스키마를 준수하는 문서는 "유효한 형식"입니다."[8]: 135
IETFRFC 7303(구 RFC 3023을 대체)에서는 XML 메시지에서 사용하는 미디어 유형 구축 규칙을 제공합니다.다음 두 가지 기본 미디어 유형을 정의합니다.application/xml
그리고.text/xml
. 내부 의미를 노출하지 않고 원시 XML 파일을 전송하는 데 사용됩니다.RFC 7303에서는 XML 기반의 언어에는 미디어 타입을 지정할 것을 권장합니다.+xml
,예를들면,image/svg+xml
SVG용입니다.
네트워크 컨텍스트에서의 XML 사용에 관한 추가 가이드라인은 RFC 3470(IETF BCP 70이라고도 함)에 기재되어 있습니다.이 문서는 XML 기반 언어의 설계 및 전개에 관한 많은 측면을 다루고 있습니다.
적용들
XML은 인터넷을 통한 데이터 교환에 일반적으로 사용되고 있습니다.RSS, Atom, Office Open XML, OpenDocument, SVG, XHTML 등 XML 구문을 사용하는 수백 개의 문서 형식이 [9]개발되었습니다.또한 XML은 SOAP 및 XMPP와 같은 통신 프로토콜의 기본 언어를 제공합니다.Asynchronous JavaScript and XML(AJAX) 프로그래밍 기술의 메시지 교환 형식입니다.
Health Level 7, OpenTravel Alliance, FpML, MISMO 및 National Information Exchange Model과 같은 많은 업계 데이터 표준은 XML 스키마 사양의 풍부한 기능을 기반으로 합니다.출판계에서 Darwin Information Typing Architecture는 XML 산업 데이터 표준입니다.XML은 다양한 게시 형식을 지원하기 위해 광범위하게 사용됩니다.
주요 용어
이 섹션의 자료는 XML 사양에 기초하고 있습니다.XML 에 표시되는 모든 구성 요소를 망라한 리스트는 아닙니다.일상에서 가장 자주 볼 수 있는 주요 구성 요소를 소개합니다.
- 프로세서 및 응용 프로그램
- 프로세서는 마크업을 분석하여 구조화된 정보를 응용 프로그램에 전달합니다.이 사양에서는 XML 프로세서가 수행해야 할 작업과 하지 말아야 할 작업에 대한 요구사항이 있지만, 애플리케이션은 해당 범위를 벗어납니다.프로세서(사양에서는 이것을)는, 통칭으로 XML 파서라고 부릅니다.
- 마크업 및 콘텐츠
- XML 문서를 구성하는 문자는 마크업과 콘텐츠로 구분되며 단순 구문 규칙을 적용하여 구분할 수 있습니다.일반적으로 마크업을 구성하는 문자열은 문자로 시작합니다.
<
마지막으로 a로 끝납니다.>
또는 캐릭터로 시작합니다.&
마지막으로 a로 끝납니다.;
. 마크업이 아닌 문자열은 콘텐츠입니다.단, CDATA 섹션에서 구분자는<![CDATA[
그리고.]]>
마크업으로 분류되며, 그 사이의 텍스트는 콘텐츠로 분류됩니다.또한 가장 바깥쪽 요소의 전후 공백은 마크업으로 분류된다.
- 태그
- 태그는 다음 문자로 시작하는 마크업 구성입니다.
<
으로 끝나다>
. 태그에는 다음 세 가지 유형이 있습니다.- 시작 태그(예:
<section>
; - 엔드 태그(예:
</section>
; - 빈 태그(예:
<line-break />
.
- 시작 태그(예:
- 요소
- 요소는 시작 태그로 시작하여 일치하는 끝 태그로 끝나거나 빈 요소 태그로만 구성된 논리 문서 구성 요소입니다.start-tag와 end-tag 사이의 문자는 요소의 내용이며 다른 요소(자 요소라고 하는 요소 포함)를 포함할 수 있습니다.예를 들면,
<greeting>Hello, world!</greeting>
또 하나는<line-break />
.
- 기여하다
- Atribut은 start-tag 또는 empty-element 태그 내에 존재하는 이름과 값의 쌍으로 구성된 마크업 구성입니다.예를 들면,
<img src="madonna.jpg" alt="Madonna" />
여기서 Atribute의 이름은 "src"와 "alt"이며 값은 각각 "madonna.jpg"와 "Madonna"입니다.또 다른 예는<step number="3">Connect A to B.</step>
여기서 Atribute의 이름은 "number"이고 값은 "3"입니다.XML Atribute는 1개의 값만 가질 수 있으며 각 Atribute는 각 요소에1회까지 표시할 수 있습니다.여러 값의 목록이 필요한 일반적인 상황에서는 XML 자체 정의 범위를 벗어나는 형식을 가진 올바른 형식의 XML[i] Atribute로 목록을 인코딩해야 합니다.보통 이것은 콤마 또는 세미콜론으로 구분된 목록입니다.개별 [ii]값에 공백이 포함되어 있지 않은 경우 공백으로 구분된 목록을 사용할 수 있습니다.<div class="inner greeting-box">Welcome!</div>
여기서 "class" Atribute는 "inner greeting-box" 값을 모두 가지며 "inner"와 "greeting-box"의 2개의 CSS 클래스 이름을 나타냅니다.
- XML 선언
- XML 문서는 자신에 대한 일부 정보를 설명하는 XML 선언으로 시작할 수 있습니다.예를 들면,
<?xml version="1.0" encoding="UTF-8"?>
.
캐릭터 및 이스케이프
XML 문서는 모두 Unicode 레퍼토리의 문자로 구성됩니다.특별히 제외된 소수의 제어 문자를 제외하고, 유니코드로 정의된 모든 문자가 XML 문서의 내용 내에 표시될 수 있습니다.
XML에는 문서를 구성하는 유니코드 문자의 인코딩을 식별하고 어떤 이유로 직접 사용할 수 없는 문자를 표현하는 기능이 있습니다.
유효한 문자
다음 범위의 Unicode 코드 포인트는 XML 1.0 [10]문서에서 유효합니다.
- U+0009(수평 탭), U+000A(라인 피드), U+000D(캐리지 리턴): XML 1.0에서 허용되는 유일한 C0 컨트롤입니다.
- U+0020–U+D7FF, U+E000–U+FFD: 이것은 BMP의 일부 비문자(대신, U+FFE 및 U+FFF는 금지)를 제외합니다.
- U+10000 – U+10FFF: 이것은 비문자를 포함한 보조 플레인의 모든 코드 포인트를 포함합니다.
XML 1.1 에서는, 상기의 모든 문자와 U+0001 ~ 의 범위의 나머지 문자를 포함할 수 있도록, 허가된 문자 세트가 확장되고 있습니다.U+001F.[11] 단, U+0009(수평 탭), U+000A(라인 피드), U+000D(캐리지 리턴) 및 U+0085(다음 줄) 이외의 C0 및 C1 제어 문자의 사용은 U+000(예: U+000) 형식으로 이스케이프하도록 하여 제한합니다.
또는 동등한 것).C1 문자의 경우, 이 제한은 하위 비호환성이며, 일반적인 부호화 오류를 검출할 수 있도록 도입되었습니다.
코드 포인트 U+0000(Null)은 XML 1.0 또는 1.1 문서에서 허용되지 않는 유일한 문자입니다.
부호화 검출
유니코드 문자 집합은 "인코딩"이라고 불리는 다양한 방법으로 저장 또는 전송을 위해 바이트로 인코딩될 수 있습니다.Unicode 자체에서는 레퍼토리 전체를 커버하는 부호화가 정의되어 있습니다.유명한 부호화에는 UTF-8 및 [12]UTF-16이 포함됩니다.유니코드 이전의 텍스트 인코딩에는 ASCII 및 ISO/IEC 8859와 같이 많은 것이 있습니다.그들의 문자 레퍼토리는 거의 모든 경우에 유니코드 문자 집합의 하위 집합입니다.
XML 에서는, 임의의 Unicode 정의 부호화 및 그 외의 부호화 문자를 Unicode 에 표시할 수 있습니다.XML은 XML 프로세서가 [13]어떤 인코딩이 사용되고 있는지를 사전에 파악하지 않고 확실하게 판별할 수 있는 메커니즘도 제공합니다.UTF-8 및 UTF-16 이외의 인코딩은 모든 XML 파서에 의해 인식되는 것은 아닙니다.
이스케이프
XML은 문제가 있는 문자를 직접 포함하기 위한 이스케이프 기능을 제공합니다.예를 들어 다음과 같습니다.
- 문자 "<"와 "&"는 주요 구문 마커이며 CDATA 섹션 이외의 콘텐츠에는 표시되지 않습니다.XML 엔티티 [14]값에 "<"를 사용할 수는 있지만 권장되지는 않습니다.
- 일부 문자 인코딩은 Unicode의 서브셋만 지원합니다.예를 들어 XML 문서를 ASCII로 인코딩하는 것은 합법적이지만 ASCII에는 "e"와 같은 유니코드 문자에 대한 코드 포인트가 없습니다.
- 작성자의 컴퓨터에 문자를 입력하지 못할 수 있습니다.
- 일부 문자는 다른 문자와 시각적으로 구별할 수 없는 문자(예: 구분되지 않는 공백)를 가지고 있습니다.
 
) " 및 스페이스 ( ) 
( ) " 및 키릴 문자 A (А
) """ 및 라틴 대문자 A (A
) "A"
사전 정의된 엔티티가 5개 있습니다.
<
「<」를 나타냅니다.>
>을 나타냅니다.&
"&"를 나타냅니다.'
를 나타냅니다."
는 ''를 나타냅니다.
허용되는 모든 유니코드 문자는 숫자 참조로 표시할 수 있습니다.유니코드 숫자 코드가 16진수 4E2D 또는 10진수 20,013인 한자 """를 생각해 보십시오.키보드가 이 문자를 입력하는 방법을 제공하지 않는 사용자는 다음과 같이 인코딩된 XML 문서에 이 문자를 삽입할 수 있습니다.中
또는中
마찬가지로 문자열 "I < 3 Jörg"는 XML 문서에 포함되도록 인코딩할 수 있습니다.I <3 Jörg
.
�
null 문자는 숫자 [15]참조를 사용하는 경우에도 XML에서 제외되는 제어 문자 중 하나이기 때문에 사용할 수 없습니다.이러한 문자를 나타내기 위해서는 Base64와 같은 대체 부호화 메커니즘이 필요합니다.
평.
코멘트는 다른 마크업 이외의 문서의 어디에나 표시될 수 있습니다.XML 선언 앞에는 코멘트를 표시할 수 없습니다.코멘트는 로 시작합니다.<!--
으로 끝나다-->
SGML과의 호환성을 위해 문자열 "--"(이중 하이픈)은 [16]코멘트 내부에 사용할 수 없습니다.이는 코멘트를 네스트할 수 없음을 의미합니다.앰퍼샌드는 코멘트 내에서 특별한 의미가 없기 때문에 엔티티 및 문자 참조는 인식되지 않으며 문서 인코딩 문자 집합 이외의 문자를 나타낼 수 없습니다.
유효한 코멘트의 예:<!--no need to escape <code> & such in comments-->
해외용
XML 1.0(Fifth Edition) 및 XML 1.1은 요소 이름, 속성, 주석, 문자 데이터 및 처리 명령에서 거의 모든 Unicode 문자를 직접 사용할 수 있도록 지원합니다(작은 기호 "<" 등 XML 자체에서 특별한 심볼적 의미가 있는 문자를 제외).다음은 중국어, 아르메니아어 및 키릴 문자를 포함한 올바른 형식의 XML 문서입니다.
<?xml version="1.0" encoding="UTF-8"?> <俄语 լեզու="ռուսերեն">данные</俄语>
구문적 정확성과 오류 처리
XML 사양은 XML 문서를 올바른 형식의 텍스트로 정의하며, 이는 사양에 제공된 구문 규칙 목록을 충족함을 의미합니다.꽤 긴 리스트의 요점은 다음과 같습니다.
- 이 문서에는 올바르게 인코딩된 올바른 Unicode 문자만 포함되어 있습니다.
- 다음과 같은 특수 구문 문자가 없습니다.
<
그리고.&
는 마크업 설명 역할을 수행하는 경우를 제외하고 표시됩니다. - 요소를 구분하는 start-tag, end-tag 및 empty-element 태그가 올바르게 중첩되어 누락 및 중복이 없습니다.
- 태그명은 대소문자를 구분합니다.start-tag와 end-tag는 정확하게 일치해야 합니다.
- 태그 이름에는 문자를 사용할 수 없습니다!"#$%&'()++/;<=>?@[\]^'{ }~, 공백 문자도 사용할 수 없습니다. ", 또는 숫자로 시작할 수 없습니다.
- 단일 루트 요소에는 다른 모든 요소가 포함됩니다.
XML 문서의 정의에서는 올바른 형식의 규칙 위반이 포함된 텍스트는 제외됩니다.이러한 위반은 단순히 XML이 아닙니다.이러한 에러를 보고하고 통상의 처리를 정지하려면 , XML 프로세서가 필요합니다.이 정책은 때로는 "엄격한 오류 처리"라고 불리기도 하며 HTML을 처리하는 프로그램의 동작과는 현저한 대조를 이룹니다.HTML은 심각한 마크업 [17]오류가 있는 경우에도 합리적인 결과를 생성하도록 설계되었습니다.이 분야에서 XML의 정책은 Postel의 법칙에 위배된다는 비판을 받고 있습니다("보내는 것은 보수적이고 받아들이는 [18]것은 자유롭다."
XML 사양은 유효한 XML 문서를 올바른 형식의 XML 문서로 정의하며, DTD([19][20]Document Type Definition) 규칙에도 부합합니다.
스키마와 검증
XML 문서는 형식이 적절할 뿐만 아니라 유효할 수도 있습니다.즉, DTD(Document Type Definition)에 대한 참조가 포함되어 해당 DTD에서 요소와 속성이 선언되고 DTD가 지정하는 해당 요소에 대한 문법 규칙을 따릅니다.
XML 프로세서는 XML 문서의 유효성을 검사하는지 여부에 따라 검증 중이거나 검증 중이 아닌 것으로 분류됩니다.유효성 오류를 검출한 프로세서는 이를 보고할 수 있어야 하지만 정상적인 처리를 계속할 수 있습니다.
DTD는 스키마 또는 문법의 예입니다.XML 1.0이 처음 공개된 이후 XML용 스키마 언어 영역에서 상당한 작업이 이루어졌습니다. 이러한 스키마 언어는 일반적으로 문서에 적용될 수 있는 요소의 집합, 속성의 순서 및 허용되는 부모/자녀 관계를 제한합니다.
문서 유형 정의
XML의 가장 오래된 스키마 언어는 SGML에서 상속된 문서 유형 정의(DTD)입니다.
DTD에는 다음과 같은 이점이 있습니다.
- XML 1.0 규격에 포함되어 있기 때문에 DTD 지원은 어디에나 있습니다.
- DTD는 요소 기반 스키마 언어에 비해 간결하기 때문에 한 화면에서 더 많은 정보를 볼 수 있습니다.
- DTD를 사용하면 문자를 게시하기 위한 표준 퍼블릭엔티티 세트를 선언할 수 있습니다.
- DTD는 네임스페이스에서 사용되는 유형이 아닌 문서 유형을 정의하므로 단일 집합에서 문서에 대한 모든 제약 조건을 그룹화합니다.
DTD에는 다음과 같은 제한이 있습니다.
- 이들은 XML의 새로운 기능, 특히 네임스페이스에 대해 명시적으로 지원하지 않습니다.
- 그들은 표현력이 부족하다.XML DTD는 SGML DTD보다 단순하며 일반 문법으로는 표현할 수 없는 구조도 있습니다.DTD는 기본적인 데이터 유형만 지원합니다.
- 가독성이 결여되어 있다.DTD 설계자는 일반적으로 파라미터 엔티티(기본적으로 텍스트 매크로로 동작)를 많이 사용합니다.이것에 의해, 복잡한 문법을 정의하기 쉬워지지만, 명확성은 저하됩니다.
- 이들은 SGML에서 상속된 정규 표현 구문에 기반한 구문을 사용하여 스키마를 설명합니다.SAX 등의 일반적인 XML API는 응용 프로그램에 구문의 구조화된 표현을 제공하지 않기 때문에 프로그래머는 요소 기반 구문보다 접근성이 떨어집니다.
DTD를 다른 스키마 유형과 구별하는 두 가지 고유한 기능은 XML 문서 내에 DTD를 삽입하기 위한 구문 지원 및 엔티티 정의입니다.이것은 XML 프로세서가 DTD 자체 및 XML 문서에 삽입하는 임의의 단편(문자 이스케이프 등)입니다.
DTD 기술은 보편적으로 사용되기 때문에 여전히 많은 애플리케이션에서 사용되고 있습니다.
스키마
W3C에 의해 DTD의 후계자로 기술된 새로운 스키마 언어는 XML 스키마이며, XML 스키마 인스턴스의 이니셜리즘인 XSD(XML Schema Definition)에 의해 자주 언급됩니다.XML 언어를 기술할 때 XSD는 DTD보다 훨씬 강력합니다.풍부한 데이터 입력 시스템을 사용하여 XML 문서의 논리 구조에 대한 보다 상세한 제약이 가능합니다.또한 XSD는 XML 기반 형식을 사용하여 일반 XML 도구를 사용하여 처리할 수 있습니다.
xs: 스키마를 정의하는 요소:
<?xml version="1.0" encoding="ISO-8859-1" ?> <클릭: 개요 xmlns: 삭제="http://www.w3.org/2001/XMLSchema"> </filename: >
릴렉스 NG
RELEX NG(Regular Language for XML Next Generation)는 처음에 OASIS에 의해 지정되어 현재는 표준이 되었습니다(Part 2: ISO/IEC 19757 – DSDL).RELEX NG 스키마는 XML 기반 구문 또는 보다 콤팩트한 비 XML 구문 중 하나로 기술할 수 있습니다.두 구문은 동형이며 James Clark의 변환 도구인 Trang은 정보를 잃지 않고 이들 사이에서 변환할 수 있습니다.RELEX NG는 XML Schema보다 정의 및 검증 프레임워크가 단순하여 사용 및 구현이 용이합니다.또한 데이터형 프레임워크 플러그인을 사용할 수도 있습니다. 예를 들어 RELACE NG 스키마 작성자는 XML 스키마 데이터 유형의 정의에 적합하도록 XML 문서의 값을 요구할 수 있습니다.
스키마트론
Schematron은 XML 문서의 패턴 유무에 대한 어설션을 하기 위한 언어입니다.일반적으로 XPath 식을 사용합니다.Schematron은 이제 표준이 되었다(Part 3: ISO/IEC 19757 – DSDL의 규칙 기반 검증).
DSDL 및 기타 스키마 언어
DSDL(Document Schema Definition Languages)은 여러 부분으로 구성된 ISO/IEC 표준(ISO/IEC 19757)으로, 각각 특정 문제를 대상으로 하는 포괄적인 소규모 스키마 언어 세트를 통합합니다.DSDL은 RELEX NG 완전 및 콤팩트 구문, Schematron 어설션 언어 및 데이터 타입을 정의하기 위한 언어, 문자 레퍼토리의 제약, 이름 변경 및 엔티티 확장, 문서 fragment의 네임스페이스 기반 라우팅 등을 포함한다.DSDL 스키마 언어는 아직 XML 스키마의 벤더가 지원하지 않으며 퍼블리싱을 위한 XML 스키마의 유틸리티 부족에 대한 업계 퍼블리셔의 풀뿌리 반응입니다.
일부 스키마 언어는 특정 XML 형식의 구조를 기술할 뿐만 아니라 이 형식을 준수하는 개별 XML 파일의 처리에 영향을 주는 제한된 기능을 제공합니다.DTD와 XSD는 모두 이 기능을 갖추고 있습니다.예를 들어, 인포셋 증강 기능이나 어트리뷰트의 디폴트를 제공할 수 있습니다.RELEX NG와 Schematron은 의도적으로 이러한 것들을 제공하지 않습니다.
관련사양
XML 1.0의 최초 공개 직후부터 XML과 밀접하게 관련된 사양 클러스터가 개발되었습니다.XML이라는 용어는 XML 코어의 일부로 인식되는 하나 이상의 다른 기술과 함께 XML을 지칭하기 위해 사용되는 경우가 많습니다.
- XML 네임스페이스를 사용하면 이름 충돌 없이 동일한 문서에서 다른 어휘에서 가져온 XML 요소 및 속성을 포함할 수 있습니다.XML 네임스페이스는 XML 사양 자체의 일부가 아니지만 사실상 모든 XML 소프트웨어도 XML 네임스페이스를 지원합니다.
- XML Base는
xml:base
Atribute: 단일 XML 요소의 범위 내에서 상대 URI 참조를 해결하기 위한 기준을 설정하기 위해 사용할 수 있습니다. - XML Information Set 또는 XML Infoset은 정보 항목 측면에서 XML 문서를 위한 추상 데이터 모델입니다.infoset은 XML 언어 사양에서 일반적으로 사용되며, 이러한 언어가 허용하는 XML 구조에 대한 제약 조건을 설명하는 데 편리합니다.
- XSL(Extensible Stylesheet Language)은 XML 문서를 변환 및 렌더링하는 데 사용되는 언어 패밀리로, 다음과 같은 세 부분으로 나뉩니다.
- XSLT(XSL Transformations)는 XML 문서를 다른 XML 문서 또는 HTML, 일반 텍스트 또는 XSL-FO와 같은 다른 형식으로 변환하기 위한 XML 언어입니다.XSLT는 입력 XML 문서의 컴포넌트(주로 요소 및 속성)에 대처하기 위해 사용하는 XPath와 매우 긴밀하게 연결되어 있습니다.
- XML 문서를 렌더링하기 위한 XML 언어인 XSL-FO(XSL Formating Objects)는 PDF를 생성하는 데 자주 사용됩니다.
- XML 문서의 구성 요소(요소, 속성 등)를 지정하기 위한 비 XML 언어인 XPath(XML 경로 언어)XPath는 다른 코어 XML 사양 및 XML 인코딩 데이터에 액세스하기 위한 프로그래밍 라이브러리에서 널리 사용됩니다.
- XQuery(XML 쿼리)는 XPath 및 XML 스키마를 강력하게 기반으로 하는 XML 쿼리 언어입니다.XML에 액세스, 조작 및 반환하는 방법을 제공하며 주로 XML 데이터베이스의 쿼리 언어로 간주됩니다.
- XML 시그니처는 XML 콘텐츠에 디지털 서명을 작성하기 위한 구문 및 처리 규칙을 정의합니다.
- XML 암호화는 XML 콘텐츠를 암호화하기 위한 구문 및 처리 규칙을 정의합니다.
- XML 모델(Part 11:Schema Association of ISO/IEC 19757 – DSDL)은 XML 문서를 위의 스키마 유형과 연관짓는 방법을 정의합니다.
XInclude, XLink, XPointer 등 "XML Core"의 일부로 간주되는 일부 다른 사양은 널리 채택되지 않았습니다.
프로그래밍 인터페이스
XML의 설계 목표는 "XML [6]문서를 처리하는 프로그램을 쉽게 작성할 수 있어야 한다"는 것입니다.그럼에도 불구하고 XML 사양에는 프로그래머가 이러한 처리를 수행하는 방법에 대한 정보가 거의 포함되어 있지 않습니다.XML Infoset 사양은 XML 문서 내의 구성을 참조하기 위한 어휘를 제공하지만 이 정보에 액세스하는 방법에 대한 지침은 제공하지 않습니다.XML에 액세스하기 위한 다양한 API가 개발되어 사용되었으며 일부는 표준화되었습니다.
XML 처리를 위한 기존 API는 다음 범주로 분류되는 경향이 있습니다.
- SAX 및 StAX와 같은 프로그래밍 언어에서 액세스할 수 있는 스트림 지향 API입니다.
- 프로그래밍 언어(예: DOM)에서 액세스할 수 있는 트리 트래버설 API입니다.
- XML 데이터 바인딩: XML 문서와 프로그래밍 언어 개체 간에 자동 변환을 제공합니다.
- XSLT나 XQuery 등의 선언형 변환 언어.
- LINQ 및 Scala와 같은 범용 프로그래밍 언어에 대한 구문 확장입니다.
스트림 지향 설비는 필요한 메모리가 적으며 XML 문서의 선형 트래버스에 기반한 특정 태스크의 경우 다른 대안보다 빠르고 단순합니다.트리 트래버설 API와 데이터 바인딩 API는 일반적으로 훨씬 더 많은 메모리를 필요로 하지만 프로그래머가 사용하는 것이 더 편리합니다. 어떤 API는 XPath 식을 사용하여 문서 구성요소를 선언적으로 검색하는 것을 포함합니다.
XSLT는 XML 문서 변환을 선언적으로 기술하도록 설계되었으며 서버 측 패키지와 웹 브라우저 모두에서 광범위하게 구현되었습니다.XQuery는 기능적으로 XSLT와 중복되지만 대규모 XML 데이터베이스를 검색하도록 설계되었습니다.
XML용 심플한 API
SAX(Simple API for XML)는 문서를 순차적으로 읽고 그 내용을 사용자 설계의 핸들러 객체에 대한 다양한 메서드에 대한 콜백으로 보고하는 사전 이벤트 기반 API입니다.SAX는 구현이 빠르고 효율적이지만 XML에서 무작위로 정보를 추출하는 데 사용하기 어렵습니다.이는 문서의 어떤 부분이 처리되고 있는지를 애플리케이션 작성자에게 추적해야 하는 부담이 되기 때문입니다.이 기능은 특정 유형의 정보가 문서 내 어디에서 발생하든 항상 동일한 방식으로 처리되는 상황에 적합합니다.
풀 해석
풀 파싱은 문서를 반복기 설계 패턴을 사용하여 순서대로 읽은 일련의 항목으로 처리합니다.이를 통해 구문 분석을 수행하는 코드의 구조가 구문 분석되는 XML의 구조를 반영하는 재귀적 하강 파서를 쓸 수 있으며, 중간 구문 분석 결과는 구문 분석을 수행하는 함수 내에서 로컬 변수로 사용하거나 하위 수준의 함수에 전달될 수 있습니다.(함수 반환값으로) 상위 함수에 반환되었습니다.[21]풀 파서의 예로는 데이터가 있습니다.:편집::Perl의 Xml, Java 프로그래밍 언어의 StAX, Smalltalk의 XMLPullParser, PHP의 XMLReader, Python의 ElementTree.iterparse.의 Xml.XmlReader.NET Framework 및 DOM 트래버설 API(NodeIterator 및 TreeWalker).
풀 파서는 XML 문서의 다양한 요소, 속성 및 데이터를 순차적으로 방문하는 반복기를 만듭니다.이 반복기를 사용하는 코드는 현재 항목(예를 들어 시작 태그인지, 끝 태그인지, 텍스트인지)을 테스트하고 해당 속성(로컬 이름, 네임스페이스, XML 속성 값, 텍스트 값 등)을 검사할 수 있으며 반복기를 다음 항목으로 이동할 수도 있습니다.따라서 코드는 문서를 통과할 때 문서에서 정보를 추출할 수 있습니다.recursive-desent 접근법은 데이터를 구문 분석을 수행하는 코드에 입력된 로컬 변수로 유지하는 데 도움이 되는 경향이 있지만, SAX는 일반적으로 구문 분석되는 요소의 상위 요소인 요소의 스택 내에서 중간 데이터를 수동으로 유지하기 위해 구문 분석기가 필요합니다.풀 파싱 코드는 SAX 구문 분석 코드보다 더 쉽게 이해하고 유지할 수 있습니다.
문서 객체 모델
문서 객체 모델(DOM)은 문서 내용을 나타내는 노드 객체의 트리인 것처럼 문서 전체를 탐색할 수 있는 API입니다.DOM 문서는 파서로 작성하거나 사용자가 수동으로 생성할 수 있습니다(제한 사항이 있음).DOM 노드의 데이터 유형은 추상적입니다. 구현은 고유한 프로그래밍 언어별 바인딩을 제공합니다.일반적으로 접근이 허용되기 전에 문서 전체를 메모리에 로드하고 오브젝트 트리로 구성해야 하기 때문에 DOM 구현은 메모리를 많이 사용하는 경향이 있습니다.
데이터 바인딩
XML 데이터 바인딩은 DOM 파서로 작성된 일반 개체와 달리 XML 문서를 사용자 정의 및 강력한 유형의 개체 계층에 바인딩하는 것입니다.이 접근방식은 코드 개발을 단순화하고 많은 경우 런타임보다는 컴파일 시 문제를 식별할 수 있습니다.응용 프로그램 작성 시 문서 구조가 알려져 있고 수정되어 있는 응용 프로그램에 적합합니다.데이터 바인딩 시스템의 예로는 의 Java Architecture for XML Binding(JAXB), XML Serialization 등이 있습니다.NET [22]Framework 및 GSOAP에서의 XML 시리얼화.
데이터 유형으로서의 XML
XML은 다른 언어에서 퍼스트 클래스 데이터 유형으로 등장했습니다.ECMAScript/JavaScript 언어에 대한 ECMAScript(E4X) 확장은 XML 문서노드와 XML 노드목록을 개별 개체로 지원하며 부모-자녀 [23]관계를 지정하는 닷 표기를 사용하는 JavaScript용 특정 개체(XML 및 XMLList)를 명시적으로 정의합니다.E4X는 Mozilla 2.5+ 브라우저(지금은 권장되지 않음) 및 Adobe Actionscript에서 지원되지만 더 보편적으로 채택되지는 않았습니다.Microsoft 의 LINQ 의 실장에서도, 같은 표기법이 사용되고 있습니다.NET 3.5 이상 및 (Java VM을 사용하는) Scala의 경우.XML 조작의 특수 기능을 갖춘 Linux와 같은 셸을 제공하는 오픈소스 xmlsh 응용 프로그램에서도 마찬가지로 <[ ] 표기법을 [24]사용하여 XML을 데이터 유형으로 취급합니다.Resource Description Framework는 데이터 유형을 정의합니다.rdf:XMLLiteral
Facebook은 각각 XHP와 [25]JSX와 유사한 방식으로 핵심 구문에 XML을 추가하는 PHP와 JavaScript 언어에 대한 확장을 만들었습니다.
역사
XML은 SGML(ISO 8879)[26]의 응용 프로그램프로파일입니다
동적 정보 디스플레이를 위한 SGML의 다양성은 인터넷이 [27][28]발달하기 전인 1980년대 후반 초기 디지털 미디어 출판사에 의해 이해되었습니다.1990년대 중반까지 SGML의 일부 실무자들은 당시 새로운 월드 와이드 웹에 대한 경험을 쌓았고, SGML이 웹이 성장함에 따라 직면할 수 있는 몇 가지 문제에 대한 해결책을 제공한다고 믿었다.Dan Connolly는 1995년에 W3C의 활동에 SGML을 추가했습니다.작업은 1996년 중반 Sun Microsystems 엔지니어 Jon Bosak이 헌장을 개발하고 공동작업자를 모집하면서 시작되었습니다.보삭은 SGML과 [29]웹을 모두 경험한 사람들의 작은 커뮤니티에 잘 연결되어 있었다.
XML은 11명의 [30]멤버로 구성된 작업 그룹에 의해 컴파일되었으며, (대략) 150명으로 구성된 이익 그룹에 의해 지원되었습니다.이익 그룹 메일링 리스트에서 기술적인 논의가 이루어졌고, 문제는 합의 또는 작업 그룹의 다수결로 해결되었다.1997년 12월 [31]4일 Michael Sperberg-McQueen에 의해 설계 결정과 그 합리성에 대한 기록이 작성되었습니다.제임스 클라크는 작업 그룹의 테크니컬 리더로서, 특히 빈 요소에 공헌했습니다.<empty />
검토 대상으로 제시된 다른 이름으로는 MAGMA(일반화된 마크업 애플리케이션을 위한 최소 아키텍처), SLIM(인터넷 마크업을 위한 구조화 언어), MGML(최소화된 마크업 언어) 등이 있습니다.이 사양의 공동 편집자는 원래 팀 브레이와 마이클 스퍼버그-맥퀸이었습니다.프로젝트 중반, 브레이는 넷스케이프와의 컨설팅 계약을 수락하여 마이크로소프트의 큰 항의를 불러일으켰다.브레이는 일시적으로 편집자직을 사임하라는 요청을 받았다.이것은 작업 그룹에서 격렬한 논쟁으로 이어졌고, 결국 마이크로소프트의 장 파올리가 세 번째 공동 편집자로 임명됨으로써 해결되었다.
XML 작업 그룹은 직접 대면한 적이 없습니다.이 설계는 이메일과 주간 전화 회의를 조합하여 수행되었습니다.주요 설계 결정은 XML 사양의 첫 번째 작업 초안이 [33]발표된 1996년 [32]8월부터 11월 사이에 집중적인 작업을 통해 이루어졌습니다.추가 설계 작업은 1997년까지 계속되었으며 XML 1.0은 1998년 2월 10일 W3C 권장 사항이 되었습니다.
원천
XML은 ISO 표준 SGML의 프로파일이며 XML의 대부분은 변경되지 않은 SGML에서 가져옵니다.SGML에서는 논리구조와 물리구조(요소와 엔티티), 문법기반검증(DTD), 데이터와 메타데이터(요소와 속성), 혼합콘텐츠, 표현으로부터의 처리의 분리(처리명령), 기본 앵글브래킷 구문이 사용됩니다.SGML 선언이 제거되었기 때문에 XML에는 고정 구분자 집합이 있으며 문서 문자 집합으로 유니코드를 채택합니다.
XML의 다른 테크놀로지의 소스로는 TEI(Text Encoding Initiative)가 있습니다.TEI는 SGML의 프로파일을 "전송 구문"으로 정의하며 요소가 리소스와 동기화되는 HTML은 문서 문자 세트를 리소스 인코딩과 분리했습니다.xml:lang
Atribute가 발명되어 링크 선언 시 필요한 것이 아니라 (HTTP와 같은) 메타데이터가 리소스에 부수되었습니다.ISO 관련 중국/일/한국 문서처리 전문가 그룹의 동아시아 문서에 관한 표준화 프로젝트(SPRADE) 프로젝트의 ERCS(Extended Reference Concrete Syntax) 프로젝트는 XML 1.0 명명 규칙의 기초가 되었으며, 16진수 숫자 참조 및 참조 개념을 도입하여 Avai를 만들었다.모든 유니코드 문자를 사용할 수 있습니다.ERCS, XML 및 HTML을 더 잘 지원하기 위해 SGML 표준 IS 8879는 1996년과 1998년에 WebSGML Adaptations와 함께 개정되었습니다.XML 헤더는 ISO HyTime 헤더에 이은 것입니다.
논의 중에 개발된 새로운 XML에서는 부호화 검출 알고리즘과 부호화 헤더, 처리 명령 타깃, xml:space 속성 및 빈 요소 태그의 새로운 닫기 딜리미터가 있습니다.비록 성공적으로 전자 북 기술"Dynatext"소프트웨어에서 구현되었다고 well-formedness의 관념이 타당성(는 스키마 없이 구문 분석할 수 있)에 반대하는 처음으로 XML에 몸소 지시고, 워털루 대학에 있는 뉴 옥스포드 영어 사전 프로젝트의 소프트웨어[34]. 미국에서 RISP 리스프 SGML텍스트 프로세서 공식화 되어졌다nis도쿄의 코프, 미 육군 미사일 사령부의 IADS 하이퍼텍스트 시스템, 멘토 그래픽스 컨텍스트, 인터리프 및 제록스 출판 시스템.
버전
1.0 및 1.1
첫 번째(XML 1.0)는 1998년에 처음 정의되었습니다.이후 새로운 버전 번호를 부여받지 않고 약간의 수정을 거쳐 2008년 11월 26일 발행된 제5판이다.널리 구현되어 있으며 일반 용도로도 권장됩니다.
두 번째(XML 1.1)는 XML 1.0 Third [35]Edition과 같은 날인 2004년 2월 4일에 처음 발행되었으며, 현재 2006년 8월 16일에 발행된 제2판에 있습니다.여기에는 XML을 [36]특정 상황에서 사용하기 쉽게 하기 위한 기능(일부 논란이 있음)이 포함되어 있습니다.주요 변경사항은 EBCDIC 플랫폼에서 사용되는 줄 바꿈 문자 및 Unicode 3.2에 없는 스크립트 및 문자를 사용할 수 있도록 하는 것입니다.XML 1.1은 그다지 광범위하게 구현되어 있지 않으므로 특정 [37]기능을 필요로 하는 사용자만 사용할 것을 권장합니다.
5번째 에디션 출시 이전 XML 1.0은 요소 및 속성 이름 및 고유 식별자에서 사용할 수 있는 문자에 대한 엄격한 요구 사항을 가지고 있다는 점에서 XML 1.1과 달랐다. XML 1.0의 첫 4개 에디션에서는 유니코드 표준(Unicode 2.0에서 Unicode 3.2)의 특정 버전을 사용하여 문자가 배타적으로 열거되었다.제5판은 XML 1.1의 메커니즘을 대체하고 있습니다.이 메커니즘은 미래에 대비되지만 용장성이 감소합니다.XML 1.0의 제5판 및 XML 1.1의 모든 에디션에서는 특정 문자만 이름에 사용할 수 없도록 하고, 그 이외의 모든 문자는 향후 Unicode 버전에서는 적절한 이름 문자를 사용할 수 있도록 하는 접근방식을 채택하고 있습니다.제5판에서는 XML 이름에 Unicode [36]3.2 이후 유니코드에 추가된 많은 문자 중 발리 문자, 참 문자 또는 페니키아 문자가 포함될 수 있습니다.
현재 버전의 Unicode에서 코드 포인트에 대응하는 문자가 정의되어 있지 않은 경우라도 XML 1.0 또는 1.1 문서의 문자 데이터 및 속성 값에 거의 모든 Unicode 코드 포인트를 사용할 수 있습니다.문자 데이터 및 속성 값에서 XML 1.1은 XML 1.0보다 더 많은 제어 문자를 사용할 수 있지만, "강성"을 위해 XML 1.1에 도입된 대부분의 제어 문자는 숫자 참조로 표현되어야 합니다(및 #x7F ~ #x9F는 XML 1.0에서 허용되었던 XML 1.0에서 심지어 숫자로 표현되어야 합니다).액터 레퍼런스[38])를 참조해 주세요.XML 1.1에서 지원되는 제어 문자 중에는 공백 문자로 취급해야 하는 두 줄 구분 코드가 있습니다.이 코드들은 직접 쓸 수 있는 유일한 제어 코드입니다.
2.0
XML 2.0에 대한 논의는 있었지만, 이러한 프로젝트에 대한 계획을 발표한 조직은 없습니다.XML의 최초 개발자 [39]중 한 명이 작성한 XML-SW(SW for skunkworks)에는 구문에서 DTD를 제거하고 XML 네임스페이스, XML Base 및 XML 정보 세트를 기본 표준으로 통합하는 등 XML 2.0의 모양에 대한 몇 가지 제안이 포함되어 있습니다.
이진 XML
World Wide Web Consortium에는 XML Information Set의 바이너리 인코딩에 대한 사용 사례와 속성에 대한 예비 조사를 수행하는 XML 바이너리 특성화 작업 그룹도 있습니다.작업 그룹은 어떠한 공식적인 기준도 만들 수 있는 허가를 받지 않았다.XML은 정의상 텍스트 기반이기 때문에 ITU-T와 ISO는 혼동을 피하기 위해 자체 바이너리 형식(ITU-T Rec. X.891 및 ISO/IEC 24824-1)에 Fast Infoset이라는 이름을 사용합니다.
비판
XML과 그 확장자는 장황함, 복잡성 및 [40]중복성으로 인해 정기적으로 비판을 받아 왔습니다.
XML의 기본 트리 모델을 프로그래밍 언어 또는 데이터베이스의 유형 시스템에 매핑하는 것은 어려울 수 있습니다. 특히 XML을 응용 프로그램 간에 고도로 구조화된 데이터를 교환하는 데 사용하는 경우, 이는 주요 설계 목표가 아닙니다.단, XML 데이터 바인딩 시스템에서는 응용 프로그램이 XML 자체의 직접 표현에서 데이터를 가져오는 대신 사용되는 프로그래밍 언어로 데이터의 데이터 구조를 나타내는 객체에서 직접 XML 데이터에 액세스할 수 있습니다.이것에 의해, 타입의 안전성이 확보됩니다.이것은 문서의 XML 스키마 XSD 요소와 메모리에 표시되는 클래스의 멤버 간에 매핑을 자동으로 생성함으로써 이루어집니다.
다른 비판은 XML이[41] 자기 기술 언어라는 주장을 반박하려고 합니다(XML 사양 자체는 이러한 주장을 하지 않습니다).
JSON, YAML 및 S-Expressions는 종종 고도로 구조화된 컨텐츠와 상대적으로 구조화되지 않은 컨텐츠를 모두 포함하는 문서보다는 고도로 구조화된 데이터를 표현하는 데 초점을 맞춘 단순한 대안으로 제안됩니다(데이터 직렬화 [42]형식 비교 참조).단, W3C 표준 XML 스키마 사양은 단순한 시리얼라이제이션 포맷에 비해 폭넓은 구조화된XSD 데이터 타입을 제공하며 모듈러 기능과 XML 네임스페이스를 통한 재사용을 제공합니다.
「 」를 참조해 주세요.
메모들
레퍼런스
- ^ "XML Media Types, RFC 7303". Internet Engineering Task Force. July 2014.
- ^ "XML 1.0 Specification". World Wide Web Consortium. Retrieved 22 August 2010.
- ^ "Extensible Markup Language (XML) 1.0". www.w3.org.
- ^ "XML and Semantic Web W3C Standards Timeline" (PDF). Dblab.ntua.gr. Archived from the original (PDF) on 24 April 2013. Retrieved 14 August 2016.
- ^ "W3C DOCUMENT LICENSE". W3.org. Retrieved 24 July 2020.
- ^ a b "XML 1.0 Origin and Goals". W3.org. Retrieved 14 August 2016.
- ^ Fennell, Philip (June 2013). "Extremes of XML". XML London 2013: 80–86. doi:10.14337/XMLLondon13.Fennell01. ISBN 978-0-9926471-0-0.
- ^ a b c d e Dykes, Lucinda (2005). XML for Dummies (4th ed.). Hoboken, N.J.: Wiley. ISBN 978-0-7645-8845-7.
- ^ "XML Applications and Initiatives". Xml.coverages.org. Retrieved 16 November 2017.
- ^ "Extensible Markup Language (XML) 1.0 (Fifth Edition)". World Wide Web Consortium. 2008-11-26. Retrieved 23 November 2012.
- ^ "Extensible Markup Language (XML) 1.1 (Second Edition)". World Wide Web Consortium. Retrieved 22 August 2010.
- ^ "Characters vs. Bytes". Tbray.org. Retrieved 16 November 2017.
- ^ "Autodetection of Character Encodings". W3.org. Retrieved 16 November 2017.
- ^ "Extensible Markup Language (XML) 1.0 (Fifth Edition)". W3.org. Retrieved 16 November 2017.
- ^ "W3C I18N FAQ: HTML, XHTML, XML and Control Codes". W3.org. Retrieved 16 November 2017.
- ^ "Extensible Markup Language (XML)". W3.org. Retrieved 16 November 2017. 섹션 "댓글"
- ^ Pilgrim, Mark (2004). "The history of draconian error handling in XML". Archived from the original on 2011-07-26. Retrieved 18 July 2013.
- ^ "There are No Exceptions to Postel's Law [dive into mark]". DiveIntoMark.org. Archived from the original on 2011-05-14. Retrieved 22 April 2013.
- ^ "XML Notepad". Xmlnotepad/codeplex.com. Archived from the original on 15 November 2017. Retrieved 16 November 2017.
- ^ "XML Notepad 2007". Microsoft.com. Retrieved 16 November 2017.
- ^ DuCharme, Bob. "Push, Pull, Next!". Xml.com. Retrieved 16 November 2017.
- ^ "XML Serialization in the .NET Framework". Msdn.microsoft.com. Retrieved 31 July 2009.
- ^ "Processing XML with E4X". Mozilla Developer Center. Mozilla Foundation.
- ^ "XML Shell: Core Syntax". Xmlsh.org. 2010-05-13. Retrieved 22 August 2010.
- ^ "Resource Description Framework (RDF): Concepts and Abstract Syntax". W3.org. Retrieved 22 August 2010.
- ^ "ISO/IEC 19757-3". ISO/IEC. 1 June 2006: vi.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ Bray, Tim (February 2005). "A conversation with Tim Bray: Searching for ways to tame the world's vast stores of information". Association for Computing Machinery's "Queue site". Retrieved 16 April 2006.
- ^ Ambron, Sueann & Hooper, Kristina, eds. (1988). "Publishers, multimedia, and interactivity". Interactive multimedia. Cobb Group. ISBN 1-55615-124-1.
- ^ Eliot Kimber (2006). "XML is 10". Drmacros-xml-rants.blogspot.com. Retrieved 16 November 2017.
- ^ 작업 그룹은 원래 "편집 심의 위원회"로 불렸다.첫 번째 에디션이 완성되기 전에 추가된 원래 멤버와 7명은 XML 권장사항의 첫 번째 에디션 말미에 http://www.w3.org/TR/1998/REC-xml-19980210에 나열되어 있습니다.
- ^ "Reports From the W3C SGML ERB to the SGML WG And from the W3C XML ERB to the XML SIG". W3.org. Retrieved 31 July 2009.
- ^ "Oracle Technology Network for Java Developers - Oracle Technology Network - Oracle". Java.sun.com. Retrieved 16 November 2017.
- ^ "Extensible Markup Language (XML)". W3.org. 1996-11-14. Retrieved 31 July 2009.
- ^ Jon Bosak; Sun Microsystems (2006-12-07). "Closing Keynote, XML 2006". 2006.xmlconference.org. Archived from the original on 2007-07-11. Retrieved 31 July 2009.
- ^ "Extensible Markup Language (XML) 1.0 (Third Edition)". W3.org. Retrieved 22 August 2010.
- ^ a b "Extensible Markup Language (XML) 1.1 (Second Edition) , Rationale and list of changes for XML 1.1". W3.org. Retrieved 20 January 2012.
- ^ Harold, Elliotte Rusty (2004). Effective XML. Addison-Wesley. pp. 10–19. ISBN 0-321-15040-6.
- ^ "Extensible Markup Language (XML) 1.1 (Second Edition)". W3.org. Retrieved 22 August 2010.
- ^ Bray, Tim (10 February 2002). "Extensible Markup Language, SW (XML-SW)".
- ^ "XML: The Angle Bracket Tax". Codinghorror.com. 11 May 2008. Retrieved 16 November 2017.
- ^ "The Myth of Self-Describing XML" (PDF). Workflow.HealthBase.info. September 2003. Retrieved 16 November 2017.
- ^ "What usable alternatives to XML syntax do you know?". StackOverflow.com. Retrieved 16 November 2017.
추가 정보
- ISO 8879:1986(SGML)의 부록 A
- Lawrence A. Cunningham (2005). "Language, Deals and Standards: The Future of XML Contracts". Washington University Law Review. SSRN 900616.
- Bosak, Jon; Bray, Tim (May 1999). "XML and the Second-Generation Web". Scientific American. 280 (5): 89. Bibcode:1999SciAm.280e..89B. doi:10.1038/scientificamerican0599-89. Archived from the original on 1 October 2009.
- Kelly, Sean (February 6, 2006). "Making Mistakes with XML". Developer.com. Retrieved 26 October 2010.
- St. Laurent, Simon (February 12, 2003). "Five Years Later, XML." O'Reilly XML Blog. O'Reilly Media. Retrieved 26 October 2010.
- "W3C XML is Ten!". World Wide Web Consortium. 12 February 2008. Retrieved 26 October 2010.
- "Introduction to XML" (PDF). Course Slides. Pierre Geneves. October 2012. Archived from the original on 2015-10-16.
{{cite web}}
: CS1 maint: bot: 원래 URL 상태를 알 수 없습니다(링크).
외부 링크

- W3C XML 홈페이지
- XML 1.0 사양
- Rick Jellife가 Wayback Machine에 보관한 2019-11-18 확장 레퍼런스 콘크리트 구문 회고전
- Jon Bosak의 XML, Java 및 웹의 미래(1997)
- http://validator.w3.org/ 공식 [W3C] 마크업 검증 서비스
- W3C의 XML SIG에 관한 XML FAQ (Peter Flynn의 XML SIG)