如果这些参数是 XML tags/nodes,如何在 XQuery 中处理用户定义的参数?

How to handle user-defined arguments in XQuery if these arguments are XML tags/nodes?

所以这基本上就是我在 XQuery 中苦苦挣扎的问题,

假设我有这个 XML 文档

<Library xmlns="http://url.com/lib">
  <Shelf>
   <book>
     Charlie's Chocolate Factory
   </book>
  </Shelf>
</Library>

然后我有这段代码(假设序列中的任何内容都是作为参数传入的,我假设参数是作为字符串传入的):

declare namespace lib = "http://url.com/lib";

let $sequence := ("book")
for $arg in $sequence
return //lib:$arg/text())

该代码导致错误 "Unexpected colon." 我的问题是如何解决此问题,以便返回的内容只是 "Charlie's Chocolate Factory." 让我知道是否可以以任何方式更具体。提前感谢您的帮助!

澄清编辑:问题具体是关于如何处理用户定义的参数,假设这些参数应该引用 [=31= 中的元素标签(节点) ] 文档,就好像我们要执行 //lib:$arg 一样,这会产生错误。那么我们如何解决这个错误呢?请假设 "book" 是一个随机的用户定义参数。它可以是 "Library"、"Shelf" 之类的任何东西,甚至可能是无效的东西。

你想要//lib:*[local-name()=$sequence]

XQuery 中的变量不能通过文本替换来工作 - 您只能在需要表达式的地方使用变量引用,而不是在名称的中间。