uCosminexus Business Reporting Processor 開発者ガイド
XBRL2.0に準拠したインスタンス文書に,数値コンテキストを追加するサンプルコードについて説明します。
ここでは,「4.4.2 非数値コンテキスト要素の追加」で非数値コンテキストを追加したXBRL DOMに,さらに数値コンテキストを追加します。数値コンテキスト要素を追加する場合,非数値コンテキストで追加した要素に加えて,さらに単位要素,precision属性,cwa属性が必要になります。
ここで説明するサンプルコードでは,次の内容の数値コンテキストを追加します。表中の「名称」欄のインデントは,コーディング結果のインデントを示しています。
表4-8 数値コンテキストの値
| 項番 | 名称 | 要素/属性 | 値 |
|---|---|---|---|
| 1 | コンテキストID | 属性 | NC01 |
| 2 | precision | 属性 | 9 |
| 3 | cwa | 属性 | false |
| 4 | 時期 | 要素 | 2003-03-31 |
| 5 | エンティティ(組織) | 要素 | − |
| 6 | 識別子 | 要素 | SAMP |
| 7 | スキーム | 属性 | 指定しない |
| 8 | セグメント | 要素 | − |
| 9 | prefecture※1 | 要素 | Tokyo |
| 10 | 単位 | 要素 | − |
| 11 | 計量 | 要素 | iso4217:JPY※2 |
(凡例)−:値を持つことができません。
注※1 "prefecture"の名前空間URIは"http://www.hitachi.com/2003/XBRL"とします。
注※2 値の単位を「円」とすることを示します。
数値コンテキスト要素の追加で使用するクラスおよびインターフェースを次の表に示します。
表4-9 数値コンテキスト要素の追加で使用するクラスおよびインターフェース
| 項番 | 使用するクラスおよびインターフェース | 説明 |
|---|---|---|
| 1 | com.hitachi.xbrl.types.XBRLQName | XML Schemaのデータ型QNameを表します。 |
| 2 | com.hitachi.xbrl.instance.XBRLMeasure | 計量要素を表します。 |
| 3 | com.hitachi.xbrl.instance.XBRLUnit | 単位要素を表します。 |
| 4 | com.hitachi.xbrl.instance.XBRLMeasureOrOperator | 計量要素または演算子要素を表します。 |
| 5 | com.hitachi.xbrl.types.XBRLDateUnion | XBRLのデータ型dateUnionを表します。 |
| 6 | com.hitachi.xbrl.instance.XBRLPeriod | 時期要素を表します。 |
| 7 | com.hitachi.xbrl.instance.XBRLIdentifier | 識別子要素を表します。 |
| 8 | com.hitachi.xbrl.instance.XBRLSegment | セグメント要素を表します。 |
| 9 | com.hitachi.xbrl.instance.XBRLEntity | エンティティ要素を表します。 |
| 10 | com.hitachi.xbrl.instance.XBRLNumericContext | 数値コンテキストを表します。 |
| 11 | com.hitachi.xbrl.instance.XBRLInstanceDocument | インスタンス文書全体を表します。 |
数値コンテキストをXBRL DOMに追加するコードは次のとおりです。
// measure要素の作成
XBRLQName currency =
new XBRLQName("http://www.xbrl.org/2003/iso4217", "JPY");
XBRLMeasure measure = idoc.createMeasure(currency);
// unit要素の作成
XBRLUnit unit = idoc.createUnit((XBRLMeasureOrOperator) measure);
// period要素の作成
XBRLDateUnion date2 = new XBRLDateUnion("2003-03-31");
XBRLPeriod period2 =
idoc.createPeriod(XBRLPeriod.INSTANT, date2, null, null, null);
// identifier要素の作成
XBRLIdentifier identifier2 = idoc.createIdentifier("", "SAMP");
// segment要素の作成
XBRLSegment segment2 = idoc.createSegment(null);
// prefecture要素を作成
Node container2 = segment2.getContainerNode();
// prefecture要素は複製で作成
Node prefecture2 = prefecture1.cloneNode(true);
container2.appendChild(prefecture2);
// entity要素の作成
XBRLEntity entity2 = idoc.createEntity(identifier2, segment2);
// 数値コンテキストの作成
XBRLNumericContext numericContext =
idoc.createNumericContext(
entity2,
period2,
unit,
null, // scenario要素なし
9, // precision属性 : precision='9'
false); // cwa属性 : cwa='false'
// インスタンス文書に数値コンテキストを追加
idoc.addContext(numericContext);
|
コーディング結果として,生成されるインスタンス文書は次のとおりです。
<xbrli:numericContext cwa="false" id="NC01" precision="9">
<xbrli:entity>
<xbrli:identifier scheme="">SAMP</xbrli:identifier>
<xbrli:segment>
<prefecture xmlns="http://www.hitachi.com/2003/XBRL">Tokyo</prefecture>
</xbrli:segment>
</xbrli:entity>
<xbrli:period>
<xbrli:instant>2003-03-31</xbrli:instant>
</xbrli:period>
<xbrli:unit>
<xbrli:measure>iso4217:JPY</xbrli:measure>
</xbrli:unit>
</xbrli:numericContext>
|
All Rights Reserved. Copyright (C) 2006, 2008, Hitachi, Ltd.