我有一个 xsl 文件,我目前正在立即从中获取所有记录,将它们作为隐藏开始并在用户选择 id ( <xsl:for-each select"">) 时显示它们。id 值当前存储为用户单击该 id 选择的 javascript 变量。
我想使用 xQuery 来获取记录,但只能获取与用户选择的 ID 匹配的记录。此外,我通常了解 xQuery 中规则背后的逻辑,我只是不明白如何在我的 xsl 文件中实际使用它。是否可以使用 xQuery 将 id(一个 js 变量)的值与使用 xQuery 的值进行比较以仅获取具有该匹配 id 的记录?
感谢您的时间,
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?” 我没有尝试这样做,但这篇文章可能会有所帮助:在 ASP.NET 中使用 Saxon.NET;或者这个:使用 XQuery 查询 XML 数据。
但同样,我认为 XQuery 可能不是您想要的。XQuery 不是在 XSLT 中使用的查询语言——它更像是 XPath。您可以使用 XQuery 来代替XSLT 或在它旁边使用。因此,如果您正在使用 XSLT 并且想要根据用户选择的 ID 过滤记录,假设您已经知道用户选择的 ID,那么在 XSLT/XPath 中实现这一点的简单方法是在 XSLT/XPath 中,而不是启动一个独立的处理器。例如你可以说
<xsl:for-each select="//record[@ID = $usersChosenID]"> ...
Run Code Online (Sandbox Code Playgroud)
如果这接近于您的解决方案,请告诉我。有多种方向可以扩展这个解释,但我不想花时间在没有痒的地方抓挠。