Как сделать цикл в структуре XML с помощью xquery? - PullRequest
2 голосов
/ 23 ноября 2010

XML выглядит так:

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

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

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

Мне нужно создать представление, которое показывает все данные всех людей.

name surname
name1 surname1

Как я могу сделать этот цикл в операторе выбора? Это должен быть вид.

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

Используйте

string-join(/*/person/concat(name, ' ', surname), '&#xA;')

при оценке этого выражения 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>

результат :

 Alex Brown
 Katie Smith
 Julius Caesar
0 голосов
/ 23 ноября 2010

Рассматривали ли вы использование xslt, если вам нужно преобразование?

Если вам нужен xquery, чтобы выбрать эти узлы,

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

ИЛИ

doc("file.xml")//name |// surname     

т.е. имя, фамилия где-либо

...