私は(スキーマにマッチしたシンプルなxmlファイルと並んでたXMLDocumentでそれを使用して)テストの検証動作のために使用していた以下のスキーマがありますおろか、私はこのスキーマでもコンパイルしないと予想.NETでのXML ID制約の検証に関する問題?
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="testSchema.xsd" targetNamespace="testSchema.xsd">
<xs:element name="multiEle" type="typeOne">
<xs:key name="keyOne">
<xs:selector xpath="./eleOne" />
<xs:field xpath="@boolTwo" />
</xs:key>
</xs:element>
<xs:complexType name ="typeOne">
<xs:sequence>
<xs:element name="eleOne" type="xs:string"/>
<xs:sequence>
<xs:element name="eleTwo" type="xs:decimal" />
<xs:element name="eleThree">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:boolean">
<xs:attribute name="boolTwo" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:element name ="eleFour">
<xs:complexType>
<xs:sequence>
<xs:element name="eleOne">
<xs:complexType>
<xs:sequence>
<xs:element name="eleFive" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="eleSix" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice>
<xs:element name="eleOne" type="xs:string"/>
<xs:element name="eleTwo" type="xs:decimal" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:schema>
を検証し、このような属性が存在しなかった要素の属性を指すアイデンティティ制約があるためです。さらに、何の属性は、これをしたXMLドキュメントに指定されていなかった。
<?xml version="1.0" encoding="utf-8"?>
<multiEle xmlns="testSchema.xsd">
<eleOne>eleOne1</eleOne>
<eleTwo>2</eleTwo>
<eleThree boolTwo="anySimpleType">true</eleThree>
<eleFour>
<eleOne>
<eleFive></eleFive>
</eleOne>
<eleSix>anyType</eleSix>
</eleFour>
<eleOne>abc</eleOne>
</multiEle>
しかし、私には、スキーマをコンパイルすることを発見し、任意の例外をスローせず、検証のXmlDocumentが(ハンドラにnullを指定した)こと。私が紛失しているものがありますか?
XPathクエリで名前空間を指定する必要があることをすべて忘れてしまった、それは私が欠けていたものです。名前空間の不足を修正したら、正しく失敗しました。ありがとうございます! –