powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод дерева по условию вложенности
5 сообщений из 5, страница 1 из 1
Вывод дерева по условию вложенности
    #37766735
sion-zenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер!
Может есть у кого идеи как организовать следующее построение дерева.
Есть входной XML:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<?xml version="1.0" encoding="UTF-8"?>
<TOPIC_TREE>
	<TOPIC_GROUP>
		<NAME>Группа тем1</NAME>
		<TOPIC_GROUP>
			<NAME>Подруппа тем 1</NAME>
			<TOPIC_GROUP>
				<NAME>Вложенная папка 1</NAME>
				<TOPIC_GROUP>
					<NAME>Вложенная папка 2</NAME>
					<TOPIC>
						<TOPIC_ID>62</TOPIC_ID>
						<NAME>Интересная тема</NAME>
					</TOPIC>
				</TOPIC_GROUP>
			</TOPIC_GROUP>
			<TOPIC>
				<TOPIC_ID>41</TOPIC_ID>
				<NAME>Тема в дереве</NAME>
			</TOPIC>
			<TOPIC>
				<TOPIC_ID>61</TOPIC_ID>
				<NAME>тема для саши</NAME>
			</TOPIC>
		</TOPIC_GROUP>
	</TOPIC_GROUP>
	<TOPIC>
		<TOPIC_ID>21</TOPIC_ID>
		<NAME>Для переписки2</NAME>
	</TOPIC>
	<TOPIC>
		<TOPIC_ID>1</TOPIC_ID>
		<NAME>Тема для переписки</NAME>
	</TOPIC>
</TOPIC_TREE>


вложенность неограниченна.
Есть XML в котором для некоторых TOPIC с определенным TOPIC_ID указанна вложенность. Т.е. должен выводится этот TOPIC и N родительских узлов, все остальное, что не попало в этот уровень вложенности отсекается. Как это можно организовать, целый день что-то пробую, но все никак не получается?
Спасибо.
...
Рейтинг: 0 / 0
Вывод дерева по условию вложенности
    #37766737
sion-zenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sion-zenit,
Дополнение XSLT 1.0.
...
Рейтинг: 0 / 0
Вывод дерева по условию вложенности
    #37766800
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<xsl:template name="showTopic">
  <xsl:param name="id"/>
  <xsl:param name="level"/>
  <xsl:apply-templates select="//TOPIC_ID[. = $level]" mode="tree">
    <xsl:with-param name="level" select="$level"/>
  </xsl:apply-templates>
</xsl:template>

<xsl:template math="/" mode="tree">
  <xsl:param name="node" select=""/>
  <xsl:value-of select="$node"/>
</xsl:template>

<xsl:template math="*" mode="tree">
  <xsl:param name="level"/>
  <xsl:param name="node" select=""/>
  <xsl:choose>
    <xsl:when test="$level != 0">
      <xsl:apply-templates select=".." mode="tree">
        <xsl:with-param name="level" select="$level - 1"/>
        <xsl:with-param name="node">
          <xsl:element name="{name(.)}">
            <xsl:value-of select="$node"/>
          </xsl:element>
        </xsl:with-param>
      </xsl:apply-templates>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$node"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
...
Рейтинг: 0 / 0
Вывод дерева по условию вложенности
    #37767564
sion-zenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_, спасибо за ответ.
А можете подсказать, как этим пользоваться? В XSLT не силен :(
Если просто скормить этому стилю готовый XML то ничего не выходит, понимаю, что-то не так делаю, но вот что?
...
Рейтинг: 0 / 0
Вывод дерева по условию вложенности
    #37767895
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sion-zenitВ XSLT не силен :(Книги читать не пробовали? Говорят помогает
sion-zenitЕсли просто скормить этому стилю готовый XML то ничего не выходитТак и должно быть. Нужно еще определить шаблон откуда мог бы вызываться шаблон showTopic
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод дерева по условию вложенности
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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