Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > Путь к узлу цикла из другого узла


Автор: starmaster 25.3.2006, 14:35
Есть вот такой, примерно, xml-документ:

Код

<root>

<groups>
<item>
 <id>1</id>
 <value>value #1</value>
</item>

<item>
 <id>2</id>
 <value>value #2</value>
</item>
...
</groups>

<ccat>
 <item>
  <name>name #1</name>
  <model>model #1</model>
  <category_id>1</category_id>
 </item>

 <item>
  <name>name #2</name>
  <model>model #2</model>
  <category_id>2</category_id>
 </item>
</ccat>

</root>


В XSLT есть цикл для выборки каждой ccat/item:

<xsl:for-each select="/root/ccat/item">
...
</xsl:for-each>

Внутри этого цикла требуется выбрать то значение groups/item/value для которого id = category_id (для данной позиции цикла). Всё бы хорошо:

<xsl:value-of select="/root/groups/item[id = category_id]/value"/>

Но единственная проблема, что category_id тут распознаётся как будто он пренадлежит /root/groups/item. Как правильно указать путь к значению цикла, то есть чтобы id = /root/ccat/item/category_id текущей позиции цикла, а не первой позиции?

Автор: maxim1000 25.3.2006, 16:39
первое, что пришло в голову - переменная:
Код

<xsl:variable name="qqq" select="category_id"/>
<xsl:value-of select="/root/groups/item[id=$qqq]/value"/>

Автор: starmaster 25.3.2006, 21:19
maxim1000,

Да, именно это, спасибо! :-)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)