Ganska nyligen hände det igen: Jag fick ett dokument med filändelsen .docx som förmodligen var skrivet med hjälp av någon variant av Microsoft Word ordbehandlare. Jag öppnade dokumentet i min LibreOffice ordbehandlare. Det såg först rätt bra ut. Men, så såg jag att dokumentet hos mig hade fyra sidor men författaren hade bara skrivit tre sidor. Så sista sidan hos mig var numrerad som sida 4 (3). Det blev alltså fel.
Först blev jag irriterad för jag tänkte att .docx är ett hemligt format från Microsoft. Men vid lite grottande så insåg jag att det faktiskt är ett standardiserat dokumentformat. Standarden kallas OOXML, Office Open XML.
Vidare, XML, Extensible Markup LanguageXML, Extensible Markup Language, används till allt möjligt. En fin grej med XML är att en sådan fil går att öppna i en ren texteditor och går att läsa begripligt för en människa. Dock så är det lite jobbigt att läsa eftersom texten också innehåller taggarna skrivet som <tagg> där den börjar och </tagg> där den slutar. Taggen talar om vad det är för information som följer. Det påminner i sitt utseende om till exempel html som är ett grundspråk för webbsidor.
Efter lite mer funderande så tror jag att fonterna var ett bidragande skäl till att dokumentet inte fick plats när jag öppnade dokumentet. Jag gjorde en snabbkoll, och jag hade inte alla fonter installerade hos mig som användes av författaren. Och många fonter är som jag förstår en aning olika stora, tar lite olika mycket plats, om det inte är en monospaced font. Har man inte en använd font installerad, så ersätts den med en annan font bland dem man själv har i sin ordbehandlare.
Jag bollade lite om detta med OOXML-standarden på mikrobloggen Mastodon i denna tråd, tack alla. Någon där menade att OOXML-standarden är ganska dåligt standardiserat, att den rymmer stort utrymme för tolkning. Det kan därmed vara en källa till att olika mjukvara tolkar detaljer i standarden olika, och till exempel Microsoft Word och Libre Office Writer tolkar standarden i detaljer olika vilket leder till att det blir olika i till exempel formatering. Detta förutom det jag skrev ovan om fonter.
Microsoft utvecklade OOXML, och en på Mastodon menade att en bidragande orsak till att de standardiserade OOXML och inte behöll det helt för sig själv var att Gov.uk 2018 skrev Using Open Document Formats (ODF) in your organisation.
ODF, Open Document Format, är alltså en annan standard. Den har sina rötter i Sun Microsystems specifikation för OpenOffice. OpenOffice har sin bakgrund i tyska StarOffice, som Sun Microsystems köpte. Sun är numera uppköpt av Oracle. Det är lite rörigt med alla turer och relationen mellan StarOffice och OpenOffice, men förenklat tror jag jag kan säga att StarOffice (en tid efter det att Sun köpt det och vidareutvecklat det) både innehäll öppen källkod och proprietär kod medan OpenOffice var enbart öppen källkod. Numera hittar man OpenOffice hos OpenOffice.org som Apache OpenOffice. Jag använde OpenOffice under väldigt många år, och som jag minns även StarOffice innan dess, efter att Sun köpt den och gjort den gratis. På senare år har dock utvecklingsarbetet av OpenOffice stannat av och går på lågvarv. Sedan några år har det istället startats en ny kontorssvit som grundats på OpenOffice (som ju har öppen källkod) kommit igång, och den heter LibreOffice. LibreOffice har väldigt livaktig utveckling, bygger alltså på fri och öppen källkod och är helt fritt att använda på Windows, macOS och Linux. Personligen använder jag sedan många år alltid ODF för egna dokument.
ODF-standarden har alltså sina rötter i Suns arbete och LibreOffice är den programvara som är närmast rötterna idag till denna standard på liknande vis som Word har de närmaste rötterna till OOXML. Men, bägge är alltså öppna standarder och i teorin ska fungera lika bra på alla kontorsprogram som följer standarden.
Jag skrev ovan att någon menade att det är si och så med hur bra OOXML är standardiserad. Jag har dock ingen faktamässig rapport att referera till för att belägga detta. Inte heller har jag någon faktamässig rapport om hur bra eller dåligt ODF är standardiserad eller hur bra olika kontorsprogram implementerat standarden.
Både OOXML-standarden och ODF-standarden är för flera typer av "office-dokument", dvs bland annat för textdokument och kalkylblad.
Jag roade mig med att skriva ett superenkelt textdokument i LibreOffice Writer 7.4.7.2 på min Linuxdator (operativsystemet Linux Mint Debian Edition; LMDE 6 Faye, base: Debian 12.1 Bookworm). Dokumentet består av några rader text med ett par olika fonter och sedan en jpg-bild. Inget huvud, fot, rubriker, innehållsförteckning osv. Först skrev jag det i .odt-format som är för ODF. Sedan skrev jag ett näst intill likadant dokument och skrev det i .docx-format som är för OOXML.
När jag gjorde detta grottande i standarderna fick jag insikten att bägge använder sig av en komprimerad folder, som i sig innehåller en mängd foldrar och filer. Filerna är till stor del i xml-format, medan bilderna är i till exempel jpg-format. När man ser till exempel orddokument som heter hejsan.docx, så ser det ut som en fil. Men med en filhanterare så kan man extrahera denna "fil" som alltså egentligen är en komprimerad folder.
Nedan är en jämförelse mellan dessa två extraherade filer i OOXML respektive ODF. Om dokumentet hade varit mer komplicerat, hade det funnits mer i dem. Men detta ger i alla fall en uppfattning över hur de är organiserade.
Jag borde kanske inte blivit förvånad, men det var lite av en aha-upplevelse att vanliga dokument är uppbyggda på detta vis.
Filstruktur för exempeldokument i OOXML (.docx) respektive ODF (.odt).
Henrik Hemrin
12 mars 2025
Comments powered by CComment