XMLスキーマ(W3C)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
XMLスキーマ(W3C)
ファイル名拡張子
.xsd
インターネットメディアタイプ
application / xml、text / xml
によって開発されたWorld WideWebコンソーシアム
フォーマットの種類XMLスキーマ言語
から拡張XML
標準1.0、パート1の構造(推奨)

1.0、パート2データ型(推奨)
1.1、パート1構造(推奨)

1.1、パート2データ型(推奨)

XSDXMLスキーマ定義)、世界の勧告・ワイド・ウェブ・コンソーシアム(W3C)、正式に拡張マークアップ言語(の要素を記述するための方法を指定するXML)ドキュメント。それが中に配置される要素の説明に付着を保証するために、文書内のアイテムの各コンテンツを確認するためにプログラマが使用することができる。[1]

すべてのXMLスキーマ言語と同様に、XSDを使用して、XMLドキュメントがそのスキーマに従って「有効」と見なされるために準拠する必要のある一連のルールを表現できます。ただし、他のほとんどのスキーマ言語とは異なり、XSDは、ドキュメントの有効性を判断することで、特定のデータ型に準拠した情報のコレクションを生成することも目的として設計されていますこのような検証後の情報セットは、XMLドキュメント処理ソフトウェアの開発に役立ちます。

歴史

2001年5月にW3C勧告として公開されたXMLスキーマ[2]は、いくつかのXMLスキーマ言語の1つです。これは、XMLがW3Cによって推奨ステータスを達成した最初の別個のスキーマ言語でした。特定のW3C仕様としてのXMLスキーマと、一般的なスキーマ言語を説明するための同じ用語の使用との間の混乱のため、ユーザーコミュニティの一部は、この言語をWXSと呼び、他の部分はW3CXMLスキーマの初期化と呼びました。それとしてXSD、XMLスキーマ定義のためのinitialism。[3] [4]バージョン1.1では、W3CはXSDを優先名として採用することを選択しました。これは、この記事で使用されている名前です。

参照のその付録では、XSD仕様はの影響を認めたDTDとのような他の初期のXMLスキーマの努力DDMLSOX、XML-データ、およびXDRを。これは、これらの提案のそれぞれから機能を採用しただけでなく、それらの間の妥協でいます。 XMLスキーマが発行された後、これらの言語のうち、XDR及びSOXは、しばらく使用してサポートされるように続けました。多くのマイクロソフト製品がリリースされるまでXDRをサポートMSXML 2006年12月(XMLスキーマの賛成でXDRを落とした)6.0 [5] コマースワン株式会社は、2004年後半に破産を宣言するまで、そのSOXスキーマ言語をサポートしていました。

XSDで提供され、XMLのネイティブドキュメントタイプ定義(DTD)で利用できない最も明白な機能は、名前空間の認識とデータ型です。つまり、要素と属性のコンテンツを、任意のテキストではなく整数や日付などの値を含むものとして定義する機能です。

XSD 1.0仕様は、2001年に最初に公開され、2004年に続いて、多数のエラーを修正するための第2版が発行されました。XSD 1.1は、2012年4月にW3C勧告なりました

スキーマとスキーマドキュメント

技術的には、スキーマはメタデータの抽象的なコレクションであり、スキーマコンポーネントのセット(主に要素と属性の宣言、および複雑で単純な型の定義)で構成されます。これらのコンポーネントは通常、これらのコンポーネントのソース言語定義を含むスキーマドキュメントのコレクションを処理することによって作成されます。ただし、一般的な使用法では、スキーマドキュメントはスキーマと呼ばれることがよくあります。

スキーマドキュメントは名前空間ごとに編成されます。指定されたすべてのスキーマコンポーネントはターゲット名前空間に属し、ターゲット名前空間は全体としてスキーマドキュメントのプロパティです。スキーマドキュメントには、同じ名前空間の他のスキーマドキュメントが含まれる場合があり、異なる名前空間のスキーマドキュメントインポートされる場合があります。

