2012-01-18 16 views
2

XSDにはこの機能がありますかどうかはわかりませんが、どうすればよいかわかりません。送信タイプが「submit_one」の場合、レポートには値A、B、またはCしか指定できません。送信タイプが「submit_two」の場合、レポートの値はX、Y、Zのいずれかになります。 XMLスキーマ定義ファイル?XSD要素の依存関係の制限

これらは、両方ともこのスキーマを使用する有効なXMLファイルです。あなたは二つの別々の「提出」タイプの、一つの「制限セット」のための1つを定義する必要があり、あなたがやりたいの検証の種類については

<submission type="submit_one"> 
    <reports> 
     <report>A</report> 
     <report>B</report> 
    </reports> 
</submission> 

<submission type="submit_two"> 
    <reports> 
     <report>X</report> 
     <report>Y</report> 
    </reports> 
</reports> 

これが有効なXMLではないでしょう

<submission type="submit_one"> 
    <reports> 
     <report>X</report> 
     <report>Z</report> 
    </reports> 
</submission> 

答えて

3

XSD 1.0のみを実行している場合、それはできません。 XSD 1.0プロセッサをSchematronエンジンと組み合わせることができれば、それを実行できます。

また、XSD 1.1プロセッサにアクセスできる場合は、< xsd:assert />を使用して解決するか、代替タイプを使用できます。詳細についてはhereをご覧ください。

0

ともう一方のためのもの。

残念ながら、これを行うと、同じノード名を2つの異なるタイプ間でスキーマ内の同じ位置で共有することはできません。

+0

ええ、それは私の問題です。そのノード名が同じである必要があります。私のXSDは、政府が作成したスキーマを検証しようとしています。これは、このような頭痛を引き起こします。 – Spidy