XSD(XMLスキーマ定義)は、World Wide Web Consortium(W3C )の勧告であり、Extensible Markup Language( XML )ドキュメント内の要素を正式に記述する方法を規定しています。プログラマーはこれを使用して、ドキュメント内の各アイテムの内容を検証し、それが配置されている要素の説明に準拠していることを確認できます。[ 1 ]
他のすべてのXMLスキーマ言語と同様に、XSDは、そのスキーマに従って「有効」とみなされるためにXML文書が準拠しなければならない一連のルールを表現するために使用できます。しかし、他のほとんどのスキーマ言語とは異なり、XSDは、文書の有効性を判定することで、特定のデータ型に準拠した情報セットが生成されることを意図して設計されました。このような検証後の情報セットは、 XML文書処理ソフトウェアの開発に役立ちます。
XML Schema は、2001 年 5 月にW3C 勧告として公開され、[ 2 ]いくつかのXML スキーマ言語の1 つです。これは、W3C によって勧告ステータスを獲得した最初のXML用の独立したスキーマ言語でした。特定の W3C 仕様としての XML Schema と、スキーマ言語全般を説明するために同じ用語を使用することとの混同のため、ユーザー コミュニティの一部では、この言語をW3C XML Schema の頭文字をとってWXSと呼び、他の部分では XML Schema Definition の頭文字をとってXSDと呼んでいました。[ 3 ] [ 4 ]バージョン 1.1 では、W3C は XSD を推奨名として採用することを選択し、この記事ではその名前を使用しています。
XSD 仕様は、参考文献の付録で、DTDやDDML、SOX、XML-Data、XDRなどの初期の XML スキーマの取り組みの影響を認めています。これらの提案のそれぞれから機能を採用していますが、それらの間の妥協でもあります。これらの言語のうち、XDR と SOX は XML Schema が公開された後もしばらくの間使用され、サポートされていました。多くのMicrosoft製品が、2006 年 12 月にMSXML 6.0 (XML Schema を優先して XDR を廃止)がリリースされるまで XDR をサポートしていました。 [ 5 ] Commerce One社は、2004 年後半に破産を宣言するまで、SOX スキーマ言語をサポートしていました。
XMLのネイティブな文書型定義(DTD)にはない、XSDが提供する最も明白な機能は、名前空間の認識とデータ型、つまり、要素や属性の内容を、任意のテキストではなく、整数や日付などの値を含むものとして定義できる機能です。
XSD 1.0仕様は2001年に初版が公開され、多数の誤りを修正するために2004年に第2版が発行されました。XSD 1.1は2012年4月にW3C勧告となりました。
厳密に言えば、スキーマとはメタデータの抽象的な集合であり、要素と属性の宣言、複雑な型と単純な型の定義といったスキーマ構成要素から成り立っています。これらの構成要素は通常、これらの構成要素のソース言語定義を含むスキーマ文書の集合を処理することによって作成されます。しかし、一般的には、スキーマ文書はしばしばスキーマと呼ばれます。
スキーマ文書は名前空間ごとに整理されます。すべての名前付きスキーマコンポーネントは対象名前空間に属し、対象名前空間はスキーマ文書全体のプロパティです。スキーマ文書は、同じ名前空間の他のスキーマ文書を含めることができ、異なる名前空間のスキーマ文書をインポートすることもできます。
インスタンス ドキュメントがスキーマに対して検証されるとき(このプロセスは評価と呼ばれます)、検証に使用するスキーマは、検証エンジンへのパラメータとして指定することも、インスタンス ドキュメントから 2 つの特別な属性 と を使用して直接参照することもできますxsi:schemaLocation。xsi:noNamespaceSchemaLocation(後者のメカニズムでは、検証を呼び出すクライアントが、ドキュメントが正しいスキーマに対して検証されていることを確信できる程度にドキュメントを信頼している必要があります。「xsi」は、名前空間「https://www.w3.org/2001/XMLSchema-instance」の慣用的な接頭辞です。)
XMLスキーマ文書のファイル名拡張子は通常「.xsd」です。XSD用の固有のインターネットメディアタイプはまだ登録されていないため、RFC 7303に従って「application/xml」または「text/xml」を使用する必要があります。
スキーマの主な構成要素は以下のとおりです。
その他のより専門的なコンポーネントには、注釈、アサーション、表記法、およびスキーマ全体に関する情報を含むスキーマコンポーネントが含まれます。
単純型(データ型とも呼ばれる)は、要素または属性に現れるテキスト値を制約します。これは、XMLスキーマがDTDと異なる重要な点の1つです。たとえば、属性には有効な日付または小数値のみを保持できるように制約することができます。
XSD は、19 種類の基本データ型( anyURI、base64Binary、boolean、date、dateTime、decimal、 、double、duration、float、 、hexBinary、 、gDay、gMonth、gMonthDay、gYear、 、gYearMonth、NOTATION、QName、string、time) を提供します。XSD では、次の 3 つのメカニズムによって、これらの基本データ型から新しいデータ型を構築できます。
仕様書自体には25種類の派生型が定義されており、さらにユーザーは独自のスキーマ内で派生型を定義することができる。
データ型を制限するために利用できるメカニズムには、最小値と最大値の指定、正規表現、文字列の長さに関する制約、および10進数値の桁数に関する制約などがあります。XSD 1.1では、XPath 2.0式を使用して任意の制約を指定できるアサーションが再び追加されました。
複合型は、要素の子要素やテキスト、属性など、要素に許可されるコンテンツを記述します。複合型の定義は、属性の使用例のセットとコンテンツモデルで構成されます。コンテンツモデルには、次のような種類があります。
複合型は、別の複合型から、制限(基本型が許可する要素、属性、または値の一部を禁止する)または拡張(追加の属性や要素の出現を許可する)によって派生させることができます。XSD 1.1 では、複合型はアサーション(コンテンツに対して評価され、真と評価されなければならないXPath 2.0式)によって制約される場合があります。
XMLスキーマに基づく検証後、検証中に暗黙的に用いられたデータモデルを用いて、XML文書の構造と内容を表現することが可能になります。XMLスキーマのデータモデルには以下が含まれます。
この情報群は、ポストスキーマ検証情報セット(PSVI)と呼ばれます。PSVIは、有効なXML文書に「タイプ」を付与し、オブジェクト指向プログラミング(OOP)パラダイムを用いて文書をオブジェクトとして扱うことを容易にします。
XMLスキーマを定義する主な理由は、XMLドキュメントを正式に記述することですが、結果として得られるスキーマは、単純な検証にとどまらない、他にも多くの用途があります。
このスキーマは、 XMLデータバインディングと呼ばれるコードを生成するために使用できます。このコードにより、XMLドキュメントの内容をプログラミング環境内でオブジェクトとして扱うことができます。
このスキーマは、XMLファイル構造の人間が読みやすいドキュメントを生成するために使用できます。これは、著者が注釈要素を使用している場合に特に役立ちます。ドキュメント生成に関する正式な標準規格は存在しませんが、Xs3pスタイルシートなど、高品質で読みやすいHTMLや印刷物を生成するツールが多数あります。
XML Schema は広く採用され、当初の目的をほぼ達成しているという点で成功しているものの、他のどの W3C 勧告よりも多くの厳しい批判を受けてきた。批判の優れた要約は、James Clark [ 6 ] 、 Anders Møller と Michael Schwartzbach [ 7 ] 、 Rick Jelliffe [ 8 ] 、および David Webber [ 9 ]によって提供されている。
一般的な問題:
表現可能性の実際的な限界:
技術的な問題:
XSD 1.1は2012年4月にW3C勧告となり、これはW3Cが承認した仕様であることを意味します。
XSD 1.1の主な新機能は以下のとおりです。
勧告案が策定されるまで、XSD 1.1では新しい数値データ型であるprecisionDecimalの追加も提案されていました。しかし、これは物議を醸し、開発の最終段階で仕様から削除されました。
W3C XMLスキーマ1.0仕様
W3C XMLスキーマ1.1仕様
他の