我搜索并发现这篇文章大约4年前: xsl - tag position with text mixed in parent 而我正在尝试做一些类似的事情,但有点不同......但是无法让它发挥作用。我该如何改变:
<tag1>some <tag2>other</tag2> text</tag1>
into:<tag1>some <bold>other</bold> text</tag1>
换句话说,我有混合文本和节点,我想重命名节点的标记,但保留文本中的正确位置。
答案 0 :(得分:1)
您还没有为我们提供任何现有的XSLT,因此很难准确地告诉您如何将其融入您所拥有的内容中,但基本上您需要正确使用apply-templates
并匹配您需要换出的元素:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<!-- itentity template -->
<xsl:template match="@* | node()">
<xsl:copy>
<!-- apply templates to contents -->
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tag2">
<bold>
<xsl:apply-templates />
</bold>
</xsl:template>
</xsl:stylesheet>
当这应用于您的样本输入时:
<tag1>some <tag2>other</tag2> text</tag1>
结果是:
<tag1>some <bold>other</bold> text</tag1>