首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将一个FLWOR输送到另一个FLWOR?

如何将一个FLWOR输送到另一个FLWOR?
EN

Stack Overflow用户
提问于 2020-02-14 10:37:47
回答 1查看 75关注 0票数 2

获取所有数据的简单FLWOR (从was电子表格中获取):

代码语言:javascript
复制
for $foo  in db:open("foo")
return $foo//text()

给出这种类型的输出:

代码语言:javascript
复制
...    
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非数字数据:

代码语言:javascript
复制
for $foo  in db:open("foo")
return $foo//text()[not(matches(., '[0-9]'))]

似乎只返回了名字。在这种假设下,希望在<person>上触发结束标记并打开一个新的<person>,例如:

代码语言:javascript
复制
<person>
<name>a</name>
<data>123</data>
<data>345</data>
<data>123 main st</data>
</person>

<person>
...
</person>

或者类似的东西。只有在假设名字中没有数字,然后在XML中创建某种实体的前提下,才能真正地分离个人。

只要每次发现一个“名字”就会触发结束标记,然后“启动”一个新的人。对这里的标准行话一点也不确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-14 15:34:10

下面创建一个临时的XML结构,然后遍历每个name元素,使用name和它的following-sibling::data元素创建一个person

代码语言:javascript
复制
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>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60224649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档