xsl:copy-of except parent和replace

时间:2014-04-12 16:54:00

标签: xml xslt xslt-1.0

下午好!我已经有一段时间了,因为我已经完成了XSLT并且有点难过。试图实现以下目标:

当应用于以下xml ..

<tag>
  content
  <br />
</tag>

会产生这样的结果:

modified content
<br />

换句话说,我试图抓取/输出主标签上的所有内容,包括HTML但带有修改过的内容项。只需选择元素内容就行了<xsl:copy-of select="./node()"/>,因此正在替换&#34;内容&#34;用其他东西,但我似乎无法弄清楚如何将两者结合起来。我也使用XSLT 1.0。

1 个答案:

答案 0 :(得分:1)

使用

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

<xsl:template match="tag">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="tag/text()[contains(., 'content')]">
  <xsl:value-of select="concat('modified ', .)"/>
</xsl:template>

当然,如果需要操作tag元素的任何第一个子文本节点,那么您可以更改第三个模板

<xsl:template match="tag/text()[1]">
  <xsl:value-of select="concat('modified ', .)"/>
</xsl:template>