1

我正在使用 xslt 来清理由编辑器生成的 html 代码。

代码包含以下结构:

<span name="x">1<b>test text</b>
    <span name="y">2</span>
</span>
<span name="y">3
    <span name="y">4</span>
    <span name="x">1</span>
</span>
<span name="y">5<i>test</i>
    <span name="y"><u>6</u>7</span>
</span>

问题是 xslt 需要保留 HTML 结构。并且需要完成2个动作。如果它找到一个名为 x 的跨度。它需要删除它。(这不是问题)

但是当它发现 ay 不在 x 内时。它需要获取子节点(的值node()),并将它们放在输出中。需要检查子节点是否有任何其他跨度。

Atm 我确实有一些 xslt 可以找到第一级跨度(数字 1 和 3)。但它复制了内部 html,并且不应用内部 HTML 的模板。

有没有人遇到过这个问题,或者知道解决方法?

编辑:如上所述所需的输出。

345<i>test</i><u>6</u>7

EDIT2:XSLT

<xsl:template match="@* | node()">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
</xsl:template>
<xsl:template match="span[@name='x']">
 //This deletes the node.. But only one level?
</xsl:template>
<xsl:template  match="span[@name='y']">
 //This needs to play all templates again to remove or get inner nodes() see case x & y
</xsl:template>
4

1 回答 1

1

您只需要在最后一个模板中包含应用模板即可获得所需的输出。

于 2013-06-03T16:01:24.727 回答