拡張マークアップ言語( XML ) は、データの保存、送信、および再構築のためのマークアップ言語およびファイル形式です。XML は、人間が読みやすく機械が読みやすい形式でドキュメントをエンコードするための一連のルールを定義します。1998年のWorld Wide Web Consortiumの XML 1.0 仕様[ 2 ] [ 3 ]およびその他のいくつかの関連仕様[ 4 ] (これらはすべて無料のオープン標準です)が XML を定義しています。[ 5 ]
XML の設計目標は、インターネット全体でのシンプルさ、汎用性、使いやすさを重視しています。[ 6 ]これは、さまざまな人間の言語をUnicodeで強力にサポートするテキスト データ フォーマットです。XML の設計はドキュメントに焦点を当てていますが、この言語は、Web サービスで使用されるものなど、任意のデータ構造を表現するために広く使用されています。[ 7 ] [ 8 ]
XMLベースの言語の定義を支援するスキーマシステムはいくつか存在し、プログラマーはXMLデータの処理を支援するために多くのアプリケーションプログラミングインターフェース(API)を開発してきた。
XMLの主な目的はシリアル化、つまり任意のデータの保存、送信、再構築です。2つの異なるシステムが情報を交換するには、ファイル形式について合意する必要があります。XMLはこのプロセスを標準化します。したがって、XMLは情報を表現するための共通語に似ています。[ 9 ]
XMLはマークアップ言語として、情報をラベル付け、分類し、構造的に整理します。[ 10 ] XMLタグはデータ構造を表し、メタデータを含みます。タグの内側にあるのは、XML標準で規定された方法でエンコードされたデータです。[ 10 ]追加のXMLスキーマ(XSD)は、XMLの解釈と検証に必要なメタデータを定義します。(これは正規スキーマとも呼ばれます。)[ 11 ]基本的なXMLルールに準拠したXMLドキュメントは「整形式」であり、スキーマに準拠したドキュメントは「有効」です。[ 11 ]
IETF RFC 7303 (旧RFC 3023に取って代わるもの) は、 XML メッセージで使用するメディア タイプの構築に関するルールを提供します。この規格では、3 つのメディア タイプapplication/xml(text/xmlはエイリアス)、application/xml-external-parsed-entity(text/xml-external-parsed-entityはエイリアス)、が定義されています。これらは、内部の意味application/xml-dtdを公開せずに生の XML ファイルを送信するために使用されます。RFC 7303 ではさらに、XML ベースの言語には、たとえばSVGの場合のように、で終わるメディア タイプを与えることを推奨しています。+xmlimage/svg+xml
ネットワーク環境での XML の使用に関するさらなるガイドラインは、XML ベースの言語の設計と展開の多くの側面を網羅した文書であるRFC 3470 (IETF BCP 70 としても知られる) に記載されています。 [ 8 ]
XMLはインターネット上でのデータ交換に広く使われるようになりました。RSS 、Atom、Office Open XML、OpenDocument、SVG、COLLADA、XHTMLなど、XML構文を使用した数百ものドキュメント形式が開発されています[ 12 ] 。また、XMLはSOAPやXMPPなどの通信プロトコルの基本言語としても使用されています。さらに、非同期JavaScriptとXML(AJAX)プログラミング技術で使用されるメッセージ交換形式の1つでもあります。
Health Level 7、OpenTravel Alliance、FpML、MISMO、National Information Exchange Modelなど、多くの業界データ標準はXMLとXMLスキーマ仕様の豊富な機能に基づいています。出版業界では、Darwin Information Typing ArchitectureがXML業界データ標準です。XMLは、さまざまな出版フォーマットの基盤として広く利用されています。
科学におけるXMLの応用例の一つは、 IWXXM規格に基づいた運用気象情報の表現である。[ 13 ]
このセクションの内容は、XML仕様に基づいています。これはXMLに登場するすべての構成要素を網羅したリストではなく、日常的な使用で最も頻繁に遭遇する主要な構成要素の概要を示すものです。
<文字で終わる>か、文字で始まり&文字で終わります;。マークアップではない文字の文字列はコンテンツです。ただし、CDATAセクションでは、区切り文字<![CDATA[とが]]>マークアップとして分類され、それらの間のテキストがコンテンツとして分類されます。さらに、最上位要素の前後の空白もマークアップとして分類されます。<、で始まりでで終わるマークアップ構造です>。タグには次の3種類があります。<section>;</section>;<line-break />。<greeting>Hello, world!</greeting><line-break /><img src="madonna.jpg" alt="Madonna" />、属性名が「src」と「alt」で、値がそれぞれ「madonna.jpg」と「Madonna」である例があります。別の例として、属性名が「number」で、値が「3」である例があります。XML属性は単一の値しか持つことができず、各属性は各要素に最大で1回しか出現できません。複数の値のリストが必要な一般的な状況では、XML自体が定義する形式を超えた何らかの形式で、リストを整形式XML属性[ i ]にエンコードする必要があります。通常、これはカンマまたはセミコロンで区切られたリスト、または個々の値にスペースが含まれていないことがわかっている場合は、スペースで区切られたリストを使用できます[ ii ]。区切り文字としてスペースを使用した例は次のとおりです。この場合、属性「class」は「inner greeting-box」という値を持つと同時に、「inner」と「greeting-box」という 2 つのCSSクラス名も示しています。<step number="3">Connect A to B.</step><div class="inner greeting-box">Welcome!</div><?xml version="1.0" encoding="UTF-8"?>で始まる場合があります。例としては、 があります。XML文書は、 Unicodeに規定された文字のみで構成されます。ごく少数の制御文字を除き、Unicodeで定義されている文字はすべてXML文書の内容に含めることができます。
XMLには、文書を構成するUnicode文字のエンコーディングを識別する機能や、何らかの理由で直接使用できない文字を表現する機能が含まれています。
XML 1.0 文書では、以下の範囲の Unicode コード ポイントが有効です: [ 14 ]
XML 1.1 では、許可される文字のセットが拡張され、上記のすべてに加えて、U+0001–U+001F の範囲の残りの文字が含まれるようになりました。[ 15 ]ただし、同時に、U+0009 (水平タブ)、U+000A (改行)、U+000D (キャリッジリターン)、U+0085 (次の行) 以外のC0 およびC1制御文字の使用は、エスケープ形式で記述する必要があるため制限されています (たとえば、U+0001は またはそれと同等の形式で記述する必要があります)。C1 文字の場合、この制限は後方互換性がありません。これは、一般的なエンコード エラーを検出できるようにするために導入されました。
コードポイントU+0000(ヌル)は、XML 1.1文書で許可されていない唯一の文字です。
Unicode文字セットは、さまざまな方法でバイトにエンコードして保存または送信することができ、これを「エンコーディング」と呼びます。Unicode自体は、文字レパートリー全体を網羅するエンコーディングを定義しています。よく知られているものには、UTF-8(XML標準ではBOMなしでの使用が推奨されています)とUTF-16があります。[ 16 ] ASCIIやさまざまなISO/IEC 8859など、Unicodeより前に存在したテキストエンコーディングは他にも多数あります。それらの文字レパートリーは、いずれの場合もUnicode文字セットのサブセットです。
XML では、Unicode で定義されているエンコーディングと、文字が Unicode にも含まれるその他のエンコーディングのいずれも使用できます。また、XML プロセッサが事前の知識なしに、どのエンコーディングが使用されているかを確実に判断できるメカニズムも提供されています。[ 17 ] UTF-8 および UTF-16 以外のエンコーディングは、すべての XML パーサーで認識されるとは限りません (場合によっては、標準で認識が義務付けられている UTF-16 でさえ認識されないことがあります)。
XMLには、直接含めると問題のある文字を含めるためのエスケープ機能があります。例:
  АAあらかじめ定義されたエンティティは5つあります。
