条件付きタグの作成方法は、次の例では、どちらかまたはタグが必要です。に両方が存在することはできません。それらの1つだけ。このような XML スキーマを作成するにはどうすればよいですか?
Ex:
<tool>
<tool_name>xyz</tool_name>
</tool>
or
<tool>
<tool_file>xyz.xml</tool_file>
</tool>
条件付きタグの作成方法は、次の例では、どちらかまたはタグが必要です。に両方が存在することはできません。それらの1つだけ。このような XML スキーマを作成するにはどうすればよいですか?
Ex:
<tool>
<tool_name>xyz</tool_name>
</tool>
or
<tool>
<tool_file>xyz.xml</tool_file>
</tool>
要素ツールの要素宣言を作成します。その型は、toolType と呼ばれる複合型です。これは、xs:element name="tool_name" と xs:element name="tool_file" の 2 つの子を持つ xs:choice であるコンテンツ モデルを持つ複合型である必要があります。
あなたの例に名前空間を導入しました (おそらくあなたが望むよりも複雑ですが、良い習慣です): スキーマ:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://example.com/tools"
targetNamespace="http://example.com/tools"
elementFormDefault="qualified">
<xsd:element name="tool">
<xsd:complexType>
<xsd:choice>
<xsd:element name="tool_name" type="xsd:string" />
<xsd:element name="tool_file" type="xsd:string" />
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
これは有効です:
<tool xmlns="http://example.com/tools">
<tool_name>hammer</tool_name>
</tool>
これではありません:
<tool xmlns="http://example.com/tools">
<tool_name>hammer</tool_name>
<tool_file>hammer.png</tool_file>
</tool>