Skapa XBRL-fil med Python

Ett XBRL dokument är en samling fakta som tillsammans utgör en affärsrapport. Vi kan enkelt skapa ett XBRL-instansdokument programmatiskt och lägga till objekt eller element som schemareferens, sammanhang, enhet, objekt etc. I den här artikeln kommer vi att lära oss hur man skapar en XBRL-fil med Python.

Följande ämnen ska behandlas i den här artikeln:

  1. Vad är XBRL
  2. Python Finance Library för att skapa XBRL-filer
  3. Skapa XBRL-fil
  4. Lägg till schemareferens till XBRL
  5. Lägg till sammanhang i XBRL
  6. Skapa en enhet i XBRL
  7. Lägg till faktaobjekt i XBRL
  8. Lägg till fotnotslänkar till XBRL
  9. Infoga rollreferens i XBRL
  10. Lägg till bågrollreferens till XBRL

Vad är XBRL

XBRL står för eXtensible Business Reporting Language, ett XML-baserat märkningsspråk. Det används för standardiserad affärsrapportering av ett företags finansiella resultat. Det ger ett sätt att kommunicera och utbyta affärsinformation mellan affärssystem.

Python Finance Library för att skapa XBRL-filer

För att skapa en XBRL-fil eller ett instansdokument kommer vi att använda Aspose.Finance for Python API. Det gör det möjligt att skapa XBRL-instanser, analysera och validera XBRL- eller iXBRL-filerna.

API tillhandahåller klassen XbrlDocument som representerar ett XBRL-dokument som innehåller en eller flera XBRL-instanser. En XBRL-instans är ett XML-fragment, där rotelementet har en XBRL-tagg. Klassen XbrlInstance tillhandahåller olika metoder och egenskaper för att arbeta med XBRL-instanser. Metoden save() för klassen XbrlDocument skapar och sparar XBRL-filen på disken. Läs mer om andra klasser för att arbeta med XBRL-objekt i API-referens.

Vänligen antingen ladda ner paketet eller installera API:et från PyPI med följande pip-kommando i konsolen:

pip install aspose-finance

Skapa XBRL-instansdokument i Python

Vi kan enkelt skapa ett XBRL-instansdokument från början genom att följa stegen nedan:

  1. Skapa först en instans av klassen XbrlDocument.
  2. Öppna sedan instanssamlingen från XbrlDocument-objektet till xbrlinstances-objektet.
  3. Efter det lägger du till en ny XBRL-instans med metoden xbrlinstances.add().
  4. Slutligen, spara XBRL-filen med hjälp av save(string)-metoden. Den tar utdatafilens sökväg som ett argument.

Följande kodexempel visar hur man skapar en XBRL-instans med Python.

# Detta kodexempel visar hur man skapar ett XBRL-dokument
from aspose.finance.xbrl import XbrlDocument

# Sökvägen till dokumentkatalogen.
outputFile = "C:\\Files\\document.xbrl"

# Skapa XBRL-dokument
xbrlDoc = XbrlDocument()

# Få insamling av dokumentinstanser
xbrlInstances = xbrlDoc.xbrl_instances

# Lägg till instans i samlingen
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Spara filen
xbrlDoc.save(outputFile)

När vi har skapat instansen av XBRL kan vi lägga till schemareferens, sammanhang, enheter, objekt, fotnotslänkar, rollreferenser och bågrollreferenser i den nyskapade XBRL-instansen.

Lägg till Schema Reference till XBRL med Python

Vi kan lägga till schemareferens i ett XBRL-instansdokument genom att följa stegen nedan:

  1. Skapa först en instans av klassen XbrlDocument.
  2. Hämta sedan XbrlDocument-objektets instanssamling till xbrlinstances-objektet.
  3. Lägg sedan till en ny XBRL-instans med metoden xbrlinstances.add().
  4. Hämta sedan XbrlInstance-objektets schemareferenssamling till schemarefs-objektet.
  5. Lägg sedan till en ny schemareferens med metoden schemarefs.add() med inmatningsschemafil.
  6. Slutligen, spara XBRL-filen med hjälp av save(string)-metoden.

Följande kodexempel visar hur man skapar ett XBRL-instansdokument och lägger till schemareferens i Python.

# Detta kodexempel visar hur man skapar ett XBRL-dokument och lägger till schemareferensobjekt
from aspose.finance.xbrl import XbrlDocument

