有没有办法让元素在相同的序列(选择,全部)中唯一,但不是在整个文档中。
例如,这应该有效(约翰和简都将弗朗西斯作为中间名):
<students xsi:noNamespaceSchemaLocation="stack.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<student>
<name>John</name>
<middlename>Francis</middlename>
<middlename>Mike</middlename>
<lastname>Doe</lastname>
</student>
<student>
<name>Jane</name>
<middlename>Francis</middlename>
<lastname>Doe</lastname>
</student>
</students>
但这应该行不通(约翰有两个相似的中间名):
<students xsi:noNamespaceSchemaLocation="stack.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<student>
<name>John</name>
<middlename>Francis</middlename>
<middlename>Francis</middlename>
<lastname>Doe</lastname>
</student>
</students>
到目前为止,我已经尝试过关注我的 .xsd 文件:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="students">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:sequence minOccurs="0" maxOccurs="5">
<xs:element name="middlename" type="xs:string"/>
</xs:sequence>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="middlename_unique">
<xs:selector xpath="student/middlename"/>
<xs:field xpath="."></xs:field>
</xs:unique>
</xs:element>
</xs:schema>
但这只会使中间名一般来说是独一无二的,而不是单个学生......