Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как удалить атибуты и теги? / 2 сообщений из 2, страница 1 из 1
03.03.2022, 11:45
    #40137284
eliasum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить атибуты и теги?
Входной файл 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.
36.
37.
38.
39.
40.
41.
<conf title="co" attr01="val01">
  <c attr02="val02">
    <Item key="db" attr03="val03">
	<m1 />
	  <s attr04="val04">
		<m2 attr04="val04"/>
		<Item key="1" attr05="val05">
		  <m3 />
		  <sp>
			<Chart>
				<Widget title="widget12">
					<Test title="test1" />
				</Widget>
			</Chart>
		  </sp>
		</Item>
		<m4 />
		<Item key="2">
		  <sp attr05="val06">
			<m5 />
			<Chart>
				<Widget title="widget32">
					<Test title="test3" />
				</Widget>
			</Chart>
		  </sp>
		</Item>
		<Item key="3" attr06="val07">
		  <sp>
			<Chart>
				<Widget title="widget54">
					<Test title="test6" />
				</Widget>
			</Chart>
		  </sp>
		</Item>
		<m6 attr07="val07" />
	  </s>
    </Item>
  </c>
</conf>



Как удалить все теги, которые не являются родительскими для тега Chart, а так же убрать все атрибуты, кроме key, у всех тегов, кроме корневого и тех, которые являются потомками тега Chart, чтобы после трансформации XSLT файл выглядел так?
Код: 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.
<p title="profile">
  <c>
    <Item key="db">
	  <s>
		<Item key="1">
		  <sp>
			<Chart>
				<Widget title="widget12">
					<Test title="test1"/>
				</Widget>
			</Chart>
		  </sp>
		</Item>
		<Item key="2">
		  <sp>
			<Chart>
				<Widget title="widget32">
					<Test title="test3"/>
				</Widget>
			</Chart>
		  </sp>
		</Item>
		<Item key="3">
		  <sp>
			<Chart>
				<Widget title="widget54">
					<Test title="test6"/>
				</Widget>
			</Chart>
		  </sp>
		</Item>
	  </s>
    </Item>
  </c>
</p>



В выходном файле происходит замена тега conf на тег p с атрибутом title="profile"
...
Рейтинг: 0 / 0
03.03.2022, 12:06
    #40137293
eliasum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить атибуты и теги?
Код: 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.
<?xml version="1.0" encoding="utf-8"?>
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
  
    <!--Identity template-->
  <xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

	<!--Замена узлов 'conf' на 'p'-->
	<xsl:template match="conf">
		<p>
			<xsl:apply-templates select="@*|node()"/>
		</p>
	</xsl:template>
  
<xsl:template match="*">
    <xsl:copy>
        <xsl:copy-of select="@title"/>
        <xsl:apply-templates/>
    </xsl:copy>
</xsl:template>

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


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