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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XSL, динамическое подключение файлов с переменными 
:(
    Опции темы
Funny_Margo
  Дата 23.1.2009, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток!

Помогите пожалуйста разобраться smile

Есть xslt шаблон, он использует некоторые переменные. Сайт на нескольких языках. Необходимо взять значение переменной из файла с нужным нам языком.
Например, есть

en.xslt
Код

    <xsl:variable name="lang.login">Login</xsl:variable>
 

it.xslt
Код

   <xsl:variable name="lang.login">Accesso</xsl:variable>


common.xslt
Код

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"  xmlns="http://www.w3.org/1999/xhtml">
    <xsl:import href="en.xslt"/>

    <xsl:template name="test">
            <h1 class="header_login"><xsl:value-of select="$lang.login" /> </h1>
    </xsl:template>
</xsl:stylesheet>



В данном случае мы подключаем en.xslt и используем английское значение переменной.

А хотелось бы определить сначала, какой у нас язык, а потом вставить значение переменной из нужного файла. Можно это как-нибудь организовать или нет? Заранее спасибо за помощь smile



PM MAIL   Вверх
sir_nuf_nuf
Дата 23.1.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



XSLT преобразование на сервере или в браузере происходит ?


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
Funny_Margo
Дата 24.1.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(sir_nuf_nuf @ 23.1.2009,  16:32)
XSLT преобразование на сервере или в браузере происходит ?

 преобразование происходит на сервере
PM MAIL   Вверх
sir_nuf_nuf
Дата 25.1.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



упс.. как я выяснил делать условные import или include XSLT не позволяет.
элементы import или include должны быть непосредственно в элементе xsl:stylesheet (или на крайняк в xsl:template),
но  никак не в xsl:if

Подстановка шаблонов в параметре href - так же не осуществляется.

Другими словами, что будет подключено на этапе преобразование - должно быть известно заранее. Облом.

Однако! есть множество других хороших методик.. 
например: у вас есть вы можете хранить локализацию в xslt файлах с разными именами, а на момент преобразования - 
давать файлу с локализацией фиксированное имя.
Например:
Код

#создаем символическую ссылку с фиксированным именем (current.xslt) на нужный файл
if ($lang eq 'ru') {
  system('ln -s ru.xslt current.xslt');
} elsif ($lang eq 'ua) {
  system('ln -s ua.xslt current.xslt');
} else {
  system('ln -s en.xslt current.xslt');
}
#делаем трансформацию
my $xslt = XML::LibXSLT.... 
........................
#удаляем временную ссылку.
system('unlink current.xslt');


Тогда XSLT можно будет написать так:
Код

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="current.xslt"/>
    <xsl:template match="/">
           ..........
        </xsl:template>
</xsl:stylesheet>


P.S. Таким образом можно делать только одно преобразование за раз.. если преобразования будут происходить параллельно, то будет коллизия


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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