2011-07-21 10 views
4

XMLファイルの小さな断片をスキーマに対して検証する必要があります。基本的には、「XML文書Yの要素Xは、スキーマZで定義されているその型に準拠していますか?理由を説明するメッセージが表示されない場合は、これは、これらの型にも課される制限を考慮しなければならない(例えば、maxLength、minInclusive)。スキーマに対してXML要素を検証する

これは可能ですか?

+0

なぜドキュメント全体を検証しないのですか?また、何を試しましたか? –

+0

私は、与えられた値が許容可能性のパラメータに入るかどうかという点で、主に面白いです。文書が有効かどうかは本当に気にしません。私はまだ何も試していない。私は.NETにはとても新しいので、ドキュメントを掘り起こすのではなく、どこから始めるべきかわかりません。私の唯一のアイデアは、スキーマを解析して関連する部分を引き出すことです。次に、データを制限と照合してエラーを報告しますが、これはバリデーターが私にとって何をするかのように思えます。 –

+0

[XmlSchemaクラス](http://msdn.microsoft.com/en-us/library/system.xml.schema.xmlschema.aspx)を見ましたか? –

答えて

1

これは私の予想以上のものでした。解決策は、検証したい要素をルートとして含む新しいスキーマを作成することでした。このスキーマがスキーマセットに追加されると、完全なドキュメントと同じようにフラグメントを検証することができます。

3

C#でこれを行うことについてはわかりませんが、XQueryまたはXSLT 2.0で簡単に実行できます。 XSLT 2.0では、それはです:

<xsl:copy-of select="doc('doc.xml')//selected/element" validation="strict"/> 

とXQueryでそれが

validate strict {doc('doc.xml')//selected/element} 

だ必要なのはあなたの選択した環境で動作するスキーマ対応のXQueryまたはXSLT 2.0プロセッサです。

+0

ありがとうございます。残念なことに、これらのどちらも、私が知る限り、.NETでは利用できません。 –

+0

もちろん、SaxonやXQSharpなどの.NET環境で動作するXQueryとXSLT 2.0プロセッサも数多くあります。 –

関連する問題