powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как получить в шаблоне значение родительского элемента
6 сообщений из 6, страница 1 из 1
как получить в шаблоне значение родительского элемента
    #39697343
LeoArslan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Прошу помощи гуру
имеем xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<main_list>
<item_main_list>
	<id>id_1</id>
	<sub_list>
		<item_sub_list><val>val_sublist_1_1</val></item_sub_list>
		<item_sub_list><val>val_sublist_1_2</val></item_sub_list>
	</sub_list>
</item_main_list>
<item_main_list>
	<id>id_2</id>
	<sub_list>
		<item_sub_list><val>val_sublist_2_1</val></item_sub_list>
	</sub_list>
</item_main_list>
</main_list>
</root>



и xsl
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">    
<xsl:template match="root">        
	<root>            
		<table>                
			<rows>               
				<xsl:apply-templates select="main_list/item_main_list/sub_list/item_sub_list">
					<xsl:with-param name="paramId" select="main_list/item_main_list/id" />               
				</xsl:apply-templates>            
				</rows>         
		</table>            
	</root>    
</xsl:template>	    
	  
	<xsl:template match="main_list/item_main_list/sub_list/item_sub_list">        
		<xsl:param name="paramId" />      
		<row>            
			<row_id><xsl:value-of select="$paramId" /> </row_id>
			<row_value> <xsl:value-of select="val" /> </row_value>						
		</row>    
	</xsl:template>	    
</xsl:stylesheet>



на выходе получаем
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<?xml version="1.0"?>
<root>
<table>
<rows>
<row><row_id>id_1</row_id><row_value>val_sublist_1_1</row_value></row>
<row><row_id>id_1</row_id><row_value>val_sublist_1_2</row_value></row>
<row><row_id>id_1</row_id><row_value>val_sublist_2_1</row_value></row>
</rows></table></root>


почему в последний строке row_id = id_1, а не id_2 (у родительского элемент). Что делаю не так и что поправить?
...
Рейтинг: 0 / 0
как получить в шаблоне значение родительского элемента
    #39697353
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeoArslanЧто делаю не такВыбираете всегда первый элемент
LeoArslanчто поправить?Выбирать относительно текущего узла
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<xsl:apply-templates select="main_list/item_main_list/sub_list/item_sub_list"/>
.....
<xsl:template match="main_list/item_main_list/sub_list/item_sub_list">        
  <row>            
    <row_id><xsl:value-of select="../id"/> </row_id>
    <row_value> <xsl:value-of select="val" /> </row_value>						
  </row>    
</xsl:template>	    
...
Рейтинг: 0 / 0
как получить в шаблоне значение родительского элемента
    #39697590
LeoArslan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,
>Выбирать относительно текущего узла
К сожалению в предложенном вами решении row_id пусто.

>Выбираете всегда первый элемент
А почему всегда первый? разве with-param не должен передавать в качестве параметра значение текущего элемента
...
Рейтинг: 0 / 0
как получить в шаблоне значение родительского элемента
    #39697605
LeoArslan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot LeoArslan]_Vasilisk_,
>Выбирать относительно текущего узла
К сожалению в предложенном вами решении row_id пусто.

разобрался, надо в вшаем примере поправить ../../id, но для понимания все равно хотелось бы понять почему передается первый элемент
...
Рейтинг: 0 / 0
как получить в шаблоне значение родительского элемента
    #39697718
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeoArslanразве with-param не должен передавать в качестве параметра значение текущего элементаОн должен передавать то значение, которое вы указываете.

Текущий узел на момент вызова with-param у вас /root Текущий контекст изменяется внутри <xsl:template> вызванного через <xsl:apply-templates>, внутри <xsl:for-each> и внутри любого атрибута select
...
Рейтинг: 0 / 0
как получить в шаблоне значение родительского элемента
    #39697843
LeoArslan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_, Спасибо
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как получить в шаблоне значение родительского элемента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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