Xml 未验证xsd密钥

Xml 未验证xsd密钥,xml,Xml,有人能解释为什么我的密钥没有被强制执行吗 <xs:element name="Cats"> <xs:complexType> <xs:sequence maxOccurs="Unbounded"> <xs:element name="cat" type="cattype"/> </xs:sequence> </xs:complexType> <xs:key name="Cat

有人能解释为什么我的密钥没有被强制执行吗

<xs:element name="Cats">
  <xs:complexType>
    <xs:sequence maxOccurs="Unbounded">
       <xs:element name="cat" type="cattype"/>
     </xs:sequence>
  </xs:complexType>
  <xs:key name="CatsKey">
    <xs:selector xpath="cat" />
    <xs:field xpath="cat_id"/>
  </xs:key>
</xs:element>

<xs:complexType name="cattype">
<xs:sequence>
  <xs:element name="cat_id" type="xs:nonNegativeInteger"/>
</xs:sequence>
</xs:complexType>

现在是xml

  <cats>
    <cat>
      <cat_id>1</cat_id>
    </cat>
    <cat>
      <cat_id>1</cat_id>  <-- this should fail, as cat_id 1 already exists
    </cat>
  </cats>

1.

1您可能希望在以下站点上查看示例17-2,因为它似乎涵盖了您正在尝试做的事情


编辑:反馈是密钥确实需要是唯一的,因此我删除了响应的这一部分以避免混淆。

您的数据可能在名称空间中吗?如果是这样的话,您就陷入了一个著名的陷阱:在XPath表达式中使用非限定名称来引用带名称空间的元素。

感谢您的澄清。我将编辑我的回复,这样就不会让其他人感到困惑!