我遇到了XML和XSLT的问题。 我有一个带有一些注释的XML文件,我想取消注释。
例如:
<my-app>
<name>
</name>
<!-- <class>
<line></line>
</class>-->
</my-app>
我想取消注释这个评论标签。
答案 0 :(得分:11)
<!-- the identity template copies everything
(unless more specific templates apply) -->
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<!-- this template matches comments and uncomments them -->
<xsl:template match="comment()">
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>
请注意disable-output-escaping="yes"
意味着评论内容应该格式正确。
答案 1 :(得分:2)
如果使用Saxon,saxon:parse()更清晰,因为它创建了一个真正的XML结构。 saxon:parse($ xml as xs:string)==&gt;文档节点() 在xsl:stylesheet元素中,添加xmlns:saxon = http://saxon.sf.net/
示例:
<xsl:template match="comment()">
<xsl:variable name="comment" select="saxon:parse(.)" as="document-node()"/>
<xsl:copy-of select="$comment"/>
</xsl:template>