2010-04-13 5 views
3

Je ne pense pas que ce soit possible mais j'ai pensé que je le lancerais là-bas. Compte tenu de cette XML:Utiliser XSD pour valider le nombre de nœuds

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

Est-il possible dans un XSD pour forcer la valeur de l'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 l'exemple ci-dessous ne validerait pas:

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

Répondre

4

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

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

Questions connexes