Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > XSL. Чтение данных из др. xml


Автор: Compositum 21.3.2012, 11:32
Доброго времени суток. 
Исходный 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 получить перечень файлов в нужном подкаталоге? Если да, то как?

Автор: 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 

Автор: Compositum 21.3.2012, 11:55
Цитата(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.  Как говорил наш командир: "буду посмотреть"(с).

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

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

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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)