Question

Je ne pense pas que ce soit possible, mais je pensais que je jette là-bas. Compte tenu de cette XML:

 <people count="3">
      <person>Bill</person>
      <person>Joe</person>
      <person>Susan</person>
 </people>

Est-il possible dans un XSD pour forcer la valeur d'attribut @count être le nombre correct d'éléments définis (dans ce cas, l'élément de personne)? L'exemple ci-dessus serait évidemment correct et exemple ci-dessous ne validerait pas:

 <people count="5">
      <person>Bill</person>
      <person>Joe</person>
      <person>Susan</person>
 </people>
Était-ce utile?

La solution

Je suis assez sûr XSD ne peut pas le faire. Toutefois, si vous voulez garantir que votre attribut de compte est le nombre réel d'éléments ci-dessous, l'exécution d'une feuille de style XSLT sur le document peut veiller à ce que est vrai en définissant la valeur:

<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 -->

Autres conseils

Parsers mise en œuvre XSD spécification 1.1 devrait fournir une fonction assert qui peut être utilisé pour valider le contenu XML par rapport au nombre de noeuds enfants

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top