Using the XsdInference Namespace
Like XmlDiffPatch,
XsdInference can be added to your Global Assembly
Cache for your convenience, and you can add it as a reference in your
Visual Studio .NET project or Makefile.
The
XsdInference namespace contains one class,
Infer. Infer has a single
overloaded method, InferSchema( ), which returns
an XmlSchemaCollection. One overload takes just an
XmlReader, and the other one takes an
XmlReader and an
XmlSchemaCollection.
Given an
XmlReader for a particular XML document, you can
create an XML Schema definition and write it to the console using the
code in Example 14-1.
using System;
using System.Xml;
using System.Xml.Schema;
using Microsoft.XsdInference;
public class XsdInfer {
public static void Main(string [ ] args) {
try {
XmlSchemaCollection schemas = null;
Infer infer = new Infer( );
XmlTextReader reader = new XmlTextReader(args[0]);
schemas = infer.InferSchema(reader);
foreach (XmlSchema schema in schemas) {
schema.Write(Console.Out);
}
} catch (Exception e) {
Console.Error.WriteLine(e);
}
}
}The usage of the Infer class is fairly straightforward. In Example 14-1, you can see that an instance of
Infer is created, and its
Infer( ) method is called. Infer(
) returns an XmlSchemaCollection.
Example 14-2 shows
another pattern of usage for the Infer class, in
which several XML documents are used to progressively refine an XML
Schema. The changed lines are highlighted.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access