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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> xslt & namespace 
:(
    Опции темы
hug
Дата 16.5.2008, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



есть xml:
Код

<TourML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0" date="0001-01-01" time="00:00:00" xmlns="http://tourml.ru/products/2004-04-19">
.....
....
....
</TourML>

Пишу xslt:
Код

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

namespace различные и xslt transform не идет

Если из исхондого xml убираю xmlns="http://tourml.ru/products/2004-04-19" все идет нормально, но удалять ns неправильно. Подскажите пожалуйста как разрулить?


PM MAIL   Вверх
Muran
Дата 16.5.2008, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



еднственное, что мне удалось сделать - 
это в xsl обявить такой же namespace в определении стайлщита

xmlns:ns="http://www.opengis.net/wms"

затем во всех match дописываю ns

типа 
Код

<xsl:template match="ns:element">
...
</xsl:template>


Это сообщение отредактировал(а) Muran - 16.5.2008, 11:05
PM MAIL   Вверх
JVM
Дата 16.5.2008, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



smile да просто в xsl добавь в корневой тег xmlns="http://tourml.ru/products/2004-04-19" и все ...


дело в том, что после того как ты ПЕРЕопределяешь в исходном xml префикс по умолчанию (xmlns="http://tourml.ru/products/2004-04-19") - задаешь новое пространство имен(http://tourml.ru/products/2004-04-19), ты должен использовать это же пространство имен и в xsl.
В xsl уже в принципе не важно какой ты установишь префикс для пространства имен, т.к. имеет смысл не сам префикс, а его значение.

Это сообщение отредактировал(а) JVM - 16.5.2008, 11:17
PM MAIL   Вверх
hug
Дата 16.5.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо большое за ответ
но странно
сделал как вы сказали но трансформ не идет
Код



<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://tourml.ru/products/2004-04-19">
    <xsl:template match="/">
    <root>
            <xsl:value-of select="//TourML/sources/source"/>

    </root>
    </xsl:template>


Output:
Код


<?xml version="1.0" encoding="utf-8"?><root xmlns:ns="http://tourml.ru/products/2004-04-19"></root>


Опять же удаляю неймспейс, все ок
PM MAIL   Вверх
Muran
Дата 18.5.2008, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



попробуй так... 

Код

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns="http://tourml.ru/products/2004-04-19">
    <xsl:template match="/">
    <root>
            <xsl:value-of select="//ns:TourML/ns:sources/ns:source"/>

    </root>
    </xsl:template>
</xsl:stylesheet>


PM MAIL   Вверх
hug
Дата 19.5.2008, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



так получилось:
Но ns неохота писать:(
PM MAIL   Вверх
Muran
Дата 20.5.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



можно попробовать переименовать нэймспэйс.. задать что ns=#default

Код

<xsl:namespace-alias stylesheet-prefix="ns" result-prefix="#default"/>


я так написал, у меня с ходу не получилось... пока отложил.. попробуй, потом расскажешь результат smile
PM MAIL   Вверх
JVM
Дата 20.5.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



xsl:namespace-alias используется для отображения пространства имен, использующиеся в таблице стилей, в другое пространство имен, используемое в выводе и по этому не решит данной проблемы.

Надо признать, что я тоже был не прав и у этой проблемы(насколько я теперь понимаю) нет решения без использования префиксов. Дело в том, что в ражениях XPath игнорируются пространства имен по умолчанию. Т.е. если объявлено пространство имен по умолчанию(xmlns="http://tourml.ru/products/2004-04-19") в XSLT, то это не позволит обратиться к элементам <element> используя выражение XPath //element.

В общем надо объявлять префикс (xmlns:pref="http://tourml.ru/products/2004-04-19") и обращаться к <element> используя //pref:element.
PM MAIL   Вверх
DarkLordis
Дата 6.9.2010, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



в общем решается эта проблема вроде (у меня решилась) крайне просто... (целый день думал что за фигня) 
Код

<xsl:template match="/">
    <xsl:apply-templates/>
</xsl:template>

а все потому что root-элемент не такой как все  smile 

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

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

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

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

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


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

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


 




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


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

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