私は<key>
サブ要素を持っている必要があります<property>
要素のスキーマを作成しようとしている、と<val>
の1、<shell>
または<perl>
とオプション<os>
または<condition>
、およびサブ要素の順序は重要ではありませんよ。私はこのために<xs:all>
を使用して考え、理想的にはXMLスキーマ:なぜ<xs:all>には<choice>の子供がいませんか?どのようにこれをバイパスすることができますか?
<property>
<key>A</key>
<val>b</val>
</property>
<property>
<key>A</key>
<val>b</val>
<os>Windows</os>
</property>
<property>
<condition>a == 1</condition>
<key>A</key>
<perl>1+1</perl>
<os>unix</os>
</property>
:ここ
は有効な<property>
要素のためのいくつかのサンプルです
<xs:element name="property">
<xs:complexType>
<xs:all>
<xs:element name="key" type="xs:string" />
<xs:choice>
<xs:element name="val" type="xs:string" />
<xs:element name="perl" type="xs:string" />
<xs:element name="shell" type="xs:string" />
</xs:choice>
<xs:element name="os" type="xs:string" minOccurs="0" />
<xs:element name="condition" type="xs:string" minOccurs="0" />
</xs:all>
</xs:complexType>
</xs:element>
しかし、私は<xs:all>
に含めることができることが分かっただけで<xs:element>
ない<xs:choice>
。なぜ誰かがそれを説明できますか?
もっと重要なことに、誰かがそのような<property>
要素を検証する方法を提供できますか? <xs:all>
に任意元素として、私は、スキーマは3の1つのみが要素に存在することを検証する - <val>
、<perl>
と<shell>
-
は、私は三つの要素を置くことができます。これはできますか? (xmllintでテスト)選択のための代替グループの使用についてのイモリさんのコメントに基づいて
@splintor:質問を書くときに実際にプレビューウィンドウを見ましたか?私は、その半分は目に見えないものでした... – Tomalak
あなたは、同じプロパティー要素内で発生する可能性がありますか、またはどちらか一方が発生する可能性がありますか? –
@Tomalak:いいえ - 私はそのプレビューウィンドウを見逃しました。編集していただきありがとうございました。 – splintor