展平嵌套XML,包括正文

时间:2013-09-04 07:44:11

标签: xml xslt

我想将一些XHTML片段转换为特定的XML格式以供后续处理。我想用XSLT实现这一点。

我在这里看到了关于展平嵌套XML结构的一些问题和答案,但没有明显包含多个元素正文文本节点,所以......

示例输入XHTML如下(此示例是最简单的情况,理论上我可以使用不同类属性的任何级别的跨度嵌套):

<div>
    <span class="one">
        Leading One Text
        <span class="two">Two Text</span>
        Trailing One Text
    </span>
</div>

我正在尝试生成此输出XML:

<document>
    <text class="one">Leading One Text </text>
    <text class="two">Two Text</text>
    <text class="one"> Trailing One Text</text>
</document>

这可以通过XSLT实现,如果是,怎么做?

1 个答案:

答案 0 :(得分:1)

<xsl:template match="div">
  <document>
    <xsl:apply-templates select=".//text()[normalize-space() != '']" />
  </document>
</xsl:template>

<xsl:template match="div//text()">
  <text class="{../@class}">
    <xsl:value-of select="normalize-space()" />
  </text>
</xsl:template>