以编程方式生成XBRL文档:使用模板还是库?

时间:2011-02-17 18:56:34

标签: xml xbrl

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

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

我的问题:

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

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

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

您会推荐此解决方法吗?为什么&为什么不呢?

任何意见都将不胜感激:)

5 个答案:

答案 0 :(得分:2)

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

拥有模板的想法有助于生成有效的XBRL,但我认为XSLT非常复杂,而且通常有限,我更喜欢使用真正的编程语言(在我的情况下是python,但可能是C#.net)< / p>

在商业工具方面:

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

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

答案 1 :(得分:0)

我首先回过头来重新考虑用例。财务报告通常包含数百到数千个单独的数字事实,此外还有脚注和较长的段落大小的财务报表附注。您真的希望用户坐在Web表单前面并重新键入此业务关键数据吗?

实际上,这些数据存在于数据库中,获取XBRL的最安全方法是连接该数据库。

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

答案 2 :(得分:0)

在商业图书馆,Gepsio是.NET平台的明智选择,它是开源的。

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

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

答案 3 :(得分:0)

要创建一个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使它太慢,所以最好是构建一个定制的算法来获得你需要的东西。

答案 4 :(得分:0)

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

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

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

相关问题