在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。 –