Crear archivo XBRL usando Python

Un documento XBRL es una colección de hechos que juntos forman un informe comercial. Podemos crear fácilmente un documento de instancia XBRL mediante programación y agregar objetos o elementos como referencia de esquema, contexto, unidad, elementos, etc. En este artículo, aprenderemos cómo crear un archivo XBRL usando Python.

En este artículo se tratarán los siguientes temas:

  1. Qué es XBRL
  2. Biblioteca financiera de Python para crear archivos XBRL
  3. Crear archivo XBRL
  4. Agregar referencia de esquema a XBRL
  5. Agregar contexto en XBRL
  6. Crear una Unidad en XBRL
  7. Agregar elemento de hecho en XBRL
  8. Agregar enlaces de notas al pie de página a XBRL
  9. Insertar referencia de rol en XBRL
  10. Agregar referencia de función de arco a XBRL

¿Qué es XBRL?

XBRL son las siglas de eXtensible Business Reporting Language, un lenguaje de marcado basado en XML. Se utiliza para la elaboración de informes comerciales estandarizados sobre el rendimiento financiero de una empresa. Proporciona una forma de comunicar e intercambiar información comercial entre sistemas comerciales.

Biblioteca financiera de Python para crear archivos XBRL

Para crear un archivo XBRL o un documento de instancia, utilizaremos la API Aspose.Finance for Python. Permite crear instancias XBRL, analizar y validar los archivos XBRL o iXBRL.

La API proporciona la clase XbrlDocument que representa un documento XBRL que contiene una o más instancias XBRL. Una instancia XBRL es un fragmento XML, cuyo elemento raíz tiene una etiqueta XBRL. La clase XbrlInstance proporciona varios métodos y propiedades para trabajar con instancias XBRL. El método save() de la clase XbrlDocument crea y guarda el archivo XBRL en el disco. Lea más sobre otras clases para trabajar con objetos XBRL en Referencia de API.

Descargue el paquete o instale la API desde PyPI usando el siguiente comando pip en la consola:

pip install aspose-finance

Crear documento de instancia XBRL en Python

Podemos crear fácilmente un documento de instancia XBRL desde cero siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase XbrlDocument.
  2. A continuación, acceda a la colección de instancias desde el objeto XbrlDocument al objeto xbrlinstances.
  3. Después de eso, agregue una nueva instancia XBRL usando el método xbrlinstances.add().
  4. Finalmente, guarde el archivo XBRL usando el método save(string). Toma la ruta del archivo de salida como argumento.

El siguiente ejemplo de código muestra cómo crear una instancia XBRL mediante Python.

# This code example demonstrates how to create an XBRL document
from aspose.finance.xbrl import XbrlDocument

# The path to the documents directory.
outputFile = "C:\\Files\\document.xbrl"

# Create XBRL document
xbrlDoc = XbrlDocument()

# Get document instances collection
xbrlInstances = xbrlDoc.xbrl_instances

# Add instance to the collection
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Save the file
xbrlDoc.save(outputFile)

Una vez que hayamos creado la instancia de XBRL, podemos agregar la referencia del esquema, el contexto, las unidades, los elementos, los enlaces de notas al pie, las referencias de funciones y las referencias de funciones de arco en la instancia de XBRL recién creada.

Agregar referencia de esquema a XBRL usando Python

Podemos agregar una referencia de esquema en un documento de instancia XBRL siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase XbrlDocument.
  2. A continuación, obtenga la colección de instancias del objeto XbrlDocument en el objeto xbrlinstances.
  3. Luego, agregue una nueva instancia XBRL utilizando el método xbrlinstances.add().
  4. A continuación, obtenga la colección de referencias del esquema del objeto XbrlInstance en el objeto schemarefs.
  5. Después de eso, agregue una nueva referencia de esquema utilizando el método schemarefs.add() con el archivo de esquema de entrada.
  6. Finalmente, guarde el archivo XBRL usando el método save(string).

El siguiente ejemplo de código muestra cómo crear un documento de instancia XBRL y agregar una referencia de esquema en Python.

# This code example demonstrates how to create an XBRL document and add schema reference object
from aspose.finance.xbrl import XbrlDocument

