XSL, получить значение

#
XSL, получить значение
День добрый.

Есть такой XML
<shop id="7" current_group_id="0">
   <group id="624" parent="0">
      <name>Группа1</name>
   </group>
   <group id="639" parent="0">
      <name>Группа2</name>
   </group>
   <group id="650" parent="0">
      <name>Группа3</name>
   </group>

   <item id="181" group="624">
      <name>Элемент1</name>
   </item>
   <item id="181" group="639">
      <name>Элемент2</name>
   </item>
   <item id="181" group="650">
      <name>Элемент3</name>
   </item>
</shop>


Как мне при обработке item вывести названия групп, не используя переменные?

Так не работает
<xsl:template match="item">
      <xsl:value-of select="/shop/group[@id = @group]/name"/>
</xsl:template>
Модератор
#
Re: XSL, получить значение
В чем проблема использовать переменную?
#
Re: XSL, получить значение
проблема в том, что значение мне нужно получить для сортировки, при вызове шаблона

<xsl:apply-templates select="item/property[@xml_name = 'type-of-goods'][value = 'Журналы']">
   <xsl:sort order="ascending" select="/shop/group[@id = @group]/name"/>
</xsl:apply-templates>


а переменные в xsl:apply-templates использовать нельзя
#
Re: XSL, получить значение
undefined, в данном случае у вас ничего не получится - тег sort сортирует только по узлам-потомкам относительно узла указанного в select у тега apply-templates, т.е. xpath-выражение в sort не может иметь абсолютной адресации, только относительную.

А среди потомков узла item нет имени группы, есть только ее id, соответственно сортировать можно только по нему.

Помочь вам может последовательный вызов двух шаблонов.

Сначала вызываете темплейт для group (задав ему какой-нибудь mode, чтобы он не путался с основным тепмлейтом для group), указав у этого темплейта нужную сортировку, а в нем сохраняете в переменную id группы и эпплаите темплейт для item, указав в вызове условие, ограничивающее передаваемые элементы только нужной группой.

Заказов не беру. Консультирую редко.
#
Re: XSL, получить значение
Да, так и сделал)
Спасибо за помощь!
Авторизация