public void SetSchemaLocation()
{
if (string.IsNullOrEmpty( _schemaPath ))
throw new Exception( "The Schema Path has not been set." );
var dao = new SchemaDAO();
List<DocumentBean> schemas = dao.GetSchemas();
//List<string> list = Directory.GetFiles( _schemaPath, "*.xsd" ).ToList();
//-------------------------------------//
//--- Read schemas from file system ---//
//-------------------------------------//
//foreach (String fileName in list)
foreach (DocumentBean schemaBean in schemas)
{
try
{
string fileName = Path.Combine( _schemaPath, schemaBean.documentName );
FileInfo fi = new FileInfo( fileName );
if (!fi.Exists || fi.LastWriteTime < schemaBean.dateUpdated ) //We need to test if the database was updated
File.WriteAllBytes( fileName, schemaBean.documentContent );
XmlSchema myschema = XsdUtils.ReadSchema( fileName );
//XmlSchema myschema = XsdUtils.ReadSchemaFromText( Encoding.UTF8.GetString(schemaBean.documentContent));
String targetNamespace = myschema.TargetNamespace;
var schemaSet = new XmlSchemaSet();
schemaSet.ValidationEventHandler += ValidationCallback;
schemaSet.Add( myschema.TargetNamespace, fileName );
//schemaSet.Add(myschema);
schemaSet.Compile();
if (!_schemaSets.ContainsKey( targetNamespace ))
_schemaSets.Add( targetNamespace, schemaSet );
foreach (XmlSchema schema in schemaSet.Schemas())
{
if (myschema.SourceUri.Equals( schema.SourceUri ))
myschema = schema;
}
if (!_schemas.ContainsKey( myschema.TargetNamespace ))
{
_schemas.Add( myschema.TargetNamespace, myschema );
try
{
_schemaCollection.Add( myschema );
}
catch (Exception e)
{
OnError( e.Message, e );
}
}
}
catch (Exception e)
{
OnError( e.Message, e );
}
}
LoadSchemaItems();
}