Hi!
Der Pfad zum Schema wird also in einem Attribut angegeben. Schreibe ich eine Applikation, die diese Instanz gegen das angegeben Schema validieren will, so kann ich das angegeben Schema nicht aus dieser Instanz herauslesen, denn dass das Attribut überhaupt vorhanden ist, ist ja erst _nach_ der Validierung sichergestellt.
Du validierst ohne Schemaangabe, dann kriegst du entweder die Rückmeldung, dass nicht validiert werden kann, weil der Eintrag fehlt oder die Validierung startet gegen das angegebene Schema.
Die LINQ to XML API bietet diese Möglichkeit nicht an (oder ich habe was übersehen). Wenn ich für das Schema null angebe, dann knallt's jedenfalls (ArgumentNullException).
Ich kann natürlich im Code "manuell" prüfen, ob das Attribut vorhanden ist (so mache ich es momentan auch):
XAttribute schemaLocation = myDoc.Root.Attribute(xsiNs + "noNamespaceSchemaLocation");
if (schemaLocation != null)
{
//Validiere
}
else
{
//Fehlermeldung
}
Das "funktioniert" natürlich, ist aber nicht sonderlich elegant...
Grundsätzlich verstehe ich nicht, wie man sich das bei der Definition von XML Schema gedacht hat. Offensichtlich ist es nicht erwünscht, dass das Schema aus der Instanz ausgelesen werden soll. Sonst hätte man dafür doch eine elegantere Möglichkeit als das da oben dafür angeboten.
Gruß
Bernhard