powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Древовидные структуры - возможно ли?
4 сообщений из 4, страница 1 из 1
Древовидные структуры - возможно ли?
    #36604571
Shturmovuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток,
Прошу лишь немного подсказать: возможно ли на XSLT сотворить древовидные структуры любого уровня вложенности из XML примерно такого содержания:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<items>
   <item id="1" parent_id="0" title="Элемент 1"/>
   <item id="2" parent_id="0" title="Элемент 2"/>
   <item id="3" parent_id="1" title="Элемент 1.1"/>
   <item id="4" parent_id="1" title="Элемент 1.2"/>
   <item id="5" parent_id="1" title="Элемент 1.3"/>
   <item id="6" parent_id="4" title="Элемент 1.2.1"/>
</items>

И если возможно, то каким способом?
...
Рейтинг: 0 / 0
Древовидные структуры - возможно ли?
    #36604936
junb1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а можно поточнее вопрос? я правильно вас понял?
есть xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<items>
   <item id="1" parent_id="0"/>
   <item id="2" parent_id="0"/>
   <item id="3" parent_id="1"/>
   <item id="4" parent_id="1"/>
   <item id="5" parent_id="1"/>
   <item id="6" parent_id="4"/>
</items>

а надо получить
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<items>
   <item id="1" parent_id="0" title="Элемент 1"/>
   <item id="2" parent_id="0" title="Элемент 2"/>
   <item id="3" parent_id="1" title="Элемент 1.1"/>
   <item id="4" parent_id="1" title="Элемент 1.2"/>
   <item id="5" parent_id="1" title="Элемент 1.3"/>
   <item id="6" parent_id="4" title="Элемент 1.2.1"/>
</items>

или как?
...
Рейтинг: 0 / 0
Древовидные структуры - возможно ли?
    #36605290
Shturmovuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, не так.
Из исходного XML нужно собрать, например, XHTML, учитывая уровни иерархии. Например, на HTML или на XHTML можно было бы сделать ссылки в виде следующего дерева:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
****************
****************
   ****************
      ****************
   ****************
      ****************
      ****************
      ****************
   ****************
****************
****************
   ****************
      ****************
   ****************
      ****************
****************

Где **************** - это текст ссылки.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Или рубрикатор, например, новостей:
Рубрика  1 
   подрубрика  1 . 1 
   подрубрика  1 . 2 
      подрубрика  1 . 2 . 1 
         новость # 1 
      подрубрика  1 . 2 . 2 
         новость # 2 
         новость # 3 
         новость # 4 
   подрубрика  1 . 3 

Я в принципе реализовал что-то подобное, но там максимальный уровень вложенности определяется самостоятельно, при этом значительно увеличивается количество кода в XSL-файле.
...
Рейтинг: 0 / 0
Древовидные структуры - возможно ли?
    #36605438
junb1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
	<xsl:template match="/">
		<ol>
		<xsl:for-each select="items/item[@parent_id=0]">
			<li>
				<a href="#"><xsl:value-of select="@title"/></a>
			</li>
			<xsl:call-template name="qqq"><xsl:with-param name="id" select="@id"/></xsl:call-template>
		</xsl:for-each>
		</ol>
	</xsl:template>
	
	<xsl:template name="qqq">
		<xsl:param name="id"/>
		
		<xsl:if test="count(/items/item[@parent_id=$id])!=0">
			<ol>
			<xsl:for-each select="/items/item[@parent_id=$id]">
				<li>
					<a href="#"><xsl:value-of select="@title"/></a>
				</li>
				<xsl:call-template name="qqq"><xsl:with-param name="id" select="@id"/></xsl:call-template>
			</xsl:for-each>
			</ol>
		</xsl:if>
	</xsl:template>
думаю примерно так тебе надо
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Древовидные структуры - возможно ли?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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