2013-07-30 58 views
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不起作用。所以,我曾經使用過獲取屬性XBRL中的名稱空間定義的值

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

但是預期值I-2063沒有出現。 如何從上面的文件中獲取屬性contextRef的值?

回答

2

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

XQuery的當然也可以讓你應付的命名空間,所以你不需要local-name()「黑客」:

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() 
+0

感謝馬丁Honnnen。我使用return $ x/* [local-name()=「xbrl」]/* [local-name()=「Assets」]/@ contextRef/string()並得到響應。現在,我清楚了。 – Pant

+1

@SarvagyaPant我會重申馬丁在這裏所說的,最好的做法是聲明和使用名稱空間。在他們身邊工作的黑客可能會產生意想不到的後果。 「local-name」的使用是衆所周知的[code smell](http://en.wikipedia.org/wiki/Code_smell)。 – wst

相關問題