XBRL2.0に準拠したインスタンス文書に,非数値コンテキストを追加するサンプルコードについて説明します。
ここでは,「4.4.1 インスタンス文書の新規作成」で生成したインスタンス文書のXBRL DOMに,非数値コンテキストを追加します。非数値コンテキスト要素を追加する場合,非数値コンテキスト要素の子要素(entity,periodなど)を作成する必要があります。
ここで説明するサンプルコードでは,次の内容の非数値コンテキストを追加します。表中の「名称」欄のインデントは,コーディング結果のインデントを示しています。
表4-6 非数値コンテキストの値
項番 | 名称 | 要素/属性 | 値 |
---|---|---|---|
1 | コンテキストID | 属性 | NNC01 |
2 | 時期 | 要素 | 2003-03-31 |
3 | エンティティ(組織) | 要素 | - |
4 | 識別子 | 要素 | SAMP |
5 | スキーム | 属性 | 指定しない |
6 | セグメント | 要素 | - |
7 | prefecture※ | 要素 | Tokyo |
(凡例)-:値を持つことができません。
注※ "prefecture"の名前空間URIは"http://www.hitachi.com/2003/XBRL"とします。
このサンプルコードでは,セグメント要素の子要素として<prefecture>要素を追加し,値をTokyoにしています。セグメント要素作成時に,org.w3c.dom.Elementオブジェクトも同時に作成されます。org.w3c.dom.Elementオブジェクトはorg.w3c.dom.Nodeオブジェクトから派生されているため,getContainerNode()メソッドを使用すると,org.w3c.dom.Elementオブジェクトを取得できます。
子要素の追加方法を次に示します。この方法を使用して,シナリオ要素などにも任意の子要素を追加できます。ここでは,セグメント要素に<prefecture>要素を追加する例を使用して説明します。
ここで使用するcreateElement()メソッド,およびappendChild()メソッドは,org.w3c.domのAPIです。
非数値コンテキスト要素の追加で使用するクラスおよびインターフェースを次の表に示します。
表4-7 非数値コンテキスト要素の追加で使用するクラスおよびインターフェース
項番 | 使用するクラスおよびインターフェース | 説明 |
---|---|---|
1 | com.hitachi.xbrl.types.XBRLDateUnion | XBRLのデータ型dateUnionを表します。 |
2 | com.hitachi.xbrl.instance.XBRLPeriod | 時期要素を表します。 |
3 | com.hitachi.xbrl.instance.XBRLSegment | セグメント要素を表します。 |
4 | com.hitachi.xbrl.instance.XBRLIdentifier | 識別子要素を表します。 |
5 | com.hitachi.xbrl.instance.XBRLEntity | エンティティ要素を表します。 |
6 | com.hitachi.xbrl.instance.XBRLNonNumericContext | 非数値コンテキストを表します。 |
7 | com.hitachi.xbrl.instance.XBRLInstanceDocument | インスタンス文書全体を表します。 |
非数値コンテキストをXBRL DOMに追加するコードは次のとおりです。
// period要素の作成 |
コーディング結果として,生成されるインスタンス文書は次のとおりです。
<xbrli:nonNumericContext id="NNC01"> |