如何在 <xsl:if test="contains(string, searchedforstring)"> 中使用变量而不是字符串
Posted
技术标签:
【中文标题】如何在 <xsl:if test="contains(string, searchedforstring)"> 中使用变量而不是字符串【英文标题】:how to use a variable instead of a string in <xsl:if test="contains(string, searchedforstring)"> 【发布时间】:2010-12-29 19:13:44 【问题描述】:xsl contains 函数使用字符串值...但是如何动态分配 searchedforstring 的值?应该可以将 html 表单中的文本输入字段的值分配给变量,并将其用作 xsl 文档中搜索字符串的值。
以下脚本 sn-p 获取输入文本的值并将其分配给全局变量 strName*。问题是使用 strName 的值代替搜索的字符串。
<script language="text/javascript">
var strName;
function nameDetails()
var strName = getElementById("txtField1").value;
</script>
【问题讨论】:
你能详细说明一下吗?另外,编辑代码的第一行以在末尾添加 */。 嗨,James,我创建了一个示例以使事情更清晰。我已将详细信息作为文字文档包含在内...这似乎是您可以从eyle.org/XSLcontainsExample.doc 检索到的最简单的内容,并且包含一个全面的视图。或者,我将 XML 文件发布到 eyle.org/books1.xml,XSL 文件位于 eyle.org/contains1books.xsl ...希望您能提供帮助 【参考方案1】:您的问题并不完全清楚,但我认为这可能就足够了。
您可以将值分配给 XML 文档中的某个节点,然后从您的 XSL 中获取该值(也许将其分配到 XSL 变量或其他东西中)。然后,您可以在 XSL 中使用 XSL 变量。
除非我有误解,在这种情况下,你能详细说明一下吗。
【讨论】:
您好,我创建了一个示例以使事情更清晰。我已将详细信息作为 word doc 包含在内……这似乎是您可以从 eyle.org/XSLcontainsExample.doc 检索到的最简单的内容,并且包含一个全面的视图。或者,我将 XML 文件发布到 eyle.org/books1.xml,XSL 文件位于 eyle.org/contains1books.xsl ...希望您能提供帮助 - eyle.org/XSLcontainsExample.doceyle.org/books1.xmleyle.org/contains1books.xsl【参考方案2】:您问题的内容似乎与 XSL 没有任何关系。我的猜测是您正在寻找一种将参数传递给 XSL 处理的方法。我在question 中的回答可能会提供一些线索。如果你能更详细地澄清你的问题,那么也许可以制定一个更具体的例子。
【讨论】:
【参考方案3】:正如 anthony 指出的那样,我认为您希望在样式表中使用一个参数,以便您可以传入要匹配的值。
使用您的样式表,我添加了参数“作者”,您可以传入任何值。
<?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);
【讨论】:
以上是关于如何在 <xsl:if test="contains(string, searchedforstring)"> 中使用变量而不是字符串的主要内容,如果未能解决你的问题,请参考以下文章