46 votes

Comment commenter en XSLT et non en HTML ?

J'écris du XSL et je veux faire des commentaires dans le code qui seront supprimés lors du traitement, comme en PHP, mais je ne sais pas trop comment faire.

Je connais l'objet commentaire, mais il imprime un commentaire HTML lorsqu'il est traité :\N- Je ne sais pas si c'est le cas.

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

101voto

Kathy Van Stone Points 10310

Vous utilisez des commentaires XML standard :

<!-- Comment -->

Ils ne sont pas traités par le transformateur XSLT.

15voto

Veloz Points 241

Veillez simplement à mettre votre <!-- comments --> APRÈS la déclaration XML d'ouverture (si vous en utilisez une, ce qui n'est pas vraiment nécessaire) :

RUPTURE :

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

TRAVAUX :

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

Je me suis gratté la tête sur ce même problème pendant un certain temps alors que je déboguais le XSLT de quelqu'un d'autre... cela semble évident, mais c'est facilement négligé.

4voto

Peter Brand Points 48

Notez que les espaces blancs de part et d'autre des commentaires peuvent se retrouver dans le flux de sortie, en fonction de votre processeur XSLT et de ses paramètres de gestion des espaces blancs. Si cela pose un problème, assurez-vous que le commentaire est encadré par des 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>

Le résultat sera "someTagID" (les tabulations/espaces d'indentation devant la balise de commentaire sont restitués). Pour la supprimer, il faut soit la désindenter au niveau de la marge gauche, soit la mettre entre crochets comme suit

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

1voto

Faris Kapo Points 150

Voici comment procéder pour créer un nœud de commentaires qui ne sera pas affiché en html

<xsl:comment>

  <!-- Content:template -->

</xsl:comment>

-1voto

code master Points 1082

Bien sûr. Lire http://www.w3.org/TR/xslt#built-in-rule et vous comprendrez alors pourquoi cette simple feuille de style fera (enfin, 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X