Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Три key в xslt-шаблоне / 5 сообщений из 5, страница 1 из 1
03.02.2013, 18:44
    #38135373
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Три key в xslt-шаблоне
Добрый вечер. Файл xml имеет следующую структуру.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<root>
-<node>
- <ID1> 1</ID1>
- <ID2> 1</ID2>
- <ID3> 1</ID3>
-</node>
-<node>
- <ID1> 1</ID1>
- <ID2> 2</ID2>
- <ID3> 1</ID3>
-</node>
</root>



Нужно сгруппировать в три уровня. Два уровня работают нормально, но когда ввожу третий - не то что-то. Мой код:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<xsl:key name="key1" match="/root/node" use="ID1/text()" />
 <xsl:key name="key2" match="/root/node" use="concat(ID1/text(),ID2/text())" />
 <xsl:key name="key3" match="/root/node" use="concat(ID1/text(),ID2/text(),ID3/text())" />

  <xsl:for-each select="/root/node[generate-id()=generate-id(key('key1',ID1/text()))]">
   <xsl:variable name="poz" select="ID2" />
	<xsl:for-each select="/root/node[generate-id()=generate-id(key('key2'', concat($poz,ID2/text())))]">
                 <xsl:variable name="poz1" select="ID3" />
                        <xsl:for-each select="/root/node[generate-id()=generate-id(key('key3'', concat($poz,$poz1,ID3/text())))]">
                                    ...
                        </xsl:for-each> 
           </xsl:for-each> 
   </xsl:for-each> 
...
Рейтинг: 0 / 0
03.02.2013, 19:21
    #38135394
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Три key в xslt-шаблоне
Вроде должно работать. Если двойные апострофы в функции key() это опечатка при публикации на форуме. Меня напрягает использование функции text() - я, обычно, без нее делаю.
...
Рейтинг: 0 / 0
03.02.2013, 19:22
    #38135396
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Три key в xslt-шаблоне
Альтаир, А, что, собственно, не так?
...
Рейтинг: 0 / 0
04.02.2013, 03:34
    #38135626
mage.lan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Три key в xslt-шаблоне
Альтаир,

Выборки с poz-ами попутаны, ключи подряд а айдишники потом берете другие.
Если в исходном хмл есть пробелы, я бы посоветовал normalize-space
...
Рейтинг: 0 / 0
04.02.2013, 11:26
    #38135858
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Три key в xslt-шаблоне
mage.lan,
да, спасибо, была путаница в poz. Должно быть:
<xsl:variable name="poz" select="ID1" />
<xsl:variable name="poz1" select="ID2" />
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Три key в xslt-шаблоне / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]