Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод дерева по условию вложенности / 5 сообщений из 5, страница 1 из 1
23.04.2012, 17:25
    #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
23.04.2012, 17:26
    #37766737
sion-zenit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод дерева по условию вложенности
sion-zenit,
Дополнение XSLT 1.0.
...
Рейтинг: 0 / 0
23.04.2012, 17:56
    #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
24.04.2012, 10:11
    #37767564
sion-zenit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод дерева по условию вложенности
_Vasilisk_, спасибо за ответ.
А можете подсказать, как этим пользоваться? В XSLT не силен :(
Если просто скормить этому стилю готовый XML то ничего не выходит, понимаю, что-то не так делаю, но вот что?
...
Рейтинг: 0 / 0
24.04.2012, 12:16
    #37767895
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод дерева по условию вложенности
sion-zenitВ XSLT не силен :(Книги читать не пробовали? Говорят помогает
sion-zenitЕсли просто скормить этому стилю готовый XML то ничего не выходитТак и должно быть. Нужно еще определить шаблон откуда мог бы вызываться шаблон showTopic
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод дерева по условию вложенности / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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