xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

Пространство имен


Автор Сообщение
pitek
Гость




[13540] Чт Фев 05, 2009 11:32
Пространство имен
Добрый день, такой вопрос.
Выдается xml, стандартная насколько я понял, в заголовке следующее:
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns="http://backend.userland. com/rss2" xmlns:yandex="http://news.yandex. ru">

xsl шаблон для нее делаю, с таким заголовокм:
(перед зоной пробелы специально)
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="2.0"
xmlns="http://backend.userland. com/rss2"
xmlns:xsl="http://www.w3. org/1999/XSL/Transform"
xmlns:fo="http://www.w3. org/1999/XSL/Format"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:my="http://tempurl. org"
xmlns:yandex="http://news.yandex. ru">

Проблема в чем:
Если из xml убрать строчку xmlns="http://backend.userland. com/rss2", то все отображается на ура, так, как я говорю:
<xsl:template match="channel">
<xsl:for-each select="item">
<xsl:value-of select="title" />\
</xsl:for-each>
</xsl:template>
Т.е. только заголовки

Если же оставить - отображает всю xml.

Помогите вопрос решить, т.к. xml не моя и повлиять на нее не могу
olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[13542] Пт Фев 06, 2009 08:25

Попробуй так:

<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="2.0"
xmlns:rss="http://backend.userland. com/rss2"
xmlns:xsl="http://www.w3. org/1999/XSL/Transform"
xmlns:fo="http://www.w3. org/1999/XSL/Format"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:my="http://tempurl. org"
xmlns:yandex="http://news.yandex. ru">

<xsl:template match="rss:channel">
<xsl:for-each select="item">
<xsl:value-of select="title" />
</xsl:for-each>
</xsl:template>
pitek
Гость




[13544] Пт Фев 06, 2009 08:32

Не, ничего не выводит.
Template match я так понимаю не схватывает, сейчас сравнил match="rss/channel" match="channel" - результат один - выводит все
olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[13550] Пн Фев 09, 2009 10:04

Нужны:
* Пример XML
* Минимальный пример XSLT, который не работает как надо
* Пояснение, что значит "как надо"
pitek
Гость




[13552] Пн Фев 09, 2009 12:21

Проблема решилась первым методом, только сделал вот так:
<xsl:template match="rss:channel">
<xsl:for-each select="rss:item">
<xsl:value-of select="rss:title" />
</xsl:for-each>
</xsl:template>
Ex_Soft
Гость




[13615] Чт Мар 12, 2009 14:23

pitek писал(а):


Проблема решилась первым методом

Код:


xmlns:rss="..."
...
<xsl:template match="rss:channel">
<xsl:for-each select="rss:item">
<xsl:value-of select="rss:title" />



Но тогда приходиться каждый раз дописывать суррогатный default'овый namespace rss. А как сделать, чтобы не нужно было каждый раз его прописывать?
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[13616] Чт Мар 12, 2009 23:40

Ex_Soft писал(а):

Но тогда приходиться каждый раз дописывать суррогатный default'овый namespace rss. А как сделать, чтобы не нужно было каждый раз его прописывать?

Никак. Да и, имхо, нафиг нужно
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
Ex_Soft
Гость




[13617] Пт Мар 13, 2009 00:05

Vasilisk писал(а):


Никак


Однозначно?..

Vasilisk писал(а):


Да и, имхо, нафиг нужно


Гм... Мо Вам с высоты Вашего опыта и виднее...
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[13623] Сб Мар 14, 2009 02:08

Ex_Soft писал(а):

Vasilisk писал(а):

Никак

Однозначно?..


Почему же. Есть какое-то древнее пространство имен для XSL - http://www.w3.org/TR/WD-xsl, вот оно, как-будто бы позволяло обращаться к XML без указания пространства имен. Но, повторяю, пространство имен древнее и к использованию не рекомендуется

Ex_Soft писал(а):

Vasilisk писал(а):

Да и, имхо, нафиг нужно

Гм... Мо Вам с высоты Вашего опыта и виднее...


Именно. Я, считаю, что в XML немного разбираюсь
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
Ex_Soft
Новичок

Зарегистрирован: 13.03.2009
Сообщения: 12

[13624] Сб Мар 14, 2009 08:44

Vasilisk писал(а):


http://www.w3.org/TR/WD-xsl


Насколько я понял - это заточка под M$ IE only. А "...такой хоккей нам не нужен..."
_________________
"Helo, word!" - 17 errors 56 warnings