我有一个由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">
被其他代码分开。
答案 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。如果您的情况允许,您可以使其更简单/更不具体,以提高可读性。