4.10.2 タクソノミー本体とリンクベースの参照(DRSの情報を参照する場合)

XBRL Dimensions1.0に準拠したタクソノミー文書の読み込み時に生成したXBRL DOMから,DRSの情報を参照するサンプルコードについて説明します。

このサンプルコードでは,リンクの関係を表すインターフェースの一つである,XBRLDimensionalRelationshipSetインターフェースを使用しています。

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

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

タクソノミー本体とリンクベースの参照で使用するインターフェースを次の表に示します。

表4-45 タクソノミー本体とリンクベースの参照で使用するインターフェース

項番使用するインターフェース説明
1com.hitachi.xbrl.taxonomy.XBRLTaxonomyDocumentタクソノミー文書全体を表します。
2com.hitachi.xbrl.link.XBRLDimensionalRelationshipSetプライマリー・アイテムに関連づいているDRSを表します。
3com.hitachi.xbrl.taxonomy.XBRLTaxonomyElementタクソノミー文書に記述される要素の要素宣言を表します。
4com.hitachi.xbrl.link.XBRLDRSDimensionインスタンス文書に記述できるディメンジョンを表します。
5com.hitachi.xbrl.link.XBRLDRSMemberインスタンス文書に記述できるディメンジョンのメンバを表します。
6com.hitachi.xbrl.util.XBRLConstantsユーザーアプリケーションで利用できる定数を定義します。

(2) サンプルコード

タクソノミー本体とリンクベースを参照するコードは次のとおりです。

// タクソノミー文書のパース
String filename = "input/sample_xbrl_dim_taxonomy.xsd";
File[] taxonomy = { new File(filename) };
XBRLTaxonomyDocument tdoc = tb.parse(taxonomy);

System.out.println("タクソノミー文書のパースに成功しました。");

/*
* ここからタクソノミー文書の内容を参照
*/

System.out.println("読み込んだDRS情報を出力します。");

// すべてのDRSの取得
List<XBRLDimensionalRelationshipSet> drssList =
   tdoc.getDimensionalRelationshipSets();
if (drssList.size() > 0) {

   for (int i = 0; i < drssList.size(); i++) {
       System.out.println("--------------------");
       XBRLDimensionalRelationshipSet drss = drssList.get(i);

       // プライマリー・アイテムを取得
       XBRLTaxonomyItem item = drss.getTaxonomyItem();
       System.out.println(
               "(" + i + ") primary item = "
               + item.getName());

       /*
        * このアイテムに対するディメンジョンの一覧を取得する
        */

       // DRSのロールの一覧を取得する
       List<String> roleList = drss.getRoles();
       for (int j = 0; j < roleList.size(); j++) {
           // DRSのロールを出力
           String extRole = roleList.get(j);
           System.out.println(
                   "  + (" + j + ") role = "
                   + extRole);

           // このロールのディメンジョン一覧を取得する
           List<XBRLDRSDimension> dimList =
               drss.getDRSDimensions(extRole);
           for (int n = 0; n < dimList.size(); n++) {
               // ロールのディメンジョンを出力
               XBRLDRSDimension dim = dimList.get(n);
               System.out.println(
                       "    + (" + n + ") dimension = "
                       + dim.getQName());

               // このディメンジョンのメンバを取得する
               List<XBRLDRSMember> memList =
                   drss.getDRSMembers(dim);
               for (int m = 0; m < memList.size(); m++) {
                   // ディメンジョンのメンバを出力
                   XBRLDRSMember mem = memList.get(m);
                   System.out.println(
                           "       + (" + m + ") member = "
                           + mem.getQName());
               }
           }
       }
       System.out.println("");
   }
}

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

サンプルのタクソノミー文書を参照したときの実行結果を次に示します。

タクソノミー文書のパースに成功しました。
読み込んだDRS情報を出力します。
--------------------
(0) primary item = NumbersOfSales
 + (0) role = http://www.xbrl.org/2003/role/link
   + (0) dimension = {http://www.hitachi.com/2008/XBRL/dim/sample}DistDim
      + (0) member = {http://www.hitachi.com/2008/XBRL/dim/sample}Tokyo
      + (1) member = {http://www.hitachi.com/2008/XBRL/dim/sample}Kanagawa
      + (2) member = {http://www.hitachi.com/2008/XBRL/dim/sample}Osaka
      + (3) member = {http://www.hitachi.com/2008/XBRL/dim/sample}Kyoto
   + (1) dimension = {http://www.hitachi.com/2008/XBRL/dim/sample}ProductDim
      + (0) member = {http://www.hitachi.com/2008/XBRL/dim/sample}LC
      + (1) member = {http://www.hitachi.com/2008/XBRL/dim/sample}Plasma