Правильная проверка документов XML с помощью XSD
Как разработчик с большим опытом использования и производства XML, я 'никогда раньше не взаимодействовал со схемами. Впервые это происходит на самом деле для меня.
натыкаюсь наособенность" что я считаю больше ошибки, которая хорошо документирована.
При использовании XDocument.Validate () кажется, что в некоторых случаях документ будет действительным, если он нене соответствует указанной схеме. Мне кажется, что это, скорее всего, недостаток в моем понимании взаимосвязи между XSD, пространствами имен XML и ожидаемыми процессами проверки.
Поэтому я передаю вам мой образец XML, мой образец XSD и мой код проверки.
XML - это НАМЕРЕННО неверный документ.
XSD раньше проверял это. (Опять же, это намеренно НЕПРАВИЛЬНЫЙ документ для вышеуказанного XML)
И наконец код проверки.
private static void ValidateDocument(XDocument doc)
{
XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add(null, XmlReader.Create(new StreamReader(XmlSchemaProvider.GetSchemaStream("Encounters.xsd"))));
doc.Validate(schemas, (o, e) =>
{
//This is never hit!
Console.WriteLine("{0}", e.Message);
Assert.False(e.Severity == XmlSeverityType.Error);
});
}
Мне было интересно, если кто-то может объяснить, что я делаю неправильно. Я чувствуюЯ делаю некоторые неверные предположения о том, как это ДОЛЖНО работать. Мне кажется, что использование одного xsd против совершенно не связанного XML-документа было бы недопустимым.