Создание документа XBRL программно: использовать шаблон или библиотеку?

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

Пример использования. Разработайте веб-форму, чтобы пользователи могли заполнять различные поля. Создайте действительный экземпляр документа XBRL, используя данные, введенные пользователем.
Наша платформа: C# и .Net

Мои вопросы:

  • Вы использовали какую-либо из (коммерческих) библиотек? Какой из них вы бы порекомендовали для создания «годовой финансовой отчетности»? Altova MapForce кажется доминирующим игроком.

  • Грубый обходной путь, чтобы избежать использования (коммерческих) библиотек:

    • Select a valid instance document, clear all the data and store the XBRL (XML) file as a template.
    • Отобразите шаблон для пользователя с помощью XSLT. Соберите пользовательский ввод и заполните XBRL, используя стандартные библиотеки XML в .Net.

Вы бы порекомендовали этот обходной путь? Почему, почему нет?

Любой вклад будет принят с благодарностью :)


person Venkat    schedule 17.02.2011    source источник


Ответы (5)


Сейчас я использую вариант второго подхода. У меня есть шаблон, который я анализирую и заполняю данными благодаря стандартной библиотеке XML (в моем случае C libxml).

Идея наличия шаблона помогает создавать действительный XBRL, но я думаю, что XSLT очень сложный и обычно ограниченный, я предпочитаю использовать настоящий язык программирования (в моем случае Python, но это может быть C# .net)

Что касается коммерческих инструментов:

  • Я никогда не использовал Альтову.
  • Invoke очень хорошо отображает данные в экземплярах и работает очень быстро.

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

person rds    schedule 05.08.2011

Я бы начал с того, что сделал шаг назад и пересмотрел вариант использования. Финансовые отчеты обычно содержат от сотен до тысяч отдельных числовых фактов в дополнение к сноскам и более длинным примечаниям размером с абзац к финансовым отчетам. Вы действительно хотите, чтобы пользователь сидел перед веб-формой и повторно вводил эти важные для бизнеса данные?

На самом деле эти данные существуют в базе данных, и самый безопасный способ передать их в XBRL — подключиться к этой базе данных.

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

person David vun Kannon    schedule 08.10.2013

В коммерческих библиотеках Gepsio является очевидным выбором для платформы .NET и с открытым исходным кодом.

Если пользователь должен заполнить данные, ваш грубый обходной путь верен. Вы можете использовать XForms, чтобы позволить пользователю напрямую редактировать пустой XML. Большинство баз данных XML включают поддержку XForms.

Если вы не собираетесь использовать базу данных XML, вы можете использовать XSLTForms, подключаемый модуль XForms, который работает почти любой браузер.

person Bill Velasquez    schedule 08.10.2013
comment
Gepsio не предоставляет средства для создания документов Xbrl, только для анализа. - person benPearce; 15.07.2015

Чтобы создать файл xbrl, я бы использовал шаблон, чтобы избежать повторной компиляции решения, если мне это не нужно. До сих пор xslt делал для меня хорошую работу.

пример xslt для создания xbrl выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output omit-xml-declaration="no" />  
  <xsl:template match="/">    
    <xbrli:xbrl ....

    <xbrli:period>
     ....
<xbrli:startDate><xsl:value-of        select="yourcontext/contextstartdate"/></xbrli:endDate>
 </xbrli:period>
  </xbrli:xbrl>
  </xsl:template>
</xsl:stylesheet>

Недавно я создавал большие файлы xbrl (размером более 500 МБ), и использование xslt по-прежнему хорошо работает по времени. Хотя для использования этих файлов лучше всего создать специальный алгоритм для поиска и поиска того, что вы ищете. Использование xpath делает его слишком медленным, поэтому лучше всего построить специальный алгоритм, чтобы получить то, что вам нужно.

person Luis Munoz    schedule 01.11.2013

В настоящее время я работаю над проектом, который потребляет и создает большие документы Xbrl.

В настоящее время для генерации мы используем Altova MapForce для разработки карт, а также Altova FlowForce и Altova MapForce Server для выполнения преобразования из Xml в Xbrl. Производительность MapForce неплохая, но FlowForce немного неуклюж при работе с большим количеством файлов.

Для вашего варианта использования я бы не стал зацикливаться на сборе данных, MapForce может отображать из текстовых файлов (csv) или xml. Когда у вас есть данные в базе данных, создайте входной документ (в C# as и XmlDocument) и позвольте MapForce создать выходной документ в Xbrl.

person benPearce    schedule 15.07.2015