如何在<xsl中使用变量而不是字符串:if test =“contains(string,searchingforstring)”> </xsl:if>

时间:2009-12-24 11:26:00

标签: javascript xslt contains

xsl包含函数使用字符串值...但是如何动态分配searchingforstring的值?应该可以将html表单中的文本输入字段的值分配给变量,并将其用作xsl文档中搜索的字符串的值。

以下脚本片段获取输入文本的值并将其分配给全局变量strName *。问题是使用strName的值代替搜索的字符串。

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

3 个答案:

答案 0 :(得分:0)

你的问题并不完全清楚,但我认为这可能就足够了。

您可以将值分配给XML文档中的某个节点,然后从XSL中选择它(可能将其分配到XSL变量或其他内容)。然后,您可以在XSL中使用XSL变量。

除非我误解了,在这种情况下,你能否详细说明。

答案 1 :(得分:0)

您的问题内容似乎与XSL没有任何关系。我的猜测是你正在寻找一种方法将参数传递给XSL的处理。我在question中的回答可能会提供一些线索。如果您能够更详细地澄清您的问题,那么可能会制定一个更具体的例子。

答案 2 :(得分:0)

正如安东尼指出的那样,我认为您希望在样式表中使用参数,以便传入值以匹配。

使用样式表,我添加了参数“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);