2010-12-10 6 views
36

J'écris et je veux XSL faire des commentaires tout au long du code qui sera dépouillé quand il est traité, comme PHP, mais je ne sais pas comment.Comment faire des commentaires dans XSLT et non HTML

Je suis au courant de l'objet de commentaires, mais il imprime un commentaire HTML lors d'un traitement. : \

<xsl:comment>comment</xsl:comment> 

Répondre

81

Vous utilisez commentaires XML standard:

<!-- Comment --> 

Ce ne sont pas traitées par le transformateur XSLT.

+0

+1 Bonne réponse. –

+0

Parfait! Je vous remercie. –

-1

Bien sûr. Lire http://www.w3.org/TR/xslt#built-in-rule et il devrait être évident pourquoi cette simple feuille de style (bien, devrait) faire ce que vous voulez:

<?xml version="1.0"?> 
<xsl:stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

<xsl:template match="comment()"> 
    <xsl:copy/> 
</xsl:template> 

<xsl:template match="text()|@*"/> 

</xsl:stylesheet> 

Essayez:

<xsl:template match="/"> 
    <xsl:for-each select="//comment()"> 
    <SRC_COMMENT> 
    <xsl:value-of select="."/> 
    </SRC_COMMENT> 
    </xsl:for-each> 
</xsl:template> 
or use a <xsl:comment ...> instruction for a more literal duplication of the source  document content in place of my <SRC_COMMENT> tag. 
11

Assurez-vous que vous mettez votre <!-- comments -->APRÈS la déclaration XML d'ouverture (si vous utilisez un, que vous n'avez pas vraiment besoin):

Pauses:

<!-- a comment --> 
<?xml version="1.0"?> 

TRAVAUX:

<?xml version="1.0"?> 
<!-- a comment --> 

Je me grattais la tête sur ce même problème pour un peu pendant le débogage de quelqu'un d'autre ... XSLT semble évident, mais facilement négligé.

2

Notez que l'espace blanc de chaque côté des commentaires peuvent se retrouver dans le flux de sortie, en fonction de votre processeur XSLT et ses paramètres de gestion du white-space. S'il s'agit d'un problème pour votre sortie, assurez-vous que le commentaire est entouré de balises xslt.

EG

<xsl:for-each select="someTag"> 
    <xsl:text>"</xsl:text> 
    <!-- output the id --> 
<xsl:value-of select="@id"/> 
<xsl:text>"</xsl:text> 
</xsl:for-each> 

Will sortie "someTagID" (l'onglet tiret/espaces devant la balise de commentaire sont émis). Pour l'enlever, indiquez-le avec la marge de gauche ou placez-le comme

<xsl:text>"</xsl:text><!-- output the id --><xsl:value-of select="@id"/> 
Questions connexes