インスタンスドキュメントがスキーマに対して検証される場合(評価と呼ばれるプロセス)、検証に使用されるスキーマは、検証エンジンにパラメーターとして提供するか、2つの特別な属性を使用してインスタンスドキュメントから直接参照できます。 、xsi:schemaLocationおよびxsi:noNamespaceSchemaLocation。 (後者のメカニズムでは、クライアントが検証を呼び出して、ドキュメントが正しいスキーマに対して検証されていることを十分に信頼できるようにする必要があります。「xsi」は、名前空間「http://www.w3.org/2001/XMLSchema」の従来のプレフィックスです。 -インスタンス"。)

XMLスキーマドキュメントのファイル名拡張子は通常「.xsd」です。一意のインターネットメディアタイプはまだXSDに登録されていないため、RFC 3023に従って、「application / xml」または「text / xml」を使用する必要があります。

スキーマコンポーネント

スキーマの主なコンポーネントは次のとおりです。

  • 要素宣言、要素のプロパティを定義します。これらには、要素名とターゲット名前空間が含まれます。重要なプロパティは要素のタイプであり、要素が持つことができる属性と子を制約します。 XSD 1.1では、要素のタイプはその属性の値を条件とする場合があります。要素は置換グループに属している可能性があります。要素Eが要素Hの置換グループにある場合、スキーマでHの表示が許可されている場合は常に、その場所にEが表示される可能性があります。要素には整合性制約がある場合があります。特定の値が要素をルートとするサブツリー内で一意である必要があることを決定する一意性制約と、値が他の要素の識別子と一致する必要があることを決定する参照制約です。要素の宣言はグローバルでもローカルでもかまいません。インスタンスドキュメントの異なる部分の無関係な要素に同じ名前を使用できるようにします。
  • 属性のプロパティを定義する属性宣言この場合も、プロパティには属性名とターゲット名前空間が含まれます。属性タイプは、属性が取る可能性のある値を制約します。属性宣言には、デフォルト値または固定値(属性が取ることができる唯一の値)を含めることもできます。
  • シンプルで複雑なタイプこれらは、次のセクションで説明されています。
  • モデルグループ属性グループの定義。これらは本質的にマクロです。多くの異なる型定義で再利用できる要素と属性の名前付きグループです。
  • 属性の使用は、複合型と属性宣言の関係を表しており、それはそのタイプで使用される場合、属性が必須またはオプションであるかどうかを示します。
  • エレメント粒子は同様に、複合型および要素宣言の関係を示し、要素がコンテンツに表示されることができる時間の最小及び最大数を示します。要素粒子と同様に、コンテンツモデルには、文法の非終端記号のように機能するモデルグループ粒子を含めることができます。これらは、許可された要素のシーケンス内で選択と繰り返しの単位を定義します。さらに、ワイルドカードパーティクルが許可されます。これにより、一連の異なる要素(特定の名前空間にある場合は任意の要素)が許可されます。

その他のより特殊なコンポーネントには、注釈、アサーション、表記法、およびスキーマ全体に関する情報を含むスキーマコンポーネントが含まれます。

タイプ

単純型(とも呼ばれるデータ型)は、要素または属性に表示されることがあり、テキスト値を制約します。これは、XMLスキーマは、DTDのと異なっているより重要な方法の一つです。例えば、属性は、唯一の有効な日付または小数点数を保持するように制限される可能性があります。

XSDは、19個のセット提供するプリミティブデータタイプをanyURIbase64BinarybooleandatedateTimedecimaldoubledurationfloathexBinarygDaygMonthgMonthDaygYeargYearMonthNOTATIONQNamestring、およびtime)。これにより、次の3つのメカニズムによって、これらのプリミティブから新しいデータ型を構築できます。

  • 制限(許可された値のセットを減らす)、
  • リスト(値のシーケンスを許可)、および
  • ユニオン(いくつかのタイプから値を選択できます)。

