uCosminexus Business Reporting Processor 開発者ガイド

[目次][用語][索引][前へ][次へ]

4.12.2 インスタンス文書とリンクベースの参照(プライマリー・アイテムのディメンジョンとアイテムの値を参照する場合)

XBRL Dimensions1.0に準拠したタクソノミー文書の読み込み時に生成したXBRL DOMから,プライマリー・アイテムのディメンジョンとアイテムの情報を参照するサンプルコードについて説明します。プライマリー・アイテムおよびディメンジョンの表示名には,ラベルを使用します。

<この項の構成>
(1) 使用するインターフェース
(2) サンプルコード
(3) サンプルコードの実行結果

(1) 使用するインターフェース

インスタンス文書とリンクベースの参照で使用するインターフェースを次の表に示します。

表4-50 インスタンス文書とリンクベースの参照で使用するインターフェース

項番 使用するインターフェース 説明
1 com.hitachi.xbrl.instance.XBRLInstanceDocument インスタンス文書全体を表します。
2 com.hitachi.xbrl.taxonomy.XBRLTaxonomyDocument タクソノミー文書全体を表します。
3 com.hitachi.xbrl.instance.XBRLInstanceElement インスタンス文書に記述される要素を表します。
4 com.hitachi.xbrl.instance.XBRLInstanceItem アイテムを表します。
5 com.hitachi.xbrl.instance.XBRLContext コンテキスト要素を表します。
6 com.hitachi.xbrl.instance.XBRLEntity エンティティ要素を表します。
7 com.hitachi.xbrl.instance.XBRLSegment セグメント要素を表します。
8 com.hitachi.xbrl.instance.XBRLExplicitMember xbrldi:explicitDimension要素を表します。
9 com.hitachi.xbrl.taxonomy.XBRLLabel 要素のラベルを表します。
10 com.hitachi.xbrl.taxonomy.XBRLTaxonomyElement タクソノミー文書に記述される要素の要素宣言を表します。
11 com.hitachi.xbrl.types.XBRLQName XML Schemaのデータ型QNameを表します。

(2) サンプルコード

インスタンス文書とリンクベースを参照するコードは次のとおりです。

/*
 * ここから内容を表示する
 */
// タクソノミー文書を取得
XBRLTaxonomyDocument tdoc = idoc.getTaxonomyDocument();
 
// 売上高の一覧を取得する
List<XBRLInstanceElement> elemList =
    idoc.getElements(
            "http://www.hitachi.com/2008/XBRL/dim/sample",
            "NumbersOfSales");
for (int i = 0; i < elemList.size(); i++) {
 
    System.out.print("(" + i + ")");
 
    XBRLInstanceItem item = (XBRLInstanceItem) elemList.get(i);
 
    // コンテキスト要素を取得する
    XBRLContext context = item.getContext();
 
    // エンティティ要素を取得する
    XBRLEntity entity = context.getEntity();
 
    // セグメント要素を取得する
    XBRLSegment segment = entity.getSegment();
 
    // explicitMember要素の一覧を取得する
    List<XBRLExplicitMember> expMemList =
        segment.getExplicitMembers();
    for (XBRLExplicitMember expMem : expMemList) {
 
        // dimension属性値からディメンジョンを求める
        XBRLQName dimension = expMem.getDimension();
        XBRLTaxonomyElement dimElem =
            tdoc.getElement(
                    dimension.getNamespaceURI(),
                    dimension.getLocalPart());
 
        // ディメンジョンの日本語ラベルを取得する
        XBRLLabel dimLabel = dimElem.getLabel("ja", null);
 
        // explicitMember要素の値からメンバを求める
        XBRLQName member = expMem.getValue();
        XBRLTaxonomyElement memElem =
            tdoc.getElement(
                    member.getNamespaceURI(),
                    member.getLocalPart());
 
        // メンバの日本語ラベルを取得する
        XBRLLabel memLabel = memElem.getLabel("ja", null);
 
        // ディメンジョンとそのメンバを表示
        System.out.print(
                " " + dimLabel.getValue() +
                ":" + memLabel.getValue() + ",");
    }
    // プライマリー・アイテムの日本語ラベルを取得する
    XBRLLabel label = item.getLabel("ja", null);
 
    // アイテムとその値を表示
    System.out.println(
            " " + label.getValue() +
            ":" + item.getValue());
}

(3) サンプルコードの実行結果

サンプルのインスタンス文書を参照したときの実行結果を次に示します。

インスタンス文書のパースに成功しました。
(0) 地域:東京, 製品:液晶, 売上高:10000000
(1) 地域:東京, 製品:プラズマ, 売上高:8000000
(2) 地域:神奈川, 製品:液晶, 売上高:8000000
(3) 地域:神奈川, 製品:プラズマ, 売上高:5000000
(4) 地域:大阪, 製品:液晶, 売上高:9000000
(5) 地域:大阪, 製品:プラズマ, 売上高:8000000
(6) 地域:京都, 製品:液晶, 売上高:7500000
(7) 地域:京都, 製品:プラズマ, 売上高:5500000