4

この機能は存在しないと思いますが、最後にもう一度やりたいと思いました。

検証しようとしているXML構造があります(この構造を制御することはできません)。

この構造では、複数の「条件」タグを持つことができます。各タグには「タイプ」属性があり、そのタグの残りの属性は、そのタイプが何であるかによって異なります。たとえば、次のようになっている場合:

<Condition type="LessThan" maxAmount="3">
   <Effect type="Add" value="2" />
</Condition>
<Condition type="GreaterThan" minAmount="1">
   <Effect type="Transform" action="Skew" value="4"  />
   <Effect type="Transform" action="Stretch" value="3" />
</Condition>
<Condition type="Range" minAmount="1" maxAmount="3">
   <Effect type="YouGetTheDrift" />
</Condition>

次に、タイプがLessThanの場合、maxAmountタグなどのみが必要です。

前の属性の値に基づいて属性を必須/オプション/禁止にする方法はありませんね。

タイプの固定値とタイプごとのカスタム属性セットを使用して、複数のConditionタグを使用して選択肢を作成しようとしましたが、同じ名前のタグについて不満がありました。

4

2 に答える 2

4

説明している機能の名前は「共起制約」であり、XSD1.0ではサポートされていません。

XSD 1.1では、「条件付き型割り当て」構文を使用してこれを行うことができます。この構文では、要素の型はその属性の値に依存します。アサーションを使用してそれを行うこともできます。XSD 1.1は現在最終的なW3C勧告であり、XercesとSaxonに実装されています。

于 2012-07-10T12:55:14.810 に答える
1

そうです、この機能は存在しません。

Schematronで実行できますが、プロジェクトに適合するかどうかはわかりません。

于 2012-07-10T12:32:21.857 に答える