2012-01-10 7 views
1

のスキーマサブセットを使用してxmlサブセットを検証現在、私はいくつかのセクションでXMLドキュメントを構築し、最後に結合されたxmlを単一のスキーマに対して検証するソリューションを用意しています。同じスキーマのサブセットを使用して、各セクションを個別に検証することは可能ですか?c#.net XmlDocument

答えて

1

ほとんどの場合、答えは「はい」です。免責のために、理論的には、私の提案のいくつかを不可能にするXMLスキーマを意図的に書くことができますが、それはXSDオーサリングでの悪い習慣に過ぎません。簡単な解決策について

、以下の仮定が真でなければならない:

  • 部が整形XMLです。 XmlElementノードを連結しています。例:

    <セクション要素...コンテンツ属性> ...より多くのコンテンツ < /セクション要素>

  • の各セクションがマージされているが、持っていますXMLスキーマセット内のグローバル要素宣言に一致します。セクションのいずれかにxsi:type属性を使用すると、ややこしいことがありますが、修正するのは難しくありません。

検証がXmlReaderあなたが連結しているノード上でXmlNodeReaderだろう共通のコード、になります。 XmlReaderSettingsを通常どおり使用してください。

上記は、XSD(XSDを知るための設計時間依存性はありません)でも機能します。以下のいずれかの場合、コードはXSDに一致する必要があります。

XMLスキーマに一致するグローバル要素がない場合は、一致する各ローカル要素宣言の種類を調べる必要があります。型がグローバルである場合は、セクションに一致するダミー要素をグローバル型(Venetian Blindのオーサリングスタイルを前提とします)のメモリに簡単に作成できます。

匿名(ロシア人ドールスタイル以上)の場合でも、メモリ内の匿名型のコピーであるタイプのグローバル要素を作成することで、偽装することさえできます。

関連する問題