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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение namespace при преобразовании XML в XML 
:(
    Опции темы
Tinger
Дата 20.2.2008, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно решить задачу: 

Есть XML-документ

Код

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='change_namespace.xsl'?>
<my:noderoot xmlns:my="http://oldnamespace.com" xml:lang="ru">
  <my:nodechild my:attrchild="attrvalue">
    nodevalue
  </my:nodechild>
</my:noderoot>


Нужно преобразовать документ в такой же XML с помощью XSLT, заменив только пространство имен для всех элементов. Должно получиться:

Код

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='change_namespace.xsl'?>
<my:noderoot xmlns:my="http://newnamespace.com" xml:lang="ru">
  <my:nodechild my:attrchild="attrvalue">
    nodevalue
  </my:nodechild>
</my:noderoot>


Заранее спасибо за ответы smile
PM MAIL   Вверх
Tinger
Дата 23.2.2008, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Один из вариантов решения:

Код

<?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="no"/>

  <xsl:variable name="nsname">my</xsl:variable>
  <xsl:variable name="nsvalue">http://newnamespace.com</xsl:variable>

  <xsl:template match="/|comment()|processing-instruction()">
    <xsl:copy>
      <!-- go process children (applies to root node only) -->
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*">
    <xsl:element name="{$nsname}:{local-name()}" namespace="{$nsvalue}">
      <!-- go process attributes and children -->
      <xsl:apply-templates select="@*|node()"/>
    </xsl:element>
  </xsl:template>

  <xsl:template match="@*">
    <xsl:element name="{$nsname}:{local-name()}" namespace="{$nsvalue}">
      <xsl:value-of select="."/>
    </xsl:attribute>
  </xsl:template>

</xsl:stylesheet>


Может кто-нибудь с InfoPath-ом Microsoft Office-им работал? Пытаюсь как раз-таки в нем зачитать данные из одной формы в другую с помощью xslt-преобразования. Пока не все получается. Help...

Это сообщение отредактировал(а) Tinger - 23.2.2008, 01:59
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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