我有一个xsl文件,我目前正在抓取所有记录,将它们作为隐藏启动,并在用户选择id(<xsl:for-each select"">
)时显示它们。 id值当前存储为用户点击该id选择的javascript变量。
我想使用xQuery来获取记录,但只使用与用户选择的ID匹配的记录。此外,我通常理解xQuery中规则背后的逻辑我只是不明白如何在我的xsl文件中实际使用它。是否有可能使用xQuery来比较id(一个js变量)的值与使用xQuery只能获取具有匹配id的记录的东西?
感谢您的时间,
答案 0 :(得分:4)
XQuery是一种与XSLT不同的语言,而不是嵌入在XSLT中的语言。因此,根据您启动XSLT的方式,您可以查找用于启动XQuery的并行方法。例如,您可以尝试XQIB(我没有尝试过,但看起来很有希望)。
如果您需要更多帮助,请告诉我们您是如何运行XSLT处理器的,以及您的数据源是什么。
HOWEVER ...... XQuery真的不是你想要的,这一点都不清楚。听起来你并不想要在XSLT中已经做过的XQuery。我甚至不确定你是不是在想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]"> ...
让我知道这是否能为您找到解决方案。有很多方向可以扩展这个解释,但我不想花时间在没有痒的地方刮擦。