Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование XML файла для произвольной структур 
:(
    Опции темы
Hameleon31
Дата 28.5.2014, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.5.2014

Репутация: нет
Всего: нет



Здравствуйте. Прошу помочь с такой задачей, так как только начал учить XML/XSL:

Есть XML файл с неизвестной структурой. Нужно преобразовать его через XSL файл так: для каждого не корневого элемента с простой структурой(в нем нет атрибутов и вложенных элементов) преобразовать его в соответственный атрибут родительского узла с таким же значением. 
PM MAIL   Вверх
diadiavova
Дата 28.5.2014, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Код

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select ="*[count(@*) = 0 and (count(text()) = 1 or count(node()) = 0)]" mode="create-att"/>
      <xsl:apply-templates select="@* | *[not(count(@*) = 0 and (count(text()) = 1 or count(node()) = 0))] | comment() | processing-instruction()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*" mode="create-att">
    <xsl:attribute name="{name()}">
      <xsl:value-of select="text()"/>
    </xsl:attribute>
  </xsl:template>

</xsl:stylesheet>
Код проверил на очень примитивном примере, так что гарантировать, что будет работать везде - не могу.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.