25の派生型は仕様自体の中で定義されており、さらに派生型はユーザーが独自のスキーマで定義できます。

データ型を制限するために使用できるメカニズムには、最小値と最大値、正規表現、文字列の長さの制約、および10進値の桁数の制約を指定する機能が含まれます。XSD 1.1は、XPath 2.0式を使用して任意の制約を指定する機能である、アサーションを再び追加します

複合型は、要素とテキストの子およびその属性を含む、要素の許可されたコンテンツを記述します。複合型定義は、一連の属性の使用とコンテンツモデルで構成されます。コンテンツモデルの種類は次のとおりです。

  • 要素のみのコンテンツ。テキストは表示されません(空白または子要素で囲まれたテキストを除く)。
  • テキストは許可されているが子要素は許可されていない単純なコンテンツ
  • 空のコンテンツ。テキスト要素も子要素も許可されていません
  • 要素とテキストの両方を表示できる混合コンテンツ

複合型は、制限(基本型で許可されている一部の要素、属性、または値を禁止)または拡張(追加の属性と要素の表示を許可)によって、別の複合型から派生させることができます。XSD 1.1では、複合型はアサーションによって制約される場合があります。XPath2.0式は、trueと評価される必要のあるコンテンツに対して評価されます。

スキーマ検証後の情報セット

XMLスキーマベースの検証した後、の面で、XML文書の構造と内容を表現することができるデータモデル検証中に暗黙的でした。XMLスキーマのデータモデルが含まれています:

  • 語彙(要素名と属性名)
  • コンテンツモデル(関係と構造)
  • データの種類

この情報のコレクションは、Post-Schema-Validation Infoset(PSVI)と呼ばれます。PSVIは、有効なXMLドキュメントにその「タイプ」を与え、オブジェクト指向プログラミング(OOP)パラダイムを使用して、ドキュメントをオブジェクトとして扱うことを容​​易にします

XMLスキーマの二次利用

XMLスキーマを定義する主な理由は、XMLドキュメントを正式に記述することです。ただし、結果のスキーマには、単純な検証以外にも多くの用途があります。

コード生成

スキーマコードを生成するために使用することができる、と呼ばれるXMLデータバインディングこのコードは、XML文書の内容は、プログラミング環境内のオブジェクトとして扱うことができます。

XMLファイル構造ドキュメントの生成

スキーマを使用して、XMLファイル構造の人間が読める形式のドキュメントを生成できます。これは、作成者が注釈要素を利用した場合に特に便利です。ドキュメント生成の正式な標準はありませんが、Xs3pスタイルシートなど、高品質で読み取り可能なHTMLや印刷物を生成するツールが多数用意されています。

批評

XMLスキーマは広く採用されており、当初の目的をほぼ達成しているという点で成功していますが、おそらく他のW3C勧告よりも、多くの厳しい批判の対象となっています。批判の良い要約は、ジェームズ・クラーク[6]アンダース・モラーとマイケル・シュワルツバッハ[7]リック・イェリフ[8]とデビッド・ウェバーによって提供されています。[9]

一般的な問題:

  • 複雑すぎるため(仕様は非常に技術的な言語で数百ページ)、非専門家が使用するのは困難ですが、多くの非専門家はデータ形式を記述するためにスキーマを必要とします。W3C勧告自体は非常に読みにくいものです。ほとんどのユーザーは、W3CのXMLスキーマ入門書をはるかに理解しやすいと感じています
  • XSDには、正式な数学的仕様がありません。(これにより、スキーマの変更が下位互換性があることを証明するなど、スキーマについて推論することが困難になります。)
  • この言語には多くの驚きがあります。たとえば、要素の制限は属性の制限とは異なる働きをします。

表現力の実際的な制限:

  • XSDは、順序付けされていないコンテンツに対して非常に弱いサポートを提供します。
  • XSDは特定のルート要素を必要としません(したがって、最も単純なドキュメントでも検証するには追加情報が必要です)。
  • 混合コンテンツを記述する場合、文字データを制限することはできません(有効な文字のセットを指定することもできません)。
  • コンテンツと属性の宣言は、属性または要素のコンテキストに依存することはできません(これは、DTDの中心的な問題としてもリストされています)。
  • これは最初の設計要件でしたが、100%自己記述的ではありません(簡単な例として、前のポイントを参照してください)。
  • デフォルトを宣言とは別に指定することはできません(これにより、デフォルト値のみが異なるスキーマのファミリーを作成することが困難になります)。要素のデフォルトは、文字データ(マークアップを含まない)のみにすることができます。

技術的な問題:

  • 技術的には名前空間に準拠していますが、名前空間の精神に準拠していないようです(「資格のないローカル」など)。
  • XSD 1.0には、1つの属性の値または存在が他の属性の値または存在に依存していることを示す機能がありません(いわゆる共起制約)。これはXSD1.1で修正されています。
  • 提供されているXSDデータ型のセットは非常に任意です。[10]
  • 検証と拡張(タイプ情報とデフォルト値の追加)の2つのタスクは別々に保つ必要があります。

バージョン1.1

XSD 1.1は、2012年4月にW3C勧告なりました。これは、承認されたW3C仕様であることを意味します。

XSD1.1の重要な新機能は次のとおりです。

  • XPath 2.0式(Schematronから借用したアイデアを使用して、ドキュメントコンテンツに対するアサーションを定義する機能
  • 要素の属性の値に基づいて要素が検証されるタイプを選択する機能(「条件付きタイプ割り当て」)。
  • コンテンツモデルの明示的な要素が、モデルで許可されているワイルドカードと一致してはならないというルールを緩和します。
  • スキーマ内のすべてのタイプに適用されるワイルドカード(要素と属性の両方)を指定して、すべてが同じ拡張性ポリシーを実装するようにする機能。

提案された推奨案のドラフトまで、XSD 1.1は、新しい数値データ型、precisionDecimalの追加も提案していました。これは物議を醸すことが判明したため、開発の後期段階で仕様から削除されました。

も参照してください

参考文献

  1. ^ "定義XSD(XMLスキーマ定義) " TechTarget社は、2014年6月10日に取得しました
  2. ^ 「XMLおよびセマンティックWebW3C標準のタイムライン」 (PDF)2012-02-04。
  3. ^ スキーマを参照-W3C
  4. ^ W3C XMLスキーマ定義言語(XSD)1.1パート1:構造を参照してください
  5. ^ 「MSXML 6.0でXDRスキーマのサポートの除去」取得した2010年9月19日を
  6. ^ XMLスキーマ批判のジェームズクラーク要約、および代替としてRELAX NGのプロモーション https://web.archive.org/web/20150316212413/http://www.imc.org/ietf-xml-use/mail- archive / msg00217.html
  7. ^ AndersMøllerとMichaelI。Schwartzbachが、「XMLスキーマの問題」( http://cs.au.dk/~amoeller/XML/schemas/xmlschema-problems.html)を紹介します。
  8. ^ 2009年5月のRickJelliffeの批評、 https://web.archive.org/web/20090516232816/http://broadcast.oreilly.com/2009/05/w3c-please-put-xsd-11-on-hold 。 html
  9. ^ デイヴィッド・ウェバー2008年8月からOASISの比較と洞察ホワイトペーパー、 http://www.oasis-open.org/committees/download.php/29164/White%20Paper%20on%20CAM%20and%20XSD.pdf
  10. ^ この点は、UcheOgbujiによって増幅されています。XML階級闘争の詳細-O'ReillyONLamp Blog

さらに読む

外部リンク

W3C XML Schemaの1.0仕様

W3CXMLスキーマ1.1仕様

他の