Development/ODF Implementer Notes/List of LibreOffice ODF implementation-defined items

From The Document Foundation Wiki
Jump to navigation Jump to search

The OpenDocument Format standard defines, "Implementation-defined is used in this standard for values or processing that may differ between ODF implementations, but is required to be specified by the implementor for each particular ODF-implementation." [1] The list below specifies these values and processing for LibreOffice.

General

The references "ODF 1.2" refer the documents of the standard as published at https://www.oasis-open.org/standards#opendocumentv1.2

The references "ODF 1.3" currently (as of July 2020) refer the documents of "Committee Specification 01" of the to become standard as published at https://docs.oasis-open.org/office/OpenDocument/v1.3/cs01/

The OpenDocumentFormat is standardized too as ISO/IEC 26300 "Information technology -- Open Document Format for Office Applications (OpenDocument) v1.2", and available from https://standards.iso.org/ittf/PubliclyAvailableStandards/index.html

The list items do not yet contain the information about the implementation in LibreOffice. Help to get this done is highly appreciated.

List of "implementation-defined" items

Cursor Position Setting

3.11 Cursor Position Setting, Part 1, ODF 1.2
3.11 Cursor Position Setting, Part 3, ODF 1.3

LibreOffice does not implement this processing instruction. No implementation defined values are supported.

Document Signatures

3.16 Document Signatures, Part 1, ODF 1.2
3.16 Document Signatures, Part 3, ODF 1.3

No signatures other than document signatures are supported.

Non-RDF Metadata

4.3.1 General, Part 1, ODF 1.2
4.3.1 General, Part 3, ODF 1.3

Existing Custom metadata elements will be preserved when consuming, but otherwise no new Custom metadata elements will be produced.

text:alphabetical-index-auto-mark-file

8.8.3 <text:alphabetical-index-auto-mark-file>, Part 1, ODF 1.2
8.8.3 <text:alphabetical-index-auto-mark-file>, Part 3, ODF 1.3

The index mark file is a newline-separated list of entries.

The encoding of the file is the platform dependent default encoding (e.g. Windows Code Page).

Lines that start with # are ignored as comments.

Entries are tokenised by semicolons ; as follows:

TextToSearchFor;AlternativeString;PrimaryKey;SecondaryKey;CaseSensitive;WordOnly

CaseSensitive and WordOnly are booleans, with values encoded as strings 0 and 1.

Leading and trailing blanks are ignored.

chart:coordinate-region

11.3 <chart:coordinate-region>, Part 3, ODF 1.3

LibreOffice has no non-predefined chart classes.

chart:plot-area>

11.5 <chart:plot-area>, Part 3, ODF 1.3

form:generic-control

13.5.25 <form:generic-control>, Part 1, ODF 1.2
13.5.25 <form:generic-control>, Part 3, ODF 1.3

The generic control may have a name and a service name and events and possibly more.

The only currently supported generic control is a navigation bar; it can be recognized by its attribute form:control-implementation="ooo:com.sun.star.form.component.NavigationToolBar".

It displays a label "Record N of M" and some navigation buttons to jump to the first, previous, next, and last record.

Event Types

14.4.3 Event Types, Part 1, ODF 1.2
14.5.3 Event Types, Part 3, ODF 1.3

The following events may be implemented:

