Utilizzando XSD per convalidare nodo conteggio
Domanda
Non credo che questo sia possibile, ma ho pensato di buttare là fuori. Dato questo XML:
<people count="3">
<person>Bill</person>
<person>Joe</person>
<person>Susan</person>
</people>
È possibile in un XSD per forzare il valore dell'attributo @count essere corretto conteggio di elementi definiti (in questo caso, l'elemento persona)? L'esempio precedente sarebbe ovviamente corretta e il sottostante esempio non sarebbe validate:
<people count="5">
<person>Bill</person>
<person>Joe</person>
<person>Susan</person>
</people>
Soluzione
Sono abbastanza sicuro XSD non può farlo. Tuttavia, se si vuole garantire che il vostro attributo conteggio è il vero numero di elementi inferiori, l'esecuzione di un foglio di stile XSLT sul documento può garantire che vale impostando il valore:
<xsl:template match="people">
<xsl:attribute name="count">
<xsl:value-of select="count(person)"/>
</xsl:attibute>
<xsl:apply-templates/>
</xsl:template>
<!-- insert your identity template here -->
Altri suggerimenti
I parser di attuazione XSD specifica 1.1 dovrebbe fornire una funzione di affermare che può essere utilizzata per convalidare il contenuto XML contro il numero di bambini nodi