1

xsd:keyとxsd:keyrefを使用して、ある要素の値が別の要素で定義されていることを検証できます。有効な値が使用されていることを確認するためにスキーマでこれを行いますが、ある要素で指定されたすべての値が別の要素の子で使用されていることも検証できるようにします。

<elementList>
   <listEntry>Entry1</listEntry>
   <listEntry>Entry2</listEntry>
   <listEntry>Entry3</listEntry>
</elementList>
<elementOperations>
   <operation name="Entry1">Operation1</operation>
   <operation name="Entry3">Operation3</operation>
</elementOperations>

この例では、name属性がEntry2を指定している要素がないため、検証エラーが発生するようにします。これはXSDスキーマ検証でまったく可能ですか?

4

1 に答える 1

2

オペレーション名に重複する値を許可しない場合は可能です。この場合、反対方向を指す別のキー/ keyrefペアを追加するだけです(つまり、キーは操作名になります)。

重複が発生する可能性がある場合は、XSD1.0だけでは実行できません。Schematronがここで役立ちます。または、XSD 1.1がサポートされている環境で作業している場合は、XSD1.1を使用しますxsd:assert

于 2013-02-19T18:11:53.313 に答える