2.3.2 リンク検証

タクソノミー文書の検証では,リンクベースに記述されたリンクの整合性のチェックとして,XLinkプロセッサで次の内容を確認します。

URIの指定方法に関する注意事項と,検証内容について次に説明します。

<この項の構成>
(1) URIの指定方法
(2) 単純リンクやロケータ型要素の検証
(3) ラベル定義の有無の検証
(4) 同じ弧を持つリンクの有無の検証
(5) xlink:role,xlink:arcrole属性値のURI表記の検証
(6) 関係ネットワーク上のサイクルの検証【完全な妥当性検証の場合だけ有効】
(7) essence-aliasアークの検証【完全な妥当性検証の場合だけ有効】
(8) summation-itemアークの検証【完全な妥当性検証の場合だけ有効】

(1) URIの指定方法

URIの指定方法には,次の2種類があります。

相対URIは絶対URIに変換され,リモートリソースを特定します(相対URIの解決)。相対URIの解決はxlink:href属性だけでなく,<xsd:import>要素などの,XBRL文書でリモートリソースへの参照定義に使用される相対URIに適用されます。ここでは,相対URIの解決,エンティティリゾルバを使用したURIの解決,URI表記に関する注意事項,およびXPointerを使用したURIの指定方法について説明します。

(a) 相対URIの解決

タクソノミー本体やリンクベースの要素など,リモートリソースへの参照定義に相対URIを使用した場合,相対URIは絶対URIに変換されます。XBRL2.1の場合は,基底となるURIを記述するxml:base属性を指定できます。

uCosminexus Business Reporting Processorは,XML Baseの仕様に従って相対URIを解決します。

次の場合,解決後のURIはhttp://xxx/yyy/test.xsdとなります。

<schemaRef xml:base="http://xxx/yyy/" xlink:href="test.xsd" ...(中略)>

xlink:href属性値とxml:base属性値を組み合わせても絶対URIにならない場合,XML文書読み込み元のURIが基底URIとして使用されます。XML文書読み込み元のURIが定まっていない場合,アプリケーションの現在の作業フォルダが基底URIとして使用され,絶対URIに変換されます。

(b) エンティティリゾルバを使用したURIの解決

エンティティリゾルバは,アプリケーションで外部エンティティを解決するための機能です。uCosminexus Business Reporting Processorでは,org.xml.sax.EntityResolverインターフェースを利用できます。

uCosminexus Business Reporting Processorは,エンティティリゾルバが登録されていた場合,タクソノミー文書などの外部エンティティを解決する前に,アプリケーションにコールバックします。例えば,エンティティリゾルバを使用して,絶対URIをローカルファイル名に変換し,リモートリソースにアクセスしないようにできます。

エンティティリゾルバのコーディングの詳細については,「4.14 エンティティリゾルバ」を参照してください。

(c) URI表記に関する注意

XBRL文書のURIは,uCosminexus Business Reporting Processorによって正規化され,XBRL文書を識別するためのキーとして管理されます。そのため,URI表記について,次の点に注意してください。

(d) XPointerを使用したURIの指定方法

xlink:href属性に指定するURIのフラグメントに,XPointerを使用できます。ここでは,使用できる形式と指定例について説明します。

XBRL2.0の場合,URIのフラグメントにはXPointerのショートハンドポインタだけを指定できます。

XBRL2.1の場合,次に示す形式を使用できます。

指定例を次に示します。

(2) 単純リンクやロケータ型要素の検証

単純リンクやロケータ型要素が,参照先となるリモートリソースにトラバースできるかを検証します。これは,xlink:href属性に記述されたリモートリソースへのURIから,参照先のタクソノミー本体の要素や,リンクベースの要素が特定できることを意味します。

(3) ラベル定義の有無の検証

アーク型要素が参照しているラベル(xlink:label属性)が,その拡張リンク型要素内で定義されているかを検証します。

(4) 同じ弧を持つリンクの有無の検証

同一拡張リンク内に同じ弧を持つリンク(同じxlink:from属性値および同じxlink:to属性値を持つアーク型要素)がないかを検証します。

(5) xlink:role,xlink:arcrole属性値のURI表記の検証

xlink:role,xlink:arcrole属性値が絶対URIで指定されているかを検証します。

(6) 関係ネットワーク上のサイクルの検証【完全な妥当性検証の場合だけ有効】

関係ネットワークとは,拡張リンク型要素のxlink:role属性値で分類され,さらにアーク型要素のxlink:arcroleで細分化される関係の集合です。完全な妥当性検証の場合,関係ネットワーク上で禁止されているサイクル(循環など)が存在しないか検証できます。

ラベルリンク,リファレンスリンクおよび脚注リンクは,検証の対象になりません。検証の対象となるリンクと,各リンクに許可されているサイクルのタイプを次に示します。

リンクの種類要素名xlink:arcrole属性値サイクルのタイプ
プレゼンテーションリンクlink:presentationArchttp://www.xbrl.org/2003/arcrole/parent-childundirected
計算リンクlink:calculationArchttp://www.xbrl.org/2003/arcrole/summation-itemany
定義リンクlink:definitionArchttp://www.xbrl.org/2003/arcrole/general-specialundirected
http://www.xbrl.org/2003/arcrole/essence-aliasundirected
http://www.xbrl.org/2003/arcrole/similar-tuplesany
http://www.xbrl.org/2003/arcrole/requires-elementany
カスタムアークロール
(<link:arcroleType>要素のarcroleURI属性値)
cyclesAllowed属性の値
(凡例)
-:要素名の指定は不要です。
サイクルのタイプ:
指定できるサイクルのタイプ(cyclesAllowed属性の指定値を含む)と,それぞれの意味は次のとおりです。
  • any:関係ネットワーク上でのサイクルの制限はない。
  • undirected:関係ネットワーク上での循環はエラーとするが,ノード間に複数の経路が存在してもエラーとはしない。
  • none:関係ネットワークが循環することも,あるノード間に経路が複数存在することも許可しない。
関係ネットワーク上の経路とサイクルのタイプの組み合わせによって,検証結果がエラーになる場合とならない場合を次の例で示します。
[図データ]

(7) essence-aliasアークの検証【完全な妥当性検証の場合だけ有効】

essence-aliasアークが,次の制約に従って記述されているかを検証します。

(8) summation-itemアークの検証【完全な妥当性検証の場合だけ有効】

summation-itemアークが,次の制約に従って記述されているかを検証します。