Faq/General/045/da
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
LibreOffice og XML
Du har uden tvivl ofte hørt om XML, hørt at LibreOffices filformat er XML, men hvad er det præcis, hvad betyder det, og hvad er XML i den sidste ende?
Hvad er XML?
Dette akronym står for eXtensible Markup Language (udvidelsesbart opmærkningssprog).
XML er en del af klassen metasprog, faktisk et undersæt af SGML. Okay, hvad er så SGML (Standard Generalized Markup Language – standard generaliseret opmærkningssprog)? Det er et sprog, der lader dig oprette strukturerede og modulære dokumenter, Konkret betyder det, at du kan oprette et dokument med så forskellige data som lyd, data fra en database eller tekst og billeder. SGML er blevet defineret til en bred vifte af applikationer og vil vil holde på meget lang sigt. Dette sprog er meget udstrakt og komplekst, XML blev skabt for at forenkle SGML.
Hvad der i starten kan være meget forvirrende er, at HTML ligner XML meget. Det er et sprog med mærker, der åbner og lukker. Den store forskel er imidlertid, at HTML blev defineret med mærker, der beskriver præsentationen, mens XML-mærker handler om indholdet. Men ja, HTML er et undersæt af SGML, men kun til at behandle data på nettet.
Kort og godt: XML er en klar måde (og ikke et programmeringssprog eller et nyt HTML) at strukturere, beskrive og udveksle data på. Indholdet og layoutet er adskilt for at tillade udvekslingen. Indholdet kan så genbruges i andre formularer eller andre medier: Data kan være af enhver art: kemiske formler, finansielle data, musikdata, tekst ...
Et eksempel på xml-indhold i et LibreOffice-dokument:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE office:document-meta PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "office.dtd"> <office:meta> <meta:generator>LibreOffice/3.3$Win32 LibreOffice_project/330m18$Build-4</meta:generator> <meta:initial-creator>Sophie Gautier</meta:initial-creator> <meta:creation-date>2011-01-12T19:07:36</meta:creation-date> <meta:document-statistic meta:table-count="0" meta:image-count="31" meta:object-count="0" meta:page-count="17" meta:paragraph-count="213" meta:word-count="2647" meta:character-count="16353"/> </office:meta>
Du kan se, at mærkerne <> kendetegner dokumentindholdet. Et åbent mærke skal altid lukkes:
<office:meta>
vil blive afsluttet af
</office: meta>
For at indsætte information i dokumentet, giver vi det attributter, altid fulgt af en værdi meta:page-count="17"
. Attributten meta:page-count
har værdien "17"
(dokumentet har 17 sider). Vi kan også sætte kommentarer som denne:
Hvorfor XML?
Hvis du kigger på XML-stumpen ovenfor, er nogle ting, der overrasker:
- XML er læseligt for dig selv, men også for maskinen. Det er en af dets store fordele.
- Det er Unicode (Unicode: et unikt tal, der er defineret for ethvert tegn, uanset platform, sprog og program). Det betyder, at det kan lagres i forskellige kodning. Hvad er forskellen? Du ved formentlig, at dokumenter blev (og stadig er) indkodet i ASCII, men det forholder sig kun til et alfabet og et skriftsystem. Kodefragmentet viser en UTF-8-indkodning, som understøttes af mange alfabeter.
- XML er objekt-orienteret: I stedet for at nedbryde data til normaliserede tabeller sammenkædet med relationer, beskriver det objekter (konkrete and abstrakte) ved at modellere deres egenskaber, som de er, hvilket gør XML- dokumenter mere intuitive at forstå.
- Endelig skelner XML mellem indhold og layout, data-layoutet bliver arrangeret af tredjeparts-sprog såsom CSS, XSL ...
- XML giver lave omkostninger mht. software-komponenter, heraf dets succesfyldte integration i IT-branchen.
XML i LibreOffice
Og hvordan ser du, at LibreOffice er XML? LibreOffice har et medfødt komprimeret .xml-format. Det betyder, at filerne, som udgør dit LibreOffice-dokument er indkapslet i et arkiv. Et eksempel: tag dit favorit dekomprimeringsværktøj (se Hvilket filformat bruger LibreOffice?) og åbn en vilkårlig LibreOffice-fil. Du vil se en samling af forskellige filer, hvoraf nogle har .xml-udvidelse.
Hvilket LibreOffice modul bruger XML?
Alle LibreOffice moduler bruger XML som sit medførte filformat. Math-modulet bruger en lidt anderledes pakkestruktur, men med noget xml inde i pakken: MathML er en XML-standard til formler. Nogle konfigurationsfiler bruger også XML. Disse filstrukturer vil altid være der:
meta.xml
indeholder information om dokumentet (forfatter, dato for seneste sikkerhedskopi).styles.xml
indeholder de typografier, der bruges i dokumentetContent.xml
indeholder hoveddokumentets indhold (tekst, billeder, grafik... )Settings.xml
er sædvanligvis specifikt for et program og indeholder nogle parametre såsom den valgte printer...META-INF/manifest.xml
indeholder supplerende information om andre filer (såsom MIME-typen eller indkodningen).
Billeder gemmes i deres medfødte format inde i zip-filen. Nu forstår du, hvorfor LibreOffice-filer optager så lidt plads på din harddisk!
Lær mere om LibreOffices filformater på webstedet http://xml.openoffice.org.
Bemærk, at et XML-dokument ikke kan vises, som det er, det har brug for et transformationssprog (XSLT) og et formateringssprog til objekter (XSL-FO) for at være i stand til at vise informationen korrekt (fx need: hvis dit dokument sammensat af forskellige dele, der er organiseret hver for sig eller hvis det indeholder en tabel med formatering ...)
DTD, XML schema, XSLT... hvad er det?
DTD Document Type-definition
DTD'en vil specificere, hvilke elementer og attributter, der vil blive brugt i XML-dokumentet og vil beskrive dets struktur og indhold. DTD'en kan være internt i dokumentet (definitionerne er indeholdt i selve dokumentet) eller eksternt (det er placeret i en lokal fil eller kaldes af en URL). XML-standarden bemyndiger ikke DTD'en, og vi taler om et XML-dokument, hvis det har et gyldigt DTD eller et velformet XML-dokument, hvis det ikke indeholder den (men respekterer XML-standarden).
Indholdseksempel fra en LibreOffice DTD
Opregner de oprindelige forfattere af denne formular (med initial="true"). Initial Writers er et udtryk fra PDL (License). Hvis en af disse forfattere overdrog copyrighten til nogen anden fx firmaet, de arbejder for, bruger de attributten copyright="..." Og nævner indehaveren af copyrighten. --> <!ELEMENT authors ( author+ ) > <!ELEMENT author (#PCDATA)> <!ATTLIST author id ID #REQUIRED initial CDATA #IMPLIED email CDATA #REQUIRED> <!--
XML-skema
Et skema definerer også strukturen i et XML-dokument; det er imidlertid mere fleksibelt end en DTD til at definere elementtyper. Det bruger det erhvervede DTD til at definere modellerne. Skemaer er underlagt en W3C-specifikation.
XSLT : eXtensible Style Language Transformation
Det er programmeringssprog til at transformere XML-dokumenter til andre formularer såsom RTF, HTML or PDF, osv.. Dette sprog er deklarativt og ikke-proceduralt (ingen algoritme), hvilket gør det lettere for ikke-udviklere at gå til. Det er selv skrevet i XML, det kan genfortolkes. XSLT transformerer faktisk XML-træet til regler for modeller, der beskriver et typografi-ark. Det sammenlignes ofte med CSS, fordi det lige som CSS producerer sådanne regler, fordi rækkefølgen af disse regler i dokumentet ikke betyder noget og det har også forrang, når flere regler kan anvendes. Forskellen er, at hvis en CSS er tom, vil det ikke påvirke det html-genererede dokument, det vil simpelthen blive ignoreret som bare et layout, mens XSLT'en vil generere et tomt dokument (det er faktisk ikke helt rigtigt, fordi specifikationen har defineret interne regler, der stadig findes, så dokumentet er aldrig rigtig tomt :-). Et meget godt sted, der er fuldt af ressourcer og XSLT-filtre til brug i LibreOffice: http://www.maxopeninfo.com/
XPATH
Dette er det deklarative sprog, der er forbundet med XSLT, der tillader definition af stiplacering inde i XML-træet.
XSL-FO: eXtensible Style Language for Formating Object
Sproget til at definere præsentationen af generiske objekter (såsom lister, tabeller …) og ofte bruges til PDF-output. Det kommer efter en XSLT-transformation og tillader en visuel fortolkning af de behandlede objekter.
OASIS
Oasis (Organisation for the Advancement of Structured Information Standard) er et globalt konsortium, der driver udviklingen, konvergensen og adoptionen af standarder for e-handel. Derfor definerer den XML-standarden. Denne definition er baseret på LibreOffices filformater, der er åbne og konsistente med en offentliggjort DTD. Mere information kan findes her: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office
LibreOffices filformat er det samme som OpenOffice.org's og bruges også af [1] [2], Symphony Docs, [3].