我已尝试以下方法来测试元素是否具有唯一标识符。到目前为止,.net已经说xml对xsd有效,但它不应该是。
XML:
<Document>
<Record>
<Id>1</Id>
</Record>
<Record>
<Id>1</Id>
</Record>
</Document>
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>
我做错了什么?
答案 0 :(得分:2)
它可以在无命名空间架构中工作。
在模式中,XPath表达式中的元素必须使用目标名称空间http://tempuri.org/Filing_new.xsd
(在模式中声明了mstns
前缀)进行限定,因此您可以使用它。如果将mstns:
前缀添加到XPath表达式中的元素,它应该可以工作:
<xs:selector xpath="mstns:Record" />
<xs:field xpath="mstns:Id" />