I've got the some code to try and validate some xml. Against my schema,
the "Good" xml (below) produces a couple of warnings, which I don't
care about. The "Bad" xml (also below), produces warnings as well, but
*should* be producing errors. The XML validator at
http://apps.gotdotnet.com/xmltools/x...r/Default.aspx reports
that the "Good" xml produces warnings, but the "bad" xml produces
errors, which is what I want to reproduce in my code. The code and all
the xml/xsd are below. Any help would be greatly appreciated!
Jonas
sp******@gmail. com
private static void TestValidation( )
{
//string rss = @"c:\t1\po.xml" ;
string rss = @"c:\t1\pobad.x ml";
string file = @"c:\t1\po.xsd" ;
StreamReader mem = new StreamReader(rs s, Encoding.Defaul t);
XmlReaderSettin gs settings = new XmlReaderSettin gs();
settings.Valida tionEventHandle r += new
ValidationEvent Handler(valRead er_ValidationEv entHandler);
settings.Valida tionType = ValidationType. Schema;
settings.XmlRes olver = null;
settings.Valida tionFlags =
XmlSchemaValida tionFlags.Repor tValidationWarn ings;
settings.Schema s.Add(null, file);
XmlReader rdr = XmlReader.Creat e(mem, settings);
while (rdr.Read())
{
}
rdr.Close();
mem.Close();
}
private static void valReader_Valid ationEventHandl er(object sender,
ValidationEvent Args e)
{
if (e.Severity == XmlSeverityType .Error)
{
Console.WriteLi ne(e.Message);
Console.WriteLi ne(e.Severity.T oString());
}
}
"Invalid" XML:
<?xml version="1.0"?>
<thing xmlns="http://purl.org/dc/elements/1.1/">
<thing1>hello there!</thing1>
</thing>
XSD
<xsd:schema xmlns:xsd="http ://www.w3.org/2001/XMLSchema">
<xsd:element name="purchaseO rder" type="PurchaseO rderType"/>
<xsd:element name="comment" type="xsd:strin g"/>
<xsd:complexTyp e name="PurchaseO rderType">
<xsd:sequence >
<xsd:element name="shipTo" type="USAddress "/>
<xsd:element name="billTo" type="USAddress "/>
<xsd:element ref="comment" minOccurs="0"/>
</xsd:sequence>
<xsd:attribut e name="orderDate " type="xsd:date"/>
</xsd:complexType >
<xsd:complexTyp e name="USAddress ">
<xsd:sequence >
<xsd:element name="name" type="xsd:strin g"/>
<xsd:element name="street" type="xsd:strin g"/>
<xsd:element name="city" type="xsd:strin g"/>
<xsd:element name="state" type="xsd:strin g"/>
<xsd:element name="zip" type="xsd:decim al"/>
<xsd:any namespace="##ot her" processContents ="lax" minOccurs="0"
maxOccurs="unbo unded"/>
</xsd:sequence>
<xsd:attribut e name="country" type="xsd:NMTOK EN"
fixed="US"/>
</xsd:complexType >
</xsd:schema>
"Valid" XML
<?xml version="1.0"?>
<purchaseOrde r xmlns:dc="http://purl.org/dc/elements/1.1/"
orderDate="1999-10-20">
<shipTo country="US">
<name>Alice Smith</name>
<street>123 Maple Street</street>
<city>Mill Valley</city>
<state>CA</state>
<zip>90952</zip>
<dc:wtf>hello </dc:wtf>
</shipTo>
<billTo country="US">
<name>Robert Smith</name>
<street>8 Oak Avenue</street>
<city>Old Town</city>
<state>PA</state>
<zip>95819</zip>
</billTo>
<comment>Hurr y, my lawn is going wild!</comment>
</purchaseOrder>