Value of script:event-name Attribute Internal event name
dom:select "OnSelect"
office:insert-start "OnInsertStart"
office:insert-done "OnInsertDone"
office:mail-merge "OnMailMerge"
office:alpha-char-input "OnAlphaCharInput"
office:non-alpha-char-input "OnNonAlphaCharInput"
dom:resize "OnResize"
office:move "OnMove"
office:page-count-change "OnPageCountChange"
dom:mouseover "OnMouseOver"
dom:click "OnClick"
dom:mouseout "OnMouseOut"
office:load-error "OnLoadError"
office:load-cancel "OnLoadCancel"
office:load-done "OnLoadDone"
dom:load "OnLoad"
dom:unload "OnUnload"
office:start-app "OnStartApp"
office:close-app "OnCloseApp"
office:new "OnNew"
office:save "OnSave"
office:save-as "OnSaveAs"
dom:DOMFocusIn "OnFocus"
dom:DOMFocusOut "OnUnfocus"
office:print "OnPrint"
dom:error "OnError"
office:load-finished "OnLoadFinished"
office:save-finished "OnSaveFinished"
office:modify-changed "OnModifyChanged"
office:prepare-unload "OnPrepareUnload"
office:new-mail "OnNewMail"
office:toggle-fullscreen "OnToggleFullscreen"
office:save-done "OnSaveDone"
office:save-as-done "OnSaveAsDone"
office:copy-to "OnCopyTo"
office:copy-to-done "OnCopyToDone"
office:view-created "OnViewCreated"
office:prepare-view-closing "OnPrepareViewClosing"
office:view-close "OnViewClosed"
office:visarea-changed "OnVisAreaChanged"
office:create "OnCreate"
office:save-as-failed "OnSaveAsFailed"
office:save-failed "OnSaveFailed"
office:copy-to-failed "OnCopyToFailed"
office:title-changed "OnTitleChanged"
office:mode-changed "OnModeChanged"
office:save-to "OnSaveTo"
office:save-to-done "OnSaveToDone"
office:save-to-failed "OnSaveToFailed"
office:subcomponent-opened "OnSubComponentOpened"
office:subcomponent-closed "OnSubComponentClosed"
office:storage-changed "OnStorageChanged"
office:mail-merge-finished "OnMailMergeFinished"
office:field-merge "OnFieldMerge"
office:field-merge-finished "OnFieldMergeFinished"
office:layout-finished "OnLayoutFinished"
office:dblclick "OnDoubleClick"
office:contextmenu "OnRightClick"
office:content-changed "OnChange"
office:calculated "OnCalculate"

Forms may support the following events:

Value of script:event-name Attribute Internal event name
form:approveaction "XApproveActionListener::approveAction"
form:performaction "XActionListener::actionPerformed"
dom:change "XChangeListener::changed"
form:textchange "XTextListener::textChanged"
form:itemstatechange "XItemListener::itemStateChanged"
dom:DOMFocusIn "XFocusListener::focusGained"
dom:DOMFocusOut "XFocusListener::focusLost"
dom:keydown "XKeyListener::keyPressed"
dom:keyup "XKeyListener::keyReleased"
dom:mouseover "XMouseListener::mouseEntered"
form:mousedrag "XMouseMotionListener::mouseDragged"
dom:mousemove "XMouseMotionListener::mouseMoved"
dom:mousedown "XMouseListener::mousePressed"
dom:mouseup "XMouseListener::mouseReleased"
dom:mouseout "XMouseListener::mouseExited"
form:approvereset "XResetListener::approveReset"
dom:reset "XResetListener::resetted"
dom:submit "XSubmitListener::approveSubmit"
form:approveupdate "XUpdateListener::approveUpdate"
form:update "XUpdateListener::updated"
dom:load "XLoadListener::loaded"
form:startreload "XLoadListener::reloading"
form:reload "XLoadListener::reloaded"
form:startunload "XLoadListener::unloading"
dom:unload "XLoadListener::unloaded"
form:confirmdelete "XConfirmDeleteListener::confirmDelete"
form:approverowchange "XRowSetApproveListener::approveRowChange"
form:rowchange "XRowSetListener::rowChanged"
form:approvecursormove "XRowSetApproveListener::approveCursorMove"
form:cursormove "XRowSetListener::cursorMoved"
form:supplyparameter "XDatabaseParameterListener::approveParameter"
dom:error "XSQLErrorListener::errorOccured"
form:adjust "XAdjustmentListener::adjustmentValueChanged"

text:notes-configuration

16.29.3 <text:notes-configuration>, Part 1, ODF 1.2
16.31.3 <text:notes-configuration>, Part 3, ODF 1.3

The default values for text:note-class="footnote":

Attribute Default value
style:num-format "1"
style:num-letter-sync "false"
style:num-prefix ""
style:num-suffix  ""
text:citation-body-style-name "Footnote Anchor"
text:citation-style-name "Footnote Characters"
text:default-style-name "Footnote"
text:footnotes-position "page"
text:master-page-name "Footnote"
text:start-numbering-at "document"
text:start-value "1"
text:note-continuation-notice-backward ""
text:note-continuation-notice-forward ""

The default values for text:note-class="endnote":

