外れているのはあなたの期待だと思います(コードは問題ないようです)。これが私が言いたいことです: 以下の XSD を考えてみましょう:
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" xmlns="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="tryme" minOccurs="0" maxOccurs="unbounded">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-z]+"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="really">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="wrong"/>
<xsd:element name="stillwrong">
<xsd:simpleType>
<xsd:restriction base="xsd:int"/>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="version" fixed="1"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
そして、このサンプル XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1" xmlns="http://tempuri.org/XMLSchema.xsd">
<tryme>tryme1</tryme>
<tryme>tryme1</tryme>
<really>
<wrong/>
<stillwrong>a</stillwrong>
</really>
</root>
コードは次の 3 つのエラーを報告するはずです。
Error occurred while loading [], line 4 position 17
The 'http://tempuri.org/XMLSchema.xsd:tryme' element is invalid - The value 'tryme1' is invalid according to its datatype 'String' - The Pattern constraint failed.
Error occurred while loading [], line 5 position 17
The 'http://tempuri.org/XMLSchema.xsd:tryme' element is invalid - The value 'tryme1' is invalid according to its datatype 'String' - The Pattern constraint failed.
Error occurred while loading [], line 8 position 18
The 'http://tempuri.org/XMLSchema.xsd:stillwrong' element is invalid - The value 'a' is invalid according to its datatype 'Int' - The string 'a' is not a valid Int32 value.
Document1.xml is XSD 1.0 invalid.
<wrong/>
ただし、サンプルから要素を削除すると、次のようになります。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1" xmlns="http://tempuri.org/XMLSchema.xsd">
<tryme>tryme1</tryme>
<tryme>tryme1</tryme>
<really>
<stillwrong>a</stillwrong>
</really>
</root>
(最も) 発生する可能性が高いエラーは次のとおりです。
Error occurred while loading [], line 4 position 17
The 'http://tempuri.org/XMLSchema.xsd:tryme' element is invalid - The value 'tryme1' is invalid according to its datatype 'String' - The Pattern constraint failed.
Error occurred while loading [], line 5 position 17
The 'http://tempuri.org/XMLSchema.xsd:tryme' element is invalid - The value 'tryme1' is invalid according to its datatype 'String' - The Pattern constraint failed.
Error occurred while loading [], line 7 position 4
The element 'really' in namespace 'http://tempuri.org/XMLSchema.xsd' has invalid child element 'stillwrong' in namespace 'http://tempuri.org/XMLSchema.xsd'. List of possible elements expected: 'wrong' in namespace 'http://tempuri.org/XMLSchema.xsd'.
Document1.xml is XSD 1.0 invalid.
番号は同じですが、.NET バリデーター (少なくともストック バリデーター) は、<stillwrong>
どの XSD ノードと一致するかを実際には認識していないため、今は文句を言いません。
要点は、バリデーターが作業を放棄する原因となるエラーが存在する可能性があることです。
私が投稿したシナリオで、コードがリストされているすべてのエラーを取得した場合、コードは、組み込みのバリデータを使用して .NET で実行できるすべてです。私がリストしたすべてを取得していない場合は、私もあなたの問題を見逃しています.