Вопросы По Xslt

Eugen

Well-known member
22.03.2012
177
0
#1
Добрый день.

Возникла необходимость преобразовать один 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/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Front_Request.xsd">
<ApplicationsList>
<lastname>Иванов</lastname>
<firstname>Семен</firstname>
</ApplicationsList>
</ApplicationFile>

На просторах инета нашел пример такого преобразования, только не могу понять что есть что:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:eek:utput 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/1999/XSL/Transform"?

PS: Знаком с XML и XSLT весьма поверхностно. Прошу помощи, а не ссылок.