Attribute Default value
style:num-format "i"
style:num-letter-sync "false"
style:num-prefix ""
style:num-suffix ""
text:citation-body-style-name "Endnote Anchor"
text:citation-style-name "Endnote Characters"
text:default-style-name "Endnote"
text:footnotes-position "document"
text:master-page-name "Endnote"
text:start-numbering-at "document"
text:start-value "1"
text:note-continuation-notice-backward ""
text:note-continuation-notice-forward ""

db:table-definition

19.85.4 <db:table-definition>, Part 1, ODF 1.2
19.85.4 <db:table-definition>, Part 3, ODF 1.3

LibreOffice does not support the element db:schema-definition or its children.

draw:extrusion-first-light-harsh

19.155 draw:extrusion-first-light-harsh, Part 1, ODF 1.2
19.155 draw:extrusion-first-light-harsh, Part 3, ODF 1.3

draw:extrusion-second-light-harsh

19.164 draw:extrusion-second-light-harsh, Part 1, ODF 1.2
19.164 draw:extrusion-second-light-harsh, Part 3, ODF 1.3

form:datasource

19.264 form:datasource, Part 1, ODF 1.2
19.264 form:datasource, Part 3, ODF 1.3

The mapping from data source names to specific instances of database front end documents is implemented by the com.sun.star.sdb.DatabaseContext service and stored in the configuration; refer to the API documentation below for details.

https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1sdb_1_1DatabaseContext.html

form:default-button

19.265 form:default-button, Part 1, ODF 1.2
19.265 form:default-button, Part 3, ODF 1.3

If multiple buttons with form:default-button attributes with values of true are present in a form, the first such button is the default for the form.

presentation:show-end-of-presentation-slide

19.414 presentation:show-end-of-presentation-slide, part 1, ODF 1.2
19.418 presentation:show-end-of-presentation-slide, part 3, ODF 1.3

LibreOffice does not implement this attribute.

19.419 presentation:show-logo, Part 3, ODF 1.3

The logo can be retrieved from: https://git.libreoffice.org/core/+/refs/heads/master/icon-themes/colibre/brand/shell/about.svg

presentation:speed

19.417 presentation:speed, Part 1, ODF 1.2
19.421 presentation:speed, Part 3, ODF 1.3

Value of presentation:speed attribute rate
slow 2.0s
medium 1.0s
fast 0.5s

style:leader-width

19.489 style:leader-width, Part 1, ODF 1.2
19.493 style:leader-width, Part 3, ODF 1.3

style:line-style

19.493 style:line-style, Part 1, ODF 1.2
19.497 style:line-style, Part 3, ODF 1.3

table:formula, Host-dependent Properties

19.642 table:formula, Part 1, ODF 1.2
19.646 table:formula, Part 3, ODF 1.3

The property HOST_LOCALE is implementation-defined.

table:name in <table:operation>

19.673.11 <table:operation>, Part 1, ODF 1.2
19.677.11 <table:operation>, Part 3, ODF 1.3

table:protection-key-digest-algorithm

19.698 table:protection-key-digest-algorithm, Part 1, ODF 1.2
19.702 table:protection-key-digest-algorithm, Part 3, ODF 1.3

The following algorithms are supported:

Identifying IRI algorithm
http://www.w3.org/2000/09/xmldsig#sha1 UTF16 LE/BE encoded StarOffice-SHA1, OOo legacy and allowed by ODF 1.1
http://www.w3.org/2000/09/xmldsig#sha1 UTF8 encoded SHA1, as required by ODF 1.2
http://www.w3.org/2000/09/xmldsig#sha256 UTF8 encoded SHA256, as required by ODF 1.2
http://www.w3.org/2001/04/xmlenc#sha256 UTF8 encoded SHA256, with W3C URI
http://docs.oasis-open.org/office/ns/table/legacy-hash-excel combined with loext:protection-key-digest-algorithm-2="http://www.w3.org/2000/09/xmldsig#sha1" Excel+SHA1 double-hash, see OFFICE-2112 https://wiki.oasis-open.org/office/Spreadsheet_Table_Protection_Options

table:show-empty

19.710 table:show-empty, Part 1, ODF 1.2
19.714 table:show-empty, Part 3, ODF 1.3

text:protection-key-digest-algorithm

19.851 text:protection-key-digest-algorithm, Part 1, ODF 1.2
19.857 text:protection-key-digest-algorithm, Part 3, ODF 1.3

The following algorithms are supported:

