![]() |
|
Модераторы: diadiavova |
![]()
|
|
| Misha_ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 30.11.2006 Репутация: нет Всего: нет |
есть документ
<?xml version="1.0" encoding="iso-8859-1" ?> <data> <item id="i1" catalog="s1" subcatalog="u1">561</item> <item id="i10" catalog="s3" subcatalog="u4">15</item> <item id="i22" catalog="s2" subcatalog="u2">1234</item> и тд. <catalog id="s1">catalog 1</catalog> <catalog id="s2">catalog 2</catalog> <catalog id="s3">catalog 3</catalog> <subcatalog id="u1">Subcatalog 1</subcatalog> <subcatalogid="u2">Subcatalog 2</subcatalog> и тд </data> , который был с помощью 2-х уровневой группировки (с использованием ключей методом Мюнха) был приведен к виду catalog 1 Subcatalog 1 ID Value id1 value1 ... idN valueN Subcatalog 2 ID Value id1 value1 ... idN valueN ... catalog 2 Subcatalog 1 итд... необходимо отсортровать данные чтобы было каталог 1 и в нем подкталоги ПО-ПОРЯДКУ потом каталог 2 и в нем подкаталоги ПО_ПОРЯДКУ и тд... мой xsl: ... <xsl:variable name="Sort1" select="@catalog"/> <xsl:variable name="Sort2" select="@subcatalog"/> <xsl:key name="Sector" match="item" use="@catalog"/> <xsl:key name="Subsector" match="item" use="concat(@catalog, ' ',@subcatalog)"/> <xsl:template match="data" > <xsl:variable name="Sort11" select="key('Sector',substring-after($Sort1,'s'))"/> <xsl:variable name="Sort22" select="key('Subsector',concat(substring-after($Sort1,'s'),' ',substring-after($Sort2,'u')))"/> <xsl:for-each select="item[count(. | key('Sector', @catalog)[1]) = 1]"> <xsl:sort select="*[name()=$Sort11]" order="ascending" data-type="number"/> <div> <xsl:value-of select="//sector[@id=current()/@catalog]"/> </div> <xsl:variable name="Items" select="key('Sector', @catalog)" /> <xsl:for-each select="$Items[generate-id() =generate-id(key('Subsector',concat(@catalog,' ',@subcatalog))[1])]"> <xsl:sort select="*[name()=$Sort22]" order="ascending" data-type="number"/> <xsl:value-of select="//subcatalog[@id=current()/@subcatalog]" /> <xsl:for-each select="key('Subcatalog',concat(@catalog,' ',@subcatalog))"> <div> <xsl:value-of select="@id"/> <xsl:text> </xsl:text> <xsl:value-of select="."/> </div> </xsl:for-each> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet> подозреваю, что идея сортировки и ее месторасположение верное, ошибка- в синтаксисе... Может кто знает или есть мысли? Заранее огромное спасибо |
|||
|
||||
![]()
|
| Правила форума "XML/XSLT" | |
|
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | XML, XSL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |