L
Larry
I believe the .Net XmlValidatingReader should fail when validating XML
that contains a ComplexType element with white space when the
ComplexType element has the mixed attribute set to false in the XSD used
for validation.
XSD fragment:
<xs:element name="TRSellerBuyerData">
<xs:complexType mixed="false">
<xs:sequence>
<xs:element ref="BuyerSellerReferrorFlag" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
XML fragment:
<TRSellerBuyerData>
</TRSellerBuyerData>
XML Spy will catch the valdation error and report: "Text not allowed
inside element 'TRSellerBuyerData'
But the following code does not catch the validation error. Is this a
bug in XmlValidatingReader - or am I missing code to catch this? I
assume by XSD is correct since XmlSpy catches the error.
XmlTextReader textReader = new XmlTextReader(reader);
textReader.WhitespaceHandling = WhitespaceHandling.All; //this is the
default
textReader.Normalization = false; //this is the default
XmlValidatingReader validatingReader = new XmlValidatingReader(textReader);
validatingReader.ValidationType = ValidationType.Schema;
validatingReader.Schemas.Add(schemaCollection);
try
{
while(validatingReader.Read());
}
catch(Exception ex)
{
Debug.WriteLine(ex.Message);
}
-Larry
that contains a ComplexType element with white space when the
ComplexType element has the mixed attribute set to false in the XSD used
for validation.
XSD fragment:
<xs:element name="TRSellerBuyerData">
<xs:complexType mixed="false">
<xs:sequence>
<xs:element ref="BuyerSellerReferrorFlag" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
XML fragment:
<TRSellerBuyerData>
</TRSellerBuyerData>
XML Spy will catch the valdation error and report: "Text not allowed
inside element 'TRSellerBuyerData'
But the following code does not catch the validation error. Is this a
bug in XmlValidatingReader - or am I missing code to catch this? I
assume by XSD is correct since XmlSpy catches the error.
XmlTextReader textReader = new XmlTextReader(reader);
textReader.WhitespaceHandling = WhitespaceHandling.All; //this is the
default
textReader.Normalization = false; //this is the default
XmlValidatingReader validatingReader = new XmlValidatingReader(textReader);
validatingReader.ValidationType = ValidationType.Schema;
validatingReader.Schemas.Add(schemaCollection);
try
{
while(validatingReader.Read());
}
catch(Exception ex)
{
Debug.WriteLine(ex.Message);
}
-Larry