【问题标题】:Generating XBRL document programmatically: Use a template or a library?以编程方式生成 XBRL 文档:使用模板还是库?
【发布时间】:2011-06-29 07:55:46
【问题描述】:

我正在开发一个财务应用程序,其中一项功能是生成 XBRL(可扩展业务报告语言)文档。如果您熟悉 XBRL 实例文档,您可能知道它们通常引用大量模式。使用(商业)库生成这些 XBRL 实例通常更容易。

用例:为用户设计一个 Web 表单以填写各个字段。使用用户输入生成有效的 XBRL 实例文档。
我们的平台:C# 和 .Net

我的问题:

  • 您是否使用过任何(商业)库?您会推荐哪一个来生成“年度财务报表”? Altova MapForce 似乎是主导者。

  • 避免使用(商业)库的粗略解决方法:

    • 选择一个有效的实例文档,清除所有数据并将 XBRL (XML) 文件存储为模板。
    • 使用 XSLT 将模板呈现给用户。使用 .Net 中的标准 XML 库收集用户输入并填写 XBRL

您会推荐这种解决方法吗?为什么?为什么不?

任何意见将不胜感激:)

【问题讨论】:

    标签: xml xbrl


    【解决方案1】:

    我目前正在处理一个消耗和生成大型 Xbrl 文档的项目。

    对于生成,我们目前使用 Altova MapForce 来设计地图,并使用 Altova FlowForce 和 Altova MapForce Server 来执行从 Xml 到 Xbrl 的映射。 MapForce 的性能相当不错,但 FlowForce 在处理大量文件时有点笨拙。

    对于您的用例,我不会沉迷于数据收集,MapForce 可以从文本文件 (csv) 或 xml 映射。将数据存入数据库后,生成输入文档(在 C# 和 XmlDocument 中)并让 MapForce 在 Xbrl 中生成输出文档。

    【讨论】:

      【解决方案2】:

      要创建 xbrl 文件,我会使用模板来避免在不需要时重新编译解决方案。 到目前为止,xslt 为我做得很好。

      生成 xbrl 的 xslt 示例如下所示:

      <?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+ mb 大小)并且使用 xslt 在时间方面仍然做得很好。 尽管为了使用这些文件,最好构建和 adhoc 算法来搜索和查找您要查找的内容。使用 xpath 太慢了,所以最好是构建一个量身定制的算法来获得你需要的东西。

      【讨论】:

        【解决方案3】:

        在商业库中,Gepsio 是 .NET 平台的明确选择,而且它是开源的。

        如果用户必须填写数据,那么您的粗略解决方法是正确的。您可以使用 XForms 来允许用户直接编辑空白 XML。大多数 XML 数据库都包含 XForms 支持。

        如果您不打算使用 XML DB,可以使用XSLTForms,这是一个几乎可以在任何浏览器中运行的 XForms 插件。

        【讨论】:

        • Gepsio 不提供生成 Xbrl 文档的功能,仅用于解析。
        【解决方案4】:

        我会先退后一步重新考虑用例。财务报告通常包含数百到数千个单独的数字事实,除了脚注和财务报表更长的段落大小的注释。您真的希望用户坐在 Web 表单前并重新键入这些关键业务数据吗?

        实际上,这些数据存在于数据库中,将其导入 XBRL 的最安全方法是连接到该数据库。

        如开题所述,XBRL 使用大量模式,最重要的分类模式可以包含数千个元素定义。标准 XML 工具上的 UI 并未针对这种情况进行优化,但内部帐户标识符和基本分类标记之间的映射是该流程最重要的用例之一。同样,请考虑将此映射存储在您的财务数据库中,因为它是业务关键数据。

        【讨论】:

          【解决方案5】:

          现在,我使用第二种方法的变体。我有一个模板,可以解析并填充数据,这要归功于标准 XML 库(在我的例子中是 C libxml)。

          拥有模板的想法有助于生成有效的 XBRL,但我认为 XSLT 非常复杂,而且通常受到限制,我更喜欢使用真正的编程语言(在我的例子中是 python,但可能是 C# .net)

          在商业工具方面:

          • 我从未使用过 Altova。
          • Invoke 非常擅长在实例中映射数据,而且速度非常快。

          第三种方法是使用 XML 库仅以编程方式生成 XBRL 实例。毕竟,XBRL 是 XML。

          【讨论】:

            猜你喜欢
            • 2013-12-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-08-19
            • 1970-01-01
            • 2011-11-07
            • 2018-01-29
            • 2014-08-10
            相关资源
            最近更新 更多