如何在XQuery中编写一个函数,以使用XPath获取名称为 <Bookstore>
<Book>
<Name>A</Name>
<Price>15</Price>
</Book>
<Book>
<Name>B</Name>
<Price>10</Price>
</Book>
</Bookstore>
的XML下面的Book的价格?
Bookstore/Book[Name/text()='A']/Price/text()
要检索的XPath将使用名称值对,如下所示
{{1}}
请帮忙
答案 0 :(得分:0)
应该如此简单:
/bookstore/book/price/text()
你试过这个吗?
答案 1 :(得分:0)
以下是如何使用XML结构编写XQuery函数以按名称获取图书价格的示例:
xquery version "3.1";
declare function local:get-book-price($book-name as xs:string) as xs:string {
let $bookstore :=
<Bookstore>
<Book>
<Name>A</Name>
<Price>15</Price>
</Book>
<Book>
<Name>B</Name>
<Price>10</Price>
</Book>
</Bookstore>
return
$bookstore/Book[Name eq $book-name]/Price/string()
};
local:get-book-price("A")
这将返回15
。
答案 2 :(得分:0)
如果我正确地解释了你(我仍然有困难)你正在寻找一个eval()
函数,它以字符串的形式获取XPath表达式,并对其进行求值,返回XPath的结果表达
你的用例确实无法解释为什么你需要这个,尽管有很多问题可以解决。
标准XQuery函数库中没有eval()
函数。有些实现有一个,例如Saxon有saxon:evaluate()
。 XSLT 3.0规范有一个标准指令xsl:evaluate
- 它是一个指令而不是一个函数,因为需要为评估建立上下文。