Использование XSLT для обработки HTML-страницы и перемещения DIV из одного места в другое - PullRequest
3 голосов
/ 19 марта 2010

У меня есть HTML-страница (полностью действительная), которая постобработана XSLT.

Допустим, соответствующий раздел кода выглядит следующим образом:

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

XSLT нужно преобразовать так, чтобы он выглядел так:

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

Есть идеи? Я застрял.

Редактировать : Указано, что <div id="content"> и <div id="announcement"> разделены другим кодом.

1 Ответ

2 голосов
/ 19 марта 2010

Если 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, которые могут быть в вашем документе. Если позволяет ваша ситуация, вы можете упростить / сделать ее менее специфичной для повышения читабельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...