Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Получить ноды у которых есть потомки / 5 сообщений из 5, страница 1 из 1
21.09.2006, 13:43
    #34002987
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить ноды у которых есть потомки
есть xml
Взять для примера
нет ограничения для иерархии


<ROOT>
<h>
<elem>elem1</elem>
<elem/>
<elem>elem3</elem>
</h>

<b>
<elem>
<subelem>sub1</subelem1>
<subelem/>
<subelem>sub2</subelem1>
</elem>

<elem>
<subelem/>
<subelem/>
</elem>
</b>

<ROOT>

как получить иерархию где присутствуют только ноды со вложенными потомками
какая трансформация

конечный результат

<ROOT>
<h>
<elem>elem1</elem>
<elem>elem3</elem>
</h>

<b>
<elem>
<subelem>sub1</subelem1>
<subelem>sub2</subelem1>
</elem>

</b>

<ROOT>
...
Рейтинг: 0 / 0
21.09.2006, 14:22
    #34003201
Satrac
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить ноды у которых есть потомки
Код: plaintext
1.
2.
3.
4.
5.
<xsl:template match="node() | @*">
		<xsl:copy>
			<xsl:apply-templates select="node() | @*"/>
		</xsl:copy>
	</xsl:template>
<xsl:template match="*[normalize-space() = '']"/>

Или

Код: plaintext
1.
2.
3.
4.
5.
<xsl:template match="*[count(.//*[text()!=''])!=0 or text()!='']">
   <xsl:element name="{name()}">
   <xsl:copy-of select="@*" />
    <xsl:apply-templates />
   </xsl:element>
 </xsl:template>

Сам с этим мучался вчера.
...
Рейтинг: 0 / 0
21.09.2006, 15:30
    #34003545
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить ноды у которых есть потомки
Спасибо
красиво получается
...
Рейтинг: 0 / 0
25.09.2006, 12:10
    #34009321
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить ноды у которых есть потомки
а если присутствуют атрибуты в нодах без текста
то как можно получить при тех же условиях но ноды и с атрибутами
...
Рейтинг: 0 / 0
27.09.2006, 17:44
    #34016711
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить ноды у которых есть потомки
сам нашёл

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ipo="http://www.altova.com/IPO" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:n1="http://www.xmlspy.com/schemas/orgchart">
<xsl:output version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no" media-type="text/html" />

<xsl:template match="*[count(.//*[text()!=''])!=0 or text()!='' or @* ]">
<xsl:element name="{name()}">
<xsl:copy-of select="@*" />
<xsl:apply-templates />
</xsl:element>
</xsl:template>

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


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