validazione XML Schema ignorato quando a livello di frammento di conformità è abilitato?

StackOverflow https://stackoverflow.com/questions/3632767

  •  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

non vengono contrassegnati come non valido, questo fa parte della ragione per cui credo frammento conformità ignora schema. Anche quando uso a livello di documento di conformità nello stesso scenario, errori di validità sono contrassegnati con successo.

Per un esempio di codice del tipo di scenario convalida sto usando See questo .

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top