XBRL: Tutorial con Ejemplos Basados en IPP-2008 I

August 1, 2017

El lenguage extensible de información comercial XBRL (eXtensible Business Reporting Language) es un lenguage XML y, por tanto, verboso y legible para humanos —aunque enfocado a interpretación por máquinas.

La especificación es bastante compleja por intentar dar cabida a la gran heterogeneidad encontrada en los dominio a informar, p.ej. balances, cuentas de pérdidas y ganancias o flujos de caja, y bajo diferentes estándares, como US-GAAP, IFRS, PGC, etc.

Como se indica en el título de este artículo, se va a abordar XBRL con algunos ejemplos, pues así será más fácil entender.

Taxonomías

La CNMV (Comisión Nacional del Mercado de Valores) ha definido varias taxonomías en los últimos años para la Información Pública Períodica bajo los nombres de IPP-2005, IPP-2008 e IPP-2015 . Los siguientes ejemplos se basan en IPP-2008.

La taxonomía define principalmente la estructura y significado de la información. Dentro de la taxonomía IPP-2008, el fichero ipp-gen-2008-01-01.xsd (XSD = XML Schema Definition) define el concepto nombrado CuentaPerdidasGananciasIndividual de la siguiente forma:

<element name="CuentaPerdidasGananciasIndividual" id="ipp-gen_CuentaPerdidasGananciasIndividual" substitutionGroup="xbrli:tuple">
    <complexType>
        <sequence maxOccurs="4" minOccurs="0">
            <element maxOccurs="4" minOccurs="0" ref="ifrs-gp:RevenueTotalByNature"/>
            <element maxOccurs="4" minOccurs="0" ref="ifrs-gp:DepreciationAndAmortisation"/>
            <element maxOccurs="4" minOccurs="0" ref="ipp-gen:ImputacionSubvencionesInmovilizadoNoFinancieroOtras"/>
            ...
        </sequence>
    </complexType>
</element>

La elipsis representa muchos elementos que se ha omitido por facilitar la comprensión. Puede observarse que algunos elementos de la cuenta de pérdidas y ganancias vienen de otra taxonomía, e.d. ifrs-gp:RevenueTotalByNature tiene el espacio de nombres o namespace ifrs-gp (International Financial Reporting Standards - General Principles). Para ver los detalles de este elemento habría que consultar el fichero donde se define que, a su vez, podría llevarnos a otras taxonomías transitivamente, pero nos quedamos aquí.

En el fragmento anterior también está el elemento ipp-gen:ImputacionSubvencionesInmovilizadoNoFinancieroOtras. El espacio de nombres (ipp-gen) parece ser del mismo esquema que se está definiendo en el fichero que estamos examinando. ¡Y así es! como puede verificarse examinando el fichero unas líneas más abajo, donde encontramos:

<element name="ImputacionSubvencionesInmovilizadoNoFinancieroOtras" id="ipp-gen_ImputacionSubvencionesInmovilizadoNoFinancieroOtras" type="xbrli:monetaryItemType" substitutionGroup="xbrli:item" nillable="true" xbrli:balance="credit" xbrli:periodType="duration"/>

Por lo tanto, la taxonomía IPP-2008 define algunos objetos y reutiliza otros de taxonomías diferentes —esta es una razón por la que XBRL se dice extensible.

Además del esquema (fichero XSD), la taxonomía suele consistir de otros elementos, llamados linkbases (bases de enlaces), que no son más que ficheros XML con enlaces que siguen la especificación XLink.

A continuación se explica las bases de enlaces de XBRL 2.1:

  • Referencias (Reference Linkbase)
  • Etiquetas (Label Linkbase)
  • Cálculo (Calculation Linkbase)
  • Presentación (Presentation Linkbase)

Referencias

Las referencias añaden meta-información a un elemento. P.ej. en la taxonomía hay otro fichero, ipp-gen-2008-01-01-reference.xml, en el que ImputacionSubvencionesInmovilizadoNoFinancieroOtras hace referencia al Boletín Oficial del Estado: BOE número 40, capítulo 2678, etc, de la siguiente forma:

<loc xlink:type="locator" xlink:href="ipp-gen-2008-01-01.xsd#ipp-gen_ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:label="ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:title="ImputacionSubvencionesInmovilizadoNoFinancieroOtras"/>
<reference xlink:type="resource" xlink:label="reference_ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:role="http://www.xbrl.org/2003/role/reference" xlink:title="reference_ImputacionSubvencionesInmovilizadoNoFinancieroOtras" id="reference_ImputacionSubvencionesInmovilizadoNoFinancieroOtras">
    <ref:Name>BOE</ref:Name>
    <ref:Number>40</ref:Number>
    <ref:Chapter>2678</ref:Chapter>
    ...
</reference>
<referenceArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-reference" xlink:from="ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:to="reference_ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:title="reference: ImputacionSubvencionesInmovilizadoNoFinancieroOtras to reference_ImputacionSubvencionesInmovilizadoNoFinancieroOtras"/>

Son tres elementos: el localizador del elemento, la referencia y el arco o vértice que enlaza ambos. ¿Por qué se define un localizador para el elemento y no se enlaza directamente con el elemento? No lo sé. ¿Por qué el localizador no tiene atributo id pero en xlink:from del arco se presupone uno? Tampoco lo sé: en esta taxonomía a veces encuentro casos que me parecen errores, incoherencias o incompleciones, pero sigamos.

Etiquetas

Esta base de enlaces es fácil de comprender: establece una etiqueta legible para los humanos. Para nuestro elemento ipp-gen:ImputacionSubvencionesInmovilizadoNoFinancieroOtras:

<loc xlink:type="locator" xlink:href="ipp-gen-2008-01-01.xsd#ipp-gen_ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:label="ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:title="ImputacionSubvencionesInmovilizadoNoFinancieroOtras"/>
<label xlink:type="resource" xlink:label="label_ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:role="http://www.xbrl.org/2003/role/label" xlink:title="label_ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xml:lang="es" id="label_ImputacionSubvencionesInmovilizadoNoFinancieroOtras">
    Imputación de subvenciones de inmovilizado no financiero y otras
</label>
<labelArc xlink:type="arc" xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:to="label_ImputacionSubvencionesInmovilizadoNoFinancieroOtras" xlink:title="label: ImputacionSubvencionesInmovilizadoNoFinancieroOtras to label_ImputacionSubvencionesInmovilizadoNoFinancieroOtras"/>

El atributo lang del elemento label es el que determina el idioma de la etiqueta. Para traducciones alternativas crearíamos nuevos pares >label, labelArc< relacionados con el mismo localizador.

En la próxima entrega, “XBRL: Tutorial con Ejemplos Basados en IPP-2008 II”, se discutirá el resto de bases de enlaces y se extraerán algunas conclusiones.

Archivos