使用BaseX GUI时出现问题

时间:2014-06-11 15:32:17

标签: xml xpath xquery basex xbrl

我正在尝试使用 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在这里输入(我在这里输入声明命令)?

enter image description here

但我仍然收到与上面相同的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")//*

我一无所获;为什么?另外我如何声明命名空间?

3 个答案:

答案 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...?>)视为处理指令。

确保在声明之前没有任何空格,包括换行符。它必须是文件中的第一件事。