XSD ファイル形式とは?
.xsd ファイルには、XML ドキュメント要素の形式的な記述(XML テキスト形式で保存されたデータ定義)が含まれています。これは XML ファイルが有効な XML ドキュメントと見なされるために従わなければならない一連のルールを定義します。検証パーサーは、これらのルールに違反するドキュメントを拒否します。
.xsd ファイルには固有のインターネットメディアタイプ(MIME タイプ)識別子がなく、通常の XML と同じタイプである application/xml または text/xml を共有します。ファイルは通常、XML 宣言(<?xml version="1.0"?>)と、名前空間 http://www.w3.org/2001/XMLSchema にバインドされたルート要素 <xs:schema> で始まります。XSD データは名前空間に整理できます。主なスキーマコンポーネントは以下の通りです:
- 要素の宣言
- 属性の宣言
- データ型 - 制限、選択リスト、またはプリミティブ型に基づく単純型または複合型
- 要素または属性の再利用可能なグループ(マクロに類似)
XSD 仕様は、W3C(World Wide Web Consortium)の協力により 2001 年に策定されました。XSD は、類似の .dtd ドキュメント定義形式よりも、型指定されたデータや名前空間のサポートなど、より多くの機能を提供します。.wsdl などの Web サービス記述ファイルは、通常、メッセージ構造のために XSD 型定義を埋め込んでいます。XSD 仕様ドキュメントは 3 つの部分に分かれています:
- 第 0 部 Primer(入門) - 標準の概要と基本事項が含まれており、
.xsdを扱う技術者以外のユーザーが参照することが一般的です。 - 第 1 部 Structures(構造)
- 第 2 部 Datatypes(データ型)
第 1 部と第 2 部はページ数が多く、専門的な言語で書かれています。仕様の第 2 版は 2004 年にリリースされ、2012 年には XSD 1.1 が W3C によって承認されました。これにより、アサーションや条件付き型割り当てが追加されました。XSD ファイルは XML ドキュメントのメタデータを保存するために使用されますが、開発者がコードや人間が読める形式のドキュメント記述を生成するためにも使用されます。
セキュリティと安全性
リスク: LOWXSD はプレーンテキストであり、コードを実行することはできないため、開いて読むことは安全です。唯一の現実的なリスクは間接的なものです。<xs:import> や <xs:include> は外部スキーマを取り込むことができます(XXE スタイルの外部エンティティ攻撃は XML パーサーを標的にするものであり、スキーマ自体を標的にするものではありません)。そのため、信頼できない XML を検証する場合は、エンティティ展開や外部取得を無効にしてください。ファイルに埋め込まれた <xs:documentation> は、内部のフィールドやシステムの詳細を明らかにする可能性があるため、マルウェアのリスクというよりは情報漏洩の考慮事項となります。
形式の詳細
概要XSD ファイルを開くプログラム
技術的詳細
詳細仕様| ファイル形式タイプ | プレーンテキスト XML ドキュメント(UTF-8 エンコード) |
| MIME タイプ | application/xml または text/xml(すべての XML ファイルと共有。XSD 固有の MIME タイプは存在しません) |
| ルート要素 | <xs:schema> または <xsd:schema>。W3C 名前空間 http://www.w3.org/2001/XMLSchema にバインドされます |
| ファイルシグネチャ | なし(プレーンテキスト)。ファイルは慣習的に XML 宣言 <?xml version="1.0"?> で始まります |
| 名前空間プレフィックスの慣習 | xs: または xsd:(どちらも有効ですが、現代では xs: がより一般的です) |
| 組み込み型システム | 44 以上のプリミティブ型および派生型:string, integer, decimal, dateTime, boolean, base64Binary, anyURI など |
| 型の派生 | 複合型は制限または拡張による派生をサポートし、単純型は制限、リスト、または結合をサポートします |
| 検証制約 | コンテンツモデル(sequence, choice, all)、minOccurs/maxOccurs による多重度、および pattern, length, enumeration などのファセット |
| 名前空間のサポート | targetNamespace 属性でスキーマの名前空間を宣言します。xs:import, xs:include, xs:redefine ディレクティブでスキーマを結合します |
| アノテーション機構 | <xs:annotation> 内に、人間が読めるテキスト用の <xs:documentation> と、マシンが読めるメタデータ用の <xs:appinfo> を含みます |
| XSD 1.1 の追加機能 | アサーション(xs:assert)、条件付き型割り当て(xs:alternative)、および緩和された共起制約 |
| DTD との比較 | 型指定された名前空間対応の検証において DTD に取って代わりました。DTD にはデータ型や名前空間のサポートがありません |
| RELAX NG との比較 | .rng よりもツールによるサポートが広範です。RELAX NG はより単純ですが、XSD のような型の継承がありません |
| ツール統合 | Visual Studio、VS Code、Altova XMLSpy でサポートされており、自動補完、リアルタイム検証、スキーマ駆動のコード生成が可能です |
| 一般的な使用コンテキスト | 設定ファイルの検証、SOAP/WSDL Web サービス、データ交換コントラクト、OOXML オフィスドキュメント形式 |
| リリース日 | 2001 (W3C XML Schema 1.0 Recommendation); 1.1 in 2012 |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.w3.org |
XSD の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。XSD ファイルについて最初の質問をしてみましょう。
よくある質問
XSD ファイルは何に使用されますか?
XSD ファイルを開くにはどうすればよいですか?
XML と XSD の違いは何ですか?
XML ファイルを XSD に対して検証するにはどうすればよいですか?
xmllint --schema file.xsd data.xml、XML エディタの «検証» コマンド、またはオンラインの XSD バリデータを使用します。XML がスキーマのルールに違反している箇所を正確に報告します。