J'ai un fichier XML que j'essaie de transformer en XHTML en utilisant un fichier XSLT. Je me demandais s'il était possible d'obtenir le nombre de fois qu'un modèle a été invoqué. Ceci est mon XML:impression d'un compte avec XSLT
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" encoding="UTF-8" href="car.xslt" version="1.0"?>
<vehicle>
<car>
<make>Honda</make>
<color>blue</color>
</car>
<car>
<make>Saab</make>
<color>red</color>
</car>
</vehicle>
Et voici mon XSLT:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<table cellpadding="5" border="1">
<tr><td>number</td><td>make</td><td>color</td></tr>
<xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="car">
<tr>
<td>#</td><td><xsl:value-of select="make"/></td><td><xsl:value-of select="color"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
Je veux imprimer le nombre de fois où une voiture a été imprimé à la place de #, il ressemblerait à ceci :
numéro faire la couleur Honda bleu Saab rouge
au lieu de:
Numéro faire la couleur # Honda bleu # Saab rouge
Tout le monde a des idées? J'espérais cela pourrait se faire avec juste xsl: value-of et XPath
qui imprime: nombre \t font \t couleur Honda \t bleu Saab \t rouge mais je voulais nombre \t font \t couleur Honda \t bleu Saab \t rouge Je vérifie pour voir s'il y a de toute façon à donner des arguments à propos du poste th, etc .... –
on pourrait dire, position() * 0.5 ... mais pourquoi tout est multiplié par deux? –
Lorsque vous utilisez 'position()' dans ce contexte, XSLT énumère les nœuds enfants de l'élément 'vehicle'.Les nœuds enfants dans l'exemple original sont: (1) un nœud de texte (un groupe d'espaces); (2) un élément «voiture»; (3) un nœud de texte (plus d'espace); (4) un élément «voiture»; (5) un nœud de texte (plus d'espace). Donc, quand vous faites correspondre les éléments 'car', vous obtenez l'élément numéro 2 et le numéro 4. –