動物の要素がある場合:
<animal name="dog"/>
name 属性の値として次のものを使用できます。
- 犬
- 猫
- 鳥
- $(ANY_STRING)
$(ANY_STRING) は、一部のソフトウェアが実行して後で検証する単純な名前と値の置換です (ANY_STRING は文字通り任意の文字列です)。この要素の XML スキーマはどのようになりますか? 既知の 3 つの名前に限定するのは簡単です。
<xs:simpleType name="AnimalNames">
<xs:restriction base="xs:string">
<xs:enumeration value="dog"/>
<xs:enumeration value="cat"/>
<xs:enumeration value="bird"/>
</xs:restriction>
</xs:simpleType>
$(ANY_STRING) の制限も同様に簡単です (xs:pattern を使用して制限します)。しかし、属性は単純なタイプしかない可能性があるため、属性が列挙のリストまたは $(ANY_STRING) 値に含まれる可能性があることを指定することは可能ですか?
私が検討した別のオプションは、以下のパターンを制限することです。
<xs:pattern value="dog|cat|bird|$(.*)"/>
可能な値のリストが大きくなるにつれて、それはかなり厄介になりますが。
もちろん、最も簡単なオプションは文字列型を宣言することですが、それよりも制限を加えたいと思います。