<「<」を表します。>「>」を表します。&「&」を表します。'「'」を表します。"' " ' を表します。許可されているすべての Unicode 文字は、数値文字参照で表現できます。たとえば、中国語の文字「中」を考えてみましょう。Unicode での数値コードは 16 進数 4E2D、10 進数 20,013 です。キーボードにこの文字を入力する方法がないユーザーでも、XML ドキュメントに または としてエンコードして挿入できます中。中同様に、文字列「I < 3 Jörg」は、XML ドキュメントに含めるために としてエンコードできます。I <3 Jörg
�数値文字参照を使用する場合でも、ヌル文字は XML から除外される制御文字の 1 つであるため、許可されません。 [ 19 ]このような文字を表現するには、 Base64などの代替エンコード メカニズムが必要です。
コメントは、他のマークアップ以外のドキュメント内のどこにでも記述できます。コメントは、XML宣言の前に記述することはできません。コメントは で始まり<!--、 で終わります。SGMLとの互換性のために、コメント内には文字列 "--" (二重ハイフン) は使用できません。[ 20 ]これは、コメントをネストできないことを意味します。アンパサンドはコメント内で特別な意味を持たないため、エンティティ参照や文字参照はそれらとして認識されず、ドキュメントエンコーディングの文字セット外の文字を表す方法はありません。-->
有効なコメントの例: <!--no need to escape <code>& such in comments-->
XML 1.0 (第 5 版) および XML 1.1 では、要素名、属性、コメント、文字データ、および処理命令において、ほぼすべてのUnicode文字を直接使用できます (XML 自体で特別な記号的意味を持つ文字、例えば小なり記号 "<" などは除きます)。以下は、中国語、アルメニア語、およびキリル文字を含む整形式の XML 文書です。
<?xml version="1.0" encoding="UTF-8"?> <俄语ଥথ ւ = "༸ւཥրť " > данные </俄语>XML仕様では、XML文書は整形式テキストであると定義されています。つまり、仕様で規定されている構文規則を満たす文書です。主なポイントは以下のとおりです。
<やなどの特殊構文文字は、&マークアップの区切りとしての役割を果たす場合を除いては表示されません。!"#$%&'()*+,/;<=>?@[\]^`{|}~XML 文書の定義では、整形式規則に違反するテキストは除外されます。それらは単に XML ではないからです。このような違反に遭遇した XML プロセッサは、そのようなエラーを報告し、通常の処理を停止する必要があります。[ 21 ] [ 22 ]この方針は、「厳格なエラー処理」と呼ばれることもあり、深刻なマークアップエラーがあっても妥当な結果を生成するように設計されているHTML を処理するプログラムの動作とは著しく対照的です。 [ 23 ]この分野における XML の方針は、ポステルの法則(「送信するものには保守的、受け入れるものには寛容であれ」)に違反しているとして批判されています。[ 24 ]
XML仕様では、有効なXML文書は、文書型定義(DTD)の規則にも準拠した整形式のXML文書であると定義されています。 [ 25 ]
XML文書は、形式が整っていることに加えて、有効である必要もあります。有効であるとは、文書型定義(DTD)への参照を含み、その要素と属性がそのDTDで宣言され、DTDで規定されている文法規則に従っていることを意味します。
XMLプロセッサは、 XMLドキュメントの有効性をチェックするかどうかに応じて、検証型または非検証型に分類されます。 [ 26 ]有効性エラーを発見したプロセッサは、それを報告できなければなりませんが、通常の処理を継続することができます。
A DTD is an example of a 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.
The oldest schema language for XML is the document type definition (DTD), inherited from SGML.
DTDs have the following benefits:
DTDs have the following limitations:
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 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.
A newer schema language, described by the W3C as the successor of DTDs, is XML Schema, often referred to by the initialism for XML Schema instances, XSD (XML Schema Definition). XSDs are far more powerful than DTDs in describing XML languages. They use a rich datatyping system and allow for more detailed constraints on an XML document's logical structure. XSDs also use an XML-based format, which makes it possible to use ordinary XML tools to help process them.
xs:schema element that defines a schema:
<?xml version="1.0" encoding="UTF-8" ?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"></xs:schema>RELAX NG (Regular Language for XML Next Generation) was initially specified by OASIS and is now a standard (Part 2: Regular-grammar-based validation of ISO/IEC 19757 – DSDL). RELAX NG schemas may be written in either an XML based syntax or a more compact non-XML syntax; the two syntaxes are isomorphic and James Clark's conversion tool—Trang—can convert between them without loss of information. RELAX NG has a simpler definition and validation framework than XML Schema, making it easier to use and implement. It also has the ability to use datatype framework plug-ins; a RELAX NG schema author, for example, can require values in an XML document to conform to definitions in XML Schema Datatypes.
Schematron is a language for making assertions about the presence or absence of patterns in an XML document. It typically uses XPath expressions. Schematron is now a standard (Part 3: Rule-based validation of ISO/IEC 19757 – DSDL).
DSDL (Document Schema Definition Languages) is a multi-part ISO/IEC standard (ISO/IEC 19757) that brings together a comprehensive set of small schema languages, each targeted at specific problems. DSDL includes RELAX NG full and compact syntax, Schematron assertion language, and languages for defining datatypes, character repertoire constraints, renaming and entity expansion, and namespace-based routing of document fragments to different validators. DSDL schema languages do not have the vendor support of XML Schemas yet, and are to some extent a grassroots reaction of industrial publishers to the lack of utility of XML Schemas for publishing.
Some schema languages not only describe the structure of a particular XML format but also offer limited facilities to influence processing of individual XML files that conform to this format. DTDs and XSDs both have this ability; they can for instance provide the infoset augmentation facility and attribute defaults. RELAX NG and Schematron intentionally do not provide these.
A cluster of specifications closely related to XML have been developed, starting soon after the initial publication of XML 1.0. It is frequently the case that the term "XML" is used to refer to XML together with one or more of these other technologies that have come to be seen as part of the XML core.
xml:base attribute, which may be used to set the base for resolution of relative URI references within the scope of a single XML element.「XMLコア」の一部として考案された他の仕様の中には、 XInclude、XLink、XPointerなど、広く採用されなかったものもある。
XML の設計目標には、「XML 文書を処理するプログラムを簡単に作成できるようにする」というものがあります。[ 6 ]それにもかかわらず、XML 仕様には、プログラマがそのような処理を実行する方法についての情報はほとんどありません。XML Infoset仕様は、XML 文書内の構造を参照するための語彙を提供しますが、この情報にアクセスする方法についてのガイダンスは提供しません。XML にアクセスするためのさまざまなAPI が開発され、使用されており、その一部は標準化されています。
XML処理のための既存のAPIは、概ね以下のカテゴリに分類されます。
ストリーム指向の機能はメモリ使用量が少なく、XMLドキュメントを線形に走査する特定のタスクにおいては、他の方法よりも高速かつシンプルです。ツリー走査やデータバインディングAPIは通常、より多くのメモリを必要としますが、プログラマにとっては使いやすい場合が多く、XPath式を用いてドキュメントコンポーネントを宣言的に取得できるものもあります。
XSLTはXML文書の変換を宣言的に記述するために設計されており、サーバーサイドパッケージとWebブラウザの両方で広く実装されています。XQueryは機能的にXSLTと重複する部分がありますが、大規模なXMLデータベースの検索をより目的として設計されています。
Simple API for XML (SAX) は、レキシカルなイベント駆動型API であり、ドキュメントを順次読み込み、その内容をユーザーが設計したハンドラーオブジェクトの各種メソッドへのコールバックとして返します。SAXは実装が高速かつ効率的ですが、ドキュメントのどの部分が処理されているかをアプリケーション開発者が常に把握する必要があるため、XML からランダムに情報を抽出する用途には適していません。SAX は、ドキュメント内のどこに出現しても、特定の種類の情報が常に同じ方法で処理されるような状況に最適です。
プル解析では、ドキュメントをイテレータ設計パターンを使用して順番に読み取られる一連の項目として扱います。これにより、解析を実行するコードの構造が解析対象の XML の構造を反映した再帰下降パーサーを記述でき、解析を実行する関数内で中間解析結果をローカル変数として使用およびアクセスしたり、下位レベルの関数に (関数パラメータとして) 渡したり、上位レベルの関数に (関数の戻り値として) 返したりできます。[ 27 ]プルパーサーの例としてはData::Edit::Xml、Perlの、Javaプログラミング言語のStAX 、 Smalltalkの XMLPullParser、 PHPの XMLReader 、Pythonの、 Redの SmartXML 、.NET Frameworkの、DOM トラバーサル API (および) などがあります。ElementTree.iterparseSystem.Xml.XmlReaderNodeIteratorTreeWalker
プルパーサーは、XML ドキュメント内のさまざまな要素、属性、およびデータを順次走査するイテレータを作成します。このイテレータを使用するコードは、現在の項目をテストし(たとえば、開始タグか終了タグか、またはテキストかを判断するため)、その属性(ローカル名、名前空間、XML 属性の値、テキストの値など)を検査し、イテレータを次の項目に移動することもできます。このように、コードはドキュメントを走査しながら情報を抽出できます。再帰下降アプローチは、解析を行うコード内でデータを型付きローカル変数として保持するのに適していますが、たとえば SAX では、解析対象要素の親要素である要素のスタック内に中間データを手動で保持する必要があります。プル解析コードは、SAX 解析コードよりも理解しやすく、保守しやすい場合があります。
ドキュメントオブジェクトモデル(DOM)は、ドキュメントの内容を表すノードオブジェクトのツリーとしてドキュメント全体をナビゲートできるインターフェースです。DOMドキュメントはパーサーによって作成することも、ユーザーが手動で生成することもできます(ただし制限があります)。DOMノードのデータ型は抽象型であり、実装はそれぞれ独自のプログラミング言語固有のバインディングを提供します。DOMの実装は、一般的にドキュメント全体をメモリにロードしてオブジェクトのツリーとして構築してからアクセスする必要があるため、メモリを大量に消費する傾向があります。
XML データ バインディングは、XML ドキュメントを扱う必要のあるアプリケーションの開発を簡素化する手法です。これは、DOM パーサーによって作成される汎用オブジェクトを使用するのではなく、XML ドキュメントを厳密に型付けされたオブジェクトの階層にマッピングします。結果として得られるコードは、多くの場合、読みやすく保守しやすく、実行時ではなくコンパイル時に問題を特定するのに役立ちます。XML データ バインディングは、アプリケーションの作成時にドキュメント構造が既知で固定されているアプリケーションに特に適しています。XML データの厳密に型付けされた表現を作成することで、開発者は、オートコンプリート、コード リファクタリング、コード ハイライトなどの機能を提供する最新の統合開発環境 (IDE) を活用できます。これにより、正しく効率的なコードを簡単に記述でき、エラーやバグのリスクを軽減できます。データ バインディング システムの例としては、Java Architecture for XML Binding (JAXB)、. NET Frameworkの XML シリアル化[ 28 ]、gSOAPの XML シリアル化などがあります。
XML は他の言語で第一級データ型として登場しています。ECMAScript / JavaScript 言語のECMAScript for XML (E4X) 拡張機能は、JavaScript 用に 2 つの特定のオブジェクト (XML と XMLList) を明示的に定義しており、これらは XML ドキュメント ノードと XML ノード リストを別々のオブジェクトとしてサポートし、ドット表記を使用して親子関係を指定します。[ 29 ] E4X はMozilla 2.5 以降のブラウザ (現在は非推奨) と Adobe Actionscriptでサポートされていますが、広く採用されていません。同様の表記は、Microsoft .NET 3.5 以降のMicrosoft のLINQ実装とScala (Java VM を使用) で使用されています。XML 操作のための特別な機能を備えた Linux ライクなシェルを提供するオープンソースの xmlsh アプリケーションも同様に <[ ]> 表記を使用して XML をデータ型として扱います。[ 30 ]リソース記述フレームワークは、ラップされた正規の XMLを保持するデータ型を定義しています。[ 31 ] Facebookは、E4Xと同様の方法でコア構文にXMLを追加するPHPおよびJavaScript言語の拡張機能、すなわちそれぞれXHPおよびJSXを作成しました。rdf:XMLLiteral
XMLはSGML(ISO 8879)のアプリケーションプロファイルです。 [ 32 ]
SGML の動的な情報表示における汎用性は、インターネットの台頭以前の 1980 年代後半に、初期のデジタル メディア出版社によって理解されていました。[ 22 ] [ 33 ] 1990 年代半ばまでに、SGML の実践者の中には、当時新しかったワールド ワイド ウェブで経験を積んだ人もおり、SGML はウェブが成長するにつれて直面するであろういくつかの問題に対する解決策を提供すると考えていました。ダン コノリーは1995 年にスタッフに加わったときに、SGML を W3C の活動リストに追加しました。作業は 1996 年半ばに、サン マイクロシステムズのエンジニアであるジョン ボサックが憲章を作成し、協力者を募集したときに始まりました。ボサックは、SGML とウェブの両方の経験を持つ人々の小さなコミュニティで人脈が広くありました。[ 34 ]
XML was compiled by a working group of eleven members,[35] supported by a (roughly) 150-member Interest Group. Technical debate took place on the Interest Group mailing list and issues were resolved by consensus or, when that failed, majority vote of the Working Group. A record of design decisions and their rationales was compiled by Michael Sperberg-McQueen on December 4, 1997.[36]James Clark served as Technical Lead of the Working Group, notably contributing the empty-element <empty /> syntax and the name "XML". Other names that had been put forward for consideration included "MAGMA" (Minimal Architecture for Generalized Markup Applications), "SLIM" (Structured Language for Internet Markup) and "MGML" (Minimal Generalized Markup Language).[37] The co-editors of the specification were originally Tim Bray and Michael Sperberg-McQueen. Halfway through the project, Bray accepted a consulting engagement with Netscape, provoking vociferous protests from Microsoft. Bray was temporarily asked to resign the editorship. This led to intense dispute in the Working Group, eventually solved by the appointment of Microsoft's Jean Paoli as a third co-editor.[38]
The XML Working Group communicated primarily through email and weekly teleconferences. The major design decisions were reached in a short burst of intense work between August and November 1996,[39] when the first Working Draft of an XML specification was published.[40] Further design work continued through 1997, and XML 1.0 became a W3C Recommendation on February 10, 1998.
XML is a profile of an ISO standard, SGML, and most of XML comes from SGML unchanged. From SGML comes the separation of logical and physical structures (elements and entities), the availability of grammar-based validation (DTDs), the separation of data and metadata (elements and attributes), mixed content, the separation of processing from representation (processing instructions), and the default angle-bracket syntax. The SGML declaration was removed; thus, XML has a fixed delimiter set and adopts Unicode as the document character set.
Other sources of technology for XML were the TEI (Text Encoding Initiative), which defined a profile of SGML for use as a "transfer syntax" and HTML. The ERCS (Extended Reference Concrete Syntax) project of the SPREAD (Standardization Project Regarding East Asian Documents) project of the ISO-related China/Japan/Korea Document Processing expert group was the basis of XML 1.0's naming rules; SPREAD also introduced hexadecimal numeric character references and the concept of references to make available all Unicode characters. To support ERCS, XML and HTML better, the SGML standard IS 8879 was revised in 1996 and 1998 with WebSGML Adaptations.
Ideas that developed during discussion that are novel in XML included the algorithm for encoding detection and the encoding header, the processing instruction target, the xml:space attribute, and the new close delimiter for empty-element tags. The notion of well-formedness as opposed to validity (which enables parsing without a schema) was first formalized in XML, although it had been implemented successfully in the Electronic Book Technology "Dynatext" software;[41] the software from the University of Waterloo New Oxford English Dictionary Project; the RISP LISP SGML text processor at Uniscope, Tokyo; the US Army Missile Command IADS hypertext system; Mentor Graphics Context; Interleaf and Xerox Publishing System.
The first (XML 1.0) was initially defined in 1998. It has undergone minor revisions since then, without being given a new version number, and is currently in its fifth edition, as published on November 26, 2008. It is widely implemented and still recommended for general use.
The second (XML 1.1) was initially published on February 4, 2004, the same day as XML 1.0 Third Edition,[42] and is currently in its second edition, as published on August 16, 2006. It contains features (some contentious) that are intended to make XML easier to use in certain cases.[43] The main changes are to enable the use of line-ending characters used on EBCDIC platforms, and the use of scripts and characters absent from Unicode 3.2. XML 1.1 is not very widely implemented and is recommended for use only by those who need its particular features.[44]
XML 1.0 は、第 5 版のリリース以前は、要素名、属性名、および一意の識別子に使用できる文字の要件が XML 1.1 より厳格であった点で XML 1.0 と異なっていました。XML 1.0 の最初の 4 版では、文字はUnicode標準の特定のバージョン (Unicode 2.0 から Unicode 3.2) を使用してのみ列挙されていました。第 5 版では、より将来性があり冗長性を削減する XML 1.1 のメカニズムが採用されています。XML 1.0 の第 5 版および XML 1.1 のすべての版で採用されているアプローチは、特定の文字のみが名前で禁止され、それ以外のすべては将来の Unicode バージョンで適切な名前文字に対応できるように許可されるというものです。第 5 版では、XML 名には、 Unicode 3.2 以降に Unicode に追加されたバリ文字、チャム文字、フェニキア文字など、多くの文字を含めることができます。[ 43 ]
XML 1.0/1.1 文書の文字データと属性値では、対応する文字が現在の Unicode バージョンで定義されていなくても、ほぼすべての Unicode コード ポイントを使用できます。文字データと属性値では、XML 1.1 は XML 1.0 よりも多くの制御文字の使用を許可していますが、「堅牢性」のために、XML 1.1 で導入されたほとんどの制御文字は数値文字参照として表現する必要があります (XML 1.0 で許可されていた #x7F から #x9F は、XML 1.1 では数値文字参照として表現することが必須となっています[ 43 ] )。XML 1.1 でサポートされている制御文字の中には、空白文字として扱う必要がある 2 つの改行コードがあり、これらは直接書き込むことができる唯一の制御コードです。
XML 2.0 については議論されているが、そのようなプロジェクトに取り組む計画を発表した組織はない。XMLのオリジナル開発者の 1 人が書いたXML-SW (SW はskunkworksの略) [ 45 ]には、構文から DTD を排除することや、 XML 名前空間、XML ベース、XML 情報セットを基本標準に統合することなど、XML 2.0 がどのようなものになるかについての提案がいくつか含まれている。
In 2012, James Clark (technical lead of the XML Working Group) and John Cowan (editor of the XML 1.1 specification) formed the MicroXML Community Group within the W3C and published MicroXML, a specification for a significantly reduced subset of XML.[46] MicroXML provides a much simpler core syntax by stripping away many features of full XML, such as document type declarations and CDATA sections,[21] while ensuring XML namespace validity by disallowing names conflicting with namespace prefixing.
Due to the verbosity of textual XML, various binary formats have been proposed as compact representations for XML: Fast Infoset, based on ASN.1, was published as an international standard by the ITU-T in 2005, and later by ISO. Efficient XML Interchange (EXI), a binary XML format originally developed by AgileDelta, was adopted as a W3C recommendation in 2011, with a second edition published in 2014.
XML and its extensions have regularly been criticized for verbosity, complexity and redundancy.[47]
Mapping the basic tree model of XML to type systems of programming languages or databases can be difficult, especially when XML is used for exchanging highly structured data between applications, which was not its primary design goal. However, XML data binding systems allow applications to access XML data directly from objects representing a data structure of the data in the programming language used, which ensures type safety, rather than using the DOM or SAX to retrieve data from a direct representation of the XML itself. This is accomplished by automatically creating a mapping between elements of the XML schema XSD of the document and members of a class to be represented in memory.
Other criticisms attempt to refute the claim that XML is a self-describing language[48] (though the XML specification itself makes no such claim).
JSON、YAML、S式は、構造化データと比較的非構造化されたコンテンツの両方を含む可能性のあるドキュメントではなく、構造化データの表現に焦点を当てた、よりシンプルな代替手段としてよく提案されています(データシリアル化フォーマットの比較を参照)[ 49 ] 。しかし、W3C標準化されたXMLスキーマ仕様は、よりシンプルなシリアル化フォーマットと比較して、より幅広い構造化XSDデータ型を提供し、XML名前空間を通じてモジュール性と再利用性を提供します。
{{cite journal}}: CS1メンテナンス: DOIは2025年7月現在非アクティブです(リンク){{cite journal}}: CS1 maint: DOI inactive as of July 2025 (link)