
| | |
| 拡張子 Extension | .xml |
|---|---|
| MIME Type MIME Type | application/xml |
| UTI UTI | public.xml public.xml |
| 開発者 Developers | World Wide Web Consortium (W3C) World Wide Web Consortium (W3C) |
| 種別 Article | マークアップ言語 Markup language |
| 派生元 Derived | Standard Generalized Markup Language (SGML) Standard Generalized Markup Language (SGML) |
| 拡張 Extended | XHTML 、 DocBook 、 RSS 、 ebXML 、 ... XHTML, DocBook, RSS, ebXML, ... |
| 国際標準 International standard | 1.0 (Fifth Edition) 1.1 (Second Edition) 1.0 (Fifth Edition) 1.1 (Second Edition) |
XML ( Extensible Markup Language 、 拡張可能なマーク付け言語 ) は、個別の目的に応じたマークアップ言語群を創るために汎用的に使うことができる仕様である。 XML (Extensible Markup Language, Extensible Markup Language) is a specification that can be used in a generic markup language for creating a group according to individual purposes. [1] 。 [1]. World Wide Web Consortium (W3C) により勧告 (策定) されている国際標準の構造化文書の技術である。 World Wide Web Consortium (W3C) recommendation by the (developed) technology for structured documents that are of international standards. 1998年 2月に XML 1.0 が勧告された。 1998 February the XML 1.0 was recommended. 2009年3月現在、1.0と1.1の二つのバージョンが勧告されている( #バージョン )。 2009 of March, 1.0 and 1.1 are two versions of the recommendations (# version). XMLは現在、広く普及している技術である。 XML is now a widely used technique.
XMLは、個別の目的に応じたマークアップ言語群を創るために汎用的に使うことができる仕様である。 XML is a specification that can be used in a generic markup language for creating a group according to individual purposes. マークアップ言語とは、 コンピュータ言語の一種で、 文章の論理的な構造(段落など)や見栄え(フォントサイズなど)に関する指定を、文章とともにテキストファイルに記述するための言語である。 Markup language, a kind of language in the computer, and structure of a logical sentence (like paragraphs) and appearance (eg font size) the designation of, a language for describing the text with the text. XMLは、拡張可能な言語の一つに分類されるが、その理由は、XMLを使うことで、使用者は自分たち自身で複数のタグを定義することができるからである。 XML, which is classified as one of the extensible language, reason, XML can use, because the user will be able to define their own multiple tags. XMLの文脈におけるタグとは、文書の断片に意味を付加するための印である。 In the context of XML tags and is a sign for pieces to add meaning to the document.
XMLの最も重要な目的は、異なる情報システムの間で、特にインターネットを介して、構造化された文書や構造化されたデータの共有を、容易にすることである[2] 。 XML is the most important purposes, between a system different information, via the Internet, particularly the sharing of structured data and structured documents, which make it easier [2]. XMLを使うと、文書を構造化して記述することもできるし、 コンピュータのデータを直列化 (シリアライズ) することもできる。 With XML, you can also write to structure the document, serialize the data of the computer (serialization) can be. データを直列化する用途でXMLを使う際には、XMLは、 JavaScript Object Notation (JSON) やYAMLなどの、 テキストを基にした他の直列化言語と比較衡量することができる[3] 。 Applications that require serialization when using the XML data, XML is, JavaScript Object Notation (JSON) and YAML, such as can be serialized衡量compared to other languages based on the text [3].
XMLで文書の論理的構造を規定する制約を追加することによって、XMLを適用したマークアップ言語を実装することができる。 XML by adding a constraint that defines the logical structure of the document, XML languages can be implemented up mark is applied. XMLを適用したマークアップ言語は非常に多く存在している ( #XMLの応用の節を参照) 。 XML is a markup language that applies to so many already exist (# XML see the section of the application). 例えば、 Extensible HyperText Markup Language (XHTML) [4] 、 DocBook 、 RSS 、 Mathematical Markup Language (MathML) 、 ebXML 、 Scalable Vector Graphics (SVG) 、 MusicXMLなどがある。 For example, Extensible Hypertext Markup Language (XHTML) [4], DocBook, RSS, Mathematical Markup Language (MathML), ebXML, Scalable Vector Graphics (SVG), MusicXML, among others. さらにXMLを、このような適用マークアップ言語のための仕様記述言語すなわちスキーマ言語として、使うことができる。 Moreover XML, a schema language that is language specification language for markup of such application can be used. XMLで記述するスキーマ言語としては、 RELAX NG 、 W3C XML Schemaなどがある。 Written in XML schema language, RELAX NG, W3C XML Schema, among others.
XMLは、同じく汎用的に使うことができるマークアップ言語であるStandard Generalized Markup Language (SGML) の、簡素化されたサブセットとして、人間にとっても比較的判読しやすいように、設計された ( #歴史を参照)。 XML is a markup language that can be used in the same general Standard Generalized Markup Language (SGML), as a simplified subset, as a relatively readable for humans, was designed (# history reference). XMLの仕様は、XMLワーキンググループなどにより設計が行われ、 World Wide Web Consortium (W3C) により勧告 (策定) されている。 XML specification, XML has been designed by working groups such as, World Wide Web Consortium (W3C) recommendation by the (development) is. XMLは無償で使うことができるオープン標準の技術である。 XML is a technology standard that can be opened to use for free. XML仕様のW3C勧告ではXMLの文法とXMLプロセサ (XMLパーサ、XML文書の構文解析器 ) のための要件を定めている。 Recommendation is a W3C specification for XML syntax of XML processor and XML (XML parser, XML parser syntax of the document) which sets the requirements for. 1998年 2月に XML 1.0 が勧告され、2004年2月に XML 1.1 が勧告された( #バージョン参照)。 1998 February are recommended XML 1.0, XML 1.1 in January 2004 that the recommendation (see # version).
XML文書の正当性の水準には、整形式XML文書と妥当なXML文書の、2つの水準がある ( #整形式XML文書と妥当なXML文書を参照) 。 Level of validity of the XML document is well-formed XML documents and valid XML documents, there are two levels of one (# expression well-formed XML documents and valid XML document reference). XML文書のマークアップ規則に従って記述されていることだけが問題とされる文脈で、スキーマ言語を使わずに、XML文書のマークアップ規則に従って記述された文書を、「整形式XML文書」 (well-formed XML document) という ( #XMLの構文と整形式XML文書を参照) 。 XML is an issue only in the context that is described in the document markup according to the rules, without a schema language, XML documents written in markup documents according to the rules, "well-formed XML document" (well - formed XML document) that (# see XML syntax and a well-formed XML document). さらに、XML文書をより厳密に構造化した文書やデータとして扱いたい場合は、XML文書の構造をスキーマ言語によって定義することができ、XMLプロセサでそのXML文書(XMLインスタンス)に対してその文書構造に従っていることを検証する(妥当性検証を行う)というように、XML技術を使うこともできる ( #XML文書の論理的構造と妥当なXML文書を参照) 。 In addition, XML documents and data when treated as a more strictly structured documents, XML can be defined by the structure of the document schema language, XML processor that the XML document (XML instance) that the structure of the document To verify that according to (do validation) and so on, XML technology can also be used (# logical structure of XML documents and valid XML document reference). XML文書に対して妥当性検証を行うことにより、従来アプリケーションソフトウェアで行ってきた、XML文書の構造の検査や、XML文書に含まれるデータに対するデータ型のチェックや値の範囲のチェックが、可能となる。 By performing XML validation against the document, the software has been in previous applications, XML documents and inspection of the structure, XML-value range checking and type checking of data against data contained in the document, and can is. スキーマ言語としてはDocument Type Definition (DTD、文書型定義) 、 W3C XML Schema 、 RELAX NG ( 文書スキーマ定義言語 : DSDL)などがある。 Schema language Document Type Definition (DTD, Document Type Definition), W3C XML Schema, RELAX NG (language: Document Schema Definition: DSDL), among others. XML文書の構造がスキーマ言語によって定義され、XML文書の妥当性を検証するソフトウェアによって妥当性が検証されたXML文書のことを「妥当なXML文書」 (valid XML document) という。 Defined by the XML schema language of the document structure, XML is validated by the software to verify the validity of the XML document that the document "valid XML document" (valid XML document) that. 整形式XML文書は、妥当なXML文書である場合と、妥当なXML文書ではない場合とがある。 Well-formed XML document is valid XML document, and if it is valid XML document, and if you do not have. スキーマ言語を採用して妥当性検証を行う方法でXMLを使うこともできるし、スキーマ言語を採用せず妥当性検証を行わないで手軽にXMLを使うこともできる。 Method adopted to validate the XML schema language can also be used, not to quick on the adopted without validation can also use the XML schema language.
XML勧告では、XMLプロセサがサポートすべき文字符号化方式 ( 文字コード )としてUTF-8とUTF-16 ( Unicode )を定めているため、英語以外の言語も扱いやすくなっている ( #多言語環境で使うを参照) 。 XML Recommendation, XML character encoding to be supported by the processor (character code) as UTF-8 and UTF-16 (Unicode) for a fixed, that is also easy to handle languages other than English (# multilingual environment more use). また、UTF-8とUTF-16以外の文字コード( UCS-4 、 EUC-JP 、 Shift JIS 、 EBCDICなど)を用いることも可能である[5] 。 In addition, UTF-8 and UTF-16 character codes other than (UCS-4, EUC-JP, Shift JIS, EBCDIC, etc.) can also be used to [5].
XMLだけでは最低限の書式しか決められていないため、XMLの力を引き出す各種の関連技術が別途標準化されている ( #XMLの拡張および#XML文書をプログラムで処理する 、 #XML文書を視覚的に表示する 、 #XMLインフォメーションセットを参照) 。 XML just has not been determined because only minimal formatting, XML has been standardized for various technologies separate power draw (# XML extension and the # XML to the document processing program, # XML documents visually To view, see the XML set # info). 現在も多くの関連技術の標準化作業が行われている。 Standardization work has been done many related technologies today. 例えば、 プログラムからXML文書を処理する方法として、 Document Object Model (DOM) やSimple API for XML (SAX) などのアプリケーションプログラミングインタフェース (API) が標準化されている[6] 。 For example, the XML program as a way to process the document, Document Object Model (DOM) and Simple API for XML (SAX) and application programming interface (API) has been standardized [6]. また、XML文書のスタイルを指定する技術( スタイルシート )としてExtensible Stylesheet Language (XSL) やCascading Style Sheets (CSS) などがある。 Additionally, XML to specify the style of technical documents (sheet style) as the Extensible Stylesheet Language (XSL) and Cascading Style Sheets (CSS), among others.
XMLは現在、広く普及している技術であるが、その技術的な有用性などについて、肯定的に評価する人々が多い一方で、批判的に評価する人々も多い ( #XMLに対する支持と批判を参照) 。 XML is currently the technology is widely used for technical and usability that people evaluate positively the other hand many people who critically evaluate our many (# XML support and criticism for reference).
XML文書の正当性の水準には、整形式XML文書と妥当なXML文書の、2つの水準がある。 Level of validity of the XML document is well-formed XML documents and valid XML documents, there are two level one. なおXML文書に対して、整形式XML文書としての検査のみを行うXMLプロセサを非検証XMLプロセサといい、整形式XML文書としての検査に加えて妥当なXML文書としての検査を行うXMLプロセサを検証XMLプロセサという。 The XML document for well-formed XML documents to inspection only as a non-validating XML processors and XML processors do, well-formed XML and valid XML document as an addition to the tests to validate the XML document as an inspection processor called XML processors.
整形式XML文書が満たすべき構文の規則を説明する。 Explain the well-formed XML document must satisfy the rules of syntax.
整形式XML文書としての条件が満たされることのみを考慮する場合 (スキーマ言語を使わずに手軽にXMLを使う場合) においても、XMLは、大量の文書やもしくは木構造として表現することができるデータを格納するための、一般的な枠組みとしての役割を果たすことができる。 Well-formed XML can be considered only if conditions are met as a document (without using easily when using the XML schema language) in, XML, data can be represented as a tree or a large number of documents and to store, can play a role as a general framework.
XML文書は、 要素 (element) と属性 (attribute) が複数集まって、構成されている。 XML document element (element) and attributes (attribute) is more than one gathering has been configured. 要素は内部に子要素を含むことができる。 Element can contain child elements inside. 属性は要素に付随し、属性の内部に子要素を含むことはできない。 Attribute is associated with an element can contain child elements inside the attribute is not. 要素は開始タグと終了タグで内容を挟むことで表現する。 Element is represented by pinching the contents of a start tag and end tag. 開始タグは「<要素名>」、終了タグは「</要素名>」で記述する。 Start tag "" element name "," end tag "" / element name "," to describe.
一つの要素を記述するための基本的な構文を次に示す。 Following basic syntax used to describe one element.
<要素名 属性= "値" >内容</要素名> "Attribute of the element name =" value "" content "/ element name"
ここで、<要素名 属性="値"> をこの要素の開始タグといい、</要素名> を終了タグという。 Here, "attribute element name =" value "" I and the start tag of this element, "/ element name" tags that close. 「内容」は何らかのテキストである。 "Content" is some text.
次に示す例は整形式XML文書である。 The following example is well-formed XML document.
<書籍 出版日= "2007-10-31" >これは書籍です.... </書籍> "Published book =" 2007-10-31 "" This is a book .... "/ book"
この例は、書籍という要素を一つもつXML文書である。 Example, books with an element of an XML document. <書籍>が書籍要素の開始タグであり、</書籍> が書籍要素の終了タグである。 <書籍> is a book element start tag, "/ book" is a book element's closing tag. 「出版日="2007-10-31"」は書籍要素の属性である。 "Published =" 2007-10-31 "" attribute of the element is a book. この属性の名前 (属性名) は「出版日」であり、この属性の値 (属性値) は "2007-10-31" である。 The name of this attribute (attribute name) is "Published" and the value of this attribute (attribute values) is "2007-10-31" is. 「これは書籍です.... 」は、書籍要素の内容である。 "This is a book ...." is the element content of the book.
要素の内容を構成するテキストはまた、さらに任意の数の要素を含むことができる (なお、このように一つの要素内に文字列データと子要素が混在するものを、「混合内容」と呼ぶ[7] ) 。 To configure the contents of a text element also can contain any number of additional elements (note that the data and child elements are mixed in a single element of a string like this, "mixed content" and called [7]). すなわち、一般的なXML文書は木構造をなす。 In other words, a typical XML documents form a tree. この点において、XMLはプログラミング言語 LISPのS式と似ている。 In this regard, XML is language programming LISP's S are similar to the expression. S式でも木構造を記述する。 S that describes the structure of expression trees. S式の木構造のおのおのの節は、自分自身のプロパティリストをもつことができる。 S section of each of the expression tree, can have its own property list.
要素は内部に別の要素を含むことができる。 Element can contain other elements inside. 構造化したXML文書の例を示す。 An example of structured XML documents.
<レシピ 名前= "パン" 準備時間= "5分" 調理時間= "3時間" > "Name Recipes =" pan "preparation time =" 5 minute "cooking time =" 3 hours "" <料理>基本的なパン</料理> "Food" basic bread "/ food" <材料 量= '3' 単位= 'カップ' >小麦粉</材料> "Volume of material = '3 'unit =' cup '" flour "/ material" <材料 量= '0.25' 単位= 'オンス' >イースト</材料> "Volume of material = '0 .25 'Unit =' oz '" East "/ material" <材料 量= '1.5' 単位= 'カップ' 状態= "温かい" >水</材料> "Volume of material = '1 .5 'Unit =' cup 'status =" Warm, "" Wed "/ material" <材料 量= "1" 単位= "ティースプーン" >食塩</材料> "Volume of material =" 1 "unit =" teaspoon "" salt "/ material" <要領> "Guidelines" <手順>全ての材料を一緒にして混ぜます。 "Steps" to mix all ingredients together. </手順> "/ Procedure" <手順>十分にこねます。 "Steps" Konemasu enough. </手順> "/ Procedure" <手順>布で覆い、暖かい部屋で1時間そのままにしておきます。 "Steps" covered with a cloth, then leave in a warm room just one hour. </手順> "/ Procedure" <手順>もう一度こねます。 "Steps" Konemasu again. </手順> "/ Procedure" <手順>パン焼きの容器に入れます</手順> "Step" is put in a container of baking "/ Procedure" <手順>布で覆い、暖かい部屋で1時間そのままにしておきます。 "Steps" covered with a cloth, then leave in a warm room just one hour. </手順> "/ Procedure" <手順>オーブンに入れて温度を180℃にして30分間焼きます。 "Steps" in the oven temperature to 180 ℃ and baked 30 minutes. </手順> "/ Procedure" </要領> "/ Procedures" </レシピ> "/ Recipe"
要素の属性の値は、必ずシングルクォート (') かダブルクォート (") で括らなければならない。 そして要素内にある属性は、互いに属性名が異なっていなければならない。 XML文書では要素は正しく入れ子になっていなければならない。 要素はけっしてオーバーラップしていてはならない。 Value of the attribute of an element is always single quotes ( ') or double quotes ( ") must be enclosed with. Attribute in the element and must attribute names are different from each other. XML document are properly nested elements must be imperial. element they should never overlap.
例えば、次の文書は整形式XML文書ではない。 For example, the following documents are not well-formed XML document. なぜなら書名要素と著者要素がオーバーラップしているからである。 That 書名 which 著者 elements overlap because the title and author elements.
<!-- 正しくありません! 整形式XML文書ではありません! --> "! - Wrong! Is not well-formed XML document! -" <書籍目録> <書名> XML入門<著者>筒井<書名>続・XML入門<著者>小松</書名> </著者> </書名> </著者> </書籍目録> "Book catalog" "title> XML Primer" author "Tsutsui" title "To Be Continued Introduction to XML" author "Komatsu" / title "" / Author "" / title "" / Author "" / book catalog "
次の2つの文書は整形式XML文書である。 The following two documents are well-formed XML document.
<!-- 正しい整形式XML文書です --> "! - Right-formed XML document -" <書籍目録> <書名> XML入門</書名> <著者>筒井</著者> <書名>続・XML入門</書名> <著者>小松</著者> </書籍目録> "Book catalog" "title> XML Primer" / title "" author "Tsutsui" / author "" title "Introduction to XML Continued" / title "" author "Komatsu" / Author "" / book catalog "
<!-- もう一つの正しい整形式XML文書です --> "! - Another well-formed XML document right -" <書籍目録> <書名> XML入門</書名> <著者>筒井<書名>続・XML入門<著者>小松</著者> </書名> </著者> </書籍目録> "Book catalog" "title> XML Primer" / title "" author "Tsutsui" title "To Be Continued Introduction to XML" author "Komatsu" / Author "" / title "" / Author "" / book catalog "
整形式XML文書においては、XML文書は正確に一つのルート要素 ( 文書要素 ; document element とも呼ばれる) をもたなければならない。 In well-formed XML documents, XML documents is exactly one root element (document element; document element is also called) must have a. ルート要素とは、XML文書の要素の階層構造において最上位の要素のことをいう。 The root element, XML element means that the top hierarchy of elements in the document. 最上位の要素は一つでなければならない。 Top-level element must be one. 最上位の要素が複数ある文書は、整形式XML文書ではない。 There are several top-level document element is not well-formed XML document. 整形式XML文書が一つのルート要素をもたなければならないという条件が意味することは、整形式XML文書のテキストは、ルート要素の開始タグと対応する終了タグの間に、収められなければならないということである。 Well-formed XML means that the condition that one must have a root element of the document is well-formed XML document text, and between start tag and end tag corresponding to the root element must be contained is that. ルート要素の開始タグと終了タグの間に収められたテキストは、任意の数の要素や文字列データを含むことができる。 Kept in the text between the start and end tags of the root element, the data can contain any number of elements and strings.
ルート要素の前に、必要に応じて、 XML宣言 (XML declaration) をおくことができる。 Before the root element, if necessary, XML declaration (XML declaration) can be appointed. このXML宣言は、XMLのどのバージョンが使われているか (現時点ではバージョン1.0であることが多い) などを示す。 The XML declaration, XML is being used or which version (currently version 1.0 to be often) as shown. XML宣言では、XMLのバージョンの他に、 文字符号化方式 ( 文字コード ) の指定や、他のXML文書との依存関係についての指定を、行うこともできる。 XML declaration, XML in addition to the version of cipher text (code letter) and specify the dependencies on other XML specifications and documents can also be done.
XML宣言を含んだXML文書の例を示す。 XML declaration including an example XML document.
<?xml version = "1.0" encoding = "UTF-8" ?> <? xml version = "1.0" encoding = "UTF-8"?> <書籍 出版日= "2007-10-31" >これは書籍です.... </書籍> "Published book =" 2007-10-31 "" This is a book .... "/ book"
XML仕様では、 XMLプロセサ (XMLパーサ、XML文書の構文解析器 ) が、 Unicodeの文字符号化方式であるUTF-8およびUTF-16で記述されたXML文書を処理できることを、 必須条件としている ( UCS-4は必須条件ではない) 。 The XML specification, XML processors (XML parser, XML parser syntax of the document) is, Unicode character encoding is UTF-8 and UTF-16 was described by XML documents that can be processed, and the requirement that ( UCS-4 is not a requirement). XMLプロセサは、UTF-8およびUTF-16の他にも、いくつかの任意の文字符号化方式の文書を処理できるようにして良い。 XML processor is, UTF-8 and UTF-16 In addition to good to be able to handle documents in any encoding of several characters. 例えば、 UCS-4 、 EUC-JP 、 Shift JIS 、 EBCDICなどの文字符号化方式の文書を処理できるXMLプロセサが、広く普及し、使われている。 For example, UCS-4, EUC-JP, Shift JIS, EBCDIC encoding can handle text documents, such as the XML processor, the most popular, being used.
コメントはXML文書の木構造のどこにでもおくことができる。 Comments can keep the XML tree anywhere in the document. コメントは、"<!--" で始まり、"-->" で終わる。 ,"<!--" ,"-->" Starts with ends with comments. なお、コメント内に "--" を含むことはできない。 However, in a comment "-" can not contain.
コメントを含むXML文書の例を示す。 Comments including an example of XML documents.
<書籍 出版日= "2007-10-31" > "Published book =" 2007-10-31 "" <!-- これはコメントです.... --> "! - This is a comment .... -" これは書籍です.... This is a book .... </書籍> "/ Book"
内容のない要素を空要素 (empty element) という。 Element empty element with no content (empty element) said. XMLでは、空要素を表現するために特別な構文を使うことができる。 XML provides a special syntax can be used to represent an empty element. 開始タグを書きその直後に終了タグを書くこともできるが、その代わりに空要素のタグを使うことができるのである。 You could write an end tag immediately after writing a start tag, which can be used instead of an empty element tag. 空要素タグは開始タグと似ているが、閉じ括弧の直前にスラッシュをおく。 Empty element tag is similar to the start tag and keep a slash before the closing parenthesis.
次の3つの例は、XMLでは同等である。 The following are three examples, XML uses the same.
<foo > </foo > <foo> </ foo> <foo /> <foo /> <foo /> <foo />
空要素タグは属性を含むことができる。 Empty element tag can contain attributes.
<情報 著者= "小松左京" 分類= "サイエンスフィクション" 日付= "2009-01-01" /> "Author information =" Sakyo Komatsu "category =" Science Fiction "date =" 2009-01-01 "/"
XML文書ではどのUnicodeの文字も (XMLで特別な意味をもつ、開き山括弧 "<" のような文字を除いて) 、要素名として、属性名として、コメント内容として、文字データとして、 処理命令 (後述) として、直接に使うことができる。 XML document which Unicode characters in (XML has a special meaning, open angle bracket "" "except as a character), as the element name, attribute name, as the contents of comments, as character data, the instruction processing (see below) as can be used directly. このため、 漢字とキリル文字を共に含む次の文書も、整形式XML文書である。 Thus, the document follows the characters, including both Kanji and Cyrillic, well-formed XML document.
<?xml version = "1.0" encoding = "UTF-8" ?> <? xml version = "1.0" encoding = "UTF-8"?> <俄語> Данные </俄語> "Language niwaka> Данные </ language niwaka"
XML文書 (あるいはSGML文書、 HTML ウェブページを含む) において、 文書型宣言 ( DOCTYPE宣言 、Document Type Declaration) は、その文書を特定のDocument Type Definition (DTD) のスキーマと関連づけることを記述するものである。 XML document (or SGML documents, including HTML web pages) in, the document type declaration (DOCTYPE declaration, Document Type Declaration) is a specific document Document Type Definition (DTD) that is associated with the schema that describes the . なお、Document Type Definition (DTD) は、XMLで使うことができるスキーマ言語の一つである。 In addition, Document Type Definition (DTD) is, XML language is one of the schema that can be used. 文書型宣言は、その文書が特定のスキーマに準拠していることを宣言する。 The document type declaration, to declare that a particular document conforms to that schema.
XML文書では文書型宣言を記述してもよいし、記述しなくてもよい。 May be an XML document to describe the document type declaration, do not have to write. DTDをスキーマ言語として妥当性検証を行うことを想定しているのであれば、文書型宣言の記述は必須となるであろう。 If you have a DTD intended to validate that the schema language to describe the document type declaration would be required. DTDで妥当性検証を行わない場合でも、後述する実体参照などを文書中で使うのであれば、文書型宣言において文書中で使う実体を宣言することができる。 Even without the DTD verification reasonable, and if you use entity references in the document as described below, can be used to declare the entity in a document in the document type declaration.
文書型宣言は、その文書が特定のスキーマに準拠していること (妥当なXML文書であること) を、保証しているわけではない。 Document type declaration is a schema that conforms to a particular document (it is valid XML document), and not that is not guaranteed. 文書型宣言に記されたスキーマに準拠しているかどうかを判断するには、検証XMLプロセサでその文書を検証する必要がある。 To determine whether they conform to the schema described in the document type declaration is a validating XML documents need to verify that the processor.
文書型宣言の一般的な構文は次のとおりである。 The general syntax of the document type declaration is as follows.
<!DOCTYPE ルート要素名 [SYSTEM もしくは PUBLIC 公開識別子] 外部サブセット参照 [ <! DOCTYPE root element name [SYSTEM or PUBLIC identifier Public external subset reference [ <!-- 随意に内部サブセットを記述する --> "! - To describe the optional internal subset -" ]> ] "
ここで外部サブセットとは、そのXML文書のDTDを構成する (要素の型の宣言、後述する実体の宣言などの) 宣言群のうち、別ファイルに記述された宣言群のことである。 Here the external subset, to configure the XML document's DTD (the element type declaration, entity declaration, such as described below) Declaration of the group, which declared that the group was described in a separate file. また内部サブセットとは、そのXML文書のDTDを構成する宣言群のうち、文書型宣言内に直接記述された宣言群のことである[8] 。 Internal subset is also XML documents that you configure your DTD declaration of the group, that group is declared in written directly to the document type declaration [8].
XHTML 1.0 Strict に準拠したXML文書での文書型宣言は、次のとおりである。 XHTML 1.0 Strict compliant XML document type declaration in the document is as follows.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Strict / / EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd "> "Http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" "
XML文書においては、ルート要素がその文書の最初の要素である (例えば、XHTMLではルート要素はhtmlである) 。 The XML document is the first element of the document root element (eg, XHTML root element in the html is). SYSTEMキーワードとPUBLICキーワードは、その文書型 (文書の構造) の種類を指定する。 SYSTEM keyword PUBLIC keyword, document type (the structure of the document) to specify the type. 一般に広く知られていないDTDを使う場合は、 SYSTEMキーワードを使う。 Generally not well known when using a DTD, SYSTEM using keywords. 一般に広く知られているDTDを使う場合 (XHTMLなど) は、 PUBLICキーワードを使う。 Commonly known that if you use a DTD (XHTML, etc.), PUBLIC use keywords.
SYSTEMキーワードを使う際は、その後に続けて、その文書が準拠するDTDのファイルのURIを、外部サブセット参照として記述する。 SYSTEM keyword, then continue to conform to the DTD file document URI, and describe it as a reference the external subset. PUBLICキーワードを使う際は、その後に続けて、その文書が準拠するDTDの公開識別子 (public identifier) を指定しなければならない (例えば XHTML 1.0 の公開識別子は、"-//W3C//DTD XHTML 1.0 Strict//EN" である) 。 PUBLIC keyword is then followed to conform to document public identifier for DTD (public identifier) must be specified (for example, public identifier for XHTML 1.0 is ,"-// W3C / / DTD XHTML 1.0 Strict / / EN "is). 公開識別子を記述した後に続けて、SYSTEM キーワードを使う場合と同様に、その文書が準拠するDTDのファイルのURIを、外部サブセット参照として記述する。 After describing the continuing public identifier, SYSTEM If you use the keywords as well as, compliant with the DTD file URI to the document, describing it as a reference to the external subset. 内部サブセットは必要に応じて記述する。 Describe the internal subset is necessary. 内部サブセットとして、DTDの一部分もしくはDTDの全体を記述することができる。 An internal subset, DTD or DTD can be part of the overall description. なお、内部サブセットとしてDTDの全体を記述する場合は、 SYSTEMキーワード・PUBLICキーワード・外部サブセット参照は、いずれも記述しない。 However, if you write an internal DTD subset of the whole, SYSTEM keyword PUBLIC keyword references the external subset is not write either.
実体参照 (entity reference) は、実体を表現するプレースホルダである。 Entity (entity reference) is a placeholder to represent the entity.
XMLにおける実体 (entity) とは、 SGMLにおける実体と同じように、名前の付けられたデータの本体である。 Entities in XML (entity) and is, SGML entities and in the same way, the body of data associated with the name. 具体的には、ファイルもしくは置換文字列のように、何らかの形でXML文書の一部となるデータを格納しているもののことである[9] 。 Specifically, the replacement string as file or, in some form of XML is to store the data that have become part of the document [9]. 置換文字列を使う事例としては、次のような場合がある。 A case study using the replacement string, may be as follows.
実体参照の構成は、まず最初にアンパサンド (" & ") があり、その後に実体の名前が続き、 セミコロン (" ; ") で終わる。 Configuration of entities, the first ampersand ( & and then followed by the name of the entity, semicolon ( ; ends.
XMLには、事前宣言された実体として次の表に示す5つの実体がある。 XML is shown in the following table as a real entity declared in advance that one 5.
| 実体参照 Entity | 実体 Entity | 実体の説明 Description of the entity |
|---|---|---|
& | & & | アンパサンド (ampersand) Ampersand (ampersand) |
< | < " | 小なり (less than) Less than (less than) |
> | > " | 大なり (greater than) Greater than (greater than) |
' | ' ' | アポストロフィ (apostrophe) Apostrophes (apostrophe) |
" | " " | クォーテーションマーク (quotation mark) Quotation marks (quotation mark) |
「AT&T」の名前でアンパサンドを表現するために、事前宣言されたXMLの実体を使う例を示す。 "AT & T" to represent the ampersand in the name of a previously declared entity using an example XML.
<会社名称> AT & T </会社名称> "Names Companies> AT & T </ COMPANY NAME"
事前宣言された実体以外の実体を宣言する必要がある場合、XML文書のDocument Type Definition (DTD、文書型定義) の内部で宣言する。 If you need to declare an entity other than the pre-declared entity, XML documents Document Type Definition (DTD, Document Type Definition) to declare inside.
XML文書の内部に定義されたDTDを使って、置換文字列としての実体を宣言して、実体参照を使う例を次に示す。 Defined within the XML document using DTD, the entity declared as a replacement string, use the following example shows an entity reference. 宣言された実体は、一つの文字であっても良いし、テキストの断片であっても良いし、他の実体への参照を含むテキストであっても良い。 Entity is declared, and may be a single character, and even a good piece of text, including text may be a reference to other entities.
<?xml version = '1.0' encoding = 'UTF-8' ?> <? xml version = '1 .0 'encoding =' UTF-8 '?> <!DOCTYPE 例 [ <! DOCTYPE example [ <!ENTITY copy "©"> <! ENTITY copy "©"> <!ENTITY copyright-notice "Copyright © 2007 平成新報社" > <! ENTITY copyright-notice "Copyright © 2007, XYZ Enterprises" " ]> ] " <例> "Example" ©right-notice; & copyright-notice; </例> "/ Examples"
XMLに準拠したブラウザを使うと、先のXML文書は次のように表示される。 Using XML browser that conforms to the target XML document is displayed as follows.
Copyright © 2007 平成新報社 Copyright © 2007, XYZ Enterprises ファイルの実体を参照するXML文書の例を示す。 See the reality of an example XML document file.
<?xml version = '1.0' encoding = 'UTF-8' ?> <? xml version = '1 .0 'encoding =' UTF-8 '?> <!DOCTYPE 文章 [ <! DOCTYPE document [ <!ENTITY tsutsui-yasutaka SYSTEM "another-file.xml"> <! ENTITY tsutsui-yasutaka SYSTEM "another-file.xml"> ]> ] " <文章> "Text" <文>星新一はSF作家である。 "Statement" is SF writer Shinichi Hoshi. </文> "/ Statement" <文>小松左京はSF作家である。 "Statement" is SF writer Sakyo Komatsu. </文> "/ Statement" &tsutsui-yasutaka; & tsutsui-yasutaka; </文章> "/ Text"
なお、別ファイルanother-file.xmlには次の内容が記されていることとする。 In addition, another file another-file.xml that has been marked with the following contents.
<文>筒井康隆はSF作家である。 "Statement" is SF writer Yasutaka Tsutsui. </文> "/ Statement"
XMLに準拠したブラウザでこのXML文書を表示すると、次のようになる。 This XML-compliant browser to view the XML document will be as follows.
星新一はSF作家である。 Shinichi Hoshi is a SF writer. 小松左京はSF作家である。 SF writer Sakyo Komatsu. 筒井康隆はSF作家である。 The SF writer Yasutaka Tsutsui.
文字参照 (character reference) は、文字をXML文書内でコード番号を指定して記述する記法である。 Character references (character reference) is an XML notation to describe the character using the specified code number in the document. 文字参照は、実体参照と似ているが、実体参照では名前を使うのに対し、文字参照ではその部分で始めに " # " 文字を記述し続けて数字を記述する。 Character references, and similar entities that, in the name of the entity reference for use in reference to the first part of the character # to describe the numbers continue to describe the character.
文字参照で使う数字は、 符号化文字集合の国際規格であるISO/IEC 10646 (およびUnicode ) のコード番号である。 Numeric character references are used, is the international standard for encoding character set ISO / IEC 10646 (and Unicode) is a code number. 文字参照で使うことができる数字は、十進数であるか " x " を前につけた十六進数である。 You can use numeric character reference is either decimal "x" is the x put before the 60. 文字参照は、実体参照とは異なり、事前宣言されているわけでもなく、XML文書のDTD内部で宣言されているわけでもない。 Character references, and unlike entities, nor is not declared before, XML DTD document that is not so declared inside. 文字参照は、簡単には符号化できない文字を表現するために使われることが多い。 Character references are often used simply to describe a character is encoded. 例えば、 欧州のコンピュータ上で作成するXML文書でアラビア語の文字を使う場合などである。 For example, to create an XML Europe on the computer, such as when using the Arabic characters in writing. 「AT&T」の例の内のアンパサンドは、この場合に似ているともいえる。 "AT & T" in the example of the ampersand, similar to say that even in this case. 十進数の38と十六進数の26は、共に ISO/IEC 10646 の "&" 文字のコード番号である。 Hex 10 38 decimal 60 and 26, with ISO / IEC 10646 in the "&" character is a code number. つまり「AT&T」はXML文書では次のように記述することができる。 That "AT & T" is an XML document can be described as follows.
<会社名称> AT & T </会社名称> "Names Companies> AT & T </ COMPANY NAME" <会社名称> AT & T </会社名称> "Names Companies> AT & T </ COMPANY NAME"
「 文字参照 」も参照 "Reference letter" also refer
処理命令 (processing instruction) は、XML文書の構成要素であり、XML文書を扱うソフトウェアに対する何らかの処理を行う命令を、記述するものである。 Processing instructions (processing instruction) is, XML documents and components, XML instructions do some processing software for handling the documents, which are to be described.
次に処理命令の構文を示す。 The following shows the syntax of the instruction process.
<?処理命令ターゲット 処理内容?> "? Content processing instruction target processing?"
処理命令は?> の文字列を除き任意の処理内容を記述することができる。 Processing instruction? "Can describe the contents of any process except the string. 処理命令には、処理内容として擬似属性 (pseudo attribute) を記述することがある。 Processing instruction is processed, as a pseudo-attributes (pseudo attribute) have to write. 擬似属性は、記述のしかたが属性名と属性値のペアに似ている。 Pseudo-attributes are similar to the attribute name-value pairs that describe how to. しかしXMLプロセサは擬似属性を、属性として解釈せず、処理命令の処理内容として解釈する。 The XML processor is the pseudo-attributes not interpreted as an attribute, processing instruction to be interpreted as what happens.
擬似属性を使った処理命令の例を次に示す。 Here are examples with pseudo-attribute processing instruction. これはXML文書にカスケーディングスタイルシート (CSS) と関連づけるという処理命令である。 This is an XML document Cascading Style Sheets (CSS) that is associated with the processing instruction.
<?xml-stylesheet type = "text/css" href = "monobook.css" ?> <? xml-stylesheet type = "text / css" href = "monobook.css"?>
あるXML文書内に記述された特定の処理命令について、その処理命令の意図したとおりの処理を実行するためには、そのXML文書を処理するアプリケーションソフトウェア側がその処理命令に対応する必要がある。 A particular XML processing instructions that are written about in the document, in order to perform as intended in order to handle them, need to respond to the XML processing instruction that the application software to process the document.
XML文書 (およびSGML文書) においてCDATAセクションとは、文字列データのみで構成されておりマークアップされたデータは含まれていないと、XMLプロセサが解釈するようマークされた、要素の内容を構成する文字列データの一部である。 XML documents (and SGML documents) in the CDATA section is marked up data are composed of only the string data is not included, XML has been marked as interpreted by the processor, configure the contents of the element part of the string data. CDATAセクションは、文字列データを表現するための単なる代替構文である。 CDATA section is just an alternative syntax for representing string data. CDATAセクションとして宣言された文字列データと、" < " と " & " を " < " と " & " で表現する通常の構文で記述した文字列データとの間に、意味的な違いはない。 Data and CDATA sections are declared as string, < "and" & "to" < and & string data between the normal expression syntax described in the semantic difference no.
CDATAセクションは次の記述で始まる。 CDATA sections begin with the following description.
<![CDATA[ そしてCDATAセクションの内容が続き、次の記述が最初に出現したところでCDATAセクションは終わる。 The contents of the CDATA section and more, where the first occurrence of the following statements that ends the CDATA section.
]]> CDATAセクションの内容の文字列は全て文字列データとして解釈され、マークアップや実体参照や文字参照として解釈されることはない。 CDATA content of the string section string is interpreted as all data can be interpreted as markup or entity references and character references are not.
次の例で「送信者」の開始タグと終了タグはマークアップとして解釈される。 In the following example "sender" start and end tags will be interpreted as markup.
<送信者>星新一</送信者> しかし次のように記述した場合は、 If, however, described as follows,
<![CDATA[<送信者>星新一</送信者>]]> 次のように記述したものと同等に解釈される。 Be interpreted as having described as follows.
<送信者>星新一</送信者> すなわち、「送信者」タグは「星新一」の文字列と同列に位置づけられ、いずれも文字列データとして解釈される。 Ie, "sender" tags "Shinichi Hoshi" is regarded the same way as the string will be interpreted as either a string.
文字参照ðが要素の内容で出現した場合は、一つのUnicode文字00F0 ("ð") として解釈される。 Ð character reference ð appear in the element content is a single Unicode character 00F0 ( "ð") is interpreted as. しかしCDATAセクション内で出現した場合は、8つの文字からなる文字列として解釈される。 But if it appears in a CDATA section 8 is interpreted as a single string of characters.すなわち、アンパサンド、#マーク、文字x、数字0、数字0、文字F、数字0、セミコロンの8つの文字からなる文字列として解釈される。
整形式XML文書は、とりわけ、次に示す規則に適合しなければならない。
<私は空です/>のように記述することができる。この例は<私は空です></私は空です>と意味的に同等である。 要素の名前ではアルファベットの大文字と小文字とが区別される。例えば、次の例は整形式である。
<Abc>...</Abc>
しかし次の例は整形式ではない。
<ABC>...</abc>
XML文書のスキーマを設計する際に、XMLの要素の名前を注意深く選択すると、そのスキーマに準拠したXML文書のデータの意味を、第三者に伝えるために有効であろう。 XMLの要素の名前を注意深く選択することにより、そのスキーマに準拠したXML文書は、人間にとって読みやすいものとなる。
XMLの要素と属性の名前を、体が名を表すように注意深く選択することで、人間がXML文書を読む際に、要素と属性の意味を、外部の説明文書を参照することなく、よりよく理解できるようになる。ただしこのようにすることは、XML文書の冗長性が増えることでもある。人によっては、XML文書を書く際の労力が増えることを、好まない場合がある。またファイルサイズも大きくなることになる。ただし圧縮技術をXML文書に適用してファイルサイズを小さくすることは可能である。
整形式XML文書を正確に書くためには、ここまで述べたことよりずっと多くの規則にしたがう必要がある。例えば、 XML名前空間を使うことや、XMLでの「名前」として使うことができる正確な文字集合を使って、XML文書を書くことなどである。とはいえ、ここまで述べた整形式文書に関する概略を理解しておけば、多くのXML文書を読み理解しあるいは多くのXML文書を書くために必要な基礎は、身についたといえる。
XML文書の正当性を自動的に検査するための方法を説明する。
あるXML文書が、整形式XML文書としての条件のみを満たした文書であるか、それとも妥当なXML文書としての条件をも満たした文書であるかを、判別することは、比較的容易である。というのも、整形式XML文書であるための規則と、XMLの妥当性検証のしくみについては、XML文書を扱うツールの移植性を考慮して設計されているからである。この設計方針は、XML文書を扱うツールであれば、どのようなXML文書でも扱うことができるということである。
独立したツールを使い、XML文書の正当性を自動的に検査する例を示す。
irb> require "rexml/document"
irb> include REXML
irb> doc = Document.new(File.new("test.xml")).root
妥当なXML文書について詳しく説明する。
XMLでは、要素に名前を付けることができ、階層構造をとることができ、 スキーマ言語 ( Document Type Definitionなど) により用途に沿うように定義されたスキーマを使うことで要素と属性の意味を公開し説明することができる。 XMLのこうした特徴により、目的に応じたXMLに準拠したマークアップ言語を創るための、構文的な基礎が成り立っている。
スキーマは、制約の集合を記述することにより、XML文書の構文上の規則を単に補足するのみである。スキーマは、多くの場合、要素と属性の名前を限定し、各要素が内容とするものの階層構造を規定し、属性の内容を規定する。例えば、「誕生日」という名前の要素では、「月」という名前の一つの要素と「日」という名前の一つの要素をもつことができ、「月」要素と「日」要素のそれぞれは文字列データのみをもつことができる。
スキーマに定義された制約には、 データ型の割り当てを含むことができる場合がある。データ型を割り当てることにより、データ型が割り当てられた情報がどのように処理できるかを、規定することができる。例えば、「月」要素の文字列データは、そのXML文書で採用したスキーマ言語の機能に準拠して、「1」から「12」までの数字のみが妥当であるという形で、定義することができる可能性がある。ここでスキーマ言語の (データ型に関する) 機能とは、おそらく特定の方法で形式にしたがって記述しなければならないということだけでなく、別のデータ型の値であるかのように処理されることを未然に防ぐことを、意味する。
何らかのスキーマに準拠したXML文書は、整形式であるということに加えて、 妥当 (valid) であるということができる。
XMLのスキーマは、XMLの文書型 (文書の種類、文書の論理的構造) を記述したものである。多くの場合スキーマは、その文書の構造と内容に関する制約という形で表現される。 XMLのスキーマは、XML仕様で規定されている、整形式XML文書としての基本的な制約に加え、それ以上の制約をXML文書に課すことができる。 XMLのスキーマ言語は、標準規格のものもプロプライエタリなものも含めて、こうしたスキーマを表現するという目的のもと、数多く存在している。いくつかのスキーマ言語では、スキーマ自身をXML文書として記述する。
スキーマ言語の記述能力はスキーマ言語ごとにさまざまである。例えばスキーマ言語の一つであるDocument Type Definition (DTD) では、XML文書がとるべき構造の主な規則として、そのDTDに準拠したXML文書で使うことができる要素の名前、要素の内容モデル、要素で指定できる属性の名前、属性の値のデータ型を、記述することができる[10] 。
なお、要素の内容モデルとは、要素の内容に出現可能な要素やデータとその順番、および要素の出現回数を規定したもののことをいう[11] 。
Standard Generalized Markup Language (SGML) やXMLなどの汎用的なデータ記述言語が世に出る前は、ソフトウェア設計者は、複数のプログラムの間でデータの受け渡しをするために、自分自身でファイルフォーマットを定義するか、ちょっとしたコンピュータ言語を定義しなければならなかった。このため受け渡しするデータの詳細な仕様やその他の文書を書かなければならなかったし、文書の書き手を別途に確保しなければならないこともあった。
XMLが一定の構造をもち厳密な構文解析の規則をもつことで、ソフトウェア設計者は構文解析を標準的なソフトウェアツール (妥当性検証器、バリデータ) に任せることができる。そしてXMLには、用途に特有の言語を開発するための一般的な、 データモデル指向の枠組みがある。このためソフトウェア開発者は、比較的高水準の抽象度において、自分たちが扱うデータの規則の開発に専念するだけでよい。
XML文書をスキーマに照らして妥当性検証を行うための、十分にテストされたツールが、数多く存在している。 XML文書をスキーマに照らして妥当性検証を行うためのツールを、妥当性検証器 (バリデータ) という。妥当性検証器は、スキーマに表現された制約にXML文書が準拠しているかについて、自動的に妥当性検証を行う。妥当性検証器は、XMLプロセサ (XMLパーサ) に含まれていることもあれば、XMLプロセサとは別に提供されていることもある。
これまでに述べたスキーマの使い方とは別の使い方も存在する。例えば、XMLエディタは、XML文書の編集を支援するためにスキーマを使うことができる。こうしたXMLエディタでは、妥当な要素名や妥当な属性名を提示することなどができる。
詳細は「 Document Type Definition 」を参照
XMLのための最も歴史の古いスキーマ言語はDocument Type Definition (DTD、文書型定義) である。 DTDは、XMLの前身であるSGMLから引き継がれた。 DTDは XML 1.0 標準に含められているため、ほとんどあらゆるXMLプロセサがDTDを扱うことができる。しかし2007年現在ではDTDを使うことは限定的な範囲にとどまっているようである。その理由は次のとおりである。
DTDは、現在も多くの用途で使われている。その理由は、一定の人々にとっては、DTDは他の新しいスキーマ言語よりも読みやすく書きやすいと、考えられているからである。
詳細は「 XML Schema 」を参照
XML Schema は、 World Wide Web Consortium (W3C) により開発された、DTDの後継となる新しいスキーマ言語である。非公式には、XSDと呼ばれることもある。 XSDは、XML Schema のインスタンス (スキーマ) を意味する "XML Schema Definition" の頭字語である。
XML Schema は、XMLによるマークアップ言語のスキーマの記述能力において、DTDと比べて非常に強力である。 XML Schema は、豊富なデータ型を扱うことができるスキーマ言語である。 XML文書の論理的構造について、DTDより詳細な制約を記述することができる。そしてDTDより詳細な妥当性検証の枠組みのもとで、妥当性検証が行われる。
XML Schema はまた、XML Schema によるスキーマ自体を、XMLに準拠した形式を使って記述する。 XML Schema のスキーマ自体がXMLに準拠することで、スキーマを編集したりスキーマに何らかの処理を行うために、普通のXMLツールを使うことができるようになる。
ただし、XML Schema の妥当性検証器を実装する作業には、単にXML文書を読むことができる能力よりも、非常に多くの知識と能力を必要とする。
XML Schema に対しては賛否両論がある。 XML Schema に対する批判の一部を示す。
詳細は「 RELAX NG 」を参照
RELAX NG は、人気のあるもう一つの新しいスキーマ言語である。最初にOASIS (構造化情報標準促進協会) で仕様が策定された。 RELAX NG は、現在ではISO (国際標準化機構) の国際標準となっている。 ISOでは、 文書スキーマ定義言語 (DSDL) の一部分を構成する仕様として位置づけられている。
RELAX NG のスキーマの記述方法は、2つの形式がある。 XMLに準拠した構文 ( XML構文 、xml syntax) と、XMLに準拠しない短縮構文 (compact syntax) である。短縮構文は、読みやくすることとより書きやすくすることを目指している。ただし、短縮構文で記述されたスキーマをXML構文のスキーマに変換する方法と、その逆の変換を行う方法は、しっかり定義されているので、 ジェームズ・クラークが開発したTrang conversion toolを使えば、標準のXMLツールを使う利便を享受することができる。
RELAX NG は、XML Schema よりも簡潔なスキーマ定義と簡潔な妥当性検証の枠組みを、備えている。そのため RELAX NG は、XML Schema と比べて、使いやすく、また RELAX NG の妥当性検証器を実装することも容易になっている。
RELAX NG もまた、 データ型フレームワークプラグインを使う能力を備えている。 RELAX NG でスキーマを記述する人は、例えば、XML文書で XML Schema のデータ型の定義に適合させたいと考えるかもしれない。そして RELAX NG では、データ型フレームワークプラグインを使うことにより可能となっている。
詳細は「 文書スキーマ定義言語 」を参照
ISO 文書スキーマ定義言語 (DSDL; Document Schema Description Languages) 標準は、小規模なスキーマ言語の広範なセットを共に提供する。 DSDL を構成する複数の仕様のそれぞれが、特定の問題に対応するために特化されている。 DSDL は、 RELAX NGのXML構文と短縮構文、 スキマトロン 、データ型ライブラリ言語、文字レパートリ記述言語、文書スキーマ再命名言語、名前空間に基づく検証委譲言語 (NVDL) を、含んでいる。 DSDLスキーマ言語群は、XML Schemas を支持するベンダの支援は2007年の時点ではまだ受けていない。 DSDLは、 出版のための機能が欠如していることに対する、出版業界の一定の草の根の反応でもある。
「 #インフォメーションセットへの追加情報 」も参照
いくつかのスキーマ言語では、特定のXML文書の構造を記述する能力に加えて、個々のXML文書をその特定のXML文書構造に適合するように変換する機能も、限定的ながら備えている。
DTDと XML Schema はこの変換機能を備えている。 DTDと XML Schema では、XML文書に属性の既定値を与えることができる。 RELAX NG とスキマトロンは、意図的にこの機能を外している。例えば、 XMLインフォメーションセットを正確に扱うことが、RELAX NG とスキマトロンの仕様策定時に変換機能を外した理由の一つである。
XML文書を視覚的に表示するための方法を説明する。
XML文書は、その文書の内容をどのように視覚的に表示するかという情報を、含んでいない。 Cascading Style Sheets (CSS) やExtensible Stylesheet Language (XSL) のようなXMLのためのスタイルシート言語を使うのでなければ、ほとんどのウェブブラウザは普通のXML文書を生のXMLテキストとして描画する。いくつかのウェブブラウザは「ハンドル」をつけて表示する (例えば、余白に + と - の符号を表示する) 。ハンドルを使うことにより、XML文書構造の部分木を、マウスクリックで展開したり折りたたんだりすることができる。
CSSを使ってウェブブラウザでXML文書を描画するためには、XML文書は次のような要領でスタイルシートへの参照を含めなければならない (XMLの処理命令を使ってスタイルシートを使って描画する旨を指定している) 。
<?xml-stylesheet type = "text/css" href = "myStyleSheet.css" ?>
この方法は、 HTML文書におけるスタイルシート指定の方法とは異なる。 HTML文書では<link/>要素を使ってスタイルシートを指定する。
XML文書を視覚的に表示するために、 Extensible Stylesheet Language (XSL、拡張可能なスタイルシート言語) を使うこともできる。 XSLを使う場合は、XML文書をXHTML /HTML文書の構造に変換するか、もしくはウェブブラウザで視覚的に表示することができる他の文書の構造に変換する。
クライアント側でXSL Transformations (XSLT) のスタイルシートを指定するためには、XML文書に次のようにXSLTスタイルシートへの参照を含めることが、必要である (XMLの処理命令を使って実現している) 。
<?xml-stylesheet type = "text/xsl" href = "myTransform.xslt" ?>
クライアント側のXSLTスタイルシート処理機能は、現在では多くのウェブブラウザが備えている。
別の方法として、このようなエンドユーザのウェブブラウザの能力に依存する方法を採らずに、サーバ側でXSLを使ってXML文書を視覚化可能な形式に変換する方法も、行われている。エンドユーザは、「舞台の裏側で」何が行われているかを、意識する必要はない。エンドユーザが目にするものは、よく整形され視覚化された文書だけである。
XMLを拡張する技術を説明する。
XML文書はさまざまなMIMEタイプで配布することができる。 RFC 3023は、"application/xml" および "text/xml" のMIMEタイプを定義する。 "application/xml" と "text/xml" のMIMEタイプは、そのデータがXML文書の形式をとっているということのみを述べているだけであり、そのXML文書の論理的構造については何も述べていない。 "text/xml" を使うことに対しては、符号化に関する問題が生じる可能性があるとの批判があり、現在では非推奨とされている[12] 。 RFC 3023 では、加えて、XML文書を "application/" で始まり、"+xml" で終わるMIMEタイプで配布することを勧めている。例えば、 AtomのXMLデータに対しては、"application/atom+xml" のMIMEタイプで配布するのである。
XML名前空間 ( Namespaces in XML ) は、一つXML文書内で、異なる複数のボキャブラリ (スキーマ) に由来する要素と属性を、名前の衝突を発生させることなく、含めることができるようにするための仕様である。 World Wide Web Consortium (W3C) から、1999年1月14日に Namespaces in XML 1.0 が勧告された。 XML文書に異なる複数のボキャブラリに由来する要素と属性を含める場合、ボキャブラリのそれぞれに名前空間をわりあてることにより、要素名の衝突と属性名の衝突の問題を、解決することができる。
一つの名前空間において定義された要素の名前は、一意でなければならない。
顧客への参照と注文された商品への参照を含む、簡単なXML文書の例を考える。顧客要素と商品要素は、ともに「識別番号」という名前の子要素をもつことがあるだろう。識別番号要素への参照は、顧客要素の子要素の識別番号要素も、商品要素の子要素の識別番号要素も、同じ要素名をもつので、あいまいである。しかし2つのボキャブラリを区別する2つの名前空間のもとで、識別番号要素を使う場合、顧客要素の子要素の識別番号要素と、商品要素の子要素の識別番号要素は、意味的に明確に異なる2種類の要素となる。
名前空間は、XMLの予約属性であるxmlnsを使って宣言される。 xmlns属性の属性値はIRI (Internationalized Resource Identifier) である必要があり、通常はURI (Uniform Resource Identifier) である。
例を示す。
xmlns="http://www.w3.org/1999/xhtml"
この例の "http://www.w3.org/1999/xhtml" を名前空間名という。ここで注意すべきこととしては、名前空間の宣言で記述されたURIは、実際にインターネット上の住所として解釈されるわけではないということである(自由に考えよう、URIほど便利なものが必ずインターネットのアドレスをささなければいけないなどと、誰が決めたのか)。例えば、 http://www.w3.org/1999/xhtml自体には何のコードもない。このURIの文書では、人間の読者に対してXHTMLについて簡単に説明しているだけである。 ("http://www.w3.org/1999/xhtml" のような) URIを名前空間の識別子として使うことで、("xhtml" のような) 単純な文字列を名前空間名として使うよりも、異なる名前空間が意図せずして同じ名前空間名を使ってしまう危険性を低減する。名前空間の識別子は、ウェブの住所 (アドレス) の慣習にしたがう必要はない。
名前空間の宣言は、短い接頭辞を含むことができる。この名前空間接頭辞を使うことで、異なるボキャブラリに由来する要素と属性を識別することができる。
名前空間接頭辞を使う例を示す。
xmlns:xhtml="http://www.w3.org/1999/xhtml"
XML名前空間を使ったXML文書の例を示す。
<?xml version = "1.0" encoding = "UTF-8" ?> <? xml version = "1.0" encoding = "UTF-8"?> <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" xmlns = "http://www.w3.org/1999/xhtml" > <xsl:template match = "/社員名簿" > <html > <head > <title > XML文書をXHTML文書に変換する例</title > </head > <body > <h1 >社員名簿</h1 > <ul > <xsl:apply-templates select = "社員" > <xsl:sort select = "姓" /> </xsl:apply-templates > </ul > </body > </html > </xsl:template > <xsl:template match = "社員" > <li > <xsl:value-of select = "姓" /> <xsl:value-of select = "名" /> </li > </xsl:template > </xsl:stylesheet >
このXML文書は、次の2つの名前空間のボキャブラリから構成されている。
なおこのXML文書は、あるXML文書をXHTML文書に変換するXSLTスタイルシートである。
XML名前空間を使う場合、そのXML名前空間のボキャブラリが定義されていることが必要であるわけではない。しかしXML文書でXML名前空間を使う場合に、そのXML名前空間のボキャブラリを定義しておくことは、そのXML名前空間のURIのもとで正しい文書構造を定義しているスキーマに関連づけるために、行われることが多い。
プログラマやアプリケーションソフトウェアがXML文書を処理する手段としては、これまで次に示す3つの技法が伝統的に使われてきた。なお、この節の説明で使うAPIとはアプリケーションプログラミングインタフェースのことをさす。
さらに、近年に開発され使われるようになった、XML文書を処理する技法を示す。
詳細は「 Simple API for XML 」を参照
Simple API for XML (SAX) は、 字句解析を行いイベント駆動で処理を行う API である。 SAXを使うとXML文書は文書の最初から順次読み込まれ、その内容はプログラマが実装したハンドラオブジェクトの様々なメソッドへのコールバックとして報告される。 SAXを使ったXML文書処理は高速であり、少ないコンピュータ資源を効率的に使って非常にサイズの大きいXML文書を処理することが可能である。
SAXを使うことに伴う問題は、XML文書に対してランダムアクセスを行って情報を取り出すことが難しいことである。そのため、SAXを使うに際し、 プログラマはXML文書のどの部分が現在処理対象となっているか把握する為の機構を実装しなければならない。
SAXは、処理対象となるXML文書中のある種類の情報がどの部分に出現するかに依らず、常に同じように処理されると保証できる場合に用いるのが望ましい。
詳細は「 Document Object Model 」を参照
Document Object Model (DOM) は、 インタフェース指向のAPIであり、XML文書のおのおのの部分を表現する節オブジェクトの集まりからなる木構造であるかのように、XML文書全体に対してナビゲーションを行うことを想定している。 DOMでは、XML文書に対してランダムアクセスを行って情報を取り出すことが、簡単にできる。
DOMにおけるXML文書全体に相当するDocumentオブジェクトは、XML文書をXMLプロセサが処理することにより生成することもできるし、プログラマがプログラミングすることによって生成することもできる。 DOMにおけるNode (節) のさまざまな型のデータ型は、DOM仕様においては抽象的にインタフェースとして定義されている。 Nodeのデータ型の実装は、 プログラミング言語に固有の言語バインディングを提供する。 DOMの実装は、サイズの大きいXML文書を扱う場合はたくさんのメモリを使う。なぜならDOMの実装は、一般的にはXML文書全体からオブジェクトの木構造を構築してメモリにロード (展開) し、その後にDOMを介した処理をできるようにしているからである。
Javaでは、標準ライブラリを構成するいくつかのパッケージでDOMが実装されており、Javaのプログラマは標準ライブラリのDOMを使うことができる。 DOMの仕様は、 World Wide Web Consortium (W3C) で策定されているため、DOMで中核をなすNodeやDocumentなどのインタフェースや、 直列化 (出力) などの機能を提供するためのインタフェースは、パッケージorg.w3c.dom.*に収められている。 [13] [13]
「 Extensible Stylesheet Language 」も参照
Extensible Stylesheet Language (XSL) 技術におけるフィルタは、XML文書に対して、視覚的に出力したり印刷出力できるよう変換処理を行うことができる。
「 Streaming API for XML 」も参照
Pull Parsing は、XML文書を、最初から順番に読み込み、 Iterator パターンのデザインパターンを使って項目 (item) の一連の流れとして扱う、近年に徐々に普及してきた技法である[14] [15] 。 Pull Parsing の技法により、再帰下降パーサを実装することができる。再帰下降パーサでは、パースを実行するプログラムは、パースの対象となるXML文書の構造と似ている。そしてパースの中間結果を取得することができる。
パースの中間結果を、パースを実行するメソッド内の局所変数 (ローカル変数) として使うことができる。あるいは、低水準のメソッドの引数として渡したり、高水準のメソッドへの戻り値として返すことができる。 Pull Parsing の技法を提供する実装としては次のものがある。
System.Xml.XmlReader - .NET Framework 例えば、JavaのStAXフレームワークでは、本質的な「 反復子 」 (イテレータ) を作成して使うことができる。
Pull Parsing で作成される「反復子」はXML文書中のさまざまな要素、属性、データを順番に訪れる。 「反復子」を使うプログラムは、処理中に現在の項目 (例えば、要素の開始、要素の終了、テキスト) を調べ、その特性 (例えば、要素の名前、名前空間、属性値、テキスト内容) を調査する。そして反復子に「次の」項目へ移動するよう指示することもできる。プログラムは、このようにXML文書を走査するようにして、文書から情報を取り出すことができる。
Pull Parsing の技法の特筆すべき長所は、XML文書をパースするDOMの技法と比べて非常に高速であり、メモリ使用が非常に少ないことである。もう一つの長所は、再帰下降の手法は、パースを実行するプログラム内で、データを型づけされた変数として保持することに適していることである。 SAXでは、例えば、プログラマが自分で処理中の要素の祖先となる要素群を格納するスタック内に中間データを保持するコードをプログラミングする必要があることが多い。これに対し、Pull Parsing の技法を使ってXML文書を処理するプログラムは、SAXを使うプログラムよりも、非常に単純で理解し易く保守が容易になることが多い。
「 Java Architecture for XML Binding 」も参照
XML文書を処理するもう一つのAPIは、XMLデータバインディングであり、XMLデータバインディングを使うと、XML文書を、その文書型に対応した、強く型づけされたプログラミング言語データ構造 ( プログラムのソースコード ) を、生成することができる。インタフェース指向のDOMとは対照的な手法である。データバインディングの実現例を次に示す。
OpenOffice.org 、 AbiWord 、およびアップルのiWorkなどのアプリケーションソフトウェアのネイティブファイルフォーマットは、XMLである。
従前、 オフィススイートには各ソフトの特有のバイナリ形式としてデータが保存されていた。しかしながらこれでは互換性が低く、様々な情報をデータベースとして利用するオフィススイートでは不都合が生じていた。そのため、データの標準化を進めて互換性を高めるため、各オフィススイートはXML形式でデータを出力する機能や、そもそも標準保存形式をXMLベースとするものが増えてきた。
OpenOffice.orgはXMLベースの保存形式を当初より標準としていた(英語版バージョン1.0は2002年5月1日リリース)。また、OpenOffice.orgに限らず、どのオフィススイートでも利用できるOpenDocument形式が国際標準化機構 (ISO)によって標準規格として認定されている。
もう一つのオフィススイート用の保存形式であるOffice Open XMLも、ISOにより標準規格として認定されている。
マイクロソフトのMicrosoft Officeでは Microsoft Office XP のバージョンからXML形式への対応を始め、Microsoft Office 2003 で独自の定義のXML Schemaがサポートされるに至った。 Microsoft Office 2007 ではデフォルトの保存方式がXMLとなった(Office Open XML)。 Microsoft Office 2007 のいくつかの機能では、XMLファイルを利用者が指定したスキーマ (ただしDTDではない) に沿って編集することができるようになっている。またマイクロソフトは、Microsoft Office 2003 のためのファイルフォーマット互換性キットを公開している。この互換性キットを使うことにより、以前のバージョンの Microsoft Office で作成された文書をXMLに準拠した新しいフォーマットで保存することができる。
エディタについては現在、多くのXMLエディタが使えるようになっている。
XMLインフォメーションセット ( XML Information Set 、インフォセット、 Infoset ) は、XML文書の抽象的なデータモデルを「情報項目」 (information item) の集合を使って規定している。 World Wide Web Consortium (W3C) から、2001年10月24日にXMLインフォメーションセット仕様が勧告された。 XMLインフォメーションセットの仕様における定義は、整形式XML文書内の情報を参照する必要がある他の仕様において使われることが想定されている。
一つのXML文書には、そのXML文書が整形式でありかつXML名前空間の制約に準拠している場合、一つのXMLインフォメーションセットがある。 XMLインフォメーションセットを構成するためには、そのXML文書が妥当なXML文書であることは、必須要件ではない。
一つのXMLインフォメーションセットには、次に示す11種類の情報項目がある。
XMLインフォメーションセットの Second Edition (第2版) が2004年2月4日に勧告された。
インフォメーションセットへの追加情報すなわちインフォメーションセットに対する改変は、スキーマによる妥当性検証を行う際に、インフォメーションセットを改変することをいう。例えば、インフォメーションセットに属性の既定値 (デフォルト値) を追加することなどがある。情報を追加されたインフォメーションセットは、スキーマ検証後インフォメーションセットあるいはPSVI (post-schema-validation infoset) と呼ばれる[18] 。
インフォメーションセットへの追加情報については、賛否両論がある。インフォメーションセットに情報を追加することに否定的な見解としては、インフォメーションセットへの追加情報はモジュール性を侵害し相互運用性の面での問題を引き起こす危険があるとする。なぜなら、同じXML文書を扱う複数のアプリケーションソフトウェアは、受け取る情報が妥当性検証を行うかどうかに依存してしまうからである。アプリケーションソフトウェアが、妥当性検証を行う場合に受け取る情報と、妥当性検証を行わない場合に受け取る情報が、異なってしまうのである[19] 。
XML Schemaは、XMLインフォメーションセットへの追加情報を扱うことができる。 RELAX NGは、インフォメーションセットへの追加情報を扱わない。 RELAX NG では、インフォメーションセットへの追加情報に否定的な立場をとっている。
デジタルメディアの出版を行ってきた人々は、1980年の後半 インターネットが広く使われるようになるより前の時期には既に、動的に情報を視覚化するための技術として、汎用的なマークアップ言語であるStandard Generalized Markup Language (SGML) が多くの用途に適していることを、理解していた[20] [21] 。 SGMLはいくつかの分野で普及していたが、仕様が複雑で処理系の開発が難しく、またSGML文書の処理が重いという欠点があった。 1990年代半ばまでには、SGMLを実際に使っていた一定の人々は、新しく現れたWorld Wide Web (ウェブ) を経験した。そうした人々は、ウェブが発展することにより直面するいくつかの問題に対して、SGMLが解決策を提供すると、強く考えるようになった。 Dan Connolly は、自分が1995年にWorld Wide Web Consortium (W3C) のスタッフになった時に、SGMLをW3Cのアクティビティの一覧に追加した。このアクティビティの作業は、1996年の中頃にサン・マイクロシステムズのジョン・ボサックが、このアクティビティに関する宣言を起草しアクティビティの共同作業者を募ることで、始まった。ボサックは、SGMLとウェブの双方を経験していた人々の小さなコミュニティと良好な関係を築いていた。ボサックは、自分の作業においてマイクロソフトから支援を受けた。
XMLの仕様は、11人のメンバーからなるワーキンググループにより編集され[22] 、だいたい150人から構成される Interest Group のメンバーから支援を受けて、作成された。技術的な論議が Interest Group のメーリングリストで提起され、提起された論議は、合意形成により解決された。合意形成ができなかった場合は、ワーキンググループのメンバーの投票による多数により、解決された。このアクティビティで行われた設計上の決定とその根拠の記録は、Michael Sperberg-McQueen が1997年12月4日に編集した[23] 。このアクティビティでは、 ジェームズ・クラークが、技術リーダとして貢献した。クラークの貢献として特筆されるのは、空要素 "<空/>" の導入と、この技術の名称 "Extensible Markup Language" (XML) の命名である。この技術の名称として、他に提案され吟味されたものの一部を次に示す。
XML仕様のワーキンググループではジョン・ボサックが議長を務めた。このワーキンググループではジェームズ・クラークが技術リーダを務めた。ワーキンググループの共同エディタは、もともとはティム・ブレイと Michael Sperberg-McQueen であった。このアクティビティのプロジェクトの途中で、ブレイはネットスケープ・コミュニケーションズとのコンサルティングの契約を結んだ。このブレイとネットスケープの契約に対しては、マイクロソフトが強く抗議した。ブレイは、エディタの役割を一時的に辞することを要請された。このことに関して、ワーキンググループでは激しい議論が行われた。この議論は、最終的にはマイクロソフトの Jean Paoli が第3の共同エディタに就くことで解決した。なおXMLワーキンググループには、日本人としてはただ一人村田真がメンバーとして1997年に参加した。
XMLワーキンググループは、直接会って活動したことは数回しかなかった(最初の会議は1997年8月22日)。 XML仕様の設計は、電子メールと週に一度の電話会議の双方を有機的に活用することにより、成し遂げられた。 XML仕様の設計では、SGMLの欠点を解決すべく文法を簡素化した。 XML仕様における設計上のいくつかの大きな決定は、1996年の7月から11月までの間の12週間の真剣な作業のなかで行われた。この12週間の作業の後 (1996年11月) に、XMLの最初のワーキングドラフトが公表された[24] 。その後も1997年をとおして設計作業は続けられ、XML 1.0 は、 1998年 2月10日にW3Cの勧告となった。
XML 1.0 は、ワーキンググループが目標としていた次の目標を達成したと、評価する人々が多い。
技術者にとってはXMLはSGMLよりも習得しやすい技術であり、また処理系の開発が容易になったことで低い費用でXML技術を利用できるようになった。現在ではXMLは広く普及している技術である。
XMLの前身であるSGMLと同様にXMLでも、いくつかの冗長な構文要素があり、要素記述子の繰り返しを仕様に含んでいる。文書を短くすることは、XMLワーキンググループでは、XMLの構造において本質的な問題とは見なされなかった。
XMLは、 ISO標準Standard Generalized Markup Language (SGML) のサブセットである。 XMLのほとんどはSGMLから変更されずに採り入れられている。 XMLがSGMLから採り入れられている技術的な要素には次のものが含まれる。
XMLがSGMLから採り入れなかった技術要素としては、SGML宣言がある (XMLでは文書の文字符号化方式としてUTF-8とUTF-16を採用している) 。
XMLの他の技術的起源としては、次の3つが挙げられる。
XML仕様の設計に関する議論のなかで開発された革新的な考え方には、次のものが含まれる。
2010年1月現在の時点では、XMLには2つのバージョンがある。
XML 1.0 と XML 1.1 は、要素名と属性名に使うことができる文字集合において異なっている。 XML 1.0 では、 Unicode 2.0 で定義された文字集合のみ要素名および属性名として使うことができる。 Unicode 2.0 の文字集合には、世界で使われているほとんどの文字が含まれている。しかし Unicode 2.0 の文字集合には Unicode 2.0 より新しいバージョンで追加された文字は含まれていない。こうした Unicode の新しいバージョンで追加された文字としては、 モンゴル語 、 クメール語 (カンボジア語) 、 アムハラ語 、 ビルマ語などの文字が、含まれる。
XML 1.1 においては、ほとんどのUnicode文字をXML文書の文字列データや属性値として使うことができる。また Unicode の現在のバージョンで定義されていない文字でさえ、使うことができる。 XML 1.1 の方式では、いくつかの文字については使うことができないが、その他の全ての文字は使うことができる。一方で XML 1.0 では、仕様で明示的に規定された文字集合のみを、XML文書の文字列データや属性値として使うことができる。このため XML 1.0 では、Unicode の新しいバージョンで追加される文字を扱うことはできない。
XML文書の文字列データや属性値について、XML 1.1 では XML 1.0 より多くの制御文字を使うことができる。しかし「堅牢性」の観点から、XML 1.1 で使えるようになった制御文字の多くは、 文字参照としてXML文書内に記述しなければならない。 XML 1.1 で使えるようになった制御文字には、2つの改行コードが含まれる。この2つの改行コードは、XML 1.1 の処理系では空白記号として扱われる。制御文字のうちこの空白記号として扱われる制御文字のみが、XML 1.1 で文字参照を使わずに直接にXML文書に記述することができる。
現在、XML 2.0 に関する議論が行われている。 XML-SW (SW は、skunk works スカンクワークスの意味) が、XMLの最初の設計者の一人によって書かれた。 XML-SW には、XML 2.0 はどのようなものかということについての、いくつかの提案を含んでいる。その内容は次のとおりである。
World Wide Web Consortium (W3C) では、XML Binary Characterization (XMLバイナリ表現) のワーキンググループが活動しており、同ワーキンググループでは、XMLインフォメーションセットをバイナリ形式に符号化するために、 ユースケースと特性を調査する予備研究を行っている。このワーキンググループは、公的な標準を制定することが認可されているわけではない。 XMLは定義上明確にテキストに基づいているため、 ITU-TとISOは、それぞれが定めるバイナリインフォメーションセットに対して、混乱を避けるためにFast Infosetの名前を使っている (参照: ITU-T Rec. X.891 | ISO/IEC 24824-1) 。
2005年の10月に、Scientigoという小さな企業が、同企業の2つの特許US Patent 5,842,213とUS Patent 6,393,426をXMLを使うことに対して適用することを、公的に表明した。この2つの特許は、「特定の『階層構造ではない』統合されていない中立的な形式での、[データの]モデリングと格納と転送」を対象としている。特許申請によると、この2つの特許は1997年と1999年に提出された。 Scientigoの最高経営責任者 (CEO) である Doyal Bryant は、この2つの特許を「金銭に換える」という願望を述べたが、同社は「世界を敵にするつもりはない」と言明した。 Bryant は、Scientigoは自社の2つの特許についていくつかの大企業と話し合っていると述べた[27] 。
XMLを使う人々や企業に在籍していない専門家たちは、Scientigoの主張に対して懐疑的で批判的な立場で反応した。一定の人々は、Scientigoをパテント・トロールであると述べた。ティム・ブレイは、この2つの特許がXMLを対象とするという主張は「ばかげている」と述べた[28] 。
XMLに関係する多くの先行技術がSGMLを含めて存在している。
多くの論者がXMLに対してさまざまな批判を行ってきた。こうした批判は、XMLの長所と潜在的な欠点に対する言及を含んでいる[29] 。
XMLは実のところ売春婦にドレスアップしたデータに過ぎない。
デイブ・トーマス[30]
先述したISOの標準群のほかに、XML関連では次の文書が発行されている。
アプリケーションソフトウェアからXML文書を読み書きするためのアプリケーションプログラミングインタフェース (API)
| |||||||||||
