Generating a Schema from an XML Document
xsd
can be used to generate a best-guess
schema from any XML document. It will make certain assumptions about
the structure of your document, based on the data found in the
example you provide. For example, it will always set
minOccurs
to 1
and
maxOccurs
to unbounded
for each
element. It will also always use the xs:sequence
compositor for lists of elements, even if your example XML document
has elements in various orders. This can present the odd situation of
the sample document used to generate the XSD failing validation with
the XSD generated from it. Finally, the type
attribute of each xs:element
and
xs:attribute
element defaults to
xs:string
.
For these reasons, you should never take the generated XSD for granted. Always edit it to make sure it will fit your real requirements.
Using the purchase order document from Chapter 2, you can generate an XSD with the following command line:
xsd po1456.xml
You can go ahead and use XSD to generate
the source code. I’ve already done so, and tweaked
the generated code to ensure that this XSD validates the PO
correctly. These edits are highlighted in Example 8-1. I intentionally introduced a couple of
mistakes in my edits. I’ve done this to point out
how XmlSchema
validates an XSD, and
I’ll explain that more in a moment.
<?xml version="1.0" encoding="utf-8"?> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> ...
Get .NET & XML now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.