Xml XSD唯一性验证

Xml XSD唯一性验证,xml,xsd,unique,Xml,Xsd,Unique,我尝试了以下方法来测试元素是否具有唯一标识符。到目前为止,.net已经说过xml对于xsd是有效的,但它不应该是有效的 XML: <Document> <Record> <Id>1</Id> </Record> <Record> <Id>1</Id> </Record> </Document> 1. 1. XSD: <?x

我尝试了以下方法来测试元素是否具有唯一标识符。到目前为止,.net已经说过xml对于xsd是有效的,但它不应该是有效的

XML:

<Document>
   <Record>
     <Id>1</Id>
   </Record>
   <Record>
     <Id>1</Id>
   </Record>
</Document>

1.
1.
XSD:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Filing_new"
           targetNamespace="http://tempuri.org/Filing_new.xsd"
           elementFormDefault="qualified"
           xmlns="http://tempuri.org/Filing_new.xsd"
           xmlns:mstns="http://tempuri.org/Filing_new.xsd"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <!-- Document Schema -->
    <xs:element name="Document">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Record" minOccurs="1" maxOccurs="unbounded">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="Id" type="xs:integer" />
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
        <xs:unique name="sequence">
            <xs:selector xpath="Record" />
            <xs:field xpath="Id" />
        </xs:unique>
    </xs:element>
</xs:schema>


我做错了什么?

它将在无名称空间模式中工作

在模式中,XPath表达式中的元素必须使用目标命名空间限定
http://tempuri.org/Filing_new.xsd
(模式中声明了
mstns
前缀,因此您可以使用它)。如果将
mstns:
前缀添加到XPath表达式中的元素,则应该可以:

<xs:selector xpath="mstns:Record" />
<xs:field xpath="mstns:Id" />