Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 如何使用xquery循环xml结构?_Xpath_Xquery_Xpath 2.0 - Fatal编程技术网

Xpath 如何使用xquery循环xml结构?

Xpath 如何使用xquery循环xml结构?,xpath,xquery,xpath-2.0,Xpath,Xquery,Xpath 2.0,xml如下所示: <persons> <person> <name/> <surname/> </person> <person index=1> <name/> <surname/> </person> <person index=2> <name/> <surname/> </person> ... </persons>

xml如下所示:

<persons>
<person>
<name/>
<surname/>
</person>

<person index=1>
<name/>
<surname/>
</person>

<person index=2>
<name/>
<surname/>
</person>
...
</persons>

如何在select语句中执行此循环?它需要是一个视图。

如果需要转换,您是否考虑过使用xslt

如果需要xquery来选择这些节点

doc("file.xml")/persons/person/name | /persons/person/name

i、 e.姓名、姓氏出现在任何地方使用:

string-join(/*/person/concat(name, ' ', surname), '&#xA;')
 Alex Brown
 Katie Smith
 Julius Caesar
计算此XPath表达式时,对照以下XML文档:

<persons>
    <person index="1">
        <name>Alex</name>
        <surname>Brown</surname>
    </person>
    <person index="2">
        <name>Katie</name>
        <surname>Smith</surname>
    </person>
    <person index="3">
        <name>Julius</name>
        <surname>Caesar</surname>
    </person>
</persons>

xml是数据库中表的一列。如果我使用xpath:/persons/person/name,它只会得到它找到的第一个正确的名称?我可以问一下您在后端使用的是什么吗?Asp.NET?JAVAPHP?至于你的问题-不,据我所知,它将返回一组匹配的节点。好问题,+1。请参阅我的答案,了解一个非常简短的XPath单行程序解决方案。:)+1这是更好的答案(不要用
来回答
)。考虑使用<代码> Strug-Cuin()/<代码>,否则你会得到一个序列,所以在新的行之后,将添加一个空格。@ ALJANDROR:我不打算用<代码> <代码>输出结果,所以我不关心最终的外观。您是对的,有许多方法可以在没有任何中间分隔符的情况下实现三个文本节点的串联。但无论如何,你是对的——我已经用建议的修正修改了我的答案。顺便问一下,你为什么要删除你的答案?请取消删除它,我想提高它的正确性和足够短。谢谢,但使用函数调用作为最后一步在功能上更好。
<persons>
    <person index="1">
        <name>Alex</name>
        <surname>Brown</surname>
    </person>
    <person index="2">
        <name>Katie</name>
        <surname>Smith</surname>
    </person>
    <person index="3">
        <name>Julius</name>
        <surname>Caesar</surname>
    </person>
</persons>
 Alex Brown
 Katie Smith
 Julius Caesar