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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается сделать привязку xslt к xml(rss), Ошибка в синтаксисе или глюк VS2010?  
:(
    Опции темы
vlad275
Дата 14.2.2012, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте. 
Не получается сделать привязку xslt к xml(rss) в Visual Studio 2010. Наверное я ошибся в синтаксисе содержимого xslt-файла?
Пока хочу сделать просто вывод текста, но никак не получается:
XSLTFile1.xslt:
Код

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <xsl:for-each select="channel/item">
      <xsl:value-of select="title"/>
      <xsl:value-of select="description"/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>


news.xml:
Код

<?xml version="1.0" encoding="Windows-1251"?>
<rss version="2.0" value="RSS линейка новостей компании Плюс-Телеком">
    <channel value="Канал новостей #1">
        <title>Плюс Телеком</title>
        <link>http://plustelecom.ru</link>
        <description>Новости ООО "Плюс-Телеком"</description>


        <item value="Новость #1">
            <title>Укрупнение операторов</title>
            <description>
        В корпоративном сегменте заметны около 30 компаний, но 85% рынка занимает первая семерка. 
     </description>
        </item>

        <item value="Новость #2">
            <title>Операторы мобильной связи снижают цены на роуминг</title>
            <description>В завышении цен их обвинила антимонопольная служба. 
      </description>
        </item>

    </channel>
</rss>


Связывание xml и xslt в настройках источника данных:
user posted image

Связать удается только если в файл XSLTFile1.xslt добавить теги rss, channel, item. К news.xml XSLTFile1.xslt не привязывается: 
user posted image

Это сообщение отредактировал(а) vlad275 - 14.2.2012, 11:44


--------------------
Кто, как и зачем запустил этот механизм уничтожения России:
http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8
PM MAIL   Вверх
diadiavova
Дата 14.2.2012, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(vlad275 @  14.2.2012,  12:43 Найти цитируемый пост)
 Наверное я ошибся в синтаксисе содержимого xslt-файла?

С синтаксисом все в порядке, в перобразовании(если ты хочешь, чтобы выводило текст) укажи
Код

<xsl:output method="text" />
В противном случае будет по умолчанию выводиться xml, а для него нужен корневой элемент, которого у тебя нет. Кроме того, выражения xpath либо пиши полностью, начиная с корневого элемента, либо начинай их с двойного слеша, а то они не распознаются, из-за того, что учитывается непосредственный контекст шаблона. Ну, а так, почему студия чего-то там не привязывает - это вопрос совсем в другой раздел.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vlad275
Дата 2.3.2012, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



diadiavova, Пытаюсь сделать выборку первых 5-ти значений. Не могли бы Вы подсказать, что делать в следующем случае: 
XPath = "rss/channel/item/title" - выводятся все записи
XPath = "rss/channel/item/title[1]" - вылетает ошибка :-(


--------------------
Кто, как и зачем запустил этот механизм уничтожения России:
http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8
PM MAIL   Вверх
diadiavova
Дата 2.3.2012, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(vlad275 @  2.3.2012,  14:18 Найти цитируемый пост)
XPath = "rss/channel/item/title" - выводятся все записи
XPath = "rss/channel/item/title[1]" - вылетает ошибка :-( 

По идее ошибки быть не должно. Какая именно ошибка вылетает и тут видимо нужно больше информации о документе. Тут нужна отладка конкретного документа.

Это сообщение отредактировал(а) diadiavova - 2.3.2012, 13:47


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vlad275
Дата 2.3.2012, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сообщение об ошибке перестало выводиться. Сейчас когда я примению XPath "rss/channel/item/title[1]" к XML "http://news.yandex.ru/mobile.rss" выводятся все записи title плюс апостроф в конце: 
Цитата

    В 2011 году количество мобильных угроз выросло в 6 раз
    "МегаФон" не планирует выплачивать дивиденды за 2011 год
    GetTaxi – вызови такси в Москве нажатием одной кнопки смартфона
    Tele2 Россия и «Связной» будут развивать монобрендовую сеть оператора
    «ВымпелКом» наращивает свои позиции на корпоративном рынке
    ОАО «МегаФон» объявляет финансовые результаты за 2011 год
    В Тюмени появится мобильная сеть четвертого поколения
    МВД предлагает сажать на пять лет за SMS-спам
    ТТК-Дальний Восток объявляет о начале акции «Тёрки»
    NXP и OpenWays предлагают мобильные NFC-ключи для гостиничных сетей
    Акция "Игровой Безлимит - Легкий доступ" от life:)
    Tele2 предлагает жителям Коми стать создателями креативного календаря
    Билайн обновил бонусную программу "Платеж Плюс"
    Британцы просят ограничить сотовый трафик
    "QIWI Кошелек" увеличил обороты в 2,5 раза в 2011 году
`


Когда я применяю "rss/channel/item/title" выводятся все записи title. Из-за этого не могу вывести первые несколько новостей XPath'ом "rss/channel/item/title[1] | rss/channel/item/title[2] | rss/channel/item/title[3]

Это сообщение отредактировал(а) vlad275 - 2.3.2012, 14:14


--------------------
Кто, как и зачем запустил этот механизм уничтожения России:
http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8
PM MAIL   Вверх
diadiavova
Дата 2.3.2012, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



vlad275, сейчас посмотрел пример документа. Дело в том, что индекс учитывался бы так, как тебе надо, если бы все титлы были потомками одного узла. В том виде, в каком они представлены в документе они все имеют индекс 1. То есть тебе надо вместо rss/channel/item/title[1]  писать 
rss/channel/item/title[count(preceding::title) = 0] . То есть подсчитывать количество предшествующих титлов во всем документе.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
vlad275
Дата 2.3.2012, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо! Заработало 
rss/channel/item[1]/title | rss/channel/item[2]/title
Кривовато, но работает

Это сообщение отредактировал(а) vlad275 - 2.3.2012, 14:58


--------------------
Кто, как и зачем запустил этот механизм уничтожения России:
http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8
PM MAIL   Вверх
diadiavova
Дата 2.3.2012, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(vlad275 @  2.3.2012,  15:56 Найти цитируемый пост)
Кривовато

Почему? Нормально вообще-то.

Добавлено через 2 минуты и 36 секунд
Единственное замечание: чтобы не перечислять титлы, можно написать так еще
rss/channel/item[position() &gt; 0 and position() &lt; 5]/title
Получишь айтемы с первого по четвертый. 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
magelan
Дата 2.3.2012, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


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

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



Цитата(vlad275 @ 2.3.2012,  14:56)
Спасибо! Заработало 
rss/channel/item[1]/title | rss/channel/item[2]/title
Кривовато, но работает

ваш код не что иное как:
Код

rss/channel/item[position()=1]/title | rss/channel/item[position()=2]/title

почему не напишите?
Код

rss/channel/item[position() &lt;= 5 ]/title

PM MAIL   Вверх
vlad275
Дата 2.3.2012, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо! Заменил на 
Код

rss/channel/item[position()>0 and position()<=5]/title


Проблема в том, что теперь DataList ничего не выводит, но выводит TreeView. Элементы TreeView вылазят за пределы блока хотя где-только можно я поставил ширину 180px:
http://77.105.164.89/

DataList раньше цеплял к RssDataSource, а теперь подцепил к XmlDataSource, с которым он не хочет работать.

Это сообщение отредактировал(а) vlad275 - 2.3.2012, 15:22


--------------------
Кто, как и зачем запустил этот механизм уничтожения России:
http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8
PM MAIL   Вверх
diadiavova
Дата 3.3.2012, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



vlad275, 
Цитата(vlad275 @  2.3.2012,  16:21 Найти цитируемый пост)
Проблема в том, что теперь DataList ничего не выводит, но выводит TreeView. Элементы TreeView вылазят за пределы блока хотя где-только можно я поставил ширину 180px:

Я так понимаю, ты что-то с aspnet химичишь, видимо вопрос туда. Даталист, тривью и пиксели всякие - я вообще не понял о чем речь.


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

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

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

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

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


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

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


 




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


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

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