我正在尝试使用 XPath 通过instance
导航。我在下面提供了original instance
的摘录:
<?xml version="1.0" encoding="US-ASCII"?>
<xbrli:xbrl xmlns:ann="http://www.anninc.com/20140201"
xmlns:dei="http://xbrl.sec.gov/dei/2013-01-31"
xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
xmlns:link="http://www.xbrl.org/2003/linkbase"
xmlns:us-gaap="http://fasb.org/us-gaap/2013-01-31"
xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
xmlns:xbrli="http://www.xbrl.org/2003/instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<link:schemaRef xlink:href="ann-20140201.xsd"
xlink:type="simple" />
<xbrli:context id="FD2011Q4YTD">
<xbrli:entity>
<xbrli:identifier scheme="http://www.sec.gov/CIK"
>0000874214</xbrli:identifier>
</xbrli:entity>
<xbrli:period>
<xbrli:startDate>2011-01-30</xbrli:startDate>
<xbrli:endDate>2012-01-28</xbrli:endDate>
</xbrli:period>
</xbrli:context>
<xbrli:context id="FD2011Q4YTD_ann_EarningsPerShareReconciliationAxis_ann_EarningsPerShareBasic.Member">
<xbrli:entity>
我知道root element
里面有namespace
。我正在使用 BaseX GUI 。根据以前的帮助,我的root element
是{http://xbrl.org/2003/instance}xbrl
!
但是当我在 XPath表达式上尝试这样的时候:
xquery doc("ann-20140201.xml")//{http://xbrl.org/2003/instance}xbrl
然后我点击了执行查询:
Error:
Stopped at C:/Users/Μαρίνος/Desktop/ann-20140201.xml, 1/6:
[XPST0003] Processing instruction has illegal name: 'xml'.
我做错了什么?我也被建议使用:
declare namespace xbrli=http://xbrl.org/2003/instance;
我从 GUI 输入此命令,而input
command
在这里输入(我在这里输入声明命令)?
但我仍然收到与上面相同的error
消息。我必须对illegal name: xml
做些什么?
EDIT_1
wst说使用Q
和Clark Notation:
xquery doc("ann-20140201.xml")//Q{http://xbrl.org/2003/instance}xbrl
- &GT;如果我点击运行,执行,没有错误。但是,不是在 BaseX 上的root element
窗格中获取Result
,而是使用此命令获取它:
XQUERY doc("ann-20140201.xml")//*
我一无所获;为什么?另外我如何声明命名空间?
答案 0 :(得分:2)
在编辑器窗口中输入以下内容,然后按&#34;运行&#34;:
declare namespace xbrli="http://www.xbrl.org/2003/instance";
http:send-request(
<http:request method='get'/>,
'http://www.sec.gov/Archives/edgar/data/874214/000087421414000008/ann-20140201.xml'
)[2]/xbrli:xbrl
数据库能够通过HTTP检索原始文档并从中查询根元素而不会出现问题。
更本地化,以下工作也完美(将文档导入数据库后):
declare namespace xbrli="http://www.xbrl.org/2003/instance";
doc("ann-20140201")/xbrli:xbrl
我注意到问题中的命名空间声明没有问号 - 这些都很重要。
从基于QName的查询中获取结果也没有问题:
doc("ann-20140201")/Q{http://www.xbrl.org/2003/instance}xbrl
答案 1 :(得分:1)
我认为为了使用Clark Notation进行查询,您需要使用Q
作为前缀:
xquery doc("ann-20140201.xml")//Q{http://xbrl.org/2003/instance}xbrl
答案 2 :(得分:1)
处理器不应将XML声明(<?xml...?>
)视为处理指令。
确保在声明之前没有任何空格,包括换行符。它必须是文件中的第一件事。