2014-02-16 174 views
0

我試圖從XBRL文件中提取一些數據點,在Talend Studio中使用XPath表達式。我想提取所有ShareHolderFunds值以及與其相關的期限(由「ContextRef」屬性引用)的結束日期以及公司註冊號碼。我正在努力使鏈接到期末結束日期 - 目前我的代碼錯誤地返回了兩個ShareHolderFund值的相同結束日期。使用XPath從XBRL中提取數據

這裏是我的代碼了Talend工作室的截圖:

Talend Studio

而這裏的XBRL的摘錄:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="http://www.companieshouse.gov.uk/ef/xbrl/uk/fr/gaap/ae/2009-06-21/stylesheet/CH-AE-stylesheet.xsl"?> 
<xbrl xmlns="http://www.xbrl.org/2003/instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ae="http://www.companieshouse.gov.uk/ef/xbrl/uk/fr/gaap/ae/2009-06-21" xmlns:gc="http://www.xbrl.org/uk/fr/gcd/2004-12-01" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:pt="http://www.xbrl.org/uk/fr/gaap/pt/2004-12-01" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink"> 
<link:schemaRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="http://www.companieshouse.gov.uk/ef/xbrl/uk/fr/gaap/ae/2009-06-21/uk-gaap-ae-2009-06-21.xsd" xlink:type="simple" /> 
<ae:CompanyNotDormant contextRef="y2013">true</ae:CompanyNotDormant> 
<gc:EntityNames> 
    <gc:EntityCurrentLegalName contextRef="y2013">A &amp; Co. Limited</gc:EntityCurrentLegalName> 
</gc:EntityNames> 
<ae:CompanyIdentifyingNumbers> 
    <ae:CompaniesHouseRegisteredNumber contextRef="y2013">123456</ae:CompaniesHouseRegisteredNumber> 
</ae:CompanyIdentifyingNumbers> 
<gc:StatementDatesPeriodsCovered> 
    <gc:BalanceSheetDate contextRef="e2013">2013-03-31</gc:BalanceSheetDate> 
</gc:StatementDatesPeriodsCovered> 

<pt:ShareholderFunds precision="5" contextRef="e2013" unitRef="GBP">5286</pt:ShareholderFunds> 
<pt:ShareholderFunds precision="5" contextRef="e2012" unitRef="GBP">5446</pt:ShareholderFunds> 

<unit id="shares"> 
    <measure>xbrli:shares</measure> 
</unit> 
<unit id="GBP"> 
    <measure>iso4217:GBP</measure> 
</unit> 
<unit id="pure"> 
    <measure>xbrli:pure</measure> 
</unit> 

<context id="e2012"> 
    <entity> 
    <identifier scheme="Ellco/results">A &amp; Co. Limited</identifier> 
    </entity> 
    <period> 
    <instant>2012-03-31</instant> 
    </period> 
</context> 
<context id="s2013"> 
    <entity> 
    <identifier scheme="Ellco/results">A &amp; Co. Limited</identifier> 
    </entity> 
    <period> 
    <instant>2012-03-31</instant> 
    </period> 
</context> 
<context id="e2013"> 
    <entity> 
    <identifier scheme="Ellco/results">A &amp; Co. Limited</identifier> 
    </entity> 
    <period> 
    <instant>2013-03-31</instant> 
    </period> 
</context> 
<ae:CompaniesHouseDocumentAuthentication contextRef="y2013"> </ae:CompaniesHouseDocumentAuthentication> 
<ae:DateAccountsReceived contextRef="e2013">2013-12-25</ae:DateAccountsReceived> 
</xbrl> 

回答

0

使用XPath,我能夠選擇與此兩個不同的日期代碼:

/xbrl/context[@id = /xbrl/pt:ShareholderFunds/@contextRef]/period/instant 

該表達式選擇xbrl/context個元件,其具有一個id屬性對應於/xbrl/pt:ShareholderFundscontextRef屬性,並得到在每一個所述period/instant。該選擇的結果是包含節點集:

2012-03-31 
2013-03-31