4.9.1 タクソノミー文書の拡張

既存のタクソノミー文書を読み込んで編集できる状態にするためのサンプルコードについて説明します。

<この項の構成>
(1) 使用するクラスおよびインターフェース
(2) サンプルコード

(1) 使用するクラスおよびインターフェース

タクソノミー文書の拡張で使用するクラスおよびインターフェースを次の表に示します。

表4-39 タクソノミー文書の拡張で使用するクラスおよびインターフェース

項番使用するクラスおよびインターフェース説明
1com.hitachi.xbrl.XBRLDocumentManagerXBRL文書の入出力やタクソノミー文書のキャッシュを管理します。
2com.hitachi.xbrl.taxonomy.XBRLTaxonomyDocumentBuilderFactoryXBRLTaxonomyDocumentBuilderオブジェクトを生成するためのAPIを定義します。
3com.hitachi.xbrl.taxonomy.XBRLTaxonomyDocumentBuilderタクソノミー文書からXBRLTaxonomyDocumentオブジェクトを取得するためのAPIを定義します。
4com.hitachi.xbrl.taxonomy.XBRLTaxonomyDocumentタクソノミー文書全体を表します。
5com.hitachi.xbrl.simple.taxonomy.SimpleTaxonomyBuilderFactorySimpleTaxonomyBuilderオブジェクトを生成するためのAPIを定義します。
6com.hitachi.xbrl.simple.taxonomy.SimpleTaxonomyBuilderSimpleTaxonomyオブジェクトを生成するためのAPIを定義します。
7com.hitachi.xbrl.simple.taxonomy.SimpleTaxonomy編集できる単純なタクソノミー文書全体を表します。
8com.hitachi.xbrl.util.XBRLConstantsユーザーアプリケーションで利用できる定数を定義します。

(2) サンプルコード

タクソノミー文書を拡張するコードには,次の処理を定義する必要があります。

  1. 拡張元となる既存のタクソノミー文書を読み込み,XBRL DOMを生成する
  2. 生成されたXBRL DOMを基に,編集可能なタクソノミー文書のXBRL DOMを新たに生成する

タクソノミー文書を拡張するコードは次のとおりです。

/*
* タクソノミー文書を読み込む
*/

// 初期化
XBRLDocumentManager.init();
XBRLDocumentManager dm = XBRLDocumentManager.getInstance();

// XBRLTaxonomyDocumentBuilderFactoryの作成
XBRLTaxonomyDocumentBuilderFactory tbf =
   dm.newTaxonomyDocumentBuilderFactory();

// XBRLバージョンの設定
tbf.setXBRLVersion(XBRLConstants.XBRL_2_1);

// タクソノミー文書のパース時に妥当性検証を行う設定
// tbf.setValidating(true);

//XBRLTaxonomyDocumentBuilderの作成
XBRLTaxonomyDocumentBuilder tb = tbf.newTaxonomyDocumentBuilder();

// エラーハンドラの設定
SampleErrorHandler eh = new SampleErrorHandler();
tb.setErrorHandler(eh);

// エンティティリゾルバの設定
SampleEntityResolver er = new SampleEntityResolver();
tb.setEntityResolver(er);

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

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

/*
* ここからタクソノミー文書の拡張
*/

// SimpleTaxonomyBuilderFactoryの作成
SimpleTaxonomyBuilderFactory sbf =
   dm.newSimpleTaxonomyBuilderFactory();

// SimpleTaxonomyBuilderの作成
SimpleTaxonomyBuilder sb = sbf.newSimpleTaxonomyBuilder();

// タクソノミー文書(sample_taxonomy1_xbrl_2_1.xsd)を拡張元として
// 単純タクソノミー文書を表すSimpleTaxonomyを作成
SimpleTaxonomy sdoc =
   sb.newSimpleTaxonomy(
       "http://www.hitachi.com/2004/XBRL/extension",
       "hi2",
       "simple_extension_taxonomy.xsd",
       tdoc);