powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как сослаться на node, имя которой хранится в другой node?
4 сообщений из 4, страница 1 из 1
Как сослаться на node, имя которой хранится в другой node?
    #34201767
Фотография Пуп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На node мы ссылаемся так

Код: plaintext
<xsl:value-of select="node_name"/>

А как сослаться на node имя которой лежит в другой node или xsl:variable?

Код: plaintext
<xsl:value-of select="??????"/>

Пример

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="result.xsl"?>
<root>
<active_product>cms_portal_standard</active_product>

<cms_portal_light>CMS Portal Light</cms_portal_light>
<cms_portal_standard>CMS Portal Standard</cms_portal_standard>
<cms_portal_pro>CMS Portal Pro</cms_portal_pro>

<menu_item>Item  1 </menu_item>
<menu_item>Item  2 </menu_item>
<menu_item cms_portal_light="hide">Item  3 </menu_item>
<menu_item>Item  4 </menu_item>
<menu_item cms_portal_light="hide" cms_portal_standard="hide">Item  5 </menu_item>
<menu_item cms_portal_light="hide" cms_portal_standard="hide">Item  6 </menu_item>
<menu_item>Item  7 </menu_item>
</root>

XSL

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="yes" method="html" indent="yes"/>

<xsl:template match="root">
<html>
<body>
active product: <xsl:value-of select="active_product"/><br/>
active product name: <xsl:value-of select="cms_portal_standard"/><br/>
menu items:<br/><br/>

<xsl:for-each select="/root/menu_item[not(@cms_portal_standard='hide')]">
  <xsl:value-of select="."/><br/>
</xsl:for-each>

</body>
</html>
</xsl:template>
</xsl:stylesheet>

Как в выделенных местах вместо жестко заданного текста "cms_portal_standard" сослаться на значение active_product?
...
Рейтинг: 0 / 0
Как сослаться на node, имя которой хранится в другой node?
    #34202796
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй функцию local-name
...
Рейтинг: 0 / 0
Как сослаться на node, имя которой хранится в другой node?
    #34204184
Фотография Пуп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал про нее, попробовал использовать не получается.
...
Рейтинг: 0 / 0
Как сослаться на node, имя которой хранится в другой node?
    #34204646
Фотография Пуп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решения

Код: plaintext
active product name: <xsl:value-of select="/root/*[name() = /root/active_product]"/><br/>

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
view items to show<br/><br/>

<xsl:for-each select="/root/menu_item[not(@*[name() = /root/active_product] = 'hide')]">
value: <xsl:value-of select="."/><br/>
</xsl:for-each>
<br/>

view items to hide<br/><br/>

<xsl:for-each select="/root/menu_item[@*[name() = /root/active_product] = 'hide']">
value: <xsl:value-of select="."/><br/>
</xsl:for-each>

xsl это сила!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как сослаться на node, имя которой хранится в другой node?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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