uCosminexus Business Reporting Processor 開発者ガイド
XBRL2.1に準拠したタクソノミー文書の読み込み時に生成したXBRL DOMから,プレゼンテーションリンクを参照して,タクソノミー文書の要素を階層表示するサンプルコードについて説明します。表示名には,ラベルを使用します。
このサンプルコードでは,リンクの関係を表すインターフェースの一つである,XBRLPresentationRelationshipインターフェースを使用しています。リンクの関係を表すインターフェース(com.hitachi.xbrl.linkパッケージ)は,XBRL2.1の場合だけ使用できます。
タクソノミー本体とリンクベースの参照で使用するインターフェースを次の表に示します。
表4-22 タクソノミー本体とリンクベースの参照で使用するインターフェース
| 項番 | 使用するインターフェース | 説明 |
|---|---|---|
| 1 | com.hitachi.xbrl.taxonomy.XBRLTaxonomyDocument | タクソノミー文書全体を表します。 |
| 2 | com.hitachi.xbrl.link.XBRLPresentationRelationship | プレゼンテーションリンクに記述されている関係のうち,一つの関係を示します。 |
| 3 | com.hitachi.xbrl.taxonomy.XBRLTaxonomyElement | タクソノミー文書に記述される要素の要素宣言を表します。 |
| 4 | com.hitachi.xbrl.taxonomy.XBRLLabel | 要素のラベルを表します。 |
| 5 | com.hitachi.xbrl.util.XBRLConstants | ユーザーアプリケーションで利用できる定数を定義します。 |
タクソノミー本体とリンクベースを参照するコードは次のとおりです。
// タクソノミー文書のパース
String filename = "input/sample_taxonomy1_xbrl_2_1.xsd";
File[] taxonomy = { new File(filename) };
XBRLTaxonomyDocument tdoc = tb.parse(taxonomy);
System.out.println("タクソノミー文書のパースに成功しました。");
/*
* ここからタクソノミー文書の内容を参照
*/
// 標準なプレゼンテーションリンクをツリー表示する
XBRLTaxonomyElement[] elements =
tdoc.findPresentationRootElements(
XBRLConstants.XBRL21_ROLE_LINK,
XBRLConstants.XBRL21_ARCROLE_PARENT_CHILD);
if (elements != null) {
for (int i = 0; i < elements.length; i++) {
List<XBRLPresentationRelationship> preList =
elements[i].getPresentationRelationships(
XBRLConstants.XBRL21_ROLE_LINK,
XBRLConstants.XBRL21_ARCROLE_PARENT_CHILD);
// 標準なプレゼンテーションリンクのルート要素か?
if (preList.size() > 0) {
// 一つのツリーを表示する
ProcessTaxonomy2.printPresentationTree(elements[i], "");
}
}
} else {
System.out.println("標準なプレゼンテーションリンクはありません。");
}
/**
* プレゼンテーションリンクとラベルを使ったツリー表示
*/
public static void printPresentationTree(
XBRLTaxonomyElement element, String indent) {
// 要素の表示
XBRLLabel label = element.getLabel("ja", null);
if (label != null) {
// ラベルで表示
System.out.println(indent + "+ " + label.getValue());
} else {
// 要素名で表示
System.out.println(indent + "+ " + element.getName());
}
// 子孫要素の表示
List<XBRLPresentationRelationship> preList =
element.getPresentationRelationships(
XBRLConstants.XBRL21_ROLE_LINK,
XBRLConstants.XBRL21_ARCROLE_PARENT_CHILD);
for (XBRLPresentationRelationship present : preList) {
XBRLTaxonomyElement child = (XBRLTaxonomyElement) present.getTo();
printPresentationTree(child, indent + " ");
}
}
|
サンプルのタクソノミー文書を参照したときの実行結果を次に示します。
タクソノミー文書のパースに成功しました。
+ 資産合計
+ 流動資産
+ 投資及び貸付金
|
All Rights Reserved. Copyright (C) 2006, 2008, Hitachi, Ltd.