Xml 提取名称空间,并将其';来自最外层元素的URI
我试图提取XML实例最外层元素中两个属性的值。这些属性是:Xml 提取名称空间,并将其';来自最外层元素的URI,xml,xpath,xquery,extract,text-extraction,Xml,Xpath,Xquery,Extract,Text Extraction,我试图提取XML实例最外层元素中两个属性的值。这些属性是: xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:us-gaap="http://xbrl.us/us-gaap/2009-01-31" 到目前为止,使用XQuery还没有得到回报,因为: 您必须在写下查询之前声明名称空间以执行此任务,并且URI并不总是相同的 像这样的命令: declare namespace xbrli="http://www.xbrl.org/2003/i
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:us-gaap="http://xbrl.us/us-gaap/2009-01-31"
到目前为止,使用XQuery还没有得到回报,因为:
declare namespace xbrli="http://www.xbrl.org/2003/instance";
doc("oba.xml")/xbrli:xbrl/string(@us-gaap)
…仍然没有结果<xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:aem="http://www.agnico-eagle.com/20091231" xmlns:dei="http://xbrl.us/dei/2009-01-31" xmlns:dei-std="http://xbrl.us/dei-std/2009-01-31" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:ref="http://www.xbrl.org/2006/ref" xmlns:us-gaap="http://xbrl.us/us-gaap/2009-01-31" xmlns:us-gaap-all="http://xbrl.us/us-gaap-all/2009-01-31" xmlns:us-gaap-std="http://xbrl.us/us-gaap-std/2009-01-31" xmlns:us-roles="http://xbrl.us/us-roles/2009-01-31" xmlns:us-types="http://xbrl.us/us-types/2009-01-31" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
这些是名称空间声明,而不是属性 在XQuery 1.0中可能类似于以下内容:
declare namespace xbrli="http://www.xbrl.org/2003/instance";
let $xbrl := fn:doc("oba.xml")/xbrli:xbrl
let $prefixes := fn:in-scope-prefixes($xbrl)
return
for $prefix in $prefixes
return
fn:namespace-uri-for-prefix($prefix, $xbrl)
下面的进一步跟进基于以下评论:“我需要的东西将字面上只采取最外层的元素,并逐步搜索它,并给每个前缀一个URI。感谢您的巨大帮助。”和“我需要一些非常严格的东西,所以我不能在上面声明名称空间xbrli。就我而言,XBRL在任何地方都不稳定,因此在另一个实例上获取可能更改的URI可能会产生相当大的问题:
亲爱的@adamretter我已经测试了你的解决方案。我没有时间为我的延迟响应感到抱歉。我需要一些非常严格的东西,所以我不能
在那里声明名称空间xbrli
。就我而言,XBRL在任何地方都不稳定,所以在另一个实例上使用可能发生变化的URI
可能会产生相当大的问题。我需要一些它将只获取最外层的元素,一步一步地搜索它,并为每个前缀提供一个URI。感谢您的大力帮助。
let $outer-most := fn:doc("oba.xml")/element()
let $prefixes := fn:in-scope-prefixes($outer-most)
return
for $prefix in $prefixes
return
fn:namespace-uri-for-prefix($prefix, $outer-most)