2010-12-10 28 views
36

Escribo XSL y quiero hacer comentarios a lo largo del código que se eliminarán cuando se procese, como PHP, sin embargo, no estoy seguro de cómo.Cómo comentar en XSLT y no HTML

Conozco el objeto de comentario, pero imprime un comentario HTML cuando se procesa. : \

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

Respuesta

81

Utiliza los comentarios XML estándar:

<!-- Comment --> 

Estos no son procesados ​​por el transformador XSLT.

+0

+1 respuesta correcta. –

+0

¡Perfecto! gracias. –

-1

Sure. Leer http://www.w3.org/TR/xslt#built-in-rule y entonces debería ser evidente por qué este simple hoja de estilo será (bueno, debería) hacer lo que quiera:

<?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> 

Probar:

<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

Sólo asegúrese de que usted pone su DESPUÉS <!-- comments --> la declaración de apertura XML (si se utiliza uno, que realmente no es necesario):

arranque:

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

funciona:

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

Me rasqué la cabeza sobre el mismo tema por un poco durante la depuración de otra persona XSLT ... parece obvio, pero pasa por alto fácilmente.

2

Tenga en cuenta que el espacio en blanco en cualquier lado de los comentarios puede terminar en la secuencia de salida, dependiendo de su procesador XSLT y su configuración para manejar el espacio en blanco. Si esto es un problema para su salida, asegúrese de que el comentario esté entre corchetes con las etiquetas 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> 

es la salida "someTagID" (la tabulación de sangría/espacios en frente de la etiqueta de comentario se emiten). Para eliminar, ya sea Unindent a ras con el margen izquierdo, o el soporte que como

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