从xml文件中获取属性

时间:2010-07-27 20:06:14

标签: xml namespaces xquery

我的XML文件条目:

<GlobalView xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <rels>
        <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
    </rels>

想在关系元素中查询属性Id .... 我使用下面给出的查询,它一直工作到元素关系,而不是给我Id属性的值。

for $file in doc("C:/Users/Raffay/Desktop/RnDxr.xml")
return $file/GlobalView/child::rels/child::Relationship

提前感谢

2 个答案:

答案 0 :(得分:0)

尝试

GlobalView/child::rels/child::Relationship/@Id

或缩写形式

GlobalView/rels/Relationship/@Id

答案 1 :(得分:0)

使用

declare default element namespace 
     "http://schemas.openxmlformats.org/package/2006/relationships";

let $vIds := 
    for $file in doc("C:/Users/Raffay/Desktop/RnDxr.xml") 
     return $file/GlobalView/rels/Relationship/@Id

提供的原始代码有两个明显的问题

  1. $file中包含的XML文档具有默认命名空间。如果没有声明 default element namespace ,表达式中所有未加前缀的名称都被视为属于“无名称空间”,并且不会选择任何节点。

  2. 该表达式旨在选择Relationship元素,但此元素的属性Id才是真正需要的。