Nœud de comte et de la occurence - XSL
J'ai besoin d'écrire générique xsl qui prendrait dans un document xml de sortie et le nombre de nœuds et de leurs noms. Donc, si j'ai un fichier comme suit:
<assets>
<asset>
<type>hardware</type>
<item>
<name>HP laptop</name>
<value>799</value>
</item>
<item>
<name>server</name>
<value>1000</value>
</item>
<item>
<name>ViewSonic Monitor</name>
<value>399</value>
</item>
</asset>
<asset>
<type>software</type>
<item>
<name>Windows Vista</name>
<value>399</value>
</item>
<item>
<name>Office XP</name>
<value>499</value>
</item>
<item>
<name>Windows 7</name>
<value>399</value>
</item>
<item>
<name>MS Project Professional 2007</name>
<value>299</value>
</item>
</asset>
</assets>
La sortie serait:
<output>
<node name="assets" count="1"/>
<node name="asset" count="2"/>
<node name= "type" count="??"/>
<node name="item" count=??/>
<node name="name" count=??/>
<node name="value" count=??/>
</output>
OriginalL'auteur user182093 | 2009-09-30
Vous devez vous connecter pour publier un commentaire.
Vous aurez envie d'utiliser la fonction count:
De sorte que votre code devrait ressembler à:
OriginalL'auteur Gavin Miller
La solution générique pour l'entrée contenant les nœuds avec des noms peut être fait à l'aide de la Muenchian méthode:
Explication: à l'Aide de
xsl:key
, créez un mappage de noms pour les nœuds ayant ce nom. Puis itérer sur tous les noms uniques, et la sortie du nœud de compte pour le nom. L'astuce ici est de savoir comment parcourir des noms uniques. Voir la page du lien pour une explication de lacount(.|foo)=1
idiome utilisé pour déterminer sifoo
est un ensemble de nœuds contenant uniquement le nœud de contexte.generate-id()
mieux. La question ressemble un peu à des devoirs à moi.OriginalL'auteur Jukka Matilainen
C'est ma solution à l'aide de XSLT 2.0 :
OriginalL'auteur Mohamed