Open Document Format for Office Applications (OpenDocument) v1.1
OASIS Standard, 1 Feb 2007
Specification URIs:
This Version:
http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.odt
http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.pdf
http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.html.zip
Previous Version:
http://www.oasis-open.org/committees/download.php/19275/OpenDocument-v1.0ed2-cs1.odt
http://www.oasis-open.org/committees/download.php/19274/OpenDocument-v1.0ed2-cs1.pdf
Latest Version:
http://docs.oasis-open.org/office/v1.1/OpenDocument-v1.1.odt
http://docs.oasis-open.org/office/v1.1/OpenDocument-v1.1.pdf
http://docs.oasis-open.org/office/v1.1/OpenDocument-v1.1.html.zip
Latest Approved Version:
http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.odt
http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.pdf
http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.html.zip
Technical Committee:
OASIS Open Document Format for Office Applications (OpenDocument) TC
Chair:
Michael Brauer, Sun Microsystems, Inc.
Editors:
Patrick Durusau, Individual
Michael Brauer, Sun Microsystems, Inc.
Lars Oppermann, Sun Microsystems, Inc.
Related Work:
This specification supersedes OASIS OpenDocument v1.0.
Declared XML Namespaces:
A list of XML namespaces declared by this specification is available in section 1.3.
Abstract:
This is the specification of the Open Document Format for Office Applications (OpenDocument) format, an open, XML-based file format for office applications, based on OpenOffice.org XML [OOo].
Status:
This document was last revised or approved by the membership of OASIS on the above date. The level of approval is also listed above. Check the current location noted above for possible later revisions of this document. This document is updated periodically on no particular schedule.
Technical Committee members should send comments on this specification to the Technical Committee's email list. Others should send comments to the Technical Committee by using the "Send A Comment" button on the Technical Committee's web page at
www.oasis-open.org/committees/office.
For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the Technical Committee web page
(www.oasis-open.org/committees/office/ipr.php.
The non-normative errata page for this specification is located at www.oasis-open.org/committees/office.
Notices
Copyright © OASIS® 2002–2007. All Rights Reserved. OASIS trademark, IPR and other policies apply.
All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification.
OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so.
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims.
The names "OASIS", “OpenDocument”, “Open Document Format” and “ODF” are trademarks of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see http://www.oasis-open.org/who/trademark.php for above guidance.
Table of Contents
1.5 Document Processing and Conformance 36
1.6 White-Space Processing and EOL Handling 37
1.7 MIME Types and File Name Extensions 37
2.1.1 Document Root Element Content Models 40
2.1.2 Document Root Attributes 41
2.2.1 Pre-Defined vs. Custom Metadata 42
2.3 Body Element and Document Types 43
2.3.3 Presentation Documents 47
2.3.4 Spreadsheet Documents 48
2.4.3 Index Access of Sequences 52
2.4.5 Name Access of Sequences 53
2.4.6 Cursor Position Setting 53
3.1 Pre-Defined Metadata Elements 59
3.1.9 Creation Date and Time 61
3.1.10 Modification Date and Time 61
4.1 Headings, Paragraphs and Basic Text Structure 69
4.1.3 Common Paragraph Elements Attributes 70
4.5 Page-bound graphical content 81
5 Paragraph Elements Content 87
5.1.1 White-space Characters 87
5.1.2 Soft Hyphens, Hyphens, and Non-breaking Blanks 89
5.2 Bookmarks and References 93
5.7 Change Tracking and Change Marks 98
5.8 Inline graphics and text-boxes 98
6.1 Common Characteristics of Field Elements 99
6.2.4 Page Continuation Text 104
6.2.9 Document Template Name Fields 110
6.3.1 Declaring Simple Variables 112
6.3.2 Setting Simple Variables 112
6.3.3 Displaying Simple Variables 113
6.3.4 Simple Variable Input Fields 114
6.3.5 Declaring User Variables 115
6.3.6 Displaying User Variables 115
6.3.7 User Variable Input Fields 116
6.3.8 Declaring Sequence Variables 117
6.3.9 Using Sequence Fields 118
6.4.2 Document Creation Date 121
6.4.3 Document Creation Time 121
6.4.4 Document Description 121
6.4.5 User-Defined Document Information 122
6.4.12 Document Revision Number 124
6.4.13 Document Edit Duration 124
6.4.14 Document Modification Time 124
6.4.15 Document Modification Date 125
6.4.16 Document Modified By 125
6.4.17 Document Statistics Fields 125
6.5.1 Database Field Data Source 127
6.5.2 Displaying Database Content 128
6.5.3 Selecting the Next Database Row 128
6.5.4 Selecting a Row Number 129
6.5.5 Displaying the Row Number 130
6.5.6 Display Current Database and Table 131
6.6.1 Page Variable Fields 131
6.6.3 Conditional Text Fields 133
6.6.8 Hidden Paragraph Fields 140
6.6.9 DDE Connection Fields 141
6.6.11 Table Formula Field 142
6.7 Common Field Attributes 142
6.7.1 Variable Value Types and Values 142
6.7.8 Number Formatting Style 147
7.1.1 Table of Content Index Marks 149
7.1.2 User-Defined Index Marks 150
7.1.3 Alphabetical Index Mark 151
7.1.4 Bibliography Index Mark 153
7.3.1 Table of Content Source 156
7.3.2 Table of Content Entry Template 158
7.4 Index of Illustrations 159
7.4.1 Index of Illustration Source 160
7.4.2 Illustration Index Entry Template 161
7.5.2 Table Index Entry Template 163
7.6.2 Object Index Entry Template 165
7.7.1 User-Defined Index Source 165
7.7.2 User-Defined Index Entry Template 167
7.8.1 Alphabetical Index Source 168
7.8.3 Alphabetical Index Entry Template 172
7.9.1 Bibliography Index Source 173
7.9.2 Bibliography Entry Template 174
7.12 Index Template Entries 175
7.12.1 Chapter Information 176
7.12.5 Bibliography Information 177
7.12.7 Hyperlink Start and End 179
7.12.8 Example of an Index Entry Configuration 180
8.3.1 Referencing Table Cells 200
8.5 Spreadsheet Document Content 211
8.5.2 Calculation Settings 211
8.5.3 Table Cell Content Validations 214
8.6.3 Database Source Table 225
8.6.4 Database Source Query 226
8.6.8 Subtotal Sort Groups 230
8.8.6 Data Pilot Subtotals 247
8.8.10 Data Pilot Display Info 249
8.8.11 Data Pilot Sort Info 250
8.8.12 Data Pilot Layout Info 251
8.8.13 Data Pilot Field Reference 252
8.8.16 Data Pilot Group Member 257
8.11 Change Tracking in Spreadsheets 259
8.11.6 Cell Content Deletion 262
8.11.13 Target Range Address, Source Range Address 267
8.11.15 Cell Content Change 269
8.11.18 Common Change Tracking Attributes 270
9.1 Enhanced Page Features for Graphical Applications 272
9.2.15 Common Drawing Shape Attributes 298
9.2.16 Common Shape Attributes for Text and Spreadsheet Documents 302
9.2.17 Common Drawing Shape Content 305
9.2.18 Common Shape Attribute Groups 305
9.2.20 Title and Description 307
9.3.10 Client Side Image Maps 323
9.5.2 Enhanced Geometry - Extrusion Attributes 339
9.5.3 Enhanced Geometry - Path Attributes 345
9.5.4 Enhanced Geometry - Text Path Attributes 349
9.5.5 Enhanced Geometry – Equation 350
9.5.6 Enhanced Geometry - Handle Attributes 352
9.6.1 Common Presentation Shape Attributes 356
9.7 Presentation Animations 358
9.8 SMIL Presentation Animations 365
9.8.1 Recommended Usage Of SMIL 366
9.8.2 Document Dependent SMIL Animation Attribute Values 367
9.8.3 SMIL Presentation Animation Attributes 369
9.10 Presentation Text Fields 375
9.10.3 Date and Time Field 375
9.11 Presentation Document Content 376
9.11.1 Presentation Declarations 376
9.11.2 Header field declaration 376
9.11.3 Footer field declaration 376
9.11.4 Date and Time field declaration 377
9.11.5 Presentation Settings 377
10.1 Introduction to Chart Documents 383
10.3 Title, Subtitle and Footer 387
10.14.1 Stock Chart Markers 401
11.1.20 Connection Resource 410
11.4 Common Form and Control Attributes 431
11.4.2 Control Implementation 432
11.5 Common Control Attributes 432
11.5.4 Value and Current Value 434
11.5.21 Relative Image Position 443
11.5.22 Database Binding Attributes 444
12.1.2 Creation Date and Time 453
12.1.3 Creation Date and Time String 453
12.2.2 Format Specification 454
12.2.3 Letter Synchronization in Number Formats 454
12.3 Change Tracking Metadata 455
12.4 Event Listener Tables 455
12.6.1 Container for DDE Connection Declarations 459
12.6.2 Declaring DDE Connections for Text Fields 459
12.6.3 Declaring DDE Connections for Tables 461
13.1 Basic Animation Elements 463
13.2 Animation Model Attributes 467
13.3 Common Animation Attributes 467
13.3.1 Animation Target Attributes 468
13.3.2 Animation Function Attributes 468
13.4.1 Animation Timing Attributes 471
13.4.2 Parallel Animations 475
13.4.3 Sequential Animations 475
13.4.4 Iterative Animations 475
14.3.1 Header and Footer Styles 486
14.4.1 Headers and Footers 489
14.5.1 Row and Column Styles 494
14.6 Font Face Declaration 496
14.6.1 CSS2/SVG Font Descriptors 496
14.6.4 Font Family Generic 500
14.7.8 Common Data Style Elements 518
14.7.9 Common Data Style Attributes 519
14.7.11 Common Data Style Child Element Attributes 523
14.9.1 Line Numbering Configuration 526
14.9.2 Notes Configuration Element 530
14.9.3 Bibliography Configuration 533
14.10.1 Common List-Level Style Attributes 536
14.10.2 Number Level Style 537
14.10.3 Bullet Level Style 538
14.10.5 List Level Style Example 541
14.11.1 Outline Level Style 542
14.12.2 Table Column Styles 544
14.13.1 Graphic and Presentation Styles 545
14.13.2 Drawing Page Style 545
14.14 Enhanced Graphic Style Elements 546
14.15 Presentation Page Layouts 559
14.15.1 Presentation Placeholder 559
15.1 Simple and Complex Formatting Properties 561
15.1.1 Simple Formatting Properties 561
15.1.2 Complex Formatting Properties 562
15.1.3 Processing Rules for Formatting Properties 562
15.2 Page Layout Formatting Properties 562
15.2.18 Maximum Footnote Height 568
15.2.20 Footnote Separator 569
15.2.22 Layout Grid Base Height 570
15.2.23 Layout Grid Ruby Height 571
15.2.26 Layout Grid Ruby Below 571
15.2.28 Layout Grid Display 572
15.3 Header Footer Formatting Properties 572
15.3.1 Fixed and Minimum heights 573
15.4 Text Formatting Properties 575
15.4.2 Text Transformations 575
15.4.11 Line-Through Text Style 578
15.4.15 Font Family Generic 580
15.4.18 Font Character Set 582
15.4.20 Relative Font Size 583
15.4.33 Text Underline Word Mode 589
15.4.34 Text Line-Through Word Mode 589
15.4.37 Text Background Color 590
15.4.39 Text Combine Start and End Characters 591
15.4.42 Text Rotation Angle 592
15.4.43 Text Rotation Scale 592
15.4.45 Hyphenation Remain Char Count 593
15.4.46 Hyphenation Push Char Count 593
15.4.47 Hidden or Conditional Text 593
15.5 Paragraph Formatting Properties 594
15.5.2 Minimum Line Height 595
15.5.4 Font-Independent Line Spacing 595
15.5.6 Text Align of Last Line 596
15.5.7 Justify Single Word 596
15.5.17 Left and Right Margins 603
15.5.19 Automatic Text Indent 604
15.5.20 Top and Bottom Margins 605
15.5.22 Break Before and Break After 605
15.5.23 Paragraph Background Color 606
15.5.24 Paragraph Background Image 606
15.5.31 Line Number Start Value 612
15.5.35 Vertical Alignment 613
15.5.37 Automatic Writing Mode 614
15.5.40 Background Transparency 615
15.6 Ruby Text Formatting Properties 615
15.7 Section Formatting Properties 616
15.7.4 Column Specification 618
15.7.7 Don't Balance Text Columns 621
15.7.9 Notes Configuration 622
15.8 Table Formatting Properties 622
15.8.3 Table Left and Right Margin 623
15.8.4 Table Top and Bottom Margin 624
15.8.7 Break Before and Break After 624
15.8.8 Table Background and Background Image 624
15.8.11 May Break Between Rows 625
15.8.12 Border Model Property 625
15.9 Column Formatting Properties 626
15.9.2 Optimal Table Column Width 627
15.9.3 Break Before and Break After 627
15.10 Table Row Formatting Properties 627
15.10.2 Optimal Table Row Height 628
15.10.4 Break Before and Break After 628
15.11 Table Cell Formatting Properties 629
15.11.1 Vertical Alignment 629
15.11.4 Vertical Glyph Orientation 630
15.12 List-Level Style Properties 635
15.13.8 Start Marker Width 639
15.13.10 Start Marker Center 639
15.13.11 End Marker Center 640
15.14.3 Secondary Fill Color 642
15.14.5 Gradient Step Count 642
15.14.9 Fill Image Rendering Style 643
15.14.11 Fill Image Tile Reference Point 644
15.14.12 Fill Image Tile Translation 645
15.14.13 None and Linear Opacity 645
15.15 Text Animation Properties 646
15.15.2 Animation Direction 647
15.15.3 Animation Start Inside 647
15.15.4 Animation Stop Inside 647
15.16 Text and Text Alignment Properties 648
15.16.1 Auto Grow Width and Height 648
15.16.4 Text Area Vertical Align 649
15.16.5 Text Area Horizontal Align 649
15.19 Connector Properties 654
15.19.1 Start Line Spacing 654
15.22 3D Geometry Properties 660
15.22.1 Horizontal Segments 660
15.22.4 Edge Rounding Mode 661
15.23 3D Lighting Properties 663
15.24 3D Texture Properties 664
15.25 3D Material Properties 665
15.26 3D Shadow Properties 666
15.27 Frame Formatting Properties 666
15.27.3 Maximum Width and Height 667
15.27.4 Left and Right Margins 668
15.27.5 Top and Bottom Margins 668
15.27.9 Horizontal Position 669
15.27.10 Horizontal Relation 670
15.27.11 Vertical Position 671
15.27.12 Vertical Relation 672
15.27.15 Border Line Width 673
15.27.22 Dynamic Wrap Threshold 675
15.27.23 Paragraph-only Wrapping 675
15.27.25 Contour Wrapping Mode 676
15.27.28 Overflow behavior 677
15.27.31 Wrap Influence on Position 678
15.28 Floating Frame Formatting Properties 679
15.28.4 Object Formatting Properties 680
15.29 Chart Formatting Properties 681
15.30 Chart Subtype Properties 682
15.30.1 Three-dimensional Charts 682
15.30.5 Bar Chart Properties 684
15.30.6 Stock Chart Properties 684
15.30.7 Line Chart Properties 685
15.30.8 Pie Chart Properties 686
15.30.10 Solid Charts Bars 686
15.30.11 Stacked Chart Bars 686
15.31 Chart Axes Properties 687
15.31.1 Linked Data Formats 687
15.32 Common Chart Properties 689
15.33 Statistical Properties 691
15.34 Plot Area Properties 693
15.35 Regression Curve Properties 693
15.36 Presentation Page Attributes 694
15.36.4 Transition Type or Family 698
15.36.5 Transition Subtype 698
15.36.6 Transition Direction 698
15.36.12 Background Objects Visible 700
15.36.13 Background Visible 700
15.36.16 Display Page Number 701
15.36.17 Display Date And Time 701
16 Data Types and Schema Definitions 702
16.3 Relax-NG Schema Suffix 708
17.5 Usage of IRIs Within Packages 711
17.7.2 Manifest Root Element 712
17.7.7 Relax-NG Schema Suffix 717
Appendix A. Strict Relax NG Schema 718
Appendix B. References 720
Appendix C. MIME Types and File Name Extensions (Non Normative) 722
Appendix D. Core Features Sets (Non Normative) 724
Appendix E. Accessibility Guidelines (Non Normative) 729
E.1. Title, Description and Caption of Graphical Elements 729
E.2. Hyperlink Titles 729
E.3. Tables in Presentations 730
E.4. Further Guidelines 730
Appendix F. Bidirectional (BiDi) Scripts,Numeric Digits Presentation and Calendars (Non Normative) 731
Appendix G. Changes From Previous Specification Versions (Non Normative) 733
G.1. Changes from “Open Office Specification 1.0 Committee Draft 1” 733
G.2. Changes from “Open Document Format for Office Applications (OpenDocument) 1.0 Committee Draft 2” 733
G.3. Changes from “Open Document Format for Office Applications (OpenDocument) v1.0” 734
G.4. Changes from “Open Document Format for Office Applications (OpenDocument) v1.0 (Second Edition)” 734
Appendix H. Acknowledgments (Non Normative) 737
This document defines an XML schema for office applications and its semantics. The schema is suitable for office documents, including text documents, spreadsheets, charts and graphical documents like drawings or presentations, but is not restricted to these kinds of documents.
The schema provides for high-level information suitable for editing documents. It defines suitable XML structures for office documents and is friendly to transformations using XSLT or similar XML-based tools.
Chapter 1 contains the introduction to the OpenDocument format. The structure of documents that conform to the OpenDocument specification is explained in chapter 2. Chapter 3 described the meta information that can be contained in such documents. Chapters 4 and 5 describe their text and paragraph content. Text Fields are described in chapter 6, text indices in chapter 7.
Chapter 8 describes the table content of a document in OpenDocument format, chapter 9 its graphical content, chapter 10 its chart content, and chapter 11 its form content. Content that is common to all documents is described in chapter 12. The integration of SMIL animation markup into the OpenDocument schema is described in chapter 13. Chapter 14 explains style information content, chapter 15 specifies formatting properties that are can be used within styles. The data types used by the OpenDocument schema are described in chapter 16.
The OpenDocument format makes use of a package concept. These packages are described in chapter 17.
Within this specification, the key words "shall", "shall not", "should", "should not" and "may" are to be interpreted as described in Annex H of [ISO/IEC Directives] if they appear in bold letters.
Table 1 lists the namespaces that are defined by the OpenDocument format and their default prefixes. For more information about XML namespaces, please refer to the Namespaces in XML specification [xml-names].
Table 1: XML Namespaces defined by the OpenDocument schema
Prefix |
Description |
Namespace |
---|---|---|
office |
For all common pieces of information that are not contained in another, more specific namespace. |
urn:oasis:names:tc:opendocument:xmlns: |
meta |
For elements and attributes that describe meta information. |
urn:oasis:names:tc:opendocument:xmlns: |
config |
For elements and attributes that describe application specific settings. |
urn:oasis:names:tc:opendocument:xmlns: |
text |
For elements and attributes that may occur within text documents and text parts of other document types, such as the contents of a spreadsheet cell. |
urn:oasis:names:tc:opendocument:xmlns: |
table |
For elements and attributes that may occur within spreadsheets or within table definitions of a text document. |
urn:oasis:names:tc:opendocument:xmlns: |
drawing |
For elements and attributes that describe graphic content. |
urn:oasis:names:tc:opendocument:xmlns: |
presentation |
For elements and attributes that describe presentation content. |
urn:oasis:names:tc:opendocument:xmlns: |
dr3d |
For elements and attributes that describe 3D graphic content. |
urn:oasis:names:tc:opendocument:xmlns: |
anim |
For elements and attributes that describe animation content. |
urn:oasis:names:tc:opendocument:xmlns: |
chart |
For elements and attributes that describe chart content. |
urn:oasis:names:tc:opendocument:xmlns: |
form |
For elements and attributes that describe forms and controls. |
urn:oasis:names:tc:opendocument:xmlns: |
script |
For elements and attributes that represent scripts or events. |
urn:oasis:names:tc:opendocument:xmlns: |
style |
For elements and attributes that describe the style and inheritance model used by the OpenDocument format as well as some common formatting attributes. |
urn:oasis:names:tc:opendocument:xmlns: |
number |
For elements and attributes that describe data style information. |
urn:oasis:names:tc:opendocument:xmlns: |
manifest |
For elements and attribute contained in the package manifest. |
urn:oasis:names:tc:opendocument:xmlns: |
Table 2 lists the namespaces that are defined by the OpenDocument format, but contain elements and attributes whose semantics are compatible to elements and attributes from other specifications.
Table 2: XML Namespaces defined by the OpenDocument schema that include elements and attributes that are compatible to elements and attributes of other standards.
Prefix |
Description |
Namespace |
---|---|---|
fo |
For attributes that are compatible to attributes defined in [XSL]. |
urn:oasis:names:tc:opendocument:xmlns: |
svg |
For elements and attributes that are compatible to elements or attributes defined in [SVG]. |
urn:oasis:names:tc:opendocument:xmlns: |
smil |
For attributes that are compatible to attributes defined in [SMIL20]. |
urn:oasis:names:tc:opendocument:xmlns: |
Table 3 lists the namespaces that are imported into the OpenDocument format and their default prefixes.
Table 3: XML Namespaces used by the OpenDocument schema
Prefix |
Description |
Namespace |
---|---|---|
dc |
The Dublin Core Namespace (see [DCMI]). |
http://purl.org/dc/elements/1.1/ |
xlink |
The XLink namespace (see [XLink]). |
http://www.w3.org/1999/xlink |
math |
MathML Namespace (see [MathML]) |
http://www.w3.org/1998/Math/MathML |
xforms |
The XForms namespace (see [XForms]). |
http://www.w3.org/2002/xforms |
The normative XML Schema for the OpenDocument format is embedded within this specification. It can be obtained from the specification document by concatenating all schema fragments contained in chapters 1 to 16. All schema fragments have a gray background color and line numbers.
The schema language used within this specification is Relax-NG (see [RNG]). The attribute default value feature specified in [RNG-Compat] is used to provide attribute default values.
The schema provided in this specification permits arbitrary content within meta information elements and formatting properties elements as described in section 1.5. Appendix A contains a schema that restricts the content within these elements to the attributes and elements defined in this specification.
Prefix for the normative Relax-NG schema:
<?xml version="1.0" encoding="UTF-8"?>
<!--
OASIS OpenDocument v1.1
Committee Specification1, 19 Oct 2006
Relax-NG Schema
$Id$
© 2002-2005 OASIS Open
© 1999-2005 Sun Microsystems, Inc.
-->
<grammar
xmlns="http://relaxng.org/ns/structure/1.0"
xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:math="http://www.w3.org/1998/Math/MathML"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
>
Documents that conform to the OpenDocument specification may contain elements and attributes not specified within the OpenDocument schema. Such elements and attributes must not be part of a namespace that is defined within this specification and are called foreign elements and attributes.
Conforming applications either shall read documents that are valid against the OpenDocument schema if all foreign elements and attributes are removed before validation takes place, or shall write documents that are valid against the OpenDocument schema if all foreign elements and attributes are removed before validation takes place.
Conforming applications that read and write documents may preserve foreign elements and attributes.
In addition to this, conforming applications should preserve meta information and the content of styles. This means:
The various <style:*-properties>
elements (see
section 15) may have
arbitrary attributes attached and may have arbitrary element content.
All attributes attached to these elements and elements contained
within these elements should be preserved (see section
15.1.3);
elements contained within the <office:meta>
element may have arbitrary element content
and should be preserved
(see section 2.2.1).
Foreign elements may have an office:process-content
attribute
attached that has the value true
or false
. If the attribute's value is
true
, or if the attribute
does not exist, the element's content should be processed by conforming
applications. Otherwise conforming applications should not process the element's
content, but may only
preserve its content. If the element's content should be processed,
the document itself shall
be valid against the OpenDocument schema if the unknown element is
replaced with its content only.
Conforming applications shall read documents containing processing instructions and should preserve them.
There are no rules regarding the elements and attributes that actually have to be supported by conforming applications, except that applications should not use foreign elements and attributes for features defined in the OpenDocument schema. See also appendix D.
<define name="office-process-content">
<optional>
<attribute name="office:process-content" a:defaultValue="true">
<ref name="boolean"/>
</attribute>
</optional>
</define>
In conformance with the W3C XML specification [XML1.0], optional white-space characters that are contained in elements that have element content (in other words that must contain elements only but not text) are ignored. This applies to the following white-space and end-of-line (EOL) [UNICODE] characters:
HORIZONTAL TABULATION (0x0009)
LINE FEED (0x000A)
CARRIAGE RETURN (0x000D)
SPACE (0x0020)
For any other element, white-spaces are preserved by default. Unless otherwise stated, there is no special processing for any of the four white-space characters. For some elements, different white-space processing may take place, for example the paragraph element.
The XML specification also requires that any of the four white-space characters that is contained in an attribute value is normalized to a SPACE character.
One of the following characters may be used to represent line ends:
LINE FEED
CARRIAGE RETURN
The sequence of the characters CARRIAGE RETURN and LINE FEED
Conforming to the XML specification, all the possible line ends are normalized to a single LINE FEED character.
As a consequence of the white-space and EOL processing rules, any CARRIAGE RETURN characters that are contained either in the text content of an element or in an attribute value must be encoded by the character entity 
. The same applies to the HORIZONTAL TABULATION and LINE FEED characters if they are contained in an attribute value.
Appendix C contains a list of MIME types and file name extensions to be used for office documents that conform to this specification and that are contained in a package (see section 2.1). This MIME types and extensions either have been registered following the procedures described in [RFC2048], or a registration is in progress.
Office documents that conform to this
specification but are not contained in a package should use the MIME type
text/xml
.
Only MIME types and extensions that have been registered according to [RFC2048] should used for office documents that conform to this specification. The MIME types and extensions listed in appendix C should be used where appropriate.
This chapter introduces the structure of the OpenDocument format. The chapter contains the following sections:
Document Roots
Document Metadata
Body Element and Document Types
Application Settings
Scripts
Font Face Declarations
Styles
Page Styles and Layout
In the OpenDocument format, each structural component is represented by an element, with associated attributes. The structure of a document in OpenDocument format applies to all document types. There is no difference between a text document, a spreadsheet or a drawing, apart from the content. Also, all document types may contain different styles. Document content that is common to all document types can be exchanged from one type of document to another.
A document root element is the primary element of a document inOpenDocument format. It contains the entire document. All types of documents, for example, text documents, spreadsheets, and drawing documents use the same types of document root elements.
The OpenDocument format supports the following two ways of document representation:
As a single XML document.
As a collection of several subdocuments within a package (see section 17), each of which stores part of the complete document. Each subdocument has a different document root and stores a particular aspect of the XML document. For example, one subdocument contains the style information and another subdocument contains the content of the document. All types of documents, for example, text and spreadsheet documents, use the same document and subdocuments definitions.
There are four types of subdocuments, each with different root elements. Additionally, the single XML document has its own root element, for a total of five different supported root elements. The root elements are summarized in the following table:
Root Element |
Subdocument Content |
Subdoc. Name in Package |
---|---|---|
|
Complete office document in a single XML document. |
n/a |
|
Document content and automatic styles used in the content. |
content.xml |
|
Styles used in the document content and automatic styles used in the styles themselves. |
styles.xml |
|
Document meta information, such as the author or the time of the last save action. |
meta.xml |
|
Application-specific settings, such as the window size or printer information. |
settings.xml |
The definitions of the root elements described
in the table above are analogous to the definition of <office:document>
, except that the
child element specification is suitably restricted.
<start>
<choice>
<ref name="office-document"/>
<ref name="office-document-content"/>
<ref name="office-document-styles"/>
<ref name="office-document-meta"/>
<ref name="office-document-settings"/>
</choice>
</start>
The content models of the five root elements is
summarized in the following table. Note that <office:document>
may contain all
supported top-level elements. None of the four subdocument root elements contain the
complete data, but four combined do.
Root Element |
metadata |
app. sett. |
script |
font decls |
style |
auto style |
mast style |
body |
---|---|---|---|---|---|---|---|---|
|
X |
X |
X |
X |
X |
X |
X |
X |
|
|
|
X |
X |
|
X |
|
X |
|
|
|
|
X |
X |
X |
X |
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
The <office:document>
root contains a
complete document:
<define name="office-document">
<element name="office:document">
<ref name="office-document-attrs"/>
<ref name="office-document-common-attrs"/>
<ref name="office-meta"/>
<ref name="office-settings"/>
<ref name="office-scripts"/>
<ref name="office-font-face-decls"/>
<ref name="office-styles"/>
<ref name="office-automatic-styles"/>
<ref name="office-master-styles"/>
<ref name="office-body"/>
</element>
</define>
The <office:document-content>
root
contains only the document content, along with the automatic styles
needed for the document content:
<define name="office-document-content">
<element name="office:document-content">
<ref name="office-document-common-attrs"/>
<ref name="office-scripts"/>
<ref name="office-font-face-decls"/>
<ref name="office-automatic-styles"/>
<ref name="office-body"/>
</element>
</define>
The <office:document-styles>
root
contains all named styles of a document, along with the automatic
styles needed for the named styles:
<define name="office-document-styles">
<element name="office:document-styles">
<ref name="office-document-common-attrs"/>
<ref name="office-font-face-decls"/>
<ref name="office-styles"/>
<ref name="office-automatic-styles"/>
<ref name="office-master-styles"/>
</element>
</define>
The <office:document-meta>
root contains
the meta information about a document.
<define name="office-document-meta">
<element name="office:document-meta">
<ref name="office-document-common-attrs"/>
<ref name="office-meta"/>
</element>
</define>
The <office:document-settings>
root
contains application specific settings to be applied when
processing this document.
<define name="office-document-settings">
<element name="office:document-settings">
<ref name="office-document-common-attrs"/>
<ref name="office-settings"/>
</element>
</define>
All root elements take an office:version
attribute, which
indicates which version of this specification it complies with. The
version number is in the format revision.version. If
the file has a version known to an XML processor, it may validate
the document. Otherwise, it is optional to validate the document,
but the document must be well formed.
<define name="office-document-common-attrs" combine="interleave">
<optional>
<attribute name="office:version">
<ref name="string"/>
</attribute>
</optional>
</define>
The <office:document>
element takes an
office:mimetype
attribute,
which indicates the type of document (text, spreadsheet etc.). This
attribute is especially important for flat XML files, where this is
the only way the type of document can be detected (in a package,
the MIME type is also present in a separate file, see section
17.4). Its values are the MIME types that are used for the packaged
variant of office documents (see section 1.7).
<define name="office-document-attrs" combine="interleave">
<attribute name="office:mimetype">
<ref name="string"/>
</attribute>
</define>
Metadata is general information about a document. In the OpenDocument format, all of the metadata elements are contained in an <office:meta> element, usually located at start of the document. Metadata elements may be omitted or occur multiple times. It is application-specific how to update multiple instances of the same elements.
<define name="office-meta">
<optional>
<element name="office:meta">
<ref name="office-meta-content"/>
</element>
</optional>
</define>
<define name="office-meta-content">
<ref name="anyElements"/>
</define>
<define name="office-meta-content-strict">
<zeroOrMore>
<ref name="office-meta-data"/>
</zeroOrMore>
</define>
In the OpenDocument schema the metadata is comprised of pre-defined metadata elements, user defined metadata, as well as custom metadata elements. The pre-defined metadata elements have defined semantics. They should be processed and updated by editing applications. They can be referenced from within the document through the use of suitable text fields.
User-defined metadata is a more generic mechanism which specifies a triplet of name, type, and value. Supporting applications can present these value to the user, making use of the supplied data type. The user-defined metadata can be referenced from within the document through the use of suitable text fields.
Custom metadata are arbitrary elements inside
<office:meta>
. Since
their semantics is not defined in this specification, conforming
applications in general cannot process or display this data.
Applications should
preserve this data when editing the document.
Example: Sample metadata of a document in OpenDocument format
<office:meta>
<dc:title>Title of the document</dc:title>
<dc:description>Description/Comment for the document</dc:description>
<meta:initial-creator>User Name</meta:initial-creator>
<meta:creation-date>1999-10-18T12:34:56</meta:creation-date>
<dc:creator>User Name</dc:creator>
<dc:date>1999-10-19T15:16:17</dc:date>
<meta:printed-by>User Name</meta:printed-by>
<meta:print-date>1999-10-20T16:17:18</meta:print-date>
<dc:subject>Description of the document</dc:subject>
<meta:editing-duration>PT5H10M10S</meta:editing-duration>
<meta:keyword>First keyword</meta:keyword>
<meta:keyword>Second keyword</meta:keyword>
<meta:keyword>Third keyword</meta:keyword>
<meta:template xlink:type="simple"
xlink:href="file:///c|/office52/share/template/german/finance/budget.vor"
xlink:title="Template name"
meta:date="1999-10-15T10:11:12" />
<meta:auto-reload
xlink:type="simple"
xlink:href="file:///..."
meta:delay="P60S" />
<dc:language>de-DE</dc:language>
<meta:user-defined meta:name="Field 1"
meta:value-type="string">Value 1</meta:user-defined>
<meta:user-defined meta:name="Field 2"
meta:value-type="float">1.234</meta:user-defined>
</office:meta>
The document body contains an element to indicate which type of content this document contains. Currently supported document types are:
text documents
drawing documents
presentation documents
spreadsheet documents
chart documents
image documents
All document types share the same content elements, but different document types place different restrictions on which elements may occur, and in what combinations. The document content is typically framed by a prelude and epilogue, which contain additional information for a specific type of document, like form data or variable declarations.
<define name="office-body">
<element name="office:body">
<ref name="office-body-content"/>
</element>
</define>
The content of text documents mainly consists of a sequence containing any number of paragraphs, tables, indices, text frames, text sections, and graphical elements. Additionally, a text document may contain forms, change tracking information and variable declarations. Each of these is defined in the document prelude, and may be referenced from the document content.
<define name="office-body-content" combine="choice">
<element name="office:text">
<ref name="office-text-attlist"/>
<ref name="office-text-content-prelude"/>
<zeroOrMore>
<ref name="office-text-content-main"/>
</zeroOrMore>
<ref name="office-text-content-epilogue"/>
</element>
</define>
The text document prelude contains the document's form data, change tracking information, and variable declarations. To allow office applications to implement functionality that usually is available in spreadsheets for text documents, it may also contain elements that implement enhanced table features. See also section 2.3.4.
<define name="office-text-content-prelude">
<ref name="office-forms"/>
<ref name="text-tracked-changes"/>
<ref name="text-decls"/>
<ref name="table-decls"/>
</define>
The main document content contains any sequence of text content elements, which includes paragraphs (and headings), text sections (and indices), tables, and graphical shapes. As an alternative, a text document may contain of a single page sequence.
It is not required that a text document contains a paragraph. A text document may consist of a sequence frames only.
<define name="office-text-content-main">
<choice>
<zeroOrMore>
<ref name="text-content"/>
</zeroOrMore>
<group>
<ref name="text-page-sequence"/>
<zeroOrMore>
<choice>
<ref name="draw-a"/>
<ref name="shape"/>
</choice>
</zeroOrMore>
</group>
</choice>
</define>
<define name="text-content">
<choice>
<ref name="text-h"/>
<ref name="text-p"/>
<ref name="text-list"/>
<ref name="text-numbered-paragraph"/>
<ref name="table-table"/>
<ref name="draw-a"/>
<ref name="text-section"/>
<ref name="text-soft-page-break"/>
<ref name="text-table-of-content"/>
<ref name="text-illustration-index"/>
<ref name="text-table-index"/>
<ref name="text-object-index"/>
<ref name="text-user-index"/>
<ref name="text-alphabetical-index"/>
<ref name="text-bibliography"/>
<ref name="shape"/>
<ref name="change-marks"/>
</choice>
</define>
There are no text documents specific epilogue elements, but the epilogue may contain elements that implement enhanced table features. See also section 2.3.4.
<define name="office-text-content-epilogue">
<ref name="table-functions"/>
</define>
There is a common use case for large documents
to be edited in separate entities, such that there is a 'global'
document, containing several linked constituent subdocuments. This can be implemented by
using linked text sections (see section 4.4). To facilitate an
editing application adapting the user interface to better support
the notion of 'global' document with constituent parts (as opposed
to a document with arbitrary linked content), the text:global
flag can be used. If set to
true
, it informs applications that
linked sections in this document have part-of semantics. The actual
XML representation of the sections does not change.
<define name="office-text-attlist" combine="interleave">
<optional>
<attribute name="text:global" a:defaultValue="false">
<ref name="boolean"/>
</attribute>
</optional>
</define>
The text:use-soft-page-breaks
attribute
specifies whether the document contains soft page breaks.
A soft page break is a page break that a has
been included by a page oriented processor at a position where the
document itself does not include a page break (e.g. by using the
fo:break-before
and
fo:break-after
formatting
properties described in section 15.5.2).
Soft page breaks are specified by the
<text:soft-page-break>
elements described in sections 4.7 and 5.1.1:Soft Page breaks.
The use of the <text:soft-page-break>
elements is
always optional. An application generating the format may include the element if it has
computed a paginated layout. A consuming application may handle the element while
computing the layout, but it shall not depend on its existence.
Soft page breaks are only supported within text documents.
A generating application that stores soft page
breaks shall indicate this
by setting the text:use-page-breaks
attribute to
true. A generating application
that does not store soft page breaks shall indicate that by omitting this
attribute, or by setting it to false.
An application that does not support pagination
and soft page-breaks, that modifies an OpenDocument file, which
includes soft page-breaks, shall at least set the text:use-page-breaks
attribute to
false
(or remove it). It
should also remove the
text:soft-page-break elements from the document but is not required
to do so.
An application that computes a paginated layout of a document should provide a facility to turn on export of soft page breaks for the purposes of consistent page breaks and for proper conversion to digital talking book formats (such as [DAISY]).
For <text:soft-page-break>
elements that
appear within table rows, the maximum number of <text:soft-page-break>
elements that
appear within the single table cells determines the number of page
breaks that appear within the table row. The <text:soft-page-break>
elements
contained in each cell determine the positions where these page
breaks appear within the cell content.
Similarly, <text:soft-page-break>
elements that
appear within text boxes and other content displayed outside the
text flow, do not start a new page, but only indicate where the
text-box's content breaks between two pages.
<define name="office-text-attlist" combine="interleave">
<optional>
<attribute name="text:use-soft-page-breaks" a:defaultValue="false">
<ref name="boolean"/>
</attribute>
</optional>
</define>
The content of drawing document consists of a sequence of draw pages.
<define name="office-body-content" combine="choice">
<element name="office:drawing">
<ref name="office-drawing-attlist"/>
<ref name="office-drawing-content-prelude"/>
<ref name="office-drawing-content-main"/>
<ref name="office-drawing-content-epilogue"/>
</element>
</define>
<define name="office-drawing-attlist">
<empty/>
</define>
The drawing document prelude may contain text declarations only. To allow office applications to implement functionality that usually is available in spreadsheets for drawing documents, it may also contain elements that implement enhanced table features. See also section 2.3.4.
<define name="office-drawing-content-prelude">
<ref name="text-decls"/>
<ref name="table-decls"/>
</define>
The main document content contains a sequence of draw pages.
<define name="office-drawing-content-main">
<zeroOrMore>
<ref name="draw-page"/>
</zeroOrMore>
</define>
There are no drawing documents specific epilogue elements, but the epilogue may contain elements that implement enhanced table features. See also section 2.3.4.
<define name="office-drawing-content-epilogue">
<ref name="table-functions"/>
</define>
The content of presentation document consists of a sequence of draw pages.
<define name="office-body-content" combine="choice">
<element name="office:presentation">
<ref name="office-presentation-attlist"/>
<ref name="office-presentation-content-prelude"/>
<ref name="office-presentation-content-main"/>
<ref name="office-presentation-content-epilogue"/>
</element>
</define>
<define name="office-presentation-attlist">
<empty/>
</define>
The presentation document prelude equals the one of a drawing document, but may contain some additional declarations. See also section 2.3.2.
<define name="office-presentation-content-prelude">
<ref name="text-decls"/>
<ref name="table-decls"/>
<ref name="presentation-decls"/>
</define>
The main document content contains a sequence of draw pages.
<define name="office-presentation-content-main">
<zeroOrMore>
<ref name="draw-page"/>
</zeroOrMore>
</define>
The epilogue of presentation documents may contain presentation settings. Additionally, it may contain elements that implement enhanced table features. See also section 2.3.4.
<define name="office-presentation-content-epilogue">
<ref name="presentation-settings"/>
<ref name="table-functions"/>
</define>
The content of spreadsheet documents mainly consists of a sequence of tables. Additionally, a spreadsheet document may contain forms, change tracking information and various kinds of declarations that simplify the usage of spreadsheet tables and their analysis. Each of these are contained in either the document prelude, or the document epilogue.
<define name="office-body-content" combine="choice">
<element name="office:spreadsheet">
<ref name="office-spreadsheet-attlist"/>
<ref name="office-spreadsheet-content-prelude"/>
<ref name="office-spreadsheet-content-main"/>
<ref name="office-spreadsheet-content-epilogue"/>
</element>
</define>
The spreadsheet document prelude contains the document's form data, change tracking information, calculation setting for formulas, validation rules for cell content and declarations for label ranges.
<define name="office-spreadsheet-content-prelude">
<optional>
<ref name="table-tracked-changes"/>
</optional>
<ref name="text-decls"/>
<ref name="table-decls"/>
</define>
<define name="table-decls">
<optional>
<ref name="table-calculation-settings"/>
</optional>
<optional>
<ref name="table-content-validations"/>
</optional>
<optional>
<ref name="table-label-ranges"/>
</optional>
</define>
The main document is a list of tables.
<define name="office-spreadsheet-content-main">
<zeroOrMore>
<ref name="table-table"/>
</zeroOrMore>
</define>
The epilogue of spreadsheet documents contains declarations for named expressions, database ranges, data pilot tables, consolidation operations and DDE links.
<define name="office-spreadsheet-content-epilogue">
<ref name="table-functions"/>
</define>
<define name="table-functions">
<optional>
<ref name="table-named-expressions"/>
</optional>
<optional>
<ref name="table-database-ranges"/>
</optional>
<optional>
<ref name="table-data-pilot-tables"/>
</optional>
<optional>
<ref name="table-consolidation"/>
</optional>
<optional>
<ref name="table-dde-links"/>
</optional>
</define>
The content of chart documents mainly consists of a chart element.
<define name="office-body-content" combine="choice">
<element name="office:chart">
<ref name="office-chart-attlist"/>
<ref name="office-chart-content-prelude"/>
<ref name="office-chart-content-main"/>
<ref name="office-chart-content-epilogue"/>
</element>
</define>
<define name="office-chart-attlist">
<empty/>
</define>
To allow office applications to implement functionality that usually is available in spreadsheets for the table that may be contained in a chart, the chart document prelude may contain elements that implement enhanced table features. See also section 2.3.4.
<define name="office-chart-content-prelude">
<ref name="text-decls"/>
<ref name="table-decls"/>
</define>
The main document is a chart element only.
<define name="office-chart-content-main">
<ref name="chart-chart"/>
</define>
There are no chart documents specific epilogue elements, but the epilogue may contain elements that implement enhanced table features. See also section 2.3.4.
<define name="office-chart-content-epilogue">
<ref name="table-functions"/>
</define>
The content of an image document is a frame element only. The frame element must contain a single image element.
<define name="office-body-content" combine="choice">
<element name="office:image">
<ref name="office-image-attlist"/>
<ref name="office-image-content-prelude"/>
<ref name="office-image-content-main"/>
<ref name="office-image-content-epilogue"/>
</element>
</define>
<define name="office-image-attlist">
<empty/>
</define>
The image document prelude is empty.
<define name="office-image-content-prelude">
<empty/>
</define>
The main document content contains a frame only.
<define name="office-image-content-main">
<ref name="draw-frame"/>
</define>
There are no image documents specific epilogue elements.
<define name="office-image-content-epilogue">
<empty/>
</define>
Application settings are contained in a
<office:settings>
element.
<define name="office-settings">
<optional>
<element name="office:settings">
<oneOrMore>
<ref name="config-config-item-set"/>
</oneOrMore>
</element>
</optional>
</define>
The settings for office
applications may be divided into several categories each
represented by a <config:config-item-set>
element.
For instance the following two categories may exist:
Document settings, for example default printer.
View settings, for example zoom level.
The <config:config-item-set
> element is
a container element for all types of setting elements. The settings
can be contained in the element is any order.
<define name="config-config-item-set">
<element name="config:config-item-set">
<ref name="config-config-item-set-attlist"/>
<ref name="config-items"/>
</element>
</define>
<define name="config-items">
<oneOrMore>
<choice>
<ref name="config-config-item"/>
<ref name="config-config-item-set"/>
<ref name="config-config-item-map-named"/>
<ref name="config-config-item-map-indexed"/>
</choice>
</oneOrMore>
</define>
The config:name
attribute identifies the
name of the setting container. For top level <config:config-item-set>
elements,
that are elements that are direct children of the <office:settings>
element, the name
should be preceded by a namespace prefix that identifies the
application the settings belong to.
<define name="config-config-item-set-attlist" combine="interleave">
<attribute name="config:name">
<ref name="string"/>
</attribute>
</define>
Example:
<office:settings>
<config:config-item-set xmlns:ooo="http://www.openoffice.org/...";
config:name="ooo:view-settings">
<config:config-item config:name="ViewAreaTop"
config:type="int">0</config:config-item>
</config:config-item-set>
</office:settings>
The <config:config-item>
element
contains all base settings. The value of the setting is stored in
the element.
<define name="config-config-item">
<element name="config:config-item">
<ref name="config-config-item-attlist"/>
<text/>
</element>
</define>
The config:name attribute identifies the name of the setting.
<define name="config-config-item-attlist" combine="interleave">
<attribute name="config:name">
<ref name="string"/>
</attribute>
</define>
The config:type attribute identifies the data type of setting.
<define name="config-config-item-attlist" combine="interleave">
<attribute name="config:type">
<choice>
<value>boolean</value>
<value>short</value>
<value>int</value>
<value>long</value>
<value>double</value>
<value>string</value>
<value>datetime</value>
<value>base64Binary</value>
</choice>
</attribute>
</define>
The <config:
element is a container element for sequences. The order specifies
the index of the elementsconfig-item-map-indexed>
<define name="config-config-item-map-indexed">
<element name="config:config-item-map-indexed">
<ref name="config-config-item-map-indexed-attlist"/>
<oneOrMore>
<ref name="config-config-item-map-entry"/>
</oneOrMore>
</element>
</define>
The config:name attribute identifies the name of the setting sequence.
<define name="config-config-item-map-indexed-attlist" combine="interleave">
<attribute name="config:name">
<ref name="string"/>
</attribute>
</define>
The <config:
element
represents an entry in an indexed or named settings sequence. It is
a container element for all types of setting elements.config-item-map-entry>
<define name="config-config-item-map-entry">
<element name="config:config-item-map-entry">
<ref name="config-config-item-map-entry-attlist"/>
<ref name="config-items"/>
</element>
</define>
The config:name attribute identifies the name of the setting sequence.
<define name="config-config-item-map-entry-attlist" combine="interleave">
<optional>
<attribute name="config:name">
<ref name="string"/>
</attribute>
</optional>
</define>
The <config:
element
is a container element for sequences, where each setting in the
sequence is identified by its name.config-item-map-named>
<define name="config-config-item-map-named">
<element name="config:config-item-map-named">
<ref name="config-config-item-map-named-attlist"/>
<oneOrMore>
<ref name="config-config-item-map-entry"/>
</oneOrMore>
</element>
</define>
The config:name attribute identifies the name of the setting sequence.
<define name="config-config-item-map-named-attlist" combine="interleave">
<attribute name="config:name">
<ref name="string"/>
</attribute>
</define>
A common view setting for editing applications is the position where the text cursor was while saving the document. For WYSIWYG applications, this usually will be a position within a paragraph only. For applications that provide an XML based view of the document, the cursor position could be also between arbitrary elements, or even within tags.
To represent a text cursor position within a
document, a processing instruction with PITarget
opendocument
(see §2.6 of [XML1.0])
should be used. The name
of the cursor position processing instruction, cursor-position
, shall follow the PITarget
opendocument
. The processing instruction
may have arbitrary application specific attributes, for instance to
connect the cursor position with a certain view of the document,
where the views themselves are specified as application specific
settings. The syntax for these attributes shall be the same as for attributes
within XML start tags.
Where a text cursor position is not sufficient to recreate a document view, applications may use arbitrary document specific settings in addition to the cursor position processing instruction. They may also use arbitrary document specific settings if the cursor position is not a text cursor position, but for instance a selection of drawing objects.
Example: cursor position processing instruction
<text:p>This is<?opendocument cursor-position view-id="view1"?> an example.</text:p>
A document may contain several scripts in
different scripting languages. Each script is represented by a
<office:script>
element.
All these script elements are contained in a single <office:scripts>
element.
Scripts do not imply a scripting language or an object model. A script can for instance operate on the Document Object Model (DOM) composed from the XML representation of a document in OpenDocument format (see [DOM2]), or on an application specific API.
Scripts cannot modify a document while the document is loading. However, some events are called immediately after the document is loaded.
In addition to <office:script>
elements, the
<office:scripts>
element
may also contain an <office:event-listeners>
element which contains the events assigned to the document itself.
Examples for these are events called when the document is opened or
closed. See section 12.4 for more information on the <office:event-listeners>
element.
<define name="office-scripts">
<optional>
<element name="office:scripts">
<zeroOrMore>
<ref name="office-script"/>
</zeroOrMore>
<optional>
<ref name="office-event-listeners"/>
</optional>
</element>
</optional>
</define>
The <office:script>
element contains
script language specific content. In most situations, the element
contains the source code of the script, but it may also contain a
compiled version of the script or a link to some external script
code.
<define name="office-script">
<element name="office:script">
<ref name="office-script-attlist"/>
<mixed>
<ref name="anyElements"/>
</mixed>
</element>
</define>
The attribute script:language
specifies the language
of the script by its name. Since script language names are
application specific, the name should be preceded by a namespace
prefix.
<define name="office-script-attlist">
<attribute name="script:language">
<ref name="string"/>
</attribute>
</define>
A document in OpenDocument format may contain font face declarations. A font face declaration provides information about the fonts used by the author of a document, so that these fonts or fonts that are very close to these fonts may be located on other systems. See section 14.6 for details.
<define name="office-font-face-decls">
<optional>
<element name="office:font-face-decls">
<zeroOrMore>
<ref name="style-font-face"/>
</zeroOrMore>
</element>
</optional>
</define>
The OpenDocument format supports the following types of styles:
Common styles
Most office applications support styles within their user
interface. Within this specification, the XML representations of
such styles are referred to as styles. When a differentiation from
the other types of styles is required, they are referred to as
common styles. The term common indicates that this is the
type of style that an office
application user considers to be a style.
Automatic styles
An automatic style
contains formatting properties that, in the user interface view of
a document, are assigned to an object such as a paragraph. The term
automatic indicates that the style is generated
automatically. In other words, formatting properties that are
immediately assigned to a specific object are represented by an
automatic style. This way, a separation of content and layout is
achieved.
Master styles
A master style is a common style that contains formatting
information and additional content that is displayed with the
document content when the style is applied. An example of a master
style are master pages. Master pages can be used in graphical
applications. In this case, the additional content is any drawing
shapes that are displayed as the background of the draw page.
Master pages can also be used in text documents. In this case, the
additional content is the headers and footers. Please note that the
content that is contained within master styles is additional
content that influences the representation of a document but does
not change the content of a document.
As far as the office application user is concerned, all types of styles are part of the document. They represent the output device-independent layout and formatting information that the author of a document has used to create or edit the document. The assumption is that the author of the document wants this formatting and layout information to be preserved when the document is reloaded or displayed on any device, because this is common practice for documents created by word processors.
This type of style information differs from [CSS2] or [XSLT] style sheets that are used to display a document. An additional style sheet for CSS, XSLT, and so on, is required to display a document in OpenDocument format on a certain device. This style sheet must take into account the styles in the document as well as the requirements and capabilities of the output device. The ideal case is that this style sheet depends on the output device only.
See section 14 for more information on styles.
Common and automatic styles have the same XML representation, but they are contained within two distinct container elements, as follows:
<office:styles>
for common
styles
<office:automatic-styles>
for
automatic styles
Master styles are contained within a container element of its own:
<office:master-styles>
<define name="office-styles">
<optional>
<element name="office:styles">
<interleave>
<ref name="styles"/>
<zeroOrMore>
<ref name="style-default-style"/>
</zeroOrMore>
<optional>
<ref name="text-outline-style"/>
</optional>
<zeroOrMore>
<ref name="text-notes-configuration"/>
</zeroOrMore>
<optional>
<ref name="text-bibliography-configuration"/>
</optional>
<optional>
<ref name="text-linenumbering-configuration"/>
</optional>
<zeroOrMore>
<ref name="draw-gradient"/>
</zeroOrMore>
<zeroOrMore>
<ref name="svg-linearGradient"/>
</zeroOrMore>
<zeroOrMore>
<ref name="svg-radialGradient"/>
</zeroOrMore>
<zeroOrMore>
<ref name="draw-hatch"/>
</zeroOrMore>
<zeroOrMore>
<ref name="draw-fill-image"/>
</zeroOrMore>
<zeroOrMore>
<ref name="draw-marker"/>
</zeroOrMore>
<zeroOrMore>
<ref name="draw-stroke-dash"/>
</zeroOrMore>
<zeroOrMore>
<ref name="draw-opacity"/>
</zeroOrMore>
<zeroOrMore>
<ref name="style-presentation-page-layout"/>
</zeroOrMore>
</interleave>
</element>
</optional>
</define>
<define name="office-automatic-styles">
<optional>
<element name="office:automatic-styles">
<interleave>
<ref name="styles"/>
<zeroOrMore>
<ref name="style-page-layout"/>
</zeroOrMore>
</interleave>
</element>
</optional>
</define>
<define name="office-master-styles">
<optional>
<element name="office:master-styles">
<interleave>
<zeroOrMore>
<ref name="style-master-page"/>
</zeroOrMore>
<optional>
<ref name="style-handout-master"/>
</optional>
<optional>
<ref name="draw-layer-set"/>
</optional>
</interleave>
</element>
</optional>
</define>
<define name="styles">
<interleave>
<zeroOrMore>
<ref name="style-style"/>
</zeroOrMore>
<zeroOrMore>
<ref name="text-list-style"/>
</zeroOrMore>
<zeroOrMore>
<ref name="number-number-style"/>
</zeroOrMore>
<zeroOrMore>
<ref name="number-currency-style"/>
</zeroOrMore>
<zeroOrMore>
<ref name="number-percentage-style"/>
</zeroOrMore>
<zeroOrMore>
<ref name="number-date-style"/>
</zeroOrMore>
<zeroOrMore>
<ref name="number-time-style"/>
</zeroOrMore>
<zeroOrMore>
<ref name="number-boolean-style"/>
</zeroOrMore>
<zeroOrMore>
<ref name="number-text-style"/>
</zeroOrMore>
</interleave>
</define>
The following examples illustrate the different types of OpenDocument styles.
Example: OpenDocument styles
<office:document ...>
<office:styles>
...
</office:styles>
<office:automatic-styles>
...
</office:automatic-styles>
<office:master-styles>
...
</office:master-styles>
</office:document>
The style and layout of the pages in a document is determined by:
Page Layouts
Master Pages
A page layout describes the physical properties or geometry of a page, for example, page size, margins, header height, and footer height.
A master page is a template for pages in a document. It contains a reference to a page layout which specifies the physical properties of the page and can also contain static content that is displayed on all pages in the document that use the master page. Examples of static content are headers, footers, or background graphics.
If a text or spreadsheet document is displayed in a paged layout, the master pages are instantiated to generate a sequence of pages containing the document content. When a master page is instantiated, an empty page is generated with the properties of the page master and the static content of the master page. The body of the page is then filled with content. If multiple pages in a document use the same master page, the master page can be instantiated several times within the document.
In text and spreadsheet documents, a master page
can be assigned to paragraph and table styles using a style:master-page-name
attribute. Each
time the paragraph or table style is applied to text, a page break
is inserted before the paragraph or table. The page that starts at
the page break position uses the specified master page.
In drawings and presentations, master pages can
be assigned to drawing pages using a style:parent-style-name
attribute.
Note: The OpenDocument paging methodology differs significantly from the methodology used in [XSL]. In XSL, headers and footers are contained within page sequences that also contain the document content. In the OpenDocument format, headers and footers are contained in page styles. With either approach, the content of headers and footers can be changed or omitted without affecting the document content.
Page layouts are described in section 14.3. Master pages are described in section 14.4.
The metadata elements borrow heavily upon the metadata standards developed by the Dublin Core Metadata Initiative (http://www.dublincore.org). Metadata elements drawn directly from the Dublin Core work use its namespace prefix (see section 1.3).
There is a set of pre-defined metadata elements which should be processed and updated by the applications. Metadata elements may be omitted or occur multiple times. It is application-specific how to update multiple instances of the same elements.
The <meta:generator>
element contains a
string that identifies the application or tool that was used to
create or last modify the XML document. This string should match the definition for
user-agents in the HTTP protocol a specified in section 14.43 of
[RFC2616]. The generator string should allow product versions to
differ between all released versions of a user agent, for instance
by including build ids or patch level information.
Conforming applications may use the generator string to work around bugs that exist or existed in certain applications, but shall not deliberately implement a different behavior depending on a certain generator string.
If the application that created the document could not provide an identifier string, the application does not export this element. If another application modifies the document and it cannot provide a unique identifier, it shall not export the original identifier belonging to the application that created the document.
<define name="office-meta-data" combine="choice">
<element name="meta:generator">
<ref name="string"/>
</element>
</define>
The <dc:title>
element specifies the
title of the document.
<define name="office-meta-data" combine="choice">
<element name="dc:title">
<ref name="string"/>
</element>
</define>
The <dc:description>
element contains a
brief description of the document.
<define name="office-meta-data" combine="choice">
<element name="dc:description">
<ref name="string"/>
</element>
</define>
The <dc:subject>
element specifies the
subject of the document.
<define name="office-meta-data" combine="choice">
<element name="dc:subject">
<ref name="string"/>
</element>
</define>
The <meta:keyword>
element contains a
keyword pertaining to the document. The metadata can contain any
number of <meta:keyword>
elements, each element specifying one keyword.
<define name="office-meta-data" combine="choice">
<element name="meta:keyword">
<ref name="string"/>
</element>
</define>
The <meta:initial-creator>
element
specifies the name of the person who created the document
initially.
<define name="office-meta-data" combine="choice">
<element name="meta:initial-creator">
<ref name="string"/>
</element>
</define>
The <dc:creator>
element specifies the
name of the person who last modified the document. The name of this
element was chosen for compatibility with the Dublin Core, but this
definition of "creator" used here differs from Dublin Core, which
defines creator as "An entity primarily responsible for making the
content of the resource." In OpenDocument terminology, the last
person to modify the document is primarily responsible for making
the content of the document.
<define name="office-meta-data" combine="choice">
<ref name="dc-creator"/>
</define>
<define name="dc-creator">
<element name="dc:creator">
<ref name="string"/>
</element>
</define>
The <meta:printed-by>
element specifies
the name of the last person who printed the document.
<define name="office-meta-data" combine="choice">
<element name="meta:printed-by">
<ref name="string"/>
</element>
</define>
The <meta:creation-date>
element
specifies the date and time when the document was created
initially.
To conform with [xmlschema-2], the date and time format is YYYY-MM-DDThh:mm:ss.
<define name="office-meta-data" combine="choice">
<element name="meta:creation-date">
<ref name="dateTime"/>
</element>
</define>
The <dc:date>
element specifies the date
and time when the document was last modified.
To conform with [xmlschema-2], the date and time format is YYYY-MM-DDThh:mm:ss.
The name of this element was chosen for compatibility with the Dublin Core.
<define name="office-meta-data" combine="choice">
<ref name="dc-date"/>
</define>
<define name="dc-date">
<element name="dc:date">
<ref name="dateTime"/>
</element>
</define>
The <meta:print-date>
element specifies
the date and time when the document was last printed.
To conform with [xmlschema-2], the date and time format is YYYY-MM-DDThh:mm:ss.
<define name="office-meta-data" combine="choice">
<element name="meta:print-date">
<ref name="dateTime"/>
</element>
</define>
The <meta:template>
element contains a
URL for the document template that was used to create the document.
The URL is specified as an XLink.
This element conforms to the XLink Specification. See [XLink].
The attributes that may be associated with the <meta:template> element are:
Template location
Template title
Template modification date and time
An xlink:href
attribute specifies the location of the document
template.
The xlink:title
attribute specifies the name
of the document template.
The meta:date
attribute specifies the date and
time when the template was last modified, prior to being used to
create the current document.
To conform with [xmlschema-2], the date and time format is YYYY-MM-DDThh:mm:ss.
<define name="office-meta-data" combine="choice">
<element name="meta:template">
<attribute name="xlink:href">
<ref name="anyURI"/>
</attribute>
<optional>
<attribute name="xlink:type" a:defaultValue="simple">
<value>simple</value>
</attribute>
</optional>
<optional>
<attribute name="xlink:actuate" a:defaultValue="onRequest">
<value>onRequest</value>
</attribute>
</optional>
<optional>
<attribute name="xlink:title">
<ref name="string"/>
</attribute>
</optional>
<optional>
<attribute name="meta:date">
<ref name="dateTime"/>
</attribute>
</optional>
</element>
</define>
The <meta:auto-reload>
element specifies
whether a document is reloaded or replaced by another document
after a certain period of time has elapsed.
The attributes that may be associated with the
<meta:auto-reload>
element are:
Reload URL
Reload delay
If a loaded document should be replaced by
another document after a certain period of time, the <meta:auto-reload>
element is
presented as an XLink. An xlink:href
attribute identifies the URL
of the replacement document.
The meta:delay
attribute specifies the
reload delay.
To conform with the duration data type of
[xmlschema-2], the format of the value of this attribute is
PnYnMnDTnHnMnS
. See §3.2.6 of
[xmlschema-2] for more detailed information on this duration
format.
<define name="office-meta-data" combine="choice">
<element name="meta:auto-reload">
<optional>
<attribute name="xlink:type" a:defaultValue="simple">
<value>simple</value>
</attribute>
</optional>
<optional>
<attribute name="xlink:show" a:defaultValue="replace">
<value>replace</value>
</attribute>
</optional>
<optional>
<attribute name="xlink:actuate" a:defaultValue="onLoad">
<value>onLoad</value>
</attribute>
</optional>
<optional>
<attribute name="xlink:href">
<ref name="anyURI"/>
</attribute>
</optional>
<optional>
<attribute name="meta:delay">
<ref name="duration"/>
</attribute>
</optional>
</element>
</define>
The <meta:hyperlink-behaviour>
element
specifies the default behavior for hyperlinks in the document.
The only attribute that may be associated with
the <meta:hyperlink-behaviour>
element
is:
Target frame
The meta:target-frame-name
attribute
specifies the name of the default target frame in which to display
a document referenced by a hyperlink.
This attribute can have one of the following values:
_self : The referenced document replaces the content of the current frame.
_blank : The referenced document is displayed in a new frame.
_parent : The referenced document is displayed in the parent frame of the current frame.
_top : The referenced document is displayed in the topmost frame, that is the frame that contains the current frame as a child or descendent but is not contained within another frame.
A frame name : The referenced document is displayed in the named frame. If the named frame does not exist, a new frame with that name is created.
To conform with the XLink Specification, an
additional xlink:show
attribute is attached to the <meta:hyperlink-behaviour> element. If the value
of the meta:target-frame-name
attribute is
_blank,
the xlink:show
attribute
value is new. If the value of
the meta:target-frame-name
attribute is any of the other value options, the value of the
xlink:show
attribute is
replace.
<define name="office-meta-data" combine="choice">
<element name="meta:hyperlink-behaviour">
<optional>
<attribute name="office:target-frame-name">
<ref name="targetFrameName"/>
</attribute>
</optional>
<optional>
<attribute name="xlink:show">
<choice>
<value>new</value>
<value>replace</value>
</choice>
</attribute>
</optional>
</element>
</define>
The <dc:language>
element specifies the
default language of the document.
The manner in which the language is represented is similar to the language tag described in [RFC3066]. It consists of a two or three letter Language Code taken from the ISO 639 standard optionally followed by a hyphen (-) and a two-letter Country Code taken from the ISO 3166 standard.
<define name="office-meta-data" combine="choice">
<element name="dc:language">
<ref name="language"/>
</element>
</define>
The <meta:editing-cycles>
element
specifies the number of editing cycles the document has been
through.
The value of this element is incremented every time the document is saved. The element contains the number of editing cycles as text.
<define name="office-meta-data" combine="choice">
<element name="meta:editing-cycles">
<ref name="nonNegativeInteger"/>
</element>
</define>
The <meta:editing-duration>
element
specifies the total time spent editing the document.
The duration is represented in the duration data type of [xmlschema-2], that is PnYnMnDTnHnMnS. See §3.2.6 of [xmlschema-2] for more detailed information on this duration format.
<define name="office-meta-data" combine="choice">
<element name="meta:editing-duration">
<ref name="duration"/>
</element>
</define>
The <meta:document-statistic>
element
specifies the statistics of the document, for example, the page
count, word count, and so on. The statistics are specified as
attributes of the <meta:document-statistic>
element
and the statistics that are exported with the document depend on
the document type and the application used to create the
document.
Document Type |
Document Statistics Attributes |
---|---|
Text |
|
Spreadsheet |
|
Graphic |
|
<define name="office-meta-data" combine="choice">
<element name="meta:document-statistic">
<optional>
<attribute name="meta:page-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="meta:table-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="meta:draw-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="meta:image-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="meta:ole-object-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="meta:object-count">
<ref name="nonNegativeInteger"/>
</attribute>
<optional>
<attribute name="meta:paragraph-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="meta:word-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="meta:character-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="frame-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="sentence-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="syllable-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="non-whitespace-character-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="meta:row-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="meta:cell-count">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
</element>
</define>
The <meta:user-defined>
element
specifies any additional user-defined metadata for the document.
Each instance of this element can contain one piece of user-defined
metadata. The element contains:
A meta:name
attribute, which identifies the name of the metadata element.
An optional meta:value-type
attribute, which
identifies the type of the metadata element. The allowed meta types
are float, date, time, boolean and string (see also section
6.7.1).
The value of the element, which is the metadata
in the format described in section 6.7.1 as value of the
office:value
attributes for
the various data types.
The default type for meta-data elements is string.
<define name="office-meta-data" combine="choice">
<element name="meta:user-defined">
<attribute name="meta:name">
<ref name="string"/>
</attribute>
<choice>
<group>
<attribute name="meta:value-type">
<value>float</value>
</attribute>
<ref name="double"/>
</group>
<group>
<attribute name="meta:value-type">
<value>date</value>
</attribute>
<ref name="dateOrDateTime"/>
</group>
<group>
<attribute name="meta:value-type">
<value>time</value>
</attribute>
<ref name="duration"/>
</group>
<group>
<attribute name="meta:value-type">
<value>boolean</value>
</attribute>
<ref name="boolean"/>
</group>
<group>
<attribute name="meta:value-type">
<value>string</value>
</attribute>
<ref name="string"/>
</group>
<text/>
</choice>
</element>
</define>
In addition to the pre-defined metadata
elements, applications should also preserve any additional content
found inside the <office:meta>
element. As there is
no semantics specified for such foreign content, applications need
not process this information other than to preserve it when editing
the document.
This section describes the XML elements and attributes that are used to represent heading and paragraph components in a text document.
The
elements <text:h>
and <text:p>
represent headings and paragraphs,
respectively, and are collectively referred to as
paragraph elements. All text content in an OpenDocument file must
be contained in either of these
elements.
Headings define the chapter structure for a document. A chapter or subchapter begins with a heading and extends to the next heading at the same or higher level.
<define name="text-h">
<element name="text:h">
<ref name="heading-attrs"/>
<ref name="paragraph-attrs"/>
<optional>
<ref name="text-number"/>
</optional>
<zeroOrMore>
<ref name="paragraph-content"/>
</zeroOrMore>
</element>
</define>
The text:outline-level
attribute associated
with the heading element determines the level of the heading,
starting with 1. Headings without a level attribute are assumed to
be at level 1.
<define name="heading-attrs" combine="interleave">
<attribute name="text:outline-level">
<ref name="positiveInteger"/>
</attribute>
</define>
Header numbering can be changed by additional
attributes, similar to those on list items (see section 4.3.2,
below). The numbering of headers can be restarted by setting the
text:restart-numbering
attribute to true
.
<define name="heading-attrs" combine="interleave">
<optional>
<attribute name="text:restart-numbering" a:defaultValue="false">
<ref name="boolean"/>
</attribute>
</optional>
</define>
The attribute text:start-value
may be used to restart
the numbering of headers of the current header's level, by setting
a new value for the numbering.
<define name="heading-attrs" combine="interleave">
<optional>
<attribute name="text:start-value">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
</define>
It is sometimes desired to have a specific
heading which should not be numbered. This corresponds to
unnumbered list headers in lists (see sections 4.3). To facilitate
this, an optional attribute text:is-list-header
can be used. If
true
, the given header will not be
numbered, even if an explicit list-style is given.
<define name="heading-attrs" combine="interleave">
<optional>
<attribute name="text:is-list-header" a:defaultValue="false">
<ref name="boolean"/>
</attribute>
</optional>
</define>
If a heading has a numbering applied, the text
of the formatted number can be included in a <text:number>
element. This text can
be used by applications that do not support numbering of headings,
but it will be ignored by applications that support numbering.
<define name="text-number">
<element name="text:number">
<ref name="string"/>
</element>
</define>
Paragraphs are the basic unit of text.
<define name="text-p">
<element name="text:p">
<ref name="paragraph-attrs"/>
<zeroOrMore>
<ref name="paragraph-content"/>
</zeroOrMore>
</element>
</define>
The paragraph elements have text:style-name
, text:class-names
and text:cond-style-name
attributes. These
attributes must reference paragraph styles.
A text:style-name
attribute references a
paragraph style, while a text:cond-style-name
attribute
references a conditional-style, that is, a style that contains
conditions and maps to other styles (see section 14.1.1). If a
conditional style is applied to a paragraph, the text:style-name
attribute contains the
name of the style that was the result of the conditional style
evaluation, while the conditional style name itself is the value of
the text:cond-style-name
attribute. This XML structure simplifies [XSLT] transformations
because XSLT only has to acknowledge the conditional style if the
formatting attributes are relevant. The referenced style can be a
common style or an automatic style.
A text:class-names
attribute takes a
whitespace separated
list of paragraph style names. The referenced styles are applied in
the order they are contained in the list. If both, text:style-name
and text:class-names
are present, the style
referenced by the text:style-name
attribute is as the
first style in the list in text:class-names
. If a conditional style
is specified together with a style:class-names
attribute, but without
the text:style-name
attribute, then the first style in the style list is used as the
value of the missing text:style-name
attribute.
Conforming applications should support the
text:class-names
attribute
and also should preserve it while editing.
<define name="paragraph-attrs">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
<optional>
<attribute name="text:class-names">
<ref name="styleNameRefs"/>
</attribute>
</optional>
<optional>
<attribute name="text:cond-style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
</define>
Example: Styles and conditional styles
<text:p text:style-name="Heading 1">
"Heading 1" is not a conditional style.
</text:p>
<text:p text:style-name="Numbering 1" text:cond-style-name="Text body">
"Text body" is a conditional style. If it is contained in a numbered
paragraph, it maps to "Numbering 1". This is assumed in this example.
</text:p>
A paragraph may have an ID. This ID can be used to reference the paragraph from other elements.
<define name="paragraph-attrs" combine="interleave">
<optional>
<ref name="text-id"/>
</optional>
</define>
A page sequence element <text:page-sequence>
specifies a
sequence of master pages that are instantiated in exactly the same
order as they are referenced in the page sequence. If a text
document contains a page sequence, it will consist of exactly as
many pages as specified. Documents with page sequences do not have
a main text flow consisting of headings and paragraphs as is the
case for documents that do not contain a page sequence. Text
content is included within text boxes for documents with page
sequences. The only other content that is permitted are drawing
objects.
Example: Page Sequence
<style:automatic-style>
<style:page-layout name="pm1">
<!-- portrait page -->
</style:page-layout>
<style:page-layout name="pm2">
<!-- landscape page -->
</style:page-layout>
</style:automatic-style>
...
<style:master-styles>
<style:master-page name="portrait" style:page-layout-name="pm1"/>
<style:master-page name="landscape" style:page-layout-name="pm2"/>
</style:master-styles>
...
<office:body>
<text:page-sequence>
<text:page text:master-page-name="portrait"/>
<text:page text:master-page-name="portrait"/>
<text:page text:master-page-name="landscape"/>
<text:page text:master-page-name="landscape"/>
<text:page text:master-page-name="portrait"/>
</text:page-sequence>
<draw:frame ...>
<draw:text-box ...>
<text:p>Example text.</text:p>
...
</draw:text-box>
</draw:frame>
</office:body>
<define name="text-page-sequence">
<element name="text:page-sequence">
<oneOrMore>
<ref name="text-page"/>
</oneOrMore>
</element>
</define>
The <text:page>
element specifies a
single page within a page sequence.
<define name="text-page">
<element name="text:page">
<ref name="text-page-attlist"/>
<empty/>
</element>
</define>
The text:master-page-name
attribute
specifies the master page that is instantiated.
<define name="text-page-attlist">
<attribute name="text:master-page-name">
<ref name="styleNameRef"/>
</attribute>
</define>
The OpenDocument format supports list structures, similar to those found in [HTML4]. A list is a paragraph-level element, which contains an optional list header, followed by a sequence of list items. The list header and each list item contains a sequence of paragraph or list elements. Lists can be nested.
Lists may be numbered. The numbering may be restarted with a specific numbering at each list item. Lists may also continue numbering from other lists, allowing the user to merge several lists into a single, discontinuous list. Note that whether the list numbering is displayed depends on a suitable list style being used.
In addition to this structural information, lists can have list styles associated with them, which contain the relevant layout information, such as
the type of list item label, such as bullet or number,
list item label width and distance,
bullet character or image (if any),
number format for the bullet numbering (if any),
paragraph indent for list items.
A list is represented by the <text:list>
element. It contains an
optional list header, followed by any number of list items.
Every list has a list level, which is
determined by the nesting of the <text:list>
elements. If a list is
not contained within another list, the list level is 1. If the list
in contained within another list, the list level is the list level
of the list in which is it contained incremented by one. If a list
is contained in a table cell or text box, the list level returns to
1, even though the table or textbox itself may be nested within
another list.
The attributes that may be associated with the list element are:
Style name
Continue numbering
<define name="text-list">
<element name="text:list">
<ref name="text-list-attr"/>
<optional>
<ref name="text-list-header"/>
</optional>
<zeroOrMore>
<ref name="text-list-item"/>
</zeroOrMore>
</element>
</define>
The optional text:style-name
attribute specifies the
name of the list style that is applied to the list.
If this attribute is not included and therefore no list style is specified, one of the following actions is taken:
If the list is contained within another list, the list style defaults to the style of the surrounding list.
If there is no list style specified for the surrounding list, but the list contains paragraphs that have paragraph styles attached specifying a list style, this list style is used for any of these paragraphs.
A default list style is applied to any other paragraphs.
To determine which formatting properties are applied to a list, the list level and list style name are taken into account. See section 14.10 for more information on list formatting properties.
<define name="text-list-attr" combine="interleave">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
</define>
By default, the first list item in a list starts with the number specified in the list style. The continue numbering attribute can be used to continue the numbering from the preceding list.
This attribute can be used with the <text:list>
element and can have a
value of true or false.
If the value of the attribute is true and the numbering style of the preceding list is the same as the current list, the number of the first list item in the current list is the number of the last item in the preceding list incremented by one.
<define name="text-list-attr" combine="interleave">
<optional>
<attribute name="text:continue-numbering">
<ref name="boolean"/>
</attribute>
</optional>
</define>
List items contain the textual content of a
list. A <text:list-item>
element can contain paragraphs, headings, lists or soft page
breaks. A list item cannot contain tables.
<define name="text-list-item">
<element name="text:list-item">
<ref name="text-list-item-attr"/>
<ref name="text-list-item-content"/>
</element>
</define>
<define name="text-list-item-content">
<optional>
<ref name="text-number"/>
</optional>
<zeroOrMore>
<choice>
<ref name="text-p"/>
<ref name="text-h"/>
<ref name="text-list"/>
<ref name="text-soft-page-break"/>
</choice>
</zeroOrMore>
</define>
The first line in a list item is preceded by a bullet or number, depending on the list style assigned to the list. If a list item starts another list immediately and does not contain any text, no bullet or number is displayed.
The only attribute that may be associated with
the <text:list-item>
element is:
Start value
The numbering of the current list can be
restarted at a certain number. The text:start-value
attribute is used to
specify the number with which to restart the list.
This attribute can only be applied to items in a list with a numbering list style. It restarts the numbering of the list at the current item.
<define name="text-list-item-attr" combine="interleave">
<optional>
<attribute name="text:start-value">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
</define>
If a list item has a numbering applied, the text
of the formatted number can be included in a <text:number>
element. This text can
be used by applications that do not support numbering, but it will
be ignored by applications that support numbering. See also section
4.1.1.
Example: Lists and sublists
<text:list text:style-name="List 1">
<text:list-item>
<text:p>This is the first list item</text:p>
<text:p>This is a continuation of the first list item.</text:p>
</text:list-item>
<text:list-item>
<text:p>This is the second list item.
It contains a sub list.</text:p>
<text:list>
<text:list-item><text:p>This is a sub list item.</text:p>
</text:list-item>
<text:list-item><text:p>This is a sub list item.</text:p>
</text:list-item>
<text:list-item><text:p>This is a sub list item.</text:p>
</text:list-item>
</text:list>
</text:list-item>
<text:list-item>
<text:p>This is the third list item</text:p>
</text:list-item>
</text:list>
A list header is a special kind of list item. It contains one or more paragraphs that are displayed before a list. The paragraphs are formatted like list items but they do not have a preceding number or bullet. The list header is represented by the list header element.
<define name="text-list-header">
<element name="text:list-header">
<ref name="text-list-item-content"/>
</element>
</define>
In some instances, it is desirable to specify a
list not as a structural element comprising of several list items,
but to determine on a per-paragraph level whether the paragraph is
numbered, and at which level. To facilitate this, the <text:numbered-paragraph>
element
allows the numbering of an individual paragraph, as if it was part
of a list at a specified level.
Numbered paragraphs may use the same continuous
numbering properties that list items use, and thus form an
equivalent, alternative way of specifying lists. A list in
<text:list>
representation could be converted into a list in <text:numbered-paragraph>
representation and vice versa.
<define name="text-numbered-paragraph">
<element name="text:numbered-paragraph">
<ref name="text-numbered-paragraph-attr"/>
<optional>
<ref name="text-number"/>
</optional>
<choice>
<ref name="text-p"/>
<ref name="text-h"/>
</choice>
</element>
</define>
A numbered paragraph can be assigned a list level. A numbered paragraph is equivalent to a list nested to the given level, containing one list item with one paragraph. If no level is given, the numbered paragraph is interpreted as being on level 1.
<define name="text-numbered-paragraph-attr" combine="interleave">
<optional>
<attribute name="text:level" a:defaultValue="1">
<ref name="positiveInteger"/>
</attribute>
</optional>
</define>
As a numbered paragraph combines the functionality of a (possibly nested) list with a single list item, it can also use the attributes of those elements.
<define name="text-numbered-paragraph-attr" combine="interleave">
<ref name="text-list-attr"/>
</define>
<define name="text-numbered-paragraph-attr" combine="interleave">
<ref name="text-list-item-attr"/>
</define>
The text of a formatted number can be included
in a <text:number>
element. This text can be used by applications that do not support
numbering, but it will be ignored by applications that support
numbering. See also section 4.1.1.
A text section is a named region of paragraph-level text content. Sections start and end on paragraph boundaries and can contain any number of paragraphs.
Sections have two uses in the OpenDocument format: They can be used to assign certain formatting properties to a region of text. They can also be used to group text that is automatically acquired from some external data source.
In addition to Sections can contain regular text content or the text can be contained in another file and linked to the section. Sections can also be write-protected or hidden.
Sections can have settings for text columns,
background color or pattern, and notes configuration. These
settings form the section style, which is represented in a
<style:style>
element.
See section 14.8.3 for details.
The formatting properties for sections are explained in section 15.7.
Sections support two ways of linking to external content. If a section is linked to another document, the link can be through one of the following:
A resource identified by an XLink, represented
by a text:section-source
element
Dynamic Data Exchange (DDE), represented by a
office:dde-source
element
Linking information for external content is contained in the section element's first child. A section that links to external content contains the full representation of the data source, so that processors need to understand the linking information only if they wish to update the contents of the section.
<define name="text-section">
<element name="text:section">
<ref name="text-section-attr"/>
<choice>
<ref name="text-section-source"/>
<ref name="text-section-source-dde"/>
<empty/>
</choice>
<zeroOrMore>
<ref name="text-content"/>
</zeroOrMore>
</element>
</define>
Note: List items may not contain sections. Thus, lists may only be wholly contained within section elements. If it is desired to achieve the effect of overlapping lists and sections, or of sections contained within lists, the lists must be split into several lists, each of which would then be wholly contained within a section. When splitting the list, suitable attributes for continuous numbering should be set such that display and behavior are the same as with the original list not interrupted by sections.
Text indices, described in chapter 7, may be considered a special kind of text section, as they share the same general structure as well as certain attributes. These are combined in the following definition:
<define name="text-section-attr" combine="interleave">
<ref name="sectionAttr"/>
</define>
The remaining attributes in this section are
specific to the <text:section>
element.
The text:style-name
attribute refers to a
section style.
<define name="sectionAttr" combine="interleave">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
</define>
Every section must have a name that uniquely
identifies the section. The text:name
attribute contains the name of
the section.
<define name="sectionAttr" combine="interleave">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</define>
A section can be protected, which means that a user can not edit the section. The text:protected attribute indicates whether or not a section is protected. The user interface must enforce the protection attribute if it is enabled.
<define name="sectionAttr" combine="interleave">
<optional>
<attribute name="text:protected">
<ref name="boolean"/>
</attribute>
</optional>
</define>
A user can use the user interface to reset the protection flag, unless the section is further protected by a password. In this case, the user must know the password in order to reset the protection flag. The text:protection-key attribute specifies the password that protects the section. To avoid saving the password directly into the XML file, only a hash value of the password is stored.
<define name="sectionAttr" combine="interleave">
<optional>
<attribute name="text:protection-key">
<ref name="string"/>
</attribute>
</optional>
</define>
Sections can be hidden based on a condition or they can be hidden unconditionally.
The text:display
attribute specifies whether
or not the section is hidden. The value of this attribute can
be:
true, the section is displayed. This is the default setting.
none, the section is hidden unconditionally.
condition, the section is hidden under the condition specified in the text:condition attribute.
The text:condition
attribute specifies the
condition under which the section is hidden. The condition is
encoded as a string. If the value of text:display
is condition
, the text:condition
attribute must be
present.
<define name="text-section-attr" combine="interleave">
<choice>
<attribute name="text:display">
<choice>
<value>true</value>
<value>none</value>
</choice>
</attribute>
<group>
<attribute name="text:display">
<value>condition</value>
</attribute>
<attribute name="text:condition">
<ref name="string"/>
</attribute>
</group>
<empty/>
</choice>
</define>
The <text:section-source>
element
indicates that the enclosed section is a linked section. If this
element is used, it must be the first element in the <text:section>
element.
<define name="text-section-source">
<element name="text:section-source">
<ref name="text-section-source-attr"/>
</element>
</define>
The attributes that may be associated with the
<text:section-source>
attribute are:
Section source URL
Name of linked section
Filter name
These attributes identify the document or
section to which the section is linked. The name of the target
section is identified by the local part of the URL, following the
hash mark. The xlink:href
attribute is implied because <text:section-source>
elements may
also link to internal sections.
<define name="text-section-source-attr" combine="interleave">
<optional>
<attribute name="xlink:href">
<ref name="anyURI"/>
</attribute>
<optional>
<attribute name="xlink:type" a:defaultValue="simple">
<value>simple</value>
</attribute>
</optional>
<optional>
<attribute name="xlink:show" a:defaultValue="embed">
<value>embed</value>
</attribute>
</optional>
</optional>
</define>
If the link targets a section of a document, the
attribute text:section
name
contains the name of the target section. If the attribute is not
present, the link targets the entire document.
<define name="text-section-source-attr" combine="interleave">
<optional>
<attribute name="text:section-name">
<ref name="string"/>
</attribute>
</optional>
</define>
The text:filter-name
attribute specifies
which filter type was used to import the link target. The value of
this attribute is implementation dependent.
<define name="text-section-source-attr" combine="interleave">
<optional>
<attribute name="text:filter-name">
<ref name="string"/>
</attribute>
</optional>
</define>
If sections are linked via DDE, their linking
information is represented by <office:dde-source>
elements. It
contains attributes that specify the application, topic and item of
the DDE connection. Note that because the section contains the XML
rendition of the DDE link's content, this information only needs to
be processed if updated data from the DDE link are desired.
See section 12.6 for the use of DDE connections.
<define name="text-section-source-dde">
<ref name="office-dde-source"/>
</define>
Within text documents, images, embedded objects and other drawing objects appear at the level of a paragraph if they are anchored to a page rather than to a paragraph or a character position within a paragraph. See section 9.2 for details on drawing objects, and section 9.2.16 for their anchoring.
This section describes how changes in text documents can be represented.
All tracked changes to text documents are stored
in a list. The list contains an element for each change made to the
document. If the <text:tracked-changes>
element is
absent, change tracking is not enabled.
<define name="text-tracked-changes">
<optional>
<element name="text:tracked-changes">
<ref name="text-tracked-changes-attr"/>
<zeroOrMore>
<ref name="text-changed-region"/>
</zeroOrMore>
</element>
</optional>
</define>
This attribute determines whether or not user agents should track and record changes for this document.
<define name="text-tracked-changes-attr" combine="interleave">
<optional>
<attribute name="text:track-changes" a:defaultValue="true">
<ref name="boolean"/>
</attribute>
</optional>
</define>
For every changed region of a document, there is one entry in the list of tracked changes. This entry contains a list of all changes that were applied to the region. The start and end of this region are marked by the start and end elements that are described in the next section.
<define name="text-changed-region">
<element name="text:changed-region">
<ref name="text-changed-region-attr"/>
<ref name="text-changed-region-content"/>
</element>
</define>
Every element has an ID. The elements that mark the start and end of a region use this ID to identify the region to which they belong.
<define name="text-changed-region-attr" combine="interleave">
<attribute name="text:id">
<ref name="ID"/>
</attribute>
</define>
The <text:insertion>
element contains
the information that is required to identify any insertion of
content. This content can be a piece of text within a paragraph, a
whole paragraph, or a whole table. The inserted content is part of
the text document itself and is marked by a change start and a
change end element.
<define name="text-changed-region-content" combine="choice">
<element name="text:insertion">
<ref name="office-change-info"/>
</element>
</define>
Example: Insertion of text
<text:tracked-changes>
<text:changed-region text:id="c001">
<text:insertion>
<office:change-info>
<dc:creator>Michael Brauer</dc:creator>
<dc:date>1999-05-18T12:56:04</dc:date>
</office:change-info>
</text:insertion>
</text:changed-region>
</text:tracked-changes>
<text:p>
This is the original text<text:change-start text:change-id="c001"/>,
but this has been added<text:change-end text:change-id="c001"/>.
</text:p>
A <text:deletion>
element contains
content that was deleted while change tracking was enabled. The
position where the text was deleted is marked by the change
position element.
If part of a paragraph was deleted, the text that was deleted is contained in this element as a paragraph element. If the deleted text is reinserted into the document, the paragraph is joined with the paragraph where the deletion took place.
<define name="text-changed-region-content" combine="choice">
<element name="text:deletion">
<ref name="office-change-info"/>
<zeroOrMore>
<ref name="text-content"/>
</zeroOrMore>
</element>
</define>
Example: Deletion of text
<text:tracked-changes>
<text:changed-region text:id="c002">
<text:deletion>
<office:change-info>
<dc:creator>Michael Brauer</dc:creator>
<dc:date>1999-05-18T12:56:04</dc:date>
</office:change-info>
<text:p>, but this has been deleted</text:p>
</text:deletion>
</text:changed-region>
</text:tracked-changes>
<text:p>
This is the original text<text:change text:region-id="c002"/>.
</text:p>
This example shows:
Deleted text = , but this has been
deleted
This text is contained in the <text:p>
element within the <text:deletion>
element.
Current text = This is the original
text.
This text is contained in the <text:p>
element at the end of the example.
Original text before deletion took place = This is the original text, but this has been deleted.
Note that the deleted text, like all text in the OpenDocument format, is contained in a paragraph element. To reconstruct the original text, this paragraph is merged with its surrounding. In other words, a deletion consisting of only a single word would be represented as a paragraph containing the word.
To reconstruct the text before the deletion took place, do:
If the change mark is inside a paragraph, insert the text content of the <text:deletion> element as if the beginning <text:p> and final </text:p> tags were missing.
If the change mark is inside a header, proceed as above, except adapt the end tags to match their new counterparts.
Otherwise, simply copy the text content of the <text:deletion> element in place of the change mark.
Example: Given the following change:
<text:changed-region text:id="example">
<text:deletion>
<office:change-info>...</office:change-info>
<text:p>Hello</text:p>
<text:p>World!</text:p>
</text:deletion>
</text:changed-region>
The first (and most common) case occurs if a change mark is inside a regular paragraph:
<text:p>abc<text:change text:id="example/>def</text:p>
To reconstruct the original text, the two <text:p> elements are copied to replace the change mark, except the beginning and ending tags are missing:
<text:p>abcHello</text:p>
<text:p>World!def</text:p>
If the change mark occurred inside a header, the same procedure is followed, except the copied tags are adapted to make sure we still have well-formed XML.
<text:h>abc<text:change text:id="example/>def</text:h>
becomes:
<text:h>abcHello</text:h>
<text:h>World!def</text:h>
The third case occurs when a change occurs outside of a paragraph. In this case, the deleted text is simply copied verbatim.
<text:p>abcdef</text:p>
<text:change text:id="example/>
<text:p>ghijkl</text:p>
This becomes:
<text:p>abcdef</text:p>
<text:p>Hello</text:p>
<text:p>World!</text:p>
<text:p>ghijkl</text:p>
If, in the first two cases, the deletion contains complete paragraphs, then additional empty paragraphs must be put into the <text:deletion> element to achieve the desired result.
The change that took place from
<text:p>abc</text:p>
<text:h>Hello</text:h>
<text:h>World!</text:h>
<text:p>def</text:p>
to
<text:p>abc<text:change text:id="example/>def</text:p>
would be represented as:
<text:changed-region text:id="example">
<text:deletion>
<office:change-info>...</office:change-info>
<text:p/>
<text:h>Hello</text:h>
<text:h>World!</text:h>
<text:p/>
</text:deletion>
</text:changed-region>
A format change element represents any change in formatting attributes. The region where the change took place is marked by a change start and a change end element.
<define name="text-changed-region-content" combine="choice">
<element name="text:format-change">
<ref name="office-change-info"/>
</element>
</define>
Note: A format change element does not contain the actual changes that took place.
The change info element contains meta information who made the change and when. It is also used for spreadsheet documents, and thus described in a section 12.3 (Change Tracking Metadata).
There are three elements that mark the start and the end of a changed region, as follows:
Change start element – <text:change-start>
This element marks the start of a region with content where text
has been inserted or the format has been changed.
Change end element – <text:change-end>
This element marks the end of a region with content where text has
been inserted or the format has been changed.
Change position element – <text:change>
This element marks a position in an empty region where text has
been deleted.
All three elements have an attribute that specifies the ID of the region to which they belong.
<define name="change-marks">
<choice>
<element name="text:change">
<ref name="change-mark-attr"/>
</element>
<element name="text:change-start">
<ref name="change-mark-attr"/>
</element>
<element name="text:change-end">
<ref name="change-mark-attr"/>
</element>
</choice>
</define>
<define name="change-mark-attr">
<attribute name="text:change-id">
<ref name="IDREF"/>
</attribute>
</define>
The <text:soft-page-break>
element
represents a soft page break.
See section 2.3.1:Use Soft Page BreaksUse Soft Page Breaks for details regarding soft page breaks.
<define name="text-soft-page-break">
<element name="text:soft-page-break">
<empty/>
</element>
</define>
Several text elements need per-document declarations before they can be used. For example, variable fields require that the variables used are being declared at the beginning of the document. These declarations are collected at the beginning of a text document. All such declarations are optional. The detailed description for each declaration can be found in the appropriate chapter.
The supported text declarations are:
variable declarations – These declarations are used for variable fields. (cf. section 6.3.1).
user field declarations – These declarations are used for user-defined fields (cf. section 6.3.5).
sequence declarations – These declarations are used for sequence fields (cf. section 6.3.8).
DDE connections – These declarations are used for DDE fields and DDE sections (cf. sections 6.6.9 and 4.4.3, respectively).
auto mark file – This declaration is used for generation of alphabetical indices (cf. section 7.8.2).
<define name="text-decls">
<optional>
<element name="text:variable-decls">
<zeroOrMore>
<ref name="text-variable-decl"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="text:sequence-decls">
<zeroOrMore>
<ref name="text-sequence-decl"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="text:user-field-decls">
<zeroOrMore>
<ref name="text-user-field-decl"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="text:dde-connection-decls">
<zeroOrMore>
<ref name="text-dde-connection-decl"/>
</zeroOrMore>
</element>
</optional>
<optional>
<ref name="text-alphabetical-index-auto-mark-file"/>
</optional>
</define>
Paragraph element's children make up the text content of any document. All text contained in a paragraph element or their children is text content, with few exceptions detailed later. This should significantly ease transformations into other formats, since transformations may ignore any child elements of paragraph elements and only process their text content, and still obtain a faithful representation of text content.
Text content elements that do not contain in-line text children are:
(foot- and end-)notes (see section 5.3)
Foot- and endnotes contain text content, but are typically displayed outside the main text content, e.g., at the end of a page or document.
rubies (see section 5.4)
Ruby texts are usually displayed above or below the main text.
annotations (see section 5.5)
Annotations are typically not displayed.
<define name="paragraph-content" combine="choice">
<text/>
</define>
If the paragraph element or any of its child elements contains white-space characters, they are collapsed. Leading white-space characters at the paragraph start as well as trailing white-space characters at the paragraph end are ignored. In detail, the following conversions take place:
The following [UNICODE] characters are normalized to a SPACE character:
HORIZONTAL TABULATION (0x0009)
CARRIAGE RETURN (0x000D)
LINE FEED (0x000A)
SPACE (0x0020)
In addition, these characters are ignored if the preceding character is a white-space character. The preceding character can be contained in the same element, in the parent element, or in the preceding sibling element, as long as it is contained within the same paragraph element and the element in which it is contained processes white-space characters as described above. White-space characters at the start or end of the paragraph are ignored, regardless whether they are contained in the paragraph element itself, or in a child element in which white-space characters are collapsed as described above.
These white-space processing rules shall enable authors to use white-space characters to improve the readability of the XML source of an OpenDocument document in the same way as they can use them in HTML.
White-space processing takes place within the following elements:
<text:p>
<text:h>
<text:span>
<text:a>
<text:ref-point>
<text:ref-point-start>
<text:ref-point-end>
<text:bookmark>
<text:bookmark-start>
<text:bookmark-end>
Note: In [XSL], white-space processing of a paragraph of text can be enabled by attaching an fo:white-space="collapse" attribute to the <fo:block> element that corresponds to the paragraph element.
, in other words they are processed in the same way that [HTML4] processes them.
In general, consecutive white-space characters in a paragraph are collapsed. For this reason, there is a special XML element used to represent the [UNICODE] character SPACE (0x0020).
This element uses an optional attribute called
text:c
to specify the number
of SPACE characters that the element represents. A missing
text:c
attribute is
interpreted as meaning a single SPACE character.
This element is required to represent the second and all following SPACE characters in a sequence of SPACE characters. It is not an error if the character preceding the element is not a white-space character, but it is good practice to use this element for the second and all following SPACE characters in a sequence. This way, an application recognizes a single space character without recognizing this element.
<define name="paragraph-content" combine="choice">
<element name="text:s">
<optional>
<attribute name="text:c">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
</element>
</define>
The <text:tab>
element represents the
[UNICODE] tab character HORIZONTAL TABULATION (0x0009) in a heading
or paragraph. A <text:tab>
element reserves space
from the current position up to the next tab-stop, as defined in
the paragraph's style information.
<define name="paragraph-content" combine="choice">
<element name="text:tab">
<ref name="text-tab-attr"/>
</element>
</define>
To determine which tab-stop a tab character will advance to requires layout information. To make it easier for non-layout oriented processors to determine this information, applications may generate a text:tab-ref attribute as a hint that associates a tab character with a tab-stop in the current paragraph style. It contains the number of the tab-stop that the tab character refers to. The position 0 has a special meaning and signifies the start margin of the paragraph.
<define name="text-tab-attr">
<optional>
<attribute name="text:tab-ref">
<ref name="nonNegativeInteger"/>
</attribute>
</optional>
</define>
Note: The text:tab-ref attribute is only a hint to help non-layout oriented processors to determine the tab/tab-stop association. Layout oriented processors should determine the tab positions solely based on the style information.
The <text:line-break>
element represents
a line break in a heading or paragraph.
<define name="paragraph-content" combine="choice">
<element name="text:line-break">
<empty/>
</element>
</define>
The <text:soft-page-break>
element
represents a soft page break within a heading or paragraph.
See section 2.3.1:Use Soft Page BreaksUse Soft Page Breaks for details regarding soft page breaks.
<define name="paragraph-content" combine="choice">
<ref name="text-soft-page-break"/>
</define>
Soft hyphens, hyphens, and non-breaking blanks are represented by [UNICODE] characters.
The [UNICODE] character... |
Represents... |
---|---|
SOFT HYPHEN (00AD) |
soft hyphens |
NON-BREAKING HYPHEN (2011) |
non-breaking hyphens |
NO-BREAK SPACE (00A0) |
non-breaking blanks |
The <text:span>
element represents
portions of text that are attributed using a certain text style or
class. The content of this element is the text that uses the text
style.
The name of the a text style or text class is
the value of a text:style-name
or text:class-names
attributes,
respectively, attached to the <text:span>
element. These
attributes must refer to text styles or classes.
A text:style-name
attribute references a
single text style. A text:class-names attribute takes a whitespace
separated list of text style names. The referenced text styles are
applied in the order they are contained in the list. If both,
text:style-name
and
text:class-names
are
present, the style referenced by the text:style-name
attribute is treated as
the first style in the list in text:class-names
. Conforming application
should support the text:class-names
attribute and also
should preserve it while editing.
<text:span> elements can be nested.
White-space characters contained in this element are collapsed.
<define name="paragraph-content" combine="choice">
<element name="text:span">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
<optional>
<attribute name="text:class-names">
<ref name="styleNameRefs"/>
</attribute>
</optional>
<zeroOrMore>
<ref name="paragraph-content"/>
</zeroOrMore>
</element>
</define>
Example: Text style in OpenDocument documents:
<text:p>
The last word of this sentence is
<text:span text:style-name="emphasize">emphasized</text:span>.
</text:p>
Hyperlinks in text documents are represented by
a <text:a>
element.
This element also contains an event table element, <office:event-listeners>, which contains the events assigned to the hyperlink. See section 12.4 for more information on the event table element.
<define name="paragraph-content" combine="choice">
<element name="text:a">
<ref name="text-a-attlist"/>
<optional>
<ref name="office-event-listeners"/>
</optional>
<zeroOrMore>
<ref name="paragraph-content"/>
</zeroOrMore>
</element>
</define>
The attributes that may be associated with the
<text:a>
element
are:
Name
Link location
Target frame
Text styles
A hyperlink can have a name, but it is not
essential. The office:name
attribute specifies the name of the hyperlink if one exists. This
name can serve as a target for some other hyperlinks.
<define name="text-a-attlist" combine="interleave">
<optional>
<attribute name="office:name">
<ref name="string"/>
</attribute>
</optional>
</define>
The office:title
attribute specifies a short
accessible description for hint text.
See appendix E for guidelines how to use this attribute.
<define name="text-a-attlist" combine="interleave">
<optional>
<attribute name="office:title">
<ref name="string"/>
</attribute>
</optional>
</define>
The xlink:href
attribute specifies the URL
for the target location of the link.
<define name="text-a-attlist" combine="interleave">
<attribute name="xlink:href">
<ref name="anyURI"/>
</attribute>
<optional>
<attribute name="xlink:type" a:defaultValue="simple">
<value>simple</value>
</attribute>
</optional>
<optional>
<attribute name="xlink:actuate" a:defaultValue="onRequest">
<value>onRequest</value>
</attribute>
</optional>
</define>
The office:target-frame-name
attribute
specifies the target frame of the link. This
attribute can have one of the following values:
_self – The referenced document replaces the content of the current frame.
_blank – The referenced document is displayed in a new frame.
_parent – The referenced document is displayed in the parent frame of the current frame.
_top – The referenced document is displayed in the uppermost frame, that is the frame that contains the current frame as a child or descendent but is not contained within another frame.
A frame name – The referenced document is displayed in the named frame. If the named frame does not exist, a new frame with that name is created.
To conform with the XLink Specification, an additional xlink:show
attribute is attached to the
<text:a>
element. If the value of the attribute is _blank, the
xlink:show
attribute value
is new.
If the value of the attribute is any of the other value options,
the value of the xlink:show
attribute is replace. See
[XLink].
<define name="text-a-attlist" combine="interleave">
<optional>
<attribute name="office:target-frame-name">
<ref name="targetFrameName"/>
</attribute>
</optional>
<optional>
<attribute name="xlink:show">
<choice>
<value>new</value>
<value>replace</value>
</choice>
</attribute>
</optional>
</define>
Every hyperlink has two text styles as follows:
If the link location of the hyperlink was not
visited, the text style specifies by the text:style-name
attribute is applied to
the text of the hyperlink.
If the link location of the hyperlink was
already visited, the text style specified by the text:visited-style-name
attribute is
applied to the text of the hyperlink
<define name="text-a-attlist" combine="interleave">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
<optional>
<attribute name="text:visited-style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
</define>
Bookmarks can either mark a text position or a text range. A text range can start at any text position and end at another text position. In particular, a bookmark can start in the middle of one paragraph and end in the middle of another paragraph. The XML element used to represent a bookmark varies depending on the type of bookmark, as follows:
<text:bookmark>
– to mark one text
position
<text:bookmark-start>
– to mark the start
position in a text range
<text:bookmark-end>
– to mark the end
position in a text range
For every <text:bookmark-start>
element, there
must be a <text:bookmark-end>
element in the
same text flow using the same text:name
attribute, and vice versa. The
<text:bookmark-start>
element must precede the <text:bookmark-end>
element.
<define name="paragraph-content" combine="choice">
<choice>
<element name="text:bookmark">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
<element name="text:bookmark-start">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
<element name="text:bookmark-end">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
</choice>
</define>
Example: Bookmarks
<text:p>
<text:bookmark text:name="Mark 1"/>There is a text mark in front of this
paragraph.
<text:bookmark-start text:name="Mark 2"/>In front of this paragraph there is
the start of a bookmark.
</text:p>
<text:p>
This bookmark ends
<text:bookmark-end text:name="Mark 2"/>
amid this sentence.
</text:p>
The representation of references is modeled on the XML representation of bookmarks. There are two types of reference marks, as follows:
A point reference
A point reference marks a particular position in text and is
represented by a single <text:reference-mark>
element.
A range reference
A range reference marks a range of characters in text and is
represented by two elements; <text:reference-mark-start>
to mark
the start of the range and <text:reference-mark-end>
to mark
the end of the range.
Every reference is identified by its name, which must be unique. In a range reference, the start and end elements must use the same reference name.
The <text:reference-mark>
element
represents a point reference.
<define name="paragraph-content" combine="choice">
<element name="text:reference-mark">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
</define>
The <text:reference-mark-start>
and
<text:reference-mark-end>
elements
represent a range reference.
<define name="paragraph-content" combine="choice">
<choice>
<element name="text:reference-mark-start">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
<element name="text:reference-mark-end">
<attribute name="text:name">
<ref name="string"/>
</attribute>
</element>
</choice>
</define>
In the OpenDocument schema, three elements are used to represent references instead of one element because references represented as a single XML element:
Cannot support overlapping references
Do not interact well with other elements
Take the following example:
Example: Overlapping range references
<text:p>
<text:reference-mark-
start
text:name="first"/>This is an
<text:reference
-mark
-start
text:name="second"/>example of a
sentence
<text:reference
-mark
-end
text:name="first"/>with overlapping
references.
<text:reference
-mark
-end
text:name="second"/>
</text:p>
The example paragraph shows two references that cover the following text:
reference “first” |
“This is an example of a sentence” |
reference “second” |
“example of a sentence with overlapping references.” |
This overlapping structure cannot be represented using a single reference element to contain the referenced text. Similarly, a reference spanning multiple paragraphs creates the same situation as two overlapping XML elements, as does character formatting either starts or ends, but not both, within the referenced text.
Notes consist of a <text:note>
element which occurs in
the text stream at the position to which the note is anchored. How
notes are numbered and rendered is determined by <text:notes-configuration>
element,
which occurs inside the <office:styles>
section.
The note element represents text notes which are attached to a certain text position. A common implementation of this concept are the footnotes and endnotes found in most word processors. A note contains a note citation element and a note body elements, which contains the note's content.
In OpenDocument documents, notes are represented
in a similar fashion to footnotes in [XSL]. In XSL, the first child
of the note element contains the citation in the form of an
<fo:inline>
element. The
OpenDocument schema uses the same structure but introduces a
<text:note-citation>
element. The second child contains the note body, just as in
XSL.
Additionally, OpenDocument features <text:notes-configuration>
elements.
To achieve a similar effect to the note configuration in XSL, every
note citation element must be formatted appropriately.
<define name="paragraph-content" combine="choice">
<element name="text:note">
<ref name="text-note-class"/>
<optional>
<attribute name="text:id">
<ref name="string"/>
</attribute>
</optional>
<element name="text:note-citation">
<optional>
<attribute name="text:label">
<ref name="string"/>
</attribute>
</optional>
<text/>
</element>
<element name="text:note-body">
<zeroOrMore>
<ref name="text-content"/>
</zeroOrMore>
</element>
</element>
</define>
Each note belongs to a class which determines how the note is expected to be rendered. Currently, two note classes are supported: Footnotes and endnotes.
<define name="text-note-class">
<attribute name="text:note-class">
<choice>
<value>footnote</value>
<value>endnote</value>
</choice>
</attribute>
</define>
The footnote reference ID is used by references to footnotes to identify the footnote that is referenced.
The <text:note-citation> element contains the formatted note citation element, either as a formatted number or a string.
Note citation elements can be labeled or numbered. If they are numbered, the number is chosen and formatted automatically according to the notes configuration element. If they are labeled, the user must supply a label for every note he/she inserts into the document. This label is stored in the text:label attribute of the <text:note-citation> element.
The <text:note-body> element contains the actual content of the footnote. It does not have any attributes.
The schema allows for the inclusion of notes into the note body. While this may be reasonable for some future note types, it is not reasonable for footnotes and endnotes. Conforming applications may or may not support such nested notes.
<text:p>
This paragraph contains a footnote
<text:note text:note-class="footnote" text:id="ftn001">
<text:note-citation>1</text:note-citation>
<text:note-body>
<text:p>
This footnote has a generated sequence number
</text:p>
</text:note-body>
</text:note>
.
</text:p>
<text:p>
This paragraph contains a footnote
<text:note text:note-class="footnote" text:id="ftn002">
<text:note-citation text:label="*">*</text:note-citation>
<text:note-body>
<text:p>
This footnote has a fixed citation
</text:p>
</text:note-body>
</text:note>
, too
</text:p>
A ruby is additional text that is displayed above or below some base text. The purpose of ruby is to annotate the base text or provide information about its pronunciation.
There are two elements that can be contained in the <text:ruby> element:
Ruby base
Ruby text
The <text:ruby-base>
element contains the text that is to be annotated. It contains any
paragraph element content, like text spans. The element's
text:style-name
attribute
references a ruby style that specifies further formatting
attributes of the ruby. See section 14.8.4 for details.
The <text:ruby-text
> element contains the annotation text. It may contain only
plain text. The element's text:style-name
attribute references a
text style that specifies further formatting attributes used for
the text.
<define name="paragraph-content" combine="choice">
<element name="text:ruby">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
<element name="text:ruby-base">
<ref name="paragraph-content"/>
</element>
<element name="text:ruby-text">
<optional>
<attribute name="text:style-name">
<ref name="styleNameRef"/>
</attribute>
</optional>
<text/>
</element>
</element>
</define>
The OpenDocument format allows annotation to appear within a paragraph element. See section 12.1 for details on annotations.
<define name="paragraph-content" combine="choice">
<ref name="office-annotation"/>
</define>
Index marks are used to mark text areas for inclusion into text indices. They are similar in structure to bookmarks and references. They are discussed in detail section 7.1, together with text indices.
Paragraphs may also contain change tracking marks. These have already been explained in the chapter on change tracking (section 4.6), and are referenced here for completeness.
<define name="paragraph-content" combine="choice">
<ref name="change-marks"/>
</define>
Within text documents, images, embedded objects and other drawing objects may be anchored to a paragraph, to a character, or as a character. If they are anchored to a paragraph, they appear within a paragraph at an arbitrary position. If they are anchored to or as a character, they appear within a paragraph at exactly the character position they are anchored to or as. See section 9.2 for details on drawing objects, and section 9.2.16 for their anchoring.
<define name="paragraph-content" combine="choice">
<choice>
<ref name="shape"/>
<ref name="draw-a"/>
</choice>
</define>
OpenDocument text documents or OpenDocument text content embedded in other types of documents can contain variable text elements called fields. There are several different types of field, each of which implements a different type of variable text element. Fields are most commonly used for:
Page numbers
A page number field displays the number of the page it appears on.
This field is useful for footers. For every page on which the
footer appears, the field assumes the current page number so that
all pages are numbered correctly.
Creation dates
A creation date field displays the date on which the current
document was created. This field is useful for document templates.
Every document created using the template contains the date when it
was created.
Number ranges
A number range field allows the user to number certain elements,
for example, images or tables. A number range field displays its
own position in relation to the other number range fields for the
same range. Therefore, if an image and its associated number range
field are moved within a document, the fields are automatically
updated to reflect the new order.
This section describes how fields are represented in the OpenDocument file format.
Each field type is represented by a corresponding element type. A field in a document is encoded as a single element of the appropriate type. The content of the element is the textual representation of the current field value as it would be displayed or printed. Therefore, ignoring all field elements and displaying only the textual content of the elements provides an approximate text-only version of the document.
The value of a field is usually stored in an attribute. It is necessary to store the value so that the presentation of the field can be recomputed if necessary, for example, if the user decides to change the formatting style of the field. It is also necessary to store the presentation style of the element content, to facilitate easy processing of the XML document. For example, if complete processing of a field is impossible or undesirable, the application can ignore the field and use only the content in this situation. For string values, if the value is identical to the presentation, the value attribute is omitted to avoid duplicate storage of information.
For fields that can store different types of content, for example, numbers, strings, or dates, a value type is stored in addition to the actual value. The value and value type attributes are explained later in section 6.7.1. If more information is needed to restore a field, it is stored in additional attributes.
The most common attributes of field elements are:
Fixed fields
Many fields have a variant where the content does not change after
the initial value is assigned. These fields are generally marked by
the attribute text:fixed. See
section 6.7.2 for more information on this attribute.
Formatting style
Several field types, particularly those representing number, date,
or time data, contain a formatting style. In the OpenDocument
format, this formatting style is represented by a style:data-style-name
attribute. Since the user can change the presentation style for
fields, applications must be able to recompute a new representation of the field content
at any time. See section 6.7.7 for more information on this
attribute.
OpenDocument fields can display information about the current document or about a specific part of the current document, such as the author, the current page number, or the document creation date. These fields are collectively referred to as document fields.
Document fields are often fixed. A field can be marked fixed to indicate that its content is preserved, rather than re-evaluated, when the document is edited. For example, a date field shows the current date. If the date field is marked fixed, the value of the field is preserved during subsequent edits and always reflects the original date on which the field was inserted into the document. If the field is not marked fixed, its value changes whenever the document is edited. In the same way, the author field can show the original author or the last author of a document, depending on whether the field is marked fixed or not.
The group of document fields includes:
Date and time fields
Page number fields
Sender and author fields
Chapter fields
File name fields
Document template fields
Date fields display the current date. The date can be adjusted to display a date other than the current date. For example, the date can be changed on a document that was edited late at night so that it displays the date of the following day or several days later.
This element contains the presentation of the date field value, depending on the data style specified. The default date is the current date. The value of this element can be preserved using the text:fixed attribute described in section 6.7.2.
<define name="paragraph-content" combine="choice">
<element name="text:date">
<ref name="text-date-attlist"/>
<text/>
</element>
</define>
The attributes that may be associated with the <text:date> element are:
Date value
Date adjustment
Fixed (see section 6.7.2)
Formatting style (see section 6.7.7). The formatting style must be a date data style, see section 14.7 for more information.
<define name="text-date-attlist" combine="interleave">
<interleave>
<ref name="common-field-fixed-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
</interleave>
</define>
The text:date-value attribute specifies a particular date value. For example, if the date field is marked fixed, this attribute can be used to specify the date on which the field was marked as fixed. This attribute can also be used to specify a future date. Some applications support date and time in addition to date-only values.
The date value should conform with the date formats described in §3.2.7 and §3.2.9 of [xmlschema-2]. If no value is specified, the current date is assumed, even if the field is marked fixed.
<define name="text-date-attlist" combine="interleave">
<optional>
<attribute name="text:date-value">
<ref name="dateOrDateTime"/>
</attribute>
</optional>
</define>
The value of a date field can be adjusted by a certain time period, which is specified using the text:date-adjust attribute. If the time period is negative, it gets subtracted from the value of the date field, yielding a date before the current date.
The value of this attribute must conform to the time period format described in §3.2.6 of [xmlschema-2]. The value can be preceded by an optional minus sign to indicate a negative time duration.
<define name="text-date-attlist" combine="interleave">
<optional>
<attribute name="text:date-adjust">
<ref name="duration"/>
</attribute>
</optional>
</define>
Time fields display the current time. They are very similar to the date fields described in section 6.2.1, supporting the same attributes except that for time fields, they are called text:time-value and text:time-adjust attributes.
This element contains the presentation of the time field value, depending on the data style specified. The default time is the current time. The value of this element can be preserved using the text:fixed attribute described in section 6.7.2.
<define name="paragraph-content" combine="choice">
<element name="text:time">
<ref name="text-time-attlist"/>
<text/>
</element>
</define>
The attributes that may be associated with the <text:time> element are:
Time value
Time adjustment
Fixed (see section 6.7.2)
Formatting style (see section 6.7.7). The formatting style must be a time data style, see section 14.7 for more information.
<define name="text-time-attlist" combine="interleave">
<interleave>
<ref name="common-field-fixed-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
</interleave>
</define>
The text:time-value
attribute records the time at which the document was last
edited.
Some applications support date and time in addition to date-only values.
The value of this attribute must conform with
either the “dateTime” or “time” data types described in §3.2.7 and
§3.2.8 of [xmlschema-2]. If no value is specified, the current time
is assumed, even if the field is marked fixed
.
<define name="text-time-attlist" combine="interleave">
<optional>
<attribute name="text:time-value">
<ref name="timeOrDateTime"/>
</attribute>
</optional>
</define>
The value of a time field can be adjusted by a certain time period, which is specified using the text:time-adjust attribute.
The value of this attribute must conform to the time period format described in §3.2.6 of [xmlschema-2]. The value can be preceded by an optional minus sign to indicate a negative time duration. Positive values adjust the time to a time in the future, while negative values adjust the time to a time in the past. The duration is truncated to full minutes.
<define name="text-time-attlist" combine="interleave">
<optional>
<attribute name="text:time-adjust">
<ref name="duration"/>
</attribute>
</optional>
</define>
Example: Time adjust attributes and their effects
If the attribute text:time-adjust="PTM15"
, the time field displays
a time which is 15 minutes later than the actual time specified by
the time field value.
If the attribute text:time-adjust="-PTH1"
, the time field displays
a time which is one hour before the actual time specified by the
time field value.
Page number fields display the current page number. These fields are particularly useful in headers and footers. E.g., if a page number field is inserted into a footer, the current page number is displayed on every page on which the footer appears.
The attributes that may be associated with the <text:page-number> element are:
Page adjustment
Display previous or following page numbers
Fixed (see section 6.7.2)
Formatting style (see section 6.7.8)
Page numbers can be formatted according to the number format
described in section 2.9. If a number style is not specified, the
page numbers are formatted according to the number style defined in
the current page style.
<define name="paragraph-content" combine="choice">
<element name="text:page-number">
<ref name="text-page-number-attlist"/>
<text/>
</element>
</define>
<define name="text-page-number-attlist" combine="interleave">
<interleave>
<ref name="common-field-num-format-attlist"/>
<ref name="common-field-fixed-attlist"/>
</interleave>
</define>
Note: To display the total number of pages in a document,
use the <text:page-count/>
field described
in section 6.4.17.
The value of a page number field can be adjusted by a specified number, allowing the display of page numbers of following or preceding pages. The adjustment amount is specified using the text:page-adjust attribute. When this attribute is used, the application:
Adds the value of the attribute to the current page number.
Checks to see if the resulting page exists.
If the page exists, the number of that page is displayed.
If the page does not exist, the value of the page number field remains empty and no number is displayed.
<define name="text-page-number-attlist" combine="interleave">
<optional>
<attribute name="text:page-adjust">
<ref name="integer"/>
</attribute>
</optional>
</define>
The text:select-page attribute is used to display the number of the previous or the following page rather than the number of the current page.
<define name="text-page-number-attlist" combine="interleave">
<optional>
<attribute name="text:select-page">
<choice>
<value>previous</value>
<value>current</value>
<value>next</value>
</choice>
</attribute>
</optional>
</define>
Note: To display the current page number on all pages except the first or last page, use a combination of the text:select page and text:page adjust attributes.
Example: Displaying the current page number on all pages except the first page
<text:page-number
text:select-page="previous"
text:page-adjust="1"
style:num-format="1"/>
In some publications, a continuation reminder is printed at the bottom of the page in addition to the page number. To include a continuation reminder, use the <text:page-continuation> element.
<define name="paragraph-content" combine="choice">
<element name="text:page-continuation">
<ref name="text-page-continuation-attlist"/>
<text/>
</element>
</define>
The attributes associated with the <text:page-continuation> element are:
Previous or following page
String value
This attribute specifies whether to check for a previous or next page and if the page exists, the continuation text is printed.
<define name="text-page-continuation-attlist" combine="interleave">
<attribute name="text:select-page">
<choice>
<value>previous</value>
<value>next</value>
</choice>
</attribute>
</define>
This attribute specifies the continuation text to display. If this attribute is omitted, the element content is used.
<define name="text-page-continuation-attlist" combine="interleave">
<optional>
<attribute name="text:string-value">
<ref name="string"/>
</attribute>
</optional>
</define>
There are several fields which contain information about the sender of the current document, for example, name and email address. The information about the sender is taken from the OpenDocument user information dialog. If a sender field is marked fixed using the text:fixed attribute, the original sender information in the sender fields is preserved. (cf. section 6.7.2) Otherwise, the information is updated each time the file is edited, causing the fields to change value when the document is edited by a different user.
This element represents the first name of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-firstname">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the last name of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-lastname">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the initials of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-initials">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the title of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-title">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the position of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-position">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the email address of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-email">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the private telephone number of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-phone-private">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the facsimile number of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-fax">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the name of the company that employs the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-company">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the office telephone number of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-phone-work">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the street name of the address of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-street">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the city name of the address of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-city">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the postal code of the address of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-postal-code">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the country of the address of the sender.
<define name="paragraph-content" combine="choice">
<element name="text:sender-country">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the state or province of the address of the sender, if applicable.
<define name="paragraph-content" combine="choice">
<element name="text:sender-state-or-province">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
There are two elements available to display the author of a document. One element displays the full name of the author and the other element displays the initials of the author.
The value of author fields can be fixed using the text:fixed attribute. Marking an author field as fixed preserves the original field content. Otherwise, the field content changes each time the document is updated, to reflect the last author of the document.
This element represents the full name of the author.
<define name="paragraph-content" combine="choice">
<element name="text:author-name">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the initials of the author.
<define name="paragraph-content" combine="choice">
<element name="text:author-initials">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
Chapter fields display one of the following:
The name of the current chapter
The number of the current chapter
Both the name and number of the current chapter
If the chapter field is placed inside a header or footer, it displays the current chapter name or number on every page.
<define name="paragraph-content" combine="choice">
<element name="text:chapter">
<ref name="text-chapter-attlist"/>
<text/>
</element>
</define>
The attributes that may be associated with the <text:chapter> element are:
Display
Outline level
The text:display attribute specifies the information that the chapter field should display.
<define name="text-chapter-attlist" combine="interleave">
<attribute name="text:display">
<choice>
<value>name</value>
<value>number</value>
<value>number-and-name</value>
<value>plain-number-and-name</value>
<value>plain-number</value>
</choice>
</attribute>
</define>
Example: If the current chapter number is 2.4, the chapter title is Working with Tables, the prefix is [, and suffix is ], the possible display options and results are as follows:
Value of |
Field content displayed |
---|---|
|
[2.4] |
|
Working with Tables |
|
[2.4] Working with Tables |
|
2.4 |
|
2.4 Working with Tables |
This attribute is used to specify the outline level to use. The chapter field displays the chapter number or title up to the specified outline level.
<define name="text-chapter-attlist" combine="interleave">
<attribute name="text:outline-level">
<ref name="nonNegativeInteger"/>
</attribute>
</define>
File name fields display the name of the file that is currently being edited.
The attributes that may be associated with the <text:file-name> element are:
Display
Fixed
<define name="paragraph-content" combine="choice">
<element name="text:file-name">
<ref name="text-file-name-attlist"/>
<text/>
</element>
</define>
The text:display attribute specifies how much of the file name to display. The following display options are allowed:
The full file name including the path and the extension
The file path only
The file name only
The file name and the extension
The filename might be an IRI, either because an IRI has been used to retrieve the file, or the application internally uses IRIs and therefore converts even system specific paths into an IRI. If this is the case, and if the path, the name or the extension cannot be evaluated from the IRI, then the IRI should be displayed unmodified.
<define name="text-file-name-attlist" combine="interleave">
<optional>
<attribute name="text:display">
<choice>
<value>full</value>
<value>path</value>
<value>name</value>
<value>name-and-extension</value>
</choice>
</attribute>
</optional>
</define>
If a file name field is fixed, its value does not change when the file is edited.
<define name="text-file-name-attlist" combine="interleave">
<ref name="common-field-fixed-attlist"/>
</define>
The document template name field displays information about the document template in use, such as the template title or the file name.
The only attribute that may be associated with the <text:template-name> element is:
Display
<define name="paragraph-content" combine="choice">
<element name="text:template-name">
<ref name="text-template-name-attlist"/>
<text/>
</element>
</define>
This attribute specifies which information about the document template to display. The following display options are allowed:
The full file name including the path and the extension
The file path only
The file name only
The file name and the extension
The title
The area of the document template
The latter two values can be used for template
dialogs. The values are a superset of the display values available
for the <text:file-name>
element.
<define name="text-template-name-attlist">
<optional>
<attribute name="text:display">
<choice>
<value>full</value>
<value>path</value>
<value>name</value>
<value>name-and-extension</value>
<value>area</value>
<value>title</value>
</choice>
</attribute>
</optional>
</define>
For Spreadsheet documents, sheet name fields display the name of the sheet that is currently being edited.
<define name="paragraph-content" combine="choice">
<element name="text:sheet-name">
<text/>
</element>
</define>
OpenDocument text documents can contain variables, which are processed or displayed using variable fields. A variable is a name/value pair. The variable name is used throughout the document to identify a particular variable, and therefore variable names cannot be reused for different types of variables. Most variable fields support different value types, such as numbers, dates, strings, and so on. In the OpenDocument file format, a variable must be declared at the beginning of a document.
There are three types of variables:
Simple variables
Simple variables, usually called variables, can take different values at different positions throughout a document. Simple variables can be set using either setter or input fields. Setter fields contain an expression, which is used to compute the new value of the variable. Input fields prompt the user for the new value. Simple variables can be used to display different text in recurring elements, such as headers or footers.
User variables
User variables have the same value throughout a document. If a user variable is set anywhere within the document, all fields in the document that display the user variable have the same value. In the office application user interface, a user variable can be set at any occurrence of a user field, or by using user variable input fields. In the OpenDocument file format, the value of the user variable can only be set after the variable is declared.
Sequence variables
Sequence variables are used to number certain items in an OpenDocument text document, for example, images or tables.
Expression and text input fields are also variable fields, but they are not associated with any particular variables. Since their functionality is closely related to that of the variable fields, they are also described in this section of the manual.
Variables must be declared before they can be used. The variable declarations are collected in container elements for the particular variable type. The OpenDocument code for declaring variables is described in sections 6.3.1, 6.3.5 and 6.3.8.
Simple variables are declared using <text:variable-decl> elements. The declaration specifies the name and the value type of the variable.
To specify the name and value type of the simple variable, the following attributes are attached to the <text:variable-decl> element:
text:name
The name of the variable must be unique. The name cannot already be used for any other type of variable. See section 6.7.3 for information on using this attribute.
office:value-type
See section 6.7.1 for information on using this attribute.
<define name="text-variable-decl">
<element name="text:variable-decl">
<ref name="common-field-name-attlist"/>
<ref name="common-value-type-attlist"/>
</element>
</define>
Simple variables can be set using variable setter elements. This element contains the presentation of the value of the variable, which can be empty if the text:display attribute is set to none.
The attributes that may be associated with the <text:variable-set> element are:
text:name
This attribute specifies the name of the variable to set. It must match the name of a variable that has already been declared. See section 6.7.3 for information on using this attribute.
text:formula
This attribute contains the formula to compute the value of the variable field. If the formula equals the content of the field element, this attribute can be omitted. See section 6.7.6 for information on using this attribute.
office:value-type and the appropriate value attribute
See section 6.7.1 for information on using these attributes.
Note: A simple variable should not
contain different value types at different places in a document.
However, an implementation may allow the use of different value
types for different instances of the same variable. In the case of
the numeric value types float
,
percentage,
and currency
, the value is automatically converted to
the different value type. For value types that are stored
internally as numbers, such as date
,
time,
and boolean
types, the values are reinterpreted as
numbers of the respective types. If a variable is used for both
string and non-string types, the behavior is undefined, therefore
this practice is not recommended.
text:display
This attribute can be used to specify whether or
not to display the value of the <text:variable-set>
element. If the text:display
attribute is set to value, the value of
the variable is displayed. If the attribute is set to none
, the value is not displayed. See section
6.7.5 for information on using this attribute.
style:data-style-name
This attribute specifies the data style to use to format a numeric, Boolean, or date/time variable. If a data style is not specified, a standard data style is used. See section 6.7.7 for information on using this attribute.
<define name="paragraph-content" combine="choice">
<element name="text:variable-set">
<interleave>
<ref name="common-field-name-attlist"/>
<ref name="common-field-formula-attlist"/>
<ref name="common-value-and-type-attlist"/>
<ref name="common-field-display-value-none-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
</interleave>
<text/>
</element>
</define>
The <text:variable-get> element reads and displays the value of a simple variable. The value of this element is the value of the last preceding <text:variable-set> element with an identical text:name attribute. The element determines how the value of the variable is presented, in accordance with the chosen formatting style.
The attributes that may be associated with the <text:variable-get> element are:
text:name
This attribute specifies the name of the variable to display. The name must match the name of a preceding <text:variable-del> element. See section 6.7.3 for information on using this attribute.
text:display
This attribute can be used to specify whether to display the formula for a simple variable or the computed value of the variable. See section 6.7.5 for information on using this attribute.
style:data-style-name
This attribute specifies the data style to use to format a numeric, Boolean, or date/time variable. If a data style is not specified, a standard data style is used. See section 6.7.7 for information on using this attribute.
<define name="paragraph-content" combine="choice">
<element name="text:variable-get">
<interleave>
<ref name="common-field-name-attlist"/>
<ref name="common-field-display-value-formula-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
</interleave>
<text/>
</element>
</define>
As an alternative to setting simple variables using formulas in variable setter elements, the user can be prompted for variable values. To do this, use the <text:variable-input> element. This element contains the presentation of the variable's value according to the chosen formatting style. The presentation can be empty if the text:display attribute is set to none.
The attributes that may be associated with the <text:variable-input> element are:
text:name
This attribute specifies the name of the variable to display. It must match the name of a variable that was already declared. See section 6.7.3 for information on using this attribute.
text:description
This optional attribute contains a brief message that is presented to users when they are prompted for input. The message should give users enough information about the variable or the use of the value within the document to enable them to choose an appropriate value. See section 6.7.4 for information on using this attribute.
office:value-type and the appropriate value attribute
See section 6.7.1 for information on using these attributes.
text:display
This attribute can be used to specify whether to display or hide the value of the variable through the variable input field. See section 6.7.5 for information on using this attribute.
style:data-style-name
This attribute specifies the data style to use to format a numeric, Boolean, or date/time variable. If a data style is not specified, a standard data style is used. See section 6.7.7 for information on using this attribute.
<define name="paragraph-content" combine="choice">
<element name="text:variable-input">
<interleave>
<ref name="common-field-name-attlist"/>
<ref name="common-field-description-attlist"/>
<ref name="common-value-type-attlist"/>
<ref name="common-field-display-value-none-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
</interleave>
<text/>
</element>
</define>
User variables contain values that are displayed using appropriate fields. Unlike simple variables, user variables have the same value throughout a document. For this reason, the value of user variables is stored in the variable declaration itself.
The attributes that may be associated with the <text:user-field-del> element are:
text:name
This attribute specifies the name of the variable to be declared. The name must be unique. It cannot already be used for any other type of variable including simple and sequence variables. See section 6.7.3 for information on using this attribute.
text:formula
This attribute contains the formula to compute the value of the user variable field. If the formula is the same as the content of the field element, this attribute can be omitted. See section 6.7.6 for information on using this attribute.
office:value-type and the appropriate value attribute
See section 6.7.1 for information on using these attributes.
<define name="text-user-field-decl">
<element name="text:user-field-decl">
<ref name="common-field-name-attlist"/>
<optional>
<ref name="common-field-formula-attlist"/>
</optional>
<ref name="common-value-and-type-attlist"/>
</element>
</define>
The content of user variables can be displayed using <text:user-field-get> elements.
The attributes that may be associated with the <text:user-field-get> element are:
text:name
This attribute specifies the name of the variable to display. The name must match the name of a preceding <text:user-field-del> element. See section 6.7.3 for information on using this attribute.
text:display
This attribute can be used to specify whether to:
Display the formula used to compute the value of the user variable.
Display the value of the user variable.
Hide the user variable fields.
See section 6.7.5 for information on using this attribute.
Note: Since the office application user interfaces usually allow users to edit a user field variable by clicking on any user field, a hidden <text:user-field-get> element can be used as an anchor to allow easy access to a particular user field variable.
style:data-style-name
This attribute specifies the data style to use to format a numeric, Boolean, or date/time variable. If a data style is not specified, a standard data style is used. See section 6.7.7 for information on using this attribute.
<define name="paragraph-content" combine="choice">
<element name="text:user-field-get">
<interleave>
<ref name="common-field-name-attlist"/>
<ref name="common-field-display-value-formula-none-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
</interleave>
<text/>
</element>
</define>
An alternative method of setting user variables is to use input fields, similar to the input fields for simple variables. A user variable can be set in this way using the <text:user-field-input> element. Since the value of a user field variable is stored in the <text:user-field-del> element, the <text:user-field-input> element does not contain the value and value type attributes from the <text:variable-input> field.
The presentation can be empty if the text:display attribute is set to none.
The attributes that may be associated with the <text:user-field-input> element are:
text:name
This attribute specifies the name of the variable to set. It must match the name of a variable that has already been declared. See section 6.7.3 for information on using this attribute.
text:description
This optional attribute contains a brief message that is presented to users when they are prompted for input. The message should give users enough information about the variable or the use of the value within the document, to enable them to choose an appropriate value. See section 6.7.4 for information on using this attribute.
style:data-style-name
This attribute specifies the data style to use to format a numeric, Boolean, or date/time variable. If a data style is not specified, a standard data style is used. See section 6.7.7 for information on using this attribute.
<define name="paragraph-content" combine="choice">
<element name="text:user-field-input">
<interleave>
<ref name="common-field-name-attlist"/>
<ref name="common-field-description-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
</interleave>
<text/>
</element>
</define>
Sequence variables are used to number items within an OpenDocument text document. Sequence variables are most commonly used for sequential numbering. However, expression formulas can be included in sequence fields to support more advanced sequences. See section 6.3.9 for more information on Using Sequence Fields and their uses.
Sequence variables are declared using the <text:sequence-del> element.
To facilitate chapter-specific numbering, attributes can be attached to a sequence variable to specify a chapter level and a separation character. The attributes that may be associated with the <text:sequence-del> element are:
text:name
This attribute specifies the name of the variable to be declared. The name must be unique. It cannot already be used for any other type of variable including simple and user variables. See section 6.7.3 for information on using this attribute.
text:display-outline-level
See section 6.3.8:Outline Level for information about this attribute.
text:separation-character
See section 6.3.8:Separation Character for information about this attribute.
<define name="text-sequence-decl">
<element name="text:sequence-decl">
<ref name="text-sequence-decl-attlist"/>
</element>
</define>
<define name="text-sequence-decl-attlist" combine="interleave">
<ref name="common-field-name-attlist"/>
</define>
Sequences can be numbered by chapter. To use this feature, use the text:display-outline-level attribute to specify an outline level that determines which chapters to reference for the chapter-specific numbering. All chapters that are at or below the specified outline level reset the value of the sequence to zero, the default value. Also, the chapter number of the last chapter at or below the specified outline level is prefixed to the sequence number. Choosing an outline level of zero results in a straight sequence of all sequence elements for that sequence variable.
<define name="text-sequence-decl-attlist" combine="interleave">
<attribute name="text:display-outline-level">
<ref name="nonNegativeInteger"/>
</attribute>
</define>
If sequences are numbered by chapter, this attribute is used to choose a character to separate the chapter number from the sequence number.
If the value of the text:display-outline-level
attribute is a non-zero value, a separation character may be
specified. The default separation character is "."
.Otherwise, if the value of text:display-outline-level
is zero, this attribute must be omitted.
<define name="text-sequence-decl-attlist" combine="interleave">
<optional>
<attribute name="text:separation-character">
<ref name="character"/>
</attribute>
</optional>
</define>
Example: Sequence variable
The sequence variable 3.7.36#5 with a value of 5 is declared using:
Attribute |
Value |
---|---|
text:display-outline-level |
3 |
text:separation-character |
# |
Once a sequence variable is declared, it can be
used in sequence fields throughout the document. Most sequence
fields simply increment and display the sequence variable. However,
sequence fields can also assume a new start value at any given
position in a document. This start value is computed using a
formula which is contained in the sequence field. If a sequence
field without a start value is added, the office application
software automatically inserts an expression of the type
variable+1
.
Sequence fields are most commonly used for
simple counting sequences. However, the ability to provide
arbitrary expressions supports more complex sequences. To form a
sequence of even numbers, all sequence elements for that particular
variable need to contain a formula incrementing the value by two,
for example, variable+2
. A sequence
with a starting value of 1
and all
subsequent elements using the formula variable*2
yields all powers of two. Since
different sequence elements for the same sequence variable may
contain different formulas, complex sequences may be
constructed.
The attributes that may be associated with the <text:sequence> element are:
text:name
This attribute specifies the name of the variable that the field is to display. It must match the name of a sequence variable that was already declared. See section 6.7.3 for information on using this attribute.
text:formula
This optional attribute contains a formula to compute the value of the sequence field. If this attribute is omitted, an expression containing the content of the element is used. See section 6.7.6 for information on using this attribute.
style:num-format and style:num-letter-sync
These attributes specify the numbering style to use. If a numbering style is not specified, the numbering style is inherited from the page style. See section 6.7.8 for information on these attributes.
text:ref-name
See the section 6.3.9:Reference Name for more information about this attribute.
<define name="paragraph-content" combine="choice">
<element name="text:sequence">
<interleave>
<ref name="common-field-name-attlist"/>
<ref name="common-field-formula-attlist"/>
<ref name="common-field-num-format-attlist"/>
<ref name="text-sequence-ref-name"/>
</interleave>
<text/>
</element>
</define>
Sequence fields can be the target of references, as implemented using reference fields. See section 6.6.5 for more information about reference fields. To enable a reference field to identify a particular sequence field, the sequence field must contain an additional attribute containing a name. No two sequence fields can have the same reference name.
If the sequence field is not the target of a reference, this attribute can be omitted.
<define name="text-sequence-ref-name">
<optional>
<attribute name="text:ref-name">
<ref name="string"/>
</attribute>
</optional>
</define>
Expression fields contain expressions that are evaluated and the resulting value is displayed. The value of the expression is formatted according to the chosen formatting style.
The attributes that may be associated with the <text:expression> element are:
text:formula
This attribute contains the actual expression used to compute the value of the expression field. See section 6.7.6 for information on using this attribute.
office:value-type and the appropriate value attribute
See section 6.7.1 for information on using these attributes.
text:display
Use this attribute to specify one of the following:
To display the value of the field.
To display the formula used to compute the value.
See section 6.7.5 for information on using this attribute.
style:data-style-name
This attribute specifies the data style to use to format a numeric, Boolean, or date/time variable. If a data style is not specified, a standard data style is used. See section 6.7.7 for information on using this attribute.
<define name="paragraph-content" combine="choice">
<element name="text:expression">
<interleave>
<ref name="common-field-formula-attlist"/>
<optional>
<ref name="common-value-and-type-attlist"/>
</optional>
<ref name="common-field-display-value-formula-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
</interleave>
<text/>
</element>
</define>
A text input field is a variable field. From the point of view of the user interface, a text input field is similar to the <text:variable-input> and <text:user-field-input> fields. However, the text input field does not change the value of any variables.
The only attribute that may be associated with the <text:text-input> element is:
text:description
This attribute contains a brief message that is presented to users when they are prompted for input. The message should give users enough information about the purpose of the field and how it is used within the document, to enable them to choose an appropriate value. See section 6.7.4 for information on using this attribute.
<define name="paragraph-content" combine="choice">
<element name="text:text-input">
<ref name="common-field-description-attlist"/>
<text/>
</element>
</define>
Metadata fields display meta information about the document, such as, the document creation date or the time at which the document was last printed. The names of the metadata field elements correspond to the metadata elements described in Chapter 3.
All metadata field elements can be marked as fixed using the text:fixed attribute. (Cf. section 6.7.2)
Several metadata fields display a date or a time. The elements for these fields require an associated text:date-value or a text:time-value attribute, and optionally, they can also have a style:data-style-name attribute. See section 6.7.1 for more information on these attributes.
This element represents the name of the author who created the original document.
<define name="paragraph-content" combine="choice">
<element name="text:initial-creator">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the date on which the document was created.
<define name="paragraph-content" combine="choice">
<element name="text:creation-date">
<interleave>
<ref name="common-field-fixed-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
<optional>
<attribute name="text:date-value">
<ref name="dateOrDateTime"/>
</attribute>
</optional>
</interleave>
<text/>
</element>
</define>
This element represents the time at which the document was created.
<define name="paragraph-content" combine="choice">
<element name="text:creation-time">
<interleave>
<ref name="common-field-fixed-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
<optional>
<attribute name="text:time-value">
<ref name="timeOrDateTime"/>
</attribute>
</optional>
</interleave>
<text/>
</element>
</define>
This element contains a brief description of the document.
<define name="paragraph-content" combine="choice">
<element name="text:description">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element contains user-defined information
about the document. It displays the information provided within a
<meta:user-defined>
element that has the same name.
<define name="paragraph-content" combine="choice">
<element name="text:user-defined">
<interleave>
<ref name="common-field-fixed-attlist"/>
<attribute name="text:name">
<ref name="string"/>
</attribute>
<ref name="common-field-data-style-name-attlist"/>
<optional>
<attribute name="office:value">
<ref name="double"/>
</attribute>
</optional>
<optional>
<attribute name="office:date-value">
<ref name="dateOrDateTime"/>
</attribute>
</optional>
<optional>
<attribute name="office:time-value">
<ref name="duration"/>
</attribute>
</optional>
<optional>
<attribute name="office:boolean-value">
<ref name="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="office:string-value">
<ref name="string"/>
</attribute>
</optional>
</interleave>
<text/>
</element>
</define>
This element represents the time at which the document was last printed.
<define name="paragraph-content" combine="choice">
<element name="text:print-time">
<interleave>
<ref name="common-field-fixed-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
<optional>
<attribute name="text:time-value">
<ref name="time"/>
</attribute>
</optional>
</interleave>
<text/>
</element>
</define>
This element represents the date on which the document was last printed.
<define name="paragraph-content" combine="choice">
<element name="text:print-date">
<interleave>
<ref name="common-field-fixed-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
<optional>
<attribute name="text:date-value">
<ref name="date"/>
</attribute>
</optional>
</interleave>
<text/>
</element>
</define>
This element represents name of the last person who printed the document.
<define name="paragraph-content" combine="choice">
<element name="text:printed-by">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the title of the document.
<define name="paragraph-content" combine="choice">
<element name="text:title">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element represents the subject of the document.
<define name="paragraph-content" combine="choice">
<element name="text:subject">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element contains a list of keywords used to describe the document.
<define name="paragraph-content" combine="choice">
<element name="text:keywords">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
This element contains the document revision number. When the document is created, the revision number is set to 1. Each time the document is saved, the document revision number is incremented.
<define name="paragraph-content" combine="choice">
<element name="text:editing-cycles">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
Note: Since the <text:editing-cycles> field can not be formatted, the revision number can be read from the element content. Therefore, no extra attribute is needed.
Every time a document is edited, the office application records the duration between the time the document is opened and the time the document is closed. It then adds the duration to an internal counter, thereby keeping track of the total time that has been spent editing the document.
<define name="paragraph-content" combine="choice">
<element name="text:editing-duration">
<interleave>
<ref name="common-field-fixed-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
<optional>
<attribute name="text:duration">
<ref name="duration"/>
</attribute>
</optional>
</interleave>
<text/>
</element>
</define>
This element represents the time at which the document was last modified.
This element displays the information from the
<dc:date>
element. The
name was chosen to avoid confusion with <text:date>
fields.
<define name="paragraph-content" combine="choice">
<element name="text:modification-time">
<interleave>
<ref name="common-field-fixed-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
<optional>
<attribute name="text:time-value">
<ref name="time"/>
</attribute>
</optional>
</interleave>
<text/>
</element>
</define>
This element represents the date on which the document was last modified.
This element displays the information from the
<dc:date>
element. The
name was chosen to avoid confusion with <text:date>
fields.
<define name="paragraph-content" combine="choice">
<element name="text:modification-date">
<interleave>
<ref name="common-field-fixed-attlist"/>
<ref name="common-field-data-style-name-attlist"/>
<optional>
<attribute name="text:date-value">
<ref name="date"/>
</attribute>
</optional>
</interleave>
<text/>
</element>
</define>
This element represents the name of the person who last modified the document.
<define name="paragraph-content" combine="choice">
<element name="text:creator">
<ref name="common-field-fixed-attlist"/>
<text/>
</element>
</define>
These fields display how many objects of a certain type a document contains. They can be used to display the number of
pages,
paragraphs,
words,
characters,
tables,
images, or
embedded objects.
<define name="paragraph-content" combine="choice">
<element>
<choice>
<name>text:page-count</name>
<name>text:paragraph-count</name>
<name>text:word-count</name>
<name>text:character-count</name>
<name>text:table-count</name>
<name>text:image-count</name>
<name>text:object-count</name>
</choice>
<ref name="common-field-num-format-attlist"/>
<text/>
</element>
</define>
Documents can reference databases and display database information as text content. To display database information, the OpenDocument schema uses a group of text fields, collectively called database fields. Office applications may use database tables from SQL servers, therefore database fields can be used to access any SQL database, provided that the appropriate drivers are available.
A database may contain the following components:
Tables, which store the actual data.
Queries, which extract a subset of data from one or more tables.
Forms, which present the data.
Reports, which summarize the database content.
Database forms and reports are not relevant to text content, therefore they are not discussed in this chapter. From the point of view of embedding database information in OpenDocument text documents, queries and tables are considered the same. Therefore for the remainder of this section, the phrase database table refers to both database tables and database queries.
Database fields alone do not retrieve information from a database. In addition to the database fields, a set of database rows is also added to the document. When new data is added to the document, all database fields belonging to the added database table are updated. Using the office application user interface, database rows can be added in one of the following ways:
Manually, using a data source browser and the data to fields function.
Using the Form Letter menu item on the File menu. This menu item adds each row in the chosen data set into a newly created copy of the form letter.
To display data from a database table use the <text:database-display> element. The <text:database-select> and <text:database-next> elements can be used to determine which row within the current selection should be displayed. The current row number for a particular table can be displayed using the <text:database-row-number> element. Finally, the <text:database-name> field displays the name of the most recently used database, which is the address book file database by default.
A database field's source can either be the name of a database, or an IRI containing database connection resource data. If the source is a database name, then this name is used by all of the office application components to identify a database. All database fields contain a database name or connection resource, and most database fields also contain the name of a database table, which must be stored in the database. An additional attribute determines whether the database table refers to an SQL table, an OpenDocument query, or the result of a SQL command.
<define name="common-field-database-table">
<ref name="common-field-database-table-attlist"/>
<ref name="common-field-database-name"/>
</define>
The text:database-name
attribute specifies
the source database by its name.
<define name="common-field-database-name" combine="choice">
<optional>
<attribute name="text:database-name">
<ref name="string"/>
</attribute>
</optional>
</define>
The <form:connection-resource>
element
specifies the source database by an [XLink]. Its xlink:href
attribute either references a
file containing a database, or it contains information on how to
make a connection to a database, for instance a [JDBC] URL. See
also section 11.1.20.
<define name="common-field-database-name" combine="choice">
<ref name="form-connection-resource"/>
</define>
The text:table-name
attribute specifies a
table within the source database.
<define name="common-field-database-table-attlist" combine="interleave">
<attribute name="text:table-name">
<ref name="string"/>
</attribute>
</define>
The text:table-type
attribute determines
whether the database table refers to an SQL table, an OpenDocument
query, or the result of a SQL command.
<define name="common-field-database-table-attlist" combine="interleave">
<optional>
<attribute name="text:table-type">
<choice>
<value>table</value>
<value>query</value>
<value>command</value>
</choice>
</attribute>
</optional>
</define>
The <text:database-display> element displays data from a database. When a new data set is added to a document, all fields that display data from that database table update their content.
The attributes that may be associated with the <text:database-display> element are:
text:database-name
,
text:table-name
and text:table-type
These attributes specify the database and database table that this field uses.
text:database-column-name
See section 6.5.2:Column Name for information about this attribute.
style:data-style-name
If the column specifies a numeric, Boolean, date, or time value, the data is formatted according to the appropriate data style. If no data style is specified, the data style assigned to this column in is used. See section 6.7.7 for more information about using this attribute.
<define name="paragraph-content" combine="choice">
<element name="text:database-display">
<ref name="text-database-display-attlist"/>
<text/>
</element>
</define>
<define name="text-database-display-attlist" combine="interleave">
<ref name="common-field-database-table"/>
</define>
<define name="text-database-display-attlist" combine="interleave">
<ref name="common-field-data-style-name-attlist"/>