如何评论XSLT而不是HTML

我正在编写XSL,我想在整个代码中进行注释,在处理时会被剥离,比如PHP,但是我不知道如何。

我知道这个评论对象,但是它在处理时打印出一个HTML注释。 :\

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

您使用标准的XML注释:

 <!-- Comment --> 

这些不是由XSLT转换器处理的。

只要确保你把你的<!-- comments -->打开XML声明(如果你使用了一个,你真的不需要):

游:

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

作品:

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

在debugging别人的XSLT时,我在同一个问题上摸了一下头……似乎很明显,但容易被忽略。

请注意,注释两边的空格可能会在输出stream中结束,具体取决于您的XSLT处理器及其处理空白的设置。 如果这是您输出的问题,请确保评论被xslt标签括起来。

例如

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

将输出“someTagID”(输出注释标签前面的缩进标签/空格)。 要删除,无论是否与左边距齐平,或者将其括起来

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

当然。 阅读http://www.w3.org/TR/xslt#built-in-rule ,然后它应该很明显,为什么这个简单的样式表将(应该)做你想要的:

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

试试:

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