forum.bitel.ru http://forum.bitel.ru/ |
|
xsl шаблон дилеров http://forum.bitel.ru/viewtopic.php?f=8&t=7551 |
Страница 2 из 3 |
Автор: | focus [ 18 янв 2013, 14:25 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
можете полный текст xsl выложить? |
Автор: | Sputnik [ 18 янв 2013, 14:41 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Код: <!-- Так объявляем для себя переменную, куда будет сохраняться значения cid --> <xsl:variable name="mycid" select="/data/contract/@id" /> <!-- Так передаем это значение в SQL запрос --> <xsl:variable name="query">select val from contract_parameter_type_7 where cid=<xsl:value-of select="$mycid"/> and pid=30</xsl:variable> <xsl:variable name="pod" select="sql:select( $query )"/> <!-- Перебираем ответ --> <xsl:for-each select="$pod/row"> <fo:block><xsl:value-of select="@val"/></fo:block> </xsl:for-each> все это вставляю в <xsl:template name="Contract"> |
Автор: | Sputnik [ 21 янв 2013, 11:37 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Вот что хочу сделать Код: <tr> <td class="td2"><b>Анкета</b></td> <td class="td2"> <!-- Так объявляем для себя переменную, куда будет сохраняться значения cid --> <xsl:variable name="mycid" select="/data/contract/@id" /> <!-- Так передаем это значение в SQL запрос --> <xsl:variable name="query">SELECT val FROM contract_parameter_type_7 WHERE cid=<xsl:value-of select="$mycid"/> AND pid=30</xsl:variable> <xsl:variable name="pod" select="sql:select( $query )"/> <!-- Перебираем ответ --> <xsl:for-each select="$pod/row"> <fo:block><xsl:value-of select="@val"/></fo:block> </xsl:for-each> <td class="td2"> <xsl:choose> <xsl:when test="$pod = 53"> <td class="td2">Анкета заполнена</td> </xsl:when> <xsl:when test="$pod = 54"> <td class="td2">Анкета не заполнена</td> </xsl:when> </xsl:choose> </td> </td> </tr> Одна проблема. вытащить значение val из базы |
Автор: | focus [ 21 янв 2013, 14:22 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Код: ... <xsl:for-each select="$pod/row"> <fo:block><xsl:value-of select="@val"/></fo:block> </xsl:for-each> ... Смешали и XSL-FO и HTML <fo:block> замените на тэг из HTML <p> или <a> |
Автор: | Sputnik [ 21 янв 2013, 16:12 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Попробовал. Не помогло. </fo:block> копировал с твоего примера Да и перебор здесь не особо вляет. Тормозится на Код: <xsl:variable name="pod" select="sql:select( $query )"/> Убирать перебор и эту строчку, то все оживает. Может тут проблема? Код: <xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xalan="http://xml.apache.org/xalan" xmlns:sql="bitel.billing.server.util.exslt.SQLQuery"> <xsl:output encoding="windows-1251" method="html" indent="yes"/> |
Автор: | skn [ 21 янв 2013, 17:31 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Код: <tr> <td class="td2"><b>Анкета</b></td> <td class="td2"> <!-- Так объявляем для себя переменную, куда будет сохраняться значения cid --> <xsl:variable name="mycid" select="/data/contract/@id" /> <!-- Так передаем это значение в SQL запрос --> <xsl:variable name="query">SELECT val FROM contract_parameter_type_7 WHERE cid=<xsl:value-of select="$mycid"/> AND pid=30</xsl:variable> <xsl:variable name="rs" select="sql:select( $query )"/> <!-- Перебираем ответ --> <xsl:for-each select="$rs/row"> <xsl:variable name="pod" select="@val" /> </xsl:for-each> <td class="td2"> <xsl:choose> <xsl:when test="$pod = 53"> <td class="td2">Анкета заполнена</td> </xsl:when> <xsl:when test="$pod = 54"> <td class="td2">Анкета не заполнена</td> </xsl:when> </xsl:choose> </td> </td> </tr> если не сработает, давайте ошибки из логов |
Автор: | Sputnik [ 21 янв 2013, 22:53 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
skn писал(а): если не сработает, давайте ошибки из логов server.error.log пустой В server.out выходит только вот это Код: 21.01.2013 22:35:37 org.apache.tomcat.util.http.Parameters processParameters WARNING: Parameters: Invalid chunk ignored. код просто скопировал и вставил в <xsl:template name="Contract"> после Код: <tr> <td class="td3"><b>Комментарий</b></td> <td class="td3"> <textarea name="comment" style="width:100%" rows="5"/></td> </tr> Никаких других ошибок нет Мож весь xsl выложить лучше? чтобы так сказать полную картину разом увидеть? |
Автор: | skn [ 22 янв 2013, 00:27 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Sputnik писал(а): Мож весь xsl выложить лучше? чтобы так сказать полную картину разом увидеть? давайте |
Автор: | focus [ 22 янв 2013, 07:07 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Sputnik писал(а): Мож весь xsl выложить лучше? чтобы так сказать полную картину разом увидеть? focus писал(а): можете полный текст xsl выложить? Давайте. |
Автор: | Sputnik [ 22 янв 2013, 09:25 ] | ||
Заголовок сообщения: | Re: xsl шаблон дилеров | ||
Вот файл
|
Автор: | focus [ 22 янв 2013, 12:39 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
В данном случае Код: <!-- Перебираем ответ --> <xsl:for-each select="$rs/row"> <xsl:variable name="pod" select="@val" /> </xsl:for-each> область видимости у переменной pod ограничивается тэгом <xsl:for-each> попробуйте вот так Код: <xsl:variable name="pod"> <xsl:for-each select="$rs/row"> <xsl:value-of select="@val" /> </xsl:for-each> </xsl:variable> У меня подобная конструкция сработала в другом XSL. Но тут нужно быть аккуратным вот в чем, в value переменной pod будут добавлены значения val всех записей. Если в нашем случае это должна быть 1 запись - то вроде, как нормально. В других случаях, может быть неожиданный результат. |
Автор: | Sputnik [ 22 янв 2013, 15:09 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Нет. не сработала конструкция. Тут похоже больше проблема в том что сама переменная rs в строке Код: <xsl:variable name="rs" select="sql:select( $query )"/> не получает результаты запроса, хотя сам запрос в query передается. Получает правильный запрос Код: SELECT val FROM contract_parameter_type_7 WHERE cid=10 AND pid=30 Соответсвенно вопрос: почему эта переменная не получает результаты запроса? |
Автор: | focus [ 22 янв 2013, 16:55 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Я вот так сделал в шаблоне card_inet.xsl Код: <xsl:variable name="mycid" select="/card/contract/@cid" /> <xsl:variable name="query">SELECT title FROM contract WHERE id=<xsl:value-of select="$mycid"/></xsl:variable> <xsl:variable name="rs" select="sql:select( $query )"/> <xsl:variable name="my_module_id"> <xsl:for-each select="$rs/row"> <xsl:value-of select="@title" /> </xsl:for-each> </xsl:variable> <fo:block> = <xsl:value-of select="$my_module_id" /></fo:block> У меня код работает, который указан выше в этом посте. Если не получает результат - проверь, а если выполнить этот запрос к MySQL из какого-нибудь клиента, результат будет? Может у Вас для cid=10 параметра с pid=30 и нет? |
Автор: | skn [ 22 янв 2013, 21:50 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
попробуйте методом исключение найти кусок кода на котором падает удаляйте из xsl блоки и смотрите что выходит попробуйте rs распечатать |
Автор: | Sputnik [ 23 янв 2013, 09:00 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
skn писал(а): попробуйте методом исключение найти кусок кода на котором падает удаляйте из xsl блоки и смотрите что выходит попробуйте rs распечатать Писал об этом выше Sputnik писал(а): Тут похоже больше проблема в том что сама переменная rs в строке Код: <xsl:variable name="rs" select="sql:select( $query )"/> не получает результаты запроса, хотя сам запрос в query передается. Получает правильный запрос Код: SELECT val FROM contract_parameter_type_7 WHERE cid=10 AND pid=30 rs уже не выводит |
Автор: | skn [ 23 янв 2013, 12:32 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
а так Код: <xsl:variable name="rs" select="sql:select( select 1 )"/>
|
Автор: | Sputnik [ 23 янв 2013, 14:16 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Тоже самое. На кнопке выбрать нет результатов. Вот что получил с помощью Firebug Выдало в первый раз Код: Метод Document.load() является устаревшим. Для его замены используйте объект DOM XMLHttpRequest. Более подробная информация доступна на https://developer.mozilla.org/en/XMLHttpRequest xml.load(src); потом больше не выводилось другой раз вышло вот это Код: Метод Document.load() является устаревшим. Для его замены используйте объект DOM XMLHttpRequest. Более подробная информация доступна на https://developer.mozilla.org/en/XMLHttpRequest path = new String(window.location); А вообще тормозит запрос при нажатии на кнопку Выбрать на engine.js (строка 253) Это чем то поможет |
Автор: | skn [ 23 янв 2013, 18:26 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
попробуйте так Код: <xsl:variable name="rs" select="sql:select( '$query' )"/>
|
Автор: | Sputnik [ 24 янв 2013, 09:38 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
нет |
Автор: | Sputnik [ 25 янв 2013, 15:50 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Идей больше ни у кого нет? |
Автор: | skn [ 25 янв 2013, 18:51 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
с sql запросом тут не получиться, так как в отличие от ЛК преобразование xml+xsl=html делается не на стороне сервере, а в браузере клиента. А он ни про яву, sql, базы данных ни чего не знает. |
Автор: | Sputnik [ 28 янв 2013, 08:57 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
skn писал(а): с sql запросом тут не получиться, так как в отличие от ЛК преобразование xml+xsl=html делается не на стороне сервере, а в браузере клиента. А он ни про яву, sql, базы данных ни чего не знает. А как тогда это можно сделать? |
Автор: | focus [ 28 янв 2013, 09:50 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Sputnik писал(а): skn писал(а): с sql запросом тут не получиться, так как в отличие от ЛК преобразование xml+xsl=html делается не на стороне сервере, а в браузере клиента. А он ни про яву, sql, базы данных ни чего не знает. А как тогда это можно сделать? Версия БГ какая? Если 5.2, то можно попробовать модифицировать (дополнить) xml Недавно в 5.2 появился функционал для создания Action через динамический код. Там можно и переопределить определенный action на свой, где модифицировать XML На wiki доп. инфа. skn, так можно будет? |
Автор: | skn [ 28 янв 2013, 10:46 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
не факт, дилер работает через специальный сервлет и сделана ли в нем поддержка динам. акшенов с ходу не скажу |
Автор: | Sputnik [ 28 янв 2013, 11:40 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Моя версия БГ Код: Сервер: вер. 5.1 сборка 761 от 13.02.2012 20:36:09
os: Linux; java: Java HotSpot(TM) Server VM, v.1.6.0_26 card вер. 5.1 сборка 172 от 21.01.2012 01:57:32 |
Автор: | dimOn [ 28 янв 2013, 12:16 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
не, для сервлета idealer это не будет работать, он там сам по себе обрабатывает свои экшены |
Автор: | focus [ 28 янв 2013, 12:35 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Тогда Servlet Filter, который модифицирует ответ сервлета. Вариант? |
Автор: | skn [ 28 янв 2013, 15:23 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
focus писал(а): Тогда Servlet Filter, который модифицирует ответ сервлета. Вариант? да или новый отдельный акшен для возврата этого параметра |
Автор: | dimOn [ 28 янв 2013, 17:18 ] |
Заголовок сообщения: | Re: xsl шаблон дилеров |
Уже который можно написать кстати на дин.коде |
Страница 2 из 3 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |