4.6.1 タクソノミー文書の読み込み

XBRL2.1に準拠したタクソノミー文書を読み込み,XBRL DOMを生成するサンプルコードについて説明します。XBRL DOMの生成時にタクソノミー文書の妥当性を検証するには,setValidating()メソッドを実行します。また,XBRL2.1の場合,タクソノミー文書の読み込み時にXBRLのバージョンを指定する必要があります。

ここでは,検証時にエラーや警告が発生した場合のレポートを受け取り,出力するエラーハンドラと,検証時にローカルに保存したスキーマ定義を使用するエンティティリゾルバも実装します。エラーハンドラおよびエンティティリゾルバの詳細については,「4.13 エラーハンドラ」および「4.14 エンティティリゾルバ」を参照してください。

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

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

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

表4-20 タクソノミー文書の読み込みで使用するクラスおよびインターフェース

項番使用するクラスおよびインターフェース説明
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.util.XBRLConstantsユーザーアプリケーションで利用できる定数を定義します。

(2) サンプルコード

タクソノミー文書を読み込むコードは次のとおりです。

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

// 初期化
XBRLDocumentManager.init();
/*
* プロパティファイルを利用して初期化する場合は,ファイルの絶対パスを指定します
* 例:
* XBRLDocumentManager.init("C://Program Files/HITACHI/cbrp/properties/cbrp.properties");
*/
// XBRLDocumentManagerの取得
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("タクソノミー文書のパースに成功しました。");

さらに,cbrp.parse.validate.full-checkingプロパティを使えば,XBRL 2.1 Conformance Suite 1.0に示されたすべての検証を実行できます。ただし,このプロパティはcbrp.parse.validateプロパティがtrueの場合だけ有効です。

この検証では,関係ネットワーク上に禁止されているサイクル(循環など)がないかなど,多くの処理時間やメモリリソースを要する検証を実行します。信頼できるタクソノミー文書に対してはこの検証は必要ありませんが,新規作成したタクソノミー文書がXBRL2.1に完全に適合しているか検証したい場合などに有効です。

この検証を実行するには,次の内容をコードに追加してください。

//タクソノミー文書パース時に完全な妥当性検証を実施する
tbf.setValidating(true);
tbf.setProperty("cbrp.parse.validate.full-checking", Boolean.TRUE);