Mit C# und .net 3.5 Ich versuche, ein XML-Dokument gegen ein Schema zu validieren, das enthält.xmldocument und verschachtelte Schemas
Die Schemata und es umfasst sind, wie unten
Schema1.xsd -> schließen base.xsd
Wenn ich versuche, die Schema1 hinzufügen ->
another.xsd another.xsd umfassen. xsd zum XmlDocument erhalte ich den folgenden Fehler.
Typ 'YesNoType' ist nicht deklariert oder ist kein einfacher Typ.
Ich glaube, ich bekomme diesen Fehler, weil die Datei base.xsd nicht enthalten ist, wenn ich das Schema Schema1.xsd lade.
Ich versuche, die XmlSchemaSet-Klasse zu verwenden, und ich setze das XmlResolver-uri auf den Speicherort der Schemas.
HINWEIS: Alle Schemas leben unter dem gleichen Verzeichnis E: \ Dev \ Main \ XmlSchemas
Hier ist der Code
string schemaPath = "E:\\Dev\\Main\\XmlSchemas";
XmlDocument xmlDocSchema = new XmlDocument();
XmlSchemaSet s = new XmlSchemaSet();
XmlUrlResolver resolver = new XmlUrlResolver();
Uri baseUri = new Uri(schemaPath);
resolver.ResolveUri(null, schemaPath);
s.XmlResolver = resolver;
s.Add(null, XmlReader.Create(new System.IO.StreamReader(schemaPath + "\\Schema1.xsd"), new XmlReaderSettings { ValidationType = ValidationType.Schema, XmlResolver = resolver }, new Uri(schemaPath).ToString()));
xmlDocSchema.Schemas.Add(s);
ValidationEventHandler valEventHandler = new ValidationEventHandler
(ValidateNinoDobEvent);
try
{
xmlDocSchema.LoadXml(xml);
xmlDocSchema.Validate(valEventHandler);
}
catch (XmlSchemaValidationException xmlValidationError)
{
// need to interogate the Validation Exception, for possible further
// processing.
string message = xmlValidationError.Message;
return false;
}
Kann ein XmlDocument gegen ein jemand mich in die richtige Richtung in Bezug auf die Validierung Schema mit verschachtelten Includes.
Übrigens gibt es so etwas wie C# .NET nicht –