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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает translate в xslt, Преобразование букв в верхний регистр 
:(
    Опции темы
vinograd2008
Дата 29.10.2011, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть пример перевода символов в верхний регистр. Почему символ А не переводится в верхний регистр. То есть он как бы переводится а при переходе по ссылке выдает что файл не найден хотя файл есть. Думаю дело в функции translate что может быть тут неправильно и как изменить чтоб заработало?

Код


<xsl:variable name="req1">
<xsl:value-of select="substring(normalize-space(.),1,1)" />
</xsl:variable>

<xsl:variable name="req">
<xsl:value-of select="translate($req1,'абвгдеёжзийклмнопрстуфхцчшщъыьэюя',
'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ')" />.xml#
<xsl:value-of select="translate($req1,'абвгдеёжзийклмнопрстуфхцчшщъыьэюя',
'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ')" />
<xsl:value-of select="substring(normalize-space(.),2,50)" />
  </xsl:variable>

<a href="{$req}">
 <xsl:value-of select="/Root/Fruits" />
</a>




Это сообщение отредактировал(а) vinograd2008 - 30.10.2011, 09:33
PM MAIL   Вверх
magelan
Дата 29.10.2011, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


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

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



Здесь дело не в транслите, а в бесконечной рекурсии, которую вы объявили, пытаясь в переменой рек обратится к переменной рек. 
PM MAIL   Вверх
vinograd2008
Дата 30.10.2011, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Извините забыл указать строку сейчас отредактировал не похоже что дело в бесконечной рекурсиии если даже у меня переменные называются по разными то все равно translate для буквы А не работает. Объясните что не так в этом коде.
PM MAIL   Вверх
magelan
Дата 30.10.2011, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


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

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



Взял ваш код, подставил значения:
Код

<xsl:template match="/">
    <xsl:variable name="req1" select="substring(normalize-space('абвуфх'),1,1)" />
    <xsl:variable name="req">
        <xsl:value-of select="translate($req1,'абвгдеёжзийклмнопрстуфхцчшщъыьэюя',
            'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ')" />.xml#
        <xsl:value-of select="translate($req1,'абвгдеёжзийклмнопрстуфхцчшщъыьэюя',
            'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ')" />
        <xsl:value-of select="substring(normalize-space('абвуфх'),2,50)" />
    </xsl:variable>
    <a href="{$req}">
        <xsl:value-of select="'ant text'" />
    </a>
</xsl:template>

на выходе получил:
Код

<a href="А.xml#&#xA;        Абвуфх">ant text</a>

что не так?
не надо грешить на функции трансформера, они отлажены миллионами людей... ваши проблемы скорее всего в неправильных данных на вход, странно что мой первый пост не заставил вас их проверить...  там, например, может быть английская "э", которая естественно не будет меняться, т.к. вы не определили для нее правила.
PM MAIL   Вверх
vinograd2008
Дата 30.10.2011, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Так то она работает вроде переводит из нижнего регистра в верхний да показывает при наведении на ссылку, но при переходе по этой ссылке ссылка из такого вида:
 file:///D:/ППР%20по%20РРП/А.xml#Абвуфх
превращается вот в такой 
D:\ППР по РРП\A.xml и переход не осуществляется.

Входные данные проверил ничего английского у меня нет только русский текст.

PM MAIL   Вверх
magelan
Дата 30.10.2011, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


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

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



сделайте только английский все будет работать. XSL тут вообще не при чем, это особенности работы со ссылками у браузеров.
Чтобы ссылка с русскими буквами не видоизменялась, используйте onclick и перенаправляйте скриптом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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