Identifying IRI algorithm
http://www.w3.org/2000/09/xmldsig#sha1 UTF16 LE/BE encoded StarOffice-SHA1, OOo legacy and allowed by ODF 1.1
http://www.w3.org/2000/09/xmldsig#sha1 UTF8 encoded SHA1, as required by ODF 1.2
http://www.w3.org/2000/09/xmldsig#sha256 UTF8 encoded SHA256, as required by ODF 1.2
http://www.w3.org/2001/04/xmlenc#sha256 UTF8 encoded SHA256, with W3C URI

chart:symbol-name

20.54 chart:symbol-name, Part 1, ODF 1.2
20.61 chart:symbol-name, Part 3, ODF 1.3

draw:visible-area-height

20.169 draw:visible-area-height, Part 1, ODF 1.2
20.176 draw:visible-area-height, Part 3, ODF 1.3

For embedded objects that are internal to LibreOffice, the object itself provides the visible area; for external embedded objects, the draw:visible-area-height attribute is used.

draw:visible-area-left

20.170 draw:visible-area-left, Part 1, ODF 1.2
20.177 draw:visible-area-left, Part 3, ODF 1.3

For embedded objects that are internal to LibreOffice, the object itself provides the visible area; for external embedded objects, the draw:visible-area-left attribute is used.

draw:visible-area-top

20.171 draw:visible-area-top, Part 1, ODF 1.2
20.177 draw:visible-area-top, Part 3, ODF 1.3

For embedded objects that are internal to LibreOffice, the object itself provides the visible area; for external embedded objects, the draw:visible-area-top attribute is used.

draw:visible-area-width

20.172 draw:visible-area-width, Part 1, ODF 1.2
20.178 draw:visible-area-width, Part 3, ODF 1.3

For embedded objects that are internal to LibreOffice, the object itself provides the visible area; for external embedded objects, the draw:visible-area-width attribute is used.

fo:wrap-option

20.223 fo:wrap-option, Part 1, ODF 1.2
20.230 fo:wrap-option, Part 3, ODF 1.3

In cells in spreadsheet documents, text in a cell with wrapping disabled is visible until the next non-empty cell starts.

In drawing objects, text with wrapping disabled is visible and the text is displayed according to the object's draw:textarea-horizontal-align and fo:text-align attributes.

In text boxes, text wrapping cannot be disabled.

presentation:transition-speed

20.231 presentation:transition-speed, Part 1, ODF 1.2
20.238 presentation:transition-speed, Part 3, ODF 1.3

Value of presentation:transition-speed attribute rate
slow 2.0s
medium 1.0s
fast 0.5s

style:line-break

20.307 style:line-break, Part 1, ODF 1.2
20.315 style:line-break, Part 3, ODF 1.3

style:text-line-through-width

20.367 style:text-line-through-width, Part 1, ODF 1.2
20.377 style:text-line-through-width, Part 3, ODF 1.3

style:text-overline-width

20.373 style:text-overline-width, Part 1, ODF 1.2
20.383 style:text-overline-width, Part 3, ODF 1.3

style:text-underline-width

20.382 style:text-underline-width, Part 1, ODF 1.2
20.392 style:text-underline-width, Part 3, ODF 1.3

style:use-window-font-color

20.385 style:use-window-font-color, Part 1, ODF 1.2
20.395 style:use-window-font-color, Part 3, ODF 1.3

Host-Defined Behaviors

3.4 Host-Defined Behaviors, Part 2, ODF 1.2
3.4 Host-Defined Behaviors, Part 4, ODF 1.3

Types

Unicode Normaization

4.2 Text (String), Part 2, ODF 1.2
4.2 Text (String), Part 4, ODF 1.3

Date

4.3.3 Date, Part 2, ODF 1.2
4.3.3 Date, Part 4, ODF 1.3

Logical

4.3.7 Logical (Number), Part2, ODF 1.2

caution, new structure in ODF 1.3

Complex Number

4.4 Complex Number, Part 2, ODF 1.2
4.4 Complex Number, Part 4, ODF 1.3

Processing a ReferenceList

4.11.12 Sequences (NumberSequence, NumberSequenceList, DateSequence, LogicalSequence, and ComplexSequence), Part 2, ODF 1.2
4.11.12 Sequences (NumberSequence, NumberSequenceList, DateSequence, LogicalSequence, and ComplexSequence), Part 4, ODF 1.3

Nonstandard Function Names

