【问题标题】:BaseX XQuery does not return the root elementBaseX XQuery 不返回根元素
【发布时间】:2014-06-09 16:05:30
【问题描述】:

我正在尝试通过BaseX 使用这样的XQuery 搜索:

XQUERY doc("ann-20140201.xml")//xbrl

我正在提交来自original 实例的一小段摘录:

<?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>

但是,当我使用BaseX 执行查询时,即使&lt;xbrl&gt;root 元素clear,它也不会返回任何内容!

当等价的命令返回根目录时,怎么可能什么都不返回?

等效的命令是:

XQUERY doc("ann-20140201.xml")//*

【问题讨论】:

    标签: xml xpath xquery basex


    【解决方案1】:

    正如前面的答案已经显示的那样,您需要指定命名空间 URI。这是另一种方法:

    doc("ann-20140201.xml")//Q{http://www.xbrl.org/2003/instance}xbrl
    

    如果你是懒打字员,不妨使用通配符:

    doc("ann-20140201.xml")//*:xbrl
    

    【讨论】:

      【解决方案2】:

      您的根元素是{http://xbrl.org/2003/instance}xbrl。您的查询正在寻找xbrl。它们不是一回事。

      试试:

      declare namespace xbrli=http://xbrl.org/2003/instance;
      doc("ann-20140201.xml")//xbrli:xbrl
      

      【讨论】:

      • 哇~ 一个属性怎么可能是根元素呢?我的意思是我们有“
      • @Codo,根元素以&lt;xbrli:xbrl&gt;开头。 : 左边的部分指定了命名空间,还有一个 xmlns:xbrli 给出了它指向的 URL。
      • 我相信是这个但是xmlns:xbrli="http://www.xbrl.org/2003/instance"。我说的对吗?
      • 是的,这是用于其范围内的任何元素的命名空间声明,其名称以xbrli: 开头。
      【解决方案3】:

      这是一个命名空间问题。如果组合来自不同来源的 XML,命名空间尤其重要,例如。在 RSS 提要中嵌入 (X)HTML,其中某些元素可能具有相同的名称但具有不同的含义。

      要解决问题,注册并使用这个命名空间:

      declare namespace xbrli = "http://www.xbrl.org/2003/instance";
      doc("ann-20140201.xml")//xbrli:xbrl
      

      如果您想继续使用命令输入字段,可以将这两行合并为一行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-12
        • 2023-03-18
        • 1970-01-01
        • 2015-06-17
        • 1970-01-01
        相关资源
        最近更新 更多