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

werden nicht als ungültig markiert, ist dieser Teil des Grundes, warum ich Fragment Konformität ignoriert Schema glauben. Auch wenn ich auf Dokumentebene Konformität im gleichen Szenario verwenden, Gültigkeit Fehler werden erfolgreich angezeigt.

Ein Codebeispiel von der Art der Validierung Szenario verwende ich see diese .

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top