2

簡単な質問: xsd:enumeration タグに必須の属性を含めることはできますか?

詳細: たとえば、xsd で既にフルーツ xml タグを定義しているとします。fruit タグには、値が列挙型 FruitType である属性があります。それは次のように定義されています。

<xsd:simpleType name="FruitType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Apple" />
<xsd:enumeration value="Banana" />
<xsd:enumeration value="Peach" />
<xsd:enumeration value="Orange" />
</xsd:restriction>
</xsd:simpleType>

ユーザーが Apple 属性を持つ少なくとも 1 つのフルーツ タグを持っている必要があるように、Apple 列挙値を必須にしたいと考えています。xsd列挙でそのようなタグを使用することは可能ですか? xsd:enumeration タグに use="required" または minOccurs="1" を入れることができるのではないかと考えました。私にお知らせください。

ありがとうございました!

4

1 に答える 1

2

「ユーザーは、属性 Apple を持つ少なくとも 1 つの果物タグを持っている必要があります」とはどういう意味ですか? ドキュメントが有効であるためには、この値が各インスタンス ドキュメントのどこかに表示されなければならないということですか? それとも、より狭い範囲内 (FruitBasket 要素内など) ですか? どちらの場合も、これは列挙型のプロパティではなく、問題の要素またはドキュメントに対する制約です。

XSD 1.0 でこれを行う方法はないと思います。XSD 1.1 では、ほとんどの場合と同様に、アサーションで実行できます。例えば

<xs:element name="FruitBasket">
  ...
  <xs:assert test=".//Fruit = 'Apple'"/>
</xs:element>

XSD 1.1 は現在、Xerces と Saxon に実装されています。

于 2011-06-24T21:54:26.620 に答える