# The path to the documents directory.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Create XBRL document
xbrlDoc = XbrlDocument()

# Get document instances collection
xbrlInstances = xbrlDoc.xbrl_instances

# Add instance to the collection
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Get instance schema references collection
schemaRefs = xbrlInstance.schema_refs

# Add schema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")

# Save the document
xbrlDoc.save(outputFile)

Agregar contexto en XBRL usando Python

Podemos agregar un contexto a un documento de instancia XBRL siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase XbrlDocument.
  2. A continuación, agregue una nueva instancia XBRL a las xbrlinstances del objeto XbrlDocument.
  3. Luego, cree una instancia de la clase ContextPeriod con las fechas de inicio y finalización.
  4. A continuación, cree un objeto ContextEntity con esquema e identificador.
  5. Luego, cree una instancia de la clase Context con ContextPeriod y ContextEntity definidos.
  6. Después de eso, agregue el objeto Contexto a la colección de contextos.
  7. Finalmente, guarde el archivo XBRL usando el método save(string).

El siguiente ejemplo de código muestra cómo crear un documento de instancia XBRL y agregar un objeto de contexto en Python.

# This code example demonstrates how to create an XBRL document and add Context object
from datetime import datetime
from aspose.finance.xbrl import XbrlDocument,ContextPeriod,ContextEntity,Context

# The path to the documents directory.
outputFile = "C:\\Files\\document.xbrl"

# Create XBRL document
xbrlDoc = XbrlDocument()

# Get document instances collection
xbrlInstances = xbrlDoc.xbrl_instances

# Add instance to the collection
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Add context period
contextPeriod = ContextPeriod(datetime(2020,1,1), datetime(2020,2,10))

# Add context entity
contextEntity = ContextEntity("exampleIdentifierScheme", "exampleIdentifier")

# Define and add context
context = Context(contextPeriod, contextEntity)
xbrlInstance.contexts.append(context)

# Save the document
xbrlDoc.save(outputFile)

Crear Unidades en XBRL usando Python

Las unidades en XBRL miden elementos numéricos. Podemos agregar una unidad en un documento de instancia XBRL siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase XbrlDocument.
  2. A continuación, agregue una nueva instancia XBRL a las xbrlinstances del objeto XbrlDocument.
  3. Luego, cree una instancia de la clase Unit con UnitType como MEASURE.
  4. A continuación, agregue QualifiedName a la colección de nombres calificados de medidas.
  5. Después de eso, agregue la Unidad a la colección de unidades.
  6. Finalmente, guarde el archivo XBRL usando el método save(string).

El siguiente ejemplo de código muestra cómo crear un archivo XBRL y agregar un objeto de unidad en Python.

# This code example demonstrates how to create an XBRL document and add Unit object
from aspose.finance.xbrl import XbrlDocument,Unit,QualifiedName,UnitType

# The path to the documents directory.
outputFile = "C:\\Files\\document.xbrl"

# Create XBRL document
xbrlDoc = XbrlDocument()

# Get document instances collection
xbrlInstances = xbrlDoc.xbrl_instances

# Add instance to the collection
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Add Unit
unit = Unit(UnitType.MEASURE)
unit.measure_qualified_names.append(QualifiedName("USD", "iso4217", "http://www.xbrl.org/2003/iso4217"))
xbrlInstance.units.append(unit)

# Save the document
xbrlDoc.save(outputFile)

Agregar elemento de hecho en XBRL usando Python

Los hechos en XBRL se definen utilizando elementos de elementos. Un ítem en XBRL contiene el valor del hecho simple y una referencia al contexto para interpretar correctamente ese hecho. Podemos agregar un elemento en un documento de instancia XBRL siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase XbrlDocument.
  2. Agregue una nueva instancia XBRL a las xbrlinstances del objeto XbrlDocument.
  3. Agregue una nueva referencia de esquema a las referencias de esquema del objeto XbrlInstance.
  4. Obtenga SchemaRef por su índice de schemarefs.
  5. Inicialice la instancia de contexto y agréguela a la colección de contextos.
  6. Defina una instancia de Unidad y agréguela a la colección de unidades.
  7. Cree una instancia de la clase Concept utilizando el método getconceptbyname().
  8. Cree una instancia de la clase Item con el objeto Concept como argumento.
  9. Establezca las propiedades del elemento, como contextref, unitref, precision, value, etc.
  10. Después de eso, agregue el artículo a la colección de hechos.
  11. Finalmente, guarde el archivo XBRL utilizando el método save(string).

