Я просматриваю XML-файл (который содержит несколько таблиц), используя XSLT. Часть работы страницы состоит в том, чтобы получить заголовок каждой таблицы и представить этот заголовок вместе с количеством элементов, содержащихся в этой таблице (т. Е. "Проблемы (5)").
Я могу получить количество элементов, но теперь мне нужно разделить разделы с 0 (нулем) элементов в них и поместить их внизу списка названий таблиц. У меня возникли проблемы с этим, потому что другие элементы с положительными числами должны быть оставлены в их первоначальном порядке / не отсортированы.
Вот код для списка названий:
<ul>
<xsl:for-each select="n1:component/n1:structuredBody/n1:component/n1:section/n1:title">
<li style="list-style-type:none;">
<div style = "padding:3px"><a href="#{generate-id(.)}">
<xsl:variable name ="count" select ="count(../n1:entry)"/>
<xsl:choose>
<xsl:when test = "$count != 0">
<xsl:value-of select="."/> (<xsl:value-of select="$count"/>)
</xsl:when>
<xsl:otherwise>
<div id = "zero"><xsl:value-of select="."/> (<xsl:value-of select="$count"/>)</div>
</xsl:otherwise>
</xsl:choose>
</a>
</div>
</li>
</xsl:for-each>
</ul>
Прямо сейчас "нулевой" div просто помечает каждую ссылку серым цветом.
Любая помощь, касающаяся того, как поместить «нулевые» делители внизу списка, будет принята с благодарностью. Спасибо!
Отредактированный код с использованием нулевых / ненулевых шаблонов:
<xsl:for-each select="n1:component/n1:structuredBody/n1:component/n1:section/n1:title">
<li style="list-style-type:none;">
<div style = "padding:3px"><a href="#{generate-id(.)}">
<xsl:apply-templates select="n1:title[count(../n1:entry) != 0]" mode="nonzero" />
<xsl:apply-templates select="n1:title[count(../n1:entry) == 0]" mode="zero" />
</a>
</div>
</li>
</xsl:for-each>