5.7 Nonstandard Function Names, Part 2, ODF 1.2
5.7 Nonstandard Function Names, Part 4, ODF 1.3

See https://wiki.documentfoundation.org/Development/ODF_Implementer_Notes/List_of_LibreOffice_OpenFormula_Extensions

Common Template for Functions and Operators

6.2 Common Template for Functions and Operators, Part 4, ODF 1.3

The implementation-defined behavior is documented in the online-help about functions.

For LibreOffice version n.k you access the help with https://help.libreoffice.org/n.k/en-US/text/shared/05/new_help.html. For example
https://help.libreoffice.org/7.1/en-US/text/shared/05/new_help.html

Standard Operators and Functions - Implicit Conversion Operators

Conversion to Number

6.3.5 Conversion to Number, Part 2, ODF 1.2
6.3.5 Conversion to Number, Part 4, ODF 1.3

Conversion to Integer

6.3.6 Conversion to Integer, Part 2, ODF 1.2
6.3.6 Conversion to Integer, Part 4, ODF 1.3

Conversion to Logic

6.3.12 Conversion to Logic, Part 2, ODF 1.2
6.3.12 Conversion to Logic, Part 4, ODF 1.3

Conversion to DateParam

6.3.15 Conversion to DateParam, Part 2, ODF 1.2
6.3.15 Conversion to DateParam, Part 4, ODF 1.3

Conversion to TimeParam

6.3.16 Conversion to TimeParam, Part 2, ODF 1.2
6.3.16 Conversion to TimeParam, Part 4, ODF 1.3

Standard Operators - Infix Operator Ordered Comparison

6.4.9 Infix Operator Ordered Comparison ("<", "<=", ">", ">="), Part 2, ODF 1.2
6.4.9 Infix Operator Ordered Comparison ("<", "<=", ">", ">="), Part4, ODF 1.3

Bit operation functions

6.6.1 General, Bit operation functions, Part 2, ODF 1.2
6.6.1 General, Bit operation functions, Part 4, ODF 1.3

Functions

The implementation-defined behavior of functions is documented in the online-help about the functions.

For LibreOffice version n.k you access the help with https://help.libreoffice.org/n.k/en-US/text/shared/05/new_help.html. For example
https://help.libreoffice.org/7.1/en-US/text/shared/05/new_help.html

Affected functions are (in order of the specification): IMARGUMENT, IMSUM, AMORLINC, COUNT, COUNTA, COUNTBLANK, FORMULA, ISEVEN, ISFORMULA, ISODD, N, VALUE, ATAN2, GCD, POWER, MAX (ODF 1.2), MAXA (ODF 1.2), MIN, MINA, STDEVA, STDEVPA, VARA, VARPA, BIN2DEC, BIN2HEX, BIN2OCT, DEC2BIN, DEC2HEX, DEC2OCT, HEX2BIN, HEX2DEC, HEX2OCT, OCT2BIN, OCT2DEC, OCT2HEX, CODE, TEXT

implementation-defined IRI of an alternative algorithm

manifest:algorithm-name

4.16.1 manifest:algorithm-name, Part 2, ODF 1.3

No implementation defined values produced currently, only "Blowfish CFB" and "http://www.w3.org/2001/04/xmlenc#aes256-cbc".

manifest:checksum-type

4.16.3 manifest:checksum-type, Part 2, ODF 1.3

No implementation defined values produced currently, only "SHA1/1K" and "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0#sha256-1k".

manifest:start-key-generation-name

4.16.6 manifest:start-key-generation-name, Part 2, ODF 1.3

No implementation defined values produced currently, only "SHA1" and "http://www.w3.org/2000/09/xmldsig#sha256".

manifest:PGPAlgorithm

4.17 manifest:PGPAlgorithm, Part 2, ODF 1.3

http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p

see [1]

manifest:key-derivation-name

4.8.9 manifest:key-derivation-name, Part 3, ODF 1.2
4.16.9 manifest:key-derivation-name, Part 2, ODF 1.3

No implementation defined values produced currently, only "PGP" and "PBKDF2".

manifest:preferred-view-mode

4.8.11 manifest:preferred-view-mode, Part 3, ODF 1.2
4.16.11 manifest:preferred-view-mode, Part 2, ODF 1.3

No implementation defined values supported (the attribute isn't implemented at all).


  1. section 1.2 Terminology, Part 1, ODF 1.2