首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xquery从包含名称空间的xml中提取属性值

使用xquery从包含名称空间的xml中提取属性值
EN

Stack Overflow用户
提问于 2011-08-05 22:41:34
回答 1查看 2.6K关注 0票数 2

我正在尝试提取以下xml文件中元素的属性值

代码语言:javascript
复制
<catalog xmlns="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0" xmlns:xlink="http://www.w3.org/1999/xlink" name="TimeSeriesServer THREDDS Catalog">
    <service base="http://tsds.net/tsds/" serviceType="OpenDAP"/>
    <catalogRef xlink:title="local" xlink:href="test/ncml_catalog.thredds"/>
    <catalogRef xlink:title="remote" xlink:href="http://virbo.org/metamag/viewDataFile.jsp?docname=C6D5623A-ADEC-8397-88A7-DD62A37BA490&amp;filetype=data"/>
</catalog>

而xquery是

代码语言:javascript
复制
declare namespace prefix= "http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0";
declare namespace xlink="http://www.w3.org/1999/xlink";

let $xslt:= "/db/virbo/xq/merge/merge.xsl"
let $xml := "/db/virbo/xq/merge/F8ADA960-F16B-5F72-6B09-BE1FE64E5BB1.xml"

return 
   <li>{doc($xml)/prefix:catalog/prefix:catalogRef/@tile}</li>

它假设给我test/ncml_catalog.threddshttp://virbo.org/metamag/viewDataFile.jsp?docname=C6D5623A-ADEC-8397-88A7-DD62A37BA490&amp;filetype=data,但是最后一行似乎不起作用,并且不知道为什么。提前感谢

EN

回答 1

Stack Overflow用户

发布于 2011-08-05 23:41:14

您的标题没有与名称空间中的@title属性匹配,但是您正在寻找xlink名称空间中的title元素。将测试更改为@xlink:title将解决此问题。

该路径返回一个属性节点,然后将该节点复制到li元素中,该元素将给出类似如下的结果:

代码语言:javascript
复制
<li xlink:title="..." />

而我怀疑你实际上想要来自属性的数据。

将最后一行更改为

代码语言:javascript
复制
<li>{doc($xml)/prefix:catalog/prefix:catalogRef/@xlink:tile/data(.)}</li>

一切都会好起来的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6958111

复制
相关文章

相似问题

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