OpenDocument technical specification: Difference between revisions

Content deleted Content added
m E.g. ndash and: "is not widely used. [paragraph break meant?] According to the OpenDocument 1.0 specification". "control over the Sound"-> lower case.
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
 
(42 intermediate revisions by 29 users not shown)
Line 1:
{{lead rewrite|date=August 2011}}
{{OpenDocument}}
This documentarticle describes the '''technical specifications of the [[OpenDocument]] office document standard''', as developed by the [[OASIS (organization)|OASIS]] industry consortium. A variety of organizations developed the standard publicly and make it publicly accessible, meaning it can be implemented by anyone without restriction. The OpenDocument format aims to provide an open alternative to [[proprietary format|proprietary]] document formats.
 
=== Document representation= ==
This document describes the '''technical specifications of the [[OpenDocument]] office document standard''', as developed by the [[OASIS (organization)|OASIS]] industry consortium. A variety of organizations developed the standard publicly and make it publicly accessible, meaning it can be implemented by anyone without restriction. The OpenDocument format aims to provide an open alternative to [[proprietary format|proprietary]] document formats.
 
==File types==
 
===Document representation===
The OpenDocument format supports the following two ways of document representation:
 
* As a '''collection of several sub-documents within a package''', each of which stores part of the complete document. This is the common representation of OpenDocument documents. It uses filename extensions such as <code>.odt</code>, <code>.ott</code>, <code>.ods</code>, <code>.odp</code> ... etc. The package is a standard [[ZIP (file format)|ZIP file]] with different filename extensions and with a defined structure of sub-documents. Each sub-document within a package has a different document root and stores a particular aspect of the XML document. All types of documents (e.g. text and spreadsheet documents) use the same set of document and sub-document definitions.
* As a '''single XML document''' – also known as ''Flat XML'' or ''Uncompressed XML Files''. Single OpenDocument XML files are not widely used,{{citation needed|date=December 2014}} they are also unsupported on some office software which claims to support ODF (Microsoft Office applications version 2007 to 2013 don'tdo not recognize them). Filename extensions for a single OpenDocument XML documents are not defined in the OpenDocument technical specification, but commonly used are <code>.xml</code>, <code>.fodt</code>,<ref>{{cite web |url=http://www.ensode.net:80/roller/dheffelfinger/entry/openoffice_documents_version_control_with |titlearchive-url=OpenOfficehttps://web.archive.org Document Version Control With Mercurial |accessdate=2010-06-07}}</ref><ref>{{cite web |url=/20171125144435/http://userwww.servicesensode.openoffice.orgnet/enroller/forumdheffelfinger/viewtopic.php?fentry/openoffice_documents_version_control_with |url-status=15&tdead |archive-date=111032017-11-25 |title=FlatOpenOffice.org OpenDocumentDocument fodtVersion onControl WindowsWith Mercurial |accessdate=2010-06-07 }}</ref> <code>.fods</code>, ... etc.
 
The recommended filename extensions and [[MIME]] types are included in the official standard (OASIS, May 1, 2005, and its later revisions or versions). The MIME types and extensions contained in the ODF specification are applicable only to office documents that are contained in a package. Office documents that conform to the OpenDocument specification but are not contained in a package should use the MIME type text/xml.
 
The MIME type is also used in the <code>office:mimetype</code> attribute. It is very important to use this attribute in flat XML files/single XML documents, where this is the only way the type of the document can be detected (in a package, the MIME type is also present in a separate file ''mimetype''). Its values are the MIME types that are used for the packaged variant of office documents.
 
=== Documents= ==
The most common file extensions used for OpenDocument documents are <code>.odt</code> for text documents, <code>.ods</code> for spreadsheets, <code>.odp</code> for presentation programs, and <code>.odg</code> for graphics. These are easily remembered by considering ".od" as being short for "OpenDocument", and then noting that the last letter indicates its more specific type (such as t for text).
Here is the complete list of document types, showing the type of file, the recommended file extension, and the [[MIME]] Type:
 
{| class="wikitable"
|- bgcolor="#cccccc"
! File type
! Extension
Line 67 ⟶ 62:
|1.0
|-
|rowspan=3|Database
|rowspan=3|.odb
|application/vnd.sun.xml.base<ref>{{citation |url=http://dlc.sun.com/osol/jds/downloads/sources/defaults.list |title=MIME types - OpenSolaris Default Applications |accessdate=2010-06-06 |url-status=dead |archiveurl=https://web.archive.org/web/20110716163416/http://dlc.sun.com/osol/jds/downloads/sources/defaults.list |archivedate=2011-07-16 }}</ref><ref>{{citation |url=http://extension.nirsoft.net/odb |title=.odb Extension - List of programs that can open .odb files |accessdate=2010-06-06}}</ref>
|not defined in ODF 1.0/1.1 specifications;<br>used in OpenOffice.org 2.x
|-
|Database
|.odb
|application/vnd.oasis.opendocument.base
|ODF 1.2;<br>used in OpenOffice.org 3.x
|-
|Database
|.odb
|application/vnd.oasis.opendocument.database
|defined in [httphttps://www.iana.org/assignments/media-types/application/vnd.oasis.opendocument.database IANA registration]
|-
|all OpenDocument single/flat XML files
Line 88 ⟶ 79:
|}
 
=== Templates= ==
OpenDocument also supports a set of template types. Templates represent formatting information (including styles) for documents, without
the content themselves. The recommended filename extension begins with ".ot" (interpretable as short for "OpenDocument template"), with the last letter indicating what kind of template (such as "t" for text). The supported set includes:
 
{| class="wikitable"
|- bgcolor="#cccccc"
! File type
! Extension
Line 177 ⟶ 167:
The OpenDocument format implements spreadsheets as sets of tables. Thus it features extensive capabilities for formatting the display of tables and spreadsheets. OpenDocument also supports database ranges, filters, and "data pilots" (known in Microsoft Excel contexts as "[[pivot table]]s"). Change tracking is available for spreadsheets as well.
 
The graphics format supports a vector graphic representation, in which a set of layers and the contents [https://web.archive.org/web/20051212150956/http://www.auton.nl/software/apps/adms/en/adms.html] of each layer is defined. Available drawing shapes include Rectangle, Line, Polyline, Polygon, Regular Polygon, Path, Circle, Ellipse, and Connector. 3D Shapes are also available; the format includes information about the Scene, Light, Cube, Sphere, Extrude, and Rotate (it is intended for use as for office data exchange, and not sufficient to represent videos or other extensive 3D scenes). Custom shapes can also be defined.
 
Presentations are supported. Users can include animations in presentations, with control over the sound, showing a shape or text, hiding a shape or text, or dimming something, and these can be grouped. In OpenDocument, much of the format capabilities are reused from the text format, simplifying implementations. However, tables are not supported within OpenDocument as drawing objects, so may only be included in presentations as embedded tables.
Line 195 ⟶ 185:
** Drawings
** Presentations
* Objects that do not have an XML representation. These objectsand only have a binary representation. An exampleExamples for thisthese kindkinds of objects are [[raster images]], recorded audios and videos, and [[Object Linking and Embedding|OLE]] objects. (<ref>According to the OpenDocument 1.0 specification, OLE is defined in ''Kraig Brockschmidt, Inside OLE, Microsoft Press, 1995, {{ISBN |1-55615-843-2}}''.)</ref>
 
Use of Microsoft Object Linking and Embedding (OLE) objects limits the interoperability, because these objects are not widely supported in programs for viewing or editing files (e.g. embedding of other files inside the file, such as tables or charts from a spreadsheet application in a text document or presentation file).<ref>{{cite web |url=httphttps://www.linux.com/archivenews/feedfoss-word-processors-compared-ooo-writer-abiword-and-kword/47307 |title=FOSS word processors compared: OOo Writer, AbiWord, and KWord |author=Bruce Byfield |date=2005-08-23 |accessdate=2010-04-06}}{{Dead link|date=September 2013}}</ref><ref>{{cite web |url=http://www.linux.com/archive/feed/46599 |title=Sharing files between OpenOffice.org and Microsoft Office |date=2005-07-28 |accessdate=2010-04-06 |url-status=dead |archiveurl=https://web.archive.org/web/20100204134005/http://www.linux.com/archive/feed/46599 |archivedate=2010-02-04 }}</ref><ref>{{cite web |url=httphttps://www.linux.com/archivenews/featuresoftmaker-office-2008-focuses-compatibility-microsoft-office/153229 |title=SoftMaker Office 2008 focuses on compatibility with Microsoft Office |date=2008-11-20 |accessdate=2010-04-06}}</ref><ref>{{cite web |url=httphttps://www.linux.com/archivenews/feedsoftmaker-office-2006-beta-not-killer-app/58330 |title=SoftMaker Office 2006 beta: Not a killer app |date=2006-11-21 |accessdate=2010-04-06 }}</ref><ref>{{citation |url=http://pacsec.jp/psj06/psj06lagadec-e.pdf |format=PDF |title=OpenOffice / OpenDocument and Microsoft Office 2007 / Open XML security |author=Philippe Lagadec |date=2006-11-30 |accessdate=2010-04-06 |archive-date=2011-07-22 |archive-url=https://web.archive.org/web/20110722122720/http://pacsec.jp/psj06/psj06lagadec-e.pdf |url-status=dead }}</ref> If a software that understands an OLE object is not available, the object is usually replaced by a picture (bitmap representation of the object) or not displayed at all.<ref>{{cite web |url=http://www.keyongtech.com/2560234-ole-object-bitmap-representation |title=OLE object - bitmap representation? |accessdate=2010-04-06 |url-status=dead |archiveurl=https://web.archive.org/web/20110724111954/http://www.keyongtech.com/2560234-ole-object-bitmap-representation |archivedate=2011-07-24 }}</ref><ref>{{cite web |url=http://www.codeproject.com/KB/edit/COleRichEditCtrl.aspx |title=A Rich Edit Control That Displays Bitmaps and Other OLE Objects |accessdate=2010-04-06}}</ref><ref>{{cite web |url=http://support.microsoft.com/kb/123151 |archive-url=https://web.archive.org/web/20091213042624/http://support.microsoft.com/kb/123151 |url-status=dead |archive-date=2009-12-13 |title=ACC: Why OLE Objects Cause Databases to Grow |date=2007-01-19 |accessdate=2010-04-29}}</ref>
 
===Formatting===
Line 212 ⟶ 202:
OpenDocument version 1.2 fully describes mathematical formulas displayable on-screen. It is fully capable of exchanging spreadsheet data, formats, [[pivot table]]s, and other information typically included in a spreadsheet. OpenDocument exchanges formulas as values of the attribute table:formula.
 
The allowed syntax of table:formula was not defined in sufficient detail in the OpenDocument version 1.0 specification, which defined spreadsheet formulas using a set of simple examples showing, for example, how to specify ranges and the SUM() function. The [[OASIS (organization)|OASIS]] OpenDocument Formula sub group therefore standardized the table:formula in the [[OpenFormula]] specification. For more information ''(see the [[OpenFormula]] article)''.
 
===Encryption===
When an OpenDocument file is password protected the file structure of the bundle remains the same, but contents of XML files in the package are encrypted using the following algorithm:
 
# The file contents are compressed with the [[DEFLATE]] algorithm.
# A checksum of a portion of the compressed file is computed (SHA-1 of the file contents, or SHA-1 of the first 1024 bytes of the file, or SHA-256 of the first 1024 bytes of the file) and stored, so password correctness can be verified when decrypting.
# A digest (hash) of the user -entered password in UTF-8 encoding is created and passed to the package component. ODF versions 1.0 and 1.1 only mandate support for the SHA-1 digest here, while version 1.2 recommends SHA-256.
# This digest is used to produce a derived key by undergoing [[key stretching]] with [[PBKDF2]] using HMAC-SHA-1 with a salt of arbitrary length (in ODF 1.2{{snd}}; it's 16 bytes in ODF 1.1 and below) generated by the random number generator for an arbitrary iteration count (1024 by default in ODF 1.2).
# The random number generator is used to generate a random initialization vector for each file.
# The initialization vector and derived key are used to encrypt the compressed file contents. ODF 1.0 and 1.1 use Blowfish in 8-bit cipher feedback mode, while ODF 1.2 considers it a legacy algorithm and allows [[Triple DES]] and [[Advanced Encryption Standard|AES]] (with 128, 196 or 256 bits), both in cipher block chaining mode, to be used instead.
 
==Format internals==
An OpenDocument file commonly consists of a standard [[ZIP (file format)|ZIP]] archive ([[JAR (file format)|JAR]] archive<ref>{{cite web |last=Sobhi |first=Ali |date=2007-08-14 |orig-date=August 2006 |title=Introduction to OpenDocument Format |publication-place=Armonk, New York, United States |publisher=[[IBM]] |url=http://www-03.ibm.com/able/resources/odfintro.html |titlearchive-url=Web https://web.archive.org/web/20080602152400/http://www-03.ibm.com/able/resources/odfintro.html & interesting links |url- easy and simple introduction to OpenDocument Format (ODF)status=dead |accessdatearchive-date=20102008-06-0702}}</ref>) containing a number of files and directories; but OpenDocument file can also consist only of a single XML document. An OpenDocument file is commonly a collection of several subdocuments within a (ZIP) ''package''. An OpenDocument file as a ''single XML'' is not widely used.
According to the OpenDocument 1.0 specification, the ZIP file specification is defined in ''Info-ZIP Application Note 970311, 1997''.<ref>{{cite web |url=http://tools.oasis-open.org/issues/browse/OFFICE-2205 |title=NEEDS-DISCUSSION: ZIP reference - N 1309 |accessdateaccess-date=2010-06-07}}</ref><ref>{{cite web |url=http://tools.oasis-open.org/issues/browse/OFFICE-2082 |title= Zip reference is neither public nor authoritative |date=2009-10-11 |accessdateaccess-date=2010-06-07}}</ref>
The simple compression mechanism used for a package normally makes OpenDocument files significantly smaller than equivalent Microsoft "<code>.doc</code>" or "<code>.ppt</code>" files. This smaller size is important for organizations who store a vast number of documents for long periods of time, and to those organizations who must exchange documents over low bandwidth connections. Once uncompressed, most data is contained in simple text-based XML files, so the uncompressed data contents have the typical ease of modification and processing of XML files. The standard also allows for the creation of a single XML document, which uses ''<office:document>'' as the root element, for use in document processing.
 
Line 253 ⟶ 243:
'''content.xml''', the most important file, carries the actual content of the document (except for binary data, such as images). The base format is inspired by HTML, and though far more complex, it should be reasonably legible to humans:
 
<sourcesyntaxhighlight lang="xml">
<text:h style-name="Heading_2">This is a title</text:h>
<text:p style-name="Text_body"/>
Line 261 ⟶ 251:
is a blank paragraph (an empty line).
</text:p>
</syntaxhighlight>
</source>
 
===styles.xml===
Line 277 ⟶ 267:
'''meta.xml''' contains the file metadata. For example, Author, "Last modified by", date of last modification, etc. The contents look somewhat like this:
 
<sourcesyntaxhighlight lang="xml">
<meta:creation-date>2003-09-10T15:31:11</meta:creation-date>
<dc:creator>Daniel Carrera</dc:creator>
Line 287 ⟶ 277:
image-count="2" word-count="16701"
character-count="98757"/>
</syntaxhighlight>
</source>
 
The names of the <dc:...> tags come from the [[Dublin Core]] XML standard.
Line 295 ⟶ 285:
 
===mimetype (file)===
'''mimetype''' is just a one-line file with the mimetype of the document. One implication of this is that the file extension is actually immaterial to the format. The file extension is only there for the benefit of the user. It is important to note that this special file is always the first file entry in the ZIP archive and it is uncompressed. Because the ZIP header uses fields with fixed lengths, this allows the direct identification of the different OpenDocument formats without decompression of the content (e. g. with magic bytes).
 
===Thumbnails (directory)===
'''Thumbnails''' is a separate folder for a document thumbnail. The thumbnail must be saved as “thumbnail.png”. A thumbnail representation of a document should be generated by default when the file is saved. It should be a representation of the first page, first sheet, etc. of the document. The required size for the thumbnails is 128x128 pixel. In order to conform to the [httphttps://standardsspecifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest/x142.html#AEN144 Thumbnail Managing Standard] (TMS) at www.freedesktop.org, thumbnails must be saved as 8bit, non-interlaced PNG image with full alpha transparency.
 
===META-INF (directory)===
Line 316 ⟶ 306:
 
==History==
* Version 1.0 became an OASIS Standard on 2005-05-01;<ref>
{{cite web
| url = http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office
| title = OASIS Open Document Format for Office Applications (OpenDocument) TC
| work = OASIS website
| publisher = OASIS
| accessdate = 20102024-0211-0826
| quote = Open Document = The OpenDocumentFormat v1.0 specification was approved as an OASIS Standard on 1 May 2005.
}}
</ref>
* Version 1.1 became an OASIS Standard on 2007-02-07;<ref>
{{cite web
| url = http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office#odf11
| title = OASIS Open Document Format for Office Applications (OpenDocument) TC
| title = OpenDocument v1.1 Specification
| work = OASIS website
| publisher = OASIS
| accessdate = 20102024-0211-0826
| quote = Open Document = The OpenDocumentFormat v1.1 specification was approved as an OASIS Standard on 2 February 2007.
}}
</ref>
* Version 1.2 became an OASIS Standard on 2011-09-29;<ref name="odf12">
{{cite web
| url = http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office
| title = OASIS Open Document Format for Office Applications (OpenDocument) TC
| work = OASIS website
| publisher = OASIS
| accessdate = 2024-11-26
| quote = Open Document Format v1.2 was approved as a OASIS Standard on 29 September 2011.
}}
</ref>
* Version 1.3 became an OASIS Standard on 2021-04-27.<ref>
{{cite web
| url = http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office
| title = OASIS Open Document Format for Office Applications (OpenDocument) TC
| work = OASIS website
| publisher = OASIS
| accessdate = 2024-11-26
| quote = Open Document Format for Office Applications (OpenDocument) Version 1.3 OASIS Standard was approved by the members of OASIS on 27 April 2021.
}}
</ref>
* Version 1.2 became an OASIS Standard on 2011-09-29<ref name="odf12">{{citation |url=http://www.oasis-open.org/news/pr/odf-1-2-approval |title=Members Approve OpenDocument Format (ODF) Version 1.2 as OASIS Standard |date=2011-10-05 |accessdate=2012-04-12}}</ref>
 
==Versions detection==
To indicate which version of the OpenDocument specification a file complies with, all root elements take an <code>office:version</code> attribute. The version number is (in the format ''revision.version'', (e.g.such as <code>office:version="1.1"). The <code>office:version</code>), attributewhich identifies the version of ODF specification that defined the associated element, its schema, its complete content, and its interpretation.
 
===ODF 1.0/1.1===
It is not mandatory to use <code>office:version</code> attribute in ODF 1.0 and ODF 1.1 files, so when an element has office:version omitted, the element is based on ODF 1.0 or 1.1. If the file has a version known to an XML processor, it may validate the document. Otherwise, it is optional to validate the document, but the document must be well formed. It is not mandatory to use <code>office:version</code> attribute in ODF 1.0 and ODF 1.1 files.
 
===ODF 1.2===
The <code>office:version</code> attribute shall be present in each and every <office:document>, <office:document-content>, <office:document-styles>, <office:document-meta>, and <office:document-settings> element in the XML documents that comprise an OpenDocument 1.2 document. The value of the office:version attribute shall be "1.2".
 
===ODF 1.2 and newer===
When an element has office:version="1.1" the element and its content are based on the OpenDocument v1.1 specification. For office:version="1.0" the element and its content are based on the OpenDocument v1.0 specification. When an element has office:version omitted, the element is based on a version of the OpenDocument specification earlier than v1.2. In these cases and in the case of values other than "1.2", the elements do not comprise an OpenDocument 1.2 document.<ref>{{cite web |url=http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1417682_253892949 |title=office:version attribute - OpenDocument Version 1.2, Part 1, 29 September 2011 |accessdate=2012-12-05}}</ref>
The <code>office:version</code> attribute shall be present in each and every <office:document>, <office:document-content>, <office:document-styles>, <office:document-meta>, and <office:document-settings> element in the XML documents that comprise an OpenDocument 1.2 or newer document. The value of the office:version attribute shall bereflect "1the OpenDocument version.<ref>{{cite web |url=https://docs.oasis-open.org/office/v1.2"/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1417682_253892949 |title=office:version attribute - OpenDocument Version 1.2, Part 1, 29 September 2011 |accessdate=2024-11-26}}</ref>
 
==Conformance==
Line 371 ⟶ 378:
==References==
{{Refbegin}}
* [https://wwwdocs.oasis-open.org/standards#opendocumentv1office/OpenDocument/v1.24/ OpenDocument 1.24 specification] in ODT, HTML and PDF formats
* [https://wwwdocs.oasis-open.org/standards#opendocumentv1office/OpenDocument/v1.13/ OpenDocument 1.13 specification] in ODT, HTML and PDF formats
* [https://wwwdocs.oasis-open.org/standards#opendocumentv1office/v1.02/ OpenDocument 1.02 specification] in ODT, HTML and PDF formatformats
* [https://docs.oasis-open.org/office/v1.1/ OpenDocument 1.1 specification] in ODT, HTML and PDF formats
* [https://docs.oasis-open.org/office/v1.0/ OpenDocument 1.0 specification] in PDF format
{{Refend}}
 
==External links==
* [https://web.archive.org/web/20060305030506/http://www.oooforum.org/forum/viewtopic.phtml?t=27452 Discussion of a Linux Shellshell Scriptscript forto reduce OpenDocument compactionfile sizes]
* [httphttps://www.iana.org/assignments/media-types/application/ Application Media Types] IANA.
* [httphttps://www.iso.org/isostandard/iso_catalogue/catalogue_tc/catalogue_detail45245.htm?csnumber=45245html Open Document Format (ISO/IEC 26300) / Office Open XML (ISO/IEC 29500) Translation Guidelines] - ISO/IEC PDTR 29166
 
{{DEFAULTSORT:Opendocument Technical Specification}}