# Sökvägen till dokumentkatalogen.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Skapa XBRL-dokument
xbrlDoc = XbrlDocument()

# Få insamling av dokumentinstanser
xbrlInstances = xbrlDoc.xbrl_instances

# Lägg till instans i samlingen
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Hämta instansschemareferenssamling
schemaRefs = xbrlInstance.schema_refs

# Lägg till schema
schemaRefs.add(inputSchemaFile, "example", "http://example.com/xbrl/taxonomy")

# Spara dokumentet
xbrlDoc.save(outputFile)

Lägg till kontext i XBRL med Python

Vi kan lägga till ett sammanhang till ett XBRL-instansdokument genom att följa stegen nedan:

  1. Skapa först en instans av klassen XbrlDocument.
  2. Lägg sedan till en ny XBRL-instans till XbrlDocument-objektets xbrlinstances.
  3. Skapa sedan en instans av klassen ContextPeriod med start- och slutdatum.
  4. Skapa sedan ett ContextEntity-objekt med schema och identifierare.
  5. Skapa sedan en instans av klassen Context med den definierade ContextPeriod och ContextEntity.
  6. Efter det lägger du till Context-objektet i kontextsamlingen.
  7. Slutligen, spara XBRL-filen med hjälp av save(string)-metoden.

Följande kodexempel visar hur man skapar ett XBRL-instansdokument och lägger till ett kontextobjekt i Python.

# Detta kodexempel visar hur man skapar ett XBRL-dokument och lägger till Context-objekt
from datetime import datetime
from aspose.finance.xbrl import XbrlDocument,ContextPeriod,ContextEntity,Context

# Sökvägen till dokumentkatalogen.
outputFile = "C:\\Files\\document.xbrl"

# Skapa XBRL-dokument
xbrlDoc = XbrlDocument()

# Få insamling av dokumentinstanser
xbrlInstances = xbrlDoc.xbrl_instances

# Lägg till instans i samlingen
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Lägg till kontextperiod
contextPeriod = ContextPeriod(datetime(2020,1,1), datetime(2020,2,10))

# Lägg till kontextenhet
contextEntity = ContextEntity("exampleIdentifierScheme", "exampleIdentifier")

# Definiera och lägg till sammanhang
context = Context(contextPeriod, contextEntity)
xbrlInstance.contexts.append(context)

# Spara dokumentet
xbrlDoc.save(outputFile)

Skapa enheter i XBRL med Python

Enheterna i XBRL mäter numeriska objekt. Vi kan lägga till en enhet i ett XBRL-instansdokument genom att följa stegen nedan:

  1. Skapa först en instans av klassen XbrlDocument.
  2. Lägg sedan till en ny XBRL-instans till XbrlDocument-objektets xbrlinstances.
  3. Skapa sedan en instans av klassen Unit med UnitType som MEASURE.
  4. Lägg sedan till QualifiedName i samlingen measurequalifiednames.
  5. Efter det lägger du till enheten i enhetssamlingen.
  6. Slutligen, spara XBRL-filen med hjälp av save(string)-metoden.

Följande kodexempel visar hur man skapar en XBRL-fil och lägger till ett enhetsobjekt i Python.

# Detta kodexempel visar hur man skapar ett XBRL-dokument och lägger till Unit-objekt
from aspose.finance.xbrl import XbrlDocument,Unit,QualifiedName,UnitType

# Sökvägen till dokumentkatalogen.
outputFile = "C:\\Files\\document.xbrl"

# Skapa XBRL-dokument
xbrlDoc = XbrlDocument()

# Få insamling av dokumentinstanser
xbrlInstances = xbrlDoc.xbrl_instances

# Lägg till instans i samlingen
xbrlInstance = xbrlInstances[xbrlInstances.add()]

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

# Spara dokumentet
xbrlDoc.save(outputFile)

Lägg till faktaobjekt i XBRL med Python

