如何评论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.