1# DRAFT: Apache OpenOffice: ODF 1.3 implementation-defined values 2 3> **DRAFT. Work in progress, for discussion only.** This document has not been reviewed or approved by the Apache OpenOffice project and may change or be withdrawn. It is not an announcement, and it makes no claim that Apache OpenOffice conforms to ODF 1.3. 4 5 6ODF 1.3 Part 3 (section 2.3.1 B) and Part 2 (section 2.3.1 B) require a conforming producer to be accompanied by a document that defines the implementation-defined values it uses. Part 3 section 2.3.2 A asks the same of an extended producer, and section 2.3.2 B asks it to document the foreign elements and attributes it writes. This document does both for Apache OpenOffice. It describes the behaviour of the OpenOffice development source of 2026-10-30 and is to be updated for the release that carries the claim. 7 8It covers ODF 1.3 Part 2 (packages) and Part 3 (schema), OASIS Standard, 27 April 2021. Part 4 (the formula evaluator) is not claimed; see section 4. 9 10## 1. Conventions 11 12- **Strict** is the ODF 1.3 save mode. **Extended** is ODF 1.3 Extended. Unless an entry says otherwise, strict and extended behave the same. 13- "Implementation-dependent" items (which the specification does not require a producer to document) are listed too, marked (dep). 14- "Not produced" means OpenOffice never writes the construct; the entry then records only what the importer does. 15- Entries are keyed by the section number of the ODF 1.3 specification. Quotations are from that text. 16 17## 2. Part 3 values (schema) 18 19### 2.1 Package, metadata, settings, events (§3, §4, §14) 20 21| § | Requirement | AOO | 22|---|---|---| 23| 3.1.3.1 (dep) | "A package may also contain image files, embedded objects and implementation-dependent files." | Written in both modes: `Thumbnails/thumbnail.png` (only without password, not for embedded documents), `Configurations2/` (media type `application/vnd.sun.xml.ui.configuration`), `layout-cache` (Writer, with a view and more than one page), `Basic/` and `Dialogs/` (only when there is a library besides Standard, or Standard has content), `Pictures/`, `ObjectReplacements/`, `manifest.rdf`, signature files; `Scripts/` is created only by the scripting framework's own parcel installer, not by an ordinary save. On save, unknown sub-storages with a non-empty media type and a legacy `Configurations` storage are copied unchanged; unknown loose streams are dropped | 24| 3.1.3.5 (dep) | "contains implementation-dependent settings" | `office:settings` only when a setting exists, containing `config:config-item-set` named `ooo:view-settings` (with a `Views` indexed map), `ooo:configuration-settings` and, in Writer, `ooo:xforms-settings`. Item names are application property names. On import `ooo:view-settings` and `ooo:configuration-settings` go to the model, other `ooo:` sets are kept as document-specific groups, sets in other namespaces are ignored | 25| 3.11 | "A processing instruction with PITarget ... followed by the string cursor-position represents a text cursor position ... The string cursor-position may be followed by an arbitrary implementation-defined string." | Not produced; the importer ignores all processing instructions. Calc keeps the cursor in settings (`CursorPositionX/Y`) | 26| 3.16 | "Signatures other than document signatures are implementation-defined." | `META-INF/macrosignatures.xml` is written when macros are signed; same root and format as the document signature file; covers every file under `Basic/`, `Dialogs/`, `Scripts/`. The document signature also covers it, so adding a macro signature removes an existing document signature after a warning. `packagesignatures.xml` exists in the API only, never on the save path. Namespace `urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0` for a document of version 1.2 or newer, which includes 1.3 | 27| 4.1 (dep) | "The updating of multiple instances of the same metadata elements is implementation-dependent." | For single-valued elements AOO selects one occurrence (XPath `selectSingleNode`), updates it and keeps the others unchanged; `meta:keyword` and `meta:user-defined` are handled as full lists. The occurrence chosen is the first one the XPath engine returns, which is the first in document order; duplicates are not removed | 28| 4.3.1 | "The semantics of custom metadata elements is implementation-defined." | AOO never creates it. Foreign children and attributes of `office:meta` read from a document are written back in extended mode, with no meaning to AOO; strict mode drops them | 29| 14.5.3 | "Event types are implementation-defined." | A fixed table. Standard (all applications): `dom:click`, `dom:load`, `dom:unload`, `dom:select`, `dom:resize`, `dom:mouseover`, `dom:mouseout`, `dom:DOMFocusIn`, `dom:DOMFocusOut`, `dom:error`, plus `office:` insert-start, insert-done, mail-merge, alpha-char-input, non-alpha-char-input, move, page-count-change, load-error, load-cancel, load-done, start-app, close-app, new, save, save-as, print, load-finished, save-finished, modify-changed, prepare-unload, new-mail, toggle-fullscreen, save-done, save-as-done, copy-to, copy-to-done, view-created, prepare-view-closing, view-close, visarea-changed, create, save-as-failed, save-failed, copy-to-failed, title-changed, mode-changed, save-to, save-to-done, save-to-failed, subcomponent-opened, subcomponent-closed, storage-changed, mail-merge-finished, field-merge, field-merge-finished, layout-finished, dblclick, contextmenu, content-changed, calculated. Forms add `form:` approveaction, performaction, textchange, itemstatechange, mousedrag, approvereset, approveupdate, update, startreload, reload, startunload, confirmdelete, approverowchange, rowchange, approvecursormove, cursormove, supplyparameter, adjust, and `dom:` change, keydown, keyup, mousemove, mousedown, mouseup, reset, submit. Impress/Draw shape clicks always use `dom:click`. Names missing from the tables are dropped on write; on read an unknown name raises an error and the event is dropped. Calc sheet events (`dom:DOMFocusIn/Out`, `dom:select`, `office:dblclick`, `contextmenu`, `content-changed`, `calculated`) are written in **extended mode only**, inside `officeooo:event-listeners`. `dom` is `http://www.w3.org/2001/xml-events` | 30| 19.85.4 | "Implementation-defined values" (of `db:type` on `db:table-definition`) | Not produced (Base writes `db:table-representation`); `db:schema-definition` is read as the table collection and its `db:table-definition` children are ignored | 31| 19.322, 19.329, 19.332, 19.334, 19.335, 19.336, 19.339 (dep) | "The value of the meta:character-count attribute is implementation-dependent." (likewise `non-whitespace-character-count`, `page-count`, `row-count`, `sentence-count`, `syllable-count`, `word-count`) | Writer: table, image, object (OLE), paragraph (neither hidden nor empty), word and character counts; page count only with a layout. Asian-script text counts each non-space character as a word; numbering labels are counted. Calc: table, cell and object (shape) counts. Impress/Draw: object count only. Never written: `meta:non-whitespace-character-count`, `row-count`, `sentence-count`, `syllable-count`. Writer skips recounting on load when all seven counts are present. Calc's cell count is the number of stored cell entries per sheet: it includes cells that only hold a comment and empty placeholder cells created for formula dependencies, but not cells that only carry formatting | 32 33### 2.2 Text, styles, numbers (§5, §7, §8, §16, §19, §20) 34 35| § | Requirement | AOO | 36|---|---|---| 37| 5.3.2, 16.32, 19.880.22, 19.880.25 | "An implementation-dependent default is applied to the list." / "an implementation-dependent default style is used" for a list level without a level style | Write: the root `text:list` always carries `text:style-name`; nested lists omit it when equal to the parent's; every level (10 in Writer) is written; `text:numbered-paragraph` is not produced. Read: a list with no resolvable style gets a new anonymous numbering rule whose used level is a bullet, character U+F095, font "StarBats" (Windows) or "starbats" (Unix), character style "Numbering Symbols". Nested lists inherit the parent's rules. Levels missing from a `text:list-style` keep the application defaults and do not copy the next lower level (Writer: the built-in rule; Draw and Impress: the document's pool default of ten levels, each a bullet U+25CF at 45 % relative size, left indent 600 per level in 1/100 mm). **The second rule of §5.3.2 is not followed:** a `text:list` that names no style and has no surrounding list style is given the default bullet rule as a direct property, which overrides the list style of its paragraph styles; a paragraph style's list style is used only for paragraphs outside any list, or when an automatic paragraph style itself names a list style. Both deviations are known and kept | 38| 7.5.12 (dep) | "The format of a list of keywords is implementation-dependent." | The `meta:keyword` values in document order joined with `", "` | 39| 7.5.19 (dep) | "The source of the metadata and the means of generation of the mixed content is implementation-dependent." | Written with `xml:id` and, when the field has a number format, its data style. Displayed content is the stored content plus a prefix and suffix from RDF statements whose subject is the field and whose predicate is `http://docs.oasis-open.org/ns/office/1.2/meta/odf#prefix` / `#suffix`. No code was found that regenerates content from a metadata source. Reachable only through the API | 40| 8.8.3 | "The format of an index mark file is implementation-defined." | Element written with `xlink:type="simple"` and a relative `xlink:href`. The concordance file is plain text, one entry per line, `#` starts a comment, fields separated by `;`: `SearchTerm;Alternative;PrimaryKey;SecondaryKey;MatchCase;WholeWordOnly` (flags: any non-empty value other than `0` is true). **Encoding is the system ANSI encoding, not UTF-8.** Line ending: the platform default of the output stream (LF on Unix and macOS, CR LF on Windows). The system encoding is kept and documented here; the file is written only from a dialog | 41| 16.2 (dep) | "If a value has not been found by these steps, but this specification defines a default value, then this default value is used. In all remaining cases an implementation-dependent value is used." | AOO's `style:default-style` writes only the properties flagged for default export (character colour, font names/families/pitch/charset for Latin, Asian and Complex, font heights, locales, tab stops and the Asian typography flags), so for most properties files rely on the consumer's defaults. Missing values on read come from each application's item-pool defaults (Writer: 12 pt font, automatic colour, language "don't know"); the importer is not generally written to apply the specification's own default first, and no per-property list exists. One case found and fixed: a missing `number:transliteration-style` is read as `short` (§19.368). Stated as a limitation: no per-property audit was done (a possible later task) | 42| 16.29.5 (dep) | "The distribution of the remaining space is implementation-dependent." (of `number:fill-character`) | Not produced. The number-format exporter has no case for the repeat-fill symbol, so a `*x` in a format code is not written. The importer reads the element as `*x` in the format code (one fill character per format, a single UTF-16 character; others are ignored), so the distribution of free space is whatever the cell renderer does; the rendering was not checked | 43| 16.31.3 | "an implementation-defined default note configuration is used" | Writer always writes one for footnotes and one for endnotes; `text:start-value` is written as the 0-based `StartAt` offset (0 for the default), whereas §19.874 defines it as the first note number (default 1); this differs from the specification and is a known limitation. If absent: footnotes Arabic numbering, first note 1, position page, numbering per document; endnotes lower-case Roman; page styles "Footnote"/"Endnote" | 44| 19.344 (dep) | "What replacement text is supported is implementation-dependent." (`number:decimal-replacement`) | Format codes with dashes after the decimal point write a string of `-` repeated decimal-places times; codes whose decimals start with `#` write `""`, meaning variable decimals. On read any non-empty value means dashes (the characters are ignored and rebuilt as `-`), an empty value means variable decimals | 45| 19.368 (dep) | "The semantics of the values of the number:transliteration-style attribute are locale- and implementation-dependent." | Written with `transliteration-format`, `-language`, `-country`; `short` for NatNum0/1/3/9 (and NatNum2 for non-Hebrew languages), `medium` for NatNum7/8/11 (and NatNum2 for Hebrew), `long` for NatNum4/5/6/10. Read maps the three values back. A missing style is read as `short`, the specification default | 46| 19.434 (dep) | "Script language names are implementation-dependent." | Written `ooo:script` (script-URL listeners), `ooo:StarBasic` (Basic listeners), `ooo:starbasic` in lower case (Draw and Impress shape click actions with a Basic action), `ooo:Basic` (on `office:script`, flat XML only); a `text:script` field writes its stored script-type string unchanged. `ooo` is `http://openoffice.org/2004/office`. Read: `starbasic`, `StarBasic`, `script`, with the `ooo` prefix or none; anything else drops the event | 47| 19.481 (dep) | "implementation-dependent filter name that has been used to load an image" (`style:filter-name`) | Written as stored; when set from the Background dialog it is the localized UI name of the chosen graphic filter. Read: stored and written back; the graphic is loaded with format auto-detection, so the attribute has no effect. Written for page-style backgrounds (page, header, footer; Writer and Calc), paragraph styles, frames, sections and Writer table, row and cell backgrounds; Draw and Impress use `draw:fill-image` instead and character backgrounds have none. Only the Area/Background tab page sets it, and only for a linked graphic; a value read from a file is written back unchanged | 48| 19.808 (dep) | "The value of this attribute is implementation-dependent." (`text:filter-name`, section source) | AOO's internal filter name (for example `writer8`). Read: looked up by name; if unknown or empty the filter is detected from the file | 49| 19.493 | "The line widths referenced by the values medium, normal, thick and thin are implementation-defined." (`style:leader-width`) | Not produced, not read | 50| 19.497 | "The footnote separator components referenced by the values dash, dot-dash, ... are implementation-defined." (`style:line-style`) | Not produced, ignored on read | 51| 19.516, 20.343, 20.344, 20.345 (dep) | `style:rfc-language-tag` (and `-asian`, `-complex`): producers may write `fo:language`, `fo:script`, `fo:country` "with values whose combination is otherwise invalid and whose interpretation is therefore implementation-dependent" | Not produced, not read; AOO writes `fo:language`/`fo:country` (`none` when empty) and no `fo:script` | 52| 19.802.8 (dep) | "Assignments of categories to templates is implementation-dependent." (`text:template-name`, `area`) | Written as `area`; the content is the template-folder group name of the document's template URL from the local template manager, empty without a template URL | 53| 19.857 | "Any other procedures, their identifying IRIs, and their application of text:protection-key values are implementation-defined." | `text:protection-key` (sections only) is Base64 of SHA-256 over the UTF-8 password with `text:protection-key-digest-algorithm="http://www.w3.org/2000/09/xmldsig#sha256"` for passwords set in the Sections dialog. A key loaded from a file is written back as it was: older AOO keys (SHA-1 over UTF-16LE) without the attribute. Read: the attribute is ignored; the algorithm is chosen by key length: 20 bytes is SHA-1 of the password as UTF-16LE, UTF-16BE or UTF-8, 32 bytes is SHA-256 of the UTF-8 password, so keys carrying `xmldsig#sha256` or `xmlenc#sha256` verify alike. Older AOO releases cannot unprotect a section saved with the new form | 54| 20.230 | "it is implementation-defined whether the overflow text is visible or hidden" (`fo:wrap-option`) | Written `wrap`/`no-wrap`. Calc: text of a no-wrap cell runs into empty neighbours, otherwise is clipped with a clip mark; numbers that do not fit show `###`. Custom shapes: no-wrap lets the shape grow to the text only if the shape's auto-grow flag is also set. Draw and Impress do not clip: text wider than a no-wrap shape is drawn beyond it (centred on the shape when it is not a text frame); wrapping applies to text frames and to shapes with word-wrap set. For custom shapes the shape's auto-grow-height setting controls horizontal growth | 55| 20.315 | "line breaks shall not occur before or after implementation-defined characters" (`style:line-break="strict"`) | `strict` is written when the paragraph uses forbidden-character rules. The sets are per language (built in for ja_JP, ko_KR, zh_CN, zh_TW), overridable in settings.xml (`ForbiddenCharacters`) | 56| 20.358 (dep) | "For Unicode code points for which no mapping is defined, the mapping is implementation-dependent." (`style:script-type`) | Not produced, not read. Internally AOO classifies by ICU Unicode block (Hebrew through Myanmar, Ethiopic, Khmer to Mongolian, Arabic Presentation Forms: complex; Hangul Jamo, CJK blocks, Halfwidth/Fullwidth Forms, CJK Extension B onward: Asian; Latin, Greek, Cyrillic, Armenian, Georgian, Cherokee to Runic, Coptic, ligatures U+FB00-06 and U+FB13-17: Latin; everything else, U+0001, U+0002, U+0020, U+00A0: weak). Weak runs at paragraph start take the UI language's script, otherwise the neighbour's | 57| 20.377, 20.383, 20.392 | "The line-through text styles referenced by the values dash, medium, thick and thin, are implementation-defined." (likewise overline, underline) | Written: `bold` or `auto` for underline and overline; only `bold` for strike-through (otherwise omitted). Read: `bold` (and `thick` for overline/underline) set a bold line; `thin`, `medium`, `thick` (strike-through) are accepted and change nothing; `dash`, percentages, integers and lengths are ignored | 58| 20.395 | "The determination of light or dark color is implementation-defined." (`style:use-window-font-color`) | Written `true` for automatic colour. Luminance is (77R + 151G + 28B) >> 8; dark is luminance <= 55, bright >= 245. On screen Writer and editeng replace the configured text colour by white when both it and the background are dark, and by black when both are bright; printing and PDF export use white on a dark background and black otherwise | 59| 20.435 (dep) | "OpenDocument only allows storing this setting as an implementation-dependent setting, not as document or style content." (Latin or Arabic-Indic digits) | An application setting (Office.Common/I18N/CTL/CTLTextNumerals: Arabic, Hindi, System, Context); never stored in the document | 60 61### 2.3 Calc (§9, §19 table:) 62 63| § | Requirement | AOO | 64|---|---|---| 65| 9.2.1 (dep) | "The behavior of a consumer when a cell is referenced but not declared is implementation-dependent." | Calc has a fixed grid (1024 columns, 1,048,576 rows, 256 sheets); an undeclared cell in the grid is empty. Imported cells past the grid are dropped, and a row or column overflow warning is raised if any of them had content or a comment; shapes anchored past the grid are anchored at the last row or column. A formula reference to a cell past the grid (for example `[.A1048577]` or `[.AMK1]`) is not clamped: it is kept as a bad name and evaluates to the error `#NAME?`, and a range with one end past the grid is invalid as a whole | 66| 9.3.4, 19.677.11 (dep) | "The nature of the highlighting is implementation-dependent." / "... imposed on or removed from cells as the result of detective operations is implementation-defined." | Draw-layer arrows (triangle line end, or square for links to another sheet), ellipses for invalid data, colours from the user's appearance settings. Export writes `table:cell-range-address`, `table:direction`, `table:contains-error`, `table:marked-invalid`; operations get `table:name` (trace-dependents, remove-dependents, trace-precedents, remove-precedents, trace-errors) and `table:index`. Import recreates the stored objects without recalculating | 67| 19.615.3, 19.615.4 (dep) | "a value of type string (name of a user-defined sort order, implementation-dependent)" | `UserList<n>`, `n` the decimal index into Calc's global sort lists (locale day and month names plus user lists from Tools > Options; not stored in the document). Otherwise `text`, `number`, `automatic`. Read: a value longer than 8 characters starting with `UserList` selects the user list; unknown values mean automatic | 68| 19.642, 19.643 (dep) | "The value of this attribute is implementation-dependent." (`table:filter-name`) / "implementation-dependent settings for a file type" (`table:filter-options`) | AOO's internal import-filter name (for example `calc8`, `MS Excel 97`, `HTML (StarCalc)`) and that filter's own option string; written for area links, sheet links and external-reference cache sheets; read and passed unchanged. Meaningful only to AOO-family consumers. The text/CSV filter writes comma-separated tokens: field separators (decimal code points joined by `/`, `FIX` for fixed width, a trailing `/MRG` to merge delimiters), text delimiter (code point), character set (a name such as `ANSI`, `SYSTEM`, `IBMPC_850`, or a decimal `rtl_TextEncoding` such as 76 for UTF-8), first line, column formats as `position/format` pairs (1 standard, 2 text, 3 MDY, 4 DMY, 5 YMD, 9 skip, 10 US English), language id, and the quoted-field-as-text and detect-special-numbers flags. The HTML filters take `<language-id> <date-convert>`, the date conversion being 0 or 1; dBase, Lotus and DIF take only a character set. Options of Excel-family filters were not examined | 69| 19.646 (HOST-LOCALE) | Table 16: default value of HOST-LOCALE "Implementation-defined"; the namespace of a formula defaults to `urn:oasis:names:tc:opendocument:xmlns:of:1.2` | Written `of:` in both modes, bound to `urn:oasis:names:tc:opendocument:xmlns:of:1.2` (the 1.3 text names `of:1.2` in §2.2.4 D and in the `table:formula` definition, and `of:1.3` in §2.2.1 D.3). Read: `oooc:` selects the old grammar, `of:` ODFF; no prefix or an unknown prefix with a leading `=` is ODFF; other namespaces are used only if a registered formula parser claims them (AOO registers `http://schemas.microsoft.com/office/excel/formula`). HOST-LOCALE is the office's configured locale, not stored in or read from the document; it is used for number-to-string conversion (`&`, CONCATENATE), VALUE, DATEVALUE, TIMEVALUE, FIXED, DOLLAR, UPPER, LOWER, PROPER, SEARCH, for text comparison, MATCH/LOOKUP matching and the default sort order (collator), and TEXT uses the language of the cell's number format, which is the host locale by default. Implicit string-to-number conversion in operators is locale independent (integers and ISO 8601 dates and times only) and ODFF function names are matched with ASCII case folding. Other functions were not audited | 70| 19.647.1 | "a value of type string: an implementation-dependent function name" (`table:function`) | Predefined tokens plus `none` (no function); `auto` for row/column data-pilot fields. Any unrecognised value reads as no function. The user interface never writes `none` (the Pivot Table, Subtotals and Consolidate dialogs cannot select it, and "None" subtotals write no element); it comes only from the API or an imported document | 71| 19.677.13, 19.685, 19.694, 19.719, 19.751 (dep) | `table:source-service`: "The value of this attribute is implementation-dependent." (also `table:object-name`, `password`, `source-name`, `user-name`: "implementation-dependent and service-specific") | `table:name` is the implementation name of a registered `DataPilotSource` component; `source-name`, `object-name`, `user-name` are written; **`table:password` is never written**. AOO ships no such component, so the element appears only with a third-party extension | 72| 19.688, 19.748 (dep) | "Regular expressions are implementation-dependent expressions that, at a minimum, conform to the requirements of Conformance Clause C1 of [UTR18]." | ICU regular expressions (word-boundary shorthands `\<`, `\>` are rewritten). Regex is one switch for a whole filter; when on, `=` is written `match` and `!=` `!match`. `table:use-regular-expressions="false"` is written on `table:calculation-settings` only when off. No wildcard mode | 73| 19.689 (dep) | "Sorting is locale- and implementation-dependent." | With `table:language`/`country`/`algorithm` AOO loads that collator, otherwise the default collator of the office locale. Only `descending` is written for sorts | 74| 19.702 | "Any other procedures, their identifying IRIs, and their application of table:protection-key values are implementation-defined." | `table:protection-key` on `office:spreadsheet` and `table:table` is Base64 of SHA-256 over the UTF-8 password with `table:protection-key-digest-algorithm="http://www.w3.org/2000/09/xmldsig#sha256"` when a password is set in the session. A key loaded from a file is written back as it was, so a legacy key stays SHA-1 over UTF-16LE without the attribute until the password is re-entered; in extended mode an unchanged sheet keeps its original attributes. Protection with an empty password writes no key. Read: as for `text:protection-key` (key length selects the algorithm). Older AOO releases cannot unprotect a sheet saved with the new form | 75| 19.707 (dep) | `table:rfc-language-tag`: producers may specify `table:language`, `table:script`, `table:country` "with values that are implementation-dependent" | Not produced, not read | 76| 19.714 | "it is implementation-defined whether fields without members are displayed" (`table:show-empty` absent) | Written on `table:data-pilot-level` only when known; when absent the built-in source does not show empty fields | 77 78### 2.4 Drawing, presentation, forms, chart (§10, §11, §13, §19, §20) 79 80| § | Requirement | AOO | 81|---|---|---| 82| 10.3.10 (dep) | "If the svg:d attribute is not present, the connector's geometric path is implementation-dependent." | `svg:d` is always written for a non-empty path, in relative coordinates, with `draw:type` (unless standard) and `draw:line-skew` (1-3 lengths, when non-zero); `svg:viewBox` is written. Without `svg:d` the path comes from AOO's own routing from type, line-skew, shapes and glue points. **A connector glued at either end is re-routed on load and the imported `svg:d` is discarded**; `svg:d` is honoured only for unglued connectors. Known and kept | 83| 11.3, 11.5 | "The behavior is implementation-defined for charts of non-predefined chart classes, which have no Cartesian coordinate system." / "For other three-dimensional charts the behavior is implementation-defined." (`chart:coordinate-region`, `chart:plot-area`) | `chart:coordinate-region` with `svg:x`, `svg:y`, `svg:width`, `svg:height` is written as the first child of `chart:plot-area` in **both** modes (extended mode no longer uses the `chartooo:` spelling). The rectangle is the diagram rectangle excluding axes (the stored one when the diagram is already positioned excluding axes, otherwise the one computed by the chart view), for every chart class, including three-dimensional, pie/donut/net and add-in charts; the exporter has no class-specific code. The view snaps the rectangle to the used area for pie charts and for all two-dimensional plotters. Read: both spellings are accepted; the rectangle is applied only when the plot area is not set to automatic positioning. Whether the written rectangle equals the geometry the specification prescribes (bounding box of the circle for radar, filled-radar, circle and ring charts; the cuboid for three-dimensional Cartesian charts) was not determined. The same rectangle is written for every chart class; another producer was observed to write one rectangle for bar and pie charts alike. Not tested against the §11.3 and §11.5 geometry for 3D and net charts | 84| 13.5.1 (dep) | "controls may have implementation-dependent attributes" | `form:properties` holds one `form:property` per leftover UNO model property (`form:property-name` is the UNO name, value with `office:value-type`); transient, read-only, already-mapped and still-default properties are skipped (dynamic properties are always written); sequence values are written as `form:list-property` with `form:list-value`. Unknown names are added as dynamic properties on read when the model allows | 85| 13.5.3 (dep) | "it is implementation-dependent which text is used" (`form:current-value` and `text:p` both present) | Rich-text areas are written with **both**. On read `text:p` wins and `form:current-value` is discarded | 86| 13.5.25 | "defines an implementation-defined placeholder for a generic control" | Written for controls of class CONTROL, NAVIGATIONBAR or unknown; `form:control-implementation` is the UNO service name as an `ooo:` QName, from which the control is created on read; for a navigation bar it is `ooo:com.sun.star.form.component.NavigationToolBar` | 87| 19.155, 19.164 | "The means by which the light is softened is implementation-defined." (`draw:extrusion-first-light-harsh`, `-second-light-harsh`) | `true`/`false` written from the first/second light properties. **The renderer reads and discards them: harsh and soft lights render identically.** Listed as a limitation (the means of softening is implementation-defined, AOO makes no distinction) | 88| 19.170 (dep) | "the implementation-dependent filter name that has been used to load an image into the document" (`draw:filter-name`) | Writer only, on `draw:image`, for linked graphics, from the filter name stored with the link (a DDE-linked graphic writes none). Draw/Impress/Calc never write it. The value is a localized file-picker filter name (for example "<All formats>" or "JPEG - Joint Photographic Experts Group") for graphics inserted as links, empty for links made by drag and drop or by HTML/RTF import, the gallery's own value for gallery items, and an arbitrary string through the API; it is not a stable token. Writer passes it back to the graphic filter on read; Draw/Impress ignore it | 89| 19.264 | "The mapping from data source names to specific instances of database front end documents is implementation-defined." (`form:datasource`) | Written from `DataSourceName` when non-empty and not a `file:` URL; a `file:` URL goes to `form:connection-resource`. Read: resolved through the database context (registered names in `org.openoffice.Office.DataAccess/RegisteredNames`), otherwise loaded as a URL | 90| 19.265 | "it is implementation-defined which button is the default for the form" | `true` is written on every button whose property is set; nothing enforces one. The form layer does nothing with several default buttons; at run time the VCL dialog-control handling presses the first push button with the default style in its child order when Enter is pressed. Documented as stated: the first push button with the default style in child order; the creation order of the control peers was not traced further | 91| 19.418 | "The slide content is not defined within the document, but is implementation-defined." | Not produced; ignored on read. A non-looping show ends on a black screen with white text "Click to exit presentation..." (menu font, 14 pt, top left); it cannot be switched off from the document | 92| 19.419 | "an implementation-defined logo is shown on a pause screen" | `presentation:show-logo="true"` when set; read back. On the pause screen of a looping show AOO shows its branding image `logo.png` (`logo_hc.png` in high contrast) from the program directory | 93| 19.421 | "The rates specified by these values are implementation-defined." (`presentation:speed`) | Written only on a click-action event listener for fade-out (`slow`/`fast`; `medium` omitted). On read, in animations: slow = 2.0 s, medium = 1.0 s, fast = 0.5 s; back from a duration: under 1.0 s fast, over 1.5 s slow, else medium. The slide show has no handler for the fade-out click action, so no rate applies there | 94| 20.238 | "fast: An implementation-defined speed." (likewise medium, slow; `presentation:transition-speed`) | Written from the transition duration: under 2.0 s `fast`, over 2.0 s `slow`, exactly 2.0 s `medium` (omitted). Read: slow = 3.0 s, medium = 2.0 s, fast = 1.0 s; an explicit `smil:dur` on the transition overrides it | 95| 20.61 | "The glyphs associated with the values of the chart:symbol-name attribute are implementation-defined." | Written for symbol types 0-14: square, diamond, arrow-down, arrow-up, arrow-right, arrow-left, bow-tie, hourglass, circle, star, x, plus, asterisk, horizontal-bar, vertical-bar; a higher API value writes `named-symbol` without a name. Unknown names are rejected on read | 96| 20.176, 20.177, 20.178, 20.179 | "It is implementation-defined whether these attributes are used to specify the visible area, or whether the producer of the object stores the visible area within the object itself." | `draw:visible-area-*` only for non-internal (foreign) OLE objects; internal objects keep it inside the object. Writer writes left = 0, top = 0 and the object size in 1/100 mm | 97 98## 3. Part 2 values (packages) 99 100| § | Requirement | AOO | 101|---|---|---| 102| 2.2.1 E | "nor shall the META-INF/manifest.xml contain any implementation-defined IRIs as alternative identifications" | None are written. The only IRI-valued attributes the manifest writer produces are `manifest:algorithm-name`, `checksum-type`, `start-key-generation-name` and `key-derivation-name`, and they carry only the specification-defined values listed in the next rows (the other attributes written are `media-type`, `full-path`, `version`, `size`, `checksum`, `initialisation-vector`, `key-size`, `iteration-count`, `salt`) | 103| 4.16.1 | "The implementation-defined IRI of an alternative algorithm as specified in §5.1 of [xmlenc-core]. Alternative algorithms may be specified by extended conforming packages only." (`manifest:algorithm-name`) | Only `http://www.w3.org/2001/04/xmlenc#aes256-cbc` (AES-256-CBC, the default) or `Blowfish CFB` (compatibility option). No alternative algorithm in either mode | 104| 4.16.3 | the same sentence for `manifest:checksum-type` | Only `urn:oasis:names:tc:opendocument:xmlns:manifest:1.0#sha256-1k` (default) or `SHA1/1K` (compatibility option) | 105| 4.16.6 | the same sentence for `manifest:start-key-generation-name` | Only `http://www.w3.org/2000/09/xmldsig#sha256` (32 bytes, default) or `SHA1` (20 bytes, compatibility option); `manifest:start-key-generation` and `manifest:key-size` are written when the manifest version is 1.2 or later, which includes 1.3 | 106| 4.16.9 | "The implementation-defined IRI of an implementation-defined alternative algorithm. Alternative algorithms may be specified by extended conforming packages only." / "PGP [xmldsig-core1]" (`manifest:key-derivation-name`) | Always `PBKDF2` (HMAC-SHA1), 1024 iterations, random 16-byte salt; `key-size` is the derived key size. With the SHA-1/Blowfish compatibility options set it uses SHA-1, "Blowfish CFB" and "SHA1/1K". Read: `PBKDF2` or `urn:oasis:names:tc:opendocument:xmlns:manifest:1.0#pbkdf2`; any other value, including `PGP`, makes AOO ignore the entry's encryption data. OpenPGP key transport is not implemented (a documented limitation) | 107| 4.16.11 | "Specifies an implementation-defined view." / "The default preferred view mode is implementation-defined. The behavior for cases where the manifest:preferred-view-mode attribute is absent is implementation-defined." | Not produced; ignored on read. The open mode comes from the media descriptor, read-only state or the `LoadReadonly` setting. No code selects a view mode for ordinary documents: they open for editing unless the media descriptor asks for view-only or the `LoadReadonly` setting asks for read-only; templates open as new untitled documents | 108| 4.17 | "The manifest:PGPAlgorithm contains an identifier for the PGP algorithm used for encryption in the manifest. This identifier is implementation-defined." | Not produced. OpenPGP encryption (`manifest:encrypted-key`, `keyinfo`, `PGPAlgorithm`) is not implemented, in either mode (documented limitation) | 109 110## 4. Part 4 (formula evaluator) 111 112AOO does not claim the Part 4 evaluator groups (Small, Medium, Large), and Part 4 contains no requirement that a producer document these values; §2.4 only says applications "should document all implementation-defined variances". The 57 sections that contain the words are listed, with no AOO value. No Part 4 evaluator group is claimed, as for 1.2; the 57 sections stay listed without values. For producing documents, AOO writes `table:formula` in the `of:` namespace (§19.646). 113 114| § | Topic | 115|---|---| 116| 2.3.1 (Note 1), 2.4 | general: variances should be documented | 117| 3.4, 4.2, 4.3.3, 4.4, 4.11.12 | HOST-REFERENCE-RESOLVER; Unicode normalization; whether 1900 is a leap year; ISNUMBER/ISTEXT of a complex number; row-wise or column-wise sequence order | 118| 5.7, 6.2 | examples of implementation-defined functions; pseudotype parameter that fails its requirements | 119| 6.3.5, 6.3.6, 6.3.12, 6.3.15, 6.3.16, 6.4.9 | conversions of Text, non-integer Number, Logical to Number, Integer, Logical, DateParam, TimeParam; comparison of different types | 120| 6.6.1, 6.7.1, 6.8.5, 6.8.26, 6.16.10, 6.16.18, 6.16.36, 6.16.46 | beyond 48 bits; byte positions; IMARGUMENT(0); IMSUM with no parameters; ATAN2(0;0); CONVERT unit names; GCD of zeros; POWER(0,0) and negative base | 121| 6.10.18, 6.11.3, 6.12.4 | TIMEVALUE of a combined text; HYPERLINK; AMORLINC with equal dates | 122| 6.13.6, 6.13.7, 6.13.8, 6.13.12, 6.13.17, 6.13.18, 6.13.23, 6.13.26, 6.13.34 | COUNT with 0 parameters; COUNTA; COUNTBLANK of ""; FORMULA text syntax; ISEVEN/ISODD of Logical; ISFORMULA of a non-reference; N of Text; VALUE of a non-Text | 123| 6.14.5, 6.14.12 | HLOOKUP and VLOOKUP on unsorted data | 124| 6.18.48, 6.18.49, 6.18.73, 6.18.75, 6.18.83, 6.18.85 | MIN and MINA with 0 parameters; string constants in STDEVA, STDEVPA, VARA, VARPA | 125| 6.19.4-6.19.9, 6.19.11-6.19.16 | BIN2DEC to OCT2HEX: Logical input, empty string, too few Digits | 126| 6.20.5, 6.20.23 | CODE above 127; TEXT format-code meaning | 127 1281.2 sentences that 1.3 no longer has: "What happens when MAX is provided 0 parameters is implementation-defined" (MAX, 1.3 §6.18.45) and the same for MAXA (§6.18.46). 129 130## 5. Foreign elements and attributes (Part 3 §2.3.2 B) 131 132Foreign means a namespace not declared by the ODF 1.3 schema. Namespace prefixes used only inside attribute values (`ooo:`, `ooow:`, `oooc:`, `of:`, `dom:`, `xsd:`) are not listed. Part 3 §3.17 says extended producers "should not use foreign elements and attributes for features defined in the OpenDocument specification"; four features that Extended mode of ODF 1.2 wrote as extensions now have standard names and are written under them (§5.1). 133 134### 5.1 Moved to standard names in ODF 1.3 and ODF 1.3 Extended 135 136| Feature | ODF 1.2 Extended | ODF 1.3 and 1.3 Extended | 137|---|---|---| 138| Plot-area inner rectangle | `chartooo:coordinate-region` | `chart:coordinate-region` in both modes | 139| Sheet tab colour | `tableooo:tab-color` in the table style | `table:tab-color` in both modes; the extension spelling is written only below 1.3 | 140| Annotation initials (Writer) | `textooo:sender-initials` in `office:annotation` | `meta:creator-initials` in both modes; the reader still accepts `sender-initials` | 141| `text:drop-down` | `text:drop-down` with `text:help`, `text:hint` (the schema does not allow these two) | Strict: `text:drop-down` with name and labels only; Help and Tooltip are not written. Extended: the same, with the help and hint as `textooo:help` and `textooo:hint` | 142| Legend size | `chartooo:width`, `chartooo:height` on `chart:legend` with custom expansion | `svg:width`, `svg:height` in both modes (with `style:legend-expansion-aspect-ratio`) | 143 144Other 1.3 modes differences (standard content, not foreign): `style:scale-to-X` and `-Y` are written in strict (and `style:scale-to`/`scale-to-pages` are dropped whenever X or Y is written); index link tokens are written for table, illustration, object and user indexes; additional shapes in `chart:chart` are kept in strict. Sources: xmloff `PageMasterExportPropMapper.cxx:597-620`, `XMLSectionExport.cxx:1394-1405`, `SchXMLExport.cxx:1597`. 145 146### 5.2 Written in Extended only 147 148| Namespace | Items | 149|---|---| 150| `officeooo` = `http://openoffice.org/2009/office` | `officeooo:annotation` (Impress/Draw, in `draw:page` and `style:master-page`; carries `svg:x`, `svg:y` and, when the size is non-zero, `svg:width`, `svg:height`; children `dc:creator`, `dc:date`, text; stays an extension because the 1.3 schema allows `office:annotation` only in paragraph content and table cells); `officeooo:event-listeners` (Calc, in `table:table`; children are ODF `script:event-listener`) | 151| `drawooo` = `http://openoffice.org/2010/draw` | attribute `drawooo:display` (`none`, `printer`, `screen`) on any shape except page, handout and chart shapes; omitted when visible and printable. Declared in Impress/Draw, Writer and Calc in Extended; the shared shape exporter writes the attribute only when the namespace is declared | 152| `textooo` = `http://openoffice.org/2013/office` | attributes `textooo:help` and `textooo:hint` on `text:drop-down` (Writer); the namespace is declared in the Writer exporter in Extended | 153| `tableooo` = `http://openoffice.org/2009/table` | attribute `tableooo:display-name` on `table:data-pilot-field`, `table:data-pilot-member`, `table:data-pilot-subtotal` (auto function only) and `tableooo:data-pilot-grand-total`; element `tableooo:data-pilot-grand-total` (empty, with `table:display`, `table:orientation`). `tableooo:tab-color` is no longer written | 154| `chartooo` = `http://openoffice.org/2010/chart` | attribute `chartooo:axis-type` (`auto`, `text`, `date`) on `chart:axis`; `chartooo:date-scale` (empty, in `chart:axis`, carrying `chart:base-time-unit`, `chart:major-interval-value`, `chart:major-interval-unit`, `chart:minor-interval-value`, `chart:minor-interval-unit`). `chartooo:coordinate-region` and `chartooo:width`/`height` are no longer written | 155| ODF namespaces, not in the 1.3 schema | `draw:fill`, `draw:fill-color` and the other drawing-fill attributes on page-layout, header/footer and paragraph properties, and the master page's fill written as a drawing-page style: written only in Extended | 156 157### 5.3 Written in every mode except Strict 158 159| Namespace | Items | 160|---|---| 161| `field` = `urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0` (declared for `content.xml` only) | Elements `field:fieldmark` and `field:fieldmark-start` (inline text; `text:name` when a bookmark object exists, and for form fields `field:type` and `field:param` children with `field:name` and `field:value`) and an empty `field:fieldmark-end`. In strict mode fieldmarks are written as bookmarks; ODF 1.3 does not define `field:fieldmark` either. A fieldmark in a header or footer would get an unprefixed name (namespace declared for content only; not tested) | 162 163### 5.4 Pass-through of imported foreign content 164 165| What | Modes | 166|---|---| 167| Foreign attributes in paragraph, text, graphic, section, page-layout, table-cell (Calc), drawing-page, Writer table/row/cell style properties | Extended; dropped in strict (this includes chart user-defined attributes) | 168| Foreign markup inside an unmodified Calc sheet (byte-for-byte copy of the source stream) | Extended only | 169| Foreign markup inside unmodified embedded objects (byte-for-byte copy) | Extended only | 170| Foreign content in `office:meta` | Extended; dropped in strict | 171 172### 5.5 Written in every mode (the schema allows any content there) 173 174| Namespace | Items | 175|---|---| 176| `xsd` = `http://www.w3.org/2001/XMLSchema` and user data | In `xforms:model`: `xsd:schema` (always), `xsd:simpleType`, `xsd:restriction`, facet elements; the XForms instance document and a preserved foreign schema | 177| `ooo` = `http://openoffice.org/2004/office` | In flat XML only: `ooo:libraries`, `ooo:library-linked`, `ooo:library-embedded`, `ooo:module`, `ooo:source-code` inside `office:script` | 178| Unused declarations | `ooow`, `oooc`, `of`, `rpt`, `dom` and `xsi` are declared on the root with no element or attribute behind them (the prefixes appear only inside attribute values, or, for `rpt`, in Base reports); `ooo`, `xsd` and `field` are used only in the cases listed above; `textooo` and `chartooo` may be declared with nothing written in them | 179 180### 5.6 Outside ODF 1.3 entirely 181 182- Base report sub-documents use `rpt` = `http://openoffice.org/2005/report` (`office:report` and about 20 `rpt:` elements); the report document type is not an ODF document type. The importer also accepts the OASIS report URI, which AOO never writes (1.2 doc 4.5). 183- Non-ODF streams: `VersionList.xml` (`http://openoffice.org/2001/versions-list`) and the Basic and dialog library containers (`http://openoffice.org/2000/*`) (1.2 doc 4.5). 184- Read but never written: `loext:graphic-properties` in paragraph styles (imported as paragraph fill) (1.2 doc 4.5). 185 186## 6. Not documented 187 188Looked at and not determined: 189- Which default button is first when several are set in a form (§19.265). 190- Whether the coordinate rectangle written for radar, circle, ring, three-dimensional and add-in charts matches the geometry of §11.3 and §11.5. 191- Which of the defaults the specification defines (§16.2) the importer fails to apply. 192- Formula functions beyond those listed that depend on the host locale (for example BAHTTEXT, ROMAN) (§19.646). 193- Option strings of the Excel-family link filters (§19.643). 194- The full list of localized graphic filter names and the gallery's filter values (§19.170, §19.481). 195- Rendering of the chart symbol glyphs (§20.61). 196- Whether the `Basic/` and `Dialogs/` storages disappear when the libraries are emptied on an in-place save (§3.1.3.1). 197- Not checked row by row: the 1.3 and 1.3 Extended modes were exercised by the validation harness (corpus and fixtures), but each row above was read in the source and not reproduced with a produced file. 198