使用XSLT取消注释XML内容

时间:2010-01-07 12:34:09

标签: xslt

我遇到了XML和XSLT的问题。 我有一个带有一些注释的XML文件,我想取消注释。

例如:

<my-app>
 <name>
 </name>
  <!-- <class>
         <line></line>
   </class>-->
</my-app>

我想取消注释这个评论标签。

2 个答案:

答案 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>