Здвраствуйте, помогите доброму человеку. Ничего не понимаю в xsl
вот есть строка как я понил выводит данные:
| Код | <xsl:value-of disable-output-escaping="yes" select="item_text"/>
|
как я понял item_text это переменная. Вот с ней мне нужно чуток поработать.
- определить позицию "<hr>" - переменой text1 присвоить все символы с 0 до позиции "<hr>" - переменной text2 присвоить все символы с позиции "<hr>" до конца строки
и вывести по шаблону
item_text = "
<span onclick="question_show(this)">text1<span style="display: none"> text2</span></span>
";
на делфи я бы написал так:
| Код | p1 := pos('<hr>', item_text);
item_text_1 := copy(item_text, 1, p1); item_text_2 := copy(item_text, p1, lenght(item_text)-p1);
item_text := '<span onclick="question_show(this)">' + item_text_1 + '<span style="display: none">'+ item_text_2 + '</span></span>';
|
на php вот так :
| Код | $p1 = strpos($item_text, '<hr>'); $item_text_1 = substr($item_text, 0, $p1); $item_text_2 = substr($item_text, $p1, strlen($item_text)-$p1); $item_text = "<span onclick=\"question_show(this)\"> $item_text_1 <span style=\"display: none\"> $item_text_2 </span>";
|
а как на это XSL
вот весь шаблон
| Код | <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xsl:stylesheet> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/> <xsl:template match="/document"> <!-- СписокЗаписейГостевойКниги --> <h1> <xsl:value-of disable-output-escaping="yes" select="blocks/name"/> </h1> <xsl:value-of disable-output-escaping="yes" select="blocks/description"/> <!-- Выводим сообщение --> <xsl:if test="message/node()"> <div id="message"> <xsl:value-of disable-output-escaping="yes" select="message"/> </div> </xsl:if> <!-- Выводим ошибку (error), если она была передана через внешний параметр --> <xsl:if test="error/node()"> <div id="error"> <xsl:value-of select="error"/> </div> </xsl:if> <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id --> <xsl:variable name="parent_group_id" select="blocks/parent_group_id"/> <!-- Отображение подгрупп данной группы --> <ul> <xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="goups"/> </ul> <div id="ShowAddComment"> <a class="dashed" href="javascript:void(0)" onclick="javascript:cr('AddRecord')">Задать вопрос</a> </div> <div id="AddRecord" style="display: none"> <div class="comment"> <!--Отображение формы добавления комментария--> <form action="./" method="post"> <xsl:if test="/document/site_user_id = 0"> <!--Ваше имя: <br/><input type="text" name="autor" size="50" value="{/document/autor}"/><br/>--> Ваше имя: <br/><input type="text" name="subject" size="50" value="{/document/subject}"/><br/> Электронная почта: <br/><input type="text" name="email" size="50" value="{/document/email}"/><br/> </xsl:if> Текст вопроса:<br/> <textarea type="text" name="text_item" cols="38" rows="10"> <xsl:value-of select="/document/text_item"/> </textarea><br/> <!-- Обработка CAPTCHA --> <xsl:if test="/document/captcha_key != 0 and /document/site_user_id = 0"> Введите цифры с картинки <div > <span style="float:left; padding: 7px 10px 0 0"><img class="image" src="/captcha.php?get_captcha={/document/captcha_key}&height=30&width=100" title="Код подтверждения" name="captcha"/></span> <div style="float:left"> <input type="hidden" name="captcha_key" value="{/document/captcha_key}"/> <input type="text" name="captcha_keystring" size="15"/> </div> </div> <div id="captcha" style="clear:both; margin: 0 0 10px 0"> <a class="dashed" href="javascript:void(0);" onclick="ReNewCaptcha({/document/captcha_key}, 30);return false;">Показать другое число</a> </div> </xsl:if> <input type="submit" class="button" name="submit_question" value="Задать вопрос"/> <br/><br/> </form> </div> </div> <!-- Отображение записи информационной системы --> <xsl:apply-templates select="blocks/items/item[item_status=1]"/> <p> <!-- Строка ссылок на другие страницы информационной системы --> <xsl:if test="ОтображатьСсылкиНаСледующиеСтраницы=1"> <xsl:if test="blocks/items/count_items > blocks/items/items_on_page"> <p> <xsl:call-template name="for"> <xsl:with-param name="n" select="blocks/items/count_items div blocks/items/items_on_page"/> <xsl:with-param name="current_page" select="blocks/items/current_page"/> </xsl:call-template> <div style="clear: both"></div> </p> </xsl:if> </xsl:if> </p> </xsl:template> <xsl:template match="blocks/items/item"> <div class="comment"> <xsl:if test="item_name != ''"> <h4><xsl:value-of select="item_name"/></h4> </xsl:if>
<xsl:value-of disable-output-escaping="yes" select="item_text"/>
<!--</div> <div>--> <!-- Если сообщение от авторизованного пользователя --> <xsl:choose> <xsl:when test="site_user"> <a href="/users/info/{site_user/site_user_login}/"><xsl:value-of select="site_user/site_user_login"/></a> </xsl:when> <xsl:otherwise> <xsl:choose> <xsl:when test="item_propertys/item_property[@xml_name='email']/value != ''"> <a href="mailto:{item_propertys/item_property[@xml_name='email']/value}"><xsl:value-of select="item_propertys/item_property[@xml_name='autor']/value"/></a> </xsl:when> <xsl:otherwise> <xsl:value-of select="item_propertys/item_property[@xml_name='autor']/value"/> </xsl:otherwise> </xsl:choose> </xsl:otherwise> </xsl:choose> <!-- · --><div class="date"><xsl:value-of select="item_date"/></div> </div> <!-- Отображение комментариев --> <xsl:if test="count(item_comments/comment) > 0"> <div style="margin-left: 50px"> <xsl:apply-templates select="item_comments/comment"/> </div> </xsl:if> </xsl:template> <!-- Отображение комментариев --> <xsl:template match="comment"> <!-- Отображаем комментарий, если задан текст или тема комментария --> <xsl:if test="comment_text != '' or comment_subject != ''"> <a name="comment{comment_id}"></a> <div class="comment" id="comment{comment_id}"> <xsl:if test="comment_subject != ''"> <div> <strong> <xsl:value-of select="comment_subject"/> </strong> </div> </xsl:if> <xsl:value-of select="comment_text" disable-output-escaping="yes"/> <!-- Оценка комментария --> <xsl:if test="comment_grade != 0"> <div>Оценка: <xsl:call-template name="show_average_grade"> <xsl:with-param name="grade" select="comment_grade"/> <xsl:with-param name="const_grade" select="5"/> </xsl:call-template> </div> </xsl:if> </div> <div class="comment_desc"> <xsl:choose> <!-- Комментарий добавил авторизированный пользователь --> <xsl:when test="site_user_login/node()"> <a href="/users/info/{site_user_login}/" class="c_u_l"> <xsl:value-of select="site_user_login"/> </a> </xsl:when> <!-- Комментарй добавил неавторизированный пользователь --> <xsl:otherwise> <xsl:value-of select="comment_fio"/></xsl:otherwise> </xsl:choose> · <xsl:value-of select="comment_datetime"/> · <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)"><a href="javascript:cr('cr_{comment_id}');">ответить</a> · </xsl:if><a href="{/document/item/item_path}#comment{comment_id}" title="ссылка">#</a> </div> <!-- Отображаем только авторизированным пользователям --> <xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)"> <div class="cr" id="cr_{comment_id}"> <xsl:call-template name="AddCommentForm"> <xsl:with-param name="comment_id" select="comment_id"/> </xsl:call-template> </div> </xsl:if> <!-- Выбираем дочерние комментарии --> <xsl:if test="count(comment) > 0"> <div class="csd"> <xsl:apply-templates select="comment"/> </div> </xsl:if> </xsl:if> </xsl:template> <!-- ======================================================== --> <!-- Шаблон выводит ссылки подгурппы инф. элемента --> <!-- ======================================================== --> <xsl:template match="group" mode="goups"> <xsl:variable name="parent_id" select="@parent_id"/> <li> <xsl:if test="small_image!=''"> <a href="{/document/blocks/url}{fullpath}" target="_blank"> <img src="{small_image}"/> </a> </xsl:if> <a href="{/document/blocks/url}{fullpath}"> <b> <xsl:value-of disable-output-escaping="yes" select="name"/> </b> </a> </li> </xsl:template> <!-- Вывод рейтинга --> <xsl:template name="show_average_grade"> <xsl:param name="grade" select="0"/> <xsl:param name="const_grade" select="0"/> <!-- Чтобы избежать зацикливания --> <xsl:variable name="current_grade" select="$grade * 1"/> <xsl:choose> <!-- Если число целое --> <xsl:when test="floor($current_grade) = $current_grade and not($const_grade > ceiling($current_grade))"> <xsl:if test="$current_grade - 1 > 0"> <xsl:call-template name="show_average_grade"> <xsl:with-param name="grade" select="$current_grade - 1"/> <xsl:with-param name="const_grade" select="$const_grade - 1"/> </xsl:call-template> </xsl:if> <xsl:if test="$current_grade != 0"> <img src="/hostcmsfiles/images/stars_single.gif"/> </xsl:if> </xsl:when> <xsl:when test="$current_grade != 0 and not($const_grade > ceiling($current_grade))"> <xsl:if test="$current_grade - 0.5 > 0"> <xsl:call-template name="show_average_grade"> <xsl:with-param name="grade" select="$current_grade - 0.5"/> <xsl:with-param name="const_grade" select="$const_grade - 1"/> </xsl:call-template> </xsl:if> <img src="/hostcmsfiles/images/stars_half.gif"/> </xsl:when> <!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого --> <xsl:otherwise> <xsl:call-template name="show_average_grade"> <xsl:with-param name="grade" select="$current_grade"/> <xsl:with-param name="const_grade" select="$const_grade - 1"/> </xsl:call-template> <img src="/hostcmsfiles/images/stars_gray.gif"/> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- Цикл для вывода строк ссылок --> <xsl:template name="for"> <xsl:param name="i" select="0"/> <xsl:param name="n"/> <xsl:param name="current_page"/> <xsl:if test="$n > $i"> <!-- Ставим ссылку на страницу--> <xsl:if test="$i != $current_page"> <!-- Заносим в переменную $parent_group_id идентификатор текущей группы --> <xsl:variable name="parent_group_id" select="/document/blocks/parent_group_id"/> <!-- Определяем группу для формирования адреса ссылки --> <xsl:variable name="group_link"> <xsl:choose> <!-- Если группа не корневая (!=0) --> <xsl:when test="$parent_group_id != 0"> <xsl:value-of select="/document/blocks//group[@id=$parent_group_id]/fullpath"/> </xsl:when> <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов --> <xsl:otherwise></xsl:otherwise> </xsl:choose> </xsl:variable> <!-- Определяем адрес ссылки --> <xsl:variable name="number_link"> <xsl:choose> <!-- Если не нулевой уровень --> <xsl:when test="$i != 0">page-<xsl:value-of select="$i+1"/>/</xsl:when> <!-- Иначе если нулевой уровень - просто ссылка на страницу со списком элементов --> <xsl:otherwise></xsl:otherwise> </xsl:choose> </xsl:variable> <a href="{/document/blocks/url}{$group_link}{$number_link}" class="page_link"> <xsl:value-of select="$i+1"/> </a> </xsl:if> <!-- Не ставим ссылку на страницу--> <xsl:if test="$i = $current_page"> <span class="current"> <xsl:value-of select="$i + 1"/> </span> </xsl:if> <!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! --> <xsl:call-template name="for"> <xsl:with-param name="i" select="$i + 1"/> <xsl:with-param name="n" select="$n"/> <xsl:with-param name="current_page" select="$current_page"/> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet>
|
|