Xslt 如何使用xQuery

Xslt 如何使用xQuery,xslt,xquery,Xslt,Xquery,我有一个xsl文件,当前我一次从中获取所有记录,将它们作为隐藏文件启动,并在用户选择id时显示它们()。id值当前存储为用户单击该id选择的javascript变量。 我想使用xQuery获取记录,但只获取与用户选择的ID匹配的记录。此外,我通常理解xQuery中规则背后的逻辑,只是不知道如何在xsl文件中实际使用它。是否可以使用xQuery将id(js变量)的值与使用xQuery仅获取具有匹配id的记录的值进行比较 感谢您的时间,XQuery是XSLT的一种独立语言,而不是嵌入XSLT中的语言

我有一个xsl文件,当前我一次从中获取所有记录,将它们作为隐藏文件启动,并在用户选择id时显示它们(
)。id值当前存储为用户单击该id选择的javascript变量。

我想使用xQuery获取记录,但只获取与用户选择的ID匹配的记录。此外,我通常理解xQuery中规则背后的逻辑,只是不知道如何在xsl文件中实际使用它。是否可以使用xQuery将id(js变量)的值与使用xQuery仅获取具有匹配id的记录的值进行比较


感谢您的时间,

XQuery是XSLT的一种独立语言,而不是嵌入XSLT中的语言。因此,根据启动XSLT的方式,您可以寻找启动XQuery的并行方法。例如,您可以尝试(我没有尝试过,但它看起来很有希望)

如果您在这方面需要更多帮助,请告诉我们您是如何运行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?”我并没有尝试过这样做,但本文可能会有所帮助:;或者这个:

但是,我认为XQuery可能不是您想要的。XQuery不是XSLT中使用的查询语言,它更像XPath。您可以使用XQuery来代替XSLT,或者在它旁边使用XQuery。因此,如果您正在使用XSLT,并且希望根据用户选择的ID筛选记录,假设您已经知道用户选择的ID,那么简单的方法是在XSLT/XPath中,而不是启动单独的处理器。你可以说

 <xsl:for-each select="//record[@ID = $usersChosenID]"> ...
。。。

让我知道,如果这是接近一个解决方案为您。扩展这一解释有多种方法,但我不想花时间去抓不痒的地方。

这是真的,我可以在常规xslt中完成,但我尝试过的所有方法都要求我使用for each一次性发送所有数据,就像我上面所说的那样。我从一个.aspx页面读取xml,其中xml是从数据库生成的。我还有一个xsl文件,用于生成页面的html。我假设xQuery只使用.xsl,但我以前从未使用过xQuery,也没有用这种方式动态查询数据。我感谢您的帮助,是的,它确实帮助我澄清了我的解决方案。但是,是的,我知道我通过将用户通过查询字符串单击的内容发送到页面实用程序(类似于iframe的sharepoint Web部件)来更新记录,然后该实用程序将显示页面