powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Получить ноды у которых есть потомки
5 сообщений из 5, страница 1 из 1
Получить ноды у которых есть потомки
    #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
Получить ноды у которых есть потомки
    #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
Получить ноды у которых есть потомки
    #34003545
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
красиво получается
...
Рейтинг: 0 / 0
Получить ноды у которых есть потомки
    #34009321
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если присутствуют атрибуты в нодах без текста
то как можно получить при тех же условиях но ноды и с атрибутами
...
Рейтинг: 0 / 0
Получить ноды у которых есть потомки
    #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
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Получить ноды у которых есть потомки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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