gpt4 book ai didi

xml - 从 XQuery 3.0 中的多个输入返回多个值?

转载 作者:数据小太阳 更新时间:2023-10-29 01:49:19 27 4
gpt4 key购买 nike

我已经尝试了一些事情:

for $name in ('Hanz', 'Heinz', 'Hans', 'Huns', 'Hund')
where $name contains text 'Hans' using fuzzy
return $name | $name
(: returns error: Stopped at line 3, column 20: [XPTY0004]
Union expression: node() expected, xs:string found. :)


for $name in ('Hanz', 'Heinz', 'Hans', 'Huns', 'Hund')
where $name contains text 'Hans' using fuzzy
return $name and $name
(: returns true :)

for $name in ('Hanz', 'Heinz', 'Hans', 'Huns', 'Hund')
where $name contains text 'Hans' using fuzzy
return $name, $name
(: returns error: Stopped at line 3, column 19: [XPST0008]
Undefined variable $name. :)

我想做的只是返回名称变量两次。当然,我想做一些更复杂的事情。例如,给定一个文档(取自 w3):

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>

<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>

<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>

<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>

</bookstore>

我尝试执行在 Stack Overflow 的已接受答案中看到的一些查询,但得到了负面结果。例如:

let $sep := ','
for $x in doc('test')/bookstore
where fn:matches($x/book, 'XC')
return fn:string-join( ($x/book/title/text(), $x/book/author/text(),
$x/book/price/text()), $sep)
(: Stopped at line 3, column 31: [XPTY0004] Single item expected,
(element book { ... }, element book { ... }, ...) found. :)

--

我想返回类别属性等于“web”的任何书籍的作者、年份和标题,标题元素的语言属性为英语,其值恰好为“Learning XML”,其任何 child 包含文本“Erik T”;或年份晚于 2003 年,其任何后代包含文本 XML,且其价格低于 20.00 美元。

我认为这显示了 XQuery 的多功能性。如果无法返回(实际上是输入)目标列表,则该软件基本上是无用的。我发现没有一个可靠的答案或教程可以涵盖上述查询的一小部分;但是,对于如何进行数学比较和排序函数存在疑问。这些以它们自己的方式很有用,但在开始时,它们远不如能够根据在表中找到的结果返回表的多列重要。

最佳答案

您在第三次尝试中非常接近,只是缺少括号:

for $name in ('Hanz', 'Heinz', 'Hans', 'Huns', 'Hund')
where $name contains text 'Hans' using fuzzy
return ($name, $name)

您可以返回此序列中的任意变量。

警告:XQuery 不知道嵌套序列,如果您尝试这样做,它们只会被连接起来。如果您需要嵌套序列,则必须构造一个 XML 树,您将返回该树,例如。

return <names>
<name>{$name}</name>
<name>{$name}</name>
</names>

这个不包含任何序列,但它应该显示模式。

关于xml - 从 XQuery 3.0 中的多个输入返回多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12454481/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com