powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML преобразования с помощью XSLT
7 сообщений из 7, страница 1 из 1
XML преобразования с помощью XSLT
    #37504306
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть xml следующего вида:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<root>
<childs>
<child1>
 <fld1>valuefld</fld1>
</child1>
<child2>
 <fld1>valuefld</fld1>
</child2>
...
</childs>
</root>

помогите составить xls схему для преобразования в xml вида:

Код: plaintext
1.
2.
3.
4.
5.
6.
<root>
<childs>
<child1 fld1="valuefld"/>
<child2 fld1="valuefld"/>
...
</childs>
</root>

Буду благодарен, лезть в дебри xpath и тд большого желания нет, гуглить тоже :)
...
Рейтинг: 0 / 0
XML преобразования с помощью XSLT
    #37504319
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,

задача, просто каноническая, для XSL

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
xsl:template match="/">
	<root>
		<childs>
			<xsl:for-each select="/root/childs/*">
				<xsl:element name="{name()}">
					<xsl:for-each select="*">
						<xsl:attribute name="{name()}">
							<xsl:value-of select="." />
						</xsl:attribute>
					</xsl:for-each>
				</xsl:element>
			</xsl:for-each>
		</childs>
	</root>
</xsl:template>
...
Рейтинг: 0 / 0
XML преобразования с помощью XSLT
    #37504344
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lan,

спасибо, как и обещал - премного благодарен :)
...
Рейтинг: 0 / 0
XML преобразования с помощью XSLT
    #37619334
v323rs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток

Подскажите, как сделать следующее с помощью XSLT.

из:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<root>
<childs>
 <fld1>valuefld</fld1>
</childs>
<childs>
 <fld1>valuefld</fld1>
</childs>
...
</root>


изменить на: (изменить название тега "fld1" на "fld01"и добавить еще несколько новых тегов)
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<root>
<childs>
 <fld01>valuefld</fld01>
 <fld02>valuefld</fld02>
 <fld03>valuefld</fld03>
</childs>
<childs>
 <fld01>valuefld</fld01>
 <fld02>valuefld</fld02>
 <fld03>valuefld</fld03>
</childs>
...
</root>


т.е. из тега "fld1" скопировать в тег "fld01" и добавить дополнительные теги "fld02","fld03"
делаю так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<root>
 			<childs>
				<fld01>
					<xsl:value-of select="root/childs/fld1"/>
				</fld01>
			</childs>
		</root>
	</xsl:template>
</xsl:stylesheet>


получаю
Код: xml
1.
2.
3.
4.
5.
6.
7.
<root>
<childs>
 <fld01>valuefld</fld01>
 <fld02></fld02>
 <fld03></fld03>
</childs>
</root>


т.е. только первую часть xml

Пытался по всякому прикрутить <xsl:for-each select="..."> но без успешно (.

Help me

p.s.: если кому то это что то скажет, использую при "dbms_xmlschema.CopyEvolve"
...
Рейтинг: 0 / 0
XML преобразования с помощью XSLT
    #37619426
v323rs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так, но не знаю на сколько это корректно

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<root>
 		<xsl:for-each select="root/childs/.">   
 			<childs>
				<fld01>
					<xsl:value-of select="fld1"/>
				</fld01>
				<fld02></fld02>
				<fld01></fld01>
			</childs>
 		</xsl:for-each>
		</root>
	</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
XML преобразования с помощью XSLT
    #37619544
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v323rs,

Тег childs в цикле зачем?

Мое преобразование у вас не работает?
...
Рейтинг: 0 / 0
XML преобразования с помощью XSLT
    #37620050
v323rs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, mage.lan,

авторТег childs в цикле зачем?
чтобы пробежаться по всем "childs", а не только по первому. У меня без цикла только первый фрагмент "childs" использовался
авторМое преобразование у вас не работает?
1. Ваш скрипт из тега <fld1> делает параметр, а мне этого не надо
2. У меня из тега "fld1" данные должны копироваться в тег "fld01", а у вас указанно <xsl:element name="{name()}">. Это вроде равнозначно "fld1"
поэтому в первоначальном виде он мне не подходил (((
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML преобразования с помощью XSLT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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