validazione XML Schema ignorato quando a livello di frammento di conformità è abilitato?
-
26-09-2019 - |
Domanda
Dal mio soggiorno con XML e la convalida dello schema, sembra che quando fragment- livello di conformità abilitato per un XMLReader esempio, l'origine XML smette di essere convalidato contro qualsiasi incluso schemi .
Tuttavia non posso verificare questo dalla documentazione MSDN in quanto non sembra per descrivere il comportamento schema XSD alla luce del livello di conformità. Anche se suppongo che questo problema è vero, non riesco a trovare una soluzione per esso.
Mi piacerebbe sapere come convalidare un XML frammento contro uno schema XSD.
Nel mio caso sto convalidando contro il XHTML 1 Schema Strict . Per il fatto deprecato tag HTML come
Per un esempio di codice del tipo di scenario convalida sto usando See questo .
Soluzione
Credo di aver trovato la risposta nella questo articolo MSKB stranamente intitolato COME TO: Convalida XML Frammenti a fronte di uno schema XML in Visual C # .NET Il fondo l'articolo afferma:
Nota: solo le dichiarazioni di tipo e gli elementi a livello superiore nel XML schema sono convalidate contro un XML schema. Sottoelementi sono considerati come locale e quindi non può essere convalidato. Al fine di convalidare un sottoelemento, dichiarare un livello superiore elemento e si riferiscono a questo.
Credo che ci sia un errore in quel paragrafo e l'intenzione è quella top-level elements in the XML
stato schema
document/fragment
are validated against an XML Schema
Dato che il codice di esempio Microsoft inizia la sua frammento al livello superiore (anziché arbitrariamente all'interno di un documento) che funziona con la convalida. Tuttavia nel mio caso mi sto prendendo un costrutto metà del documento.
mi corregga se la mia interpretazione è sbagliata.
Soluzione / soluzione |
Una soluzione è per me per farcire i miei frammenti all'interno di un elemento di livello superiore a scopo di convalida.
In altre parole, se ho a che fare con il frammento XHTML:
<div>MY FRAGMENT</div>
posso avvolgere per la convalida di conforme allo schema di Strict XHTML come:
<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>
Questa soluzione funziona per me così lo userò nel frattempo; o meno di una soluzione migliore esiste Sono ancora incerto.