XML-Schema-Validierung ignoriert, wenn Fragment-Level-Konformität aktiviert ist?
-
26-09-2019 - |
Frage
Von meinem Aufenthalt mit XML und Schema-Validierung, so scheint es, dass, wenn Fragment- Niveau Übereinstimmung für einen XMLReader So stoppt die XML-Quelle gegen jede enthalten Schemen .
Allerdings kann ich das nicht bestätigen, aus der Dokumentation MSDN, da es nicht XSD Verhalten scheint in dem Konformitätsgrad Licht zu beschreiben. Auch wenn ich davon ausgehen, das Problem wahr ist, kann ich nicht eine Lösung für sie finden.
Ich möchte wissen, wie ein XML zu validieren Fragment gegen eine XSD.
In meinem Fall bin ich die Validierung gegen die XHTML 1 Strict Schema . Durch die Tatsache, wie HTML-Tags als veraltet
Ein Codebeispiel von der Art der Validierung Szenario verwende ich see diese .
Lösung
Ich glaube, ich fand die Antwort in diese MSKB Artikel seltsam genug Titel HOW : Überprüfen von XML-Fragmente gegen ein XML-Schema in Visual C # .NET der Boden des Artikel heißt es:
Hinweis: Nur die Typdeklarationen und die Top-Level-Elemente in der XML Schema ist gegen eine XML validiert Schema. Subelemente gelten als lokale und kann daher nicht sein bestätigt. Um Prüfungs Subelement, erklären ein Top-Level Element und das bezieht.
Ich glaube, es ist ein Fehler, der in diesem Absatz und die Absicht ist, in dem Zustand top-level elements in the XML
schema
document/fragment
are validated against an XML Schema
Da die Microsoft-Codebeispiel sein Fragment auf der obersten Ebene beginnt (statt willkürlich innerhalb eines Dokuments) arbeitet es mit Validierung. Aber in meinem Fall bin ich ein mittleres Dokument Konstrukt nehmen.
Korrigieren Sie mich, wenn meine Interpretation ist falsch.
Problemumgehung / Lösung
Eine Abhilfe ist für mich meine Fragmente in einem Top-Level-Elemente zum Zweck der Validierung zu stopfen.
Mit anderen Worten, wenn ich mit dem XHTML-Fragmente zu tun habe:
<div>MY FRAGMENT</div>
Ich kann es wickeln für die Validierung entsprechen dem XHTML Strict Schema wie:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML fragment enclosed, conforming to XHTML 1.0 Strict Template.</title>
</head>
<body>
<div>MY FRAGMENT</div>
</body>
</html>
Diese Lösung funktioniert für mich, damit ich es in der Zwischenzeit verwenden werden; ob oder ob nicht eine bessere Lösung existiert Ich bin noch nicht sicher.