Перейти к содержимому

Фотография
- - - - -

XSLT. Преобразование атрибутов в элементы


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
Сообщений в теме: 3

#1 Jackson

Jackson

    Прохожий

    Топикстартер
  • Новичок
  • 0
    2 сообщ.

Отправлено 03 Декабрь 2012 в 11:22

Добрый день.

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

Сообщение отредактировал Jackson: 03 Декабрь 2012 в 11:27

  • 0

Спонсор

#2 Medwoodu

Medwoodu

    Злобный модер

  • суперМодератор
  • 357
    1 418 сообщ.

Отправлено 04 Декабрь 2012 в 09:49

http://raleigh.ru/XML/XSLTutorial/
  • 0

#3 Jackson

Jackson

    Прохожий

    Топикстартер
  • Новичок
  • 0
    2 сообщ.

Отправлено 04 Декабрь 2012 в 10:58

Просил же не кидать ссылок. Я этих примеров пересмотрел/перечитал фигову тучу. Я задал конкретные вопросы. Подскажите пожалуйста.
  • 0

#4 Dmitriy Voronyuk

Dmitriy Voronyuk

    Прохожий

  • Новичок
  • 0
    3 сообщ.

Отправлено 25 Декабрь 2012 в 15:32

на любой глубине вложенности выбирает //@*
  • 0



Похожие темы Свернуть

Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей