Jackson
Новичок
- Регистрация
- 03.12.2012
- Сообщения
- 2
Добрый день.
Возникла необходимость преобразовать один XML в другой, а точнее все атрибуты элементов первого xml сделать элементами в новом xml и дать им новые имена.
Пример моего первоначального xml:
Что должно получиться в итоге:
На просторах инета нашел пример такого преобразования, только не могу понять что есть что:
В общем вопросы:
1 <xsl:template match="@*"> - эта конструкция выбирает атрибуты на любой "глубине" вложенности?
2 что подставить вместо {local-name(.)}?
3 какое пространство имен указать вместо {namespace-uri(..)}? Обычное xmlns:xsl="http://www.w3.org/19...XSL/Transform"?
PS: Знаком с XML и XSLT весьма поверхностно. Прошу помощи, а не ссылок.
Возникла необходимость преобразовать один XML в другой, а точнее все атрибуты элементов первого xml сделать элементами в новом xml и дать им новые имена.
Пример моего первоначального xml:
Код:
<?xml version='1.0' encoding='utf-8'?>
<document>
<item name='F'>
<textlist>
<text>Иванов</text>
</textlist>
</item>
<item name='I'>
<textlist>
<text>Семен</text>
</textlist>
</item>
</document>
Код:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationFile xmlns:xsi="http://www.w3.org/20...chema-instance" xsi:noNamespaceSchemaLocation="Front_Request.xsd">
<ApplicationsList>
<lastname>Иванов</lastname>
<firstname>Семен</firstname>
</ApplicationsList>
</ApplicationFile>
Код:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/19...XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*">
<xsl:element name="{local-name(.)}" namespace="{namespace-uri(..)}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
1 <xsl:template match="@*"> - эта конструкция выбирает атрибуты на любой "глубине" вложенности?
2 что подставить вместо {local-name(.)}?
3 какое пространство имен указать вместо {namespace-uri(..)}? Обычное xmlns:xsl="http://www.w3.org/19...XSL/Transform"?
PS: Знаком с XML и XSLT весьма поверхностно. Прошу помощи, а не ссылок.