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>
È stato utile?

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

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