4.11.2 プライマリー・アイテムの追加

XBRL Dimensions1.0に準拠したインスタンス文書のXBRL DOMにプライマリー・アイテムを追加するサンプルコードについて説明します。

ここでは,プライマリー・アイテムディメンジョンの関係を検証してからプライマリー・アイテムをインスタンス文書へ追加するサンプルコードについて説明します。インスタンス文書全体の検証については,「4.12 既存のインスタンス文書の参照と検証(XBRL Dimensions1.0の場合)」を参照してください。

なお,「4.11.2(3) コーディング結果」で示すコーディング結果のコンテキスト要素には「4.11.1 多次元データを含んだコンテキスト要素の追加」で追加したコンテキストが記述されています。

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

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

プライマリー・アイテムの追加で使用するクラスおよびインターフェースを次の表に示します。

表4-48 プライマリー・アイテムの追加で使用するクラスおよびインターフェース

項番使用するクラスおよびインターフェース説明
1com.hitachi.xbrl.instance.XBRLContext2XBRL2.1のコンテキスト要素を表します。
2com.hitachi.xbrl.instance.XBRLContextコンテキスト要素を表します。
3com.hitachi.xbrl.instance.XBRLInstanceDocumentインスタンス文書全体を表します。
4com.hitachi.xbrl.types.XBRLDecimals数値アイテムのdecimals属性値を表します。
5com.hitachi.xbrl.instance.XBRLInstanceItemアイテムを表します。
6com.hitachi.xbrl.instance.XBRLInstanceElementインスタンス文書の要素を表します。
7com.hitachi.xbrl.instance.XBRLDOMExceptionXBRL DOMの例外を表します。

(2) サンプルコード

プライマリー・アイテムをXBRL DOMに追加するコードは次のとおりです。

       // コンテキストの作成
       XBRLContext2 context = idoc.createContext(entity, period, null);
       // インスタンス文書にコンテキストを追加
       idoc.addContext((XBRLContext) context);

       /*
        * ここから数値アイテムの作成
        */

       // decimals属性値の作成
       XBRLDecimals decimals = new XBRLDecimals("0");

       // 数値アイテム - NumbersOfSales要素 - の作成
       XBRLInstanceItem salesItem =
           idoc.createNumericItem(
               "http://www.hitachi.com/2008/XBRL/dim/sample",
               "NumbersOfSales",
               context,
               unit,
               null,
               decimals);

       // 数値アイテムに値を設定
       salesItem.setValue((Object) salesValue);

       try {
           // 妥当性検証
           if (salesItem.validateDimensions()) {
               // インスタンス文書に数値アイテムを追加
               idoc.appendChildElement((XBRLInstanceElement) salesItem);
           } else {
               System.out.println("アイテムとコンテキストの組み合わせは正しくありません。");
           }

       } catch (XBRLDOMException de) {
           de.printStackTrace();
       }

   }
}

(3) コーディング結果

コーディング結果として,生成されるインスタンス文書は次のとおりです。

<xbrli:unit id="U01">
 <xbrli:measure>iso4217:JPY</xbrli:measure>
</xbrli:unit>

<xbrli:context id="C01">
 <xbrli:entity>
   <xbrli:identifier
       schema="http://www.hitachi.com/2008/XBRL">SAMP</xbrli:identifier>
   <xbrli:segment>
     <xbrldi:explicitMember dimension="p0:DistDim">p0:Tokyo</xbrldi:explicitMember>
     <xbrldi:explicitMember dimension="p0:ProductDim">p0:LC</xbrldi:explicitMember>
   </xbrli:segment>
 </xbrli:entity>
 <xbrli:period>
   <xbrli:instant>2008-09-30</xbrli:instant>
 </xbrli:period>
</xbrli:context>

<xbrli:context id="C02">
 <xbrli:entity>
   <xbrli:identifier
       schema="http://www.hitachi.com/2008/XBRL">SAMP</xbrli:identifier>
   <xbrli:segment>
     <xbrldi:explicitMember dimension="p0:DistDim">p0:Tokyo</xbrldi:explicitMember>
     <xbrldi:explicitMember dimension="p0:ProductDim">p0:Plasma</xbrldi:explicitMember>
   </xbrli:segment>
 </xbrli:entity>
 <xbrli:period>
   <xbrli:instant>2008-09-30</xbrli:instant>
 </xbrli:period>
</xbrli:context>

<p0:NumbersOfSales contextRef="C01" unitRef="U01" decimals="0">10000000</p0:NumbersOfSales>
<p0:NumbersOfSales contextRef="C02" unitRef="U01" decimals="0">8000000</p0:NumbersOfSales>