XSLT转换 - INNERHTML

时间:2016-09-22 14:42:43

标签: html xml xslt dita

我昨天发布了一个问题并取得了巨大的成功,它并没有完全给我我需要的东西,但肯定足以让我走上正确的道路。我遇到了另一个困难,并希望找到类似的指导。

我有一个包含几种不同类型元素的文档,其中一些可以嵌套在其他元素中。我需要删除所有标记,并且只要存在某个元素,就只留下内部HTML。

例如,如果元素pnum存在,我需要获取整个元素并删除任何内部元素,只留下内部html。

输入:

<li>
    <pnum>
     blah blah
    <linum>hello hello</linum>
    good bye
    <title>good morning</title>
    </pnum>
</li>

输出:

<li>
    blah blah
    hello hello
    good bye
    good morning
<li>

我能够使用HTMLAGILITYPACK执行此操作,但我必须遍历每个节点并且性能不佳。我想知道我是否可以在doc上执行更快的XSLT转换。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我不确定您从哪里采用innerHTML这个术语,但是自IE 4以来它通常包含标记,因此您的剥离标记请求似乎与innerHTML无关。

对于XSLT,您可以使用

<xsl:template match="li[.//pnum]">
  <xsl:copy>
    <xsl:value-of select="."/>
  </xsl:copy>
</xsl:template>

li后代的pnum元素转换为仅包含文本内容的li