El siguiente ejemplo de código muestra cómo agregar un hecho como un elemento de elemento en un documento de instancia XBRL usando Python.

# This code example demonstrates how to create an XBRL document and add Item object
from datetime import datetime
from aspose.finance.xbrl import XbrlDocument,ContextPeriod,ContextEntity,Context,Unit,UnitType,QualifiedName,Item

# The path to the documents directory.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Create XBRL document
xbrlDoc = XbrlDocument()

# Get document instances collection
xbrlInstances = xbrlDoc.xbrl_instances

# Add instance to the collection
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Get instance schema references collection
schemaRefs = xbrlInstance.schema_refs

# Add schema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")
schema = schemaRefs[0]

# Add context
contextPeriod = ContextPeriod(datetime(2020,1,1), datetime(2020,2,10))
contextEntity = ContextEntity("exampleIdentifierScheme", "exampleIdentifier")
context = Context(contextPeriod, contextEntity)
xbrlInstance.contexts.append(context)

# Add unit
unit = Unit(UnitType.MEASURE)
unit.measure_qualified_names.append(QualifiedName("USD", "iso4217", "http://www.xbrl.org/2003/iso4217"))
xbrlInstance.units.append(unit)

# Add item
fixedAssetsConcept = schema.get_concept_by_name("fixedAssets")
if fixedAssetsConcept is not None:
    item = Item(fixedAssetsConcept)
    item.context_ref = context
    item.unit_ref = unit
    item.precision = 4
    item.value = "1444"
    xbrlInstance.facts.append(item)
    
# Save the document
xbrlDoc.save(outputFile)

Podemos agregar un enlace de nota al pie en un documento de instancia XBRL siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase XbrlDocument.
  2. Agregue una nueva instancia XBRL a las xbrlinstances del objeto XbrlDocument.
  3. Agregue una nueva referencia de esquema a las referencias de esquema del objeto XbrlInstance.
  4. Obtenga SchemaRef por su índice de schemarefs.
  5. Inicialice la instancia de contexto y agréguela a la colección de contextos.
  6. Defina una instancia de clase de nota al pie y establezca su etiqueta y texto.
  7. Inicialice el tipo de localizador utilizando la instancia de la clase Loc.
  8. Defina el objeto FootnoteArc con la etiqueta del localizador y la etiqueta de la nota al pie como argumentos.
  9. Cree una instancia de la clase FootnoteLink.
  10. Agregue Footnote, Locator y FootnoteArc a las colecciones relevantes.
  11. Después de eso, agregue FootnoteLink a la colección de enlaces de notas al pie.
  12. Finalmente, guarde el archivo XBRL utilizando el método save(string).

El siguiente ejemplo de código muestra cómo agregar un enlace de nota al pie en un documento de instancia de XBRL mediante Python.

# This code example demonstrates how to create an XBRL document and add Footnote Link object
from datetime import datetime
from aspose.finance.xbrl import XbrlDocument,ContextPeriod,ContextEntity,Context,FootnoteLink,Footnote,Loc,FootnoteArc

# The path to the documents directory.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Create XBRL document
xbrlDoc = XbrlDocument()

# Get document instances collection
xbrlInstances = xbrlDoc.xbrl_instances

# Add instance to the collection
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Get instance schema references collection
schemaRefs = xbrlInstance.schema_refs

# Add schema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")
schema = schemaRefs[0]

# Add context
contextPeriod = ContextPeriod(datetime(2020,1,1), datetime(2020,2,10))
contextEntity = ContextEntity("exampleIdentifierScheme", "exampleIdentifier")
context = Context(contextPeriod, contextEntity)
xbrlInstance.contexts.append(context)

# Add Footnote
footnote = Footnote("footnote1")
footnote.text = "Including the effects of the merger."

# Add Location
loc = Loc("#cd1", "fact1")

