Xml xs:unique如何实现到属性中?

Xml xs:unique如何实现到属性中?,xml,xsd,unique,xsd-validation,Xml,Xsd,Unique,Xsd Validation,我想在XML文件中传递乘客列表中每个属性的唯一性 我的xml文件如下所示: <passengers> <passenger resnumb="872-AA"> <name>John</name> <surname>Doe</surname> <datebirth>1997-10-01</datebirth> <priceti

我想在XML文件中传递乘客列表中每个属性的唯一性

我的xml文件如下所示:

<passengers>
    <passenger resnumb="872-AA">
        <name>John</name>
        <surname>Doe</surname>
        <datebirth>1997-10-01</datebirth>
        <pricetix>1321</pricetix>
        <telephone>+48 128382812</telephone>
        <dateofbuy>2015-10-01</dateofbuy>
        <comment>Confirmed</comment>
    </passenger>
    <passenger resnumb="962-AA">
        <name>Jack</name>
        <surname>Lawnmower</surname>
        <datebirth>1993-01-01</datebirth>
        <pricetix>1243</pricetix>
        <telephone>+48 183722842</telephone>
        <dateofbuy>2015-09-01</dateofbuy>
        <comment>Confirmed</comment>
    </passenger>
</passengers>
    <xs:complexType name="passengerslist">
  <xs:sequence>
   <xs:element name="passenger" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="surname" type="xs:string"/>
      <xs:element name="datebirth" type="xs:date"/>
      <xs:element name="pricetix" type="xs:integer"/>
      <xs:element name="telephone" type="xs:string"/>
      <xs:element name="dateofbuy" type="xs:date" minOccurs="0"/><!--Punkt 3-->
      <xs:element ref="comment"   minOccurs="0"/>
     </xs:sequence>
     <xs:attribute name="resnumb" type="PNR" use="required"/><!--Tutaj mamy punkt 4-->
    </xs:complexType>
    <xs:unique name="unique-resnumb">
     <xs:selector xpath="passenger"/>
     <xs:field xpath="@resnumb"/>
    </xs:unique>
   </xs:element>
  </xs:sequence>
 </xs:complexType>

约翰
雌鹿
1997-10-01
1321
+48 128382812
2015-10-01
证实
杰克
割草机
1993-01-01
1243
+48 183722842
2015-09-01
证实
XML文件如下所示:

<passengers>
    <passenger resnumb="872-AA">
        <name>John</name>
        <surname>Doe</surname>
        <datebirth>1997-10-01</datebirth>
        <pricetix>1321</pricetix>
        <telephone>+48 128382812</telephone>
        <dateofbuy>2015-10-01</dateofbuy>
        <comment>Confirmed</comment>
    </passenger>
    <passenger resnumb="962-AA">
        <name>Jack</name>
        <surname>Lawnmower</surname>
        <datebirth>1993-01-01</datebirth>
        <pricetix>1243</pricetix>
        <telephone>+48 183722842</telephone>
        <dateofbuy>2015-09-01</dateofbuy>
        <comment>Confirmed</comment>
    </passenger>
</passengers>
    <xs:complexType name="passengerslist">
  <xs:sequence>
   <xs:element name="passenger" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="surname" type="xs:string"/>
      <xs:element name="datebirth" type="xs:date"/>
      <xs:element name="pricetix" type="xs:integer"/>
      <xs:element name="telephone" type="xs:string"/>
      <xs:element name="dateofbuy" type="xs:date" minOccurs="0"/><!--Punkt 3-->
      <xs:element ref="comment"   minOccurs="0"/>
     </xs:sequence>
     <xs:attribute name="resnumb" type="PNR" use="required"/><!--Tutaj mamy punkt 4-->
    </xs:complexType>
    <xs:unique name="unique-resnumb">
     <xs:selector xpath="passenger"/>
     <xs:field xpath="@resnumb"/>
    </xs:unique>
   </xs:element>
  </xs:sequence>
 </xs:complexType>

我的代码还包含使用正则表达式模式创建的自定义类型:

 <xs:simpleType name="PNR">
  <xs:restriction base="xs:string">
   <xs:pattern value="\d{3}-[A-Z]{2}"/>
  </xs:restriction>
 </xs:simpleType>

如何修改属性“resnumb”以使预订编号唯一


谢谢,

考虑发布最小但完整的样本。基本上将
xs:unique
移动到
xs:element
声明,例如

<xs:element name="passengers" type="passengerslist">
    <xs:unique name="unique-resnumb">
     <xs:selector xpath="passenger"/>
     <xs:field xpath="@resnumb"/>
    </xs:unique>
</xs:element>