2014-06-11 2 views
0

Все это сводится к очень критическому вопросу о разборе данных XML!XML XBRL _ Можно ли использовать бесплатный XML-парсер (BaseX) для анализа данных XBRL, поскольку XBRL основан на XML?

  • Можно ли разобрать XBRL (который является XML на основе) для извлечения данных из database?

Причина я вношу этот теоретический вопрос (что требует технического потенциала на XML) является то, что программное обеспечение дома ставят отдельный price tag (пожалуйста, проверьте, что предыдущую ссылку) между XML parsers и XBRL parsers! Это определенно поднимает красный флаг.

  • Можно ли использовать бесплатное программное обеспечение, как BaseX, который предназначен для запроса XML для разбора XBRL Instance document и извлечения данных. Если нет, почему, поскольку XBRL является XML?

ответ

2

Все XBRL - это XML, поэтому на базовом уровне да, вы можете.

Однако XBRL налагает дополнительную семантику и валидации поверх XML, специфичного для спецификации XBRL. Следовательно, действительный XML не обязательно является допустимым XBRL. Поставщики размещают отдельный ценник в XBRL из-за правил семантики и действительности, введенных спецификацией XBRL. Действительный XBRL также является действительным XML, но действительный XML не обязательно является допустимым XBRL.

1

Вы можете использовать стандартный синтаксический анализатор XML для анализа экземпляра экземпляра XBRL. Однако (через страницу Википедии вы цитируетесь):

В типичном использовании XBRL состоит из экземпляра XBRL, содержащий в основном бизнес-факты, сообщается, и коллекция таксономий (называется Видимый Систематик Set (DTS)) , которые определяют метаданные об этих фактах, например, что означают факты и как они соотносятся друг с другом. XBRL использует стандарты XML Schema, XLink и XPointer.

Так на самом деле обрабатывать содержимое XBRL документа, вы, вероятно, должны быть в состоянии обрабатывать XLinks и XPointers, и вы должны знать, как извлечь, интерпретировать и применять метаданные от DTS.

Что касается извлечения данных из базы данных: если XBRL не выступает в качестве языка запросов, мне кажется, что в этом случае вы создадите новый экземплярный документ, а не разбираете существующий. Это противоположность синтаксическому разбору. Большинство парсеров действительно поставляются с XML-сериализаторами, которые обрабатывают детали синтаксиса, но вы должны построить соответствующий документ с правильной семантикой.

Я вообще не смотрел на продукты, но я подозреваю, что эти точки там, где пакет XBRL отличается от базовых инструментов XML - он содержит дополнительную логику для манипуляции семантикой для данного конкретного языка.

2

Вы можете это сделать. В настоящее время моя компания делает это с eXist-db, но те же правила применимы к BaseX, Sedna или Marklogic.

Вам нужно будет освоить XPath 2.0 и немного знать XQuery, а также избегать выполнения запросов, связанных с пространством имен.

Я думаю, вам нужно запросить данные из документов экземпляра XBRL. Это может быть сделано в два этапа: 1. Получить идентификатор контекста вы хотите запросить 2. Поиск фактов элемент в этом контексте

Этот запрос может сделать это с помощью одного вызова:

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) 

Он получает идентификатор компании, дату начала, дату окончания и имя факта и возвращает значение из документа экземпляра.

2

Проблема с XBRL заключается в том, что главное, что вы получаете из XML, представляет собой набор фактов с большим количеством кодов, прикрепленных к ним. Эти коды не имеют смысла без разбора таксономии, которая содержит все определения.

Таксономия, к сожалению, также содержит такие вещи, как формула (да, действительно), презентации (что происходит) и другие «полезные» дополнения, которые усложняют ситуацию бесконечно. Кроме того, стандарт использует Linkbase для всего. Довольно стандартная таксономия может содержать более 2000 отдельных файлов.

Да, вы можете использовать синтаксический анализатор XML для этого, но он не вернет ничего значимого. Для этого вам нужно разобрать экземпляры и таксономию. И это, к сожалению, недоступно для низких цен.

Вы можете взглянуть на такой инструмент, как Arelle, с сайта www.openfiling.info (часть с открытым исходным кодом проекта подачи заявок на участие в XBRL) - это должно дать вам представление о том, почему обычные синтаксические анализаторы XML не помогут. Ссылка: www.openfiling.info/arelle/

Смежные вопросы