それはすべて、データの解析に関する非常に重要な質問に要約されXML
ます!
この理論的な質問( XMLに関する技術的能力が必要です) を提出する理由XML parsers
は、ソフトウェア会社がとXBRL parsers
! それは間違いなく危険信号です。
- XBRL インスタンス ドキュメントを解析してデータを抽出
BaseX
するクエリを実行するように設計されたフリーウェアを使用できますか。XBRL は XML であるため、そうでない場合はなぜですか?XML
XBRL の問題は、XML から得られる主なものが、多くのコードが付加された事実のセットであることです。これらのコードは、すべての定義を含む分類法を解析しないと意味がありません。
残念ながら、この分類法には、数式 (はい、本当に)、プレゼンテーション (何がどこに行くのか)、および物事を際限なく複雑にするその他の「役立つ」追加なども含まれています。それとは別に、標準ではすべてにリンクベースを使用しています。非常に標準的な分類には、2000 を超える個別のファイルを簡単に含めることができます。
はい、これには XML パーサーを使用できますが、意味のあるものは返されません。そのためには、インスタンスと分類法を解析する必要があります。そして、それは残念ながら低価格では利用できません。
www.openfiling.info (EU XBRL ファイリング プロジェクトのオープン ソース部分) の Arelle のようなツールを見ることができます。通常の XML パーサーが役に立たない理由がわかります。リンク: www.openfiling.info/arelle/
あなたはそれを行うことができます。現在、私の会社では eXist-db を使用していますが、同じルールが BaseX、Sedna、または Marklogic に適用されます。
XPath 2.0 を習得し、XQuery について少し知っている必要があり、名前空間固有のクエリを実行しないようにする必要があります。
XBRL インスタンス ドキュメントからデータをクエリする必要があると思います。これは、次の 2 つの手順で実行できます。 1. 照会するコンテキスト ID を取得します 2. このコンテキストでファクト要素を検索します
このクエリは、1 回の呼び出しで実行できます。
xquery version "3.0";
declare default element namespace"http://www.xbrl.org/2003/instance";
declare function local:for-context($node as node(),$ent as xs:string,$start as xs:string,$end as xs:string) as xs:boolean {
let $cid := $node/@contextRef
let $ctx := $node/../context[ @id = $cid ]
return if ( $ctx
and not(exists($ctx/entity/segment))
and $ctx/entity/identifier=$ent
and $ctx/period/startDate=$start
and $ctx/period/endDate=$end ) then true() else false()
};
let $id := request:get-parameter( 'id', '0001173514' )
let $startDate := request:get-parameter( 'startdate', '2013-04-01' )
let $endDate := request:get-parameter( 'enddate', '2013-06-30' )
let $fact := request:get-parameter( 'fact', 'NonoperatingIncomeExpense' )
let $q := concat( "/*/*:", $fact, "[ local:for-context(., $id, $startDate, $endDate) ]" )
return util:eval($q)
会社 ID、開始日、終了日、およびファクト名を受け取り、インスタンス ドキュメントから値を返します。
標準の XML パーサーを使用して、XBRL インスタンス ドキュメントを解析できます。ただし(引用したウィキペディアのページを介して):
典型的な使用法では、XBRL は、レポートされるビジネス ファクトを主に含む XBRL インスタンスと、ファクトの意味や方法など、これらのファクトに関するメタデータを定義するタクソノミのコレクション (Discoverable Taxonomy Set (DTS) と呼ばれる) で構成されます。それらは互いに関連しています。XBRL は、XML スキーマ、XLink、および XPointer 標準を使用します。
したがって、XBRL ドキュメントのコンテンツを実際に処理するには、おそらく XLink と XPointer を処理できる必要があり、DTS からメタデータを取得、解釈、および適用する方法を知る必要があります。
データベースからデータを抽出する限り: XBRL がクエリ言語として機能していない限り、この場合、既存のドキュメントを解析するのではなく、新しいインスタンス ドキュメントを作成するように思えます。それは解析の反対です。ほとんどのパーサーには、構文の詳細を処理する XML シリアライザーが付属していますが、適切なセマンティクスを持つ適切なドキュメントを作成するのはユーザーの責任です。
私は製品をまったく見ていませんが、これらの点が XBRL パッケージが基本的な XML ツールと異なるところだと思います。この特定の言語のセマンティクスを操作するための追加のロジックが含まれています。