使用XSLT处理HTML页面并将DIV从一个地方移动到另一个地方

时间:2010-03-19 18:47:13

标签: xslt

我有一个由XSLT后处理的HTML页面(完全有效)。

让我们说相关的代码部分如下所示:

<div id="content"> ... </div>
...
<div id="announcement"> ... </div>

XSLT需要将其转换为如下所示:

<div id="content"> <div id="announcement"> ... </div> ... </div>

有什么想法吗?我被卡住了。

修改:表示<div id="content"><div id="announcement">被其他代码分开。

1 个答案:

答案 0 :(得分:2)

如果announcement div 直接跟随 content div,请使用:

<xsl:template match="div[@id='content' and following-sibling::div[1][@id='announcement']">
  <!-- copy the content div and its attributes -->
  <xsl:copy>
    <xsl:copy-of select="@*" />
    <!-- now make a copy of the directly following announcement div -->
    <xsl:copy-of select="following-sibling::div[1][@id='announcement']" />
    <!-- process the rest of the contents -->
    <xsl:apply-templates />
  </xsl:copy>
</xsl:template>

<!-- the empty template mutes an announcement div that follows a content div -->
<xsl:template match="div[@id='announcement' and preceding-sibling::div[1][@id='content']" />

以上内容非常具体,不会触及文档中可能存在的任何其他div。如果您的情况允许,您可以使其更简单/更不具体,以提高可读性。