在XML Schema中可能使用简单类型表示一个列表和,它有进一步的限制,即列表中的每个项目只能出现一次?换言之,是否可以在XML模式中定义一个“set”简单类型?定义一个xsd:列表,其中每个项目必须是唯一的?
例如,使用下面的架构:
<xs:schema version="1.1" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="item">
<xs:restriction base="xs:token">
<xs:enumeration value="A"/>
<xs:enumeration value="B"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="itemSet">
<xs:list itemType="item"/>
</xs:simpleType>
<xs:element name="root">
<xs:complexType>
<xs:attribute name="set" type="itemSet"/>
</xs:complexType>
</xs:element>
</xs:schema>
这份文件证实:
<root set="A B"/>
不过,所以没有这个文件,,我想验证失败因为B
重复:
<root set="A B B"/>
我怀疑单独使用XML Schema是不可能的,但我不太清楚,所以我在寻找确认。
不幸的是我没有一个理解1.1的处理器(哎呀!我以为我这么做了。)另外NMTOKEN对开始字符的限制太多。我想我必须使用'xs:list'创建'itemList'类型,然后使用'xs:assert'限制*另一个*'itemSet'类型,是否正确? –
是的,当然你可以在这个例子中用你自己的用户自定义列表类型代替xs:NMTOKENS。 –