Fakta i XBRL definieras med hjälp av artikelelement. En post i XBRL innehåller värdet av det enkla faktumet och en referens till sammanhanget för att korrekt tolka det faktumet. Vi kan lägga till ett objekt i ett XBRL-instansdokument genom att följa stegen nedan:

  1. Skapa först en instans av klassen XbrlDocument.
  2. Lägg till en ny XBRL-instans till XbrlDocument-objektets xbrlinstances.
  3. Lägg till en ny schemareferens till XbrlInstance-objektets schemarefs.
  4. Få SchemaRef genom dess index från schemarefs.
  5. Initiera Context-instansen och lägg till den i kontextsamlingen.
  6. Definiera en enhetsinstans och lägg till den i enhetssamlingen.
  7. Skapa en Concept-klassinstans med metoden getconceptbyname().
  8. Skapa en instans av klassen Item med Concept-objektet som argument.
  9. Ställ in objektegenskaper som contextref, unitref, precision, value, etc.
  10. Lägg sedan till objektet i faktasamlingen.
  11. Spara slutligen XBRL-filen med metoden save(string).

Följande kodexempel visar hur man lägger till ett fakta som ett objektelement i ett XBRL-instansdokument med Python.

# Detta kodexempel visar hur man skapar ett XBRL-dokument och lägger till objektobjekt
from datetime import datetime
from aspose.finance.xbrl import XbrlDocument,ContextPeriod,ContextEntity,Context,Unit,UnitType,QualifiedName,Item

# Sökvägen till dokumentkatalogen.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Skapa XBRL-dokument
xbrlDoc = XbrlDocument()

# Få insamling av dokumentinstanser
xbrlInstances = xbrlDoc.xbrl_instances

# Lägg till instans i samlingen
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Hämta instansschemareferenssamling
schemaRefs = xbrlInstance.schema_refs

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

# Lägg till sammanhang
contextPeriod = ContextPeriod(datetime(2020,1,1), datetime(2020,2,10))
contextEntity = ContextEntity("exampleIdentifierScheme", "exampleIdentifier")
context = Context(contextPeriod, contextEntity)
xbrlInstance.contexts.append(context)

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

# Lägg till vara
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)
    
# Spara dokumentet
xbrlDoc.save(outputFile)

Vi kan lägga till en fotnotslänk i ett XBRL-instansdokument genom att följa stegen nedan:

  1. Skapa först en instans av klassen XbrlDocument.
  2. Lägg till en ny XBRL-instans till XbrlDocument-objektets xbrlinstances.
  3. Lägg till en ny schemareferens till XbrlInstance-objektets schemarefs.
  4. Få SchemaRef genom dess index från schemarefs.
  5. Initiera Context-instansen och lägg till den i kontextsamlingen.
  6. Definiera en fotnotsklassinstans och ställ in dess etikett och text.
  7. Initiera Locator-typ med hjälp av Loc-klassinstansen.
  8. Definiera FootnoteArc-objekt med Locator-etikett och Footnote-etikett som argument.
  9. Skapa en instans av klassen FootnoteLink.
  10. Lägg till Footnote, Locator och FootnoteArc till relevanta samlingar.
  11. Lägg sedan till fotnotslänken till samlingen av fotnotslänkar.
  12. Spara slutligen XBRL-filen med metoden save(string).

Följande kodexempel visar hur man lägger till en fotnotslänk i ett XBRL-instansdokument med Python.

# Detta kodexempel visar hur man skapar ett XBRL-dokument och lägger till Footnote Link-objekt
from datetime import datetime
from aspose.finance.xbrl import XbrlDocument,ContextPeriod,ContextEntity,Context,FootnoteLink,Footnote,Loc,FootnoteArc

# Sökvägen till dokumentkatalogen.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Skapa XBRL-dokument
xbrlDoc = XbrlDocument()

# Få insamling av dokumentinstanser
xbrlInstances = xbrlDoc.xbrl_instances

# Lägg till instans i samlingen
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Hämta instansschemareferenssamling
schemaRefs = xbrlInstance.schema_refs

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

# Lägg till sammanhang
contextPeriod = ContextPeriod(datetime(2020,1,1), datetime(2020,2,10))
contextEntity = ContextEntity("exampleIdentifierScheme", "exampleIdentifier")
context = Context(contextPeriod, contextEntity)
xbrlInstance.contexts.append(context)

# Lägg till fotnot
footnote = Footnote("footnote1")
footnote.text = "Including the effects of the merger."

# Lägg till plats
loc = Loc("#cd1", "fact1")

# Definiera fotnotsbåge
footnoteArc = FootnoteArc(loc.label, footnote.label)

# Lägg till fotnotLink
footnoteLink = FootnoteLink()
footnoteLink.footnotes.append(footnote)
footnoteLink.locators.append(loc)
footnoteLink.footnote_arcs.append(footnoteArc)
xbrlInstance.footnote_links.append(footnoteLink)
    
