Я столкнулся с загадкой XSLT - вы не можете открыть элемент в одном условном выражении и закрыть его в другом.Я вижу, по-видимому, связанные с этим вопросы в другом месте на Stackoverflow, но ответы немного озадачивают новичка в XSLT с низкой потребляемой мощностью.
В основном я пытаюсь отображать элементы из своего XML в столбцах по всей странице.Сейчас я просто пытаюсь сделать 2 столбца, хотя мне бы хотелось решение, в котором количество столбцов не было бы жестко задано.
Мои данные XML примерно такие, примерно с 100 узлами:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<node type="category">
<collection>
<node>
<articleId>1</articleId>
<headline>Merry Christmas says Google as it unveils animated Jingle Bells Doodle</headline>
</node>
<node>
<articleId>2</articleId>
<headline>Google activating 700,000 Android phones every day</headline>
</node>
<node>
<articleId>3</articleId>
<headline>Google attacked by music industry over 'broken pledges' on illegal downloading</headline>
</node>
</collection>
</node>
</response>
Я бы хотел перевести это в нечто вроде:
<div>
<div class="left">
[ the articleId ]
[ the headline ]
</div>
<div class="right">
[ the articleId ]
[ the headline ]
</div>
</div>
со статьей 1 слева, статьей 2 справа, статьей 3 в следующем ряду слева,и т. д. и т. д.
Мы пробовали XSLT следующим образом
<xsl:for-each select="$collection/spi:node[(position() mod $columns) != 0]">
<xsl:variable name="pos" select="position()"/>
<xsl:variable name="node" select="."/>
<div>
<div class="left">
<xsl:value-of select="../spi:node[$pos]/spi:articleId"/>]
<xsl:value-of select="../spi:node[$pos]/spi:headline"/>
</div>
<div class="right">
<xsl:value-of select="../spi:node[$pos + 1]/spi:articleId"/>
<xsl:value-of select="../spi:node[$pos + 1]/spi:headline"/>
</div>
</div>
</xsl:for-each>
Но это приводит только к пустым элементам div и странным повторениям статей.Может ли любой гуру XSLT указать нам правильное направление?
Приветствия