Domanda

Ho un XML con il seguente formato.

<RootNode>
    <Parent>
        <Child1>Some text about child 1</Child1>
        <Child2>Some text about child 2</Child2>
        ....
        ....
        <Child5>Some text about child 5</Child5>
        ....
        ....
        <Childn>Some text about child n</Childn>
    </Parent>
</RootNode>

Ora voglio convalidare questo XML contro XSD.

Ma il problema è che il nome del numero e del nodo dei bambini non è risolto.

Si prega di controllare i seguenti campioni del mio file

Esempio 1: due bambini con nome nodo Child1 e Child2

<RootNode>
    <Parent>
        <Child1>Some text about child 1</Child1>
        <Child2>Some text about child 2</Child2>
    </Parent>
</RootNode>

Esempio 2: tre bambini con nome nodo Child4 Child5 e Child8

<RootNode>
    <Parent>
        <Child4>Some text about child 4</Child4>
        <Child5>Some text about child 5</Child4>
        <Child8>Some text about child 8</Child8>
    </Parent>
</RootNode>

Voglio una convalida del testo all'interno del nodo figlio (che viene mostrato come "un po 'di testo su Child N") con la regola seguente

Regola: l'XML non è valido se un nodo figlio - (figli del genitore) ha una lunghezza del testo iner più di 256.

Significa considerare l'XML non valido se un figlio del nodo "genitore" ha un testo interno più lungo di 256 caratteri

È possibile usando la convalida dello schema XSD? Potresti aiutarmi a creare un file .xsd per convalidare questo?

Grazie in anticipo

È stato utile?

Soluzione

Non puoi risolverlo con XSD come detto prima semplicemente perché non sai quali saranno tutti i nomi degli elementi in anticipo. Se non sei totalmente legato alla convalida XSD, potresti voler dare un'occhiata Schematron che può fare esattamente questo tipo di validazione.

Altri suggerimenti

Non è possibile convalidarlo automaticamente perché il numero massimo di nodi figlio è sconosciuto. Potresti essere in grado di ottenere scrivendo una validazione manuale.

Se sei in grado di cambiare il formato di questo XML, dovresti, perché è mal progettato (non da ultimo perché non è validabile ...). Dovresti sparare per qualcosa di più simile:

<RootNode>
    <Parent>
        <Child num="1">...</Child>
        <Child num="2">...</Child>
    </Parent>
</RootNode>

Oppure, se il genitore può contenere altre cose e i bambini, è utile avere un contenitore per i bambini:

<RootNode>
    <Parent>
        <OtherStuff/>
        <Children>
            <Child num="1">...</Child>
            <Child num="2">...</Child>
        </Children>
        <MoreStuff/>
    </Parent>
</RootNode>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top