Вопросы По Xslt

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем Eugen, 29 ноя 2012.

  1. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    Добрый день.

    Возникла необходимость преобразовать один 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 весьма поверхностно. Прошу помощи, а не ссылок.
     
Загрузка...

Поделиться этой страницей