Как сгладить текстовые узлы и вложенные узлы? - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь сгладить текстовые узлы элемента и вложенные встроенные элементы

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

в

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

Использование e/text() вернет оба текстовых узла, но как мне сгладитьвсе узлы для произвольно встроенных элементов (даже вложенных)?

1 Ответ

0 голосов
/ 23 июня 2019

Я не уверен, что "flatten" - правильный термин для этого. Кажется, все, что вы хотите сделать, это изменить некоторые текстовые узлы на элементы, содержащие один и тот же текст. Это может быть сделано с помощью шаблона, соответствующего этим текстовым узлам:

<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>
...