aboutsummaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorRasmus2017-06-21 13:20:20 +0200
committerRasmus2017-06-22 11:54:18 +0200
commit5cecd275820df825c51bf9a27fcc7e35f30ff273 (patch)
treeb3f72e63953613d565e6d5a35bec97f158eb603c /etc
parent386a3da920482b8cb3e962fb944d135c8a770e26 (diff)
downloademacs-5cecd275820df825c51bf9a27fcc7e35f30ff273.tar.gz
emacs-5cecd275820df825c51bf9a27fcc7e35f30ff273.zip
Update Org to v9.0.9
Please see etc/ORG-NEWS for details.
Diffstat (limited to 'etc')
-rw-r--r--etc/ORG-NEWS1406
-rw-r--r--etc/org/OrgOdtStyles.xml20
-rw-r--r--etc/org/README2
-rw-r--r--etc/org/library-of-babel.org584
-rw-r--r--etc/refcards/orgcard.tex27
-rw-r--r--etc/schema/od-manifest-schema-v1.2-os.rnc88
-rw-r--r--etc/schema/od-schema-v1.2-os.rnc6280
7 files changed, 8373 insertions, 34 deletions
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 38df7b2bd87..fb50175316e 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -1,17 +1,1368 @@
1ORG NEWS -- history of user-visible changes. -*- mode: org; coding: utf-8 -*- 1ORG NEWS -- history of user-visible changes. -*- org -*-
2 2
3#+LINK: doc http://orgmode.org/worg/doc.html#%s 3#+LINK: doc http://orgmode.org/worg/doc.html#%s
4#+LINK: git http://orgmode.org/w/?p=org-mode.git;a=commit;h=%s 4#+LINK: git http://orgmode.org/cgit.cgi/org-mode.git/commit/?id=%s
5 5
6Copyright (C) 2012-2017 Free Software Foundation, Inc. 6Copyright (C) 2012-2017 Free Software Foundation, Inc.
7See the end of the file for license conditions. 7See the end of the file for license conditions.
8 8
9Please send Org bug reports to emacs-orgmode@gnu.org. 9Please send Org bug reports to mailto:emacs-orgmode@gnu.org.
10 10
11* Version 8.2.3 11* Version 9.0
12 12
13** Incompatible changes 13** Incompatible changes
14 14
15*** Emacs 23 support has been dropped
16
17From now on, Org expects at least Emacs 24.3, although Emacs 24.4 or
18above is suggested.
19
20*** XEmacs support has been dropped
21
22Incomplete compatibility layer with XEmacs has been removed. If you
23want to take over maintainance of this compatibility, please contact
24our mailing list.
25
26*** New syntax for export blocks
27
28Export blocks are explicitly marked as such at the syntax level to
29disambiguate their parsing from special blocks. The new syntax is
30
31#+BEGIN_SRC org
32,#+BEGIN_EXPORT backend
33...
34,#+END_EXPORT
35#+END_SRC
36
37instead of
38
39#+BEGIN_SRC org
40,#+BEGIN_backend
41...
42,#+END_backend
43#+END_SRC
44
45As a consequence, =INCLUDE= keywords syntax is modified, e.g.,
46
47#+BEGIN_SRC org
48,#+INCLUDE: "file.org" HTML
49#+END_SRC
50
51becomes
52
53#+BEGIN_SRC org
54,#+INCLUDE: "file.org" export html
55#+END_SRC
56
57The following function repairs export blocks and =INCLUDE= keywords
58using previous syntax:
59
60#+BEGIN_SRC emacs-lisp
61(defun org-repair-export-blocks ()
62 "Repair export blocks and INCLUDE keywords in current buffer."
63 (interactive)
64 (when (eq major-mode 'org-mode)
65 (let ((case-fold-search t)
66 (back-end-re (regexp-opt
67 '("HTML" "ASCII" "LATEX" "ODT" "MARKDOWN" "MD" "ORG"
68 "MAN" "BEAMER" "TEXINFO" "GROFF" "KOMA-LETTER")
69 t)))
70 (org-with-wide-buffer
71 (goto-char (point-min))
72 (let ((block-re (concat "^[ \t]*#\\+BEGIN_" back-end-re)))
73 (save-excursion
74 (while (re-search-forward block-re nil t)
75 (let ((element (save-match-data (org-element-at-point))))
76 (when (eq (org-element-type element) 'special-block)
77 (save-excursion
78 (goto-char (org-element-property :end element))
79 (save-match-data (search-backward "_"))
80 (forward-char)
81 (insert "EXPORT")
82 (delete-region (point) (line-end-position)))
83 (replace-match "EXPORT \\1" nil nil nil 1))))))
84 (let ((include-re
85 (format "^[ \t]*#\\+INCLUDE: .*?%s[ \t]*$" back-end-re)))
86 (while (re-search-forward include-re nil t)
87 (let ((element (save-match-data (org-element-at-point))))
88 (when (and (eq (org-element-type element) 'keyword)
89 (string= (org-element-property :key element) "INCLUDE"))
90 (replace-match "EXPORT \\1" nil nil nil 1)))))))))
91#+END_SRC
92
93Moreover, ~:export-block~ keyword used in ~org-export-define-backend~ and
94~org-export-define-derived-backend~ is no longer used and needs to be
95removed.
96
97*** Footnotes
98
99**** [1]-like constructs are not valid footnotes
100
101Using =[1]= as a footnote was already discouraged in the manual, since
102it introduced too many false-positives in many Org documents. These
103constructs are now unsupported.
104
105If you used =[N]= in some of your documents, consider turning them into
106=[fn:N]=.
107
108**** /Org Footnote/ library doesn't handle non-Org buffers
109
110Commands for footnotes in an Org document no longer try to do
111something in non-Org ones. If you need to have footnotes there,
112consider using the =footnote.el= library, shipped with Emacs.
113
114In particular, ~org-footnote-tag-for-non-org-mode-files~ no longer
115exists.
116
117*** ~org-file-apps~ no longer accepts S-expressions as commands
118
119The variable now accepts functions of two arguments instead of plain
120S-expressions. Replacing a S-expresion with an appropriate function
121is straightforward. For example
122
123: ("pdf" . (foo))
124
125becomes
126
127: ("pdf" . (lambda (file link) (foo)))
128
129*** The ~{{{modification-time}}}~ macro can get time via =vc=
130
131The modification time will be determined via =vc.el= if the second
132argument is non-nil. See the manual for details.
133
134*** Preparation and completion functions in publishing projects change signature
135
136Preparation and completion functions are now called with an argument,
137which is the project property list. It used to be dynamically scoped
138through the ~project-plist~ variable.
139
140*** Old Babel header properties are no longer supported
141
142Using header arguments as property names is no longer possible. As
143such, the following
144
145#+BEGIN_EXAMPLE
146,* Headline
147:PROPERTIES:
148:exports: code
149:var: a=1 b=2
150:var+: c=3
151:END:
152#+END_EXAMPLE
153
154should be written instead
155
156#+BEGIN_EXAMPLE
157,* Headline
158:PROPERTIES:
159:header-args: :exports code
160:header-args: :var a=1 b=2
161:header-args+: :var c=3
162:END:
163#+END_EXAMPLE
164
165Please note that, however, old properties were defined at the source
166block definition. Current ones are defined where the block is called.
167
168** New features
169
170*** ~org-eww~ has been moved into core
171*** New org-protocol key=value syntax
172
173Org-protocol can now handle query-style parameters such as:
174
175#+begin_example
176org-protocol://store-link?url=http:%2F%2Flocalhost%2Findex.html&title=The%20title
177org-protocol://capture?template=x&title=Hello&body=World&url=http:%2F%2Fexample.com
178#+end_example
179
180Old-style links such as
181: org-protocol://store-link:/http:%2F%2Flocalhost%2Findex.html/The%20title
182continue to be supported.
183
184If you have defined your own handler functions for
185~org-protocol-protocol-alist~, change them to accept either a property
186list (for new-style links) or a string (for old-style links). Use
187~org-protocol-parse-parameters~ to convert old-style links into property
188lists.
189
190*** New Org linter library
191
192~org-lint~ can check syntax and report common issues in Org documents.
193
194*** New option ~date-tree-last~ for ~org-agenda-insert-diary-strategy~
195
196When ~org-agenda-insert-diary-strategy~ is set to ~date-tree-last~, diary
197entries are added to last in the date tree.
198
199*** New ~vbar~ entity
200
201~\vbar~ or ~\vbar{}~ will be exported unconditionnally as a =|=,
202unlike to existing ~\vert~, which is expanded as ~|~ when using
203a HTML derived export back-end.
204
205*** Export
206
207**** New =#+latex_compiler= keyword to set LaTeX compiler.
208
209PDFLaTeX, XeLaTeX, and LuaLaTeX are supported. See the manual for
210details.
211
212**** New option ~org-export-with-broken-links~
213
214This option tells the export process how to behave when encountering
215a broken internal link. See its docstring for more information.
216
217**** Attributes support in custom language environments for LaTeX export
218
219Custom language environments for LaTeX export can now define the
220string to be inserted during export, using attributes to indicate the
221position of the elements. See variable ~org-latex-custom-lang-environments~
222for more details.
223
224**** New Texinfo ~options~ attribute on special blocks
225
226Using ~:options~ as a Texinfo attribute, it is possible to add
227information to custom environments. See manual for details.
228
229**** New HTML ~id~ attributes on special, example and quote blocks
230
231If the block has a =#+NAME:= attribute assigned, then the HTML element
232will have an ~id~ attribute with that name in the HTML export. This
233enables one to create links to these elements in other places, e.g.,
234~<a href="#name">text</a>~.
235
236**** Listings with captions are now numbered in HTML export
237
238The class associated to the numbering is "listing-number". If you
239don't want these blocks to be numbered, as it was the case until now,
240You may want to add ~.listing-number { display: none; }~ to the CSS
241used.
242
243**** Line Numbering in SRC/EXAMPLE blocks support arbitrary start number
244
245The ~-n~ option to ~SRC~ and ~EXAMPLE~ blocks can now take a numeric
246argument to specify the staring line number for the source or example
247block. The ~+n~ option can now take a numeric argument that will be
248added to the last line number from the previous block as the starting
249point for the SRC/EXAMPLE block.
250
251#+BEGIN_SRC org
252,#+BEGIN_SRC emacs-lisp -n 20
253;; this will export with line number 20
254(message "This is line 21")
255,#+END_SRC
256,#+BEGIN_SRC emacs-lisp +n 10
257;; This will be listed as line 31
258(message "This is line 32")
259,#+END_SRC
260#+END_SRC
261
262**** Allow toggling center for images in LaTeX export
263
264With the global variable ~org-latex-images-centered~ or the local
265attribute ~:center~ it is now possible to center an image in LaTeX
266export.
267
268**** Default CSS class ~org-svg~ for SVG images in HTML export
269
270SVG images exported in HTML are now by default assigned a CSS class
271~org-svg~ if no CSS class is specified with the ~:class~ attribute. By
272default, the CSS styling of class ~org-svg~ specifies an image width of
27390\thinsp{}% of the container the image.
274
275**** Markdown footnote export customization
276
277Variables ~org-md-footnotes-section~ and ~org-md-footnote-format~
278introduced for =ox-md.el=. Both new variables define template strings
279which can be used to customize the format of the exported footnotes
280section and individual footnotes, respectively.
281
282*** Babel
283
284**** Blocks with coderefs labels can now be evaluated
285
286The labels are removed prior to evaluating the block.
287
288**** Support for Lua language
289**** Support for SLY in Lisp blocks
290
291See ~org-babel-lisp-eval-fn~ to activate it.
292
293**** Support for Stan language
294
295New ob-stan.el library.
296
297Evaluating a Stan block can produce two different results.
298
2991. Dump the source code contents to a file.
300
301 This file can then be used as a variable in other blocks, which
302 allows interfaces like RStan to use the model.
303
3042. Compile the contents to a model file.
305
306 This provides access to the CmdStan interface. To use this, set
307 ~org-babel-stan-cmdstan-directory~ and provide a ~:file~ argument
308 that does not end in ".stan".
309
310For more information and usage examples, visit
311http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-stan.html
312
313**** Support for Oracle databases via ~sqlplus~
314
315=ob-sql= library supports running SQL blocks against an Oracle
316database using ~sqlplus~. Use with properties like this (all
317mandatory):
318
319#+BEGIN_EXAMPLE
320:engine oracle
321:dbhost <host.com>
322:dbport <1521>
323:dbuser <username>
324:database <database>
325:dbpassword <secret>
326#+END_EXAMPLE
327
328**** Improved support to Microsoft SQL Server via ~sqlcmd~
329
330=ob-sql= library removes support to the ~msosql~ engine which uses the
331deprecated ~osql~ command line tool, and replaces it with ~mssql~
332engine which uses the ~sqlcmd~ command line tool. Use with properties
333like this:
334
335#+BEGIN_EXAMPLE
336:engine mssql
337:dbhost <host.com>
338:dbuser <username>
339:dbpassword <secret>
340:database <database>
341#+END_EXAMPLE
342
343If you want to use the *trusted connection* feature, omit *both* the
344=dbuser= and =dbpassword= properties and add =cmdline -E= to the properties.
345
346If your Emacs is running in a Cygwin environment, the =ob-sql= library
347can pass the converted path to the =sqlcmd= tool.
348
349**** Improved support of header arguments for postgresql
350
351The postgresql engine in a sql code block supports now ~:dbport~ nd
352~:dbpassword~ as header arguments.
353
354**** Support for additional plantuml output formats
355
356The support for output formats of [[http://plantuml.com/][plantuml]] has been extended to now
357include:
358
359All Diagrams:
360- png ::
361- svg ::
362- eps ::
363- pdf ::
364- vdx ::
365- txt :: ASCII art
366- utxt :: ASCII art using unicode characters
367
368Class Diagrams:
369- xmi ::
370- html ::
371
372State Diagrams:
373- scxml ::
374
375The output formats are determined by the file extension specified
376using the :file property, e.g.:
377
378#+begin_src plantuml :file diagram.png
379@startuml
380Alice -> Bob: Authentication Request
381Bob --> Alice: Authentication Response
382
383Alice -> Bob: Another authentication Request
384Alice <-- Bob: another authentication Response
385@enduml
386#+end_src
387
388Please note that *pdf* *does not work out of the box* and needs additional
389setup in addition to plantuml. See [[http://plantuml.com/pdf.html]] for
390details and setup information.
391
392*** Rewrite of radio lists
393
394Radio lists, i.e, Org plain lists in foreign buffers, have been
395rewritten to be on par with Radio tables. You can use a large set of
396parameters to control how a given list should be rendered. See manual
397for details.
398
399*** org-bbdb-anniversaries-future
400
401Used like ~org-bbdb-anniversaries~, it provides a few days warning for
402upcoming anniversaries (default: 7 days).
403
404*** Clear non-repeated SCHEDULED upon repeating a task
405
406If the task is repeated, and therefore done at least one, scheduling
407information is no longer relevant. It is therefore removed.
408
409See [[git:481719fbd5751aaa9c672b762cb43aea8ee986b0][commit message]] for more information.
410
411*** Support for ISO week trees
412
413ISO week trees are an alternative date tree format that orders entries
414by ISO week and not by month.
415
416For example:
417
418: * 2015
419: ** 2015-W35
420: ** 2015-W36
421: *** 2015-08-31 Monday
422
423They are supported in org-capture via ~file+weektree~ and
424~file+weektree+prompt~ target specifications.
425
426*** Accept ~:indent~ parameter when capturing column view
427
428When defining a "columnview" dynamic block, it is now possible to add
429an :indent parameter, much like the one in the clock table.
430
431On the other hand, stars no longer appear in an ITEM field.
432
433*** Columns view
434
435**** ~org-columns~ accepts a prefix argument
436
437When called with a prefix argument, ~org-columns~ apply to the whole
438buffer unconditionally.
439
440**** New variable : ~org-agenda-view-columns-initially~
441
442The variable used to be a ~defvar~, it is now a ~defcustom~.
443
444**** Allow custom summaries
445
446It is now possible to add new summary types, or override those
447provided by Org by customizing ~org-columns-summary-types~, which see.
448
449**** Allow multiple summaries for any property
450
451Columns can now summarize the same property using different summary
452types.
453
454*** Preview LaTeX snippets in buffers not visiting files
455*** New option ~org-attach-commit~
456
457When non-nil, commit attachments with git, assuming the document is in
458a git repository.
459
460*** Allow conditional case-fold searches in ~org-occur~
461
462When set to ~smart~, the new variable ~org-occur-case-fold-search~ allows
463to mimic =isearch.el=: if the regexp searched contains any upper case
464character (or character class), the search is case sensitive.
465Otherwise, it is case insensitive.
466
467*** More robust repeated =ox-latex= footnote handling
468
469Repeated footnotes are now numbered by referring to a label in the
470first footnote.
471
472*** The ~org-block~ face is inherited by ~src-blocks~
473
474This works also when =org-src-fontify-natively= is non-nil. It is also
475possible to specify per-languages faces. See =org-src-block-faces= and
476the manual for details.
477
478*** Links are now customizable
479
480Links can now have custom colors, tooltips, keymaps, display behavior,
481etc. Links are now centralized in ~org-link-parameters~.
482
483** New functions
484
485*** ~org-next-line-empty-p~
486
487It replaces the deprecated ~next~ argument to ~org-previous-line-empty-p~.
488
489*** ~org-show-children~
490
491It is a faster implementation of ~outline-show-children~.
492
493** Removed functions
494
495*** ~org-agenda-filter-by-tag-refine~ has been removed.
496
497Use ~org-agenda-filter-by-tag~ instead.
498
499*** ~org-agenda-todayp~ is deprecated.
500
501Use ~org-agenda-today-p~ instead.
502
503*** ~org-babel-get-header~ is removed.
504
505Use ~org-babel--get-vars~ or ~assq~ instead, as applicable.
506
507*** ~org-babel-trim~ is deprecated.
508
509Use ~org-trim~ instead.
510
511*** ~org-element-remove-indentation~ is deprecated.
512
513Use ~org-remove-indentation~ instead.
514
515*** ~org-image-file-name-regexp~ is deprecated
516
517Use ~image-file-name-regexp~ instead.
518The never-used-in-core ~extensions~ argument has been dropped.
519
520*** ~org-list-parse-list~ is deprecated
521
522Use ~org-list-to-lisp~ instead.
523
524*** ~org-on-heading-p~ is deprecated
525
526A comment to this effect was in the source code since 7.8.03, but
527now a byte-compiler warning will be generated as well.
528
529*** ~org-table-p~ is deprecated
530
531Use ~org-at-table-p~ instead.
532
533*** ~org-table-recognize-table.el~ is deprecated
534
535It was not called by any org code since 2010.
536
537*** Various reimplementations of cl-lib functions are deprecated
538
539The affected functions are:
540- ~org-count~
541- ~org-remove-if~
542- ~org-remove-if-not~
543- ~org-reduce~
544- ~org-every~
545- ~org-some~
546
547Additionally, ~org-sublist~ is deprecated in favor of ~cl-subseq~. Note
548the differences in indexing conventions: ~org-sublist~ is 1-based and
549end-inclusive; ~cl-subseq~ is 0-based and end-exclusive.
550
551** Removed options
552
553*** Remove all options related to ~ido~ or ~iswitchb~
554
555This includes ~org-completion-use-iswitchb~ and ~org-completion-use-ido~.
556Instead Org uses regular functions, e.g., ~completion-read~ so as to
557let those libraries operate.
558
559*** Remove ~org-list-empty-line-terminates-plain-lists~
560
561Two consecutive blank lines always terminate all levels of current
562plain list.
563
564*** ~fixltx2e~ is removed from ~org-latex-default-packages-alist~
565
566fixltx2e is obsolete, see LaTeX News 22.
567
568** Miscellaneous
569*** Add Icelandic smart quotes
570*** Allow multiple receiver locations in radio tables and lists
571*** Allow angular links within link descriptions
572
573It is now allowed to write, e.g.,
574~[[http:orgmode.org][<file:unicorn.png>]]~ as an equivalent to
575~[[http:orgmode.org][file:unicorn.png]]~. The advantage of the former
576is that spaces are allowed within the path.
577
578*** Beamer export back-ends uses ~org-latex-prefer-user-labels~
579*** ~:preparation-function~ called earlier during publishing
580
581Functions in this list are called before any file is associated to the
582current projet. Thus, they can be used to generate to be published
583Org files.
584
585*** Function ~org-remove-indentation~ changes.
586
587The new algorithm doesn't remove TAB characters not used for
588indentation.
589
590*** Secure placeholders in capture templates
591
592Placeholders in capture templates are no longer expanded recursively.
593However, ~%(...)~ constructs are expanded very late, so you can fill
594the contents of the S-exp with the replacement text of non-interactive
595placeholders. As before, interactive ones are still expanded as the
596very last step, so the previous statement doesn't apply to them.
597
598Note that only ~%(...)~ placeholders initially present in the
599template, or introduced using a file placeholder, i.e., ~%[...]~ are
600expanded. This prevents evaluating potentially malicious code when
601another placeholder, e.g., ~%i~ expands to a S-exp.
602
603*** Links stored by ~org-gnus-store-link~ in nnir groups
604
605Since gnus nnir groups are temporary, ~org-gnus-store-link~ now refers
606to the article's original group.
607
608*** ~org-babel-check-confirm-evaluate~ is now a function instead of a macro
609
610The calling convention has changed.
611
612*** HTML export table row customization changes
613
614Variable ~org-html-table-row-tags~ has been split into
615~org-html-table-row-open-tag~ and ~org-html-table-row-close-tag~.
616Both new variables can be either a string or a function which will be
617called with 6 parameters.
618
619*** =ITEM= special property returns headline without stars
620*** Rename ~org-insert-columns-dblock~ into ~org-columns-insert-dblock~
621
622The previous name is, for the time being, kept as an obsolete alias.
623
624*** ~org-trim~ can preserve leading indentation.
625
626When setting a new optional argument to a non-nil value, ~org-trim~
627preserves leading indentation while removing blank lines at the
628beginning of the string. The behavior is identical for white space at
629the end of the string.
630
631*** Function ~org-info-export~ changes.
632
633HTML links created from certain info links now point to =gnu.org= URL's rather
634than just to local files. For example info links such as =info:emacs#List
635Buffers= used to be converted to HTML links like this:
636
637: <a href="emacs.html#List-Buffers">emacs#List Buffers</a>
638
639where local file =emacs.html= is referenced.
640For most folks this file does not exist.
641Thus the new behavior is to generate this HTML link instead:
642
643: <a href="http://www.gnu.org/software/emacs/manual/html_mono/emacs.html#List-Buffers">emacs#List Buffers</a>
644
645All emacs related info links are similarly translated plus few other
646=gnu.org= manuals.
647
648*** Repeaters with a ~++~ interval and a time can be shifted to later today
649
650Previously, if a recurring task had a timestamp of
651~<2016-01-01 Fri 20:00 ++1d>~ and was completed on =2016-01-02= at
652=08:00=, the task would skip =2016-01-02= and would be rescheduled for
653=2016-01-03=. Timestamps with ~++~ cookies and a specific time will
654now shift to the first possible future occurrence, even if the
655occurrence is later the same day the task is completed. (Timestamps
656already in the future are still shifted one time further into the
657future.)
658
659*** ~org-mobile-action-alist~ is now a defconst
660
661It used to be a defcustom, with a warning that it shouldn't be
662modified anyway.
663
664*** ~file+emacs~ and ~file+sys~ link types are deprecated
665
666They are still supported in Org 9.0 but will eventually be removed in
667a later release. Use ~file~ link type along with universal arguments
668to force opening it in either Emacs or with system application.
669
670*** New defcustom ~org-babel-J-command~ stores the j command
671*** New defalias ~org-babel-execute:j~
672
673Allows J source blocks be indicated by letter j. Previously the
674indication letter was solely J.
675
676*** ~org-open-line~ ignores tables at the very beginning of the buffer
677
678When ~org-special-ctrl-o~ is non-nil, it is impractical to create
679a blank line above a table at the beginning of the document. Now, as
680a special case, ~org-open-line~ behaves normally in this situation.
681
682*** ~org-babel-hash-show-time~ is now customizable
683
684The experimental variable used to be more or less confidential, as
685a ~defvar~.
686
687*** New ~:format~ property to parsed links
688
689It defines the format of the original link. Possible values are:
690~plain~, ~bracket~ and ~angle~.
691
692* Version 8.3
693
694** Incompatible changes
695
696*** Properties drawers syntax changes
697
698Properties drawers are now required to be located right after a
699headline and its planning line, when applicable.
700
701It will break some documents as TODO states changes were sometimes
702logged before the property drawer.
703
704The following function will repair them:
705
706#+BEGIN_SRC emacs-lisp
707(defun org-repair-property-drawers ()
708 "Fix properties drawers in current buffer.
709Ignore non Org buffers."
710 (when (eq major-mode 'org-mode)
711 (org-with-wide-buffer
712 (goto-char (point-min))
713 (let ((case-fold-search t)
714 (inline-re (and (featurep 'org-inlinetask)
715 (concat (org-inlinetask-outline-regexp)
716 "END[ \t]*$"))))
717 (org-map-entries
718 (lambda ()
719 (unless (and inline-re (org-looking-at-p inline-re))
720 (save-excursion
721 (let ((end (save-excursion (outline-next-heading) (point))))
722 (forward-line)
723 (when (org-looking-at-p org-planning-line-re) (forward-line))
724 (when (and (< (point) end)
725 (not (org-looking-at-p org-property-drawer-re))
726 (save-excursion
727 (and (re-search-forward org-property-drawer-re end t)
728 (eq (org-element-type
729 (save-match-data (org-element-at-point)))
730 'drawer))))
731 (insert (delete-and-extract-region
732 (match-beginning 0)
733 (min (1+ (match-end 0)) end)))
734 (unless (bolp) (insert "\n"))))))))))))
735#+END_SRC
736
737*** Using "COMMENT" is now equivalent to commenting with "#"
738
739If you used "COMMENT" in headlines to prevent a subtree from being
740exported, you can still do it but all information within the subtree
741is now commented out, i.e. no #+OPTIONS line will be parsed or taken
742into account when exporting.
743
744If you want to exclude a headline from export while using its contents
745for setting options, use =:noexport:= (see =org-export-exclude-tags=.)
746
747*** =#+CATEGORY= keywords no longer apply partially to document
748
749It was possible to use several such keywords and have them apply to
750the text below until the next one, but strongly deprecated since Org
7515.14 (2008).
752
753=#+CATEGORY= keywords are now global to the document. You can use node
754properties to set category for a subtree, e.g.,
755
756#+BEGIN_SRC org
757,* Headline
758 :PROPERTIES:
759 :CATEGORY: some category
760 :END:
761#+END_SRC
762
763*** New variable to control visibility when revealing a location
764
765~org-show-following-heading~, ~org-show-siblings~, ~org-show-entry-below~
766and ~org-show-hierarchy-above~ no longer exist. Instead, visibility is
767controlled through a single variable: ~org-show-context-detail~, which
768see.
769
770*** Replace disputed keys again when reading a date
771
772~org-replace-disputed-keys~ has been ignored when reading date since
773version 8.1, but the former behavior is restored again.
774
775Keybinding for reading date can be customized with a new variable
776~org-read-date-minibuffer-local-map~.
777
778*** No default title is provided when =TITLE= keyword is missing
779
780Skipping =TITLE= keyword no longer provides the current file name, or
781buffer name, as the title. Instead, simply ignore the title.
782
783*** Default bindings of =C-c C-n= and =C-c C-p= changed
784
785The key sequences =C-c C-n= and =C-c C-p= are now bound to
786~org-next-visible-heading~ and ~org-previous-visible-heading~
787respectively, rather than the =outline-mode= versions of these
788functions. The Org version of these functions skips over inline tasks
789(and even-level headlines when ~org-odd-levels-only~ is set).
790
791*** ~org-element-context~ no longer return objects in keywords
792
793~org-element-context~ used to return objects on some keywords, i.e.,
794=TITLE=, =DATE= and =AUTHOR=. It now returns only the keyword.
795
796*** ~org-timer-default-timer~ type changed from number to string
797
798If you have, in your configuration, something like =(setq
799org-timer-default-timer 10)= replace it with =(setq
800org-timer-default-timer "10")=.
801
802*** Functions signature changes
803
804The following functions require an additional argument. See their
805docstring for more information.
806
807- ~org-export-collect-footnote-definitions~
808- ~org-html-format-headline-function~
809- ~org-html-format-inlinetask-function~
810- ~org-latex-format-headline-function~
811- ~org-latex-format-inlinetask-function~
812- ~org-link-search~
813
814** New features
815
816*** Default lexical evaluation of emacs-lisp src blocks
817
818Emacs-lisp src blocks in babel are now evaluated using lexical
819scoping. There is a new header to control this behavior.
820
821The default results in an eval with lexical scoping.
822:lexical yes
823
824This turns lexical scoping off in the eval (the former behavior).
825:lexical no
826
827This uses the lexical environment with x=42 in the eval.
828:lexical '((x . 42))
829
830*** Behavior of ~org-return~ changed
831
832If point is before or after the headline title, insert a new line
833without changing the headline.
834
835*** Hierarchies of tags
836
837The functionality of nesting tags in hierarchies is added to org-mode.
838This is the generalization of what was previously called "Tag groups"
839in the manual. That term is now changed to "Tag hierarchy".
840
841The following in-buffer definition:
842
843#+BEGIN_SRC org
844 ,#+TAGS: [ Group : SubOne SubTwo ]
845 ,#+TAGS: [ SubOne : SubOne1 SubOne2 ]
846 ,#+TAGS: [ SubTwo : SubTwo1 SubTwo2 ]
847#+END_SRC
848
849Should be seen as the following tree of tags:
850
851- Group
852 - SubOne
853 - SubOne1
854 - SubOne2
855 - SubTwo
856 - SubTwo1
857 - SubTwo2
858
859Searching for "Group" should return all tags defined above. Filtering
860on SubOne filters also it's sub-tags. Etc.
861
862There is no limit on the depth for the tag hierarchy.
863
864*** Additional syntax for non-unique grouptags
865
866Additional syntax is defined for grouptags if the tags in the group
867don't have to be distinct on a heading.
868
869Grouptags had to previously be defined with { }. This syntax is
870already used for exclusive tags and Grouptags need their own,
871non-exclusive syntax. This behaviour is achieved with [ ]. Note: { }
872can still be used also for Grouptags but then only one of the given
873tags can be used on the headline at the same time. Example:
874
875[ group : sub1 sub2 ]
876
877#+BEGIN_SRC org
878,* Test :sub1:sub2:
879#+END_SRC
880
881This is a more general case than the already existing syntax for
882grouptags; { }.
883
884*** Define regular expression patterns as tags
885
886Tags can be defined as grouptags with regular expressions as
887"sub-tags".
888
889The regular expressions in the group must be marked up within { }.
890Example use:
891
892: #+TAGS: [ Project : {P@.+} ]
893
894Searching for the tag Project will now list all tags also including
895regular expression matches for P@.+. This is good for example for
896projects tagged with a common identifier, i.e. P@2014_OrgTags.
897
898*** Filtering in the agenda on grouptags (Tag hierarchies)
899
900Filtering in the agenda on grouptags filters all of the related tags.
901Except if a filter is applied with a (double) prefix-argument.
902
903Filtering in the agenda on subcategories does not filter the "above"
904levels anymore.
905
906If a grouptag contains a regular expression the regular expression
907is also used as a filter.
908
909*** Minor refactoring of ~org-agenda-filter-by-tag~
910
911Now uses the argument ARG and optional argument exclude instead of
912strip and narrow. ARG because the argument has multiple purposes and
913makes more sense than strip now. The term "narrowing" is changed to
914exclude.
915
916The main purpose is for the function to make more logical sense when
917filtering on tags now when tags can be structured in hierarchies.
918
919*** Babel: support for sed scripts
920
921Thanks to Bjarte Johansen for this feature.
922
923*** Babel: support for Processing language
924
925New ob-processing.el library.
926
927This library implements necessary functions for implementing editing
928of Processing code blocks, viewing the resulting sketches in an
929external viewer, and HTML export of the sketches.
930
931Check the documentation for more details.
932
933Thanks to Jarmo Hurri for this feature.
934
935*** New behaviour for ~org-toggle-latex-fragment~
936
937The new behaviour is the following:
938
939- With a double prefix argument or with a single prefix argument when
940 point is before the first headline, toggle overlays in the whole
941 buffer;
942
943- With a single prefix argument, toggle overlays in the current
944 subtree;
945
946- On latex code, toggle overlay at point;
947
948- Otherwise, toggle overlays in the current section.
949
950*** Additional markup with =#+INCLUDE= keyword
951
952The content of the included file can now be optionally marked up, for
953instance as HTML. See the documentation for details.
954
955*** File links with =#+INCLUDE= keyword
956
957Objects can be extracted via =#+INCLUDE= using file links. It is
958possible to include only the contents of the object. See manual for
959more information.
960
961*** Drawers do not need anymore to be referenced in =#+DRAWERS=
962
963One can use a drawer without listing it in the =#+DRAWERS= keyword,
964which is now obsolete. As a consequence, this change also deprecates
965~org-drawers~ variable.
966
967*** ~org-edit-special~ can edit export blocks
968
969Using C-c ' on an export block now opens a sub-editing buffer. Major
970mode in that buffer is determined by export backend name (e.g.,
971"latex" \to "latex-mode"). You can define exceptions to this rule by
972configuring ~org-src-lang-modes~, which see.
973
974*** Additional =:hline= processing to ob-shell
975
976If the argument =:hlines yes= is present in a babel call, an optional
977argument =:hlines-string= can be used to define a string to use as a
978representation for the lisp symbol ='hline= in the shell program. The
979default is =hline=.
980
981*** Markdown export supports switches in source blocks
982
983For example, it is now possible to number lines using the =-n= switch in
984a source block.
985
986*** New option in ASCII export
987
988Plain lists can have an extra margin by setting ~org-ascii-list-margin~
989variable to an appopriate integer.
990
991*** New blocks in ASCII export
992
993ASCII export now supports =#+BEGIN_JUSTIFYRIGHT= and =#+BEGIN_JUSTIFYLEFT=
994blocks. See documentation for details.
995
996*** More back-end specific publishing options
997
998The number of publishing options specific to each back-end has been
999increased. See manual for details.
1000
1001*** Export inline source blocks
1002
1003Inline source code was used to be removed upon exporting. They are
1004now handled as standard code blocks, i.e., the source code can appear
1005in the output, depending on the parameters.
1006
1007*** Extend ~org-export-first-sibling-p~ and ~org-export-last-sibling-p~
1008
1009These functions now support any element or object, not only headlines.
1010
1011*** New function: ~org-export-table-row-in-header-p~
1012
1013*** New function: ~org-export-get-reference~
1014
1015*** New function: ~org-element-lineage~
1016
1017This function deprecates ~org-export-get-genealogy~. It also provides
1018more features. See docstring for details.
1019
1020*** New function: ~org-element-copy~
1021
1022*** New filter: ~org-export-filter-body-functions~
1023
1024Functions in this filter are applied on the body of the exported
1025document, befor wrapping it within the template.
1026
1027*** New :environment parameter when exporting example blocks to LaTeX
1028
1029: #+ATTR_LATEX: :environment myverbatim
1030: #+BEGIN_EXAMPLE
1031: This sentence is false.
1032: #+END_EXAMPLE
1033
1034will be exported using =@samp(myverbatim)= instead of =@samp(verbatim)=.
1035
1036*** Various improvements on radio tables
1037
1038Radio tables feature now relies on Org's export framework ("ox.el").
1039~:no-escape~ parameter no longer exists, but additional global
1040parameters are now supported: ~:raw~, ~:backend~. Moreover, there are new
1041parameters specific to some pre-defined translators, e.g.,
1042~:environment~ and ~:booktabs~ for ~orgtbl-to-latex~. See translators
1043docstrings (including ~orgtbl-to-generic~) for details.
1044
1045*** Non-floating minted listings in Latex export
1046
1047It is not possible to specify =#+attr_latex: :float nil= in conjunction
1048with source blocks exported by the minted package.
1049
1050*** Field formulas can now create columns as needed
1051
1052Previously, evaluating formulas that referenced out-of-bounds columns
1053would throw an error. A new variable ~org-table-formula-create-columns~
1054was added to adjust this behavior. It is now possible to silently add
1055new columns, to do so with a warning or to explicitly ask the user
1056each time.
1057
1058*** ASCII plot
1059
1060Ability to plot values in a column through ASCII-art bars. See manual
1061for details.
1062
1063*** New hook: ~org-archive-hook~
1064
1065This hook is called after successfully archiving a subtree, with point
1066on the original subtree, not yet deleted.
1067
1068*** New option: ~org-attach-archive-delete~
1069
1070When non-nil, attachments from archived subtrees are removed.
1071
1072*** New option: ~org-latex-caption-above~
1073
1074This variable generalizes ~org-latex-table-caption-above~, which is now
1075deprecated. In addition to tables, it applies to source blocks,
1076special blocks and images. See docstring for more information.
1077
1078*** New option: ~org-latex-prefer-user-labels~
1079
1080See the docstring for more information.
1081
1082*** Export unnumbered headlines
1083
1084Headlines, for which the property ~UNNUMBERED~ is non-nil, are now
1085exported without section numbers irrespective of their levels. The
1086property is inherited by children.
1087
1088*** Tables can be sorted with an arbitrary function
1089
1090It is now possible to specify a function, both programatically,
1091through a new optional argument, and interactively with ~f~ or ~F~ keys,
1092to sort a table.
1093
1094*** Table of contents can be local to a section
1095
1096The ~TOC~ keywords now accepts an optional ~local~ parameter. See manual
1097for details.
1098
1099*** Countdown timers can now be paused
1100
1101~org-timer-pause-time~ now pauses and restarts both relative and
1102countdown timers.
1103
1104*** New option ~only-window~ for ~org-agenda-window-setup~
1105
1106When ~org-agenda-window-setup~ is set to ~only-window~, the agenda is
1107displayed as the sole window of the current frame.
1108
1109*** ~{{{date}}}~ macro supports optional formatting argument
1110
1111It is now possible to supply and optional formatting argument to
1112~{{{date}}}~. See manual for details.
1113
1114*** ~{{{property}}}~ macro supports optional search argument
1115
1116It is now possible to supply an optional search option to
1117~{{{property}}}~ in order to retrieve remote properties optional. See
1118manual for details.
1119
1120*** New option ~org-export-with-title~
1121
1122It is possible to suppress the title insertion with ~#+OPTIONS:
1123title:nil~ or globally using the variable ~org-export-with-title~.
1124
1125*** New entities family: "\_ "
1126
1127"\_ " are used to insert up to 20 contiguous spaces in various
1128back-ends. In particular, this family can be used to introduce
1129leading spaces within table cells.
1130
1131*** New MathJax configuration options
1132
1133Org uses the MathJax CDN by default. See the manual and the docstring
1134of ~org-html-mathjax-options~ for details.
1135
1136*** New behaviour in `org-export-options-alist'
1137
1138When defining a back-end, it is now possible to specify to give
1139`parse' behaviour on a keyword. It is equivalent to call
1140`org-element-parse-secondary-string' on the value.
1141
1142However, parsed =KEYWORD= is automatically associated to an
1143=:EXPORT_KEYWORD:= property, which can be used to override the keyword
1144value during a subtree export. Moreover, macros are expanded in such
1145keywords and properties.
1146
1147*** Viewport support in html export
1148
1149Viewport for mobile-optimized website is now automatically inserted
1150when exporting to html. See ~org-html-viewport~ for details.
1151
1152*** New ~#+SUBTITLE~ export keyword
1153
1154Org can typeset a subtitle in some export backends. See the manual
1155for details.
1156
1157*** Remotely edit a footnote definition
1158
1159Calling ~org-edit-footnote-reference~ (C-c ') on a footnote reference
1160allows to edit its definition, as long as it is not anonymous, in a
1161dedicated buffer. It works even if buffer is currently narrowed.
1162
1163*** New function ~org-delete-indentation~ bound to ~M-^~
1164
1165Work as ~delete-indentation~ unless at heading, in which case text is
1166added to headline text.
1167
1168*** Support for images in Texinfo export
1169
1170~Texinfo~ back-end now handles images. See the manual for details.
1171
1172*** Support for captions in Texinfo export
1173
1174Tables and source blocks can now have captions. Additionally, lists
1175of tables and lists of listings can be inserted in the document with
1176=#+TOC= keyword.
1177
1178*** Countdown timer support hh:mm:ss format
1179
1180In addition to setting countdown timers in minutes, they can also be
1181set using the hh:mm:ss format.
1182
1183*** Extend ~org-clone-subtree-with-time-shift~
1184
1185~org-clone-subtree-with-time-shift~ now accepts 0 as an argument for the
1186number of clones, which removes the repeater from the original subtree
1187and creates one shifted, repeating clone.
1188
1189*** New time block for clock tables: ~untilnow~
1190
1191It encompasses all past closed clocks.
1192
1193*** Support for the ~polyglossia~ LaTeX package
1194
1195See the docstring of ~org-latex-classes~ and
1196~org-latex-guess-polyglossia-language~ for details.
1197
1198*** None-floating tables, graphics and blocks can have captions
1199
1200*** `org-insert-heading' can be forced to insert top-level headline
1201
1202** Removed functions
1203
1204*** Removed function ~org-translate-time~
1205
1206Use ~org-timestamp-translate~ instead.
1207
1208*** Removed function ~org-beamer-insert-options-template~
1209
1210This function inserted a Beamer specific template at point or in
1211current subtree. Use ~org-export-insert-default-template~ instead, as
1212it provides more features and covers all export back-ends. It is also
1213accessible from the export dispatcher.
1214
1215*** Removed function ~org-timer-cancel-timer~
1216
1217~org-timer-stop~ now stops both relative and countdown timers.
1218
1219*** Removed function ~org-export-solidify-link-text~
1220
1221This function, being non-bijective, introduced bug in internal
1222references. Use ~org-export-get-reference~ instead.
1223
1224*** Removed function ~org-end-of-meta-data-and-drawers~
1225
1226The function is superseded by ~org-end-of-meta-data~, called with an
1227optional argument.
1228
1229*** Removed functions ~org-table-colgroup-line-p~, ~org-table-cookie-line-p~
1230
1231These functions were left-over from pre 8.0 era. They are not correct
1232anymore. Since they are not needed, they have no replacement.
1233
1234** Removed options
1235
1236*** ~org-list-empty-line-terminates-plain-lists~ is deprecated
1237
1238It will be kept in code base until next release, for backward
1239compatibility.
1240
1241If you need to separate consecutive lists with blank lines, always use
1242two of them, as if this option was nil (default value).
1243
1244*** ~org-export-with-creator~ is a boolean
1245
1246Special ~comment~ value is no longer allowed. It is possible to use a
1247body filter to add comments about the creator at the end of the
1248document instead.
1249
1250*** Removed option =org-html-use-unicode-chars=
1251
1252Setting this to non-nil was problematic as it converted characters
1253everywhere in the buffer, possibly corrupting URLs.
1254
1255*** Removed option =org-babel-sh-command=
1256
1257This undocumented option defaulted to the value of =shell-file-name= at
1258the time of loading =ob-shell=. The new behaviour is to use the value
1259of =shell-file-name= directly when the shell langage is =shell=. To chose
1260a different shell, either customize =shell-file-name= or bind this
1261variable locally.
1262
1263*** Removed option =org-babel-sh-var-quote-fmt=
1264
1265This undocumented option was supposed to provide different quoting
1266styles when changing the shell type. Changing the shell type can now
1267be done directly from the source block and the quoting style has to be
1268compatible across all shells, so a customization doesn't make sense
1269anymore. The chosen hard coded quoting style conforms to POSIX.
1270
1271*** Removed option ~org-insert-labeled-timestamps-at-point~
1272
1273Setting this option to anything else that the default value (nil)
1274would create invalid planning info. This dangerous option is now
1275removed.
1276
1277*** Removed option ~org-koma-letter-use-title~
1278
1279Use org-export-with-title instead. See also below.
1280
1281*** Removed option ~org-entities-ascii-explanatory~
1282
1283This variable has no effect since Org 8.0.
1284
1285*** Removed option ~org-table-error-on-row-ref-crossing-hline~
1286
1287This variable has no effect since August 2009.
1288
1289*** Removed MathML-related options from ~org-html-mathjax-options~
1290
1291MathJax automatically chooses the best display technology based on the
1292end-users browser. You may force initial usage of MathML via
1293~org-html-mathjax-template~ or by setting the ~path~ property of
1294~org-html-mathjax-options~.
1295
1296*** Removed comment-related filters
1297
1298~org-export-filter-comment-functions~ and
1299~org-export-filter-comment-block-functions~ variables do not exist
1300anymore.
1301
1302** Miscellaneous
1303
1304*** Strip all meta data from ITEM special property
1305
1306ITEM special property does not contain TODO, priority or tags anymore.
1307
1308*** File names in links accept are now compatible with URI syntax
1309
1310Absolute file names can now start with =///= in addition to =/=. E.g.,
1311=[[file:///home/me/unicorn.jpg]]=.
1312
1313*** Footnotes in included files are now local to the file
1314
1315As a consequence, it is possible to include multiple Org files with
1316footnotes in a master document without being concerned about footnote
1317labels colliding.
1318
1319*** Mailto links now use regular URI syntax
1320
1321This change deprecates old Org syntax for mailto links:
1322=mailto:user@domain::Subject=.
1323
1324*** =QUOTE= keywords do not exist anymore
1325
1326=QUOTE= keywords have been deprecated since Org 8.2.
1327
1328*** Select tests to perform with the build system
1329
1330The build system has been enhanced to allow test selection with a
1331regular expression by defining =BTEST_RE= during the test invocation.
1332This is especially useful during bisection to find just when a
1333particular test failure was introduced.
1334
1335*** Exact heading search for external links ignore spaces and cookies
1336
1337Exact heading search for links now ignore spaces and cookies. This is
1338the case for links of the form ~file:projects.org::*task title~, as well
1339as links of the form ~file:projects.org::some words~ when
1340~org-link-search-must-match-exact-headline~ is not nil.
1341
1342*** ~org-latex-hyperref-template~, ~org-latex-title-command~ formatting
1343
1344New formatting keys are supported. See the respective docstrings.
1345Note, ~org-latex-hyperref-template~ has a new default value.
1346
1347*** ~float, wasysym, marvosym~ are removed from ~org-latex-default-packages-alist~
1348
1349If you require any of these package add them to your preamble via
1350~org-latex-packages-alist~. Org also uses default LaTeX ~\tolerance~ now.
1351
1352*** When exporting, throw an error on unresolved id/fuzzy links and code refs
1353
1354This helps spotting wrong links.
1355
1356* Version 8.2
1357
1358** Incompatible changes
1359*** =ob-sh.el= renamed to =ob-shell=
1360This may require two changes in user config.
1361
13621. In =org-babel-do-load-languages=, change =(sh . t)= to =(shell . t)=.
13632. Edit =local.mk= files to change the value of =BTEST_OB_LANGUAGES=
1364 to remove "sh" and include "shell".
1365
15*** Combine org-mac-message.el and org-mac-link-grabber into org-mac-link.el 1366*** Combine org-mac-message.el and org-mac-link-grabber into org-mac-link.el
16 1367
17Please remove calls to =(require 'org-mac-message)= and =(require 1368Please remove calls to =(require 'org-mac-message)= and =(require
@@ -171,6 +1522,18 @@ then inline code snippets will be wrapped into the formatting string.
171- =org-screenshot.el= by Max Mikhanosha :: an utility to handle 1522- =org-screenshot.el= by Max Mikhanosha :: an utility to handle
172 screenshots easily from Org, using the external tool [[http://freecode.com/projects/scrot][scrot]]. 1523 screenshots easily from Org, using the external tool [[http://freecode.com/projects/scrot][scrot]].
173 1524
1525** Miscellaneous
1526
1527*** "QUOTE" keywords in headlines are deprecated
1528
1529"QUOTE" keywords are an undocumented feature in Org. When a headline
1530starts with the keyword "QUOTE", its contents are parsed as
1531a ~quote-section~ and treated as an example block. You can achieve
1532the same with example blocks.
1533
1534This feature is deprecated and will be removed in the next Org
1535release.
1536
174* Version 8.0.1 1537* Version 8.0.1
175 1538
176** Installation 1539** Installation
@@ -835,14 +2198,14 @@ See [[http://orgmode.org/org.html#Lookup-functions][the manual]] for details.
835 2198
836These new startup keywords are now available: 2199These new startup keywords are now available:
837 2200
838| Startup keyword | Option | 2201| Startup keyword | Option |
839|----------------------------------+---------------------------------------------| 2202|--------------------------------+-------------------------------------------|
840| =#+STARTUP: logdrawer= | =(setq org-log-into-drawer t)= | 2203| =#+STARTUP: logdrawer= | =(setq org-log-into-drawer t)= |
841| =#+STARTUP: nologdrawer= | =(setq org-log-into-drawer nil)= | 2204| =#+STARTUP: nologdrawer= | =(setq org-log-into-drawer nil)= |
842|----------------------------------+---------------------------------------------| 2205|--------------------------------+-------------------------------------------|
843| =#+STARTUP: logstatesreversed= | =(setq org-log-states-order-reversed t)= | 2206| =#+STARTUP: logstatesreversed= | =(setq org-log-states-order-reversed t)= |
844| =#+STARTUP: nologstatesreversed= | =(setq org-log-states-order-reversed nil)= | 2207| =#+STARTUP: nologstatesreversed= | =(setq org-log-states-order-reversed nil)= |
845|----------------------------------+---------------------------------------------| 2208|--------------------------------+-------------------------------------------|
846| =#+STARTUP: latexpreview= | =(setq org-startup-with-latex-preview t)= | 2209| =#+STARTUP: latexpreview= | =(setq org-startup-with-latex-preview t)= |
847| =#+STARTUP: nolatexpreview= | =(setq org-startup-with-latex-preview nil)= | 2210| =#+STARTUP: nolatexpreview= | =(setq org-startup-with-latex-preview nil)= |
848 2211
@@ -952,7 +2315,7 @@ instead of requiring each Babel library one by one.
952- New option [[doc:org-gnus-no-server][org-gnus-no-server]] to start Gnus with =gnus-no-server= 2315- New option [[doc:org-gnus-no-server][org-gnus-no-server]] to start Gnus with =gnus-no-server=
953- Org is now distributed with =htmlize.el= version 1.43 2316- Org is now distributed with =htmlize.el= version 1.43
954- ~org-drill.el~ has been updated to version 2.3.7 2317- ~org-drill.el~ has been updated to version 2.3.7
955- ~org-mac-iCal.el~ now supports OS X versions up to 10.8 2318- ~org-mac-iCal.el~ now supports MacOSX version up to 10.8
956- Various improvements to ~org-contacts.el~ and =orgpan.el= 2319- Various improvements to ~org-contacts.el~ and =orgpan.el=
957 2320
958** Outside Org 2321** Outside Org
@@ -1021,6 +2384,13 @@ consistent with using the `:' key in agenda view.
1021You can now use `=' for [[doc::org-columns][org-columns]]. 2384You can now use `=' for [[doc::org-columns][org-columns]].
1022 2385
1023** =org-float= is now obsolete, use =diary-float= instead 2386** =org-float= is now obsolete, use =diary-float= instead
2387** No GPL manual anymore
2388
2389There used to be a GPL version of the Org manual, but this is not the
2390case anymore, the Free Software Foundation does not permit this.
2391
2392The GNU FDL license is now included in the manual directly.
2393
1024** Enhanced compatibility with Emacs 22 and XEmacs 2394** Enhanced compatibility with Emacs 22 and XEmacs
1025 2395
1026Thanks to Achim for his work on enhancing Org's compatibility with 2396Thanks to Achim for his work on enhancing Org's compatibility with
@@ -1046,8 +2416,8 @@ See http://orgmode.org/elpa/
1046 2416
1047** Overview of the new keybindings 2417** Overview of the new keybindings
1048 2418
1049 | Keybinding | Speedy | Command | 2419 | Keybinding | Speedy | Command |
1050 |-----------------+--------+-----------------------------| 2420 |---------------+--------+-----------------------------|
1051 | =C-c C-x C-z= | | [[doc::org-clock-resolve][org-clock-resolve]] | 2421 | =C-c C-x C-z= | | [[doc::org-clock-resolve][org-clock-resolve]] |
1052 | =C-c C-x C-q= | | [[doc::org-clock-cancel][org-clock-cancel]] | 2422 | =C-c C-x C-q= | | [[doc::org-clock-cancel][org-clock-cancel]] |
1053 | =C-c C-x C-x= | | [[doc::org-clock-in-last][org-clock-in-last]] | 2423 | =C-c C-x C-x= | | [[doc::org-clock-in-last][org-clock-in-last]] |
@@ -1055,12 +2425,12 @@ See http://orgmode.org/elpa/
1055 | =*= | | [[doc::org-agenda-bulk-mark-all][org-agenda-bulk-mark-all]] | 2425 | =*= | | [[doc::org-agenda-bulk-mark-all][org-agenda-bulk-mark-all]] |
1056 | =C-c C-M-l= | | [[doc::org-insert-all-links][org-insert-all-links]] | 2426 | =C-c C-M-l= | | [[doc::org-insert-all-links][org-insert-all-links]] |
1057 | =C-c C-x C-M-v= | | [[doc::org-redisplay-inline-images][org-redisplay-inline-images]] | 2427 | =C-c C-x C-M-v= | | [[doc::org-redisplay-inline-images][org-redisplay-inline-images]] |
1058 | =C-c C-x E= | =E= | [[doc::org-inc-effort][org-inc-effort]] | 2428 | =C-c C-x E= | =E= | [[doc::org-inc-effort][org-inc-effort]] |
1059 | | =#= | [[doc::org-toggle-comment][org-toggle-comment]] | 2429 | | =#= | [[doc::org-toggle-comment][org-toggle-comment]] |
1060 | | =:= | [[doc::org-columns][org-columns]] | 2430 | | =:= | [[doc::org-columns][org-columns]] |
1061 | | =W= | Set =APPT_WARNTIME= | 2431 | | =W= | Set =APPT_WARNTIME= |
1062 | =k= | | [[doc::org-agenda-capture][org-agenda-capture]] | 2432 | =k= | | [[doc::org-agenda-capture][org-agenda-capture]] |
1063 | C-c , | , | [[doc::org-priority][org-priority]] | 2433 | C-c , | , | [[doc::org-priority][org-priority]] |
1064 2434
1065** New package and Babel language 2435** New package and Babel language
1066 2436
@@ -1225,7 +2595,7 @@ See http://orgmode.org/elpa/
1225 2595
1226**** New =todo-unblocked= and =nottodo-unblocked= skip conditions 2596**** New =todo-unblocked= and =nottodo-unblocked= skip conditions
1227 2597
1228 See the [[http://orgmode.org/w/?p%3Dorg-mode.git%3Ba%3Dcommit%3Bh%3Df426da][git commit]] for more explanations. 2598 See the [[http://orgmode.org/cgit.cgi/org-mode.git/commit/?id=f426da][git commit]] for more explanations.
1229 2599
1230**** Allow category filtering in the agenda 2600**** Allow category filtering in the agenda
1231 2601
@@ -1542,7 +2912,7 @@ See http://orgmode.org/elpa/
1542 Thanks to Carsten for implementing this. 2912 Thanks to Carsten for implementing this.
1543 2913
1544**** ODT: Add support for ODT export in org-bbdb.el 2914**** ODT: Add support for ODT export in org-bbdb.el
1545**** ODT: Add support for indented tables (see [[http://orgmode.org/w/?p%3Dorg-mode.git%3Ba%3Dcommit%3Bh%3De9fd33][this commit]] for details) 2915**** ODT: Add support for indented tables (see [[http://orgmode.org/cgit.cgi/org-mode.git/commit/?id=e9fd33][this commit]] for details)
1546**** ODT: Improve the conversion from ODT to other formats 2916**** ODT: Improve the conversion from ODT to other formats
1547**** ASCII: Swap the level-1/level-2 characters to underline the headlines 2917**** ASCII: Swap the level-1/level-2 characters to underline the headlines
1548**** Support for Chinese, simplified Chinese, Russian, Ukrainian and Japanese 2918**** Support for Chinese, simplified Chinese, Russian, Ukrainian and Japanese
diff --git a/etc/org/OrgOdtStyles.xml b/etc/org/OrgOdtStyles.xml
index f41d9840cbe..1a8edee99b4 100644
--- a/etc/org/OrgOdtStyles.xml
+++ b/etc/org/OrgOdtStyles.xml
@@ -110,33 +110,53 @@
110 <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="1" style:class="text"> 110 <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="1" style:class="text">
111 <style:text-properties fo:font-size="115%" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/> 111 <style:text-properties fo:font-size="115%" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/>
112 </style:style> 112 </style:style>
113 <style:style style:name="Heading_20_1_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_1" style:list-style-name="">
114 </style:style>
113 <style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="2" style:class="text"> 115 <style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="2" style:class="text">
114 <style:text-properties fo:font-size="14pt" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="14pt" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-style-complex="italic" style:font-weight-complex="bold"/> 116 <style:text-properties fo:font-size="14pt" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="14pt" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-style-complex="italic" style:font-weight-complex="bold"/>
115 </style:style> 117 </style:style>
118 <style:style style:name="Heading_20_2_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_2" style:list-style-name="">
119 </style:style>
116 <style:style style:name="Heading_20_3" style:display-name="Heading 3" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="3" style:class="text"> 120 <style:style style:name="Heading_20_3" style:display-name="Heading 3" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="3" style:class="text">
117 <style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/> 121 <style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/>
118 </style:style> 122 </style:style>
123 <style:style style:name="Heading_20_3_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_3" style:list-style-name="">
124 </style:style>
119 <style:style style:name="Heading_20_4" style:display-name="Heading 4" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="4" style:class="text"> 125 <style:style style:name="Heading_20_4" style:display-name="Heading 4" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="4" style:class="text">
120 <style:text-properties fo:font-size="85%" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="85%" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="85%" style:font-style-complex="italic" style:font-weight-complex="bold"/> 126 <style:text-properties fo:font-size="85%" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="85%" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="85%" style:font-style-complex="italic" style:font-weight-complex="bold"/>
121 </style:style> 127 </style:style>
128 <style:style style:name="Heading_20_4_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_4" style:list-style-name="">
129 </style:style>
122 <style:style style:name="Heading_20_5" style:display-name="Heading 5" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="5" style:class="text"> 130 <style:style style:name="Heading_20_5" style:display-name="Heading 5" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="5" style:class="text">
123 <style:text-properties fo:font-size="85%" fo:font-weight="bold" style:font-size-asian="85%" style:font-weight-asian="bold" style:font-size-complex="85%" style:font-weight-complex="bold"/> 131 <style:text-properties fo:font-size="85%" fo:font-weight="bold" style:font-size-asian="85%" style:font-weight-asian="bold" style:font-size-complex="85%" style:font-weight-complex="bold"/>
124 </style:style> 132 </style:style>
133 <style:style style:name="Heading_20_5_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_5" style:list-style-name="">
134 </style:style>
125 <style:style style:name="Heading_20_6" style:display-name="Heading 6" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="6" style:class="text"> 135 <style:style style:name="Heading_20_6" style:display-name="Heading 6" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="6" style:class="text">
126 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/> 136 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/>
127 </style:style> 137 </style:style>
138 <style:style style:name="Heading_20_6_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_6" style:list-style-name="">
139 </style:style>
128 <style:style style:name="Heading_20_7" style:display-name="Heading 7" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="7" style:class="text"> 140 <style:style style:name="Heading_20_7" style:display-name="Heading 7" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="7" style:class="text">
129 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/> 141 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/>
130 </style:style> 142 </style:style>
143 <style:style style:name="Heading_20_7_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_7" style:list-style-name="">
144 </style:style>
131 <style:style style:name="Heading_20_8" style:display-name="Heading 8" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="8" style:class="text"> 145 <style:style style:name="Heading_20_8" style:display-name="Heading 8" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="8" style:class="text">
132 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/> 146 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/>
133 </style:style> 147 </style:style>
148 <style:style style:name="Heading_20_8_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_8" style:list-style-name="">
149 </style:style>
134 <style:style style:name="Heading_20_9" style:display-name="Heading 9" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="9" style:class="text"> 150 <style:style style:name="Heading_20_9" style:display-name="Heading 9" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="9" style:class="text">
135 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/> 151 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/>
136 </style:style> 152 </style:style>
153 <style:style style:name="Heading_20_9_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_9" style:list-style-name="">
154 </style:style>
137 <style:style style:name="Heading_20_10" style:display-name="Heading 10" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="10" style:class="text"> 155 <style:style style:name="Heading_20_10" style:display-name="Heading 10" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="10" style:class="text">
138 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/> 156 <style:text-properties fo:font-size="75%" fo:font-weight="bold" style:font-size-asian="75%" style:font-weight-asian="bold" style:font-size-complex="75%" style:font-weight-complex="bold"/>
139 </style:style> 157 </style:style>
158 <style:style style:name="Heading_20_10_unnumbered" style:family="paragraph" style:parent-style-name="Heading_20_10" style:list-style-name="">
159 </style:style>
140 <style:style style:name="Heading_20_1.title" style:display-name="Heading 1.title" style:family="paragraph" style:parent-style-name="Heading_20_1"> 160 <style:style style:name="Heading_20_1.title" style:display-name="Heading 1.title" style:family="paragraph" style:parent-style-name="Heading_20_1">
141 <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> 161 <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
142 </style:style> 162 </style:style>
diff --git a/etc/org/README b/etc/org/README
index 68905add814..d04f4349629 100644
--- a/etc/org/README
+++ b/etc/org/README
@@ -1,7 +1,7 @@
1The files OrgOdtContentTemplate.xml and OrgOdtStyles.xml have the 1The files OrgOdtContentTemplate.xml and OrgOdtStyles.xml have the
2following copyright information: 2following copyright information:
3 3
4Copyright (C) 2010-2017 Free Software Foundation, Inc. 4Copyright (C) 2010-2014 Free Software Foundation, Inc.
5 5
6These files are part of GNU Emacs. 6These files are part of GNU Emacs.
7 7
diff --git a/etc/org/library-of-babel.org b/etc/org/library-of-babel.org
new file mode 100644
index 00000000000..0098e726397
--- /dev/null
+++ b/etc/org/library-of-babel.org
@@ -0,0 +1,584 @@
1#+title: The Library of Babel
2#+author: Org-mode People
3#+STARTUP: hideblocks
4
5* Introduction
6
7The Library of Babel is an extensible collection of ready-made and
8easily-shortcut-callable source-code blocks for handling common tasks.
9Org-babel comes pre-populated with the source-code blocks located in
10this file. It is possible to add source-code blocks from any org-mode
11file to the library by calling =(org-babel-lob-ingest
12"path/to/file.org")=.
13
14This file is included in worg mainly less for viewing through the web
15interface, and more for contribution through the worg git repository.
16If you have code snippets that you think others may find useful please
17add them to this file and [[file:~/src/worg/worg-git.org::contribute-to-worg][contribute them]] to worg.
18
19The raw Org-mode text of this file can be downloaded at
20[[repofile:contrib/babel/library-of-babel.org][library-of-babel.org]]
21
22* Simple
23
24A collection of simple utility functions:
25
26#+name: echo
27#+begin_src emacs-lisp :var input="echo'd"
28 input
29#+end_src
30
31* File I/O
32
33** Reading and writing files
34
35Read the contents of the file at =file=. The =:results vector= and
36=:results scalar= header arguments can be used to read the contents of
37file as either a table or a string.
38
39#+name: read
40#+begin_src emacs-lisp :var file="" :var format=""
41 (if (string= format "csv")
42 (with-temp-buffer
43 (org-table-import (expand-file-name file) nil)
44 (org-table-to-lisp))
45 (with-temp-buffer
46 (insert-file-contents (expand-file-name file))
47 (buffer-string)))
48#+end_src
49
50Write =data= to a file at =file=. If =data= is a list, then write it
51as a table in traditional Org-mode table syntax.
52
53#+name: write
54#+begin_src emacs-lisp :var data="" :var file="" :var ext='()
55 (flet ((echo (r) (if (stringp r) r (format "%S" r))))
56 (with-temp-file file
57 (case (and (listp data)
58 (or ext (intern (file-name-extension file))))
59 ('tsv (insert (orgtbl-to-tsv data '(:fmt echo))))
60 ('csv (insert (orgtbl-to-csv data '(:fmt echo))))
61 (t (org-babel-insert-result data)))))
62 nil
63#+end_src
64
65** Remote files
66
67*** json
68
69Read local or remote file in [[http://www.json.org/][json]] format into emacs-lisp objects.
70
71#+name: json
72#+begin_src emacs-lisp :var file='() :var url='()
73 (require 'json)
74 (cond
75 (file
76 (with-temp-filebuffer file
77 (goto-char (point-min))
78 (json-read)))
79 (url
80 (require 'w3m)
81 (with-temp-buffer
82 (w3m-retrieve url)
83 (goto-char (point-min))
84 (json-read))))
85#+end_src
86
87*** Google docs
88
89The following code blocks make use of the [[http://code.google.com/p/googlecl/][googlecl]] Google command line
90tool. This tool provides functionality for accessing Google services
91from the command line, and the following code blocks use /googlecl/
92for reading from and writing to Google docs with Org-mode code blocks.
93
94**** Read a document from Google docs
95
96The =google= command seems to be throwing "Moved Temporarily" errors
97when trying to download textual documents, but this is working fine
98for spreadsheets.
99
100#+name: gdoc-read
101#+begin_src emacs-lisp :var title="example" :var format="csv"
102 (let* ((file (concat title "." format))
103 (cmd (format "google docs get --format %S --title %S" format title)))
104 (message cmd) (message (shell-command-to-string cmd))
105 (prog1 (if (string= format "csv")
106 (with-temp-buffer
107 (org-table-import (shell-quote-argument file) '(4))
108 (org-table-to-lisp))
109 (with-temp-buffer
110 (insert-file-contents (shell-quote-argument file))
111 (buffer-string)))
112 (delete-file file)))
113#+end_src
114
115For example, a line like the following can be used to read the
116contents of a spreadsheet named =num-cells= into a table.
117: #+call: gdoc-read(title="num-cells"")
118
119A line like the following can be used to read the contents of a
120document as a string.
121
122: #+call: gdoc-read(title="loremi", :format "txt")
123
124**** Write a document to a Google docs
125
126Write =data= to a google document named =title=. If =data= is tabular
127it will be saved to a spreadsheet, otherwise it will be saved as a
128normal document.
129
130#+name: gdoc-write
131#+begin_src emacs-lisp :var title="babel-upload" :var data=fibs(n=10) :results silent
132 (let* ((format (if (listp data) "csv" "txt"))
133 (tmp-file (make-temp-file "org-babel-google-doc" nil (concat "." format)))
134 (cmd (format "google docs upload --title %S %S" title tmp-file)))
135 (with-temp-file tmp-file
136 (insert
137 (if (listp data)
138 (orgtbl-to-csv
139 data '(:fmt (lambda (el) (if (stringp el) el (format "%S" el)))))
140 (if (stringp data) data (format "%S" data)))))
141 (message cmd)
142 (prog1 (shell-command-to-string cmd) (delete-file tmp-file)))
143#+end_src
144
145example usage
146: #+name: fibs
147: #+begin_src emacs-lisp :var n=8
148: (flet ((fib (m) (if (< m 2) 1 (+ (fib (- m 1)) (fib (- m 2))))))
149: (mapcar (lambda (el) (list el (fib el))) (number-sequence 0 (- n 1))))
150: #+end_src
151:
152: #+call: gdoc-write(title="fibs", data=fibs(n=10))
153
154* Plotting code
155
156** R
157
158Plot column 2 (y axis) against column 1 (x axis). Columns 3 and
159beyond, if present, are ignored.
160
161#+name: R-plot
162#+begin_src R :var data=R-plot-example-data
163plot(data)
164#+end_src
165
166#+tblname: R-plot-example-data
167| 1 | 2 |
168| 2 | 4 |
169| 3 | 9 |
170| 4 | 16 |
171| 5 | 25 |
172
173#+call: R-plot(data=R-plot-example-data)
174
175#+resname: R-plot(data=R-plot-example-data)
176: nil
177
178** Gnuplot
179
180* Org reference
181
182** Headline references
183
184#+name: headline
185#+begin_src emacs-lisp :var headline=top :var file='()
186 (save-excursion
187 (when file (get-file-buffer file))
188 (org-open-link-from-string (org-make-link-string headline))
189 (save-restriction
190 (org-narrow-to-subtree)
191 (buffer-string)))
192#+end_src
193
194#+call: headline(headline="headline references")
195
196* Tables
197
198** LaTeX Table Export
199
200*** booktabs
201
202This source block can be used to wrap a table in the latex =booktabs=
203environment. The source block adds a =toprule= and =bottomrule= (so
204don't use =hline= at the top or bottom of the table). The =hline=
205after the header is replaced with a =midrule=.
206
207Note that this function bypasses the Org-mode LaTeX exporter and calls
208=orgtbl-to-generic= to create the output table. This means that the
209entries in the table are not translated from Org-mode to LaTeX.
210
211It takes the following arguments -- all but the first two are
212optional.
213
214| arg | description |
215|-------+--------------------------------------------|
216| table | a reference to the table |
217| align | alignment string |
218| env | optional environment, default to "tabular" |
219| width | optional width specification string |
220
221#+name: booktabs
222#+begin_src emacs-lisp :var table='((:head) hline (:body)) :var align='() :var env="tabular" :var width='() :noweb yes :results latex
223 (flet ((to-tab (tab)
224 (orgtbl-to-generic
225 (mapcar (lambda (lis)
226 (if (listp lis)
227 (mapcar (lambda (el)
228 (if (stringp el)
229 el
230 (format "%S" el))) lis)
231 lis)) tab)
232 (list :lend " \\\\" :sep " & " :hline "\\hline"))))
233 (org-fill-template
234 "
235 \\begin{%env}%width%align
236 \\toprule
237 %table
238 \\bottomrule
239 \\end{%env}\n"
240 (list
241 (cons "env" (or env "table"))
242 (cons "width" (if width (format "{%s}" width) ""))
243 (cons "align" (if align (format "{%s}" align) ""))
244 (cons "table"
245 ;; only use \midrule if it looks like there are column headers
246 (if (equal 'hline (second table))
247 (concat (to-tab (list (first table)))
248 "\n\\midrule\n"
249 (to-tab (cddr table)))
250 (to-tab table))))))
251#+end_src
252
253*** longtable
254
255This block can be used to wrap a table in the latex =longtable=
256environment, it takes the following arguments -- all but the first two
257are optional.
258
259| arg | description |
260|-----------+-------------------------------------------------------------|
261| table | a reference to the table |
262| align | optional alignment string |
263| width | optional width specification string |
264| hline | the string to use as hline separator, defaults to "\\hline" |
265| head | optional "head" string |
266| firsthead | optional "firsthead" string |
267| foot | optional "foot" string |
268| lastfoot | optional "lastfoot" string |
269
270#+name: longtable
271#+begin_src emacs-lisp :var table='((:table)) :var align='() :var width='() :var hline="\\hline" :var firsthead='() :var head='() :var foot='() :var lastfoot='() :noweb yes :results latex
272 (org-fill-template
273 "
274 \\begin{longtable}%width%align
275 %firsthead
276 %head
277 %foot
278 %lastfoot
279
280 %table
281 \\end{longtable}\n"
282 (list
283 (cons "width" (if width (format "{%s}" width) ""))
284 (cons "align" (if align (format "{%s}" align) ""))
285 (cons "firsthead" (if firsthead (concat firsthead "\n\\endfirsthead\n") ""))
286 (cons "head" (if head (concat head "\n\\endhead\n") ""))
287 (cons "foot" (if foot (concat foot "\n\\endfoot\n") ""))
288 (cons "lastfoot" (if lastfoot (concat lastfoot "\n\\endlastfoot\n") ""))
289 (cons "table" (orgtbl-to-generic
290 (mapcar (lambda (lis)
291 (if (listp lis)
292 (mapcar (lambda (el)
293 (if (stringp el)
294 el
295 (format "%S" el))) lis)
296 lis)) table)
297 (list :lend " \\\\" :sep " & " :hline hline)))))
298#+end_src
299
300*** booktabs-notes
301
302This source block builds on [[booktabs]]. It accepts two additional
303arguments, both of which are optional.
304
305#+tblname: arguments
306| arg | description |
307|--------+------------------------------------------------------|
308| notes | an org-mode table with footnotes |
309| lspace | if non-nil, insert =addlinespace= after =bottomrule= |
310
311An example footnote to the =arguments= table specifies the column
312span. Note the use of LaTeX, rather than Org-mode, markup.
313
314#+tblname: arguments-notes
315| \multicolumn{2}{l}{This is a footnote to the \emph{arguments} table.} |
316
317#+name: booktabs-notes
318#+begin_src emacs-lisp :var table='((:head) hline (:body)) :var notes='() :var align='() :var env="tabular" :var width='() :var lspace='() :noweb yes :results latex
319 (flet ((to-tab (tab)
320 (orgtbl-to-generic
321 (mapcar (lambda (lis)
322 (if (listp lis)
323 (mapcar (lambda (el)
324 (if (stringp el)
325 el
326 (format "%S" el))) lis)
327 lis)) tab)
328 (list :lend " \\\\" :sep " & " :hline "\\hline"))))
329 (org-fill-template
330 "
331 \\begin{%env}%width%align
332 \\toprule
333 %table
334 \\bottomrule%spacer
335 %notes
336 \\end{%env}\n"
337 (list
338 (cons "env" (or env "table"))
339 (cons "width" (if width (format "{%s}" width) ""))
340 (cons "align" (if align (format "{%s}" align) ""))
341 (cons "spacer" (if lspace "\\addlinespace" ""))
342 (cons "table"
343 ;; only use \midrule if it looks like there are column headers
344 (if (equal 'hline (second table))
345 (concat (to-tab (list (first table)))
346 "\n\\midrule\n"
347 (to-tab (cddr table)))
348 (to-tab table)))
349 (cons "notes" (if notes (to-tab notes) ""))
350 )))
351#+end_src
352
353** Elegant lisp for transposing a matrix
354
355#+tblname: transpose-example
356| 1 | 2 | 3 |
357| 4 | 5 | 6 |
358
359#+name: transpose
360#+begin_src emacs-lisp :var table=transpose-example
361 (apply #'mapcar* #'list table)
362#+end_src
363
364#+resname:
365| 1 | 4 |
366| 2 | 5 |
367| 3 | 6 |
368
369** Convert every element of a table to a string
370
371#+tblname: hetero-table
372| 1 | 2 | 3 |
373| a | b | c |
374
375#+name: all-to-string
376#+begin_src emacs-lisp :var tbl='()
377 (defun all-to-string (tbl)
378 (if (listp tbl)
379 (mapcar #'all-to-string tbl)
380 (if (stringp tbl)
381 tbl
382 (format "%s" tbl))))
383 (all-to-string tbl)
384#+end_src
385
386#+begin_src emacs-lisp :var tbl=hetero-table
387 (mapcar (lambda (row) (mapcar (lambda (cell) (stringp cell)) row)) tbl)
388#+end_src
389
390#+name:
391| nil | nil | nil |
392| t | t | t |
393
394#+begin_src emacs-lisp :var tbl=all-to-string(hetero-table)
395 (mapcar (lambda (row) (mapcar (lambda (cell) (stringp cell)) row)) tbl)
396#+end_src
397
398#+name:
399| t | t | t |
400| t | t | t |
401
402* Misc
403
404** File-specific Version Control logging
405 :PROPERTIES:
406 :AUTHOR: Luke Crook
407 :END:
408
409This function will attempt to retrieve the entire commit log for the
410file associated with the current buffer and insert this log into the
411export. The function uses the Emacs VC commands to interface to the
412local version control system, but has only been tested to work with
413Git. 'limit' is currently unsupported.
414
415#+name: vc-log
416#+headers: :var limit=-1
417#+headers: :var buf=(buffer-name (current-buffer))
418#+begin_src emacs-lisp
419 ;; Most of this code is copied from vc.el vc-print-log
420 (require 'vc)
421 (when (vc-find-backend-function
422 (vc-backend (buffer-file-name (get-buffer buf))) 'print-log)
423 (let ((limit -1)
424 (vc-fileset nil)
425 (backend nil)
426 (files nil))
427 (with-current-buffer (get-buffer buf)
428 (setq vc-fileset (vc-deduce-fileset t)) ; FIXME: Why t? --Stef
429 (setq backend (car vc-fileset))
430 (setq files (cadr vc-fileset)))
431 (with-temp-buffer
432 (let ((status (vc-call-backend
433 backend 'print-log files (current-buffer))))
434 (when (and (processp status) ; Make sure status is a process
435 (= 0 (process-exit-status status))) ; which has not terminated
436 (while (not (eq 'exit (process-status status)))
437 (sit-for 1 t)))
438 (buffer-string)))))
439#+end_src
440
441** Trivial python code blocks
442
443#+name: python-identity
444#+begin_src python :var a=1
445a
446#+end_src
447
448#+name: python-add
449#+begin_src python :var a=1 :var b=2
450a + b
451#+end_src
452
453** Arithmetic
454
455#+name: lob-add
456#+begin_src emacs-lisp :var a=0 :var b=0
457 (+ a b)
458#+end_src
459
460#+name: lob-minus
461#+begin_src emacs-lisp :var a=0 :var b=0
462 (- a b)
463#+end_src
464
465#+name: lob-times
466#+begin_src emacs-lisp :var a=0 :var b=0
467 (* a b)
468#+end_src
469
470#+name: lob-div
471#+begin_src emacs-lisp :var a=0 :var b=0
472 (/ a b)
473#+end_src
474
475* GANTT Charts
476
477The =elispgantt= source block was sent to the mailing list by Eric
478Fraga. It was modified slightly by Tom Dye.
479
480#+name: elispgantt
481#+begin_src emacs-lisp :var table=gantttest
482 (let ((dates "")
483 (entries (nthcdr 2 table))
484 (milestones "")
485 (nmilestones 0)
486 (ntasks 0)
487 (projecttime 0)
488 (tasks "")
489 (xlength 1))
490 (message "Initial: %s\n" table)
491 (message "Entries: %s\n" entries)
492 (while entries
493 (let ((entry (first entries)))
494 (if (listp entry)
495 (let ((id (first entry))
496 (type (nth 1 entry))
497 (label (nth 2 entry))
498 (task (nth 3 entry))
499 (dependencies (nth 4 entry))
500 (start (nth 5 entry))
501 (duration (nth 6 entry))
502 (end (nth 7 entry))
503 (alignment (nth 8 entry)))
504 (if (> start projecttime) (setq projecttime start))
505 (if (string= type "task")
506 (let ((end (+ start duration))
507 (textposition (+ start (/ duration 2)))
508 (flush ""))
509 (if (string= alignment "left")
510 (progn
511 (setq textposition start)
512 (setq flush "[left]"))
513 (if (string= alignment "right")
514 (progn
515 (setq textposition end)
516 (setq flush "[right]"))))
517 (setq tasks
518 (format "%s \\gantttask{%s}{%s}{%d}{%d}{%d}{%s}\n"
519 tasks label task start end textposition flush))
520 (setq ntasks (+ 1 ntasks))
521 (if (> end projecttime)
522 (setq projecttime end)))
523 (if (string= type "milestone")
524 (progn
525 (setq milestones
526 (format
527 "%s \\ganttmilestone{$\\begin{array}{c}\\mbox{%s}\\\\ \\mbox{%s}\\end{array}$}{%d}\n"
528 milestones label task start))
529 (setq nmilestones (+ 1 nmilestones)))
530 (if (string= type "date")
531 (setq dates (format "%s \\ganttdateline{%s}{%d}\n"
532 dates label start))
533 (message "Ignoring entry with type %s\n" type)))))
534 (message "Ignoring non-list entry %s\n" entry)) ; end if list entry
535 (setq entries (cdr entries)))) ; end while entries left
536 (format "\\pgfdeclarelayer{background}
537 \\pgfdeclarelayer{foreground}
538 \\pgfsetlayers{background,foreground}
539 \\renewcommand{\\ganttprojecttime}{%d}
540 \\renewcommand{\\ganttntasks}{%d}
541 \\noindent
542 \\begin{tikzpicture}[y=-0.75cm,x=0.75\\textwidth]
543 \\begin{pgfonlayer}{background}
544 \\draw[very thin, red!10!white] (0,1+\\ganttntasks) grid [ystep=0.75cm,xstep=1/\\ganttprojecttime] (1,0);
545 \\draw[\\ganttdatelinecolour] (0,0) -- (1,0);
546 \\draw[\\ganttdatelinecolour] (0,1+\\ganttntasks) -- (1,1+\\ganttntasks);
547 \\end{pgfonlayer}
548 %s
549 %s
550 %s
551 \\end{tikzpicture}" projecttime ntasks tasks milestones dates))
552#+end_src
553
554* Available languages
555 :PROPERTIES:
556 :AUTHOR: Bastien
557 :END:
558
559** From Org's core
560
561| Language | Identifier | Language | Identifier |
562|------------+------------+----------------+------------|
563| Asymptote | asymptote | Awk | awk |
564| Emacs Calc | calc | C | C |
565| C++ | C++ | Clojure | clojure |
566| CSS | css | ditaa | ditaa |
567| Graphviz | dot | Emacs Lisp | emacs-lisp |
568| gnuplot | gnuplot | Haskell | haskell |
569| Javascript | js | LaTeX | latex |
570| Ledger | ledger | Lisp | lisp |
571| Lilypond | lilypond | MATLAB | matlab |
572| Mscgen | mscgen | Objective Caml | ocaml |
573| Octave | octave | Org-mode | org |
574| | | Perl | perl |
575| Plantuml | plantuml | Python | python |
576| R | R | Ruby | ruby |
577| Sass | sass | Scheme | scheme |
578| GNU Screen | screen | shell | sh |
579| SQL | sql | SQLite | sqlite |
580
581** From Org's contrib/babel/langs
582
583- ob-oz.el, by Torsten Anders and Eric Schulte
584- ob-fomus.el, by Torsten Anders
diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex
index b12ae7be592..9ab6b4aef1d 100644
--- a/etc/refcards/orgcard.tex
+++ b/etc/refcards/orgcard.tex
@@ -1,7 +1,7 @@
1% Reference Card for Org Mode 1% Reference Card for Org Mode
2\def\orgversionnumber{8.2} 2\def\orgversionnumber{9.0.9}
3\def\versionyear{2014} % latest update 3\def\versionyear{2017} % latest update
4\input emacsver.tex 4\def\year{2017} % latest copyright year
5 5
6%**start of header 6%**start of header
7\newcount\columnsperpage 7\newcount\columnsperpage
@@ -80,9 +80,6 @@
80\centerline{Released under the terms of the GNU General Public License} 80\centerline{Released under the terms of the GNU General Public License}
81\centerline{version 3 or later.} 81\centerline{version 3 or later.}
82 82
83\centerline{For more Emacs documentation, and the \TeX{} source for this card, see}
84\centerline{the Emacs distribution, or {\tt http://www.gnu.org/software/emacs}}
85
86\endgroup} 83\endgroup}
87 84
88% make \bye not \outer so that the \def\bye in the \else clause below 85% make \bye not \outer so that the \def\bye in the \else clause below
@@ -312,10 +309,11 @@
312\key{turn item/line into headline}{C-c *} 309\key{turn item/line into headline}{C-c *}
313\key{promote/demote heading}{M-LEFT/RIGHT} 310\key{promote/demote heading}{M-LEFT/RIGHT}
314\metax{promote/demote current subtree}{M-S-LEFT/RIGHT} 311\metax{promote/demote current subtree}{M-S-LEFT/RIGHT}
315\metax{move subtree/list item up/down}{M-S-UP/DOWN} 312\metax{move subtree/list item up/down}{M-UP/DOWN}
313\metax{move the line at point up/down}{M-S-UP/DOWN}
316\metax{sort subtree/region/plain-list}{C-c \^{}} 314\metax{sort subtree/region/plain-list}{C-c \^{}}
317\metax{clone a subtree}{C-c C-x c} 315\metax{clone a subtree}{C-c C-x c}
318\metax{copy visible text}{C-c C-x v} 316\metax{copy visible parts of the region}{C-c C-x v}
319\metax{kill/copy subtree}{C-c C-x C-w/M-w} 317\metax{kill/copy subtree}{C-c C-x C-w/M-w}
320\metax{yank subtree}{C-c C-x C-y or C-y} 318\metax{yank subtree}{C-c C-x C-y or C-y}
321\metax{narrow buffer to subtree / widen}{C-x n s/w} 319\metax{narrow buffer to subtree / widen}{C-x n s/w}
@@ -333,7 +331,6 @@
333\key{construct a sparse tree by various criteria}{C-c /} 331\key{construct a sparse tree by various criteria}{C-c /}
334\key{view TODO's in sparse tree}{C-c / t/T} 332\key{view TODO's in sparse tree}{C-c / t/T}
335\key{global TODO list in agenda mode}{C-c a t \noteone} 333\key{global TODO list in agenda mode}{C-c a t \noteone}
336\key{time sorted view of current org file}{C-c a L}
337 334
338\section{Tables} 335\section{Tables}
339 336
@@ -375,7 +372,6 @@ Outside of tables, the same keys may have other functionality.
375\metax{cut/copy/paste rectangular region}{C-c C-x C-w/M-w/C-y} 372\metax{cut/copy/paste rectangular region}{C-c C-x C-w/M-w/C-y}
376%\key{copy rectangular region}{C-c C-x M-w} 373%\key{copy rectangular region}{C-c C-x M-w}
377%\key{paste rectangular region}{C-c C-x C-y} 374%\key{paste rectangular region}{C-c C-x C-y}
378\key{fill paragraph across selected cells}{C-c C-q}
379 375
380{\bf Miscellaneous} 376{\bf Miscellaneous}
381 377
@@ -574,7 +570,6 @@ after ``{\tt :}'', and dictionary words elsewhere.
574\key{match tags, TODO kwds, properties}{C-c a m \noteone} 570\key{match tags, TODO kwds, properties}{C-c a m \noteone}
575\key{match only in TODO entries}{C-c a M \noteone} 571\key{match only in TODO entries}{C-c a M \noteone}
576\key{find stuck projects}{C-c a \# \noteone} 572\key{find stuck projects}{C-c a \# \noteone}
577\key{show timeline of current org file}{C-c a L \noteone}
578\key{configure custom commands}{C-c a C \noteone} 573\key{configure custom commands}{C-c a C \noteone}
579%\key{configure stuck projects}{C-c a ! \noteone} 574%\key{configure stuck projects}{C-c a ! \noteone}
580\key{agenda for date at cursor}{C-c C-o} 575\key{agenda for date at cursor}{C-c C-o}
@@ -661,8 +656,11 @@ some other place.
661 656
662\key{export/publish dispatcher}{C-c C-e} 657\key{export/publish dispatcher}{C-c C-e}
663 658
664\key{export visible part only}{C-c C-e v} 659\key{toggle asynchronous export}{C-c C-e C-a}
665\key{insert template of export options}{C-c C-e t} 660\key{toggle body/visible only export}{C-c C-e C-b/v}
661\key{toggle subtree export}{C-c C-e C-s}
662\key{insert template of export options}{C-c C-e \#}
663
666\key{toggle fixed width for entry or region}{C-c :} 664\key{toggle fixed width for entry or region}{C-c :}
667\key{toggle pretty display of scripts, entities}{C-c C-x {\tt\char`\\}} 665\key{toggle pretty display of scripts, entities}{C-c C-x {\tt\char`\\}}
668 666
@@ -690,6 +688,5 @@ your own key as shown under ACTIVATION.
690\bye 688\bye
691 689
692% Local variables: 690% Local variables:
693% compile-command: "tex refcard" 691% compile-command: "pdftex orgcard"
694% End: 692% End:
695
diff --git a/etc/schema/od-manifest-schema-v1.2-os.rnc b/etc/schema/od-manifest-schema-v1.2-os.rnc
new file mode 100644
index 00000000000..87f84d1ea87
--- /dev/null
+++ b/etc/schema/od-manifest-schema-v1.2-os.rnc
@@ -0,0 +1,88 @@
1# Open Document Format for Office Applications (OpenDocument) Version 1.2
2# OASIS Standard, 29 September 2011
3# Manifest Relax-NG Schema
4# Source: http://docs.oasis-open.org/office/v1.2/os/
5# Copyright (c) OASIS Open 2002-2011, 2013. All Rights Reserved.
6#
7# All capitalized terms in the following text have the meanings assigned to them
8# in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
9# full Policy may be found at the OASIS website.
10#
11# This document and translations of it may be copied and furnished to others, and
12# derivative works that comment on or otherwise explain it or assist in its
13# implementation may be prepared, copied, published, and distributed, in whole or
14# in part, without restriction of any kind, provided that the above copyright
15# notice and this section are included on all such copies and derivative works.
16# However, this document itself may not be modified in any way, including by
17# removing the copyright notice or references to OASIS, except as needed for the
18# purpose of developing any document or deliverable produced by an OASIS
19# Technical Committee (in which case the rules applicable to copyrights, as set
20# forth in the OASIS IPR Policy, must be followed) or as required to translate it
21# into languages other than English.
22#
23# The limited permissions granted above are perpetual and will not be revoked by
24# OASIS or its successors or assigns.
25#
26# This document and the information contained herein is provided on an "AS IS"
27# basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
28# LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
29# INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
30# FITNESS FOR A PARTICULAR PURPOSE.
31
32namespace manifest =
33 "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
34
35start = manifest
36manifest = element manifest:manifest { manifest-attlist, file-entry+ }
37manifest-attlist = attribute manifest:version { "1.2" }
38file-entry =
39 element manifest:file-entry { file-entry-attlist, encryption-data? }
40file-entry-attlist =
41 attribute manifest:full-path { \string }
42 & attribute manifest:size { nonNegativeInteger }?
43 & attribute manifest:media-type { \string }
44 & attribute manifest:preferred-view-mode {
45 "edit" | "presentation-slide-show" | "read-only" | namespacedToken
46 }?
47 & attribute manifest:version { \string }?
48encryption-data =
49 element manifest:encryption-data {
50 encryption-data-attlist,
51 algorithm,
52 start-key-generation?,
53 key-derivation
54 }
55encryption-data-attlist =
56 attribute manifest:checksum-type { "SHA1/1K" | anyURI }
57 & attribute manifest:checksum { base64Binary }
58algorithm =
59 element manifest:algorithm { algorithm-attlist, anyElements }
60algorithm-attlist =
61 attribute manifest:algorithm-name { "Blowfish CFB" | anyURI }
62 & attribute manifest:initialisation-vector { base64Binary }
63anyAttListOrElements =
64 attribute * { text }*,
65 anyElements
66anyElements =
67 element * {
68 mixed { anyAttListOrElements }
69 }*
70key-derivation =
71 element manifest:key-derivation { key-derivation-attlist, empty }
72key-derivation-attlist =
73 attribute manifest:key-derivation-name { "PBKDF2" | anyURI }
74 & attribute manifest:salt { base64Binary }
75 & attribute manifest:iteration-count { nonNegativeInteger }
76 & attribute manifest:key-size { nonNegativeInteger }?
77start-key-generation =
78 element manifest:start-key-generation {
79 start-key-generation-attlist, empty
80 }
81start-key-generation-attlist =
82 attribute manifest:start-key-generation-name { "SHA1" | anyURI }
83 & attribute manifest:key-size { nonNegativeInteger }?
84base64Binary = xsd:base64Binary
85namespacedToken = xsd:QName { pattern = "[^:]+:[^:]+" }
86nonNegativeInteger = xsd:nonNegativeInteger
87\string = xsd:string
88anyURI = xsd:anyURI
diff --git a/etc/schema/od-schema-v1.2-os.rnc b/etc/schema/od-schema-v1.2-os.rnc
new file mode 100644
index 00000000000..8d679d62e4e
--- /dev/null
+++ b/etc/schema/od-schema-v1.2-os.rnc
@@ -0,0 +1,6280 @@
1# Open Document Format for Office Applications (OpenDocument) Version 1.2
2# OASIS Standard, 29 September 2011
3# Relax-NG Schema
4# Source: http://docs.oasis-open.org/office/v1.2/os/
5# Copyright (c) OASIS Open 2002-2011, 2013. All Rights Reserved.
6#
7# All capitalized terms in the following text have the meanings assigned to them
8# in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The
9# full Policy may be found at the OASIS website.
10#
11# This document and translations of it may be copied and furnished to others, and
12# derivative works that comment on or otherwise explain it or assist in its
13# implementation may be prepared, copied, published, and distributed, in whole or
14# in part, without restriction of any kind, provided that the above copyright
15# notice and this section are included on all such copies and derivative works.
16# However, this document itself may not be modified in any way, including by
17# removing the copyright notice or references to OASIS, except as needed for the
18# purpose of developing any document or deliverable produced by an OASIS
19# Technical Committee (in which case the rules applicable to copyrights, as set
20# forth in the OASIS IPR Policy, must be followed) or as required to translate it
21# into languages other than English.
22#
23# The limited permissions granted above are perpetual and will not be revoked by
24# OASIS or its successors or assigns.
25#
26# This document and the information contained herein is provided on an "AS IS"
27# basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
28# LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
29# INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
30# FITNESS FOR A PARTICULAR PURPOSE.
31
32namespace anim = "urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
33namespace chart = "urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
34namespace config = "urn:oasis:names:tc:opendocument:xmlns:config:1.0"
35namespace db = "urn:oasis:names:tc:opendocument:xmlns:database:1.0"
36namespace dc = "http://purl.org/dc/elements/1.1/"
37namespace dr3d = "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
38namespace draw = "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
39namespace fo =
40 "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
41namespace form = "urn:oasis:names:tc:opendocument:xmlns:form:1.0"
42namespace grddl = "http://www.w3.org/2003/g/data-view#"
43namespace math = "http://www.w3.org/1998/Math/MathML"
44namespace meta = "urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
45namespace number = "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
46namespace office = "urn:oasis:names:tc:opendocument:xmlns:office:1.0"
47namespace presentation =
48 "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
49namespace script = "urn:oasis:names:tc:opendocument:xmlns:script:1.0"
50namespace smil =
51 "urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
52namespace style = "urn:oasis:names:tc:opendocument:xmlns:style:1.0"
53namespace svg =
54 "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
55namespace table = "urn:oasis:names:tc:opendocument:xmlns:table:1.0"
56namespace text = "urn:oasis:names:tc:opendocument:xmlns:text:1.0"
57namespace xforms = "http://www.w3.org/2002/xforms"
58namespace xhtml = "http://www.w3.org/1999/xhtml"
59namespace xlink = "http://www.w3.org/1999/xlink"
60
61office-process-content = attribute office:process-content { boolean }?
62start =
63 office-document
64 | office-document-content
65 | office-document-styles
66 | office-document-meta
67 | office-document-settings
68office-document =
69 element office:document {
70 office-document-attrs,
71 office-document-common-attrs,
72 office-meta,
73 office-settings,
74 office-scripts,
75 office-font-face-decls,
76 office-styles,
77 office-automatic-styles,
78 office-master-styles,
79 office-body
80 }
81office-document-content =
82 element office:document-content {
83 office-document-common-attrs,
84 office-scripts,
85 office-font-face-decls,
86 office-automatic-styles,
87 office-body
88 }
89office-document-styles =
90 element office:document-styles {
91 office-document-common-attrs,
92 office-font-face-decls,
93 office-styles,
94 office-automatic-styles,
95 office-master-styles
96 }
97office-document-meta =
98 element office:document-meta {
99 office-document-common-attrs, office-meta
100 }
101office-document-settings =
102 element office:document-settings {
103 office-document-common-attrs, office-settings
104 }
105office-document-common-attrs =
106 attribute office:version { "1.2" }
107 & attribute grddl:transformation {
108 list { anyIRI* }
109 }?
110office-document-attrs = attribute office:mimetype { \string }
111office-meta = element office:meta { office-meta-content-strict }?
112office-meta-content-strict = office-meta-data*
113office-body = element office:body { office-body-content }
114office-body-content =
115 element office:text {
116 office-text-attlist,
117 office-text-content-prelude,
118 office-text-content-main,
119 office-text-content-epilogue
120 }
121 | element office:drawing {
122 office-drawing-attlist,
123 office-drawing-content-prelude,
124 office-drawing-content-main,
125 office-drawing-content-epilogue
126 }
127 | element office:presentation {
128 office-presentation-attlist,
129 office-presentation-content-prelude,
130 office-presentation-content-main,
131 office-presentation-content-epilogue
132 }
133 | element office:spreadsheet {
134 office-spreadsheet-attlist,
135 office-spreadsheet-content-prelude,
136 office-spreadsheet-content-main,
137 office-spreadsheet-content-epilogue
138 }
139 | element office:chart {
140 office-chart-attlist,
141 office-chart-content-prelude,
142 office-chart-content-main,
143 office-chart-content-epilogue
144 }
145 | element office:image {
146 office-image-attlist,
147 office-image-content-prelude,
148 office-image-content-main,
149 office-image-content-epilogue
150 }
151 | office-database
152office-text-content-prelude =
153 office-forms, text-tracked-changes, text-decls, table-decls
154office-text-content-main =
155 text-content*
156 | (text-page-sequence, (shape)*)
157text-content =
158 text-h
159 | text-p
160 | text-list
161 | text-numbered-paragraph
162 | table-table
163 | text-section
164 | text-soft-page-break
165 | text-table-of-content
166 | text-illustration-index
167 | text-table-index
168 | text-object-index
169 | text-user-index
170 | text-alphabetical-index
171 | text-bibliography
172 | shape
173 | change-marks
174office-text-content-epilogue = table-functions
175office-text-attlist =
176 attribute text:global { boolean }?
177 & attribute text:use-soft-page-breaks { boolean }?
178office-drawing-attlist = empty
179office-drawing-content-prelude = text-decls, table-decls
180office-drawing-content-main = draw-page*
181office-drawing-content-epilogue = table-functions
182office-presentation-attlist = empty
183office-presentation-content-prelude =
184 text-decls, table-decls, presentation-decls
185office-presentation-content-main = draw-page*
186office-presentation-content-epilogue =
187 presentation-settings, table-functions
188office-spreadsheet-content-prelude =
189 table-tracked-changes?, text-decls, table-decls
190table-decls =
191 table-calculation-settings?,
192 table-content-validations?,
193 table-label-ranges?
194office-spreadsheet-content-main = table-table*
195office-spreadsheet-content-epilogue = table-functions
196table-functions =
197 table-named-expressions?,
198 table-database-ranges?,
199 table-data-pilot-tables?,
200 table-consolidation?,
201 table-dde-links?
202office-chart-attlist = empty
203office-chart-content-prelude = text-decls, table-decls
204office-chart-content-main = chart-chart
205office-chart-content-epilogue = table-functions
206office-image-attlist = empty
207office-image-content-prelude = empty
208office-image-content-main = draw-frame
209office-image-content-epilogue = empty
210office-settings = element office:settings { config-config-item-set+ }?
211config-config-item-set =
212 element config:config-item-set {
213 config-config-item-set-attlist, config-items
214 }
215config-items =
216 (config-config-item
217 | config-config-item-set
218 | config-config-item-map-named
219 | config-config-item-map-indexed)+
220config-config-item-set-attlist = attribute config:name { \string }
221config-config-item =
222 element config:config-item { config-config-item-attlist, text }
223config-config-item-attlist =
224 attribute config:name { \string }
225 & attribute config:type {
226 "boolean"
227 | "short"
228 | "int"
229 | "long"
230 | "double"
231 | "string"
232 | "datetime"
233 | "base64Binary"
234 }
235config-config-item-map-indexed =
236 element config:config-item-map-indexed {
237 config-config-item-map-indexed-attlist,
238 config-config-item-map-entry+
239 }
240config-config-item-map-indexed-attlist =
241 attribute config:name { \string }
242config-config-item-map-entry =
243 element config:config-item-map-entry {
244 config-config-item-map-entry-attlist, config-items
245 }
246config-config-item-map-entry-attlist =
247 attribute config:name { \string }?
248config-config-item-map-named =
249 element config:config-item-map-named {
250 config-config-item-map-named-attlist, config-config-item-map-entry+
251 }
252config-config-item-map-named-attlist = attribute config:name { \string }
253office-scripts =
254 element office:scripts { office-script*, office-event-listeners? }?
255office-script =
256 element office:script {
257 office-script-attlist,
258 mixed { anyElements }
259 }
260office-script-attlist = attribute script:language { \string }
261office-font-face-decls =
262 element office:font-face-decls { style-font-face* }?
263office-styles =
264 element office:styles {
265 styles
266 & style-default-style*
267 & style-default-page-layout?
268 & text-outline-style?
269 & text-notes-configuration*
270 & text-bibliography-configuration?
271 & text-linenumbering-configuration?
272 & draw-gradient*
273 & svg-linearGradient*
274 & svg-radialGradient*
275 & draw-hatch*
276 & draw-fill-image*
277 & draw-marker*
278 & draw-stroke-dash*
279 & draw-opacity*
280 & style-presentation-page-layout*
281 & table-table-template*
282 }?
283office-automatic-styles =
284 element office:automatic-styles { styles & style-page-layout* }?
285office-master-styles =
286 element office:master-styles {
287 style-master-page* & style-handout-master? & draw-layer-set?
288 }?
289styles =
290 style-style*
291 & text-list-style*
292 & number-number-style*
293 & number-currency-style*
294 & number-percentage-style*
295 & number-date-style*
296 & number-time-style*
297 & number-boolean-style*
298 & number-text-style*
299office-meta-data =
300 element meta:generator { \string }
301 | element dc:title { \string }
302 | element dc:description { \string }
303 | element dc:subject { \string }
304 | element meta:keyword { \string }
305 | element meta:initial-creator { \string }
306 | dc-creator
307 | element meta:printed-by { \string }
308 | element meta:creation-date { dateTime }
309 | dc-date
310 | element meta:print-date { dateTime }
311 | element meta:template {
312 attribute xlink:type { "simple" },
313 attribute xlink:href { anyIRI },
314 attribute xlink:actuate { "onRequest" }?,
315 attribute xlink:title { \string }?,
316 attribute meta:date { dateTime }?
317 }
318 | element meta:auto-reload {
319 (attribute xlink:type { "simple" },
320 attribute xlink:href { anyIRI },
321 attribute xlink:show { "replace" }?,
322 attribute xlink:actuate { "onLoad" }?)?,
323 attribute meta:delay { duration }?
324 }
325 | element meta:hyperlink-behaviour {
326 attribute office:target-frame-name { targetFrameName }?,
327 attribute xlink:show { "new" | "replace" }?
328 }
329 | element dc:language { language }
330 | element meta:editing-cycles { nonNegativeInteger }
331 | element meta:editing-duration { duration }
332 | element meta:document-statistic {
333 attribute meta:page-count { nonNegativeInteger }?,
334 attribute meta:table-count { nonNegativeInteger }?,
335 attribute meta:draw-count { nonNegativeInteger }?,
336 attribute meta:image-count { nonNegativeInteger }?,
337 attribute meta:ole-object-count { nonNegativeInteger }?,
338 attribute meta:object-count { nonNegativeInteger }?,
339 attribute meta:paragraph-count { nonNegativeInteger }?,
340 attribute meta:word-count { nonNegativeInteger }?,
341 attribute meta:character-count { nonNegativeInteger }?,
342 attribute meta:frame-count { nonNegativeInteger }?,
343 attribute meta:sentence-count { nonNegativeInteger }?,
344 attribute meta:syllable-count { nonNegativeInteger }?,
345 attribute meta:non-whitespace-character-count {
346 nonNegativeInteger
347 }?,
348 attribute meta:row-count { nonNegativeInteger }?,
349 attribute meta:cell-count { nonNegativeInteger }?
350 }
351 | element meta:user-defined {
352 attribute meta:name { \string },
353 ((attribute meta:value-type { "float" },
354 double)
355 | (attribute meta:value-type { "date" },
356 dateOrDateTime)
357 | (attribute meta:value-type { "time" },
358 duration)
359 | (attribute meta:value-type { "boolean" },
360 boolean)
361 | (attribute meta:value-type { "string" },
362 \string)
363 | text)
364 }
365dc-creator = element dc:creator { \string }
366dc-date = element dc:date { dateTime }
367text-h =
368 element text:h {
369 heading-attrs,
370 paragraph-attrs,
371 text-number?,
372 paragraph-content-or-hyperlink*
373 }
374heading-attrs =
375 attribute text:outline-level { positiveInteger }
376 & attribute text:restart-numbering { boolean }?
377 & attribute text:start-value { nonNegativeInteger }?
378 & attribute text:is-list-header { boolean }?
379text-number = element text:number { \string }
380text-p =
381 element text:p { paragraph-attrs, paragraph-content-or-hyperlink* }
382paragraph-attrs =
383 attribute text:style-name { styleNameRef }?
384 & attribute text:class-names { styleNameRefs }?
385 & attribute text:cond-style-name { styleNameRef }?
386 & (xml-id,
387 attribute text:id { NCName }?)?
388 & common-in-content-meta-attlist?
389text-page-sequence = element text:page-sequence { text-page+ }
390text-page = element text:page { text-page-attlist, empty }
391text-page-attlist = attribute text:master-page-name { styleNameRef }
392text-list =
393 element text:list {
394 text-list-attr, text-list-header?, text-list-item*
395 }
396text-list-attr =
397 attribute text:style-name { styleNameRef }?
398 & attribute text:continue-numbering { boolean }?
399 & attribute text:continue-list { IDREF }?
400 & xml-id?
401text-list-item =
402 element text:list-item { text-list-item-attr, text-list-item-content }
403text-list-item-content =
404 text-number?, (text-p | text-h | text-list | text-soft-page-break)*
405text-list-item-attr =
406 attribute text:start-value { nonNegativeInteger }?
407 & attribute text:style-override { styleNameRef }?
408 & xml-id?
409text-list-header =
410 element text:list-header {
411 text-list-header-attr, text-list-item-content
412 }
413text-list-header-attr = xml-id?
414text-numbered-paragraph =
415 element text:numbered-paragraph {
416 text-numbered-paragraph-attr, text-number?, (text-p | text-h)
417 }
418text-numbered-paragraph-attr =
419 attribute text:list-id { NCName }
420 & attribute text:level { positiveInteger }?
421 & (attribute text:style-name { styleNameRef },
422 attribute text:continue-numbering { boolean },
423 attribute text:start-value { nonNegativeInteger })?
424 & xml-id?
425text-section =
426 element text:section {
427 text-section-attlist,
428 (text-section-source | text-section-source-dde | empty),
429 text-content*
430 }
431text-section-attlist =
432 common-section-attlist
433 & (attribute text:display { "true" | "none" }
434 | (attribute text:display { "condition" },
435 attribute text:condition { \string })
436 | empty)
437common-section-attlist =
438 attribute text:style-name { styleNameRef }?
439 & attribute text:name { \string }
440 & attribute text:protected { boolean }?
441 & attribute text:protection-key { \string }?
442 & attribute text:protection-key-digest-algorithm { anyIRI }?
443 & xml-id?
444text-section-source =
445 element text:section-source { text-section-source-attr }
446text-section-source-attr =
447 (attribute xlink:type { "simple" },
448 attribute xlink:href { anyIRI },
449 attribute xlink:show { "embed" }?)?
450 & attribute text:section-name { \string }?
451 & attribute text:filter-name { \string }?
452text-section-source-dde = office-dde-source
453text-tracked-changes =
454 element text:tracked-changes {
455 text-tracked-changes-attr, text-changed-region*
456 }?
457text-tracked-changes-attr = attribute text:track-changes { boolean }?
458text-changed-region =
459 element text:changed-region {
460 text-changed-region-attr, text-changed-region-content
461 }
462text-changed-region-attr =
463 xml-id,
464 attribute text:id { NCName }?
465text-changed-region-content =
466 element text:insertion { office-change-info }
467 | element text:deletion { office-change-info, text-content* }
468 | element text:format-change { office-change-info }
469change-marks =
470 element text:change { change-mark-attr }
471 | element text:change-start { change-mark-attr }
472 | element text:change-end { change-mark-attr }
473change-mark-attr = attribute text:change-id { IDREF }
474text-soft-page-break = element text:soft-page-break { empty }
475text-decls =
476 element text:variable-decls { text-variable-decl* }?,
477 element text:sequence-decls { text-sequence-decl* }?,
478 element text:user-field-decls { text-user-field-decl* }?,
479 element text:dde-connection-decls { text-dde-connection-decl* }?,
480 text-alphabetical-index-auto-mark-file?
481paragraph-content-or-hyperlink = paragraph-content | text-a
482paragraph-content =
483 text
484 | element text:s {
485 attribute text:c { nonNegativeInteger }?
486 }
487 | element text:tab { text-tab-attr }
488 | element text:line-break { empty }
489 | text-soft-page-break
490 | element text:span {
491 attribute text:style-name { styleNameRef }?,
492 attribute text:class-names { styleNameRefs }?,
493 paragraph-content-or-hyperlink*
494 }
495 | element text:meta {
496 text-meta-attlist, paragraph-content-or-hyperlink*
497 }
498 | (text-bookmark | text-bookmark-start | text-bookmark-end)
499 | element text:reference-mark {
500 attribute text:name { \string }
501 }
502 | (element text:reference-mark-start {
503 attribute text:name { \string }
504 }
505 | element text:reference-mark-end {
506 attribute text:name { \string }
507 })
508 | element text:note {
509 text-note-class,
510 attribute text:id { \string }?,
511 element text:note-citation {
512 attribute text:label { \string }?,
513 text
514 },
515 element text:note-body { text-content* }
516 }
517 | element text:ruby {
518 attribute text:style-name { styleNameRef }?,
519 element text:ruby-base { paragraph-content-or-hyperlink* },
520 element text:ruby-text {
521 attribute text:style-name { styleNameRef }?,
522 text
523 }
524 }
525 | (office-annotation | office-annotation-end)
526 | change-marks
527 | shape
528 | element text:date { text-date-attlist, text }
529 | element text:time { text-time-attlist, text }
530 | element text:page-number { text-page-number-attlist, text }
531 | element text:page-continuation {
532 text-page-continuation-attlist, text
533 }
534 | element text:sender-firstname { common-field-fixed-attlist, text }
535 | element text:sender-lastname { common-field-fixed-attlist, text }
536 | element text:sender-initials { common-field-fixed-attlist, text }
537 | element text:sender-title { common-field-fixed-attlist, text }
538 | element text:sender-position { common-field-fixed-attlist, text }
539 | element text:sender-email { common-field-fixed-attlist, text }
540 | element text:sender-phone-private {
541 common-field-fixed-attlist, text
542 }
543 | element text:sender-fax { common-field-fixed-attlist, text }
544 | element text:sender-company { common-field-fixed-attlist, text }
545 | element text:sender-phone-work { common-field-fixed-attlist, text }
546 | element text:sender-street { common-field-fixed-attlist, text }
547 | element text:sender-city { common-field-fixed-attlist, text }
548 | element text:sender-postal-code { common-field-fixed-attlist, text }
549 | element text:sender-country { common-field-fixed-attlist, text }
550 | element text:sender-state-or-province {
551 common-field-fixed-attlist, text
552 }
553 | element text:author-name { common-field-fixed-attlist, text }
554 | element text:author-initials { common-field-fixed-attlist, text }
555 | element text:chapter { text-chapter-attlist, text }
556 | element text:file-name { text-file-name-attlist, text }
557 | element text:template-name { text-template-name-attlist, text }
558 | element text:sheet-name { text }
559 | element text:variable-set {
560 (common-field-name-attlist
561 & common-field-formula-attlist
562 & common-value-and-type-attlist
563 & common-field-display-value-none-attlist
564 & common-field-data-style-name-attlist),
565 text
566 }
567 | element text:variable-get {
568 (common-field-name-attlist
569 & common-field-display-value-formula-attlist
570 & common-field-data-style-name-attlist),
571 text
572 }
573 | element text:variable-input {
574 (common-field-name-attlist
575 & common-field-description-attlist
576 & common-value-type-attlist
577 & common-field-display-value-none-attlist
578 & common-field-data-style-name-attlist),
579 text
580 }
581 | element text:user-field-get {
582 (common-field-name-attlist
583 & common-field-display-value-formula-none-attlist
584 & common-field-data-style-name-attlist),
585 text
586 }
587 | element text:user-field-input {
588 (common-field-name-attlist
589 & common-field-description-attlist
590 & common-field-data-style-name-attlist),
591 text
592 }
593 | element text:sequence {
594 (common-field-name-attlist
595 & common-field-formula-attlist
596 & common-field-num-format-attlist
597 & text-sequence-ref-name),
598 text
599 }
600 | element text:expression {
601 (common-field-formula-attlist
602 & common-value-and-type-attlist?
603 & common-field-display-value-formula-attlist
604 & common-field-data-style-name-attlist),
605 text
606 }
607 | element text:text-input { common-field-description-attlist, text }
608 | element text:initial-creator { common-field-fixed-attlist, text }
609 | element text:creation-date {
610 (common-field-fixed-attlist
611 & common-field-data-style-name-attlist
612 & attribute text:date-value { dateOrDateTime }?),
613 text
614 }
615 | element text:creation-time {
616 (common-field-fixed-attlist
617 & common-field-data-style-name-attlist
618 & attribute text:time-value { timeOrDateTime }?),
619 text
620 }
621 | element text:description { common-field-fixed-attlist, text }
622 | element text:user-defined {
623 (common-field-fixed-attlist
624 & attribute text:name { \string }
625 & common-field-data-style-name-attlist
626 & attribute office:value { double }?
627 & attribute office:date-value { dateOrDateTime }?
628 & attribute office:time-value { duration }?
629 & attribute office:boolean-value { boolean }?
630 & attribute office:string-value { \string }?),
631 text
632 }
633 | element text:print-time {
634 (common-field-fixed-attlist
635 & common-field-data-style-name-attlist
636 & attribute text:time-value { time }?),
637 text
638 }
639 | element text:print-date {
640 (common-field-fixed-attlist
641 & common-field-data-style-name-attlist
642 & attribute text:date-value { date }?),
643 text
644 }
645 | element text:printed-by { common-field-fixed-attlist, text }
646 | element text:title { common-field-fixed-attlist, text }
647 | element text:subject { common-field-fixed-attlist, text }
648 | element text:keywords { common-field-fixed-attlist, text }
649 | element text:editing-cycles { common-field-fixed-attlist, text }
650 | element text:editing-duration {
651 (common-field-fixed-attlist
652 & common-field-data-style-name-attlist
653 & attribute text:duration { duration }?),
654 text
655 }
656 | element text:modification-time {
657 (common-field-fixed-attlist
658 & common-field-data-style-name-attlist
659 & attribute text:time-value { time }?),
660 text
661 }
662 | element text:modification-date {
663 (common-field-fixed-attlist
664 & common-field-data-style-name-attlist
665 & attribute text:date-value { date }?),
666 text
667 }
668 | element text:creator { common-field-fixed-attlist, text }
669 | element text:page-count
670 | text:paragraph-count
671 | text:word-count
672 | text:character-count
673 | text:table-count
674 | text:image-count
675 | text:object-count {
676 common-field-num-format-attlist, text
677 }
678 | element text:database-display {
679 text-database-display-attlist, text
680 }
681 | element text:database-next { text-database-next-attlist }
682 | element text:database-row-select {
683 text-database-row-select-attlist
684 }
685 | element text:database-row-number {
686 (common-field-database-table
687 & common-field-num-format-attlist
688 & attribute text:value { nonNegativeInteger }?),
689 text
690 }
691 | element text:database-name { common-field-database-table, text }
692 | element text:page-variable-set {
693 text-set-page-variable-attlist, text
694 }
695 | element text:page-variable-get {
696 text-get-page-variable-attlist, text
697 }
698 | element text:placeholder { text-placeholder-attlist, text }
699 | element text:conditional-text {
700 text-conditional-text-attlist, text
701 }
702 | element text:hidden-text { text-hidden-text-attlist, text }
703 | element text:reference-ref | text:bookmark-ref {
704 text-common-ref-content & text-bookmark-ref-content
705 }
706 | element text:note-ref {
707 text-common-ref-content & text-note-ref-content
708 }
709 | element text:sequence-ref {
710 text-common-ref-content & text-sequence-ref-content
711 }
712 | element text:script {
713 ((attribute xlink:type { "simple" },
714 attribute xlink:href { anyIRI })
715 | text)
716 & attribute script:language { \string }?
717 }
718 | element text:execute-macro {
719 attribute text:name { \string }?,
720 office-event-listeners?,
721 text
722 }
723 | element text:hidden-paragraph {
724 text-hidden-paragraph-attlist, text
725 }
726 | element text:dde-connection {
727 attribute text:connection-name { \string },
728 text
729 }
730 | element text:measure {
731 attribute text:kind { "value" | "unit" | "gap" },
732 text
733 }
734 | element text:table-formula {
735 (common-field-formula-attlist
736 & common-field-display-value-formula-attlist
737 & common-field-data-style-name-attlist),
738 text
739 }
740 | element text:meta-field {
741 text-meta-field-attlist, paragraph-content-or-hyperlink*
742 }
743 | element text:toc-mark-start { text-toc-mark-start-attrs }
744 | element text:toc-mark-end { text-id }
745 | element text:toc-mark {
746 attribute text:string-value { \string },
747 text-outline-level
748 }
749 | element text:user-index-mark-start {
750 text-id, text-outline-level, text-index-name
751 }
752 | element text:user-index-mark-end { text-id }
753 | element text:user-index-mark {
754 attribute text:string-value { \string },
755 text-outline-level,
756 text-index-name
757 }
758 | element text:alphabetical-index-mark-start {
759 text-id, text-alphabetical-index-mark-attrs
760 }
761 | element text:alphabetical-index-mark-end { text-id }
762 | element text:alphabetical-index-mark {
763 attribute text:string-value { \string },
764 text-alphabetical-index-mark-attrs
765 }
766 | element text:bibliography-mark {
767 attribute text:bibliography-type { text-bibliography-types },
768 attribute text:identifier
769 | text:address
770 | text:annote
771 | text:author
772 | text:booktitle
773 | text:chapter
774 | text:edition
775 | text:editor
776 | text:howpublished
777 | text:institution
778 | text:journal
779 | text:month
780 | text:note
781 | text:number
782 | text:organizations
783 | text:pages
784 | text:publisher
785 | text:school
786 | text:series
787 | text:title
788 | text:report-type
789 | text:volume
790 | text:year
791 | text:url
792 | text:custom1
793 | text:custom2
794 | text:custom3
795 | text:custom4
796 | text:custom5
797 | text:isbn
798 | text:issn { \string }*,
799 text
800 }
801 | element presentation:header { empty }
802 | element presentation:footer { empty }
803 | element presentation:date-time { empty }
804text-tab-attr = attribute text:tab-ref { nonNegativeInteger }?
805text-a =
806 element text:a {
807 text-a-attlist, office-event-listeners?, paragraph-content*
808 }
809text-a-attlist =
810 attribute office:name { \string }?
811 & attribute office:title { \string }?
812 & attribute xlink:type { "simple" }
813 & attribute xlink:href { anyIRI }
814 & attribute xlink:actuate { "onRequest" }?
815 & attribute office:target-frame-name { targetFrameName }?
816 & attribute xlink:show { "new" | "replace" }?
817 & attribute text:style-name { styleNameRef }?
818 & attribute text:visited-style-name { styleNameRef }?
819text-meta-attlist = common-in-content-meta-attlist? & xml-id?
820text-bookmark = element text:bookmark { text-bookmark-attlist, empty }
821text-bookmark-start =
822 element text:bookmark-start { text-bookmark-start-attlist, empty }
823text-bookmark-end =
824 element text:bookmark-end { text-bookmark-end-attlist, empty }
825text-bookmark-attlist =
826 attribute text:name { \string }
827 & xml-id?
828text-bookmark-start-attlist =
829 attribute text:name { \string }
830 & xml-id?
831 & common-in-content-meta-attlist?
832text-bookmark-end-attlist = attribute text:name { \string }
833text-note-class = attribute text:note-class { "footnote" | "endnote" }
834text-date-attlist =
835 (common-field-fixed-attlist & common-field-data-style-name-attlist)
836 & attribute text:date-value { dateOrDateTime }?
837 & attribute text:date-adjust { duration }?
838text-time-attlist =
839 (common-field-fixed-attlist & common-field-data-style-name-attlist)
840 & attribute text:time-value { timeOrDateTime }?
841 & attribute text:time-adjust { duration }?
842text-page-number-attlist =
843 (common-field-num-format-attlist & common-field-fixed-attlist)
844 & attribute text:page-adjust { integer }?
845 & attribute text:select-page { "previous" | "current" | "next" }?
846text-page-continuation-attlist =
847 attribute text:select-page { "previous" | "next" }
848 & attribute text:string-value { \string }?
849text-chapter-attlist =
850 attribute text:display {
851 "name"
852 | "number"
853 | "number-and-name"
854 | "plain-number-and-name"
855 | "plain-number"
856 }
857 & attribute text:outline-level { nonNegativeInteger }
858text-file-name-attlist =
859 attribute text:display {
860 "full" | "path" | "name" | "name-and-extension"
861 }?
862 & common-field-fixed-attlist
863text-template-name-attlist =
864 attribute text:display {
865 "full" | "path" | "name" | "name-and-extension" | "area" | "title"
866 }?
867text-variable-decl =
868 element text:variable-decl {
869 common-field-name-attlist, common-value-type-attlist
870 }
871text-user-field-decl =
872 element text:user-field-decl {
873 common-field-name-attlist,
874 common-field-formula-attlist?,
875 common-value-and-type-attlist
876 }
877text-sequence-decl =
878 element text:sequence-decl { text-sequence-decl-attlist }
879text-sequence-decl-attlist =
880 common-field-name-attlist
881 & attribute text:display-outline-level { nonNegativeInteger }
882 & attribute text:separation-character { character }?
883text-sequence-ref-name = attribute text:ref-name { \string }?
884common-field-database-table =
885 common-field-database-table-attlist, common-field-database-name
886common-field-database-name =
887 attribute text:database-name { \string }?
888 | form-connection-resource
889common-field-database-table-attlist =
890 attribute text:table-name { \string }
891 & attribute text:table-type { "table" | "query" | "command" }?
892text-database-display-attlist =
893 common-field-database-table
894 & common-field-data-style-name-attlist
895 & attribute text:column-name { \string }
896text-database-next-attlist =
897 common-field-database-table
898 & attribute text:condition { \string }?
899text-database-row-select-attlist =
900 common-field-database-table
901 & attribute text:condition { \string }?
902 & attribute text:row-number { nonNegativeInteger }?
903text-set-page-variable-attlist =
904 attribute text:active { boolean }?
905 & attribute text:page-adjust { integer }?
906text-get-page-variable-attlist = common-field-num-format-attlist
907text-placeholder-attlist =
908 attribute text:placeholder-type {
909 "text" | "table" | "text-box" | "image" | "object"
910 }
911 & common-field-description-attlist
912text-conditional-text-attlist =
913 attribute text:condition { \string }
914 & attribute text:string-value-if-true { \string }
915 & attribute text:string-value-if-false { \string }
916 & attribute text:current-value { boolean }?
917text-hidden-text-attlist =
918 attribute text:condition { \string }
919 & attribute text:string-value { \string }
920 & attribute text:is-hidden { boolean }?
921text-common-ref-content =
922 text
923 & attribute text:ref-name { \string }?
924text-bookmark-ref-content =
925 attribute text:reference-format {
926 common-ref-format-values
927 | "number-no-superior"
928 | "number-all-superior"
929 | "number"
930 }?
931text-note-ref-content =
932 attribute text:reference-format { common-ref-format-values }?
933 & text-note-class
934text-sequence-ref-content =
935 attribute text:reference-format {
936 common-ref-format-values
937 | "category-and-value"
938 | "caption"
939 | "value"
940 }?
941common-ref-format-values = "page" | "chapter" | "direction" | "text"
942text-hidden-paragraph-attlist =
943 attribute text:condition { \string }
944 & attribute text:is-hidden { boolean }?
945text-meta-field-attlist = xml-id & common-field-data-style-name-attlist
946common-value-type-attlist = attribute office:value-type { valueType }
947common-value-and-type-attlist =
948 (attribute office:value-type { "float" },
949 attribute office:value { double })
950 | (attribute office:value-type { "percentage" },
951 attribute office:value { double })
952 | (attribute office:value-type { "currency" },
953 attribute office:value { double },
954 attribute office:currency { \string }?)
955 | (attribute office:value-type { "date" },
956 attribute office:date-value { dateOrDateTime })
957 | (attribute office:value-type { "time" },
958 attribute office:time-value { duration })
959 | (attribute office:value-type { "boolean" },
960 attribute office:boolean-value { boolean })
961 | (attribute office:value-type { "string" },
962 attribute office:string-value { \string }?)
963common-field-fixed-attlist = attribute text:fixed { boolean }?
964common-field-name-attlist = attribute text:name { variableName }
965common-field-description-attlist =
966 attribute text:description { \string }?
967common-field-display-value-none-attlist =
968 attribute text:display { "value" | "none" }?
969common-field-display-value-formula-none-attlist =
970 attribute text:display { "value" | "formula" | "none" }?
971common-field-display-value-formula-attlist =
972 attribute text:display { "value" | "formula" }?
973common-field-formula-attlist = attribute text:formula { \string }?
974common-field-data-style-name-attlist =
975 attribute style:data-style-name { styleNameRef }?
976common-field-num-format-attlist = common-num-format-attlist?
977text-toc-mark-start-attrs = text-id, text-outline-level
978text-outline-level = attribute text:outline-level { positiveInteger }?
979text-id = attribute text:id { \string }
980text-index-name = attribute text:index-name { \string }
981text-alphabetical-index-mark-attrs =
982 attribute text:key1 { \string }?
983 & attribute text:key2 { \string }?
984 & attribute text:string-value-phonetic { \string }?
985 & attribute text:key1-phonetic { \string }?
986 & attribute text:key2-phonetic { \string }?
987 & attribute text:main-entry { boolean }?
988text-bibliography-types =
989 "article"
990 | "book"
991 | "booklet"
992 | "conference"
993 | "custom1"
994 | "custom2"
995 | "custom3"
996 | "custom4"
997 | "custom5"
998 | "email"
999 | "inbook"
1000 | "incollection"
1001 | "inproceedings"
1002 | "journal"
1003 | "manual"
1004 | "mastersthesis"
1005 | "misc"
1006 | "phdthesis"
1007 | "proceedings"
1008 | "techreport"
1009 | "unpublished"
1010 | "www"
1011text-index-body = element text:index-body { index-content-main* }
1012index-content-main = text-content | text-index-title
1013text-index-title =
1014 element text:index-title {
1015 common-section-attlist, index-content-main*
1016 }
1017text-table-of-content =
1018 element text:table-of-content {
1019 common-section-attlist,
1020 text-table-of-content-source,
1021 text-index-body
1022 }
1023text-table-of-content-source =
1024 element text:table-of-content-source {
1025 text-table-of-content-source-attlist,
1026 text-index-title-template?,
1027 text-table-of-content-entry-template*,
1028 text-index-source-styles*
1029 }
1030text-table-of-content-source-attlist =
1031 attribute text:outline-level { positiveInteger }?
1032 & attribute text:use-outline-level { boolean }?
1033 & attribute text:use-index-marks { boolean }?
1034 & attribute text:use-index-source-styles { boolean }?
1035 & attribute text:index-scope { "document" | "chapter" }?
1036 & attribute text:relative-tab-stop-position { boolean }?
1037text-table-of-content-entry-template =
1038 element text:table-of-content-entry-template {
1039 text-table-of-content-entry-template-attlist,
1040 text-table-of-content-children*
1041 }
1042text-table-of-content-children =
1043 text-index-entry-chapter
1044 | text-index-entry-page-number
1045 | text-index-entry-text
1046 | text-index-entry-span
1047 | text-index-entry-tab-stop
1048 | text-index-entry-link-start
1049 | text-index-entry-link-end
1050text-table-of-content-entry-template-attlist =
1051 attribute text:outline-level { positiveInteger }
1052 & attribute text:style-name { styleNameRef }
1053text-illustration-index =
1054 element text:illustration-index {
1055 common-section-attlist,
1056 text-illustration-index-source,
1057 text-index-body
1058 }
1059text-illustration-index-source =
1060 element text:illustration-index-source {
1061 text-illustration-index-source-attrs,
1062 text-index-title-template?,
1063 text-illustration-index-entry-template?
1064 }
1065text-illustration-index-source-attrs =
1066 text-index-scope-attr
1067 & text-relative-tab-stop-position-attr
1068 & attribute text:use-caption { boolean }?
1069 & attribute text:caption-sequence-name { \string }?
1070 & attribute text:caption-sequence-format {
1071 "text" | "category-and-value" | "caption"
1072 }?
1073text-index-scope-attr =
1074 attribute text:index-scope { "document" | "chapter" }?
1075text-relative-tab-stop-position-attr =
1076 attribute text:relative-tab-stop-position { boolean }?
1077text-illustration-index-entry-template =
1078 element text:illustration-index-entry-template {
1079 text-illustration-index-entry-content
1080 }
1081text-illustration-index-entry-content =
1082 text-illustration-index-entry-template-attrs,
1083 (text-index-entry-chapter
1084 | text-index-entry-page-number
1085 | text-index-entry-text
1086 | text-index-entry-span
1087 | text-index-entry-tab-stop)*
1088text-illustration-index-entry-template-attrs =
1089 attribute text:style-name { styleNameRef }
1090text-table-index =
1091 element text:table-index {
1092 common-section-attlist, text-table-index-source, text-index-body
1093 }
1094text-table-index-source =
1095 element text:table-index-source {
1096 text-illustration-index-source-attrs,
1097 text-index-title-template?,
1098 text-table-index-entry-template?
1099 }
1100text-table-index-entry-template =
1101 element text:table-index-entry-template {
1102 text-illustration-index-entry-content
1103 }
1104text-object-index =
1105 element text:object-index {
1106 common-section-attlist, text-object-index-source, text-index-body
1107 }
1108text-object-index-source =
1109 element text:object-index-source {
1110 text-object-index-source-attrs,
1111 text-index-title-template?,
1112 text-object-index-entry-template?
1113 }
1114text-object-index-source-attrs =
1115 text-index-scope-attr
1116 & text-relative-tab-stop-position-attr
1117 & attribute text:use-spreadsheet-objects { boolean }?
1118 & attribute text:use-math-objects { boolean }?
1119 & attribute text:use-draw-objects { boolean }?
1120 & attribute text:use-chart-objects { boolean }?
1121 & attribute text:use-other-objects { boolean }?
1122text-object-index-entry-template =
1123 element text:object-index-entry-template {
1124 text-illustration-index-entry-content
1125 }
1126text-user-index =
1127 element text:user-index {
1128 common-section-attlist, text-user-index-source, text-index-body
1129 }
1130text-user-index-source =
1131 element text:user-index-source {
1132 text-user-index-source-attr,
1133 text-index-title-template?,
1134 text-user-index-entry-template*,
1135 text-index-source-styles*
1136 }
1137text-user-index-source-attr =
1138 text-index-scope-attr
1139 & text-relative-tab-stop-position-attr
1140 & attribute text:use-index-marks { boolean }?
1141 & attribute text:use-index-source-styles { boolean }?
1142 & attribute text:use-graphics { boolean }?
1143 & attribute text:use-tables { boolean }?
1144 & attribute text:use-floating-frames { boolean }?
1145 & attribute text:use-objects { boolean }?
1146 & attribute text:copy-outline-levels { boolean }?
1147 & attribute text:index-name { \string }
1148text-user-index-entry-template =
1149 element text:user-index-entry-template {
1150 text-user-index-entry-template-attrs,
1151 (text-index-entry-chapter
1152 | text-index-entry-page-number
1153 | text-index-entry-text
1154 | text-index-entry-span
1155 | text-index-entry-tab-stop)*
1156 }
1157text-user-index-entry-template-attrs =
1158 attribute text:outline-level { positiveInteger }
1159 & attribute text:style-name { styleNameRef }
1160text-alphabetical-index =
1161 element text:alphabetical-index {
1162 common-section-attlist,
1163 text-alphabetical-index-source,
1164 text-index-body
1165 }
1166text-alphabetical-index-source =
1167 element text:alphabetical-index-source {
1168 text-alphabetical-index-source-attrs,
1169 text-index-title-template?,
1170 text-alphabetical-index-entry-template*
1171 }
1172text-alphabetical-index-source-attrs =
1173 text-index-scope-attr
1174 & text-relative-tab-stop-position-attr
1175 & attribute text:ignore-case { boolean }?
1176 & attribute text:main-entry-style-name { styleNameRef }?
1177 & attribute text:alphabetical-separators { boolean }?
1178 & attribute text:combine-entries { boolean }?
1179 & attribute text:combine-entries-with-dash { boolean }?
1180 & attribute text:combine-entries-with-pp { boolean }?
1181 & attribute text:use-keys-as-entries { boolean }?
1182 & attribute text:capitalize-entries { boolean }?
1183 & attribute text:comma-separated { boolean }?
1184 & attribute fo:language { languageCode }?
1185 & attribute fo:country { countryCode }?
1186 & attribute fo:script { scriptCode }?
1187 & attribute style:rfc-language-tag { language }?
1188 & attribute text:sort-algorithm { \string }?
1189text-alphabetical-index-auto-mark-file =
1190 element text:alphabetical-index-auto-mark-file {
1191 attribute xlink:type { "simple" },
1192 attribute xlink:href { anyIRI }
1193 }
1194text-alphabetical-index-entry-template =
1195 element text:alphabetical-index-entry-template {
1196 text-alphabetical-index-entry-template-attrs,
1197 (text-index-entry-chapter
1198 | text-index-entry-page-number
1199 | text-index-entry-text
1200 | text-index-entry-span
1201 | text-index-entry-tab-stop)*
1202 }
1203text-alphabetical-index-entry-template-attrs =
1204 attribute text:outline-level { "1" | "2" | "3" | "separator" }
1205 & attribute text:style-name { styleNameRef }
1206text-bibliography =
1207 element text:bibliography {
1208 common-section-attlist, text-bibliography-source, text-index-body
1209 }
1210text-bibliography-source =
1211 element text:bibliography-source {
1212 text-index-title-template?, text-bibliography-entry-template*
1213 }
1214text-bibliography-entry-template =
1215 element text:bibliography-entry-template {
1216 text-bibliography-entry-template-attrs,
1217 (text-index-entry-span
1218 | text-index-entry-tab-stop
1219 | text-index-entry-bibliography)*
1220 }
1221text-bibliography-entry-template-attrs =
1222 attribute text:bibliography-type { text-bibliography-types }
1223 & attribute text:style-name { styleNameRef }
1224text-index-source-styles =
1225 element text:index-source-styles {
1226 attribute text:outline-level { positiveInteger },
1227 text-index-source-style*
1228 }
1229text-index-source-style =
1230 element text:index-source-style {
1231 attribute text:style-name { styleName },
1232 empty
1233 }
1234text-index-title-template =
1235 element text:index-title-template {
1236 attribute text:style-name { styleNameRef }?,
1237 text
1238 }
1239text-index-entry-chapter =
1240 element text:index-entry-chapter {
1241 attribute text:style-name { styleNameRef }?,
1242 text-index-entry-chapter-attrs
1243 }
1244text-index-entry-chapter-attrs =
1245 attribute text:display {
1246 "name"
1247 | "number"
1248 | "number-and-name"
1249 | "plain-number"
1250 | "plain-number-and-name"
1251 }?
1252 & attribute text:outline-level { positiveInteger }?
1253text-index-entry-text =
1254 element text:index-entry-text {
1255 attribute text:style-name { styleNameRef }?
1256 }
1257text-index-entry-page-number =
1258 element text:index-entry-page-number {
1259 attribute text:style-name { styleNameRef }?
1260 }
1261text-index-entry-span =
1262 element text:index-entry-span {
1263 attribute text:style-name { styleNameRef }?,
1264 text
1265 }
1266text-index-entry-bibliography =
1267 element text:index-entry-bibliography {
1268 text-index-entry-bibliography-attrs
1269 }
1270text-index-entry-bibliography-attrs =
1271 attribute text:style-name { styleNameRef }?
1272 & attribute text:bibliography-data-field {
1273 "address"
1274 | "annote"
1275 | "author"
1276 | "bibliography-type"
1277 | "booktitle"
1278 | "chapter"
1279 | "custom1"
1280 | "custom2"
1281 | "custom3"
1282 | "custom4"
1283 | "custom5"
1284 | "edition"
1285 | "editor"
1286 | "howpublished"
1287 | "identifier"
1288 | "institution"
1289 | "isbn"
1290 | "issn"
1291 | "journal"
1292 | "month"
1293 | "note"
1294 | "number"
1295 | "organizations"
1296 | "pages"
1297 | "publisher"
1298 | "report-type"
1299 | "school"
1300 | "series"
1301 | "title"
1302 | "url"
1303 | "volume"
1304 | "year"
1305 }
1306text-index-entry-tab-stop =
1307 element text:index-entry-tab-stop {
1308 attribute text:style-name { styleNameRef }?,
1309 text-index-entry-tab-stop-attrs
1310 }
1311text-index-entry-tab-stop-attrs =
1312 attribute style:leader-char { character }?
1313 & (attribute style:type { "right" }
1314 | (attribute style:type { "left" },
1315 attribute style:position { length }))
1316text-index-entry-link-start =
1317 element text:index-entry-link-start {
1318 attribute text:style-name { styleNameRef }?
1319 }
1320text-index-entry-link-end =
1321 element text:index-entry-link-end {
1322 attribute text:style-name { styleNameRef }?
1323 }
1324table-table =
1325 element table:table {
1326 table-table-attlist,
1327 table-title?,
1328 table-desc?,
1329 table-table-source?,
1330 office-dde-source?,
1331 table-scenario?,
1332 office-forms?,
1333 table-shapes?,
1334 table-columns-and-groups,
1335 table-rows-and-groups,
1336 table-named-expressions?
1337 }
1338table-columns-and-groups =
1339 (table-table-column-group | table-columns-no-group)+
1340table-columns-no-group =
1341 (table-columns, (table-table-header-columns, table-columns?)?)
1342 | (table-table-header-columns, table-columns?)
1343table-columns = table-table-columns | table-table-column+
1344table-rows-and-groups = (table-table-row-group | table-rows-no-group)+
1345table-rows-no-group =
1346 (table-rows, (table-table-header-rows, table-rows?)?)
1347 | (table-table-header-rows, table-rows?)
1348table-rows =
1349 table-table-rows | (text-soft-page-break?, table-table-row)+
1350table-table-attlist =
1351 attribute table:name { \string }?
1352 & attribute table:style-name { styleNameRef }?
1353 & attribute table:template-name { \string }?
1354 & attribute table:use-first-row-styles { boolean }?
1355 & attribute table:use-last-row-styles { boolean }?
1356 & attribute table:use-first-column-styles { boolean }?
1357 & attribute table:use-last-column-styles { boolean }?
1358 & attribute table:use-banding-rows-styles { boolean }?
1359 & attribute table:use-banding-columns-styles { boolean }?
1360 & attribute table:protected { boolean }?
1361 & attribute table:protection-key { \string }?
1362 & attribute table:protection-key-digest-algorithm { anyIRI }?
1363 & attribute table:print { boolean }?
1364 & attribute table:print-ranges { cellRangeAddressList }?
1365 & xml-id?
1366 & attribute table:is-sub-table { boolean }?
1367table-title = element table:title { text }
1368table-desc = element table:desc { text }
1369table-table-row =
1370 element table:table-row {
1371 table-table-row-attlist,
1372 (table-table-cell | table-covered-table-cell)+
1373 }
1374table-table-row-attlist =
1375 attribute table:number-rows-repeated { positiveInteger }?
1376 & attribute table:style-name { styleNameRef }?
1377 & attribute table:default-cell-style-name { styleNameRef }?
1378 & attribute table:visibility { table-visibility-value }?
1379 & xml-id?
1380table-visibility-value = "visible" | "collapse" | "filter"
1381table-table-cell =
1382 element table:table-cell {
1383 table-table-cell-attlist,
1384 table-table-cell-attlist-extra,
1385 table-table-cell-content
1386 }
1387table-covered-table-cell =
1388 element table:covered-table-cell {
1389 table-table-cell-attlist, table-table-cell-content
1390 }
1391table-table-cell-content =
1392 table-cell-range-source?,
1393 office-annotation?,
1394 table-detective?,
1395 text-content*
1396table-table-cell-attlist =
1397 attribute table:number-columns-repeated { positiveInteger }?
1398 & attribute table:style-name { styleNameRef }?
1399 & attribute table:content-validation-name { \string }?
1400 & attribute table:formula { \string }?
1401 & common-value-and-type-attlist?
1402 & attribute table:protect { boolean }?
1403 & attribute table:protected { boolean }?
1404 & xml-id?
1405 & common-in-content-meta-attlist?
1406table-table-cell-attlist-extra =
1407 attribute table:number-columns-spanned { positiveInteger }?
1408 & attribute table:number-rows-spanned { positiveInteger }?
1409 & attribute table:number-matrix-columns-spanned { positiveInteger }?
1410 & attribute table:number-matrix-rows-spanned { positiveInteger }?
1411table-table-column =
1412 element table:table-column { table-table-column-attlist, empty }
1413table-table-column-attlist =
1414 attribute table:number-columns-repeated { positiveInteger }?
1415 & attribute table:style-name { styleNameRef }?
1416 & attribute table:visibility { table-visibility-value }?
1417 & attribute table:default-cell-style-name { styleNameRef }?
1418 & xml-id?
1419table-table-header-columns =
1420 element table:table-header-columns { table-table-column+ }
1421table-table-columns =
1422 element table:table-columns { table-table-column+ }
1423table-table-column-group =
1424 element table:table-column-group {
1425 table-table-column-group-attlist, table-columns-and-groups
1426 }
1427table-table-column-group-attlist = attribute table:display { boolean }?
1428table-table-header-rows =
1429 element table:table-header-rows {
1430 (text-soft-page-break?, table-table-row)+
1431 }
1432table-table-rows =
1433 element table:table-rows { (text-soft-page-break?, table-table-row)+ }
1434table-table-row-group =
1435 element table:table-row-group {
1436 table-table-row-group-attlist, table-rows-and-groups
1437 }
1438table-table-row-group-attlist = attribute table:display { boolean }?
1439cellAddress =
1440 xsd:string {
1441 pattern = "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+"
1442 }
1443cellRangeAddress =
1444 xsd:string {
1445 pattern =
1446 "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?"
1447 }
1448 | xsd:string {
1449 pattern =
1450 "($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+"
1451 }
1452 | xsd:string {
1453 pattern =
1454 "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+"
1455 }
1456cellRangeAddressList =
1457 xsd:string
1458 >> dc:description [
1459 'Value is a space separated list of "cellRangeAddress" patterns'
1460 ]
1461table-table-source =
1462 element table:table-source {
1463 table-table-source-attlist, table-linked-source-attlist, empty
1464 }
1465table-table-source-attlist =
1466 attribute table:mode { "copy-all" | "copy-results-only" }?
1467 & attribute table:table-name { \string }?
1468table-linked-source-attlist =
1469 attribute xlink:type { "simple" }
1470 & attribute xlink:href { anyIRI }
1471 & attribute xlink:actuate { "onRequest" }?
1472 & attribute table:filter-name { \string }?
1473 & attribute table:filter-options { \string }?
1474 & attribute table:refresh-delay { duration }?
1475table-scenario =
1476 element table:scenario { table-scenario-attlist, empty }
1477table-scenario-attlist =
1478 attribute table:scenario-ranges { cellRangeAddressList }
1479 & attribute table:is-active { boolean }
1480 & attribute table:display-border { boolean }?
1481 & attribute table:border-color { color }?
1482 & attribute table:copy-back { boolean }?
1483 & attribute table:copy-styles { boolean }?
1484 & attribute table:copy-formulas { boolean }?
1485 & attribute table:comment { \string }?
1486 & attribute table:protected { boolean }?
1487table-shapes = element table:shapes { shape+ }
1488table-cell-range-source =
1489 element table:cell-range-source {
1490 table-table-cell-range-source-attlist,
1491 table-linked-source-attlist,
1492 empty
1493 }
1494table-table-cell-range-source-attlist =
1495 attribute table:name { \string }
1496 & attribute table:last-column-spanned { positiveInteger }
1497 & attribute table:last-row-spanned { positiveInteger }
1498table-detective =
1499 element table:detective { table-highlighted-range*, table-operation* }
1500table-operation =
1501 element table:operation { table-operation-attlist, empty }
1502table-operation-attlist =
1503 attribute table:name {
1504 "trace-dependents"
1505 | "remove-dependents"
1506 | "trace-precedents"
1507 | "remove-precedents"
1508 | "trace-errors"
1509 }
1510 & attribute table:index { nonNegativeInteger }
1511table-highlighted-range =
1512 element table:highlighted-range {
1513 (table-highlighted-range-attlist
1514 | table-highlighted-range-attlist-invalid),
1515 empty
1516 }
1517table-highlighted-range-attlist =
1518 attribute table:cell-range-address { cellRangeAddress }?
1519 & attribute table:direction {
1520 "from-another-table" | "to-another-table" | "from-same-table"
1521 }
1522 & attribute table:contains-error { boolean }?
1523table-highlighted-range-attlist-invalid =
1524 attribute table:marked-invalid { boolean }
1525office-spreadsheet-attlist =
1526 attribute table:structure-protected { boolean }?,
1527 attribute table:protection-key { \string }?,
1528 attribute table:protection-key-digest-algorithm { anyIRI }?
1529table-calculation-settings =
1530 element table:calculation-settings {
1531 table-calculation-setting-attlist,
1532 table-null-date?,
1533 table-iteration?
1534 }
1535table-calculation-setting-attlist =
1536 attribute table:case-sensitive { boolean }?
1537 & attribute table:precision-as-shown { boolean }?
1538 & attribute table:search-criteria-must-apply-to-whole-cell {
1539 boolean
1540 }?
1541 & attribute table:automatic-find-labels { boolean }?
1542 & attribute table:use-regular-expressions { boolean }?
1543 & attribute table:use-wildcards { boolean }?
1544 & attribute table:null-year { positiveInteger }?
1545table-null-date =
1546 element table:null-date {
1547 attribute table:value-type { "date" }?,
1548 attribute table:date-value { date }?,
1549 empty
1550 }
1551table-iteration =
1552 element table:iteration {
1553 attribute table:status { "enable" | "disable" }?,
1554 attribute table:steps { positiveInteger }?,
1555 attribute table:maximum-difference { double }?,
1556 empty
1557 }
1558table-content-validations =
1559 element table:content-validations { table-content-validation+ }
1560table-content-validation =
1561 element table:content-validation {
1562 table-validation-attlist,
1563 table-help-message?,
1564 (table-error-message | (table-error-macro, office-event-listeners))?
1565 }
1566table-validation-attlist =
1567 attribute table:name { \string }
1568 & attribute table:condition { \string }?
1569 & attribute table:base-cell-address { cellAddress }?
1570 & attribute table:allow-empty-cell { boolean }?
1571 & attribute table:display-list {
1572 "none" | "unsorted" | "sort-ascending"
1573 }?
1574table-help-message =
1575 element table:help-message {
1576 attribute table:title { \string }?,
1577 attribute table:display { boolean }?,
1578 text-p*
1579 }
1580table-error-message =
1581 element table:error-message {
1582 attribute table:title { \string }?,
1583 attribute table:display { boolean }?,
1584 attribute table:message-type {
1585 "stop" | "warning" | "information"
1586 }?,
1587 text-p*
1588 }
1589table-error-macro =
1590 element table:error-macro {
1591 attribute table:execute { boolean }?
1592 }
1593table-label-ranges = element table:label-ranges { table-label-range* }
1594table-label-range =
1595 element table:label-range { table-label-range-attlist, empty }
1596table-label-range-attlist =
1597 attribute table:label-cell-range-address { cellRangeAddress }
1598 & attribute table:data-cell-range-address { cellRangeAddress }
1599 & attribute table:orientation { "column" | "row" }
1600table-named-expressions =
1601 element table:named-expressions {
1602 (table-named-range | table-named-expression)*
1603 }
1604table-named-range =
1605 element table:named-range { table-named-range-attlist, empty }
1606table-named-range-attlist =
1607 attribute table:name { \string },
1608 attribute table:cell-range-address { cellRangeAddress },
1609 attribute table:base-cell-address { cellAddress }?,
1610 attribute table:range-usable-as {
1611 "none"
1612 | list {
1613 ("print-range" | "filter" | "repeat-row" | "repeat-column")+
1614 }
1615 }?
1616table-named-expression =
1617 element table:named-expression {
1618 table-named-expression-attlist, empty
1619 }
1620table-named-expression-attlist =
1621 attribute table:name { \string },
1622 attribute table:expression { \string },
1623 attribute table:base-cell-address { cellAddress }?
1624table-database-ranges =
1625 element table:database-ranges { table-database-range* }
1626table-database-range =
1627 element table:database-range {
1628 table-database-range-attlist,
1629 (table-database-source-sql
1630 | table-database-source-table
1631 | table-database-source-query)?,
1632 table-filter?,
1633 table-sort?,
1634 table-subtotal-rules?
1635 }
1636table-database-range-attlist =
1637 attribute table:name { \string }?
1638 & attribute table:is-selection { boolean }?
1639 & attribute table:on-update-keep-styles { boolean }?
1640 & attribute table:on-update-keep-size { boolean }?
1641 & attribute table:has-persistent-data { boolean }?
1642 & attribute table:orientation { "column" | "row" }?
1643 & attribute table:contains-header { boolean }?
1644 & attribute table:display-filter-buttons { boolean }?
1645 & attribute table:target-range-address { cellRangeAddress }
1646 & attribute table:refresh-delay { boolean }?
1647table-database-source-sql =
1648 element table:database-source-sql {
1649 table-database-source-sql-attlist, empty
1650 }
1651table-database-source-sql-attlist =
1652 attribute table:database-name { \string }
1653 & attribute table:sql-statement { \string }
1654 & attribute table:parse-sql-statement { boolean }?
1655table-database-source-query =
1656 element table:database-source-table {
1657 table-database-source-table-attlist, empty
1658 }
1659table-database-source-table-attlist =
1660 attribute table:database-name { \string }
1661 & attribute table:database-table-name { \string }
1662table-database-source-table =
1663 element table:database-source-query {
1664 table-database-source-query-attlist, empty
1665 }
1666table-database-source-query-attlist =
1667 attribute table:database-name { \string }
1668 & attribute table:query-name { \string }
1669table-sort = element table:sort { table-sort-attlist, table-sort-by+ }
1670table-sort-attlist =
1671 attribute table:bind-styles-to-content { boolean }?
1672 & attribute table:target-range-address { cellRangeAddress }?
1673 & attribute table:case-sensitive { boolean }?
1674 & attribute table:language { languageCode }?
1675 & attribute table:country { countryCode }?
1676 & attribute table:script { scriptCode }?
1677 & attribute table:rfc-language-tag { language }?
1678 & attribute table:algorithm { \string }?
1679 & attribute table:embedded-number-behavior {
1680 "alpha-numeric" | "integer" | "double"
1681 }?
1682table-sort-by = element table:sort-by { table-sort-by-attlist, empty }
1683table-sort-by-attlist =
1684 attribute table:field-number { nonNegativeInteger }
1685 & attribute table:data-type {
1686 "text" | "number" | "automatic" | \string
1687 }?
1688 & attribute table:order { "ascending" | "descending" }?
1689table-subtotal-rules =
1690 element table:subtotal-rules {
1691 table-subtotal-rules-attlist,
1692 table-sort-groups?,
1693 table-subtotal-rule*
1694 }
1695table-subtotal-rules-attlist =
1696 attribute table:bind-styles-to-content { boolean }?
1697 & attribute table:case-sensitive { boolean }?
1698 & attribute table:page-breaks-on-group-change { boolean }?
1699table-sort-groups =
1700 element table:sort-groups { table-sort-groups-attlist, empty }
1701table-sort-groups-attlist =
1702 attribute table:data-type {
1703 "text" | "number" | "automatic" | \string
1704 }?
1705 & attribute table:order { "ascending" | "descending" }?
1706table-subtotal-rule =
1707 element table:subtotal-rule {
1708 table-subtotal-rule-attlist, table-subtotal-field*
1709 }
1710table-subtotal-rule-attlist =
1711 attribute table:group-by-field-number { nonNegativeInteger }
1712table-subtotal-field =
1713 element table:subtotal-field { table-subtotal-field-attlist, empty }
1714table-subtotal-field-attlist =
1715 attribute table:field-number { nonNegativeInteger }
1716 & attribute table:function {
1717 "average"
1718 | "count"
1719 | "countnums"
1720 | "max"
1721 | "min"
1722 | "product"
1723 | "stdev"
1724 | "stdevp"
1725 | "sum"
1726 | "var"
1727 | "varp"
1728 | \string
1729 }
1730table-filter =
1731 element table:filter {
1732 table-filter-attlist,
1733 (table-filter-condition | table-filter-and | table-filter-or)
1734 }
1735table-filter-attlist =
1736 attribute table:target-range-address { cellRangeAddress }?
1737 & attribute table:condition-source { "self" | "cell-range" }?
1738 & attribute table:condition-source-range-address { cellRangeAddress }?
1739 & attribute table:display-duplicates { boolean }?
1740table-filter-and =
1741 element table:filter-and {
1742 (table-filter-or | table-filter-condition)+
1743 }
1744table-filter-or =
1745 element table:filter-or {
1746 (table-filter-and | table-filter-condition)+
1747 }
1748table-filter-condition =
1749 element table:filter-condition {
1750 table-filter-condition-attlist, table-filter-set-item*
1751 }
1752table-filter-condition-attlist =
1753 attribute table:field-number { nonNegativeInteger }
1754 & attribute table:value { \string | double }
1755 & attribute table:operator { \string }
1756 & attribute table:case-sensitive { \string }?
1757 & attribute table:data-type { "text" | "number" }?
1758table-filter-set-item =
1759 element table:filter-set-item {
1760 attribute table:value { \string },
1761 empty
1762 }
1763table-data-pilot-tables =
1764 element table:data-pilot-tables { table-data-pilot-table* }
1765table-data-pilot-table =
1766 element table:data-pilot-table {
1767 table-data-pilot-table-attlist,
1768 (table-database-source-sql
1769 | table-database-source-table
1770 | table-database-source-query
1771 | table-source-service
1772 | table-source-cell-range)?,
1773 table-data-pilot-field+
1774 }
1775table-data-pilot-table-attlist =
1776 attribute table:name { \string }
1777 & attribute table:application-data { \string }?
1778 & attribute table:grand-total { "none" | "row" | "column" | "both" }?
1779 & attribute table:ignore-empty-rows { boolean }?
1780 & attribute table:identify-categories { boolean }?
1781 & attribute table:target-range-address { cellRangeAddress }
1782 & attribute table:buttons { cellRangeAddressList }?
1783 & attribute table:show-filter-button { boolean }?
1784 & attribute table:drill-down-on-double-click { boolean }?
1785table-source-cell-range =
1786 element table:source-cell-range {
1787 table-source-cell-range-attlist, table-filter?
1788 }
1789table-source-cell-range-attlist =
1790 attribute table:cell-range-address { cellRangeAddress }
1791table-source-service =
1792 element table:source-service { table-source-service-attlist, empty }
1793table-source-service-attlist =
1794 attribute table:name { \string }
1795 & attribute table:source-name { \string }
1796 & attribute table:object-name { \string }
1797 & attribute table:user-name { \string }?
1798 & attribute table:password { \string }?
1799table-data-pilot-field =
1800 element table:data-pilot-field {
1801 table-data-pilot-field-attlist,
1802 table-data-pilot-level?,
1803 table-data-pilot-field-reference?,
1804 table-data-pilot-groups?
1805 }
1806table-data-pilot-field-attlist =
1807 attribute table:source-field-name { \string }
1808 & (attribute table:orientation {
1809 "row" | "column" | "data" | "hidden"
1810 }
1811 | (attribute table:orientation { "page" },
1812 attribute table:selected-page { \string }))
1813 & attribute table:is-data-layout-field { \string }?
1814 & attribute table:function {
1815 "auto"
1816 | "average"
1817 | "count"
1818 | "countnums"
1819 | "max"
1820 | "min"
1821 | "product"
1822 | "stdev"
1823 | "stdevp"
1824 | "sum"
1825 | "var"
1826 | "varp"
1827 | \string
1828 }?
1829 & attribute table:used-hierarchy { integer }?
1830table-data-pilot-level =
1831 element table:data-pilot-level {
1832 table-data-pilot-level-attlist,
1833 table-data-pilot-subtotals?,
1834 table-data-pilot-members?,
1835 table-data-pilot-display-info?,
1836 table-data-pilot-sort-info?,
1837 table-data-pilot-layout-info?
1838 }
1839table-data-pilot-level-attlist = attribute table:show-empty { boolean }?
1840table-data-pilot-subtotals =
1841 element table:data-pilot-subtotals { table-data-pilot-subtotal* }
1842table-data-pilot-subtotal =
1843 element table:data-pilot-subtotal {
1844 table-data-pilot-subtotal-attlist, empty
1845 }
1846table-data-pilot-subtotal-attlist =
1847 attribute table:function {
1848 "auto"
1849 | "average"
1850 | "count"
1851 | "countnums"
1852 | "max"
1853 | "min"
1854 | "product"
1855 | "stdev"
1856 | "stdevp"
1857 | "sum"
1858 | "var"
1859 | "varp"
1860 | \string
1861 }
1862table-data-pilot-members =
1863 element table:data-pilot-members { table-data-pilot-member* }
1864table-data-pilot-member =
1865 element table:data-pilot-member {
1866 table-data-pilot-member-attlist, empty
1867 }
1868table-data-pilot-member-attlist =
1869 attribute table:name { \string }
1870 & attribute table:display { boolean }?
1871 & attribute table:show-details { boolean }?
1872table-data-pilot-display-info =
1873 element table:data-pilot-display-info {
1874 table-data-pilot-display-info-attlist, empty
1875 }
1876table-data-pilot-display-info-attlist =
1877 attribute table:enabled { boolean }
1878 & attribute table:data-field { \string }
1879 & attribute table:member-count { nonNegativeInteger }
1880 & attribute table:display-member-mode { "from-top" | "from-bottom" }
1881table-data-pilot-sort-info =
1882 element table:data-pilot-sort-info {
1883 table-data-pilot-sort-info-attlist, empty
1884 }
1885table-data-pilot-sort-info-attlist =
1886 ((attribute table:sort-mode { "data" },
1887 attribute table:data-field { \string })
1888 | attribute table:sort-mode { "none" | "manual" | "name" })
1889 & attribute table:order { "ascending" | "descending" }
1890table-data-pilot-layout-info =
1891 element table:data-pilot-layout-info {
1892 table-data-pilot-layout-info-attlist, empty
1893 }
1894table-data-pilot-layout-info-attlist =
1895 attribute table:layout-mode {
1896 "tabular-layout"
1897 | "outline-subtotals-top"
1898 | "outline-subtotals-bottom"
1899 }
1900 & attribute table:add-empty-lines { boolean }
1901table-data-pilot-field-reference =
1902 element table:data-pilot-field-reference {
1903 table-data-pilot-field-reference-attlist
1904 }
1905table-data-pilot-field-reference-attlist =
1906 attribute table:field-name { \string }
1907 & ((attribute table:member-type { "named" },
1908 attribute table:member-name { \string })
1909 | attribute table:member-type { "previous" | "next" })
1910 & attribute table:type {
1911 "none"
1912 | "member-difference"
1913 | "member-percentage"
1914 | "member-percentage-difference"
1915 | "running-total"
1916 | "row-percentage"
1917 | "column-percentage"
1918 | "total-percentage"
1919 | "index"
1920 }
1921table-data-pilot-groups =
1922 element table:data-pilot-groups {
1923 table-data-pilot-groups-attlist, table-data-pilot-group+
1924 }
1925table-data-pilot-groups-attlist =
1926 attribute table:source-field-name { \string }
1927 & (attribute table:date-start { dateOrDateTime | "auto" }
1928 | attribute table:start { double | "auto" })
1929 & (attribute table:date-end { dateOrDateTime | "auto" }
1930 | attribute table:end { double | "auto" })
1931 & attribute table:step { double }
1932 & attribute table:grouped-by {
1933 "seconds"
1934 | "minutes"
1935 | "hours"
1936 | "days"
1937 | "months"
1938 | "quarters"
1939 | "years"
1940 }
1941table-data-pilot-group =
1942 element table:data-pilot-group {
1943 table-data-pilot-group-attlist, table-data-pilot-group-member+
1944 }
1945table-data-pilot-group-attlist = attribute table:name { \string }
1946table-data-pilot-group-member =
1947 element table:data-pilot-group-member {
1948 table-data-pilot-group-member-attlist
1949 }
1950table-data-pilot-group-member-attlist = attribute table:name { \string }
1951table-consolidation =
1952 element table:consolidation { table-consolidation-attlist, empty }
1953table-consolidation-attlist =
1954 attribute table:function {
1955 "average"
1956 | "count"
1957 | "countnums"
1958 | "max"
1959 | "min"
1960 | "product"
1961 | "stdev"
1962 | "stdevp"
1963 | "sum"
1964 | "var"
1965 | "varp"
1966 | \string
1967 }
1968 & attribute table:source-cell-range-addresses { cellRangeAddressList }
1969 & attribute table:target-cell-address { cellAddress }
1970 & attribute table:use-labels { "none" | "row" | "column" | "both" }?
1971 & attribute table:link-to-source-data { boolean }?
1972table-dde-links = element table:dde-links { table-dde-link+ }
1973table-tracked-changes =
1974 element table:tracked-changes {
1975 table-tracked-changes-attlist,
1976 (table-cell-content-change
1977 | table-insertion
1978 | table-deletion
1979 | table-movement)*
1980 }
1981table-tracked-changes-attlist =
1982 attribute table:track-changes { boolean }?
1983table-insertion =
1984 element table:insertion {
1985 table-insertion-attlist,
1986 common-table-change-attlist,
1987 office-change-info,
1988 table-dependencies?,
1989 table-deletions?
1990 }
1991table-insertion-attlist =
1992 attribute table:type { "row" | "column" | "table" }
1993 & attribute table:position { integer }
1994 & attribute table:count { positiveInteger }?
1995 & attribute table:table { integer }?
1996table-dependencies = element table:dependencies { table-dependency+ }
1997table-dependency =
1998 element table:dependency {
1999 attribute table:id { \string },
2000 empty
2001 }
2002table-deletions =
2003 element table:deletions {
2004 (table-cell-content-deletion | table-change-deletion)+
2005 }
2006table-cell-content-deletion =
2007 element table:cell-content-deletion {
2008 attribute table:id { \string }?,
2009 table-cell-address?,
2010 table-change-track-table-cell?
2011 }
2012table-change-deletion =
2013 element table:change-deletion {
2014 attribute table:id { \string }?,
2015 empty
2016 }
2017table-deletion =
2018 element table:deletion {
2019 table-deletion-attlist,
2020 common-table-change-attlist,
2021 office-change-info,
2022 table-dependencies?,
2023 table-deletions?,
2024 table-cut-offs?
2025 }
2026table-deletion-attlist =
2027 attribute table:type { "row" | "column" | "table" }
2028 & attribute table:position { integer }
2029 & attribute table:table { integer }?
2030 & attribute table:multi-deletion-spanned { integer }?
2031table-cut-offs =
2032 element table:cut-offs {
2033 table-movement-cut-off+
2034 | (table-insertion-cut-off, table-movement-cut-off*)
2035 }
2036table-insertion-cut-off =
2037 element table:insertion-cut-off {
2038 table-insertion-cut-off-attlist, empty
2039 }
2040table-insertion-cut-off-attlist =
2041 attribute table:id { \string }
2042 & attribute table:position { integer }
2043table-movement-cut-off =
2044 element table:movement-cut-off {
2045 table-movement-cut-off-attlist, empty
2046 }
2047table-movement-cut-off-attlist =
2048 attribute table:position { integer }
2049 | (attribute table:start-position { integer },
2050 attribute table:end-position { integer })
2051table-movement =
2052 element table:movement {
2053 common-table-change-attlist,
2054 table-source-range-address,
2055 table-target-range-address,
2056 office-change-info,
2057 table-dependencies?,
2058 table-deletions?
2059 }
2060table-source-range-address =
2061 element table:source-range-address {
2062 common-table-range-attlist, empty
2063 }
2064table-target-range-address =
2065 element table:target-range-address {
2066 common-table-range-attlist, empty
2067 }
2068common-table-range-attlist =
2069 common-table-cell-address-attlist
2070 | common-table-cell-range-address-attlist
2071common-table-cell-address-attlist =
2072 attribute table:column { integer },
2073 attribute table:row { integer },
2074 attribute table:table { integer }
2075common-table-cell-range-address-attlist =
2076 attribute table:start-column { integer },
2077 attribute table:start-row { integer },
2078 attribute table:start-table { integer },
2079 attribute table:end-column { integer },
2080 attribute table:end-row { integer },
2081 attribute table:end-table { integer }
2082table-change-track-table-cell =
2083 element table:change-track-table-cell {
2084 table-change-track-table-cell-attlist, text-p*
2085 }
2086table-change-track-table-cell-attlist =
2087 attribute table:cell-address { cellAddress }?
2088 & attribute table:matrix-covered { boolean }?
2089 & attribute table:formula { \string }?
2090 & attribute table:number-matrix-columns-spanned { positiveInteger }?
2091 & attribute table:number-matrix-rows-spanned { positiveInteger }?
2092 & common-value-and-type-attlist?
2093table-cell-content-change =
2094 element table:cell-content-change {
2095 common-table-change-attlist,
2096 table-cell-address,
2097 office-change-info,
2098 table-dependencies?,
2099 table-deletions?,
2100 table-previous
2101 }
2102table-cell-address =
2103 element table:cell-address {
2104 common-table-cell-address-attlist, empty
2105 }
2106table-previous =
2107 element table:previous {
2108 attribute table:id { \string }?,
2109 table-change-track-table-cell
2110 }
2111common-table-change-attlist =
2112 attribute table:id { \string }
2113 & attribute table:acceptance-state {
2114 "accepted" | "rejected" | "pending"
2115 }?
2116 & attribute table:rejecting-change-id { \string }?
2117style-handout-master =
2118 element style:handout-master {
2119 common-presentation-header-footer-attlist,
2120 style-handout-master-attlist,
2121 shape*
2122 }
2123style-handout-master-attlist =
2124 attribute presentation:presentation-page-layout-name { styleNameRef }?
2125 & attribute style:page-layout-name { styleNameRef }
2126 & attribute draw:style-name { styleNameRef }?
2127draw-layer-set = element draw:layer-set { draw-layer* }
2128draw-layer =
2129 element draw:layer { draw-layer-attlist, svg-title?, svg-desc? }
2130draw-layer-attlist =
2131 attribute draw:name { \string }
2132 & attribute draw:protected { boolean }?
2133 & attribute draw:display { "always" | "screen" | "printer" | "none" }?
2134draw-page =
2135 element draw:page {
2136 common-presentation-header-footer-attlist,
2137 draw-page-attlist,
2138 svg-title?,
2139 svg-desc?,
2140 draw-layer-set?,
2141 office-forms?,
2142 shape*,
2143 (presentation-animations | animation-element)?,
2144 presentation-notes?
2145 }
2146draw-page-attlist =
2147 attribute draw:name { \string }?
2148 & attribute draw:style-name { styleNameRef }?
2149 & attribute draw:master-page-name { styleNameRef }
2150 & attribute presentation:presentation-page-layout-name {
2151 styleNameRef
2152 }?
2153 & (xml-id,
2154 attribute draw:id { NCName }?)?
2155 & attribute draw:nav-order { IDREFS }?
2156common-presentation-header-footer-attlist =
2157 attribute presentation:use-header-name { \string }?
2158 & attribute presentation:use-footer-name { \string }?
2159 & attribute presentation:use-date-time-name { \string }?
2160shape = shape-instance | draw-a
2161shape-instance =
2162 draw-rect
2163 | draw-line
2164 | draw-polyline
2165 | draw-polygon
2166 | draw-regular-polygon
2167 | draw-path
2168 | draw-circle
2169 | draw-ellipse
2170 | draw-g
2171 | draw-page-thumbnail
2172 | draw-frame
2173 | draw-measure
2174 | draw-caption
2175 | draw-connector
2176 | draw-control
2177 | dr3d-scene
2178 | draw-custom-shape
2179draw-rect =
2180 element draw:rect {
2181 draw-rect-attlist,
2182 common-draw-position-attlist,
2183 common-draw-size-attlist,
2184 common-draw-shape-with-text-and-styles-attlist,
2185 common-draw-caption-id-attlist,
2186 svg-title?,
2187 svg-desc?,
2188 office-event-listeners?,
2189 draw-glue-point*,
2190 draw-text
2191 }
2192draw-rect-attlist =
2193 attribute draw:corner-radius { nonNegativeLength }?
2194 | (attribute svg:rx { nonNegativeLength }?,
2195 attribute svg:ry { nonNegativeLength }?)
2196draw-line =
2197 element draw:line {
2198 draw-line-attlist,
2199 common-draw-shape-with-text-and-styles-attlist,
2200 common-draw-caption-id-attlist,
2201 svg-title?,
2202 svg-desc?,
2203 office-event-listeners?,
2204 draw-glue-point*,
2205 draw-text
2206 }
2207draw-line-attlist =
2208 attribute svg:x1 { coordinate }
2209 & attribute svg:y1 { coordinate }
2210 & attribute svg:x2 { coordinate }
2211 & attribute svg:y2 { coordinate }
2212draw-polyline =
2213 element draw:polyline {
2214 common-draw-points-attlist,
2215 common-draw-position-attlist,
2216 common-draw-size-attlist,
2217 common-draw-viewbox-attlist,
2218 common-draw-shape-with-text-and-styles-attlist,
2219 common-draw-caption-id-attlist,
2220 svg-title?,
2221 svg-desc?,
2222 office-event-listeners?,
2223 draw-glue-point*,
2224 draw-text
2225 }
2226common-draw-points-attlist = attribute draw:points { points }
2227draw-polygon =
2228 element draw:polygon {
2229 common-draw-points-attlist,
2230 common-draw-position-attlist,
2231 common-draw-size-attlist,
2232 common-draw-viewbox-attlist,
2233 common-draw-shape-with-text-and-styles-attlist,
2234 common-draw-caption-id-attlist,
2235 svg-title?,
2236 svg-desc?,
2237 office-event-listeners?,
2238 draw-glue-point*,
2239 draw-text
2240 }
2241draw-regular-polygon =
2242 element draw:regular-polygon {
2243 draw-regular-polygon-attlist,
2244 common-draw-position-attlist,
2245 common-draw-size-attlist,
2246 common-draw-shape-with-text-and-styles-attlist,
2247 common-draw-caption-id-attlist,
2248 svg-title?,
2249 svg-desc?,
2250 office-event-listeners?,
2251 draw-glue-point*,
2252 draw-text
2253 }
2254draw-regular-polygon-attlist =
2255 (attribute draw:concave { "false" }
2256 | (attribute draw:concave { "true" },
2257 draw-regular-polygon-sharpness-attlist))
2258 & attribute draw:corners { positiveInteger }
2259draw-regular-polygon-sharpness-attlist =
2260 attribute draw:sharpness { percent }
2261draw-path =
2262 element draw:path {
2263 common-draw-path-data-attlist,
2264 common-draw-position-attlist,
2265 common-draw-size-attlist,
2266 common-draw-viewbox-attlist,
2267 common-draw-shape-with-text-and-styles-attlist,
2268 common-draw-caption-id-attlist,
2269 svg-title?,
2270 svg-desc?,
2271 office-event-listeners?,
2272 draw-glue-point*,
2273 draw-text
2274 }
2275common-draw-path-data-attlist = attribute svg:d { pathData }
2276draw-circle =
2277 element draw:circle {
2278 ((draw-circle-attlist, common-draw-circle-ellipse-pos-attlist)
2279 | (common-draw-position-attlist, common-draw-size-attlist)),
2280 common-draw-circle-ellipse-attlist,
2281 common-draw-shape-with-text-and-styles-attlist,
2282 common-draw-caption-id-attlist,
2283 svg-title?,
2284 svg-desc?,
2285 office-event-listeners?,
2286 draw-glue-point*,
2287 draw-text
2288 }
2289common-draw-circle-ellipse-pos-attlist =
2290 attribute svg:cx { coordinate },
2291 attribute svg:cy { coordinate }
2292draw-circle-attlist = attribute svg:r { length }
2293common-draw-circle-ellipse-attlist =
2294 attribute draw:kind { "full" | "section" | "cut" | "arc" }?
2295 & attribute draw:start-angle { angle }?
2296 & attribute draw:end-angle { angle }?
2297draw-ellipse =
2298 element draw:ellipse {
2299 ((draw-ellipse-attlist, common-draw-circle-ellipse-pos-attlist)
2300 | (common-draw-position-attlist, common-draw-size-attlist)),
2301 common-draw-circle-ellipse-attlist,
2302 common-draw-shape-with-text-and-styles-attlist,
2303 common-draw-caption-id-attlist,
2304 svg-title?,
2305 svg-desc?,
2306 office-event-listeners?,
2307 draw-glue-point*,
2308 draw-text
2309 }
2310draw-ellipse-attlist =
2311 attribute svg:rx { length },
2312 attribute svg:ry { length }
2313draw-connector =
2314 element draw:connector {
2315 draw-connector-attlist,
2316 common-draw-shape-with-text-and-styles-attlist,
2317 common-draw-caption-id-attlist,
2318 common-draw-viewbox-attlist,
2319 svg-title?,
2320 svg-desc?,
2321 office-event-listeners?,
2322 draw-glue-point*,
2323 draw-text
2324 }
2325draw-connector-attlist =
2326 attribute draw:type { "standard" | "lines" | "line" | "curve" }?
2327 & (attribute svg:x1 { coordinate },
2328 attribute svg:y1 { coordinate })?
2329 & attribute draw:start-shape { IDREF }?
2330 & attribute draw:start-glue-point { nonNegativeInteger }?
2331 & (attribute svg:x2 { coordinate },
2332 attribute svg:y2 { coordinate })?
2333 & attribute draw:end-shape { IDREF }?
2334 & attribute draw:end-glue-point { nonNegativeInteger }?
2335 & attribute draw:line-skew {
2336 list { length, (length, length?)? }
2337 }?
2338 & attribute svg:d { pathData }?
2339draw-caption =
2340 element draw:caption {
2341 draw-caption-attlist,
2342 common-draw-position-attlist,
2343 common-draw-size-attlist,
2344 common-draw-shape-with-text-and-styles-attlist,
2345 common-draw-caption-id-attlist,
2346 svg-title?,
2347 svg-desc?,
2348 office-event-listeners?,
2349 draw-glue-point*,
2350 draw-text
2351 }
2352draw-caption-attlist =
2353 (attribute draw:caption-point-x { coordinate },
2354 attribute draw:caption-point-y { coordinate })?
2355 & attribute draw:corner-radius { nonNegativeLength }?
2356draw-measure =
2357 element draw:measure {
2358 draw-measure-attlist,
2359 common-draw-shape-with-text-and-styles-attlist,
2360 common-draw-caption-id-attlist,
2361 svg-title?,
2362 svg-desc?,
2363 office-event-listeners?,
2364 draw-glue-point*,
2365 draw-text
2366 }
2367draw-measure-attlist =
2368 attribute svg:x1 { coordinate }
2369 & attribute svg:y1 { coordinate }
2370 & attribute svg:x2 { coordinate }
2371 & attribute svg:y2 { coordinate }
2372draw-control =
2373 element draw:control {
2374 draw-control-attlist,
2375 common-draw-position-attlist,
2376 common-draw-size-attlist,
2377 common-draw-shape-with-text-and-styles-attlist,
2378 common-draw-caption-id-attlist,
2379 svg-title?,
2380 svg-desc?,
2381 draw-glue-point*
2382 }
2383draw-control-attlist = attribute draw:control { IDREF }
2384draw-page-thumbnail =
2385 element draw:page-thumbnail {
2386 draw-page-thumbnail-attlist,
2387 common-draw-position-attlist,
2388 common-draw-size-attlist,
2389 presentation-shape-attlist,
2390 common-draw-shape-with-styles-attlist,
2391 common-draw-caption-id-attlist,
2392 svg-title?,
2393 svg-desc?
2394 }
2395draw-page-thumbnail-attlist =
2396 attribute draw:page-number { positiveInteger }?
2397draw-g =
2398 element draw:g {
2399 draw-g-attlist,
2400 common-draw-z-index-attlist,
2401 common-draw-name-attlist,
2402 common-draw-id-attlist,
2403 common-draw-style-name-attlist,
2404 common-text-spreadsheet-shape-attlist,
2405 common-draw-caption-id-attlist,
2406 svg-title?,
2407 svg-desc?,
2408 office-event-listeners?,
2409 draw-glue-point*,
2410 shape*
2411 }
2412draw-g-attlist = attribute svg:y { coordinate }?
2413common-draw-name-attlist = attribute draw:name { \string }?
2414common-draw-caption-id-attlist = attribute draw:caption-id { IDREF }?
2415common-draw-position-attlist =
2416 attribute svg:x { coordinate }?,
2417 attribute svg:y { coordinate }?
2418common-draw-size-attlist =
2419 attribute svg:width { length }?,
2420 attribute svg:height { length }?
2421common-draw-transform-attlist = attribute draw:transform { \string }?
2422common-draw-viewbox-attlist =
2423 attribute svg:viewBox {
2424 list { integer, integer, integer, integer }
2425 }
2426common-draw-style-name-attlist =
2427 (attribute draw:style-name { styleNameRef }?,
2428 attribute draw:class-names { styleNameRefs }?)
2429 | (attribute presentation:style-name { styleNameRef }?,
2430 attribute presentation:class-names { styleNameRefs }?)
2431common-draw-text-style-name-attlist =
2432 attribute draw:text-style-name { styleNameRef }?
2433common-draw-layer-name-attlist = attribute draw:layer { \string }?
2434common-draw-id-attlist =
2435 (xml-id,
2436 attribute draw:id { NCName }?)?
2437common-draw-z-index-attlist =
2438 attribute draw:z-index { nonNegativeInteger }?
2439common-text-spreadsheet-shape-attlist =
2440 attribute table:end-cell-address { cellAddress }?
2441 & attribute table:end-x { coordinate }?
2442 & attribute table:end-y { coordinate }?
2443 & attribute table:table-background { boolean }?
2444 & common-text-anchor-attlist
2445common-text-anchor-attlist =
2446 attribute text:anchor-type {
2447 "page" | "frame" | "paragraph" | "char" | "as-char"
2448 }?
2449 & attribute text:anchor-page-number { positiveInteger }?
2450draw-text = (text-p | text-list)*
2451common-draw-shape-with-styles-attlist =
2452 common-draw-z-index-attlist,
2453 common-draw-id-attlist,
2454 common-draw-layer-name-attlist,
2455 common-draw-style-name-attlist,
2456 common-draw-transform-attlist,
2457 common-draw-name-attlist,
2458 common-text-spreadsheet-shape-attlist
2459common-draw-shape-with-text-and-styles-attlist =
2460 common-draw-shape-with-styles-attlist,
2461 common-draw-text-style-name-attlist
2462draw-glue-point =
2463 element draw:glue-point { draw-glue-point-attlist, empty }
2464draw-glue-point-attlist =
2465 attribute draw:id { nonNegativeInteger }
2466 & attribute svg:x { distance | percent }
2467 & attribute svg:y { distance | percent }
2468 & attribute draw:align {
2469 "top-left"
2470 | "top"
2471 | "top-right"
2472 | "left"
2473 | "center"
2474 | "right"
2475 | "bottom-left"
2476 | "bottom-right"
2477 }?
2478 & attribute draw:escape-direction {
2479 "auto"
2480 | "left"
2481 | "right"
2482 | "up"
2483 | "down"
2484 | "horizontal"
2485 | "vertical"
2486 }
2487svg-title = element svg:title { text }
2488svg-desc = element svg:desc { text }
2489draw-frame =
2490 element draw:frame {
2491 common-draw-shape-with-text-and-styles-attlist,
2492 common-draw-position-attlist,
2493 common-draw-rel-size-attlist,
2494 common-draw-caption-id-attlist,
2495 presentation-shape-attlist,
2496 draw-frame-attlist,
2497 (draw-text-box
2498 | draw-image
2499 | draw-object
2500 | draw-object-ole
2501 | draw-applet
2502 | draw-floating-frame
2503 | draw-plugin
2504 | table-table)*,
2505 office-event-listeners?,
2506 draw-glue-point*,
2507 draw-image-map?,
2508 svg-title?,
2509 svg-desc?,
2510 (draw-contour-polygon | draw-contour-path)?
2511 }
2512common-draw-rel-size-attlist =
2513 common-draw-size-attlist,
2514 attribute style:rel-width { percent | "scale" | "scale-min" }?,
2515 attribute style:rel-height { percent | "scale" | "scale-min" }?
2516draw-frame-attlist = attribute draw:copy-of { \string }?
2517draw-text-box =
2518 element draw:text-box { draw-text-box-attlist, text-content* }
2519draw-text-box-attlist =
2520 attribute draw:chain-next-name { \string }?
2521 & attribute draw:corner-radius { nonNegativeLength }?
2522 & attribute fo:min-height { length | percent }?
2523 & attribute fo:min-width { length | percent }?
2524 & attribute fo:max-height { length | percent }?
2525 & attribute fo:max-width { length | percent }?
2526 & (xml-id,
2527 attribute text:id { NCName }?)?
2528draw-image =
2529 element draw:image {
2530 draw-image-attlist,
2531 (common-draw-data-attlist | office-binary-data),
2532 draw-text
2533 }
2534common-draw-data-attlist =
2535 attribute xlink:type { "simple" },
2536 attribute xlink:href { anyIRI },
2537 attribute xlink:show { "embed" }?,
2538 attribute xlink:actuate { "onLoad" }?
2539office-binary-data = element office:binary-data { base64Binary }
2540draw-image-attlist =
2541 attribute draw:filter-name { \string }?
2542 & xml-id?
2543draw-object =
2544 element draw:object {
2545 draw-object-attlist,
2546 (common-draw-data-attlist | office-document | math-math)
2547 }
2548draw-object-ole =
2549 element draw:object-ole {
2550 draw-object-ole-attlist,
2551 (common-draw-data-attlist | office-binary-data)
2552 }
2553draw-object-attlist =
2554 attribute draw:notify-on-update-of-ranges {
2555 cellRangeAddressList | \string
2556 }?
2557 & xml-id?
2558draw-object-ole-attlist =
2559 attribute draw:class-id { \string }?
2560 & xml-id?
2561draw-applet =
2562 element draw:applet {
2563 draw-applet-attlist, common-draw-data-attlist?, draw-param*
2564 }
2565draw-applet-attlist =
2566 attribute draw:code { \string }?
2567 & attribute draw:object { \string }?
2568 & attribute draw:archive { \string }?
2569 & attribute draw:may-script { boolean }?
2570 & xml-id?
2571draw-plugin =
2572 element draw:plugin {
2573 draw-plugin-attlist, common-draw-data-attlist, draw-param*
2574 }
2575draw-plugin-attlist =
2576 attribute draw:mime-type { \string }?
2577 & xml-id?
2578draw-param = element draw:param { draw-param-attlist, empty }
2579draw-param-attlist =
2580 attribute draw:name { \string }?
2581 & attribute draw:value { \string }?
2582draw-floating-frame =
2583 element draw:floating-frame {
2584 draw-floating-frame-attlist, common-draw-data-attlist
2585 }
2586draw-floating-frame-attlist =
2587 attribute draw:frame-name { \string }?
2588 & xml-id?
2589draw-contour-polygon =
2590 element draw:contour-polygon {
2591 common-contour-attlist,
2592 common-draw-size-attlist,
2593 common-draw-viewbox-attlist,
2594 common-draw-points-attlist,
2595 empty
2596 }
2597draw-contour-path =
2598 element draw:contour-path {
2599 common-contour-attlist,
2600 common-draw-size-attlist,
2601 common-draw-viewbox-attlist,
2602 common-draw-path-data-attlist,
2603 empty
2604 }
2605common-contour-attlist = attribute draw:recreate-on-edit { boolean }
2606draw-a = element draw:a { draw-a-attlist, shape-instance }
2607draw-a-attlist =
2608 attribute xlink:type { "simple" }
2609 & attribute xlink:href { anyIRI }
2610 & attribute xlink:actuate { "onRequest" }?
2611 & attribute office:target-frame-name { targetFrameName }?
2612 & attribute xlink:show { "new" | "replace" }?
2613 & attribute office:name { \string }?
2614 & attribute office:title { \string }?
2615 & attribute office:server-map { boolean }?
2616 & xml-id?
2617draw-image-map =
2618 element draw:image-map {
2619 (draw-area-rectangle | draw-area-circle | draw-area-polygon)*
2620 }
2621draw-area-rectangle =
2622 element draw:area-rectangle {
2623 common-draw-area-attlist,
2624 attribute svg:x { coordinate },
2625 attribute svg:y { coordinate },
2626 attribute svg:width { length },
2627 attribute svg:height { length },
2628 svg-title?,
2629 svg-desc?,
2630 office-event-listeners?
2631 }
2632draw-area-circle =
2633 element draw:area-circle {
2634 common-draw-area-attlist,
2635 attribute svg:cx { coordinate },
2636 attribute svg:cy { coordinate },
2637 attribute svg:r { length },
2638 svg-title?,
2639 svg-desc?,
2640 office-event-listeners?
2641 }
2642draw-area-polygon =
2643 element draw:area-polygon {
2644 common-draw-area-attlist,
2645 attribute svg:x { coordinate },
2646 attribute svg:y { coordinate },
2647 attribute svg:width { length },
2648 attribute svg:height { length },
2649 common-draw-viewbox-attlist,
2650 common-draw-points-attlist,
2651 svg-title?,
2652 svg-desc?,
2653 office-event-listeners?
2654 }
2655common-draw-area-attlist =
2656 (attribute xlink:type { "simple" },
2657 attribute xlink:href { anyIRI },
2658 attribute office:target-frame-name { targetFrameName }?,
2659 attribute xlink:show { "new" | "replace" }?)?
2660 & attribute office:name { \string }?
2661 & attribute draw:nohref { "nohref" }?
2662dr3d-scene =
2663 element dr3d:scene {
2664 dr3d-scene-attlist,
2665 common-draw-position-attlist,
2666 common-draw-size-attlist,
2667 common-draw-style-name-attlist,
2668 common-draw-z-index-attlist,
2669 common-draw-id-attlist,
2670 common-draw-layer-name-attlist,
2671 common-text-spreadsheet-shape-attlist,
2672 common-dr3d-transform-attlist,
2673 common-draw-caption-id-attlist,
2674 svg-title?,
2675 svg-desc?,
2676 dr3d-light*,
2677 shapes3d*,
2678 draw-glue-point*
2679 }
2680shapes3d =
2681 dr3d-scene | dr3d-extrude | dr3d-sphere | dr3d-rotate | dr3d-cube
2682dr3d-scene-attlist =
2683 attribute dr3d:vrp { vector3D }?
2684 & attribute dr3d:vpn { vector3D }?
2685 & attribute dr3d:vup { vector3D }?
2686 & attribute dr3d:projection { "parallel" | "perspective" }?
2687 & attribute dr3d:distance { length }?
2688 & attribute dr3d:focal-length { length }?
2689 & attribute dr3d:shadow-slant { angle }?
2690 & attribute dr3d:shade-mode {
2691 "flat" | "phong" | "gouraud" | "draft"
2692 }?
2693 & attribute dr3d:ambient-color { color }?
2694 & attribute dr3d:lighting-mode { boolean }?
2695common-dr3d-transform-attlist = attribute dr3d:transform { \string }?
2696dr3d-light = element dr3d:light { dr3d-light-attlist, empty }
2697dr3d-light-attlist =
2698 attribute dr3d:diffuse-color { color }?
2699 & attribute dr3d:direction { vector3D }
2700 & attribute dr3d:enabled { boolean }?
2701 & attribute dr3d:specular { boolean }?
2702dr3d-cube =
2703 element dr3d:cube {
2704 dr3d-cube-attlist,
2705 common-draw-z-index-attlist,
2706 common-draw-id-attlist,
2707 common-draw-layer-name-attlist,
2708 common-draw-style-name-attlist,
2709 common-dr3d-transform-attlist,
2710 empty
2711 }
2712dr3d-cube-attlist =
2713 attribute dr3d:min-edge { vector3D }?,
2714 attribute dr3d:max-edge { vector3D }?
2715dr3d-sphere =
2716 element dr3d:sphere {
2717 dr3d-sphere-attlist,
2718 common-draw-z-index-attlist,
2719 common-draw-id-attlist,
2720 common-draw-layer-name-attlist,
2721 common-draw-style-name-attlist,
2722 common-dr3d-transform-attlist,
2723 empty
2724 }
2725dr3d-sphere-attlist =
2726 attribute dr3d:center { vector3D }?
2727 & attribute dr3d:size { vector3D }?
2728dr3d-extrude =
2729 element dr3d:extrude {
2730 common-draw-path-data-attlist,
2731 common-draw-viewbox-attlist,
2732 common-draw-id-attlist,
2733 common-draw-z-index-attlist,
2734 common-draw-layer-name-attlist,
2735 common-draw-style-name-attlist,
2736 common-dr3d-transform-attlist,
2737 empty
2738 }
2739dr3d-rotate =
2740 element dr3d:rotate {
2741 common-draw-viewbox-attlist,
2742 common-draw-path-data-attlist,
2743 common-draw-z-index-attlist,
2744 common-draw-id-attlist,
2745 common-draw-layer-name-attlist,
2746 common-draw-style-name-attlist,
2747 common-dr3d-transform-attlist,
2748 empty
2749 }
2750draw-custom-shape =
2751 element draw:custom-shape {
2752 draw-custom-shape-attlist,
2753 common-draw-position-attlist,
2754 common-draw-size-attlist,
2755 common-draw-shape-with-text-and-styles-attlist,
2756 common-draw-caption-id-attlist,
2757 svg-title?,
2758 svg-desc?,
2759 office-event-listeners?,
2760 draw-glue-point*,
2761 draw-text,
2762 draw-enhanced-geometry?
2763 }
2764draw-custom-shape-attlist =
2765 attribute draw:engine { namespacedToken }?
2766 & attribute draw:data { \string }?
2767draw-enhanced-geometry =
2768 element draw:enhanced-geometry {
2769 draw-enhanced-geometry-attlist, draw-equation*, draw-handle*
2770 }
2771draw-enhanced-geometry-attlist =
2772 attribute draw:type { custom-shape-type }?
2773 & attribute svg:viewBox {
2774 list { integer, integer, integer, integer }
2775 }?
2776 & attribute draw:mirror-vertical { boolean }?
2777 & attribute draw:mirror-horizontal { boolean }?
2778 & attribute draw:text-rotate-angle { angle }?
2779 & attribute draw:extrusion-allowed { boolean }?
2780 & attribute draw:text-path-allowed { boolean }?
2781 & attribute draw:concentric-gradient-fill-allowed { boolean }?
2782 & attribute draw:extrusion { boolean }?
2783 & attribute draw:extrusion-brightness { zeroToHundredPercent }?
2784 & attribute draw:extrusion-depth {
2785 list { length, double }
2786 }?
2787 & attribute draw:extrusion-diffusion { percent }?
2788 & attribute draw:extrusion-number-of-line-segments { integer }?
2789 & attribute draw:extrusion-light-face { boolean }?
2790 & attribute draw:extrusion-first-light-harsh { boolean }?
2791 & attribute draw:extrusion-second-light-harsh { boolean }?
2792 & attribute draw:extrusion-first-light-level { zeroToHundredPercent }?
2793 & attribute draw:extrusion-second-light-level {
2794 zeroToHundredPercent
2795 }?
2796 & attribute draw:extrusion-first-light-direction { vector3D }?
2797 & attribute draw:extrusion-second-light-direction { vector3D }?
2798 & attribute draw:extrusion-metal { boolean }?
2799 & attribute dr3d:shade-mode {
2800 "flat" | "phong" | "gouraud" | "draft"
2801 }?
2802 & attribute draw:extrusion-rotation-angle {
2803 list { angle, angle }
2804 }?
2805 & attribute draw:extrusion-rotation-center { vector3D }?
2806 & attribute draw:extrusion-shininess { zeroToHundredPercent }?
2807 & attribute draw:extrusion-skew {
2808 list { double, angle }
2809 }?
2810 & attribute draw:extrusion-specularity { zeroToHundredPercent }?
2811 & attribute dr3d:projection { "parallel" | "perspective" }?
2812 & attribute draw:extrusion-viewpoint { point3D }?
2813 & attribute draw:extrusion-origin {
2814 list { extrusionOrigin, extrusionOrigin }
2815 }?
2816 & attribute draw:extrusion-color { boolean }?
2817 & attribute draw:enhanced-path { \string }?
2818 & attribute draw:path-stretchpoint-x { double }?
2819 & attribute draw:path-stretchpoint-y { double }?
2820 & attribute draw:text-areas { \string }?
2821 & attribute draw:glue-points { \string }?
2822 & attribute draw:glue-point-type {
2823 "none" | "segments" | "rectangle"
2824 }?
2825 & attribute draw:glue-point-leaving-directions { \string }?
2826 & attribute draw:text-path { boolean }?
2827 & attribute draw:text-path-mode { "normal" | "path" | "shape" }?
2828 & attribute draw:text-path-scale { "path" | "shape" }?
2829 & attribute draw:text-path-same-letter-heights { boolean }?
2830 & attribute draw:modifiers { \string }?
2831custom-shape-type = "non-primitive" | \string
2832point3D =
2833 xsd:string {
2834 pattern =
2835 "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\)"
2836 }
2837extrusionOrigin =
2838 xsd:double { minInclusive = "-0.5" maxInclusive = "0.5" }
2839draw-equation = element draw:equation { draw-equation-attlist, empty }
2840draw-equation-attlist =
2841 attribute draw:name { \string }?
2842 & attribute draw:formula { \string }?
2843draw-handle = element draw:handle { draw-handle-attlist, empty }
2844draw-handle-attlist =
2845 attribute draw:handle-mirror-vertical { boolean }?
2846 & attribute draw:handle-mirror-horizontal { boolean }?
2847 & attribute draw:handle-switched { boolean }?
2848 & attribute draw:handle-position { \string }
2849 & attribute draw:handle-range-x-minimum { \string }?
2850 & attribute draw:handle-range-x-maximum { \string }?
2851 & attribute draw:handle-range-y-minimum { \string }?
2852 & attribute draw:handle-range-y-maximum { \string }?
2853 & attribute draw:handle-polar { \string }?
2854 & attribute draw:handle-radius-range-minimum { \string }?
2855 & attribute draw:handle-radius-range-maximum { \string }?
2856presentation-shape-attlist =
2857 attribute presentation:class { presentation-classes }?
2858 & attribute presentation:placeholder { boolean }?
2859 & attribute presentation:user-transformed { boolean }?
2860presentation-classes =
2861 "title"
2862 | "outline"
2863 | "subtitle"
2864 | "text"
2865 | "graphic"
2866 | "object"
2867 | "chart"
2868 | "table"
2869 | "orgchart"
2870 | "page"
2871 | "notes"
2872 | "handout"
2873 | "header"
2874 | "footer"
2875 | "date-time"
2876 | "page-number"
2877presentation-animations =
2878 element presentation:animations {
2879 (presentation-animation-elements | presentation-animation-group)*
2880 }
2881presentation-animation-elements =
2882 presentation-show-shape
2883 | presentation-show-text
2884 | presentation-hide-shape
2885 | presentation-hide-text
2886 | presentation-dim
2887 | presentation-play
2888presentation-sound =
2889 element presentation:sound {
2890 presentation-sound-attlist,
2891 attribute xlink:type { "simple" },
2892 attribute xlink:href { anyIRI },
2893 attribute xlink:actuate { "onRequest" }?,
2894 attribute xlink:show { "new" | "replace" }?,
2895 empty
2896 }
2897presentation-sound-attlist =
2898 attribute presentation:play-full { boolean }?
2899 & xml-id?
2900presentation-show-shape =
2901 element presentation:show-shape {
2902 common-presentation-effect-attlist, presentation-sound?
2903 }
2904common-presentation-effect-attlist =
2905 attribute draw:shape-id { IDREF }
2906 & attribute presentation:effect { presentationEffects }?
2907 & attribute presentation:direction { presentationEffectDirections }?
2908 & attribute presentation:speed { presentationSpeeds }?
2909 & attribute presentation:delay { duration }?
2910 & attribute presentation:start-scale { percent }?
2911 & attribute presentation:path-id { \string }?
2912presentationEffects =
2913 "none"
2914 | "fade"
2915 | "move"
2916 | "stripes"
2917 | "open"
2918 | "close"
2919 | "dissolve"
2920 | "wavyline"
2921 | "random"
2922 | "lines"
2923 | "laser"
2924 | "appear"
2925 | "hide"
2926 | "move-short"
2927 | "checkerboard"
2928 | "rotate"
2929 | "stretch"
2930presentationEffectDirections =
2931 "none"
2932 | "from-left"
2933 | "from-top"
2934 | "from-right"
2935 | "from-bottom"
2936 | "from-center"
2937 | "from-upper-left"
2938 | "from-upper-right"
2939 | "from-lower-left"
2940 | "from-lower-right"
2941 | "to-left"
2942 | "to-top"
2943 | "to-right"
2944 | "to-bottom"
2945 | "to-upper-left"
2946 | "to-upper-right"
2947 | "to-lower-right"
2948 | "to-lower-left"
2949 | "path"
2950 | "spiral-inward-left"
2951 | "spiral-inward-right"
2952 | "spiral-outward-left"
2953 | "spiral-outward-right"
2954 | "vertical"
2955 | "horizontal"
2956 | "to-center"
2957 | "clockwise"
2958 | "counter-clockwise"
2959presentationSpeeds = "slow" | "medium" | "fast"
2960presentation-show-text =
2961 element presentation:show-text {
2962 common-presentation-effect-attlist, presentation-sound?
2963 }
2964presentation-hide-shape =
2965 element presentation:hide-shape {
2966 common-presentation-effect-attlist, presentation-sound?
2967 }
2968presentation-hide-text =
2969 element presentation:hide-text {
2970 common-presentation-effect-attlist, presentation-sound?
2971 }
2972presentation-dim =
2973 element presentation:dim {
2974 presentation-dim-attlist, presentation-sound?
2975 }
2976presentation-dim-attlist =
2977 attribute draw:shape-id { IDREF }
2978 & attribute draw:color { color }
2979presentation-play =
2980 element presentation:play { presentation-play-attlist, empty }
2981presentation-play-attlist =
2982 attribute draw:shape-id { IDREF },
2983 attribute presentation:speed { presentationSpeeds }?
2984presentation-animation-group =
2985 element presentation:animation-group {
2986 presentation-animation-elements*
2987 }
2988common-anim-attlist =
2989 attribute presentation:node-type {
2990 "default"
2991 | "on-click"
2992 | "with-previous"
2993 | "after-previous"
2994 | "timing-root"
2995 | "main-sequence"
2996 | "interactive-sequence"
2997 }?
2998 & attribute presentation:preset-id { \string }?
2999 & attribute presentation:preset-sub-type { \string }?
3000 & attribute presentation:preset-class {
3001 "custom"
3002 | "entrance"
3003 | "exit"
3004 | "emphasis"
3005 | "motion-path"
3006 | "ole-action"
3007 | "media-call"
3008 }?
3009 & attribute presentation:master-element { IDREF }?
3010 & attribute presentation:group-id { \string }?
3011 & (xml-id,
3012 attribute anim:id { NCName }?)?
3013presentation-event-listener =
3014 element presentation:event-listener {
3015 presentation-event-listener-attlist, presentation-sound?
3016 }
3017presentation-event-listener-attlist =
3018 attribute script:event-name { \string }
3019 & attribute presentation:action {
3020 "none"
3021 | "previous-page"
3022 | "next-page"
3023 | "first-page"
3024 | "last-page"
3025 | "hide"
3026 | "stop"
3027 | "execute"
3028 | "show"
3029 | "verb"
3030 | "fade-out"
3031 | "sound"
3032 | "last-visited-page"
3033 }
3034 & attribute presentation:effect { presentationEffects }?
3035 & attribute presentation:direction { presentationEffectDirections }?
3036 & attribute presentation:speed { presentationSpeeds }?
3037 & attribute presentation:start-scale { percent }?
3038 & (attribute xlink:type { "simple" },
3039 attribute xlink:href { anyIRI },
3040 attribute xlink:show { "embed" }?,
3041 attribute xlink:actuate { "onRequest" }?)?
3042 & attribute presentation:verb { nonNegativeInteger }?
3043presentation-decls = presentation-decl*
3044presentation-decl =
3045 element presentation:header-decl {
3046 presentation-header-decl-attlist, text
3047 }
3048 | element presentation:footer-decl {
3049 presentation-footer-decl-attlist, text
3050 }
3051 | element presentation:date-time-decl {
3052 presentation-date-time-decl-attlist, text
3053 }
3054presentation-header-decl-attlist =
3055 attribute presentation:name { \string }
3056presentation-footer-decl-attlist =
3057 attribute presentation:name { \string }
3058presentation-date-time-decl-attlist =
3059 attribute presentation:name { \string }
3060 & attribute presentation:source { "fixed" | "current-date" }
3061 & attribute style:data-style-name { styleNameRef }?
3062presentation-settings =
3063 element presentation:settings {
3064 presentation-settings-attlist, presentation-show*
3065 }?
3066presentation-settings-attlist =
3067 attribute presentation:start-page { \string }?
3068 & attribute presentation:show { \string }?
3069 & attribute presentation:full-screen { boolean }?
3070 & attribute presentation:endless { boolean }?
3071 & attribute presentation:pause { duration }?
3072 & attribute presentation:show-logo { boolean }?
3073 & attribute presentation:force-manual { boolean }?
3074 & attribute presentation:mouse-visible { boolean }?
3075 & attribute presentation:mouse-as-pen { boolean }?
3076 & attribute presentation:start-with-navigator { boolean }?
3077 & attribute presentation:animations { "enabled" | "disabled" }?
3078 & attribute presentation:transition-on-click {
3079 "enabled" | "disabled"
3080 }?
3081 & attribute presentation:stay-on-top { boolean }?
3082 & attribute presentation:show-end-of-presentation-slide { boolean }?
3083presentation-show =
3084 element presentation:show { presentation-show-attlist, empty }
3085presentation-show-attlist =
3086 attribute presentation:name { \string }
3087 & attribute presentation:pages { \string }
3088chart-chart =
3089 element chart:chart {
3090 chart-chart-attlist,
3091 chart-title?,
3092 chart-subtitle?,
3093 chart-footer?,
3094 chart-legend?,
3095 chart-plot-area,
3096 table-table?
3097 }
3098chart-chart-attlist =
3099 attribute chart:class { namespacedToken }
3100 & common-draw-size-attlist
3101 & attribute chart:column-mapping { \string }?
3102 & attribute chart:row-mapping { \string }?
3103 & attribute chart:style-name { styleNameRef }?
3104 & (attribute xlink:type { "simple" },
3105 attribute xlink:href { anyIRI })?
3106 & xml-id?
3107chart-title = element chart:title { chart-title-attlist, text-p? }
3108chart-title-attlist =
3109 attribute table:cell-range { cellRangeAddressList }?
3110 & common-draw-position-attlist
3111 & attribute chart:style-name { styleNameRef }?
3112chart-subtitle = element chart:subtitle { chart-title-attlist, text-p? }
3113chart-footer = element chart:footer { chart-title-attlist, text-p? }
3114chart-legend = element chart:legend { chart-legend-attlist, text-p? }
3115chart-legend-attlist =
3116 ((attribute chart:legend-position {
3117 "start" | "end" | "top" | "bottom"
3118 },
3119 attribute chart:legend-align { "start" | "center" | "end" }?)
3120 | attribute chart:legend-position {
3121 "top-start" | "bottom-start" | "top-end" | "bottom-end"
3122 }
3123 | empty)
3124 & common-draw-position-attlist
3125 & (attribute style:legend-expansion { "wide" | "high" | "balanced" }
3126 | (attribute style:legend-expansion { "custom" },
3127 attribute style:legend-expansion-aspect-ratio { double })
3128 | empty)
3129 & attribute chart:style-name { styleNameRef }?
3130chart-plot-area =
3131 element chart:plot-area {
3132 chart-plot-area-attlist,
3133 dr3d-light*,
3134 chart-axis*,
3135 chart-series*,
3136 chart-stock-gain-marker?,
3137 chart-stock-loss-marker?,
3138 chart-stock-range-line?,
3139 chart-wall?,
3140 chart-floor?
3141 }
3142chart-plot-area-attlist =
3143 common-draw-position-attlist
3144 & common-draw-size-attlist
3145 & attribute chart:style-name { styleNameRef }?
3146 & attribute table:cell-range-address { cellRangeAddressList }?
3147 & attribute chart:data-source-has-labels {
3148 "none" | "row" | "column" | "both"
3149 }?
3150 & dr3d-scene-attlist
3151 & common-dr3d-transform-attlist
3152 & xml-id?
3153chart-wall = element chart:wall { chart-wall-attlist, empty }
3154chart-wall-attlist =
3155 attribute svg:width { length }?
3156 & attribute chart:style-name { styleNameRef }?
3157chart-floor = element chart:floor { chart-floor-attlist, empty }
3158chart-floor-attlist =
3159 attribute svg:width { length }?
3160 & attribute chart:style-name { styleNameRef }?
3161chart-axis =
3162 element chart:axis {
3163 chart-axis-attlist, chart-title?, chart-categories?, chart-grid*
3164 }
3165chart-axis-attlist =
3166 attribute chart:dimension { chart-dimension }
3167 & attribute chart:name { \string }?
3168 & attribute chart:style-name { styleNameRef }?
3169chart-dimension = "x" | "y" | "z"
3170chart-categories =
3171 element chart:categories {
3172 attribute table:cell-range-address { cellRangeAddressList }?
3173 }
3174chart-grid = element chart:grid { chart-grid-attlist }
3175chart-grid-attlist =
3176 attribute chart:class { "major" | "minor" }?
3177 & attribute chart:style-name { styleNameRef }?
3178chart-series =
3179 element chart:series {
3180 chart-series-attlist,
3181 chart-domain*,
3182 chart-mean-value?,
3183 chart-regression-curve*,
3184 chart-error-indicator*,
3185 chart-data-point*,
3186 chart-data-label?
3187 }
3188chart-series-attlist =
3189 attribute chart:values-cell-range-address { cellRangeAddressList }?
3190 & attribute chart:label-cell-address { cellRangeAddressList }?
3191 & attribute chart:class { namespacedToken }?
3192 & attribute chart:attached-axis { \string }?
3193 & attribute chart:style-name { styleNameRef }?
3194 & xml-id?
3195chart-domain =
3196 element chart:domain {
3197 attribute table:cell-range-address { cellRangeAddressList }?
3198 }
3199chart-data-point =
3200 element chart:data-point {
3201 chart-data-point-attlist, chart-data-label?
3202 }
3203chart-data-point-attlist =
3204 attribute chart:repeated { positiveInteger }?
3205 & attribute chart:style-name { styleNameRef }?
3206 & xml-id?
3207chart-data-label =
3208 element chart:data-label { chart-data-label-attlist, text-p? }
3209chart-data-label-attlist =
3210 common-draw-position-attlist
3211 & attribute chart:style-name { styleNameRef }?
3212chart-mean-value =
3213 element chart:mean-value { chart-mean-value-attlist, empty }
3214chart-mean-value-attlist = attribute chart:style-name { styleNameRef }?
3215chart-error-indicator =
3216 element chart:error-indicator { chart-error-indicator-attlist, empty }
3217chart-error-indicator-attlist =
3218 attribute chart:style-name { styleNameRef }?
3219 & attribute chart:dimension { chart-dimension }
3220chart-regression-curve =
3221 element chart:regression-curve {
3222 chart-regression-curve-attlist, chart-equation?
3223 }
3224chart-regression-curve-attlist =
3225 attribute chart:style-name { styleNameRef }?
3226chart-equation =
3227 element chart:equation { chart-equation-attlist, text-p? }
3228chart-equation-attlist =
3229 attribute chart:automatic-content { boolean }?
3230 & attribute chart:display-r-square { boolean }?
3231 & attribute chart:display-equation { boolean }?
3232 & common-draw-position-attlist
3233 & attribute chart:style-name { styleNameRef }?
3234chart-stock-gain-marker =
3235 element chart:stock-gain-marker { common-stock-marker-attlist }
3236chart-stock-loss-marker =
3237 element chart:stock-loss-marker { common-stock-marker-attlist }
3238chart-stock-range-line =
3239 element chart:stock-range-line { common-stock-marker-attlist }
3240common-stock-marker-attlist =
3241 attribute chart:style-name { styleNameRef }?
3242office-database =
3243 element office:database {
3244 db-data-source,
3245 db-forms?,
3246 db-reports?,
3247 db-queries?,
3248 db-table-presentations?,
3249 db-schema-definition?
3250 }
3251db-data-source =
3252 element db:data-source {
3253 db-data-source-attlist,
3254 db-connection-data,
3255 db-driver-settings?,
3256 db-application-connection-settings?
3257 }
3258db-data-source-attlist = empty
3259db-connection-data =
3260 element db:connection-data {
3261 db-connection-data-attlist,
3262 (db-database-description | db-connection-resource),
3263 db-login?
3264 }
3265db-connection-data-attlist = empty
3266db-database-description =
3267 element db:database-description {
3268 db-database-description-attlist,
3269 (db-file-based-database | db-server-database)
3270 }
3271db-database-description-attlist = empty
3272db-file-based-database =
3273 element db:file-based-database { db-file-based-database-attlist }
3274db-file-based-database-attlist =
3275 attribute xlink:type { "simple" }
3276 & attribute xlink:href { anyIRI }
3277 & attribute db:media-type { \string }
3278 & attribute db:extension { \string }?
3279db-server-database =
3280 element db:server-database { db-server-database-attlist, empty }
3281db-server-database-attlist =
3282 attribute db:type { namespacedToken }
3283 & (db-host-and-port | db-local-socket-name)
3284 & attribute db:database-name { \string }?
3285db-host-and-port =
3286 attribute db:hostname { \string },
3287 attribute db:port { positiveInteger }?
3288db-local-socket-name = attribute db:local-socket { \string }?
3289db-connection-resource =
3290 element db:connection-resource {
3291 db-connection-resource-attlist, empty
3292 }
3293db-connection-resource-attlist =
3294 attribute xlink:type { "simple" },
3295 attribute xlink:href { anyIRI },
3296 attribute xlink:show { "none" }?,
3297 attribute xlink:actuate { "onRequest" }?
3298db-login = element db:login { db-login-attlist, empty }
3299db-login-attlist =
3300 (attribute db:user-name { \string }
3301 | attribute db:use-system-user { boolean })?
3302 & attribute db:is-password-required { boolean }?
3303 & attribute db:login-timeout { positiveInteger }?
3304db-driver-settings =
3305 element db:driver-settings {
3306 db-driver-settings-attlist,
3307 db-auto-increment?,
3308 db-delimiter?,
3309 db-character-set?,
3310 db-table-settings?
3311 }
3312db-driver-settings-attlist =
3313 db-show-deleted
3314 & attribute db:system-driver-settings { \string }?
3315 & attribute db:base-dn { \string }?
3316 & db-is-first-row-header-line
3317 & attribute db:parameter-name-substitution { boolean }?
3318db-show-deleted = attribute db:show-deleted { boolean }?
3319db-is-first-row-header-line =
3320 attribute db:is-first-row-header-line { boolean }?
3321db-auto-increment =
3322 element db:auto-increment { db-auto-increment-attlist, empty }
3323db-auto-increment-attlist =
3324 attribute db:additional-column-statement { \string }?
3325 & attribute db:row-retrieving-statement { \string }?
3326db-delimiter = element db:delimiter { db-delimiter-attlist, empty }
3327db-delimiter-attlist =
3328 attribute db:field { \string }?
3329 & attribute db:string { \string }?
3330 & attribute db:decimal { \string }?
3331 & attribute db:thousand { \string }?
3332db-character-set =
3333 element db:character-set { db-character-set-attlist, empty }
3334db-character-set-attlist = attribute db:encoding { textEncoding }?
3335db-table-settings = element db:table-settings { db-table-setting* }
3336db-table-setting =
3337 element db:table-setting {
3338 db-table-setting-attlist, db-delimiter?, db-character-set?, empty
3339 }
3340db-table-setting-attlist = db-is-first-row-header-line, db-show-deleted
3341db-application-connection-settings =
3342 element db:application-connection-settings {
3343 db-application-connection-settings-attlist,
3344 db-table-filter?,
3345 db-table-type-filter?,
3346 db-data-source-settings?
3347 }
3348db-application-connection-settings-attlist =
3349 attribute db:is-table-name-length-limited { boolean }?
3350 & attribute db:enable-sql92-check { boolean }?
3351 & attribute db:append-table-alias-name { boolean }?
3352 & attribute db:ignore-driver-privileges { boolean }?
3353 & attribute db:boolean-comparison-mode {
3354 "equal-integer"
3355 | "is-boolean"
3356 | "equal-boolean"
3357 | "equal-use-only-zero"
3358 }?
3359 & attribute db:use-catalog { boolean }?
3360 & attribute db:max-row-count { integer }?
3361 & attribute db:suppress-version-columns { boolean }?
3362db-table-filter =
3363 element db:table-filter {
3364 db-table-filter-attlist,
3365 db-table-include-filter?,
3366 db-table-exclude-filter?
3367 }
3368db-table-filter-attlist = empty
3369db-table-include-filter =
3370 element db:table-include-filter {
3371 db-table-include-filter-attlist, db-table-filter-pattern+
3372 }
3373db-table-include-filter-attlist = empty
3374db-table-exclude-filter =
3375 element db:table-exclude-filter {
3376 db-table-exclude-filter-attlist, db-table-filter-pattern+
3377 }
3378db-table-exclude-filter-attlist = empty
3379db-table-filter-pattern =
3380 element db:table-filter-pattern {
3381 db-table-filter-pattern-attlist, \string
3382 }
3383db-table-filter-pattern-attlist = empty
3384db-table-type-filter =
3385 element db:table-type-filter {
3386 db-table-type-filter-attlist, db-table-type*
3387 }
3388db-table-type-filter-attlist = empty
3389db-table-type = element db:table-type { db-table-type-attlist, \string }
3390db-table-type-attlist = empty
3391db-data-source-settings =
3392 element db:data-source-settings {
3393 db-data-source-settings-attlist, db-data-source-setting+
3394 }
3395db-data-source-settings-attlist = empty
3396db-data-source-setting =
3397 element db:data-source-setting {
3398 db-data-source-setting-attlist, db-data-source-setting-value+
3399 }
3400db-data-source-setting-attlist =
3401 attribute db:data-source-setting-is-list { boolean }?
3402 & attribute db:data-source-setting-name { \string }
3403 & attribute db:data-source-setting-type {
3404 db-data-source-setting-types
3405 }
3406db-data-source-setting-types =
3407 "boolean" | "short" | "int" | "long" | "double" | "string"
3408db-data-source-setting-value =
3409 element db:data-source-setting-value {
3410 db-data-source-setting-value-attlist, \string
3411 }
3412db-data-source-setting-value-attlist = empty
3413db-forms =
3414 element db:forms {
3415 db-forms-attlist, (db-component | db-component-collection)*
3416 }
3417db-forms-attlist = empty
3418db-reports =
3419 element db:reports {
3420 db-reports-attlist, (db-component | db-component-collection)*
3421 }
3422db-reports-attlist = empty
3423db-component-collection =
3424 element db:component-collection {
3425 db-component-collection-attlist,
3426 common-db-object-name,
3427 common-db-object-title,
3428 common-db-object-description,
3429 (db-component | db-component-collection)*
3430 }
3431db-component-collection-attlist = empty
3432db-component =
3433 element db:component {
3434 db-component-attlist,
3435 common-db-object-name,
3436 common-db-object-title,
3437 common-db-object-description,
3438 (office-document | math-math)?
3439 }
3440db-component-attlist =
3441 (attribute xlink:type { "simple" },
3442 attribute xlink:href { anyIRI },
3443 attribute xlink:show { "none" }?,
3444 attribute xlink:actuate { "onRequest" }?)?
3445 & attribute db:as-template { boolean }?
3446db-queries =
3447 element db:queries {
3448 db-queries-attlist, (db-query | db-query-collection)*
3449 }
3450db-queries-attlist = empty
3451db-query-collection =
3452 element db:query-collection {
3453 db-query-collection-attlist,
3454 common-db-object-name,
3455 common-db-object-title,
3456 common-db-object-description,
3457 (db-query | db-query-collection)*
3458 }
3459db-query-collection-attlist = empty
3460db-query =
3461 element db:query {
3462 db-query-attlist,
3463 common-db-object-name,
3464 common-db-object-title,
3465 common-db-object-description,
3466 common-db-table-style-name,
3467 db-order-statement?,
3468 db-filter-statement?,
3469 db-columns?,
3470 db-update-table?
3471 }
3472db-query-attlist =
3473 attribute db:command { \string }
3474 & attribute db:escape-processing { boolean }?
3475db-order-statement =
3476 element db:order-statement { db-command, db-apply-command, empty }
3477db-filter-statement =
3478 element db:filter-statement { db-command, db-apply-command, empty }
3479db-update-table =
3480 element db:update-table { common-db-table-name-attlist }
3481db-table-presentations =
3482 element db:table-representations {
3483 db-table-presentations-attlist, db-table-presentation*
3484 }
3485db-table-presentations-attlist = empty
3486db-table-presentation =
3487 element db:table-representation {
3488 db-table-presentation-attlist,
3489 common-db-table-name-attlist,
3490 common-db-object-title,
3491 common-db-object-description,
3492 common-db-table-style-name,
3493 db-order-statement?,
3494 db-filter-statement?,
3495 db-columns?
3496 }
3497db-table-presentation-attlist = empty
3498db-columns = element db:columns { db-columns-attlist, db-column+ }
3499db-columns-attlist = empty
3500db-column =
3501 element db:column {
3502 db-column-attlist,
3503 common-db-object-name,
3504 common-db-object-title,
3505 common-db-object-description,
3506 common-db-default-value
3507 }
3508db-column-attlist =
3509 attribute db:visible { boolean }?
3510 & attribute db:style-name { styleNameRef }?
3511 & attribute db:default-cell-style-name { styleNameRef }?
3512db-command = attribute db:command { \string }
3513db-apply-command = attribute db:apply-command { boolean }?
3514common-db-table-name-attlist =
3515 attribute db:name { \string }
3516 & attribute db:catalog-name { \string }?
3517 & attribute db:schema-name { \string }?
3518common-db-object-name = attribute db:name { \string }
3519common-db-object-title = attribute db:title { \string }?
3520common-db-object-description = attribute db:description { \string }?
3521common-db-table-style-name =
3522 attribute db:style-name { styleNameRef }?
3523 & attribute db:default-row-style-name { styleNameRef }?
3524common-db-default-value = common-value-and-type-attlist?
3525db-schema-definition =
3526 element db:schema-definition {
3527 db-schema-definition-attlist, db-table-definitions
3528 }
3529db-schema-definition-attlist = empty
3530db-table-definitions =
3531 element db:table-definitions {
3532 db-table-definitions-attlist, db-table-definition*
3533 }
3534db-table-definitions-attlist = empty
3535db-table-definition =
3536 element db:table-definition {
3537 common-db-table-name-attlist,
3538 db-table-definition-attlist,
3539 db-column-definitions,
3540 db-keys?,
3541 db-indices?
3542 }
3543db-table-definition-attlist = attribute db:type { \string }?
3544db-column-definitions =
3545 element db:column-definitions {
3546 db-column-definitions-attlist, db-column-definition+
3547 }
3548db-column-definitions-attlist = empty
3549db-column-definition =
3550 element db:column-definition {
3551 db-column-definition-attlist, common-db-default-value
3552 }
3553db-column-definition-attlist =
3554 attribute db:name { \string }
3555 & attribute db:data-type { db-data-types }?
3556 & attribute db:type-name { \string }?
3557 & attribute db:precision { positiveInteger }?
3558 & attribute db:scale { positiveInteger }?
3559 & attribute db:is-nullable { "no-nulls" | "nullable" }?
3560 & attribute db:is-empty-allowed { boolean }?
3561 & attribute db:is-autoincrement { boolean }?
3562db-data-types =
3563 "bit"
3564 | "boolean"
3565 | "tinyint"
3566 | "smallint"
3567 | "integer"
3568 | "bigint"
3569 | "float"
3570 | "real"
3571 | "double"
3572 | "numeric"
3573 | "decimal"
3574 | "char"
3575 | "varchar"
3576 | "longvarchar"
3577 | "date"
3578 | "time"
3579 | "timestmp"
3580 | "binary"
3581 | "varbinary"
3582 | "longvarbinary"
3583 | "sqlnull"
3584 | "other"
3585 | "object"
3586 | "distinct"
3587 | "struct"
3588 | "array"
3589 | "blob"
3590 | "clob"
3591 | "ref"
3592db-keys = element db:keys { db-keys-attlist, db-key+ }
3593db-keys-attlist = empty
3594db-key = element db:key { db-key-attlist, db-key-columns+ }
3595db-key-attlist =
3596 attribute db:name { \string }?
3597 & attribute db:type { "primary" | "unique" | "foreign" }
3598 & attribute db:referenced-table-name { \string }?
3599 & attribute db:update-rule {
3600 "cascade" | "restrict" | "set-null" | "no-action" | "set-default"
3601 }?
3602 & attribute db:delete-rule {
3603 "cascade" | "restrict" | "set-null" | "no-action" | "set-default"
3604 }?
3605db-key-columns =
3606 element db:key-columns { db-key-columns-attlist, db-key-column+ }
3607db-key-columns-attlist = empty
3608db-key-column = element db:key-column { db-key-column-attlist, empty }
3609db-key-column-attlist =
3610 attribute db:name { \string }?
3611 & attribute db:related-column-name { \string }?
3612db-indices = element db:indices { db-indices-attlist, db-index+ }
3613db-indices-attlist = empty
3614db-index = element db:index { db-index-attlist, db-index-columns+ }
3615db-index-attlist =
3616 attribute db:name { \string }
3617 & attribute db:catalog-name { \string }?
3618 & attribute db:is-unique { boolean }?
3619 & attribute db:is-clustered { boolean }?
3620db-index-columns = element db:index-columns { db-index-column+ }
3621db-index-column =
3622 element db:index-column { db-index-column-attlist, empty }
3623db-index-column-attlist =
3624 attribute db:name { \string }
3625 & attribute db:is-ascending { boolean }?
3626office-forms =
3627 element office:forms {
3628 office-forms-attlist, (form-form | xforms-model)*
3629 }?
3630office-forms-attlist =
3631 attribute form:automatic-focus { boolean }?
3632 & attribute form:apply-design-mode { boolean }?
3633form-form =
3634 element form:form {
3635 common-form-control-attlist,
3636 form-form-attlist,
3637 form-properties?,
3638 office-event-listeners?,
3639 (controls | form-form)*,
3640 form-connection-resource?
3641 }
3642form-form-attlist =
3643 (attribute xlink:type { "simple" },
3644 attribute xlink:href { anyIRI },
3645 attribute xlink:actuate { "onRequest" }?)?
3646 & attribute office:target-frame { targetFrameName }?
3647 & attribute form:method { "get" | "post" | \string }?
3648 & attribute form:enctype { \string }?
3649 & attribute form:allow-deletes { boolean }?
3650 & attribute form:allow-inserts { boolean }?
3651 & attribute form:allow-updates { boolean }?
3652 & attribute form:apply-filter { boolean }?
3653 & attribute form:command-type { "table" | "query" | "command" }?
3654 & attribute form:command { \string }?
3655 & attribute form:datasource { anyIRI | \string }?
3656 & attribute form:master-fields { \string }?
3657 & attribute form:detail-fields { \string }?
3658 & attribute form:escape-processing { boolean }?
3659 & attribute form:filter { \string }?
3660 & attribute form:ignore-result { boolean }?
3661 & attribute form:navigation-mode { navigation }?
3662 & attribute form:order { \string }?
3663 & attribute form:tab-cycle { tab-cycles }?
3664navigation = "none" | "current" | "parent"
3665tab-cycles = "records" | "current" | "page"
3666form-connection-resource =
3667 element form:connection-resource {
3668 attribute xlink:href { anyIRI },
3669 empty
3670 }
3671xforms-model = element xforms:model { anyAttListOrElements }
3672column-controls =
3673 element form:text { form-text-attlist, common-form-control-content }
3674 | element form:textarea {
3675 form-textarea-attlist, common-form-control-content, text-p*
3676 }
3677 | element form:formatted-text {
3678 form-formatted-text-attlist, common-form-control-content
3679 }
3680 | element form:number {
3681 form-number-attlist,
3682 common-numeric-control-attlist,
3683 common-form-control-content,
3684 common-linked-cell,
3685 common-spin-button,
3686 common-repeat,
3687 common-delay-for-repeat
3688 }
3689 | element form:date {
3690 form-date-attlist,
3691 common-numeric-control-attlist,
3692 common-form-control-content,
3693 common-linked-cell,
3694 common-spin-button,
3695 common-repeat,
3696 common-delay-for-repeat
3697 }
3698 | element form:time {
3699 form-time-attlist,
3700 common-numeric-control-attlist,
3701 common-form-control-content,
3702 common-linked-cell,
3703 common-spin-button,
3704 common-repeat,
3705 common-delay-for-repeat
3706 }
3707 | element form:combobox {
3708 form-combobox-attlist, common-form-control-content, form-item*
3709 }
3710 | element form:listbox {
3711 form-listbox-attlist, common-form-control-content, form-option*
3712 }
3713 | element form:checkbox {
3714 form-checkbox-attlist, common-form-control-content
3715 }
3716controls =
3717 column-controls
3718 | element form:password {
3719 form-password-attlist, common-form-control-content
3720 }
3721 | element form:file { form-file-attlist, common-form-control-content }
3722 | element form:fixed-text {
3723 form-fixed-text-attlist, common-form-control-content
3724 }
3725 | element form:button {
3726 form-button-attlist, common-form-control-content
3727 }
3728 | element form:image {
3729 form-image-attlist, common-form-control-content
3730 }
3731 | element form:radio {
3732 form-radio-attlist, common-form-control-content
3733 }
3734 | element form:frame {
3735 form-frame-attlist, common-form-control-content
3736 }
3737 | element form:image-frame {
3738 form-image-frame-attlist, common-form-control-content
3739 }
3740 | element form:hidden {
3741 form-hidden-attlist, common-form-control-content
3742 }
3743 | element form:grid {
3744 form-grid-attlist, common-form-control-content, form-column*
3745 }
3746 | element form:value-range {
3747 form-value-range-attlist, common-form-control-content
3748 }
3749 | element form:generic-control {
3750 form-generic-control-attlist, common-form-control-content
3751 }
3752form-text-attlist =
3753 form-control-attlist,
3754 common-current-value-attlist,
3755 common-disabled-attlist,
3756 common-maxlength-attlist,
3757 common-printable-attlist,
3758 common-readonly-attlist,
3759 common-tab-attlist,
3760 common-title-attlist,
3761 common-value-attlist,
3762 common-convert-empty-attlist,
3763 common-data-field-attlist,
3764 common-linked-cell
3765form-control-attlist =
3766 common-form-control-attlist,
3767 common-control-id-attlist,
3768 xforms-bind-attlist
3769common-form-control-content = form-properties?, office-event-listeners?
3770form-textarea-attlist =
3771 form-control-attlist,
3772 common-current-value-attlist,
3773 common-disabled-attlist,
3774 common-maxlength-attlist,
3775 common-printable-attlist,
3776 common-readonly-attlist,
3777 common-tab-attlist,
3778 common-title-attlist,
3779 common-value-attlist,
3780 common-convert-empty-attlist,
3781 common-data-field-attlist,
3782 common-linked-cell
3783form-password-attlist =
3784 form-control-attlist
3785 & common-disabled-attlist
3786 & common-maxlength-attlist
3787 & common-printable-attlist
3788 & common-tab-attlist
3789 & common-title-attlist
3790 & common-value-attlist
3791 & common-convert-empty-attlist
3792 & common-linked-cell
3793 & attribute form:echo-char { character }?
3794form-file-attlist =
3795 form-control-attlist,
3796 common-current-value-attlist,
3797 common-disabled-attlist,
3798 common-maxlength-attlist,
3799 common-printable-attlist,
3800 common-readonly-attlist,
3801 common-tab-attlist,
3802 common-title-attlist,
3803 common-value-attlist,
3804 common-linked-cell
3805form-formatted-text-attlist =
3806 form-control-attlist
3807 & common-current-value-attlist
3808 & common-disabled-attlist
3809 & common-maxlength-attlist
3810 & common-printable-attlist
3811 & common-readonly-attlist
3812 & common-tab-attlist
3813 & common-title-attlist
3814 & common-value-attlist
3815 & common-convert-empty-attlist
3816 & common-data-field-attlist
3817 & common-linked-cell
3818 & common-spin-button
3819 & common-repeat
3820 & common-delay-for-repeat
3821 & attribute form:max-value { \string }?
3822 & attribute form:min-value { \string }?
3823 & attribute form:validation { boolean }?
3824common-numeric-control-attlist =
3825 form-control-attlist,
3826 common-disabled-attlist,
3827 common-maxlength-attlist,
3828 common-printable-attlist,
3829 common-readonly-attlist,
3830 common-tab-attlist,
3831 common-title-attlist,
3832 common-convert-empty-attlist,
3833 common-data-field-attlist
3834form-number-attlist =
3835 attribute form:value { double }?
3836 & attribute form:current-value { double }?
3837 & attribute form:min-value { double }?
3838 & attribute form:max-value { double }?
3839form-date-attlist =
3840 attribute form:value { date }?
3841 & attribute form:current-value { date }?
3842 & attribute form:min-value { date }?
3843 & attribute form:max-value { date }?
3844form-time-attlist =
3845 attribute form:value { time }?
3846 & attribute form:current-value { time }?
3847 & attribute form:min-value { time }?
3848 & attribute form:max-value { time }?
3849form-fixed-text-attlist =
3850 form-control-attlist
3851 & for
3852 & common-disabled-attlist
3853 & label
3854 & common-printable-attlist
3855 & common-title-attlist
3856 & attribute form:multi-line { boolean }?
3857form-combobox-attlist =
3858 form-control-attlist
3859 & common-current-value-attlist
3860 & common-disabled-attlist
3861 & dropdown
3862 & common-maxlength-attlist
3863 & common-printable-attlist
3864 & common-readonly-attlist
3865 & size
3866 & common-tab-attlist
3867 & common-title-attlist
3868 & common-value-attlist
3869 & common-convert-empty-attlist
3870 & common-data-field-attlist
3871 & list-source
3872 & list-source-type
3873 & common-linked-cell
3874 & common-source-cell-range
3875 & attribute form:auto-complete { boolean }?
3876form-item = element form:item { form-item-attlist, text }
3877form-item-attlist = label
3878form-listbox-attlist =
3879 form-control-attlist
3880 & common-disabled-attlist
3881 & dropdown
3882 & common-printable-attlist
3883 & size
3884 & common-tab-attlist
3885 & common-title-attlist
3886 & bound-column
3887 & common-data-field-attlist
3888 & list-source
3889 & list-source-type
3890 & common-linked-cell
3891 & list-linkage-type
3892 & common-source-cell-range
3893 & attribute form:multiple { boolean }?
3894 & attribute form:xforms-list-source { \string }?
3895list-linkage-type =
3896 attribute form:list-linkage-type {
3897 "selection" | "selection-indices"
3898 }?
3899form-option = element form:option { form-option-attlist, text }
3900form-option-attlist =
3901 current-selected, selected, label, common-value-attlist
3902form-button-attlist =
3903 form-control-attlist
3904 & button-type
3905 & common-disabled-attlist
3906 & label
3907 & image-data
3908 & common-printable-attlist
3909 & common-tab-attlist
3910 & target-frame
3911 & target-location
3912 & common-title-attlist
3913 & common-value-attlist
3914 & common-form-relative-image-position-attlist
3915 & common-repeat
3916 & common-delay-for-repeat
3917 & attribute form:default-button { boolean }?
3918 & attribute form:toggle { boolean }?
3919 & attribute form:focus-on-click { boolean }?
3920 & attribute form:xforms-submission { \string }?
3921form-image-attlist =
3922 form-control-attlist,
3923 button-type,
3924 common-disabled-attlist,
3925 image-data,
3926 common-printable-attlist,
3927 common-tab-attlist,
3928 target-frame,
3929 target-location,
3930 common-title-attlist,
3931 common-value-attlist
3932form-checkbox-attlist =
3933 form-control-attlist
3934 & common-disabled-attlist
3935 & label
3936 & common-printable-attlist
3937 & common-tab-attlist
3938 & common-title-attlist
3939 & common-value-attlist
3940 & common-data-field-attlist
3941 & common-form-visual-effect-attlist
3942 & common-form-relative-image-position-attlist
3943 & common-linked-cell
3944 & attribute form:current-state { states }?
3945 & attribute form:is-tristate { boolean }?
3946 & attribute form:state { states }?
3947states = "unchecked" | "checked" | "unknown"
3948form-radio-attlist =
3949 form-control-attlist,
3950 current-selected,
3951 common-disabled-attlist,
3952 label,
3953 common-printable-attlist,
3954 selected,
3955 common-tab-attlist,
3956 common-title-attlist,
3957 common-value-attlist,
3958 common-data-field-attlist,
3959 common-form-visual-effect-attlist,
3960 common-form-relative-image-position-attlist,
3961 common-linked-cell
3962form-frame-attlist =
3963 form-control-attlist,
3964 common-disabled-attlist,
3965 for,
3966 label,
3967 common-printable-attlist,
3968 common-title-attlist
3969form-image-frame-attlist =
3970 form-control-attlist,
3971 common-disabled-attlist,
3972 image-data,
3973 common-printable-attlist,
3974 common-readonly-attlist,
3975 common-title-attlist,
3976 common-data-field-attlist
3977form-hidden-attlist = form-control-attlist, common-value-attlist
3978form-grid-attlist =
3979 form-control-attlist,
3980 common-disabled-attlist,
3981 common-printable-attlist,
3982 common-tab-attlist,
3983 common-title-attlist
3984form-column =
3985 element form:column { form-column-attlist, column-controls+ }
3986form-column-attlist =
3987 common-form-control-attlist, label, text-style-name
3988text-style-name = attribute form:text-style-name { styleNameRef }?
3989form-value-range-attlist =
3990 form-control-attlist
3991 & common-disabled-attlist
3992 & common-printable-attlist
3993 & common-tab-attlist
3994 & common-title-attlist
3995 & common-value-attlist
3996 & common-linked-cell
3997 & common-repeat
3998 & common-delay-for-repeat
3999 & attribute form:max-value { integer }?
4000 & attribute form:min-value { integer }?
4001 & attribute form:step-size { positiveInteger }?
4002 & attribute form:page-step-size { positiveInteger }?
4003 & attribute form:orientation { "horizontal" | "vertical" }?
4004form-generic-control-attlist = form-control-attlist
4005common-form-control-attlist =
4006 attribute form:name { \string }?
4007 & attribute form:control-implementation { namespacedToken }?
4008xforms-bind-attlist = attribute xforms:bind { \string }?
4009types = "submit" | "reset" | "push" | "url"
4010button-type = attribute form:button-type { types }?
4011common-control-id-attlist =
4012 xml-id,
4013 attribute form:id { NCName }?
4014current-selected = attribute form:current-selected { boolean }?
4015common-value-attlist = attribute form:value { \string }?
4016common-current-value-attlist = attribute form:current-value { \string }?
4017common-disabled-attlist = attribute form:disabled { boolean }?
4018dropdown = attribute form:dropdown { boolean }?
4019for = attribute form:for { \string }?
4020image-data = attribute form:image-data { anyIRI }?
4021label = attribute form:label { \string }?
4022common-maxlength-attlist =
4023 attribute form:max-length { nonNegativeInteger }?
4024common-printable-attlist = attribute form:printable { boolean }?
4025common-readonly-attlist = attribute form:readonly { boolean }?
4026selected = attribute form:selected { boolean }?
4027size = attribute form:size { nonNegativeInteger }?
4028common-tab-attlist =
4029 attribute form:tab-index { nonNegativeInteger }?
4030 & attribute form:tab-stop { boolean }?
4031target-frame = attribute office:target-frame { targetFrameName }?
4032target-location = attribute xlink:href { anyIRI }?
4033common-title-attlist = attribute form:title { \string }?
4034common-form-visual-effect-attlist =
4035 attribute form:visual-effect { "flat" | "3d" }?
4036common-form-relative-image-position-attlist =
4037 attribute form:image-position { "center" }?
4038 | (attribute form:image-position {
4039 "start" | "end" | "top" | "bottom"
4040 },
4041 attribute form:image-align { "start" | "center" | "end" }?)
4042bound-column = attribute form:bound-column { \string }?
4043common-convert-empty-attlist =
4044 attribute form:convert-empty-to-null { boolean }?
4045common-data-field-attlist = attribute form:data-field { \string }?
4046list-source = attribute form:list-source { \string }?
4047list-source-type =
4048 attribute form:list-source-type {
4049 "table"
4050 | "query"
4051 | "sql"
4052 | "sql-pass-through"
4053 | "value-list"
4054 | "table-fields"
4055 }?
4056common-linked-cell =
4057 attribute form:linked-cell { cellAddress | \string }?
4058common-source-cell-range =
4059 attribute form:source-cell-range { cellRangeAddress | \string }?
4060common-spin-button = attribute form:spin-button { boolean }?
4061common-repeat = attribute form:repeat { boolean }?
4062common-delay-for-repeat = attribute form:delay-for-repeat { duration }?
4063form-properties = element form:properties { form-property+ }
4064form-property =
4065 element form:property {
4066 form-property-name, form-property-value-and-type-attlist
4067 }
4068 | element form:list-property {
4069 form-property-name, form-property-type-and-value-list
4070 }
4071form-property-name = attribute form:property-name { \string }
4072form-property-value-and-type-attlist =
4073 common-value-and-type-attlist
4074 | attribute office:value-type { "void" }
4075form-property-type-and-value-list =
4076 (attribute office:value-type { "float" },
4077 element form:list-value {
4078 attribute office:value { double }
4079 }*)
4080 | (attribute office:value-type { "percentage" },
4081 element form:list-value {
4082 attribute office:value { double }
4083 }*)
4084 | (attribute office:value-type { "currency" },
4085 element form:list-value {
4086 attribute office:value { double },
4087 attribute office:currency { \string }?
4088 }*)
4089 | (attribute office:value-type { "date" },
4090 element form:list-value {
4091 attribute office:date-value { dateOrDateTime }
4092 }*)
4093 | (attribute office:value-type { "time" },
4094 element form:list-value {
4095 attribute office:time-value { duration }
4096 }*)
4097 | (attribute office:value-type { "boolean" },
4098 element form:list-value {
4099 attribute office:boolean-value { boolean }
4100 }*)
4101 | (attribute office:value-type { "string" },
4102 element form:list-value {
4103 attribute office:string-value { \string }
4104 }*)
4105 | attribute office:value-type { "void" }
4106office-annotation =
4107 element office:annotation {
4108 office-annotation-attlist,
4109 draw-caption-attlist,
4110 common-draw-position-attlist,
4111 common-draw-size-attlist,
4112 common-draw-shape-with-text-and-styles-attlist,
4113 dc-creator?,
4114 dc-date?,
4115 meta-date-string?,
4116 (text-p | text-list)*
4117 }
4118office-annotation-end =
4119 element office:annotation-end { office-annotation-end-attlist }
4120office-annotation-attlist =
4121 attribute office:display { boolean }?
4122 & common-office-annotation-name-attlist?
4123office-annotation-end-attlist = common-office-annotation-name-attlist
4124common-office-annotation-name-attlist =
4125 attribute office:name { \string }
4126meta-date-string = element meta:date-string { \string }
4127common-num-format-prefix-suffix-attlist =
4128 attribute style:num-prefix { \string }?,
4129 attribute style:num-suffix { \string }?
4130common-num-format-attlist =
4131 attribute style:num-format { "1" | "i" | "I" | \string | empty }
4132 | (attribute style:num-format { "a" | "A" },
4133 style-num-letter-sync-attlist)
4134 | empty
4135style-num-letter-sync-attlist =
4136 attribute style:num-letter-sync { boolean }?
4137office-change-info =
4138 element office:change-info { dc-creator, dc-date, text-p* }
4139office-event-listeners =
4140 element office:event-listeners {
4141 (script-event-listener | presentation-event-listener)*
4142 }
4143script-event-listener =
4144 element script:event-listener { script-event-listener-attlist, empty }
4145script-event-listener-attlist =
4146 attribute script:event-name { \string }
4147 & attribute script:language { \string }
4148 & (attribute script:macro-name { \string }
4149 | (attribute xlink:type { "simple" },
4150 attribute xlink:href { anyIRI },
4151 attribute xlink:actuate { "onRequest" }?))
4152math-math = element math:math { mathMarkup }
4153[
4154 dc:description [
4155 "To avoid inclusion of the complete MathML schema, anything is allowed within a math:math top-level element"
4156 ]
4157]
4158mathMarkup =
4159 (attribute * { text }
4160 | text
4161 | element * { mathMarkup })*
4162text-dde-connection-decl =
4163 element text:dde-connection-decl {
4164 text-dde-connection-decl-attlist, common-dde-connection-decl-attlist
4165 }
4166text-dde-connection-decl-attlist = attribute office:name { \string }
4167common-dde-connection-decl-attlist =
4168 attribute office:dde-application { \string }
4169 & attribute office:dde-topic { \string }
4170 & attribute office:dde-item { \string }
4171 & attribute office:automatic-update { boolean }?
4172table-dde-link =
4173 element table:dde-link { office-dde-source, table-table }
4174office-dde-source =
4175 element office:dde-source {
4176 office-dde-source-attlist, common-dde-connection-decl-attlist
4177 }
4178office-dde-source-attlist =
4179 attribute office:name { \string }?
4180 & attribute office:conversion-mode {
4181 "into-default-style-data-style"
4182 | "into-english-number"
4183 | "keep-text"
4184 }?
4185animation-element =
4186 element anim:animate {
4187 common-anim-target-attlist,
4188 common-anim-named-target-attlist,
4189 common-anim-values-attlist,
4190 common-anim-spline-mode-attlist,
4191 common-spline-anim-value-attlist,
4192 common-timing-attlist,
4193 common-anim-add-accum-attlist
4194 }
4195 | element anim:set {
4196 common-anim-target-attlist,
4197 common-anim-named-target-attlist,
4198 common-anim-set-values-attlist,
4199 common-timing-attlist,
4200 common-anim-add-accum-attlist
4201 }
4202 | element anim:animateMotion {
4203 anim-animate-motion-attlist,
4204 common-anim-target-attlist,
4205 common-anim-named-target-attlist,
4206 common-anim-add-accum-attlist,
4207 common-anim-values-attlist,
4208 common-timing-attlist,
4209 common-spline-anim-value-attlist
4210 }
4211 | element anim:animateColor {
4212 common-anim-target-attlist,
4213 common-anim-named-target-attlist,
4214 common-anim-add-accum-attlist,
4215 common-anim-values-attlist,
4216 common-anim-spline-mode-attlist,
4217 common-spline-anim-value-attlist,
4218 anim-animate-color-attlist,
4219 common-timing-attlist
4220 }
4221 | element anim:animateTransform {
4222 common-anim-target-attlist,
4223 common-anim-named-target-attlist,
4224 common-anim-add-accum-attlist,
4225 common-anim-values-attlist,
4226 anim-animate-transform-attlist,
4227 common-timing-attlist
4228 }
4229 | element anim:transitionFilter {
4230 common-anim-target-attlist,
4231 common-anim-add-accum-attlist,
4232 common-anim-values-attlist,
4233 common-anim-spline-mode-attlist,
4234 anim-transition-filter-attlist,
4235 common-timing-attlist
4236 }
4237 | element anim:par {
4238 common-anim-attlist,
4239 common-timing-attlist,
4240 common-endsync-timing-attlist,
4241 animation-element*
4242 }
4243 | element anim:seq {
4244 common-anim-attlist,
4245 common-endsync-timing-attlist,
4246 common-timing-attlist,
4247 animation-element*
4248 }
4249 | element anim:iterate {
4250 common-anim-attlist,
4251 anim-iterate-attlist,
4252 common-timing-attlist,
4253 common-endsync-timing-attlist,
4254 animation-element*
4255 }
4256 | element anim:audio {
4257 common-anim-attlist,
4258 anim-audio-attlist,
4259 common-basic-timing-attlist
4260 }
4261 | element anim:command {
4262 common-anim-attlist,
4263 anim-command-attlist,
4264 common-begin-end-timing-attlist,
4265 common-anim-target-attlist,
4266 element anim:param {
4267 attribute anim:name { \string },
4268 attribute anim:value { \string }
4269 }*
4270 }
4271anim-animate-motion-attlist =
4272 attribute svg:path { pathData }?
4273 & attribute svg:origin { \string }?
4274 & attribute smil:calcMode {
4275 "discrete" | "linear" | "paced" | "spline"
4276 }?
4277anim-animate-color-attlist =
4278 attribute anim:color-interpolation { "rgb" | "hsl" }?
4279 & attribute anim:color-interpolation-direction {
4280 "clockwise" | "counter-clockwise"
4281 }?
4282anim-animate-transform-attlist =
4283 attribute svg:type {
4284 "translate" | "scale" | "rotate" | "skewX" | "skewY"
4285 }
4286anim-transition-filter-attlist =
4287 attribute smil:type { \string }
4288 & attribute smil:subtype { \string }?
4289 & attribute smil:direction { "forward" | "reverse" }?
4290 & attribute smil:fadeColor { color }?
4291 & attribute smil:mode { "in" | "out" }?
4292common-anim-target-attlist =
4293 attribute smil:targetElement { IDREF }?
4294 & attribute anim:sub-item { \string }?
4295common-anim-named-target-attlist =
4296 attribute smil:attributeName { \string }
4297common-anim-values-attlist =
4298 attribute smil:values { \string }?
4299 & attribute anim:formula { \string }?
4300 & common-anim-set-values-attlist
4301 & attribute smil:from { \string }?
4302 & attribute smil:by { \string }?
4303common-anim-spline-mode-attlist =
4304 attribute smil:calcMode {
4305 "discrete" | "linear" | "paced" | "spline"
4306 }?
4307common-spline-anim-value-attlist =
4308 attribute smil:keyTimes { \string }?
4309 & attribute smil:keySplines { \string }?
4310common-anim-add-accum-attlist =
4311 attribute smil:accumulate { "none" | "sum" }?
4312 & attribute smil:additive { "replace" | "sum" }?
4313common-anim-set-values-attlist = attribute smil:to { \string }?
4314common-begin-end-timing-attlist =
4315 attribute smil:begin { \string }?
4316 & attribute smil:end { \string }?
4317common-dur-timing-attlist = attribute smil:dur { \string }?
4318common-endsync-timing-attlist =
4319 attribute smil:endsync { "first" | "last" | "all" | "media" | IDREF }?
4320common-repeat-timing-attlist =
4321 attribute smil:repeatDur { \string }?,
4322 attribute smil:repeatCount { nonNegativeDecimal | "indefinite" }?
4323nonNegativeDecimal = xsd:decimal { minInclusive = "0.0" }
4324common-fill-timing-attlist =
4325 attribute smil:fill {
4326 "remove" | "freeze" | "hold" | "auto" | "default" | "transition"
4327 }?
4328common-fill-default-attlist =
4329 attribute smil:fillDefault {
4330 "remove" | "freeze" | "hold" | "transition" | "auto" | "inherit"
4331 }?
4332common-restart-timing-attlist =
4333 attribute smil:restart {
4334 "never" | "always" | "whenNotActive" | "default"
4335 }?
4336common-restart-default-attlist =
4337 attribute smil:restartDefault {
4338 "never" | "always" | "whenNotActive" | "inherit"
4339 }?
4340common-time-manip-attlist =
4341 attribute smil:accelerate { zeroToOneDecimal }?
4342 & attribute smil:decelerate { zeroToOneDecimal }?
4343 & attribute smil:autoReverse { boolean }?
4344zeroToOneDecimal = xsd:decimal { minInclusive = "0" maxInclusive = "1" }
4345common-basic-timing-attlist =
4346 common-begin-end-timing-attlist,
4347 common-dur-timing-attlist,
4348 common-repeat-timing-attlist,
4349 common-restart-timing-attlist,
4350 common-restart-default-attlist,
4351 common-fill-timing-attlist,
4352 common-fill-default-attlist
4353common-timing-attlist =
4354 common-basic-timing-attlist, common-time-manip-attlist
4355anim-iterate-attlist =
4356 common-anim-target-attlist
4357 & attribute anim:iterate-type { \string }?
4358 & attribute anim:iterate-interval { duration }?
4359anim-audio-attlist =
4360 attribute xlink:href { anyIRI }?
4361 & attribute anim:audio-level { double }?
4362anim-command-attlist = attribute anim:command { \string }
4363style-style =
4364 element style:style {
4365 style-style-attlist, style-style-content, style-map*
4366 }
4367common-in-content-meta-attlist =
4368 attribute xhtml:about { URIorSafeCURIE },
4369 attribute xhtml:property { CURIEs },
4370 common-meta-literal-attlist
4371common-meta-literal-attlist =
4372 attribute xhtml:datatype { CURIE }?,
4373 attribute xhtml:content { \string }?
4374xml-id = attribute xml:id { ID }
4375style-style-attlist =
4376 attribute style:name { styleName }
4377 & attribute style:display-name { \string }?
4378 & attribute style:parent-style-name { styleNameRef }?
4379 & attribute style:next-style-name { styleNameRef }?
4380 & attribute style:list-level { positiveInteger | empty }?
4381 & attribute style:list-style-name { styleName | empty }?
4382 & attribute style:master-page-name { styleNameRef }?
4383 & attribute style:auto-update { boolean }?
4384 & attribute style:data-style-name { styleNameRef }?
4385 & attribute style:percentage-data-style-name { styleNameRef }?
4386 & attribute style:class { \string }?
4387 & attribute style:default-outline-level { positiveInteger | empty }?
4388style-map = element style:map { style-map-attlist, empty }
4389style-map-attlist =
4390 attribute style:condition { \string }
4391 & attribute style:apply-style-name { styleNameRef }
4392 & attribute style:base-cell-address { cellAddress }?
4393style-default-style =
4394 element style:default-style { style-style-content }
4395style-page-layout =
4396 element style:page-layout {
4397 style-page-layout-attlist, style-page-layout-content
4398 }
4399style-page-layout-content =
4400 style-page-layout-properties?,
4401 style-header-style?,
4402 style-footer-style?
4403style-page-layout-attlist =
4404 attribute style:name { styleName }
4405 & attribute style:page-usage {
4406 "all" | "left" | "right" | "mirrored"
4407 }?
4408style-header-style =
4409 element style:header-style { style-header-footer-properties? }
4410style-footer-style =
4411 element style:footer-style { style-header-footer-properties? }
4412style-default-page-layout =
4413 element style:default-page-layout { style-page-layout-content }
4414style-master-page =
4415 element style:master-page {
4416 style-master-page-attlist,
4417 (style-header, style-header-left?)?,
4418 (style-footer, style-footer-left?)?,
4419 draw-layer-set?,
4420 office-forms?,
4421 shape*,
4422 animation-element?,
4423 presentation-notes?
4424 }
4425style-master-page-attlist =
4426 attribute style:name { styleName }
4427 & attribute style:display-name { \string }?
4428 & attribute style:page-layout-name { styleNameRef }
4429 & attribute draw:style-name { styleNameRef }?
4430 & attribute style:next-style-name { styleNameRef }?
4431style-header =
4432 element style:header {
4433 common-style-header-footer-attlist, header-footer-content
4434 }
4435style-footer =
4436 element style:footer {
4437 common-style-header-footer-attlist, header-footer-content
4438 }
4439style-header-left =
4440 element style:header-left {
4441 common-style-header-footer-attlist, header-footer-content
4442 }
4443style-footer-left =
4444 element style:footer-left {
4445 common-style-header-footer-attlist, header-footer-content
4446 }
4447header-footer-content =
4448 (text-tracked-changes,
4449 text-decls,
4450 (text-h
4451 | text-p
4452 | text-list
4453 | table-table
4454 | text-section
4455 | text-table-of-content
4456 | text-illustration-index
4457 | text-table-index
4458 | text-object-index
4459 | text-user-index
4460 | text-alphabetical-index
4461 | text-bibliography
4462 | text-index-title
4463 | change-marks)*)
4464 | (style-region-left?, style-region-center?, style-region-right?)
4465common-style-header-footer-attlist =
4466 attribute style:display { boolean }?
4467style-region-left = element style:region-left { region-content }
4468style-region-center = element style:region-center { region-content }
4469style-region-right = element style:region-right { region-content }
4470region-content = text-p*
4471presentation-notes =
4472 element presentation:notes {
4473 common-presentation-header-footer-attlist,
4474 presentation-notes-attlist,
4475 office-forms,
4476 shape*
4477 }
4478presentation-notes-attlist =
4479 attribute style:page-layout-name { styleNameRef }?
4480 & attribute draw:style-name { styleNameRef }?
4481table-table-template =
4482 element table:table-template {
4483 table-table-template-attlist,
4484 table-first-row?,
4485 table-last-row?,
4486 table-first-column?,
4487 table-last-column?,
4488 table-body,
4489 table-even-rows?,
4490 table-odd-rows?,
4491 table-even-columns?,
4492 table-odd-columns?,
4493 table-background?
4494 }
4495table-table-template-attlist =
4496 attribute table:name { \string }
4497 & attribute table:first-row-start-column { rowOrCol }
4498 & attribute table:first-row-end-column { rowOrCol }
4499 & attribute table:last-row-start-column { rowOrCol }
4500 & attribute table:last-row-end-column { rowOrCol }
4501rowOrCol = "row" | "column"
4502table-first-row =
4503 element table:first-row { common-table-template-attlist, empty }
4504table-last-row =
4505 element table:last-row { common-table-template-attlist, empty }
4506table-first-column =
4507 element table:first-column { common-table-template-attlist, empty }
4508table-last-column =
4509 element table:last-column { common-table-template-attlist, empty }
4510table-body = element table:body { common-table-template-attlist, empty }
4511table-even-rows =
4512 element table:even-rows { common-table-template-attlist, empty }
4513table-odd-rows =
4514 element table:odd-rows { common-table-template-attlist, empty }
4515table-even-columns =
4516 element table:even-columns { common-table-template-attlist, empty }
4517table-odd-columns =
4518 element table:odd-columns { common-table-template-attlist, empty }
4519common-table-template-attlist =
4520 attribute table:style-name { styleNameRef },
4521 attribute table:paragraph-style-name { styleNameRef }?
4522table-background =
4523 element table:background { table-background-attlist, empty }
4524table-background-attlist = attribute table:style-name { styleNameRef }
4525style-font-face =
4526 element style:font-face {
4527 style-font-face-attlist, svg-font-face-src?, svg-definition-src?
4528 }
4529style-font-face-attlist =
4530 attribute svg:font-family { \string }?
4531 & attribute svg:font-style { fontStyle }?
4532 & attribute svg:font-variant { fontVariant }?
4533 & attribute svg:font-weight { fontWeight }?
4534 & attribute svg:font-stretch {
4535 "normal"
4536 | "ultra-condensed"
4537 | "extra-condensed"
4538 | "condensed"
4539 | "semi-condensed"
4540 | "semi-expanded"
4541 | "expanded"
4542 | "extra-expanded"
4543 | "ultra-expanded"
4544 }?
4545 & attribute svg:font-size { positiveLength }?
4546 & attribute svg:unicode-range { \string }?
4547 & attribute svg:units-per-em { integer }?
4548 & attribute svg:panose-1 { \string }?
4549 & attribute svg:stemv { integer }?
4550 & attribute svg:stemh { integer }?
4551 & attribute svg:slope { integer }?
4552 & attribute svg:cap-height { integer }?
4553 & attribute svg:x-height { integer }?
4554 & attribute svg:accent-height { integer }?
4555 & attribute svg:ascent { integer }?
4556 & attribute svg:descent { integer }?
4557 & attribute svg:widths { \string }?
4558 & attribute svg:bbox { \string }?
4559 & attribute svg:ideographic { integer }?
4560 & attribute svg:alphabetic { integer }?
4561 & attribute svg:mathematical { integer }?
4562 & attribute svg:hanging { integer }?
4563 & attribute svg:v-ideographic { integer }?
4564 & attribute svg:v-alphabetic { integer }?
4565 & attribute svg:v-mathematical { integer }?
4566 & attribute svg:v-hanging { integer }?
4567 & attribute svg:underline-position { integer }?
4568 & attribute svg:underline-thickness { integer }?
4569 & attribute svg:strikethrough-position { integer }?
4570 & attribute svg:strikethrough-thickness { integer }?
4571 & attribute svg:overline-position { integer }?
4572 & attribute svg:overline-thickness { integer }?
4573 & attribute style:name { \string }
4574 & attribute style:font-adornments { \string }?
4575 & attribute style:font-family-generic { fontFamilyGeneric }?
4576 & attribute style:font-pitch { fontPitch }?
4577 & attribute style:font-charset { textEncoding }?
4578svg-font-face-src =
4579 element svg:font-face-src {
4580 (svg-font-face-uri | svg-font-face-name)+
4581 }
4582svg-font-face-uri =
4583 element svg:font-face-uri {
4584 common-svg-font-face-xlink-attlist, svg-font-face-format*
4585 }
4586svg-font-face-format =
4587 element svg:font-face-format {
4588 attribute svg:string { \string }?,
4589 empty
4590 }
4591svg-font-face-name =
4592 element svg:font-face-name {
4593 attribute svg:name { \string }?,
4594 empty
4595 }
4596svg-definition-src =
4597 element svg:definition-src {
4598 common-svg-font-face-xlink-attlist, empty
4599 }
4600common-svg-font-face-xlink-attlist =
4601 attribute xlink:type { "simple" },
4602 attribute xlink:href { anyIRI },
4603 attribute xlink:actuate { "onRequest" }?
4604number-number-style =
4605 element number:number-style {
4606 common-data-style-attlist,
4607 style-text-properties?,
4608 number-text?,
4609 (any-number, number-text?)?,
4610 style-map*
4611 }
4612any-number = number-number | number-scientific-number | number-fraction
4613number-number =
4614 element number:number {
4615 number-number-attlist,
4616 common-decimal-places-attlist,
4617 common-number-attlist,
4618 number-embedded-text*
4619 }
4620number-number-attlist =
4621 attribute number:decimal-replacement { \string }?
4622 & attribute number:display-factor { double }?
4623number-embedded-text =
4624 element number:embedded-text { number-embedded-text-attlist, text }
4625number-embedded-text-attlist = attribute number:position { integer }
4626number-scientific-number =
4627 element number:scientific-number {
4628 number-scientific-number-attlist,
4629 common-decimal-places-attlist,
4630 common-number-attlist,
4631 empty
4632 }
4633number-scientific-number-attlist =
4634 attribute number:min-exponent-digits { integer }?
4635number-fraction =
4636 element number:fraction {
4637 number-fraction-attlist, common-number-attlist, empty
4638 }
4639number-fraction-attlist =
4640 attribute number:min-numerator-digits { integer }?
4641 & attribute number:min-denominator-digits { integer }?
4642 & attribute number:denominator-value { integer }?
4643number-currency-style =
4644 element number:currency-style {
4645 common-data-style-attlist,
4646 common-auto-reorder-attlist,
4647 style-text-properties?,
4648 number-text?,
4649 ((number-and-text, currency-symbol-and-text?)
4650 | (currency-symbol-and-text, number-and-text?))?,
4651 style-map*
4652 }
4653currency-symbol-and-text = number-currency-symbol, number-text?
4654number-and-text = number-number, number-text?
4655number-currency-symbol =
4656 element number:currency-symbol {
4657 number-currency-symbol-attlist, text
4658 }
4659number-currency-symbol-attlist =
4660 attribute number:language { languageCode }?,
4661 attribute number:country { countryCode }?,
4662 attribute number:script { scriptCode }?,
4663 attribute number:rfc-language-tag { language }?
4664number-percentage-style =
4665 element number:percentage-style {
4666 common-data-style-attlist,
4667 style-text-properties?,
4668 number-text?,
4669 number-and-text?,
4670 style-map*
4671 }
4672number-date-style =
4673 element number:date-style {
4674 common-data-style-attlist,
4675 common-auto-reorder-attlist,
4676 common-format-source-attlist,
4677 style-text-properties?,
4678 number-text?,
4679 (any-date, number-text?)+,
4680 style-map*
4681 }
4682any-date =
4683 number-day
4684 | number-month
4685 | number-year
4686 | number-era
4687 | number-day-of-week
4688 | number-week-of-year
4689 | number-quarter
4690 | number-hours
4691 | number-am-pm
4692 | number-minutes
4693 | number-seconds
4694number-day =
4695 element number:day {
4696 number-day-attlist, common-calendar-attlist, empty
4697 }
4698number-day-attlist = attribute number:style { "short" | "long" }?
4699number-month =
4700 element number:month {
4701 number-month-attlist, common-calendar-attlist, empty
4702 }
4703number-month-attlist =
4704 attribute number:textual { boolean }?
4705 & attribute number:possessive-form { boolean }?
4706 & attribute number:style { "short" | "long" }?
4707number-year =
4708 element number:year {
4709 number-year-attlist, common-calendar-attlist, empty
4710 }
4711number-year-attlist = attribute number:style { "short" | "long" }?
4712number-era =
4713 element number:era {
4714 number-era-attlist, common-calendar-attlist, empty
4715 }
4716number-era-attlist = attribute number:style { "short" | "long" }?
4717number-day-of-week =
4718 element number:day-of-week {
4719 number-day-of-week-attlist, common-calendar-attlist, empty
4720 }
4721number-day-of-week-attlist =
4722 attribute number:style { "short" | "long" }?
4723number-week-of-year =
4724 element number:week-of-year { common-calendar-attlist, empty }
4725number-quarter =
4726 element number:quarter {
4727 number-quarter-attlist, common-calendar-attlist, empty
4728 }
4729number-quarter-attlist = attribute number:style { "short" | "long" }?
4730number-time-style =
4731 element number:time-style {
4732 number-time-style-attlist,
4733 common-data-style-attlist,
4734 common-format-source-attlist,
4735 style-text-properties?,
4736 number-text?,
4737 (any-time, number-text?)+,
4738 style-map*
4739 }
4740any-time = number-hours | number-am-pm | number-minutes | number-seconds
4741number-time-style-attlist =
4742 attribute number:truncate-on-overflow { boolean }?
4743number-hours = element number:hours { number-hours-attlist, empty }
4744number-hours-attlist = attribute number:style { "short" | "long" }?
4745number-minutes =
4746 element number:minutes { number-minutes-attlist, empty }
4747number-minutes-attlist = attribute number:style { "short" | "long" }?
4748number-seconds =
4749 element number:seconds { number-seconds-attlist, empty }
4750number-seconds-attlist =
4751 attribute number:style { "short" | "long" }?
4752 & attribute number:decimal-places { integer }?
4753number-am-pm = element number:am-pm { empty }
4754number-boolean-style =
4755 element number:boolean-style {
4756 common-data-style-attlist,
4757 style-text-properties?,
4758 number-text?,
4759 (number-boolean, number-text?)?,
4760 style-map*
4761 }
4762number-boolean = element number:boolean { empty }
4763number-text-style =
4764 element number:text-style {
4765 common-data-style-attlist,
4766 style-text-properties?,
4767 number-text?,
4768 (number-text-content, number-text?)*,
4769 style-map*
4770 }
4771number-text = element number:text { text }
4772number-text-content = element number:text-content { empty }
4773common-data-style-attlist =
4774 attribute style:name { styleName }
4775 & attribute style:display-name { \string }?
4776 & attribute number:language { languageCode }?
4777 & attribute number:country { countryCode }?
4778 & attribute number:script { scriptCode }?
4779 & attribute number:rfc-language-tag { language }?
4780 & attribute number:title { \string }?
4781 & attribute style:volatile { boolean }?
4782 & attribute number:transliteration-format { \string }?
4783 & attribute number:transliteration-language { countryCode }?
4784 & attribute number:transliteration-country { countryCode }?
4785 & attribute number:transliteration-style {
4786 "short" | "medium" | "long"
4787 }?
4788common-auto-reorder-attlist =
4789 attribute number:automatic-order { boolean }?
4790common-format-source-attlist =
4791 attribute number:format-source { "fixed" | "language" }?
4792common-decimal-places-attlist =
4793 attribute number:decimal-places { integer }?
4794common-number-attlist =
4795 attribute number:min-integer-digits { integer }?
4796 & attribute number:grouping { boolean }?
4797common-calendar-attlist =
4798 attribute number:calendar {
4799 "gregorian"
4800 | "gengou"
4801 | "ROC"
4802 | "hanja_yoil"
4803 | "hanja"
4804 | "hijri"
4805 | "jewish"
4806 | "buddhist"
4807 | \string
4808 }?
4809style-style-content =
4810 (attribute style:family { "text" },
4811 style-text-properties?)
4812 | (attribute style:family { "paragraph" },
4813 style-paragraph-properties?,
4814 style-text-properties?)
4815 | (attribute style:family { "section" },
4816 style-section-properties?)
4817 | (attribute style:family { "ruby" },
4818 style-ruby-properties?)
4819 | (attribute style:family { "table" },
4820 style-table-properties?)
4821 | (attribute style:family { "table-column" },
4822 style-table-column-properties?)
4823 | (attribute style:family { "table-row" },
4824 style-table-row-properties?)
4825 | (attribute style:family { "table-cell" },
4826 style-table-cell-properties?,
4827 style-paragraph-properties?,
4828 style-text-properties?)
4829 | (attribute style:family { "graphic" | "presentation" },
4830 style-graphic-properties?,
4831 style-paragraph-properties?,
4832 style-text-properties?)
4833 | (attribute style:family { "drawing-page" },
4834 style-drawing-page-properties?)
4835 | (attribute style:family { "chart" },
4836 style-chart-properties?,
4837 style-graphic-properties?,
4838 style-paragraph-properties?,
4839 style-text-properties?)
4840text-linenumbering-configuration =
4841 element text:linenumbering-configuration {
4842 text-linenumbering-configuration-attlist,
4843 text-linenumbering-separator?
4844 }
4845text-linenumbering-configuration-attlist =
4846 attribute text:number-lines { boolean }?
4847 & common-num-format-attlist?
4848 & attribute text:style-name { styleNameRef }?
4849 & attribute text:increment { nonNegativeInteger }?
4850 & attribute text:number-position {
4851 "left" | "right" | "inner" | "outer"
4852 }?
4853 & attribute text:offset { nonNegativeLength }?
4854 & attribute text:count-empty-lines { boolean }?
4855 & attribute text:count-in-text-boxes { boolean }?
4856 & attribute text:restart-on-page { boolean }?
4857text-linenumbering-separator =
4858 element text:linenumbering-separator {
4859 attribute text:increment { nonNegativeInteger }?,
4860 text
4861 }
4862text-notes-configuration =
4863 element text:notes-configuration { text-notes-configuration-content }
4864text-notes-configuration-content =
4865 text-note-class
4866 & attribute text:citation-style-name { styleNameRef }?
4867 & attribute text:citation-body-style-name { styleNameRef }?
4868 & attribute text:default-style-name { styleNameRef }?
4869 & attribute text:master-page-name { styleNameRef }?
4870 & attribute text:start-value { nonNegativeInteger }?
4871 & common-num-format-prefix-suffix-attlist
4872 & common-num-format-attlist?
4873 & attribute text:start-numbering-at {
4874 "document" | "chapter" | "page"
4875 }?
4876 & attribute text:footnotes-position {
4877 "text" | "page" | "section" | "document"
4878 }?
4879 & element text:note-continuation-notice-forward { text }?
4880 & element text:note-continuation-notice-backward { text }?
4881text-bibliography-configuration =
4882 element text:bibliography-configuration {
4883 text-bibliography-configuration-attlist, text-sort-key*
4884 }
4885text-bibliography-configuration-attlist =
4886 attribute text:prefix { \string }?
4887 & attribute text:suffix { \string }?
4888 & attribute text:numbered-entries { boolean }?
4889 & attribute text:sort-by-position { boolean }?
4890 & attribute fo:language { languageCode }?
4891 & attribute fo:country { countryCode }?
4892 & attribute fo:script { scriptCode }?
4893 & attribute style:rfc-language-tag { language }?
4894 & attribute text:sort-algorithm { \string }?
4895text-sort-key = element text:sort-key { text-sort-key-attlist, empty }
4896text-sort-key-attlist =
4897 attribute text:key {
4898 "address"
4899 | "annote"
4900 | "author"
4901 | "bibliography-type"
4902 | "booktitle"
4903 | "chapter"
4904 | "custom1"
4905 | "custom2"
4906 | "custom3"
4907 | "custom4"
4908 | "custom5"
4909 | "edition"
4910 | "editor"
4911 | "howpublished"
4912 | "identifier"
4913 | "institution"
4914 | "isbn"
4915 | "issn"
4916 | "journal"
4917 | "month"
4918 | "note"
4919 | "number"
4920 | "organizations"
4921 | "pages"
4922 | "publisher"
4923 | "report-type"
4924 | "school"
4925 | "series"
4926 | "title"
4927 | "url"
4928 | "volume"
4929 | "year"
4930 },
4931 attribute text:sort-ascending { boolean }?
4932text-list-style =
4933 element text:list-style {
4934 text-list-style-attr, text-list-style-content*
4935 }
4936text-list-style-attr =
4937 attribute style:name { styleName }
4938 & attribute style:display-name { \string }?
4939 & attribute text:consecutive-numbering { boolean }?
4940text-list-style-content =
4941 element text:list-level-style-number {
4942 text-list-level-style-attr,
4943 text-list-level-style-number-attr,
4944 style-list-level-properties?,
4945 style-text-properties?
4946 }
4947 | element text:list-level-style-bullet {
4948 text-list-level-style-attr,
4949 text-list-level-style-bullet-attr,
4950 style-list-level-properties?,
4951 style-text-properties?
4952 }
4953 | element text:list-level-style-image {
4954 text-list-level-style-attr,
4955 text-list-level-style-image-attr,
4956 style-list-level-properties?
4957 }
4958text-list-level-style-number-attr =
4959 attribute text:style-name { styleNameRef }?
4960 & common-num-format-attlist
4961 & common-num-format-prefix-suffix-attlist
4962 & attribute text:display-levels { positiveInteger }?
4963 & attribute text:start-value { positiveInteger }?
4964text-list-level-style-bullet-attr =
4965 attribute text:style-name { styleNameRef }?
4966 & attribute text:bullet-char { character }
4967 & common-num-format-prefix-suffix-attlist
4968 & attribute text:bullet-relative-size { percent }?
4969text-list-level-style-image-attr =
4970 common-draw-data-attlist | office-binary-data
4971text-list-level-style-attr = attribute text:level { positiveInteger }
4972text-outline-style =
4973 element text:outline-style {
4974 text-outline-style-attr, text-outline-level-style+
4975 }
4976text-outline-style-attr = attribute style:name { styleName }
4977text-outline-level-style =
4978 element text:outline-level-style {
4979 text-outline-level-style-attlist,
4980 style-list-level-properties?,
4981 style-text-properties?
4982 }
4983text-outline-level-style-attlist =
4984 attribute text:level { positiveInteger }
4985 & attribute text:style-name { styleNameRef }?
4986 & common-num-format-attlist
4987 & common-num-format-prefix-suffix-attlist
4988 & attribute text:display-levels { positiveInteger }?
4989 & attribute text:start-value { positiveInteger }?
4990style-graphic-properties =
4991 element style:graphic-properties {
4992 style-graphic-properties-content-strict
4993 }
4994style-graphic-properties-content-strict =
4995 style-graphic-properties-attlist,
4996 style-graphic-fill-properties-attlist,
4997 style-graphic-properties-elements
4998style-drawing-page-properties =
4999 element style:drawing-page-properties {
5000 style-drawing-page-properties-content-strict
5001 }
5002style-drawing-page-properties-content-strict =
5003 style-graphic-fill-properties-attlist,
5004 style-drawing-page-properties-attlist,
5005 style-drawing-page-properties-elements
5006draw-gradient =
5007 element draw:gradient {
5008 common-draw-gradient-attlist, draw-gradient-attlist, empty
5009 }
5010common-draw-gradient-attlist =
5011 attribute draw:name { styleName }?
5012 & attribute draw:display-name { \string }?
5013 & attribute draw:style { gradient-style }
5014 & attribute draw:cx { percent }?
5015 & attribute draw:cy { percent }?
5016 & attribute draw:angle { angle }?
5017 & attribute draw:border { percent }?
5018gradient-style =
5019 "linear" | "axial" | "radial" | "ellipsoid" | "square" | "rectangular"
5020draw-gradient-attlist =
5021 attribute draw:start-color { color }?
5022 & attribute draw:end-color { color }?
5023 & attribute draw:start-intensity { zeroToHundredPercent }?
5024 & attribute draw:end-intensity { zeroToHundredPercent }?
5025svg-linearGradient =
5026 element svg:linearGradient {
5027 common-svg-gradient-attlist,
5028 attribute svg:x1 { coordinate | percent }?,
5029 attribute svg:y1 { coordinate | percent }?,
5030 attribute svg:x2 { coordinate | percent }?,
5031 attribute svg:y2 { coordinate | percent }?,
5032 svg-stop*
5033 }
5034svg-radialGradient =
5035 element svg:radialGradient {
5036 common-svg-gradient-attlist,
5037 attribute svg:cx { coordinate | percent }?,
5038 attribute svg:cy { coordinate | percent }?,
5039 attribute svg:r { coordinate | percent }?,
5040 attribute svg:fx { coordinate | percent }?,
5041 attribute svg:fy { coordinate | percent }?,
5042 svg-stop*
5043 }
5044svg-stop =
5045 element svg:stop {
5046 attribute svg:offset { double | percent },
5047 attribute svg:stop-color { color }?,
5048 attribute svg:stop-opacity { double }?
5049 }
5050common-svg-gradient-attlist =
5051 attribute svg:gradientUnits { "objectBoundingBox" }?
5052 & attribute svg:gradientTransform { \string }?
5053 & attribute svg:spreadMethod { "pad" | "reflect" | "repeat" }?
5054 & attribute draw:name { styleName }
5055 & attribute draw:display-name { \string }?
5056draw-hatch = element draw:hatch { draw-hatch-attlist, empty }
5057draw-hatch-attlist =
5058 attribute draw:name { styleName }
5059 & attribute draw:display-name { \string }?
5060 & attribute draw:style { "single" | "double" | "triple" }
5061 & attribute draw:color { color }?
5062 & attribute draw:distance { length }?
5063 & attribute draw:rotation { angle }?
5064draw-fill-image =
5065 element draw:fill-image {
5066 draw-fill-image-attlist,
5067 attribute xlink:type { "simple" },
5068 attribute xlink:href { anyIRI },
5069 attribute xlink:show { "embed" }?,
5070 attribute xlink:actuate { "onLoad" }?,
5071 empty
5072 }
5073draw-fill-image-attlist =
5074 attribute draw:name { styleName }
5075 & attribute draw:display-name { \string }?
5076 & attribute svg:width { length }?
5077 & attribute svg:height { length }?
5078draw-opacity =
5079 element draw:opacity {
5080 common-draw-gradient-attlist, draw-opacity-attlist, empty
5081 }
5082draw-opacity-attlist =
5083 attribute draw:start { zeroToHundredPercent }?,
5084 attribute draw:end { zeroToHundredPercent }?
5085draw-marker =
5086 element draw:marker {
5087 draw-marker-attlist,
5088 common-draw-viewbox-attlist,
5089 common-draw-path-data-attlist,
5090 empty
5091 }
5092draw-marker-attlist =
5093 attribute draw:name { styleName }
5094 & attribute draw:display-name { \string }?
5095draw-stroke-dash =
5096 element draw:stroke-dash { draw-stroke-dash-attlist, empty }
5097draw-stroke-dash-attlist =
5098 attribute draw:name { styleName }
5099 & attribute draw:display-name { \string }?
5100 & attribute draw:style { "rect" | "round" }?
5101 & attribute draw:dots1 { integer }?
5102 & attribute draw:dots1-length { length | percent }?
5103 & attribute draw:dots2 { integer }?
5104 & attribute draw:dots2-length { length | percent }?
5105 & attribute draw:distance { length | percent }?
5106style-presentation-page-layout =
5107 element style:presentation-page-layout {
5108 attribute style:name { styleName },
5109 attribute style:display-name { \string }?,
5110 presentation-placeholder*
5111 }
5112presentation-placeholder =
5113 element presentation:placeholder {
5114 attribute presentation:object { presentation-classes },
5115 attribute svg:x { coordinate | percent },
5116 attribute svg:y { coordinate | percent },
5117 attribute svg:width { length | percent },
5118 attribute svg:height { length | percent },
5119 empty
5120 }
5121style-page-layout-properties =
5122 element style:page-layout-properties {
5123 style-page-layout-properties-content-strict
5124 }
5125style-page-layout-properties-content-strict =
5126 style-page-layout-properties-attlist,
5127 style-page-layout-properties-elements
5128style-page-layout-properties-attlist =
5129 attribute fo:page-width { length }?
5130 & attribute fo:page-height { length }?
5131 & common-num-format-attlist?
5132 & common-num-format-prefix-suffix-attlist
5133 & attribute style:paper-tray-name { "default" | \string }?
5134 & attribute style:print-orientation { "portrait" | "landscape" }?
5135 & common-horizontal-margin-attlist
5136 & common-vertical-margin-attlist
5137 & common-margin-attlist
5138 & common-border-attlist
5139 & common-border-line-width-attlist
5140 & common-padding-attlist
5141 & common-shadow-attlist
5142 & common-background-color-attlist
5143 & attribute style:register-truth-ref-style-name { styleNameRef }?
5144 & attribute style:print {
5145 list {
5146 ("headers"
5147 | "grid"
5148 | "annotations"
5149 | "objects"
5150 | "charts"
5151 | "drawings"
5152 | "formulas"
5153 | "zero-values")*
5154 }
5155 }?
5156 & attribute style:print-page-order { "ttb" | "ltr" }?
5157 & attribute style:first-page-number { positiveInteger | "continue" }?
5158 & attribute style:scale-to { percent }?
5159 & attribute style:scale-to-pages { positiveInteger }?
5160 & attribute style:table-centering {
5161 "horizontal" | "vertical" | "both" | "none"
5162 }?
5163 & attribute style:footnote-max-height { length }?
5164 & common-writing-mode-attlist
5165 & attribute style:layout-grid-mode { "none" | "line" | "both" }?
5166 & attribute style:layout-grid-standard-mode { boolean }?
5167 & attribute style:layout-grid-base-height { length }?
5168 & attribute style:layout-grid-ruby-height { length }?
5169 & attribute style:layout-grid-lines { positiveInteger }?
5170 & attribute style:layout-grid-base-width { length }?
5171 & attribute style:layout-grid-color { color }?
5172 & attribute style:layout-grid-ruby-below { boolean }?
5173 & attribute style:layout-grid-print { boolean }?
5174 & attribute style:layout-grid-display { boolean }?
5175 & attribute style:layout-grid-snap-to { boolean }?
5176style-page-layout-properties-elements =
5177 style-background-image & style-columns & style-footnote-sep
5178style-footnote-sep =
5179 element style:footnote-sep { style-footnote-sep-attlist, empty }?
5180style-footnote-sep-attlist =
5181 attribute style:width { length }?,
5182 attribute style:rel-width { percent }?,
5183 attribute style:color { color }?,
5184 attribute style:line-style { lineStyle }?,
5185 attribute style:adjustment { "left" | "center" | "right" }?,
5186 attribute style:distance-before-sep { length }?,
5187 attribute style:distance-after-sep { length }?
5188style-header-footer-properties =
5189 element style:header-footer-properties {
5190 style-header-footer-properties-content-strict
5191 }
5192style-header-footer-properties-content-strict =
5193 style-header-footer-properties-attlist,
5194 style-header-footer-properties-elements
5195style-header-footer-properties-attlist =
5196 attribute svg:height { length }?
5197 & attribute fo:min-height { length }?
5198 & common-horizontal-margin-attlist
5199 & common-vertical-margin-attlist
5200 & common-margin-attlist
5201 & common-border-attlist
5202 & common-border-line-width-attlist
5203 & common-padding-attlist
5204 & common-background-color-attlist
5205 & common-shadow-attlist
5206 & attribute style:dynamic-spacing { boolean }?
5207style-header-footer-properties-elements = style-background-image
5208style-text-properties =
5209 element style:text-properties { style-text-properties-content-strict }
5210style-text-properties-content-strict =
5211 style-text-properties-attlist, style-text-properties-elements
5212style-text-properties-elements = empty
5213style-text-properties-attlist =
5214 attribute fo:font-variant { fontVariant }?
5215 & attribute fo:text-transform {
5216 "none" | "lowercase" | "uppercase" | "capitalize"
5217 }?
5218 & attribute fo:color { color }?
5219 & attribute style:use-window-font-color { boolean }?
5220 & attribute style:text-outline { boolean }?
5221 & attribute style:text-line-through-type { lineType }?
5222 & attribute style:text-line-through-style { lineStyle }?
5223 & attribute style:text-line-through-width { lineWidth }?
5224 & attribute style:text-line-through-color { "font-color" | color }?
5225 & attribute style:text-line-through-text { \string }?
5226 & attribute style:text-line-through-text-style { styleNameRef }?
5227 & attribute style:text-position {
5228 list { (percent | "super" | "sub"), percent? }
5229 }?
5230 & attribute style:font-name { \string }?
5231 & attribute style:font-name-asian { \string }?
5232 & attribute style:font-name-complex { \string }?
5233 & attribute fo:font-family { \string }?
5234 & attribute style:font-family-asian { \string }?
5235 & attribute style:font-family-complex { \string }?
5236 & attribute style:font-family-generic { fontFamilyGeneric }?
5237 & attribute style:font-family-generic-asian { fontFamilyGeneric }?
5238 & attribute style:font-family-generic-complex { fontFamilyGeneric }?
5239 & attribute style:font-style-name { \string }?
5240 & attribute style:font-style-name-asian { \string }?
5241 & attribute style:font-style-name-complex { \string }?
5242 & attribute style:font-pitch { fontPitch }?
5243 & attribute style:font-pitch-asian { fontPitch }?
5244 & attribute style:font-pitch-complex { fontPitch }?
5245 & attribute style:font-charset { textEncoding }?
5246 & attribute style:font-charset-asian { textEncoding }?
5247 & attribute style:font-charset-complex { textEncoding }?
5248 & attribute fo:font-size { positiveLength | percent }?
5249 & attribute style:font-size-asian { positiveLength | percent }?
5250 & attribute style:font-size-complex { positiveLength | percent }?
5251 & attribute style:font-size-rel { length }?
5252 & attribute style:font-size-rel-asian { length }?
5253 & attribute style:font-size-rel-complex { length }?
5254 & attribute style:script-type {
5255 "latin" | "asian" | "complex" | "ignore"
5256 }?
5257 & attribute fo:letter-spacing { length | "normal" }?
5258 & attribute fo:language { languageCode }?
5259 & attribute style:language-asian { languageCode }?
5260 & attribute style:language-complex { languageCode }?
5261 & attribute fo:country { countryCode }?
5262 & attribute style:country-asian { countryCode }?
5263 & attribute style:country-complex { countryCode }?
5264 & attribute fo:script { scriptCode }?
5265 & attribute style:script-asian { scriptCode }?
5266 & attribute style:script-complex { scriptCode }?
5267 & attribute style:rfc-language-tag { language }?
5268 & attribute style:rfc-language-tag-asian { language }?
5269 & attribute style:rfc-language-tag-complex { language }?
5270 & attribute fo:font-style { fontStyle }?
5271 & attribute style:font-style-asian { fontStyle }?
5272 & attribute style:font-style-complex { fontStyle }?
5273 & attribute style:font-relief { "none" | "embossed" | "engraved" }?
5274 & attribute fo:text-shadow { shadowType }?
5275 & attribute style:text-underline-type { lineType }?
5276 & attribute style:text-underline-style { lineStyle }?
5277 & attribute style:text-underline-width { lineWidth }?
5278 & attribute style:text-underline-color { "font-color" | color }?
5279 & attribute style:text-overline-type { lineType }?
5280 & attribute style:text-overline-style { lineStyle }?
5281 & attribute style:text-overline-width { lineWidth }?
5282 & attribute style:text-overline-color { "font-color" | color }?
5283 & attribute style:text-overline-mode { lineMode }?
5284 & attribute fo:font-weight { fontWeight }?
5285 & attribute style:font-weight-asian { fontWeight }?
5286 & attribute style:font-weight-complex { fontWeight }?
5287 & attribute style:text-underline-mode { lineMode }?
5288 & attribute style:text-line-through-mode { lineMode }?
5289 & attribute style:letter-kerning { boolean }?
5290 & attribute style:text-blinking { boolean }?
5291 & common-background-color-attlist
5292 & attribute style:text-combine { "none" | "letters" | "lines" }?
5293 & attribute style:text-combine-start-char { character }?
5294 & attribute style:text-combine-end-char { character }?
5295 & attribute style:text-emphasize {
5296 "none"
5297 | list {
5298 ("none" | "accent" | "dot" | "circle" | "disc"),
5299 ("above" | "below")
5300 }
5301 }?
5302 & attribute style:text-scale { percent }?
5303 & attribute style:text-rotation-angle { angle }?
5304 & attribute style:text-rotation-scale { "fixed" | "line-height" }?
5305 & attribute fo:hyphenate { boolean }?
5306 & attribute fo:hyphenation-remain-char-count { positiveInteger }?
5307 & attribute fo:hyphenation-push-char-count { positiveInteger }?
5308 & (attribute text:display { "true" }
5309 | attribute text:display { "none" }
5310 | (attribute text:display { "condition" },
5311 attribute text:condition { "none" })
5312 | empty)
5313fontVariant = "normal" | "small-caps"
5314fontFamilyGeneric =
5315 "roman" | "swiss" | "modern" | "decorative" | "script" | "system"
5316fontPitch = "fixed" | "variable"
5317textEncoding = xsd:string { pattern = "[A-Za-z][A-Za-z0-9._\-]*" }
5318fontStyle = "normal" | "italic" | "oblique"
5319shadowType = "none" | \string
5320lineType = "none" | "single" | "double"
5321lineStyle =
5322 "none"
5323 | "solid"
5324 | "dotted"
5325 | "dash"
5326 | "long-dash"
5327 | "dot-dash"
5328 | "dot-dot-dash"
5329 | "wave"
5330lineWidth =
5331 "auto"
5332 | "normal"
5333 | "bold"
5334 | "thin"
5335 | "medium"
5336 | "thick"
5337 | positiveInteger
5338 | percent
5339 | positiveLength
5340fontWeight =
5341 "normal"
5342 | "bold"
5343 | "100"
5344 | "200"
5345 | "300"
5346 | "400"
5347 | "500"
5348 | "600"
5349 | "700"
5350 | "800"
5351 | "900"
5352lineMode = "continuous" | "skip-white-space"
5353style-paragraph-properties =
5354 element style:paragraph-properties {
5355 style-paragraph-properties-content-strict
5356 }
5357style-paragraph-properties-content-strict =
5358 style-paragraph-properties-attlist,
5359 style-paragraph-properties-elements
5360style-paragraph-properties-attlist =
5361 attribute fo:line-height { "normal" | nonNegativeLength | percent }?
5362 & attribute style:line-height-at-least { nonNegativeLength }?
5363 & attribute style:line-spacing { length }?
5364 & attribute style:font-independent-line-spacing { boolean }?
5365 & common-text-align
5366 & attribute fo:text-align-last { "start" | "center" | "justify" }?
5367 & attribute style:justify-single-word { boolean }?
5368 & attribute fo:keep-together { "auto" | "always" }?
5369 & attribute fo:widows { nonNegativeInteger }?
5370 & attribute fo:orphans { nonNegativeInteger }?
5371 & attribute style:tab-stop-distance { nonNegativeLength }?
5372 & attribute fo:hyphenation-keep { "auto" | "page" }?
5373 & attribute fo:hyphenation-ladder-count {
5374 "no-limit" | positiveInteger
5375 }?
5376 & attribute style:register-true { boolean }?
5377 & common-horizontal-margin-attlist
5378 & attribute fo:text-indent { length | percent }?
5379 & attribute style:auto-text-indent { boolean }?
5380 & common-vertical-margin-attlist
5381 & common-margin-attlist
5382 & common-break-attlist
5383 & common-background-color-attlist
5384 & common-border-attlist
5385 & common-border-line-width-attlist
5386 & attribute style:join-border { boolean }?
5387 & common-padding-attlist
5388 & common-shadow-attlist
5389 & common-keep-with-next-attlist
5390 & attribute text:number-lines { boolean }?
5391 & attribute text:line-number { nonNegativeInteger }?
5392 & attribute style:text-autospace { "none" | "ideograph-alpha" }?
5393 & attribute style:punctuation-wrap { "simple" | "hanging" }?
5394 & attribute style:line-break { "normal" | "strict" }?
5395 & attribute style:vertical-align {
5396 "top" | "middle" | "bottom" | "auto" | "baseline"
5397 }?
5398 & common-writing-mode-attlist
5399 & attribute style:writing-mode-automatic { boolean }?
5400 & attribute style:snap-to-layout-grid { boolean }?
5401 & common-page-number-attlist
5402 & common-background-transparency-attlist
5403common-text-align =
5404 attribute fo:text-align {
5405 "start" | "end" | "left" | "right" | "center" | "justify"
5406 }?
5407style-paragraph-properties-elements =
5408 style-tab-stops & style-drop-cap & style-background-image
5409style-tab-stops = element style:tab-stops { style-tab-stop* }?
5410style-tab-stop =
5411 element style:tab-stop { style-tab-stop-attlist, empty }
5412style-tab-stop-attlist =
5413 attribute style:position { length }
5414 & (attribute style:type { "left" | "center" | "right" }?
5415 | (attribute style:type { "char" },
5416 style-tab-stop-char-attlist))
5417 & attribute style:leader-type { lineType }?
5418 & attribute style:leader-style { lineStyle }?
5419 & attribute style:leader-width { lineWidth }?
5420 & attribute style:leader-color { "font-color" | color }?
5421 & attribute style:leader-text { character }?
5422 & attribute style:leader-text-style { styleNameRef }?
5423style-tab-stop-char-attlist = attribute style:char { character }
5424style-drop-cap =
5425 element style:drop-cap { style-drop-cap-attlist, empty }?
5426style-drop-cap-attlist =
5427 attribute style:length { "word" | positiveInteger }?
5428 & attribute style:lines { positiveInteger }?
5429 & attribute style:distance { length }?
5430 & attribute style:style-name { styleNameRef }?
5431common-horizontal-margin-attlist =
5432 attribute fo:margin-left { length | percent }?,
5433 attribute fo:margin-right { length | percent }?
5434common-vertical-margin-attlist =
5435 attribute fo:margin-top { nonNegativeLength | percent }?,
5436 attribute fo:margin-bottom { nonNegativeLength | percent }?
5437common-margin-attlist =
5438 attribute fo:margin { nonNegativeLength | percent }?
5439common-break-attlist =
5440 attribute fo:break-before { "auto" | "column" | "page" }?,
5441 attribute fo:break-after { "auto" | "column" | "page" }?
5442common-background-color-attlist =
5443 attribute fo:background-color { "transparent" | color }?
5444style-background-image =
5445 element style:background-image {
5446 style-background-image-attlist,
5447 (common-draw-data-attlist | office-binary-data | empty)
5448 }?
5449style-background-image-attlist =
5450 attribute style:repeat { "no-repeat" | "repeat" | "stretch" }?
5451 & attribute style:position {
5452 "left"
5453 | "center"
5454 | "right"
5455 | "top"
5456 | "bottom"
5457 | list { horiBackPos, vertBackPos }
5458 | list { vertBackPos, horiBackPos }
5459 }?
5460 & attribute style:filter-name { \string }?
5461 & attribute draw:opacity { zeroToHundredPercent }?
5462horiBackPos = "left" | "center" | "right"
5463vertBackPos = "top" | "center" | "bottom"
5464common-border-attlist =
5465 attribute fo:border { \string }?,
5466 attribute fo:border-top { \string }?,
5467 attribute fo:border-bottom { \string }?,
5468 attribute fo:border-left { \string }?,
5469 attribute fo:border-right { \string }?
5470common-border-line-width-attlist =
5471 attribute style:border-line-width { borderWidths }?,
5472 attribute style:border-line-width-top { borderWidths }?,
5473 attribute style:border-line-width-bottom { borderWidths }?,
5474 attribute style:border-line-width-left { borderWidths }?,
5475 attribute style:border-line-width-right { borderWidths }?
5476borderWidths = list { positiveLength, positiveLength, positiveLength }
5477common-padding-attlist =
5478 attribute fo:padding { nonNegativeLength }?,
5479 attribute fo:padding-top { nonNegativeLength }?,
5480 attribute fo:padding-bottom { nonNegativeLength }?,
5481 attribute fo:padding-left { nonNegativeLength }?,
5482 attribute fo:padding-right { nonNegativeLength }?
5483common-shadow-attlist = attribute style:shadow { shadowType }?
5484common-keep-with-next-attlist =
5485 attribute fo:keep-with-next { "auto" | "always" }?
5486common-writing-mode-attlist =
5487 attribute style:writing-mode {
5488 "lr-tb" | "rl-tb" | "tb-rl" | "tb-lr" | "lr" | "rl" | "tb" | "page"
5489 }?
5490common-page-number-attlist =
5491 attribute style:page-number { positiveInteger | "auto" }?
5492common-background-transparency-attlist =
5493 attribute style:background-transparency { zeroToHundredPercent }?
5494style-ruby-properties =
5495 element style:ruby-properties { style-ruby-properties-content-strict }
5496style-ruby-properties-content-strict =
5497 style-ruby-properties-attlist, style-ruby-properties-elements
5498style-ruby-properties-elements = empty
5499style-ruby-properties-attlist =
5500 attribute style:ruby-position { "above" | "below" }?
5501 & attribute style:ruby-align {
5502 "left"
5503 | "center"
5504 | "right"
5505 | "distribute-letter"
5506 | "distribute-space"
5507 }?
5508style-section-properties =
5509 element style:section-properties {
5510 style-section-properties-content-strict
5511 }
5512style-section-properties-content-strict =
5513 style-section-properties-attlist, style-section-properties-elements
5514style-section-properties-attlist =
5515 common-background-color-attlist
5516 & common-horizontal-margin-attlist
5517 & attribute style:protect { boolean }?
5518 & common-editable-attlist
5519 & attribute text:dont-balance-text-columns { boolean }?
5520 & common-writing-mode-attlist
5521style-section-properties-elements =
5522 style-background-image & style-columns & text-notes-configuration*
5523style-columns =
5524 element style:columns {
5525 style-columns-attlist, style-column-sep?, style-column*
5526 }?
5527style-columns-attlist =
5528 attribute fo:column-count { positiveInteger }
5529 & attribute fo:column-gap { length }?
5530style-column = element style:column { style-column-attlist }
5531style-column-attlist =
5532 attribute style:rel-width { relativeLength }
5533 & attribute fo:start-indent { length }?
5534 & attribute fo:end-indent { length }?
5535 & attribute fo:space-before { length }?
5536 & attribute fo:space-after { length }?
5537style-column-sep = element style:column-sep { style-column-sep-attlist }
5538style-column-sep-attlist =
5539 attribute style:style {
5540 "none" | "solid" | "dotted" | "dashed" | "dot-dashed"
5541 }?
5542 & attribute style:width { length }
5543 & attribute style:height { zeroToHundredPercent }?
5544 & attribute style:vertical-align { "top" | "middle" | "bottom" }?
5545 & attribute style:color { color }?
5546style-table-properties =
5547 element style:table-properties {
5548 style-table-properties-content-strict
5549 }
5550style-table-properties-content-strict =
5551 style-table-properties-attlist, style-table-properties-elements
5552style-table-properties-attlist =
5553 attribute style:width { positiveLength }?
5554 & attribute style:rel-width { percent }?
5555 & attribute table:align { "left" | "center" | "right" | "margins" }?
5556 & common-horizontal-margin-attlist
5557 & common-vertical-margin-attlist
5558 & common-margin-attlist
5559 & common-page-number-attlist
5560 & common-break-attlist
5561 & common-background-color-attlist
5562 & common-shadow-attlist
5563 & common-keep-with-next-attlist
5564 & attribute style:may-break-between-rows { boolean }?
5565 & attribute table:border-model { "collapsing" | "separating" }?
5566 & common-writing-mode-attlist
5567 & attribute table:display { boolean }?
5568style-table-properties-elements = style-background-image
5569style-table-column-properties =
5570 element style:table-column-properties {
5571 style-table-column-properties-content-strict
5572 }
5573style-table-column-properties-content-strict =
5574 style-table-column-properties-attlist,
5575 style-table-column-properties-elements
5576style-table-column-properties-elements = empty
5577style-table-column-properties-attlist =
5578 attribute style:column-width { positiveLength }?
5579 & attribute style:rel-column-width { relativeLength }?
5580 & attribute style:use-optimal-column-width { boolean }?
5581 & common-break-attlist
5582style-table-row-properties =
5583 element style:table-row-properties {
5584 style-table-row-properties-content-strict
5585 }
5586style-table-row-properties-content-strict =
5587 style-table-row-properties-attlist,
5588 style-table-row-properties-elements
5589style-table-row-properties-attlist =
5590 attribute style:row-height { positiveLength }?
5591 & attribute style:min-row-height { nonNegativeLength }?
5592 & attribute style:use-optimal-row-height { boolean }?
5593 & common-background-color-attlist
5594 & common-break-attlist
5595 & attribute fo:keep-together { "auto" | "always" }?
5596style-table-row-properties-elements = style-background-image
5597style-table-cell-properties =
5598 element style:table-cell-properties {
5599 style-table-cell-properties-content-strict
5600 }
5601style-table-cell-properties-content-strict =
5602 style-table-cell-properties-attlist,
5603 style-table-cell-properties-elements
5604style-table-cell-properties-attlist =
5605 attribute style:vertical-align {
5606 "top" | "middle" | "bottom" | "automatic"
5607 }?
5608 & attribute style:text-align-source { "fix" | "value-type" }?
5609 & common-style-direction-attlist
5610 & attribute style:glyph-orientation-vertical {
5611 "auto" | "0" | "0deg" | "0rad" | "0grad"
5612 }?
5613 & common-writing-mode-attlist
5614 & common-shadow-attlist
5615 & common-background-color-attlist
5616 & common-border-attlist
5617 & attribute style:diagonal-tl-br { \string }?
5618 & attribute style:diagonal-tl-br-widths { borderWidths }?
5619 & attribute style:diagonal-bl-tr { \string }?
5620 & attribute style:diagonal-bl-tr-widths { borderWidths }?
5621 & common-border-line-width-attlist
5622 & common-padding-attlist
5623 & attribute fo:wrap-option { "no-wrap" | "wrap" }?
5624 & common-rotation-angle-attlist
5625 & attribute style:rotation-align {
5626 "none" | "bottom" | "top" | "center"
5627 }?
5628 & attribute style:cell-protect {
5629 "none"
5630 | "hidden-and-protected"
5631 | list { ("protected" | "formula-hidden")+ }
5632 }?
5633 & attribute style:print-content { boolean }?
5634 & attribute style:decimal-places { nonNegativeInteger }?
5635 & attribute style:repeat-content { boolean }?
5636 & attribute style:shrink-to-fit { boolean }?
5637common-style-direction-attlist =
5638 attribute style:direction { "ltr" | "ttb" }?
5639style-table-cell-properties-elements = style-background-image
5640common-rotation-angle-attlist =
5641 attribute style:rotation-angle { angle }?
5642style-list-level-properties =
5643 element style:list-level-properties {
5644 style-list-level-properties-content-strict
5645 }
5646style-list-level-properties-content-strict =
5647 style-list-level-properties-attlist,
5648 style-list-level-properties-elements
5649style-list-level-properties-attlist =
5650 common-text-align
5651 & attribute text:space-before { length }?
5652 & attribute text:min-label-width { nonNegativeLength }?
5653 & attribute text:min-label-distance { nonNegativeLength }?
5654 & attribute style:font-name { \string }?
5655 & attribute fo:width { positiveLength }?
5656 & attribute fo:height { positiveLength }?
5657 & common-vertical-rel-attlist
5658 & common-vertical-pos-attlist
5659 & attribute text:list-level-position-and-space-mode {
5660 "label-width-and-position" | "label-alignment"
5661 }?
5662style-list-level-properties-elements = style-list-level-label-alignment
5663style-list-level-label-alignment =
5664 element style:list-level-label-alignment {
5665 style-list-level-label-alignment-attlist, empty
5666 }?
5667style-list-level-label-alignment-attlist =
5668 attribute text:label-followed-by { "listtab" | "space" | "nothing" }
5669 & attribute text:list-tab-stop-position { length }?
5670 & attribute fo:text-indent { length }?
5671 & attribute fo:margin-left { length }?
5672style-graphic-properties-attlist =
5673 attribute draw:stroke { "none" | "dash" | "solid" }?
5674 & attribute draw:stroke-dash { styleNameRef }?
5675 & attribute draw:stroke-dash-names { styleNameRefs }?
5676 & attribute svg:stroke-width { length }?
5677 & attribute svg:stroke-color { color }?
5678 & attribute draw:marker-start { styleNameRef }?
5679 & attribute draw:marker-end { styleNameRef }?
5680 & attribute draw:marker-start-width { length }?
5681 & attribute draw:marker-end-width { length }?
5682 & attribute draw:marker-start-center { boolean }?
5683 & attribute draw:marker-end-center { boolean }?
5684 & attribute svg:stroke-opacity {
5685 xsd:double { minInclusive = "0" maxInclusive = "1" }
5686 | zeroToHundredPercent
5687 }?
5688 & attribute draw:stroke-linejoin {
5689 "miter" | "round" | "bevel" | "middle" | "none"
5690 }?
5691 & attribute svg:stroke-linecap { "butt" | "square" | "round" }?
5692 & attribute draw:symbol-color { color }?
5693 & attribute text:animation {
5694 "none" | "scroll" | "alternate" | "slide"
5695 }?
5696 & attribute text:animation-direction {
5697 "left" | "right" | "up" | "down"
5698 }?
5699 & attribute text:animation-start-inside { boolean }?
5700 & attribute text:animation-stop-inside { boolean }?
5701 & attribute text:animation-repeat { nonNegativeInteger }?
5702 & attribute text:animation-delay { duration }?
5703 & attribute text:animation-steps { length }?
5704 & attribute draw:auto-grow-width { boolean }?
5705 & attribute draw:auto-grow-height { boolean }?
5706 & attribute draw:fit-to-size { boolean }?
5707 & attribute draw:fit-to-contour { boolean }?
5708 & attribute draw:textarea-vertical-align {
5709 "top" | "middle" | "bottom" | "justify"
5710 }?
5711 & attribute draw:textarea-horizontal-align {
5712 "left" | "center" | "right" | "justify"
5713 }?
5714 & attribute fo:wrap-option { "no-wrap" | "wrap" }?
5715 & attribute style:shrink-to-fit { boolean }?
5716 & attribute draw:color-mode {
5717 "greyscale" | "mono" | "watermark" | "standard"
5718 }?
5719 & attribute draw:color-inversion { boolean }?
5720 & attribute draw:luminance { zeroToHundredPercent }?
5721 & attribute draw:contrast { percent }?
5722 & attribute draw:gamma { percent }?
5723 & attribute draw:red { signedZeroToHundredPercent }?
5724 & attribute draw:green { signedZeroToHundredPercent }?
5725 & attribute draw:blue { signedZeroToHundredPercent }?
5726 & attribute draw:image-opacity { zeroToHundredPercent }?
5727 & attribute draw:shadow { "visible" | "hidden" }?
5728 & attribute draw:shadow-offset-x { length }?
5729 & attribute draw:shadow-offset-y { length }?
5730 & attribute draw:shadow-color { color }?
5731 & attribute draw:shadow-opacity { zeroToHundredPercent }?
5732 & attribute draw:start-line-spacing-horizontal { distance }?
5733 & attribute draw:start-line-spacing-vertical { distance }?
5734 & attribute draw:end-line-spacing-horizontal { distance }?
5735 & attribute draw:end-line-spacing-vertical { distance }?
5736 & attribute draw:line-distance { distance }?
5737 & attribute draw:guide-overhang { length }?
5738 & attribute draw:guide-distance { distance }?
5739 & attribute draw:start-guide { length }?
5740 & attribute draw:end-guide { length }?
5741 & attribute draw:placing { "below" | "above" }?
5742 & attribute draw:parallel { boolean }?
5743 & attribute draw:measure-align {
5744 "automatic" | "left-outside" | "inside" | "right-outside"
5745 }?
5746 & attribute draw:measure-vertical-align {
5747 "automatic" | "above" | "below" | "center"
5748 }?
5749 & attribute draw:unit {
5750 "automatic"
5751 | "mm"
5752 | "cm"
5753 | "m"
5754 | "km"
5755 | "pt"
5756 | "pc"
5757 | "inch"
5758 | "ft"
5759 | "mi"
5760 }?
5761 & attribute draw:show-unit { boolean }?
5762 & attribute draw:decimal-places { nonNegativeInteger }?
5763 & attribute draw:caption-type {
5764 "straight-line" | "angled-line" | "angled-connector-line"
5765 }?
5766 & attribute draw:caption-angle-type { "fixed" | "free" }?
5767 & attribute draw:caption-angle { angle }?
5768 & attribute draw:caption-gap { distance }?
5769 & attribute draw:caption-escape-direction {
5770 "horizontal" | "vertical" | "auto"
5771 }?
5772 & attribute draw:caption-escape { length | percent }?
5773 & attribute draw:caption-line-length { length }?
5774 & attribute draw:caption-fit-line-length { boolean }?
5775 & attribute dr3d:horizontal-segments { nonNegativeInteger }?
5776 & attribute dr3d:vertical-segments { nonNegativeInteger }?
5777 & attribute dr3d:edge-rounding { percent }?
5778 & attribute dr3d:edge-rounding-mode { "correct" | "attractive" }?
5779 & attribute dr3d:back-scale { percent }?
5780 & attribute dr3d:depth { length }?
5781 & attribute dr3d:backface-culling { "enabled" | "disabled" }?
5782 & attribute dr3d:end-angle { angle }?
5783 & attribute dr3d:close-front { boolean }?
5784 & attribute dr3d:close-back { boolean }?
5785 & attribute dr3d:lighting-mode { "standard" | "double-sided" }?
5786 & attribute dr3d:normals-kind { "object" | "flat" | "sphere" }?
5787 & attribute dr3d:normals-direction { "normal" | "inverse" }?
5788 & attribute dr3d:texture-generation-mode-x {
5789 "object" | "parallel" | "sphere"
5790 }?
5791 & attribute dr3d:texture-generation-mode-y {
5792 "object" | "parallel" | "sphere"
5793 }?
5794 & attribute dr3d:texture-kind { "luminance" | "intensity" | "color" }?
5795 & attribute dr3d:texture-filter { "enabled" | "disabled" }?
5796 & attribute dr3d:texture-mode { "replace" | "modulate" | "blend" }?
5797 & attribute dr3d:ambient-color { color }?
5798 & attribute dr3d:emissive-color { color }?
5799 & attribute dr3d:specular-color { color }?
5800 & attribute dr3d:diffuse-color { color }?
5801 & attribute dr3d:shininess { percent }?
5802 & attribute dr3d:shadow { "visible" | "hidden" }?
5803 & common-draw-rel-size-attlist
5804 & attribute fo:min-width { length | percent }?
5805 & attribute fo:min-height { length | percent }?
5806 & attribute fo:max-height { length | percent }?
5807 & attribute fo:max-width { length | percent }?
5808 & common-horizontal-margin-attlist
5809 & common-vertical-margin-attlist
5810 & common-margin-attlist
5811 & attribute style:print-content { boolean }?
5812 & attribute style:protect {
5813 "none"
5814 | list { ("content" | "position" | "size")+ }
5815 }?
5816 & attribute style:horizontal-pos {
5817 "left"
5818 | "center"
5819 | "right"
5820 | "from-left"
5821 | "inside"
5822 | "outside"
5823 | "from-inside"
5824 }?
5825 & attribute svg:x { coordinate }?
5826 & attribute style:horizontal-rel {
5827 "page"
5828 | "page-content"
5829 | "page-start-margin"
5830 | "page-end-margin"
5831 | "frame"
5832 | "frame-content"
5833 | "frame-start-margin"
5834 | "frame-end-margin"
5835 | "paragraph"
5836 | "paragraph-content"
5837 | "paragraph-start-margin"
5838 | "paragraph-end-margin"
5839 | "char"
5840 }?
5841 & common-vertical-pos-attlist
5842 & common-vertical-rel-attlist
5843 & common-text-anchor-attlist
5844 & common-border-attlist
5845 & common-border-line-width-attlist
5846 & common-padding-attlist
5847 & common-shadow-attlist
5848 & common-background-color-attlist
5849 & common-background-transparency-attlist
5850 & common-editable-attlist
5851 & attribute style:wrap {
5852 "none"
5853 | "left"
5854 | "right"
5855 | "parallel"
5856 | "dynamic"
5857 | "run-through"
5858 | "biggest"
5859 }?
5860 & attribute style:wrap-dynamic-threshold { nonNegativeLength }?
5861 & attribute style:number-wrapped-paragraphs {
5862 "no-limit" | positiveInteger
5863 }?
5864 & attribute style:wrap-contour { boolean }?
5865 & attribute style:wrap-contour-mode { "full" | "outside" }?
5866 & attribute style:run-through { "foreground" | "background" }?
5867 & attribute style:flow-with-text { boolean }?
5868 & attribute style:overflow-behavior {
5869 "clip" | "auto-create-new-frame"
5870 }?
5871 & attribute style:mirror {
5872 "none"
5873 | "vertical"
5874 | horizontal-mirror
5875 | list { "vertical", horizontal-mirror }
5876 | list { horizontal-mirror, "vertical" }
5877 }?
5878 & attribute fo:clip { "auto" | clipShape }?
5879 & attribute draw:wrap-influence-on-position {
5880 "iterative" | "once-concurrent" | "once-successive"
5881 }?
5882 & common-writing-mode-attlist
5883 & attribute draw:frame-display-scrollbar { boolean }?
5884 & attribute draw:frame-display-border { boolean }?
5885 & attribute draw:frame-margin-horizontal { nonNegativePixelLength }?
5886 & attribute draw:frame-margin-vertical { nonNegativePixelLength }?
5887 & attribute draw:visible-area-left { nonNegativeLength }?
5888 & attribute draw:visible-area-top { nonNegativeLength }?
5889 & attribute draw:visible-area-width { positiveLength }?
5890 & attribute draw:visible-area-height { positiveLength }?
5891 & attribute draw:draw-aspect {
5892 "content" | "thumbnail" | "icon" | "print-view"
5893 }?
5894 & attribute draw:ole-draw-aspect { nonNegativeInteger }?
5895style-graphic-fill-properties-attlist =
5896 attribute draw:fill {
5897 "none" | "solid" | "bitmap" | "gradient" | "hatch"
5898 }?
5899 & attribute draw:fill-color { color }?
5900 & attribute draw:secondary-fill-color { color }?
5901 & attribute draw:fill-gradient-name { styleNameRef }?
5902 & attribute draw:gradient-step-count { nonNegativeInteger }?
5903 & attribute draw:fill-hatch-name { styleNameRef }?
5904 & attribute draw:fill-hatch-solid { boolean }?
5905 & attribute draw:fill-image-name { styleNameRef }?
5906 & attribute style:repeat { "no-repeat" | "repeat" | "stretch" }?
5907 & attribute draw:fill-image-width { length | percent }?
5908 & attribute draw:fill-image-height { length | percent }?
5909 & attribute draw:fill-image-ref-point-x { percent }?
5910 & attribute draw:fill-image-ref-point-y { percent }?
5911 & attribute draw:fill-image-ref-point {
5912 "top-left"
5913 | "top"
5914 | "top-right"
5915 | "left"
5916 | "center"
5917 | "right"
5918 | "bottom-left"
5919 | "bottom"
5920 | "bottom-right"
5921 }?
5922 & attribute draw:tile-repeat-offset {
5923 list { zeroToHundredPercent, ("horizontal" | "vertical") }
5924 }?
5925 & attribute draw:opacity { zeroToHundredPercent }?
5926 & attribute draw:opacity-name { styleNameRef }?
5927 & attribute svg:fill-rule { "nonzero" | "evenodd" }?
5928style-graphic-properties-elements =
5929 text-list-style? & style-background-image & style-columns
5930common-vertical-pos-attlist =
5931 attribute style:vertical-pos {
5932 "top" | "middle" | "bottom" | "from-top" | "below"
5933 }?,
5934 attribute svg:y { coordinate }?
5935common-vertical-rel-attlist =
5936 attribute style:vertical-rel {
5937 "page"
5938 | "page-content"
5939 | "frame"
5940 | "frame-content"
5941 | "paragraph"
5942 | "paragraph-content"
5943 | "char"
5944 | "line"
5945 | "baseline"
5946 | "text"
5947 }?
5948common-editable-attlist = attribute style:editable { boolean }?
5949horizontal-mirror =
5950 "horizontal" | "horizontal-on-odd" | "horizontal-on-even"
5951clipShape =
5952 xsd:string {
5953 pattern =
5954 "rect\([ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)))|(auto))([ ]*,[ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))))|(auto)){3}[ ]*\)"
5955 }
5956nonNegativePixelLength =
5957 xsd:string { pattern = "([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)" }
5958style-chart-properties =
5959 element style:chart-properties {
5960 style-chart-properties-content-strict
5961 }
5962style-chart-properties-content-strict =
5963 style-chart-properties-attlist, style-chart-properties-elements
5964style-chart-properties-elements = empty
5965style-chart-properties-attlist =
5966 attribute chart:scale-text { boolean }?
5967 & attribute chart:three-dimensional { boolean }?
5968 & attribute chart:deep { boolean }?
5969 & attribute chart:right-angled-axes { boolean }?
5970 & (attribute chart:symbol-type { "none" }
5971 | attribute chart:symbol-type { "automatic" }
5972 | (attribute chart:symbol-type { "named-symbol" },
5973 attribute chart:symbol-name {
5974 "square"
5975 | "diamond"
5976 | "arrow-down"
5977 | "arrow-up"
5978 | "arrow-right"
5979 | "arrow-left"
5980 | "bow-tie"
5981 | "hourglass"
5982 | "circle"
5983 | "star"
5984 | "x"
5985 | "plus"
5986 | "asterisk"
5987 | "horizontal-bar"
5988 | "vertical-bar"
5989 })
5990 | (attribute chart:symbol-type { "image" },
5991 element chart:symbol-image {
5992 attribute xlink:href { anyIRI }
5993 })
5994 | empty)
5995 & attribute chart:symbol-width { nonNegativeLength }?
5996 & attribute chart:symbol-height { nonNegativeLength }?
5997 & attribute chart:sort-by-x-values { boolean }?
5998 & attribute chart:vertical { boolean }?
5999 & attribute chart:connect-bars { boolean }?
6000 & attribute chart:gap-width { integer }?
6001 & attribute chart:overlap { integer }?
6002 & attribute chart:group-bars-per-axis { boolean }?
6003 & attribute chart:japanese-candle-stick { boolean }?
6004 & attribute chart:interpolation {
6005 "none" | "cubic-spline" | "b-spline"
6006 }?
6007 & attribute chart:spline-order { positiveInteger }?
6008 & attribute chart:spline-resolution { positiveInteger }?
6009 & attribute chart:pie-offset { nonNegativeInteger }?
6010 & attribute chart:angle-offset { angle }?
6011 & attribute chart:hole-size { percent }?
6012 & attribute chart:lines { boolean }?
6013 & attribute chart:solid-type {
6014 "cuboid" | "cylinder" | "cone" | "pyramid"
6015 }?
6016 & attribute chart:stacked { boolean }?
6017 & attribute chart:percentage { boolean }?
6018 & attribute chart:treat-empty-cells {
6019 "use-zero" | "leave-gap" | "ignore"
6020 }?
6021 & attribute chart:link-data-style-to-source { boolean }?
6022 & attribute chart:logarithmic { boolean }?
6023 & attribute chart:maximum { double }?
6024 & attribute chart:minimum { double }?
6025 & attribute chart:origin { double }?
6026 & attribute chart:interval-major { double }?
6027 & attribute chart:interval-minor-divisor { positiveInteger }?
6028 & attribute chart:tick-marks-major-inner { boolean }?
6029 & attribute chart:tick-marks-major-outer { boolean }?
6030 & attribute chart:tick-marks-minor-inner { boolean }?
6031 & attribute chart:tick-marks-minor-outer { boolean }?
6032 & attribute chart:reverse-direction { boolean }?
6033 & attribute chart:display-label { boolean }?
6034 & attribute chart:text-overlap { boolean }?
6035 & attribute text:line-break { boolean }?
6036 & attribute chart:label-arrangement {
6037 "side-by-side" | "stagger-even" | "stagger-odd"
6038 }?
6039 & common-style-direction-attlist
6040 & common-rotation-angle-attlist
6041 & attribute chart:data-label-number {
6042 "none" | "value" | "percentage" | "value-and-percentage"
6043 }?
6044 & attribute chart:data-label-text { boolean }?
6045 & attribute chart:data-label-symbol { boolean }?
6046 & element chart:label-separator { text-p }?
6047 & attribute chart:label-position { labelPositions }?
6048 & attribute chart:label-position-negative { labelPositions }?
6049 & attribute chart:visible { boolean }?
6050 & attribute chart:auto-position { boolean }?
6051 & attribute chart:auto-size { boolean }?
6052 & attribute chart:mean-value { boolean }?
6053 & attribute chart:error-category {
6054 "none"
6055 | "variance"
6056 | "standard-deviation"
6057 | "percentage"
6058 | "error-margin"
6059 | "constant"
6060 | "standard-error"
6061 | "cell-range"
6062 }?
6063 & attribute chart:error-percentage { double }?
6064 & attribute chart:error-margin { double }?
6065 & attribute chart:error-lower-limit { double }?
6066 & attribute chart:error-upper-limit { double }?
6067 & attribute chart:error-upper-indicator { boolean }?
6068 & attribute chart:error-lower-indicator { boolean }?
6069 & attribute chart:error-lower-range { cellRangeAddressList }?
6070 & attribute chart:error-upper-range { cellRangeAddressList }?
6071 & attribute chart:series-source { "columns" | "rows" }?
6072 & attribute chart:regression-type {
6073 "none" | "linear" | "logarithmic" | "exponential" | "power"
6074 }?
6075 & attribute chart:axis-position { "start" | "end" | double }?
6076 & attribute chart:axis-label-position {
6077 "near-axis"
6078 | "near-axis-other-side"
6079 | "outside-start"
6080 | "outside-end"
6081 }?
6082 & attribute chart:tick-mark-position {
6083 "at-labels" | "at-axis" | "at-labels-and-axis"
6084 }?
6085 & attribute chart:include-hidden-cells { boolean }?
6086labelPositions =
6087 "avoid-overlap"
6088 | "center"
6089 | "top"
6090 | "top-right"
6091 | "right"
6092 | "bottom-right"
6093 | "bottom"
6094 | "bottom-left"
6095 | "left"
6096 | "top-left"
6097 | "inside"
6098 | "outside"
6099 | "near-origin"
6100style-drawing-page-properties-attlist =
6101 attribute presentation:transition-type {
6102 "manual" | "automatic" | "semi-automatic"
6103 }?
6104 & attribute presentation:transition-style {
6105 "none"
6106 | "fade-from-left"
6107 | "fade-from-top"
6108 | "fade-from-right"
6109 | "fade-from-bottom"
6110 | "fade-from-upperleft"
6111 | "fade-from-upperright"
6112 | "fade-from-lowerleft"
6113 | "fade-from-lowerright"
6114 | "move-from-left"
6115 | "move-from-top"
6116 | "move-from-right"
6117 | "move-from-bottom"
6118 | "move-from-upperleft"
6119 | "move-from-upperright"
6120 | "move-from-lowerleft"
6121 | "move-from-lowerright"
6122 | "uncover-to-left"
6123 | "uncover-to-top"
6124 | "uncover-to-right"
6125 | "uncover-to-bottom"
6126 | "uncover-to-upperleft"
6127 | "uncover-to-upperright"
6128 | "uncover-to-lowerleft"
6129 | "uncover-to-lowerright"
6130 | "fade-to-center"
6131 | "fade-from-center"
6132 | "vertical-stripes"
6133 | "horizontal-stripes"
6134 | "clockwise"
6135 | "counterclockwise"
6136 | "open-vertical"
6137 | "open-horizontal"
6138 | "close-vertical"
6139 | "close-horizontal"
6140 | "wavyline-from-left"
6141 | "wavyline-from-top"
6142 | "wavyline-from-right"
6143 | "wavyline-from-bottom"
6144 | "spiralin-left"
6145 | "spiralin-right"
6146 | "spiralout-left"
6147 | "spiralout-right"
6148 | "roll-from-top"
6149 | "roll-from-left"
6150 | "roll-from-right"
6151 | "roll-from-bottom"
6152 | "stretch-from-left"
6153 | "stretch-from-top"
6154 | "stretch-from-right"
6155 | "stretch-from-bottom"
6156 | "vertical-lines"
6157 | "horizontal-lines"
6158 | "dissolve"
6159 | "random"
6160 | "vertical-checkerboard"
6161 | "horizontal-checkerboard"
6162 | "interlocking-horizontal-left"
6163 | "interlocking-horizontal-right"
6164 | "interlocking-vertical-top"
6165 | "interlocking-vertical-bottom"
6166 | "fly-away"
6167 | "open"
6168 | "close"
6169 | "melt"
6170 }?
6171 & attribute presentation:transition-speed { presentationSpeeds }?
6172 & attribute smil:type { \string }?
6173 & attribute smil:subtype { \string }?
6174 & attribute smil:direction { "forward" | "reverse" }?
6175 & attribute smil:fadeColor { color }?
6176 & attribute presentation:duration { duration }?
6177 & attribute presentation:visibility { "visible" | "hidden" }?
6178 & attribute draw:background-size { "full" | "border" }?
6179 & attribute presentation:background-objects-visible { boolean }?
6180 & attribute presentation:background-visible { boolean }?
6181 & attribute presentation:display-header { boolean }?
6182 & attribute presentation:display-footer { boolean }?
6183 & attribute presentation:display-page-number { boolean }?
6184 & attribute presentation:display-date-time { boolean }?
6185style-drawing-page-properties-elements = presentation-sound?
6186\string = xsd:string
6187date = xsd:date
6188time = xsd:time
6189dateTime = xsd:dateTime
6190duration = xsd:duration
6191integer = xsd:integer
6192nonNegativeInteger = xsd:nonNegativeInteger
6193positiveInteger = xsd:positiveInteger
6194double = xsd:double
6195anyURI = xsd:anyURI
6196base64Binary = xsd:base64Binary
6197ID = xsd:ID
6198IDREF = xsd:IDREF
6199IDREFS = xsd:IDREFS
6200NCName = xsd:NCName
6201boolean = "true" | "false"
6202dateOrDateTime = xsd:date | xsd:dateTime
6203timeOrDateTime = xsd:time | xsd:dateTime
6204language = xsd:language
6205countryCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" }
6206languageCode = xsd:token { pattern = "[A-Za-z]{1,8}" }
6207scriptCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" }
6208character = xsd:string { length = "1" }
6209length =
6210 xsd:string {
6211 pattern =
6212 "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))"
6213 }
6214nonNegativeLength =
6215 xsd:string {
6216 pattern =
6217 "([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))"
6218 }
6219positiveLength =
6220 xsd:string {
6221 pattern =
6222 "([0-9]*[1-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px))"
6223 }
6224percent = xsd:string { pattern = "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%" }
6225zeroToHundredPercent =
6226 xsd:string {
6227 pattern = "([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%"
6228 }
6229signedZeroToHundredPercent =
6230 xsd:string {
6231 pattern = "-?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%"
6232 }
6233relativeLength = xsd:string { pattern = "[0-9]+\*" }
6234coordinate = length
6235distance = length
6236color = xsd:string { pattern = "#[0-9a-fA-F]{6}" }
6237angle = xsd:string
6238CURIE =
6239 xsd:string { pattern = "(([\i-[:]][\c-[:]]*)?:)?.+" minLength = "1" }
6240CURIEs = list { CURIE+ }
6241SafeCURIE =
6242 xsd:string {
6243 pattern = "\[(([\i-[:]][\c-[:]]*)?:)?.+\]"
6244 minLength = "3"
6245 }
6246URIorSafeCURIE = anyURI | SafeCURIE
6247styleName = xsd:NCName
6248styleNameRef = xsd:NCName | empty
6249styleNameRefs = list { xsd:NCName* }
6250variableName = xsd:string
6251targetFrameName = "_self" | "_blank" | "_parent" | "_top" | \string
6252valueType =
6253 "float"
6254 | "time"
6255 | "date"
6256 | "percentage"
6257 | "currency"
6258 | "boolean"
6259 | "string"
6260points =
6261 xsd:string { pattern = "-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*" }
6262pathData = xsd:string
6263vector3D =
6264 xsd:string {
6265 pattern =
6266 "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)"
6267 }
6268namespacedToken = xsd:QName { pattern = "[^:]+:[^:]+" }
6269anyIRI =
6270 xsd:anyURI
6271 >> dc:description [
6272 "An IRI-reference as defined in [RFC3987]. See ODF 1.2 Part 1 section 18.3."
6273 ]
6274anyAttListOrElements =
6275 attribute * { text }*,
6276 anyElements
6277anyElements =
6278 element * {
6279 mixed { anyAttListOrElements }
6280 }*