获取所有数据的简单FLWOR (从was电子表格中获取):
for $foo in db:open("foo")
return $foo//text()给出这种类型的输出:
...
Smallville, XX 12345-1234
Bob
(123) 456-7809
(123) 876-3468
Smallville, XX 12345-1234
Alice
Smallville, XX 12345-1234
Fred
(123) 654-5432
Smallville, XX 12345-1234
...另一个returns非数字数据:
for $foo in db:open("foo")
return $foo//text()[not(matches(., '[0-9]'))]似乎只返回了名字。在这种假设下,希望在<person>上触发结束标记并打开一个新的<person>,例如:
<person>
<name>a</name>
<data>123</data>
<data>345</data>
<data>123 main st</data>
</person>
<person>
...
</person>或者类似的东西。只有在假设名字中没有数字,然后在XML中创建某种实体的前提下,才能真正地分离个人。
只要每次发现一个“名字”就会触发结束标记,然后“启动”一个新的人。对这里的标准行话一点也不确定。
发布于 2020-02-14 15:34:10
下面创建一个临时的XML结构,然后遍历每个name元素,使用name和它的following-sibling::data元素创建一个person。
let $temp :=
<doc>{
for $foo in db:open("foo")
return
if (matches($foo, "[0-9]"))
then <data>{$foo}</data>
else <name>{$foo}</name>
}</doc>
for $name in $temp/name
return
<person>{
$name,
$name/following-sibling::data[preceding-sibling::name[1]= $name]
}</person>https://stackoverflow.com/questions/60224649
复制相似问题