2011-02-17 15 views
7

Estoy trabajando en una aplicación financiera y una de las funciones es generar el documento XBRL (eXtensible Business Reporting Language). Si está familiarizado con los documentos de instancia de XBRL, debe tener en cuenta que, por lo general, se refieren a una gran cantidad de esquemas. Por lo general, es más fácil generar estas instancias XBRL utilizando bibliotecas (commecial).Generación de documentos XBRL mediante programación: ¿Utiliza una plantilla o una biblioteca?

Caso de uso: diseñe un formulario web para que los usuarios rellenen los diversos campos. Genere un documento de instancia de XBRL válido utilizando la entrada del usuario.
Nuestra plataforma: C# .Net &

Mis preguntas:

  • ha usado alguna de las bibliotecas (comerciales)? ¿Cuál recomendaría para generar 'estados financieros anuales'? Altova MapForce parece ser el jugador dominante.

  • Una solución cruda evitar el uso de las bibliotecas (commecial):

    • seleccione un documento instancia válida, borre todos los datos y almacenar el archivo XBRL (XML) como plantilla.
    • Renderice la plantilla al usuario utilizando XSLT. Recolectar información del usuario y rellenar el XBRL utilizando librerías XML estándar en .Net

¿Recomendaría esta solución? Por qué & ¿por qué no?

Cualquier entrada se apreciará en gran medida :)

Respuesta

2

En este momento, utiliza una variación de la segunda aproximación. Tengo una plantilla, que analizo y llené con datos, gracias a una biblioteca XML estándar (en mi caso C libxml).

La idea de tener una plantilla ayuda a producir XBRL válido, pero creo que XSLT es muy complejo, y generalmente limitado, prefiero usar un lenguaje de programación real (python en mi caso, pero podría ser C# .net)

En el frente comercial herramientas:

  • nunca he utilizado Altova.
  • Invoke es muy bueno para mapear datos en instancias, y es realmente rápido.

Un tercer enfoque consiste en generar una instancia de XBRL solo mediante programación, con una biblioteca XML. XBRL es XML, después de todo.

0

Comenzaría dando un paso atrás y reconsiderando el caso de uso. Los informes financieros generalmente contienen de cientos a miles de hechos numéricos individuales, además de notas a pie de página y notas más largas de tamaño de párrafo en los estados financieros. ¿Realmente desea que un usuario se siente frente a un formulario web y vuelva a introducir los datos críticos de este negocio?

De manera realista, estos datos existen en una base de datos, y la forma más segura de obtenerlo en XBRL es un conector a esa base de datos.

Como se señaló en la pregunta de apertura, XBRL utiliza una gran cantidad de esquemas, y los esquemas de taxonomía más importantes pueden contener miles de definiciones de elementos.La interfaz de usuario en las herramientas XML estándar no está optimizada para esta situación, pero el mapeo entre los identificadores de cuentas internas y las etiquetas de taxonomía básica es uno de los casos de uso más importantes del proceso. De nuevo, considere almacenar esta asignación en su base de datos financiera porque se trata de datos críticos para la empresa.

0

En las bibliotecas comerciales, Gepsio es la elección clara para la plataforma .NET y su código abierto.

Si el usuario tiene que completar los datos, la solución original es correcta. Puede usar XForms para permitir que el usuario edite el XML en blanco directamente. La mayoría de las bases de datos XML incluyen soporte para XForms.

Si no va a utilizar una base de datos XML, puede usar XSLTForms, un complemento de XForms que se ejecuta en casi cualquier navegador.

+0

Gepsio no proporciona la facilidad para generar documentos Xbrl, solo para el análisis. – benPearce

0

Para crear un archivo xbrl, utilizaría una plantilla para evitar recompilar la solución si no fuera necesario. Hasta ahora, xslt me ​​ha hecho un buen trabajo.

una muestra XSLT para producir xbrl se parece a esto:

<?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> 

recientemente he estado creando archivos de gran tamaño de 500 xbrl (mb) y mediante XSLT todavía hace un buen tiempo de trabajo inteligente. Aunque para consumir estos archivos, es mejor construir y algoritmo adhoc para buscar y encontrar lo que busca. El uso de xpath lo hace demasiado lento, por lo que lo mejor es crear un algoritmo personalizado para obtener lo que necesita.

0

Actualmente estoy trabajando en un proyecto que consume y genera grandes documentos Xbrl.

Para la generación, actualmente utilizamos Altova MapForce para diseñar los mapas y Altova FlowForce y Altova MapForce Server para ejecutar la asignación de Xml a Xbrl. El rendimiento de MapForce es bastante bueno, pero FlowForce es un poco torpe cuando se trabaja con grandes cantidades de archivos.

Para su caso de uso, no me quedaría colgado en la recopilación de datos, MapForce puede mapear desde archivos de texto (csv) o xml. Una vez que tenga sus datos en una base de datos, genere un documento de entrada (en C# como y XmlDocument) y deje que MapForce produzca el documento de salida en Xbrl.

Cuestiones relacionadas