Walidacja dokumentów a flaga ReportValidationWarnings
Z grubsza, definiuje ona dokument, w którym węzeł root nazywa się "słownik". Węzłami potomnymi tego węzła są węzły "element" z których każdy posiada atrybuty "klucz" oraz "wartosc". Do walidacji dokumentów za pomocą tej schemy zostanie użyty następujący kod (schema została zapisana w pliku "slownik.xsd" a dokument do walidacji znajduje się w pliku "słownik.xml"):
public void ValidateXml() {
XmlReaderSettings readerSettings =
new XmlReaderSettings();
readerSettings.ValidationType = ValidationType.Schema;
readerSettings.Schemas.Add("http://xml.com.pl/slownik",
"C:\\temp\\test.xsd");
readerSettings.ValidationEventHandler +=
new ValidationEventHandler(ValidationCallBack);
using(XmlReader xr =
XmlReader.Create("D:\\temp\\test.xml",
readerSettings)) {
while(xr.Read()) { }
}
}
private static void ValidationCallBack(object sender,
ValidationEventArgs args) {
Console.WriteLine(args.Severity + ": " + args.Message);
}Niech dokument do walidacji wygląda tak:
<slownik>
<element klucz="LON" wartosc="Londyn" />
<element klucz="SYD" wartosc="Sydney" />
<element klucz="WAW" wartosc="Warszawa" />
<element klucz="SIN" wratosc="Singapur" />
<element klucz="SEA" wartosc="Seattle" />
</slownik>
Wszystko wydaje się być OK ("bystry student zauważy" ©, że tak akurat nie jest ale nie uprzedzajmy faktów...).
