4.7.1 インスタンス文書の新規作成

XBRL2.1に準拠したインスタンス文書を新規に作成するサンプルコードについて説明します。

インスタンス文書の新規作成では,まずスキーマとなるタクソノミー文書のXBRL DOMを生成します。生成したタクソノミー文書のXBRL DOMを基に,インスタンス文書のXBRL DOMを生成します。また,名前空間宣言とxsi:schemaLocation属性の設定,およびXBRLのバージョンの指定をします。

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

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

インスタンス文書の新規作成で使用するクラスおよびインターフェースを次の表に示します。

表4-23 インスタンス文書の新規作成で使用するクラスおよびインターフェース

項番使用するクラスおよびインターフェース説明
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.instance.XBRLInstanceDocumentBuilderFactoryXBRLInstanceDocumentBuilderオブジェクトを生成するためのAPIを定義します。
6com.hitachi.xbrl.instance.XBRLInstanceDocumentBuilderインスタンス文書からXBRLInstanceDocumentオブジェクトを取得するためのAPIを定義します。
7com.hitachi.xbrl.instance.XBRLInstanceDocumentインスタンス文書全体を表します。
8com.hitachi.xbrl.util.XBRLNamespaceDeclaration名前空間接頭辞とそれに対応する名前空間URIの組を管理します。
9com.hitachi.xbrl.util.XBRLSchemaLocationxsi:schemaLocation属性に指定する名前空間URIとスキーマ文書の位置を示すURIの組を管理します。
10com.hitachi.xbrl.instance.XBRLSchemaRef<link:schemaRef>要素を表します。

(2) サンプルコード

インスタンス文書を新規に作成するコードは次のとおりです。

/*
* 新たなインスタンス文書作成の前準備
*/

// XBRLバージョンの設定
Properties prop = new Properties();
prop.setProperty("cbrp.parse.XBRLVersion", "2.1");

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

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

// 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("タクソノミー文書のパースに成功しました。");

/*
* ここから新たなインスタンス文書の作成
*/

// XBRLInstanceDocumentBuilderFactoryの作成
XBRLInstanceDocumentBuilderFactory ibf =
   dm.newInstanceDocumentBuilderFactory();

// XBRLInstanceDocumentBuilderの作成
XBRLInstanceDocumentBuilder ib = ibf.newInstanceDocumentBuilder();

// 新たなインスタンス文書の作成
XBRLInstanceDocument idoc = ib.newInstanceDocument(tdoc);

// 名前空間宣言 - hi - の作成
// (xmlns:hi="http://www.hitachi.com/2004/XBRL")
XBRLNamespaceDeclaration nd1 =
   new XBRLNamespaceDeclaration(
       "hi",
       "http://www.hitachi.com/2004/XBRL");

// xsi:schemaLocation属性値の作成
XBRLSchemaLocation sl =
   new XBRLSchemaLocation(
       "http://www.hitachi.com/2004/XBRL",
       "input/sample_taxonomy1_xbrl_2_1.xsd");

// schemaRef要素の作成
XBRLSchemaRef sr =
   idoc.createSchemaRef("input/sample_taxonomy1_xbrl_2_1.xsd", null);

// インスタンス文書に名前空間宣言とxsi:schemaLocation属性値を追加
idoc.addNamespaceDeclaration(nd1);
idoc.addSchemaLocation(sl);
// インスタンス文書にschemaRef要素を追加
idoc.addSchemaRef(sr);