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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XSL. Чтение данных из др. xml 
V
    Опции темы
Compositum
  Дата 21.3.2012, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



Доброго времени суток. 
Исходный xml-файл данных (data.xml):
Код

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<settings>
    <sites>
        <site>
            <path>http://www.yandex.ru/</path>
            <text>Яндекс</text>
            <title>Популярная поисковая система</title>
        </site>
        <site>
            <path>http://www.google.ru/</path>
            <text>Google</text>
            <title>Самая популярная поисковая система</title>
        </site>
    </sites>
</settings>

Дополнительно создал отдельный файл с ресурсами (resources.xml):
Код

<?xml version="1.0" encoding="utf-8"?>
<strings>   
    <str lang="ru" name="main header">Перечень сайтов</str>  
    <str lang="en" name="main header">Sites list</str>    
</strings>

Далее написал такой XSL-файл (data.xsl), в котором пытаюсь прочитать информацию из файла ресурсов и отобразить её:
Код

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

<xsl:output method="html" indent="yes" media-type="text/html" doctype-system="about:legacy-compat"/>

<xsl:template match="/">
    <xsl:variable name="strs" select="document('./resources/resources.xml')/strings"/>
    <html>
      <body>      
        <!--Показываю значения элементов, находящихся в переменной strs.-->
        <ul>
            <xsl:for-each select="$strs/str">
                <li><xsl:value-of select="."/></li>
            </xsl:for-each>
        </ul>
      </body>
     </html>
</xsl:template>
</xsl:stylesheet>


Вот теперь думаю, как лучше локализацию реализовать... 

Мне кажется - было бы удобно, если на на страничке будет размещён раскрывающийся список с перечнем доступных локализаций. Этот перечень должен формироваться на основе имеющихся файлов ресурсов. например наличие файлов resources.ru-RU.xml и resources.ru-RU.xml должно обусловить наличие в списке соответствующих вариантов.

Можно ли в XSL получить перечень файлов в нужном подкаталоге? Если да, то как?


Это сообщение отредактировал(а) Compositum - 21.3.2012, 11:53
PM   Вверх
diadiavova
Дата 21.3.2012, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



При внешнем осмотре я проблемы не заметил. Возможно дело в относительной ссылке. Попробуй указать абсолютные ссылки, если все будет нормально, значит дело в этом. Причем не только здесь,
Цитата(Compositum @  21.3.2012,  12:32 Найти цитируемый пост)
<xsl:variable name="strs" select="document('resources.xml')/strings"/>

 но и здесь
Код

<?xml-stylesheet type="text/xsl" href="data.xsl"?>

Иногда проблема может быть связана с настройками браузера, то есть он, к примеру, может нормально работать с относительными ссылками документов сервера, но когда запускаешь из файловой системы - не работает. Можно в настройках исправить, но тут надо смотреть, что за браузер и все такое. 
Если абсолютные ссылки не помогут - будем посмотреть smile 


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


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



Цитата(diadiavova @ 21.3.2012,  11:52)
При внешнем осмотре я проблемы не заметил. Возможно дело в относительной ссылке. Попробуй указать абсолютные ссылки, если все будет нормально, значит дело в этом. Причем не только здесь,
Цитата(Compositum @  21.3.2012,  12:32 Найти цитируемый пост)
<xsl:variable name="strs" select="document('resources.xml')/strings"/>

 но и здесь
Код

<?xml-stylesheet type="text/xsl" href="data.xsl"?>

Иногда проблема может быть связана с настройками браузера, то есть он, к примеру, может нормально работать с относительными ссылками документов сервера, но когда запускаешь из файловой системы - не работает. Можно в настройках исправить, но тут надо смотреть, что за браузер и все такое. 
Если абсолютные ссылки не помогут - будем посмотреть smile

я отредактировал сообщение и изменил вопрос. Ошибка была в моём коде и обусловлена невнимательностью. Google Chrome ничего не показывал, а IE выдал мне сообщения об ошибках, благодаря которым я смог найти проблему и исправить. Посмотрите пожалуйста первый пост заново - я там исправил код и изменил вопрос внизу. 
Спасибо.

Добавлено через 5 минут и 37 секунд
Можно ли на JavaScript написать такой код, который бы после выбора локализации из раскрывающегося списка, выполнял бы перезагрузку страницы, при этом указывая в качестве параметра значение атрибута lang? Я бы тогда из XSL прочитал значение этого атрибута и точно знал бы из какого файла ресурсов тянуть локализованный текст...

Или это делается как-то проще?

Добавлено через 10 минут и 21 секунду
Цитата

Можно ли в XSL получить перечень файлов в нужном подкаталоге? 

блин, а зачем XSL... smile наверняка это можно сделать средствами JavaScript.  Как говорил наш командир: "буду посмотреть"(с).
PM   Вверх
diadiavova
Дата 21.3.2012, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Compositum @  21.3.2012,  12:32 Найти цитируемый пост)
Можно ли в XSL получить перечень файлов в нужном подкаталоге?

Нет.
Цитата(Compositum @  21.3.2012,  12:55 Найти цитируемый пост)
Можно ли на JavaScript написать такой код, который бы после выбора локализации из раскрывающегося списка, выполнял бы перезагрузку страницы, при этом указывая в качестве параметра значение атрибута lang? 

Не уверен, что все правильно понял, но насколько понял - без использования серверных технологий нельзя.
Цитата(Compositum @  21.3.2012,  12:55 Найти цитируемый пост)
Или это делается как-то проще?

Можно данные аяксом подгружать.


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

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

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

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

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


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

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


 




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


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

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