Search Posts

Visits: 1189

Typed dimensionを用いて定義リンクベース(requires-element)の関係を組み込む

試行中のファイルは、GitHubから

accountingEntries – entryHeader – entryDetail

XBRL GLでは、コンテキストを使用しない形でComplexContentの入れ子構造でインスタンス文書を定義している。
最大繰り返し数をunboundとすることで、accountingEntriesの下に複数のentryHeaderを、entryHeaderの下に複数のentryDetailをそれぞれ含む形で表現している。
これを分解したときに、accountingEntriesとentryHeaderとの関係、entryHeaderとentryDetailとの関係をどうやって表現するかが問題となる。

タクソノミ文書でのxbrldt:dimensionItem定義
<!-- Domain -->
<element name="EntryNumber" id="gl-cor_EntryNumber">
	<simpleType>
		<restriction base="string"/>
	</simpleType>
</element>
<element name="dEntryNumber" id="gl-cor_dEntryNumber" type="xbrli:stringItemType" substitutionGroup="xbrldt:dimensionItem" abstract="true" xbrli:periodType="instant" xbrldt:typedDomainRef="#gl-cor_EntryNumber"/>
<element name="LineNumber" id="gl-cor_LineNumber">
	<simpleType>
		<restriction base="string"/>
	</simpleType>
</element>
<element name="dLineNumber" id="gl-cor_dLineNumber" type="xbrli:stringItemType" substitutionGroup="xbrldt:dimensionItem" abstract="true" xbrli:periodType="instant" xbrldt:typedDomainRef="#gl-cor_LineNumber"/>
インスタンス文書でのxbrli:context定義

<xbrli:segment>に<xbrldi:typedMember dimension=”gl-cor:dEntryNumber”>及び<xbrldi:typedMember dimension=”gl-cor:dLineNumber”>で<xbrli:context>を定義する。

<!-- context -->
<xbrli:context id="now">
	<xbrli:entity>
		<xbrli:identifier scheme="http://www.xbrl.org/xbrlgl/sample">SAMPLE</xbrli:identifier>
	</xbrli:entity>
	<xbrli:period>
		<xbrli:instant>2020-01-01</xbrli:instant>
	</xbrli:period>
</xbrli:context>
<xbrli:context id="H1">
	<xbrli:entity>
		<xbrli:identifier scheme="http://www.xbrl.org/xbrlgl/sample">SAMPLE</xbrli:identifier>
		<xbrli:segment>
			<xbrldi:typedMember dimension="gl-cor:dEntryNumber">
				<gl-cor:EntryNumber>H1</gl-cor:EntryNumber>
			</xbrldi:typedMember>
		</xbrli:segment>
	</xbrli:entity>
	<xbrli:period>
		<xbrli:instant>2020-01-01</xbrli:instant>
	</xbrli:period>
</xbrli:context>
<xbrli:context id="H1L1">
	<xbrli:entity>
		<xbrli:identifier scheme="http://www.xbrl.org/xbrlgl/sample">SAMPLE</xbrli:identifier>
		<xbrli:segment>
			<xbrldi:typedMember dimension="gl-cor:dEntryNumber">
				<gl-cor:EntryNumber>H1</gl-cor:EntryNumber>
			</xbrldi:typedMember>
			<xbrldi:typedMember dimension="gl-cor:dLineNumber">
				<gl-cor:LineNumber>L1</gl-cor:LineNumber>
			</xbrldi:typedMember>
		</xbrli:segment>
	</xbrli:entity>
	<xbrli:period>
		<xbrli:instant>2020-01-01</xbrli:instant>
	</xbrli:period>
</xbrli:context>
	<xbrli:context id="H1L2">
		<xbrli:entity>
			<xbrli:identifier scheme="http://www.xbrl.org/xbrlgl/sample">SAMPLE</xbrli:identifier>
			<xbrli:segment>
				<xbrldi:typedMember dimension="gl-cor:dEntryNumber">
					<gl-cor:EntryNumber>H1</gl-cor:EntryNumber>
				</xbrldi:typedMember>
				<xbrldi:typedMember dimension="gl-cor:dLineNumber">
					<gl-cor:LineNumber>L2</gl-cor:LineNumber>
				</xbrldi:typedMember>
			</xbrli:segment>
		</xbrli:entity>
		<xbrli:period>
			<xbrli:instant>2020-01-01</xbrli:instant>
		</xbrli:period>
	</xbrli:context>
インスタンス文書

entryHeaderは、表示リンク用の<gl-cor:entryHeader contextRef=”H1″>H1</gl-cor:entryHeader>及び<gl-cor:entryHeader.Detail>を定義する。
entryHeaderに対応するentryDetailは、<gl-cor:specified.entryDetail contextRef=”H1L1″/>で定義し、タプル構造を表現する<gl-cor:entryDetail.Detail>では、それに含む項目にcontextRef=”H1L1″を定義することで対応関係を表現する。

<!-- entryHeader -->
	<gl-cor:entryHeader.Detail>
		<gl-cor:enteredBy contextRef="H1">Otto Wellwood</gl-cor:enteredBy>
		<gl-cor:enteredDate contextRef="H1">2005-07-01</gl-cor:enteredDate>
		<gl-cor:sourceJournalID contextRef="H1">gj</gl-cor:sourceJournalID>
		<gl-bus:sourceJournalDescription contextRef="H1">JE</gl-bus:sourceJournalDescription>
		<gl-cor:entryType contextRef="H1">standard</gl-cor:entryType>
		<gl-cor:entryNumber contextRef="H1">1</gl-cor:entryNumber>
		<gl-cor:entryComment contextRef="H1">Current period depreciation expense</gl-cor:entryComment>
		<gl-cor:qualifierEntry contextRef="H2">standard</gl-cor:qualifierEntry>
		<gl-bus:totalDebit decimals="2" contextRef="H1" unitRef="usd">7700.00</gl-bus:totalDebit>
		<gl-bus:totalCredit decimals="2" contextRef="H1" unitRef="usd">7700.00</gl-bus:totalCredit>
		<gl-cor:bookTaxDifference contextRef="H1">temporary</gl-cor:bookTaxDifference>
		<gl-cor:specified.entryDetail contextRef="H1L1"/>
		<gl-cor:specified.entryDetail contextRef="H1L2"/>
		<gl-cor:specified.entryDetail contextRef="H1L3"/>
		<gl-cor:specified.entryDetail contextRef="H1L4"/>
	</gl-cor:entryHeader.Detail>
<!-- entryDetail -->
	<gl-cor:entryDetail.Detail>
		<gl-cor:lineNumber contextRef="H1L1">L1</gl-cor:lineNumber>
		<gl-cor:specified.account contextRef="ACCOUNT6200"/>
		<gl-cor:amount decimals="2" contextRef="H1L1" unitRef="usd">7000.00</gl-cor:amount>
		<gl-cor:debitCreditCode contextRef="H1L1">D</gl-cor:debitCreditCode>
		<gl-cor:postingDate contextRef="H1L1">2005-06-30</gl-cor:postingDate>
		<gl-cor:postingStatus contextRef="H1L1">posted</gl-cor:postingStatus>
		<gl-cor:detailComment contextRef="H1L1">Current period depreciation expense - books</gl-cor:detailComment>
	</gl-cor:entryDetail.Detail>

フォーミュラリンクベース実行結果

上記の定義で表現したインスタンス文書で貸し方合計と借り方合計の金額が一致するかを検証するフォーミュラリンクベースのテストを実行すると次の結果が得られる。
詳細は別ページから。