Генерация XBRL документа программно: использовать шаблон или библиотеку? - PullRequest
7 голосов
/ 17 февраля 2011

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

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

Мои вопросы:

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

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

    • Выберите действительный экземпляр документа, очистите все данные и сохраните файл XBRL (XML) в качестве шаблона.
    • Визуализация шаблона для пользователя с использованием XSLT. Соберите пользовательский ввод и заполните XBRL, используя стандартные библиотеки XML в .Net

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

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

Ответы [ 5 ]

2 голосов
/ 05 августа 2011

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

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

На фронте коммерческих инструментов:

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

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

0 голосов
/ 15 июля 2015

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

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

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

0 голосов
/ 01 ноября 2013

Чтобы создать файл 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 делает его слишком медленным, поэтому лучше всего создать специальный алгоритм, чтобы получить то, что вам нужно.

0 голосов
/ 08 октября 2013

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

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

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

0 голосов
/ 08 октября 2013

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

Реально, эти данные существуют в базе данных, и самый безопасный способ поместить их в XBRL - это соединитель с этой базой данных.

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

...