如何拼合文本节点和嵌套节点



我正在尝试展平元素的文本节点和嵌套的内联元素

<e>something <inline>rather</inline> else</e>

<text>something </text>
<text-inline>rather</text-inline>
<text> else</text>

使用 e/text() 将返回两个文本节点,但如何展平所有节点以用于任意内联元素(甚至是嵌套的(?

我不确定"扁平化"是正确的术语。似乎您要做的只是将一些文本节点更改为包含相同文本的元素。这可以通过匹配以下文本节点的模板来完成:

<xsl:template match="e/text()">
    <text>
        <xsl:copy/>
    </text>
</xsl:template>

演示:https://xsltfiddle.liberty-development.net/ncdD7n4


当然,如果您还想将inline重命名为 text-inline ,您将需要另一个模板:

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

相关内容

  • 没有找到相关文章

最新更新