1
<!-- Mapping from Excel to XBRL -->
<xbrl xmlns="http://www.xbrl.org/2003/instance" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:ifrs="http://xbrl.ifrs.org/taxonomy/2013-03-28/ifrs">
<link:schemaRef xlink:type="simple" xlink:href="IFRS\ifrs-cor_2013-03-28.xsd"/>
<!-- Contexts -->
<context id="D-2063">
    <entity>
        <identifier scheme="http://www.cro.gov.np">CRO</identifier>
    </entity>
    <period>
        <startDate>2063-04-01</startDate>
        <endDate>2064-03-31</endDate>
    </period>
</context>
<context id="I-2063">
    <entity>
        <identifier scheme="http://www.cro.gov.np">CRO</identifier>
    </entity>
    <period>
        <instant>2064-03-31</instant>
    </period>
</context>
<!-- Units -->
<unit id="U-Monetary">
    <measure>iso4217:NPR</measure>
 </unit>  
<!-- Fact values -->  
<ifrs:Assets contextRef="I-2063" unitRef="U-Monetary" decimals="0">7954664475</ifrs:Assets>
</xbrl>  

上面给出的是一个基于 XML 的 XBRL 文件示例。我想从 ifrs:Assets 的 FactValue 中选择 contextRef 的属性值。正如我们所见,我们定义了命名空间,使用简单 xpath 的普通 xquery 不起作用。所以,我用过

  xquery version "3.0";
  let $x:=doc("/db/Siddhartha/2061.xml")
  return $x/*[local-name()="xbrl"]/*[local-name()="Assets"][@contextRef]

但是 I-2063 的预期值没有出现。如何从上述文件中获取属性 contextRef 的值?

4

1 回答 1

2

如果要返回属性的值,请使用$x/*[local-name()="xbrl"]/*[local-name()="Assets"]/@contextRef/string().

当然,XQuery 还允许您处理名称空间,因此您不需要local-name()“hacks”:

xquery version "3.0";
declare default element namespace "http://www.xbrl.org/2003/instance";
declare namespace ifrs = "http://xbrl.ifrs.org/taxonomy/2013-03-28/ifrs";
let $x:=doc("/db/Siddhartha/2061.xml")
return $x/xbrl/ifrs:Assets/@contextRef/string()
于 2013-07-30T15:19:49.987 回答