1# DRAFT: Apache OpenOffice: ODF 1.2 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.2. 4 5 6ODF 1.2 Part 1 (section 2.3.1 B) requires a conforming producer to be accompanied by a document that defines the implementation-defined values it uses, and section 2.3.2 B asks an extended producer 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-29 and is to be updated for the release that carries the claim. 7 8It covers ODF 1.2 Part 1 and Part 3 (OASIS Standard, 29 September 2011). Part 2 (the formula evaluator) is not claimed; see section 5. 9 10## 1. Conventions 11 12- **Strict** is the ODF 1.2 non-extended save mode. **Extended** is ODF 1.2 Extended. Unless an entry says otherwise, strict and extended behave the same. 13- "Implementation-dependent" items (which section 1.2 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 specification. 16 17## 2. Part 1 values 18 19### 2.1 Package, metadata, settings, events (§3, §4, §14) 20 21| § | What the spec leaves open | AOO | 22|---|---|---| 23| 3.1.3.1 (dep) | Other files in a package | 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) | Contents of `settings.xml` | `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 | Cursor-position processing instruction | Not produced; the importer ignores all processing instructions. Calc keeps the cursor in settings (`CursorPositionX/Y`) | 26| 3.16 | Signatures other than document signatures | `META-INF/macrosignatures.xml` is written when macros are signed (sfx2 `docfile.cxx:4050-4064` removes `documentsignatures.xml` after the scripting signature is inserted; warning text in xmlsecurity `digitalsignaturesdialog.src:204`); 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 ODF save path. Namespace: `urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0` for ODF 1.2 | 27| 4.1 (dep) | Updating repeated metadata elements | 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 | Meaning of custom metadata | AOO never creates it. Foreign children and attributes of `office:meta` read from a document are written back in extended mode and ODF 1.0/1.1, with no meaning to AOO; strict mode drops them | 29| 14.4.3 | Event types (`script:event-name`) | 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 | `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.339 (dep) | `meta:document-statistic` counts | 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| § | What the spec leaves open | AOO | 36|---|---|---| 37| 5.3.2, 19.874.22, 19.874.25, 16.30 | List style used when a list names none; default for undefined levels | 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 | 38| 7.5.12 | Display format of `text:keywords` | The `meta:keyword` values in document order joined with `", "` | 39| 7.5.19 | Source and content of `text:meta-field` | Written only for ODF 1.2 and later 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 | Format of the alphabetical-index auto-mark file | 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) | 41| 16.2 (dep) | Value when neither style nor default style gives one | 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"). A per-property list is not compiled | 42| 16.29.3 | Default when `text:notes-configuration` is absent | 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.868.5 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" | 43| 19.344 | `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 | 44| 19.364 | `number:transliteration-style` | 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 spec default | 45| 19.430 | `script:language` | 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 | 46| 19.477 | `style:filter-name` (background image) | 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 | 47| 19.802 | `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 | 48| 19.489 | `style:leader-width` | Not produced, not read | 49| 19.493 | `style:line-style` on `style:footnote-sep` | Not produced, ignored on read | 50| 19.512, 20.335-20.337 | `style:rfc-language-tag` (+asian, +complex) | Not produced, not read; AOO writes `fo:language`/`fo:country` (`none` when empty) and no `fo:script` | 51| 19.796.8 | `text:template-name` with `text:display="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 | 52| 19.851 | `text:protection-key-digest-algorithm` | `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 (ODF 1.2 and later; below that the 32-byte key is still written, without the attribute). 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 | 53| 20.223 | `fo:wrap-option` overflow | 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 | 54| 20.307 | `style:line-break="strict"` characters | `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`) | 55| 20.348 | `style:script-type` for code points outside table 22 | 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 | 56| 20.367, 20.373, 20.382 | Line widths other than `auto`/`bold` | 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 | 57| 20.385 | Light/dark for `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 | 58| 20.425 note | Latin vs Arabic-Indic digits | An application setting (Office.Common/I18N/CTL/CTLTextNumerals: Arabic, Hindi, System, Context); never stored in the document | 59 60### 2.3 Calc (§9, §19 table:) 61 62| § | What the spec leaves open | AOO | 63|---|---|---| 64| 9.2.1 | Reference to an undeclared cell | 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 | 65| 9.3.4, 19.673.11 | Appearance of detective highlighting | 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 | 66| 19.611.3, 19.611.4 | Name of a user-defined sort order | `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 | 67| 19.638, 19.639 | `table:filter-name`, `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 0| 68| 19.642 | `table:formula` namespaces and HOST-LOCALE | Written `of:` for ODF 1.2 (strict and extended); `oooc:` only for ODF 1.0/1.1. Read: `oooc:` selects the old grammar, `of:` ODFF; no prefix or an unknown prefix with a leading `=` is ODFF (old grammar for ODF 1.0/1.1 documents); 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 | 69| 19.643.1 | Non-predefined `table:function` values | 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 | 70| 19.673.12, 19.681, 19.690, 19.715, 19.746 | `table:source-service` and its parameters | `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 | 71| 19.684, 19.743 | Regular-expression dialect | 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 | 72| 19.685 | Sort order by locale | With `table:language`/`country`/`algorithm` AOO loads that collator, otherwise the default collator of the office locale. Only `descending` is written for sorts | 73| 19.698 | Protection procedures other than xmlenc digests | `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 (ODF 1.2 and later; SHA-1 over UTF-16LE without the attribute for ODF 1.0/1.1). 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 and ODF 1.0/1.1 modes 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 | 74| 19.703 | `table:rfc-language-tag` | Not produced, not read | 75| 19.710 | `table:show-empty` when absent | Written on `table:data-pilot-level` only when known; when absent the built-in source does not show empty fields | 76 77### 2.4 Drawing, presentation, forms, chart (§10, §13, §19, §20) 78 79| § | What the spec leaves open | AOO | 80|---|---|---| 81| 10.3.10 | Connector path when `svg:d` is absent | `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` for ODF 1.2 and later. 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 | 82| 13.5.1 | Implementation-dependent control 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 | 83| 13.5.3 | Text when both `form:current-value` and `text:p` | Rich-text areas are written with **both**. On read `text:p` wins and `form:current-value` is discarded | 84| 13.5.25 | What a `form:generic-control` is | 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` | 85| 19.155, 19.164 | Softening of non-harsh extrusion lights | `true`/`false` written from the first/second light properties. **The renderer reads and discards them: harsh and soft lights render identically** | 86| 19.170 | `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 | 87| 19.264 | Data source names | 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 | 88| 19.265 | Several default buttons | `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 (the creation order of the control peers was not traced) | 89| 19.414 | End-of-presentation slide | 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 | 90| 19.415 | Logo | `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 | 91| 19.417 | `presentation:speed` rates | 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 | 92| 20.231 | `presentation:transition-speed` rates | 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 | 93| 20.54 | Glyphs for `chart:symbol-name` | 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 | 94| 20.169-20.172 | Where the visible area is stored | `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 | 95 96### 2.5 Choices recorded in earlier tasks 97 98| Topic | AOO | 99|---|---| 100| `style:layout-grid-standard-mode` (§16 page layout) | AOO keeps the value per page style, but ODF 1.2 allows it only in `style:default-page-layout` (it "shall be ignored" in `style:page-layout`). Strict mode follows the spec, so a per-style value does not round trip. Extended mode also writes it in page layouts, where AOO reads it back | 101| `text:formula` and `text:condition` expression namespace | Writer fields keep the `ooow:` prefix and AOO add-in function names are written lower-case; Writer table cells (`table:formula`) keep the `ooow:` prefix too; the `of:` namespace applies only to `table:formula` written by Calc. These are only warnings ("should") for a document checker and do not make a document non-conforming | 102| Document media types | Impress/Draw filters write `application/vnd.oasis.opendocument.graphics` / `...presentation` per the appendix C registrations; Part 1 §2.2.5 spells the drawing types (`graphics`, `graphic-template`) with a misspelled prefix. `impress8_draw` writes a presentation into a file the filter calls graphics. The Writer/Web template filter writes `...text-web`, which no clause of §2.2.3-2.2.10 allows | 103| Signature files in the manifest | `META-INF/documentsignatures.xml` is not listed in `manifest.xml` (Part 3 §3.2); signatures use rsa-sha1 with c14n 1.0 and SHA-1 digests | 104 105## 3. Part 3 values (packages) 106 107| § | What the spec leaves open | AOO | 108|---|---|---| 109| 4.8.9 | `manifest:key-derivation-name` | Always `PBKDF2` (HMAC-SHA1), 1024 iterations, random 16-byte salt. For manifest version 1.2 or later `manifest:key-size` and `manifest:start-key-generation` are written. ODF 1.2 defaults: start key SHA-256 (`http://www.w3.org/2000/09/xmldsig#sha256`, 32 bytes), AES-256-CBC, checksum `urn:oasis:names:tc:opendocument:xmlns:manifest:1.0#sha256-1k`; 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 makes AOO ignore the entry's encryption data | 110| 4.8.11 | `manifest:preferred-view-mode` | 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 | 111 112## 4. Foreign elements and attributes (§2.3.2 B) 113 114Foreign means a namespace not declared by the ODF 1.2 schema. Namespace prefixes used only inside attribute values (`ooo:`, `ooow:`, `oooc:`, `of:`, `dom:`, `xsd:`) are not listed. 115 116### 4.1 Written in extended mode only 117 118| Namespace | Items | 119|---|---| 120| `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); `officeooo:event-listeners` (Calc, in `table:table`; children are ODF `script:event-listener`) | 121| `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 mode; the shared shape exporter writes the attribute only when the namespace is declared | 122| `textooo` = `http://openoffice.org/2013/office` | `textooo:sender-initials` (Writer, in `office:annotation`) | 123| `tableooo` = `http://openoffice.org/2009/table` | attribute `tableooo:tab-color` (table style); 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`) | 124| `chartooo` = `http://openoffice.org/2010/chart` | `chartooo:coordinate-region` (empty, in `chart:plot-area`, with `svg:x/y/width/height`); 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`); attributes `chartooo:width`, `chartooo:height` on `chart:legend` with custom expansion | 125 126### 4.2 Written in every mode except strict 127 128| Namespace | Items | 129|---|---| 130| `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. A fieldmark in a header or footer would get an unprefixed name (namespace declared for content only; not tested) | 131 132### 4.3 Pass-through of imported foreign content 133 134| What | Modes | 135|---|---| 136| Foreign attributes in paragraph, text, graphic, section, page-layout, table-cell (Calc), drawing-page, Writer table/row/cell style properties | Extended, ODF 1.0, ODF 1.1; dropped in strict (this includes chart user-defined attributes) | 137| Foreign markup inside an unmodified Calc sheet (byte-for-byte copy of the source stream) | Not strict | 138| Foreign markup inside unmodified embedded objects (byte-for-byte copy) | Not strict | 139| Foreign content in `office:meta` | Extended, ODF 1.0, ODF 1.1; dropped in strict | 140 141### 4.4 Written in every mode (the 1.2 schema allows any content there) 142 143| Namespace | Items | 144|---|---| 145| `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 | 146| `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` | 147| 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 | 148 149### 4.5 Outside ODF 1.2 entirely 150 151- 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 1.2 document type (reportdesign `xmlExport.cxx:233,272-1565`). The importer also accepts the OASIS report URI, which AOO never writes. 152- Non-ODF streams: `VersionList.xml` (`http://openoffice.org/2001/versions-list`) and the Basic and dialog library containers (`http://openoffice.org/2000/*`). 153- Read but never written: `loext:graphic-properties` in paragraph styles (imported as paragraph fill). 154 155## 5. Part 2 (formula evaluator) 156 157AOO does not claim the Part 2 evaluator groups (Small, Medium, Large). The 77 implementation-defined or implementation-dependent items of Part 2 therefore have no AOO values in this document. For producing documents, AOO writes `table:formula` in the `of:` namespace in ODF 1.2 (section 2.3, §19.642). 158 159## 6. Not documented 160 161These were looked at and not determined from the code: 162- Which default button is first when several are set in a form (the creation order of the control peers decides) (§19.265). 163- Formula functions beyond those listed that depend on the host locale (for example BAHTTEXT, ROMAN) (§19.642). 164- Option strings of the Excel-family link filters (§19.639). 165- The full list of localized graphic filter names and the gallery's filter values (§19.170, §19.477). 166- Rendering of the chart symbol glyphs (§20.54). 167- Whether the `Basic/` and `Dialogs/` storages disappear when the libraries are emptied on an in-place save (§3.1.3.1). 168