要素のオープンまたはクローズによって決定される属性の要件を示すためのスキーマがありますか。例えば、私はopenという属性に 'test'という属性が必要ない要素を持っていますが、それが閉じられていれば必要です。オープン/クローズド要素に基づくXSD制限
<element name="employee" >
blah!
</element>
[OK]を
<element name="employee" />
失敗 - 必須の属性 '試験'。
要素のオープンまたはクローズによって決定される属性の要件を示すためのスキーマがありますか。例えば、私はopenという属性に 'test'という属性が必要ない要素を持っていますが、それが閉じられていれば必要です。オープン/クローズド要素に基づくXSD制限
<element name="employee" >
blah!
</element>
[OK]を
<element name="employee" />
失敗 - 必須の属性 '試験'。
"open"は、その要素にテキストノードの子があることを意味し、「閉じている」とは意味しません。つまり、要素にはテキストノードの子または属性がありますが、両方ではなく(?)ではないということです。
これは共起制約として分類されており、XSD 1.0では実行できません。 XSD 1.1のアサーションで行うことができます
<xs:element name="employee" type="...">
<xs:assert test="string(.) or @name"/>
</xs:element>
XSD 1.1のサポートは現在XercesとSaxonで利用できます。
いいえ、それを行う方法はありません。 (私はリファレンスを引用したいが、非機能を参照するのは難しい)
一般に、これはXSDが提供するものを超えたステップです。非常に少数のケース(IDREFのような)では、別のデータムを参照することによって1つのデータムを検証する手段を提供します。 XSD 1.1には、あなたが必要とするかもしれない新しいassertion supportがいくつか用意されていますが、仕様は現時点での作業草案です。