我有一个xsl文件,我目前正在从其中一次抓取所有记录,将它们作为隐藏开始,并在用户选择一个id (<xsl:for-each select"">)时显示它们。ID值当前被存储为由用户点击该id所选择的javascript变量。
我想使用xQuery来抓取记录,但只抓取与用户选择的ID匹配的记录。此外,我通常理解xQuery中规则背后的逻辑,只是不知道如何在我的xsl文件中实际使用它。是否可以使用xQuery将id (一个js变量)的值与使用xQuery的内容进行比较,以便仅获取具有该匹配id的记录?
谢谢您抽时间见我,
发布于 2012-07-31 05:21:00
XQuery是一种独立于XSLT的语言,而不是嵌入到XSLT中的语言。因此,根据您启动XSLT的方式,您可以寻找一种并行方法来启动XQuery。例如,您可以尝试XQIB (我还没有尝试过,但它看起来很有希望)。
如果您需要更多帮助,请让我们知道您是如何运行XSLT处理器的,以及您的数据源是什么。
然而..。还不清楚XQuery是否真的是你想要的。听起来您并不需要XQuery来做一些在XSLT中已经不能做的事情。我甚至不确定你是不是在想jQuery..。这是一个完全不同的动物。
如果您能告诉我们更多关于记录来自何处;它们以什么形式存储( XML DOM?);以及您需要如何处理它们的更多信息,这将是很有帮助的。也许最好的解决方案是,我们向您展示如何在XSLT (或Javascript)中完成您想要做的事情。
更新
看着你的新评论,我意识到我可能误解了你试图运行XQuery的地方。你在上面提到了javascript,我假设你想在浏览器中运行XQuery,但现在我想我跳到了错误的结论-你实际上想要在服务器上运行它?
无论您在哪里运行它,XSLT或XQuery都可以选择“只选择与用户选择的ID匹配的记录”。但是,如果XSLT/XQuery在服务器上运行,为了使其工作,您必须在用户选择ID之后进行页面刷新或AJAX调用,以便让服务器上的程序知道所选的ID是什么。我不确定您是否已经设置了该体系结构,或者您是否仍在尝试使用AJAX调用来根据用户输入检索数据。
听起来你不想把整个记录集从服务器发送到客户端,甚至一开始也不想(对吗?)。在这种情况下,用户如何知道可用的ID集是什么?
无论如何,您的问题可能归结为“如何从ASP.NET运行XQuery?”我没有尝试过这样做,但这篇文章可能会有所帮助:Using Saxon.NET in ASP.NET;或者这篇文章:Querying XML Data with XQuery。
但同样,我认为XQuery可能不是您想要的。XQuery不是XSLT中使用的查询语言--它更像XPath。XQuery是您应该使用的东西,而不是XSLT,或者在它旁边。因此,如果您正在使用XSLT,并且希望根据用户选择的ID过滤记录,假设您已经知道用户选择了什么ID,那么最简单的方法是在XSLT/XPath中完成,而不是启动单独的处理器。你可以说
<xsl:for-each select="//record[@ID = $usersChosenID]"> ...如果这对你来说已经接近解决方案,请让我知道。有各种各样的方向来扩展这个解释,但我不想花时间去抓不到的地方。
https://stackoverflow.com/questions/11727493
复制相似问题