XML / XSD バリデーター
サーバーサイドサンプル
検証結果
XSD スキーマ
XML ドキュメント
技術的な詳細
XML / XSDバリデーターの仕組み
このツールでできること
このXML XSDバリデーターは、サーバーサイド処理を使用してXMLドキュメントをXML Schema定義に対して検証します。このツールは、スキーマで定義された構造、データ型、要素の順序、属性要件を検証します。検証に失敗した場合、可能であれば行番号と列番号とともに具体的なエラーを報告します。バリデーターは、名前空間、複合型、シーケンス制約、パターンマッチングや値制約などのスキーマファセットを処理します。
例: 書籍カタログの検証
このXSDスキーマでは、書籍に整数のIDと小数の価格が必要だとします:
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element><book id="abc"><price>not-a-number</price></book>のような無効なXMLは、ID属性とprice要素の両方について型制約エラーにより検証に失敗します。
一般的なユースケース
開発者は、SOAP APIとの統合、設定ファイルの検証、またはデータ交換形式の処理においてXML Schema検証を使用します。一般的なシナリオには、公開スキーマに対するAPIレスポンスの検証、デプロイ前の設定ファイルのチェック、ETLパイプラインにおけるデータ品質の確保などがあります。このバリデーターは、データが本番システムに到達する前に、型の不一致、必須要素の欠落、要素順序の誤りを検出するのに特に有用です。
検証エンジンと制限事項
このツールは、libxmljsのNode.jsバインディングを介してlibxml2を使用し、XML Schema 1.0に準拠しています。バリデーターはセキュリティのためスキーマを完全にサーバーサイドで処理し、外部リソースの取得やネットワークベースのimportの解決は行いません。安全性のため外部エンティティ処理(XXE)は無効化されています。スキーマのincludeおよびimportは、参照されるすべてのスキーマがメインのXSD内容内に提供されている場合にのみ機能します。
- ネットワークアクセス:セキュリティのためブロック
- スキーマimport:インライン必須、外部解決なし
- 外部エンティティ:無効(XXE対策)
- 処理制限:妥当なサイズ制限が適用されます
サーバーサイド処理とクライアントサイド処理の比較
基本的な構文検証であれば、クライアントサイドでのXML整形式チェックで十分です。しかし、XSD検証には専用のエンジンが必要です。なぜなら、ブラウザにはXML Schemaプロセッサが含まれていないためです。サーバーサイド検証は一貫した結果を保証し、継承やインポートなどの複雑なスキーマ機能を扱え、潜在的に悪意のあるXMLコンテンツからのセキュリティ分離も提供します。