Hello,
Am I doing something wrong or is it a bug?
What I’m trying to do is this:
I create a dataset. Load a schema, read my XML and bind the dataset to a datagridview.
Not too complicated, but the thing is that the XML is not validated the way I want it to be validated.
What I want is an XML file with exactly 18 digits. The schema looks like this:
[CODE]
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" finalDefault="" id="BLA" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element msdata:IsDataSet="true" msdata:Locale="en-US" name="BLA">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="MEASUREMENT">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element minOccurs="1" maxOccurs="1" block="restriction" name="EANCODE">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([0-9])*" />
<xs:minLength value="18" />
<xs:maxLength value="18" />
<xs:whiteSpace value="collapse" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
[/CODE]
The XML file looks like this. I adapted the XML data a little to force a validation error, but it doesn’t seem like it is validating at all except when I put in a 19 digit string.
[CODE]
<?xml version="1.0" standalone="yes"?>
<BLA>
<MEASUREMENT>
<EANCODE>123456789012345678</EANCODE>
</MEASUREMENT>
<MEASUREMENT>
<EANCODE>12345678901234567</EANCODE>
</MEASUREMENT>
<MEASUREMENT>
<EANCODE>12345678901234567A</EANCODE>
</MEASUREMENT>
<MEASUREMENT>
<EANCODE>123456789012345678</EANCODE>
</MEASUREMENT>
</BLA>
[/CODE]
The code for loading the schema and the XML is pretty basic:
[CODE]
xmlDS = new DataSet();
xmlDS.ReadXmlSchema(@”EAN.XSD”);
xmlDS.ReadXml(@”EAN.XML”);
this.dataGridView1.DataSource = xmlDS.Tables["MEASUREMENT"];
[/CODE]
Does anyone have a clue?