Я не уверен, что "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>