我正在尝试展平元素的文本节点和嵌套的内联元素
<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>