![]() |
|
Модераторы: diadiavova |
![]()
|
|
| Yakoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
доброго всем времени суток.. появилась срочная задачка поменять шаблон сообщения, а я до этого XSL в глаза не видел.. не могу понять, как сделать условие: если содержимое тега itemtype.intname равно какой-либо строке, то выводить одно, если другой то другое.. подскажите, пожалуйста?
Добавлено через 11 минут и 11 секунд разобрался.. функция contains() тут нужна) всем спасибо) |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Вообще для проверки условий используются элементы if и choose. Но в принципе, от задачи зависит.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Yakoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
а вот еще вопрос: у меня есть два тега addon в корне.. в каждом из них есть name и value.. xsl:if я вроде научился делать... а как сделать цикл, проверяя каждый addon, и если в нем есть name с нужным содержимым, то выводить значение value?
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Никак. В языке их просто нет. Есть for-each, решает подобные проблемы, но то, что ты описал, обычно делается не так. Следует сразу создавать такое выражение XPath, чтобы в набор узлов попадали нужные узлы, а не все подряд. Ну например, ты ищешь элементы addon с именем qwerty,тогда пишешь следующее выражение
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Yakoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
чот я не понял маленько)) странный этот xsl, всё не так.. исходный XML мне не подвластен, он генерится автоматически..
<doc> ... <addon> <name>myslots</name> <value>10</value> </addon> <addon> <name>myservertype</name> <value>public</value> </addon> ... </doc> вот так выглядит кусок этот в xsl я составляю текст сообщения, выбираю всякие значения из <xsl:template match='doc'> и в один прекрасный момент мне нужно вставить вот эту циферку 10 и слово public в таком виде: Количество слотов: 10 Тип сервера: public видимо как-то нужно прогонять по очереди эти два addon и искать там совпадения.. |
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Ну вот примерно так
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| Yakoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
мм.. спасибо, чуть позже попробую)
|
|||
|
||||
| Yakoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
всё работает) премного благодарен)
|
|||
|
||||
| Yakoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
а вот еще проблемка.. я делаю <xsl:value-of select="substring-after(text, "http://url")"/>
текст выглядит так: "нужная мне часть http://url" получается нужная мне часть возвращается вместе с переводом строки.. пытался в substring-after в "http://url" в начале писать всякие, как мне подсказал гугл, 
, 
, 
.. но чот толку от этого никакого.. обрезающей функции я тоже не нашел.. конечно можно в коде не переводить <xsl:value-of select... на новую строку, тогда забрав перевод строки в итоговом выводе всё станет как нужно.. но это, как мне кажется, немного кривое решение.. может подскажете чего? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
normalize-space удаляет все пробельные символы вначале и в конце строки.
надо писать 
 и 
 подряд. Завершать ессно надо точкой с запятой, здесь не делают, потому что форум сожрать может Только почему substring-after, когда substring-before ? -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| Yakoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
хм.. на автомате написал наверное) там как надо сделано) точки с запятой я ставил, тут забыл просто про них) а насчет того, что надо оба подряд ставить, не знал
|
|||
|
||||
| Yakoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
так.. мне из текста нужно забрать всё что после url без перевода строки после этого самого url...
не работает Это сообщение отредактировал(а) Yakoot - 26.3.2012, 12:30 |
|||
|
||||
| diadiavova |
|
||||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Эммммм... а как же это?
Вообще-то способ переноса строки может варьироваться и зависит как от системы, так и от приложения, в котором создается документ. Я вот сейчас попробовал для вот такого документа
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||||
|
|||||||
| Yakoot |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.12.2011 Репутация: нет Всего: нет |
у меня просто в нужной части тоже были переносы строк, normalize-space их убирает.. пришлось сделать выборку отдельно каждой строки посредством комбинации substring-after и substring-before =) надоело уже возиться с этим) пусть так и остаётся) спасибо за всё)
тему пока не закрываю, мож еще какие вопросы возникнут) |
|||
|
||||
![]()
|
| Правила форума "XML/XSLT" | |
|
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | XML, XSL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |