我正在尝试展平元素的文本节点和嵌套的内联元素
<e>something <inline>rather</inline> else</e>
进入
<text>something </text>
<text-inline>rather</text-inline>
<text> else</text>
使用e/text()
将同时返回两个文本节点,但是我如何展平所有节点以便于任意内联元素(甚至嵌套)?
答案 0 :(得分:0)
我不确定“扁平化”是否适用于此。似乎您要做的就是将某些文本节点更改为包含相同文本的元素。这可以通过匹配这些文本节点的模板来完成:
<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>