XML:Алфавит шаблон индекс: "XSL: ключ" проблема матч
<?xml version="1.0" encoding="windows-1251"?>
<mode>
<term>
<name>abhdk</name>
</term>
<term>
<name>njhjsu</name>
</term>
<term>
<name>sdasd</name>
</term>
<term>
<name>vbvbcd</name>
</term>
...
</mode>
<mode>
<term>
<name>asdfd</name>
</term>
<term>
<name>vcbbn</name>
</term>
<term>
<name>bnmbnmb</name>
</term>
<term>
<name>tyutyu</name>
</term>
<term>
<name>ghjghj</name>
</term>
<term>
<name>hjk</name>
</term>
...
</mode>
<mode>
<term>
<name>asdfd</name>
</term>
<term>
<name>vcbbn</name>
</term>
</mode>
...
мне нужно сделать алфавит индекс, как это:
Я получаю шаблон отсюда: link text
Моя проблема: для каждого mode
должен быть свой собственный список «Алфавит» (для одного режима он отлично работает).
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no" encoding="windows-1251"/>
<xsl:for-each select="mode">
<xsl:call-template name="alphabetIndexTmpl">
<xsl:with-param name="key-name" select="'items-key'" />
...
</xsl:call-template>
</xsl:for-each>
<xsl:key name="items-key" match="term" use="substring(., 1, 1)" />
<xsl:template name="alphabetIndexTmpl">
<xsl:param name="key-name"/>
...
</xsl:template>
</xsl:stylesheet>
Этот код не работает правильно. Это должно быть исправлено, как это:
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no" encoding="windows-1251"/>
<xsl:for-each select="mode">
<xsl:call-template name="alphabetIndexTmpl">
<xsl:with-param name="key-name" select="concat('items-key', position())" />
...
</xsl:call-template>
</xsl:for-each>
<xsl:key name="items-key1" match="mode[1]/term" use="substring(., 1, 1)" />
<xsl:key name="items-key2" match="mode[2]/term" use="substring(., 1, 1)" />
<xsl:key name="items-key3" match="mode[2]/term" use="substring(., 1, 1)" />
...
<xsl:template name="alphabetIndexTmpl">
<xsl:param name="key-name"/>
...
</xsl:template>
</xsl:stylesheet>
Но это очень криво решение.
Как решить эту проблему более элегантно?
Dimitre Novatchev, не бейте меня за "неточностей", я отрекаюсь от руки)).
+1 для прошения милосердия от Dimitre :) – Oded
Хороший вопрос (+1). См. Мой ответ для решения, которое демонстрирует использование метода Muenchian для группировки с составными ключами. –