как использовать переменную вместо строки в <xsl: if test = "содержит (строка, искомая строка)"> - PullRequest
0 голосов
/ 24 декабря 2009

Функция xsl содержит строковые значения ... но как динамически назначить значение искомой строки? Должна быть возможность присвоить значение текстового поля ввода в HTML-форме переменной и использовать его как значение искомой строки в документе xsl.

Следующий фрагмент скрипта получает значение введенного текста и присваивает его глобальной переменной strName *. Проблема заключается в использовании значения strName вместо искомой строки.

<script language="text/javascript">
var strName;
function nameDetails()
{var strName = getElementById("txtField1").value;}
</script>

Ответы [ 3 ]

0 голосов
/ 24 декабря 2009

Содержание вашего вопроса, похоже, не имеет никакого отношения к XSL. Я предполагаю, что вы ищете способ передачи параметра в обработку XSL. Мой ответ на этот вопрос вполне может дать некоторые подсказки. Если вы сможете уточнить свой вопрос более подробно, то, возможно, можно сформулировать более конкретный пример.

0 голосов
/ 25 декабря 2009

Как указывал Энтони, я думаю, что вы хотите использовать параметр со своей таблицей стилей, чтобы вы могли передать значение для сопоставления.

Используя вашу таблицу стилей, я добавил параметр "author", который можно передать в любое значение.

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="author"/>
  <xsl:output method="html"
     omit-xml-declaration="yes"/>

  <xsl:template match="/">
    <html>
       <head>
       <title>books example</title>
       </head>

    <body>
       <xsl:apply-templates select="//book"/>
    </body>
    </html>
  </xsl:template>


  <xsl:template match="book">
       <xsl:if test="contains(author, $author)">

       <DIV>
         <I><xsl:value-of select="title"/></I> by
         <J><xsl:value-of select="author"/></J> genre
         <B><xsl:value-of select="book_genre"/></B>

       </DIV>
     </xsl:if>
  </xsl:template>
  </xsl:stylesheet>

Не уверен, как вы вызываете свои таблицы стилей, но передача параметра будет выглядеть примерно так:

xslProc.addParameter("author", strName);
0 голосов
/ 24 декабря 2009

Ваш вопрос не совсем понятен, но я думаю, что этого может быть достаточно.

Вы можете присвоить значение некоторому узлу в вашем XML-документе, а затем забрать его из своего XSL (возможно, присвоив его переменной XSL или чему-то еще). Затем вы можете использовать переменную XSL в вашем XSL.

Если я не понял неправильно, в таком случае, вы можете уточнить подробнее.

...