2010-10-01 5 views
4

Simple question. J'ai un fichier XML avec quelques dizaines de blocs de commentaires. Ceci est en train d'être transformé par une feuille de style pour générer une page HTML. Cependant, les commentaires sont ignorés avec ceci. Mais au bas de l'HTML généré, je voudrais avoir une liste de tous les commentaires dans le fichier XML. Est-ce possible même sans utiliser autre chose que du XSLT pur? (Pas de Javascript ou quoi que!)Comment sélectionner tous les noeuds de commentaire dans un fichier XML?


Pour autant que je sache, ce n'est pas possible, mais je peux me tromper ...

Répondre

10

La raison pour laquelle les commentaires ne sont pas traitées est que le modèle par défaut pour les commentaires ne font rien:

<xsl:template match="processing-instruction()|comment()"/> 

Voir XSLT 1.0 spec "Built-in Template Rules".

Si vous voulez faire quelque chose d'autre avec des commentaires, vous pouvez simplement créer votre propre modèle correspondant et les sorties soit comme un nouveau commentaire XML à l'aide xsl:comment ou faire une liste HTML:

<xsl:template match="/"> 
    <ul> 
    <xsl:apply-templates select="//comment()"/> 
    </ul> 
</xsl:template> 

<xsl:template match="comment()"> 
    <li> 
    <xsl:value-of select="."/> 
    </li> 
</xsl:template> 
+1

J'étais sur le pour donner la même réponse .... Vous pouvez mentionner que vous pouvez utiliser l'élément ** xsl: comment ** (plutôt que ** li ** dans votre exemple), si vous voulez toujours sortir le commentaire XML original comme un commentaire dans le HTML. –

+1

@Tim C: Lire à nouveau ma réponse, je pense que vous avez manqué une ligne! ;) –

+0

D'oh! Ma faute! Si je pouvais downvote mon commentaire, je le ferais! –

Questions connexes