private void Process( XmlDocument xml )
{
var nsmgr = new XmlNamespaceManager( xml.NameTable );
//TODO: Interate through database list of available schema namespaces
nsmgr.AddNamespace( "tsf", ATMLContext.NS_STDTSF );
nsmgr.AddNamespace( "std", ATMLContext.NS_STDBSC );
nsmgr.AddNamespace( "std1", ATMLContext.NS_STDBSC );
nsmgr.AddNamespace( "this", ATMLContext.NS_STDTSFLIB );
nsmgr.AddNamespace( "xsi", ATMLContext.NS_XSI );
var settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += ValidationCallBack;
TextReader tr = new StringReader( _interfaceSchema );
XmlSchema schema = XmlSchema.Read( tr, ValidationCallBack );
if (schema.Attributes.Count > 0)
{
IDictionaryEnumerator enumerator = schema.Attributes.GetEnumerator();
while (enumerator.MoveNext())
{
var attribute = (XmlSchemaAttribute) enumerator.Value;
Console.WriteLine( _tsf.name + @"." + attribute.Name + @" (attribute)" );
}
}
String root = _tsf.name;
XmlSchemaObjectCollection schemaItems = schema.Items;
if (schemaItems != null)
{
foreach (XmlSchemaObject o in schemaItems)
{
var childElement = (XmlSchemaElement) o;
root += String.Concat( ".", childElement.Name );
IterateOverElement( root, childElement );
}
}
}