使用 XSLT 转换 XML 时保留注释

Rob*_*uch 0 xslt

对 XML 应用 XSLT 时是否可以在 XML 中保留注释?

示例(来源):

<rootNode>
  <!-- My comment --><childElement>5</childElement>
</rootNode>
Run Code Online (Sandbox Code Playgroud)

转换后的样本结果为:

<newRoot>
  <!-- My comment --><newChildElement>5</newChildElement>
</newRoot>
Run Code Online (Sandbox Code Playgroud)

你会如何编写样式表?

Mar*_*nen 5

这在您的示例中不是正确的 XML 注释语法,但您可以保留所有节点

<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

然后为要转换的节点添加模板

<xsl:template match="childElement">
  <newChildElement>
    <xsl:apply-templates select="@* | node()"/>
  </newChildElement>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我的建议假设样本为

<rootNode>
  <!-- My comment--><childElement>5</childElement>
</rootNode>
Run Code Online (Sandbox Code Playgroud)

结果为

<rootNode>
  <!-- My comment--><newChildElement>5</newChildElement>
</rootNode>
Run Code Online (Sandbox Code Playgroud)

如果childElement是在评论中,那就更难了。

  • 你是对的。XML 注释不正确。我编辑了我的问题。 (2认同)