Używanie C# i .net 3.5 Próbuję sprawdzić poprawność dokumentu xml względem schematu, który zawiera.xmldocument i zagnieżdżone schematy
schematów i nie obejmuje są jak poniżej
Schema1.xsd -> obejmują another.xsd
another.xsd -> to base.xsd
Gdy próbuję dodać Schema1. xsd do XmlDocument otrzymuję następujący błąd.
Typ "YesNoType" nie jest zadeklarowany lub nie jest prostym typem.
Wierzę, że otrzymuję ten błąd, ponieważ plik base.xsd nie jest dołączany podczas ładowania schematu Schema1.xsd.
Próbuję użyć klasy XmlSchemaSet i ustawiam URI XmlResolver na lokalizację schematów.
UWAGA: Wszystkie schematy żyć w tym samym katalogu E: \ Dev \ Main \ XmlSchemas
Oto kod
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;
}
Czy ktoś może wskazać mi w dobrym kierunku, dotyczące potwierdzania XmlDocument Przeciw schemat z zagnieżdżonymi załącznikami.
Przy okazji, nie ma czegoś takiego jak C# .NET –