如何定义元素的内容是唯一的?

时间:2009-11-02 16:58:32

标签: xsd

与在users-tag中输入的所有其他电子邮件地址相比,我如何定义emailaddress-element的内容必须是unquie?

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="users">
    <xs:sequence>
        <xs:element name="user">
            <xs:element name="name" type="xs:string" />
            <xs:element name="emailaddress" type="xs:string" />
        </xs:element>
    </xs:sequence>
</xs:element>

2 个答案:

答案 0 :(得分:4)

我认为这就是你所追求的目标:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="users">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="user">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="name" type="xs:string"/>
              <xs:element name="emailaddress" type="xs:string"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>

    <!-- Make sure each user has a unique email address -->
    <xs:unique name="email-address-is-unique">
      <xs:selector xpath="user"/>
      <xs:field xpath="emailaddress"/>
    </xs:unique>

  </xs:element>
</xs:schema>

我还冒昧地在原始模式中添加了省略的元素以保证完整性。

因此,selector元素的xpath属性定义了唯一性约束正在使用的元素,然后字段元素具有xpath,这些xpath确定所选元素之间需要唯一的元素。

答案 1 :(得分:0)

您使用&lt; xs:unique&gt;标签如here

所述