powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите xml -> xml
4 сообщений из 4, страница 1 из 1
Подскажите xml -> xml
    #38387953
Tdmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем дня!
Подскажите пожаалуйста, как преобразовать xml в xml
Что такое xslt прочитал только сегодня, не ругайтесь

Как такой исходный xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0"?>
-<dataSet>
<row>
<field name="SURNAME">ИВАНОВ</field>
<field name="NAME">Иван</field>
<field name="PATRONYMIC">Иванович</field>
<field name="SNILS">123123123</field>
<field name="BIRTHDATE">20.10.1948</field>
</row>
</dataSet>


(этих field name много)

преобразовать в

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0"? encoding="utf-8" ?>
-<root TYPE="root">
<PATIENT SNILS=''123123123">
<SURNAME>Иванов</SURNAME>
<NAME>Иван</NAME>
<PATRONYMIC>Иванович</PATRONYMIC>
<SNILS>123123123</SNILS>
<BIRTHDATE>20.10.1948</BIRTHDATE>
</PATIENT>
</root>



Шапка по примерам (и то не факт, что правильно). А что делать с field name, не могу понять. И как SNILS затолкать в PATIENT

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	
	<xsl:output method="xml" indent="yes"/>

	<xsl:template match="dataSet">
		<root TYPE="patients">
			<xsl:apply-templates/>
		</root>
	</xsl:template>

	<xsl:template match="row">
		<PATIENT>
			<xsl:apply-templates/>
		</PATIENT>
	</xsl:template>
	
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Подскажите xml -> xml
    #38388756
Tdmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите кто-нибудь, как указать в атрибуте select, чтобы он искал строку с атрибутом, равным определенному значению?
К примеру вот так, но это не работает:
Код: xml
1.
<xsl:value-of select=".|field[@name="SNILS"]" />



Вот полный файл на всякий случай

Код: 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.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	
	<xsl:output method="xml" encoding="utf-8" indent="yes" version="1.0"/>

	<xsl:template match="dataSet">
		<root TYPE="patients">
			<xsl:apply-templates/>
		</root>
	</xsl:template>

	<xsl:template match="row">
		<xsl:element  name ="PATIENT">
			<xsl:attribute name="SNILS">
				<xsl:value-of select=".|field[@name="SNILS"]" />
				
			</xsl:attribute>
			<xsl:apply-templates/>
		</xsl:element>
	</xsl:template>

	<xsl:template match="field">
		<xsl:element  name ="{@name}">
				<xsl:value-of select="text()" />
		</xsl:element>
	</xsl:template>
		
	
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Подскажите xml -> xml
    #38396246
Battledwarf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tdmitry,

Tdmitry,
c таким xsl
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output method="xml" indent="yes"/>
	<xsl:template match="dataSet">
		<root TYPE="patients">
			<xsl:apply-templates/>
		</root>
	</xsl:template>
	<xsl:template match="row">
		&lt;PATIENT snils=&quot;<xsl:value-of select="./field[@name='SNILS']" />&quot;&gt;
			<xsl:apply-templates/>
		&lt;/PATIENT&gt;
	</xsl:template>
	<xsl:template match="field">&lt;<xsl:value-of select="@name" />&gt;<xsl:value-of select="." />&lt;/<xsl:value-of select="@name" />&gt;</xsl:template>
</xsl:stylesheet>


получается вот так:
Код: 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.
<?xml version="1.0" encoding="UTF-8"?>
<root TYPE="patients">

		&lt;PATIENT snils="123123123"&gt;
			
&lt;SURNAME&gt;ИВАНОВ&lt;/SURNAME&gt;
&lt;NAME&gt;Иван&lt;/NAME&gt;
&lt;PATRONYMIC&gt;Иванович&lt;/PATRONYMIC&gt;
&lt;SNILS&gt;123123123&lt;/SNILS&gt;
&lt;BIRTHDATE&gt;20.10.1948&lt;/BIRTHDATE&gt;

		&lt;/PATIENT&gt;
	

		&lt;PATIENT snils="06456256336"&gt;
			
&lt;SURNAME&gt;ПЕТРОВ&lt;/SURNAME&gt;
&lt;NAME&gt;Петр&lt;/NAME&gt;
&lt;PATRONYMIC&gt;Петрович&lt;/PATRONYMIC&gt;
&lt;SNILS&gt;06456256336&lt;/SNILS&gt;
&lt;BIRTHDATE&gt;10.12.1945&lt;/BIRTHDATE&gt;

		&lt;/PATIENT&gt;
	
</root>


Для получения требуемого результата каким-нибудь заменителем подстрок надо < заменить на < , > - на > , а " - на знак кавычки

Будет как-то так:
Код: 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.
<?xml version="1.0" encoding="UTF-8"?>
<root TYPE="patients">

		<PATIENT snils="123123123">
			
<SURNAME>ИВАНОВ</SURNAME>
<NAME>Иван</NAME>
<PATRONYMIC>Иванович</PATRONYMIC>
<SNILS>123123123</SNILS>
<BIRTHDATE>20.10.1948</BIRTHDATE>

		</PATIENT>
	

		<PATIENT snils="06456256336">
			
<SURNAME>ПЕТРОВ</SURNAME>
<NAME>Петр</NAME>
<PATRONYMIC>Петрович</PATRONYMIC>
<SNILS>06456256336</SNILS>
<BIRTHDATE>10.12.1945</BIRTHDATE>

		</PATIENT>
	
</root>

...
Рейтинг: 0 / 0
Подскажите xml -> xml
    #38396268
Battledwarf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, строку
BattledwarfДля получения требуемого результата каким-нибудь заменителем подстрок надо < заменить на < , > - на > , а " - на знак кавычки

надо читать так:
Для получения требуемого результата каким-нибудь заменителем подстрок надо заменить
Код: sql
1.
2.
3.
  &lt; на <
  &gt; на >
  &quot; на " (знак кавычки)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите xml -> xml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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