使用XQuery搜索具有特定详细信息的节点

时间:2013-03-23 17:25:00

标签: xml xpath xml-parsing xquery

我不是XQuery的专家,我不得不搜索大量文件, XML文档有这样的结构,

<files>
<file>
    <name>1</name>
    <contents>
        <content>games</content>
        <content>movies</content>
    </contents>
</file>
<file>
    <name>2</name>
    <contents>
        <content>games</content>
        <content>picture</content>
        <content>work</content>
    </contents>
</file>

它就像用户我有一组内容,如可能(“游戏”,“电影”),我必须返回名称

到目前为止我只写了这个

for $x in /files/file
    return $x/content

我想知道XQuery是否可以实现这一点?如果可能的话,给我一些指导,我不知道所有xquery结构,这是我的主要缺点

2 个答案:

答案 0 :(得分:0)

您必须在xpath中提供contents元素,因为它包含content元素值。 如果你只想要content

的值,你可以尝试这个
for $x in /files/file/contents/content
return xs:string($x)

你也可以试试这个

for $x in /files/file/contents/content
return $x/text()

答案 1 :(得分:0)

你可以试试这个:

let $data:=
<files>
<file>
    <name>1</name>
    <contents>
        <content>games</content>
        <content>movies</content>
    </contents>
</file>
<file>
    <name>2</name>
    <contents>
        <content>games</content>
        <content>picture</content>
        <content>work</content>
    </contents>
</file>
</files>

for $cont in $data//content
return element contents{$cont}