# Define Footnote arc
footnoteArc = FootnoteArc(loc.label, footnote.label)

# Add FootnoteLink
footnoteLink = FootnoteLink()
footnoteLink.footnotes.append(footnote)
footnoteLink.locators.append(loc)
footnoteLink.footnote_arcs.append(footnoteArc)
xbrlInstance.footnote_links.append(footnoteLink)
    
# Save the document
xbrlDoc.save(outputFile)

Insertar referencia de rol en XBRL usando Python

Podemos agregar una referencia de rol en un documento de instancia XBRL siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase XbrlDocument.
  2. Agregue una nueva instancia XBRL a las xbrlinstances del objeto XbrlDocument.
  3. Agregue una nueva referencia de esquema a las referencias de esquema del objeto XbrlInstance.
  4. Obtenga SchemaRef por su índice de schemarefs.
  5. A continuación, obtenga el RoleType del método getroletypebyuri().
  6. Luego, cree una instancia de la clase RoleReference con el objeto RoleType como argumento.
  7. Después de eso, agregue RoleReference a la colección de referencias de roles.
  8. Finalmente, guarde el archivo XBRL usando el método save(string).

El siguiente ejemplo de código muestra cómo agregar una referencia de rol en un documento de instancia XBRL mediante Python.

# This code example demonstrates how to create an XBRL document and add Role reference object
from aspose.finance.xbrl import XbrlDocument,RoleReference

# The path to the documents directory.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Create XBRL document
xbrlDoc = XbrlDocument()

# Get document instances collection
xbrlInstances = xbrlDoc.xbrl_instances

# Add instance to the collection
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Get instance schema references collection
schemaRefs = xbrlInstance.schema_refs

# Add schema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")
schema = schemaRefs[0]

# Get role type
roleType = schema.get_role_type_by_uri("http://abc.com/role/link1")

# Add role reference
if roleType is not None:
    roleReference = RoleReference(roleType)
    xbrlInstance.role_references.append(roleReference)

# Save the document
xbrlDoc.save(outputFile)

Agregar referencia de función de arco a XBRL en Python

Podemos agregar una referencia de rol de Arc en un documento de instancia XBRL siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase XbrlDocument.
  2. Agregue una nueva instancia XBRL a las xbrlinstances del objeto XbrlDocument.
  3. Agregue una nueva referencia de esquema a las referencias de esquema del objeto XbrlInstance.
  4. Obtenga SchemaRef por su índice de schemarefs.
  5. A continuación, obtenga el RoleType del método getarcroletypebyuri().
  6. Luego, cree una instancia de la clase ArcroleReference con el objeto RoleType como argumento.
  7. Después de eso, agregue ArcroleReference a la colección de arcolereferences.
  8. Finalmente, guarde el archivo XBRL usando el método save(string).

El siguiente ejemplo de código muestra cómo agregar una referencia de función de arco en un documento de instancia XBRL mediante Python.

# This code example demonstrates how to create an XBRL document and add Arc Role reference object
from aspose.finance.xbrl import XbrlDocument,ArcroleReference

# The path to the documents directory.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Create XBRL document
xbrlDoc = XbrlDocument()

# Get document instances collection
xbrlInstances = xbrlDoc.xbrl_instances

# Add instance to the collection
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Get instance schema references collection
schemaRefs = xbrlInstance.schema_refs

# Add schema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")
schema = schemaRefs[0]

# Get role type
roleType = schema.get_role_type_by_uri("http://abc.com/role/link1")

# Add role reference
if roleType is not None:
    arcroleReference = ArcroleReference(roleType)
    xbrlInstance.arcrole_references.append(arcroleReference)

# Save the document
xbrlDoc.save(outputFile)

Obtenga una licencia gratis

Puede obtener una licencia temporal gratuita para probar la biblioteca sin limitaciones de evaluación.

Conclusión

En este artículo, hemos aprendido cómo crear un documento XBRL usando Python. También hemos visto cómo agregar varios objetos XBRL al documento de instancia XBRL creado mediante programación. Además, puede obtener más información sobre Aspose.Finance for Python API utilizando la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en nuestro foro.

Ver también