# Spara dokumentet
xbrlDoc.save(outputFile)

Infoga rollreferens i XBRL med Python

Vi kan lägga till en rollreferens i ett XBRL-instansdokument genom att följa stegen nedan:

  1. Skapa först en instans av klassen XbrlDocument.
  2. Lägg till en ny XBRL-instans till XbrlDocument-objektets xbrlinstances.
  3. Lägg till en ny schemareferens till XbrlInstance-objektets schemarefs.
  4. Få SchemaRef genom dess index från schemarefs.
  5. Hämta sedan RoleType från metoden getroletypebyuri() .
  6. Skapa sedan en instans av klassen RoleReference med RoleType-objektet som argument.
  7. Efter det lägger du till RoleReference till rollereferences-samlingen.
  8. Slutligen, spara XBRL-filen med hjälp av save(string)-metoden.

Följande kodexempel visar hur man lägger till en rollreferens i ett XBRL-instansdokument med Python.

# Det här kodexemplet visar hur man skapar ett XBRL-dokument och lägger till ett rollreferensobjekt
from aspose.finance.xbrl import XbrlDocument,RoleReference

# Sökvägen till dokumentkatalogen.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Skapa XBRL-dokument
xbrlDoc = XbrlDocument()

# Få insamling av dokumentinstanser
xbrlInstances = xbrlDoc.xbrl_instances

# Lägg till instans i samlingen
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Hämta instansschemareferenssamling
schemaRefs = xbrlInstance.schema_refs

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

# Få rolltyp
roleType = schema.get_role_type_by_uri("http://abc.com/role/link1")

# Lägg till rollreferens
if roleType is not None:
    roleReference = RoleReference(roleType)
    xbrlInstance.role_references.append(roleReference)

# Spara dokumentet
xbrlDoc.save(outputFile)

Lägg till Arc Roll Reference till XBRL i Python

Vi kan lägga till en Arc-rollreferens i ett XBRL-instansdokument genom att följa stegen nedan:

  1. Skapa först en instans av klassen XbrlDocument.
  2. Lägg till en ny XBRL-instans till XbrlDocument-objektets xbrlinstances.
  3. Lägg till en ny schemareferens till XbrlInstance-objektets schemarefs.
  4. Få SchemaRef genom dess index från schemarefs.
  5. Hämta sedan RoleType från metoden getarcroletypebyuri() .
  6. Skapa sedan en instans av klassen ArcroleReference med RoleType-objektet som argument.
  7. Efter det lägger du till ArcroleReference i samlingen arcrolereferences.
  8. Slutligen, spara XBRL-filen med hjälp av save(string)-metoden.

Följande kodexempel visar hur man lägger till en bågrollreferens i ett XBRL-instansdokument med Python.

# Det här kodexemplet visar hur man skapar ett XBRL-dokument och lägger till Arc Role-referensobjekt
from aspose.finance.xbrl import XbrlDocument,ArcroleReference

# Sökvägen till dokumentkatalogen.
outputFile = "C:\\Files\\document.xbrl"
inputSchemaFile = "C:\\Files\\schema.xsd"

# Skapa XBRL-dokument
xbrlDoc = XbrlDocument()

# Få insamling av dokumentinstanser
xbrlInstances = xbrlDoc.xbrl_instances

# Lägg till instans i samlingen
xbrlInstance = xbrlInstances[xbrlInstances.add()]

# Hämta instansschemareferenssamling
schemaRefs = xbrlInstance.schema_refs

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

# Få rolltyp
roleType = schema.get_role_type_by_uri("http://abc.com/role/link1")

# Lägg till rollreferens
if roleType is not None:
    arcroleReference = ArcroleReference(roleType)
    xbrlInstance.arcrole_references.append(arcroleReference)

# Spara dokumentet
xbrlDoc.save(outputFile)

Skaffa en gratis licens

Du kan få en gratis tillfällig licens för att prova biblioteket utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har vi lärt oss hur man skapar ett XBRL-dokument med Python. Vi har också sett hur man lägger till olika XBRL-objekt till det skapade XBRL-instansdokumentet programmatiskt. Dessutom kan du lära dig mer om Aspose.Finance för Python API med hjälp av dokumentationen. I händelse av oklarheter, vänligen kontakta oss på vårt forum.

Se även