diff options
author | Bastien Guerry <bzg@altern.org> | 2011-07-01 11:12:19 +0200 |
---|---|---|
committer | Bastien Guerry <bzg@altern.org> | 2011-07-01 11:12:19 +0200 |
commit | 63b8ecb4eaecc293a322e53f6654ccbc9276a037 (patch) | |
tree | e11ccc7fc53e2fa72bddd653052951b19abe6080 | |
parent | ca07a5ba62adeb3fcdd7785f77aa9b3b30fd7895 (diff) | |
download | org-mode-63b8ecb4eaecc293a322e53f6654ccbc9276a037.tar.gz |
Add Jambunathan's odt exporter in contrib/.
This adds these new files:
contrib/lisp/org-lparse.el
contrib/lisp/org-odt.el
contrib/lisp/org-xhtml.el
contrib/odt/BasicODConverter/BasicODConverter-0.8.0.oxt
contrib/odt/BasicODConverter/Filters.bas
contrib/odt/BasicODConverter/Main.bas
contrib/odt/OASIS/OpenDocument-schema-v1.1.rng
contrib/odt/OASIS/OpenDocument-v1.2-cs01-manifest-schema.rng
contrib/odt/OASIS/OpenDocument-v1.2-cs01-schema.rng
contrib/odt/README.org
contrib/odt/etc/schema/od-manifest-schema-v1.2-cs01.rnc
contrib/odt/etc/schema/od-schema-v1.1.rnc
contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc
contrib/odt/etc/schema/schemas.xml
contrib/odt/styles/OrgOdtAutomaticStyles.xml
contrib/odt/styles/OrgOdtStyles.xml
Notes:
contrib/lisp/org-xhtml.el is meant to be merged at some point with
lisp/org-html.el, to avoid code redundancies.
The feature as a whole is meant to move to Org's core when things
are tested and stable enough.
Thanks a lot to Jambunathan for this great contribution and for
his patience!
-rwxr-xr-x | contrib/lisp/org-lparse.el | 1977 | ||||
-rw-r--r-- | contrib/lisp/org-odt.el | 1513 | ||||
-rw-r--r-- | contrib/lisp/org-xhtml.el | 1797 | ||||
-rw-r--r-- | contrib/odt/BasicODConverter/BasicODConverter-0.8.0.oxt | bin | 0 -> 8009 bytes | |||
-rw-r--r-- | contrib/odt/BasicODConverter/Filters.bas | 213 | ||||
-rw-r--r-- | contrib/odt/BasicODConverter/Main.bas | 201 | ||||
-rw-r--r-- | contrib/odt/OASIS/OpenDocument-schema-v1.1.rng | 17891 | ||||
-rw-r--r-- | contrib/odt/OASIS/OpenDocument-v1.2-cs01-manifest-schema.rng | 224 | ||||
-rw-r--r-- | contrib/odt/OASIS/OpenDocument-v1.2-cs01-schema.rng | 18127 | ||||
-rw-r--r-- | contrib/odt/README.org | 298 | ||||
-rw-r--r-- | contrib/odt/etc/schema/od-manifest-schema-v1.2-cs01.rnc | 88 | ||||
-rw-r--r-- | contrib/odt/etc/schema/od-schema-v1.1.rnc | 6444 | ||||
-rw-r--r-- | contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc | 6280 | ||||
-rw-r--r-- | contrib/odt/etc/schema/schemas.xml | 7 | ||||
-rw-r--r-- | contrib/odt/styles/OrgOdtAutomaticStyles.xml | 152 | ||||
-rw-r--r-- | contrib/odt/styles/OrgOdtStyles.xml | 668 |
16 files changed, 55880 insertions, 0 deletions
diff --git a/contrib/lisp/org-lparse.el b/contrib/lisp/org-lparse.el new file mode 100755 index 0000000..cff8fd6 --- /dev/null +++ b/contrib/lisp/org-lparse.el @@ -0,0 +1,1977 @@ +;;; org-lparse.el --- Line-oriented exporter for Org-mode + +;; Copyright (C) 2010, 2011 +;; Jambunathan <kjambunathan at gmail dot com> + +;; Author: Jambunathan K <kjambunathan at gmail dot com> +;; Keywords: outlines, hypermedia, calendar, wp +;; Homepage: http://orgmode.org +;; Version: 0.8 + +;; This file is not (yet) part of GNU Emacs. +;; However, it is distributed under the same license. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Commentary: + +;;; `org-lparse' is the entry point for the generic line-oriented +;;; exporter. `org-do-lparse' is the genericized version of the +;;; original `org-export-as-html' routine. + +;;; `org-lparse-native-backends' is a good starting point for +;;; exploring the generic exporter. + +;;; Following new interactive commands are provided by this library. +;;; `org-lparse', `org-lparse-and-open', `org-lparse-to-buffer' +;;; `org-replace-region-by', `org-lparse-region'. + +;;; Note that the above routines correspond to the following routines +;;; in the html exporter `org-export-as-html', +;;; `org-export-as-html-and-open', `org-export-as-html-to-buffer', +;;; `org-replace-region-by-html' and `org-export-region-as-html'. + +;;; The all new interactive command `org-export-convert' can be used +;;; to convert documents between various formats. Use this to +;;; command, for example, to convert odt file to doc or pdf format. + +;;; See README.org file that comes with this library for answers to +;;; FAQs and more information on using this library. + +;;; Use M-x `org-odt-unit-test' for test driving the odt exporter + +;;; Code: + +(require 'org-exp) +(require 'org-list) + +;;;###autoload +(defun org-lparse-and-open (target-backend native-backend arg) + "Export the outline as HTML and immediately open it with a browser. +If there is an active region, export only the region. +The prefix ARG specifies how many levels of the outline should become +headlines. The default is 3. Lower levels will become bulleted lists." + ;; (interactive "Mbackend: \nP") + (interactive + (let* ((input (if (featurep 'ido) 'ido-completing-read 'completing-read)) + (all-backends (org-lparse-all-backends)) + (target-backend + (funcall input "Export to: " all-backends nil t nil)) + (native-backend + (or + ;; (and (org-lparse-backend-is-native-p target-backend) + ;; target-backend) + (funcall input "Use Native backend: " + (cdr (assoc target-backend all-backends)) nil t nil)))) + (list target-backend native-backend current-prefix-arg))) + (let (f (file-or-buf (org-lparse target-backend native-backend + arg 'hidden))) + (when file-or-buf + (setq f (cond + ((bufferp file-or-buf) buffer-file-name) + ((file-exists-p file-or-buf) file-or-buf) + (t (error "org-lparse-and-open: This shouldn't happen")))) + (message "Opening file %s" f) + (org-open-file f) + (when org-export-kill-product-buffer-when-displayed + (kill-buffer (current-buffer)))))) + +;;;###autoload +(defun org-lparse-batch (target-backend &optional native-backend) + "Call the function `org-lparse'. +This function can be used in batch processing as: +emacs --batch + --load=$HOME/lib/emacs/org.el + --eval \"(setq org-export-headline-levels 2)\" + --visit=MyFile --funcall org-lparse-batch" + (setq native-backend (or native-backend target-backend)) + (org-lparse target-backend native-backend + org-export-headline-levels 'hidden)) + +;;;###autoload +(defun org-lparse-to-buffer (backend arg) + "Call `org-lparse` with output to a temporary buffer. +No file is created. The prefix ARG is passed through to `org-lparse'." + (interactive "Mbackend: \nP") + (let ((tempbuf (format "*Org %s Export*" (upcase backend)))) + (org-lparse backend backend arg nil nil tempbuf) + (when org-export-show-temporary-export-buffer + (switch-to-buffer-other-window tempbuf)))) + +;;;###autoload +(defun org-replace-region-by (backend beg end) + "Assume the current region has org-mode syntax, and convert it to HTML. +This can be used in any buffer. For example, you could write an +itemized list in org-mode syntax in an HTML buffer and then use this +command to convert it." + (interactive "Mbackend: \nr") + (let (reg backend-string buf pop-up-frames) + (save-window-excursion + (if (org-mode-p) + (setq backend-string (org-lparse-region backend beg end t 'string)) + (setq reg (buffer-substring beg end) + buf (get-buffer-create "*Org tmp*")) + (with-current-buffer buf + (erase-buffer) + (insert reg) + (org-mode) + (setq backend-string (org-lparse-region backend (point-min) + (point-max) t 'string))) + (kill-buffer buf))) + (delete-region beg end) + (insert backend-string))) + +;;;###autoload +(defun org-lparse-region (backend beg end &optional body-only buffer) + "Convert region from BEG to END in org-mode buffer to HTML. +If prefix arg BODY-ONLY is set, omit file header, footer, and table of +contents, and only produce the region of converted text, useful for +cut-and-paste operations. +If BUFFER is a buffer or a string, use/create that buffer as a target +of the converted HTML. If BUFFER is the symbol `string', return the +produced HTML as a string and leave not buffer behind. For example, +a Lisp program could call this function in the following way: + + (setq html (org-lparse-region \"html\" beg end t 'string)) + +When called interactively, the output buffer is selected, and shown +in a window. A non-interactive call will only return the buffer." + (interactive "Mbackend: \nr\nP") + (when (org-called-interactively-p 'any) + (setq buffer (format "*Org %s Export*" (upcase backend)))) + (let ((transient-mark-mode t) (zmacs-regions t) + ext-plist rtn) + (setq ext-plist (plist-put ext-plist :ignore-subtree-p t)) + (goto-char end) + (set-mark (point)) ;; to activate the region + (goto-char beg) + (setq rtn (org-lparse backend backend nil nil ext-plist buffer body-only)) + (if (fboundp 'deactivate-mark) (deactivate-mark)) + (if (and (org-called-interactively-p 'any) (bufferp rtn)) + (switch-to-buffer-other-window rtn) + rtn))) + +(defvar org-lparse-par-open nil) + +(defun org-lparse-should-inline-p (filename descp) + "Return non-nil if link FILENAME should be inlined. +The decision to inline the FILENAME link is based on the current +settings. DESCP is the boolean of whether there was a link +description. See variables `org-export-html-inline-images' and +`org-export-html-inline-image-extensions'." + (let ((inline-images (org-lparse-get 'INLINE-IMAGES)) + (inline-image-extensions + (org-lparse-get 'INLINE-IMAGE-EXTENSIONS))) + (and (or (eq t inline-images) (and inline-images (not descp))) + (org-file-image-p filename inline-image-extensions)))) + +(defun org-lparse-format-org-link (line opt-plist) + "Return LINE with markup of Org mode links. +OPT-PLIST is the export options list." + (let ((start 0) + (current-dir (if buffer-file-name + (file-name-directory buffer-file-name) + default-directory)) + (link-validate (plist-get opt-plist :link-validation-function)) + type id-file fnc + rpl path attr desc descp desc1 desc2 link + org-lparse-link-description-is-image) + (while (string-match org-bracket-link-analytic-regexp++ line start) + (setq org-lparse-link-description-is-image nil) + (setq start (match-beginning 0)) + (setq path (save-match-data (org-link-unescape + (match-string 3 line)))) + (setq type (cond + ((match-end 2) (match-string 2 line)) + ((save-match-data + (or (file-name-absolute-p path) + (string-match "^\\.\\.?/" path))) + "file") + (t "internal"))) + (setq path (org-extract-attributes (org-link-unescape path))) + (setq attr (get-text-property 0 'org-attributes path)) + (setq desc1 (if (match-end 5) (match-string 5 line)) + desc2 (if (match-end 2) (concat type ":" path) path) + descp (and desc1 (not (equal desc1 desc2))) + desc (or desc1 desc2)) + ;; Make an image out of the description if that is so wanted + (when (and descp (org-file-image-p + desc (org-lparse-get 'INLINE-IMAGE-EXTENSIONS))) + (setq org-lparse-link-description-is-image t) + (save-match-data + (if (string-match "^file:" desc) + (setq desc (substring desc (match-end 0))))) + (save-match-data + (setq desc (org-add-props + (org-lparse-format 'INLINE-IMAGE desc) + '(org-protected t))))) + (cond + ((equal type "internal") + (let + ((frag-0 + (if (= (string-to-char path) ?#) + (substring path 1) + path))) + (setq rpl + (org-lparse-format + 'ORG-LINK opt-plist "" "" (org-solidify-link-text + (save-match-data + (org-link-unescape frag-0)) + nil) desc attr descp)))) + ((and (equal type "id") + (setq id-file (org-id-find-id-file path))) + ;; This is an id: link to another file (if it was the same file, + ;; it would have become an internal link...) + (save-match-data + (setq id-file (file-relative-name + id-file + (file-name-directory org-current-export-file))) + (setq rpl + (org-lparse-format + 'ORG-LINK opt-plist type id-file + (concat (if (org-uuidgen-p path) "ID-") path) + desc attr descp)))) + ((member type '("http" "https")) + ;; standard URL, can inline as image + (setq rpl + (org-lparse-format + 'ORG-LINK opt-plist type path nil desc attr descp))) + ((member type '("ftp" "mailto" "news")) + ;; standard URL, can't inline as image + (setq rpl + (org-lparse-format + 'ORG-LINK opt-plist type path nil desc attr descp))) + + ((string= type "coderef") + (setq rpl + (org-lparse-format + 'ORG-LINK opt-plist type "" (format "coderef-%s" path) + (format + (org-export-get-coderef-format + path + (and descp desc)) + (cdr (assoc path org-export-code-refs))) nil descp))) + + ((functionp (setq fnc (nth 2 (assoc type org-link-protocols)))) + ;; The link protocol has a function for format the link + (setq rpl + (save-match-data + (funcall fnc (org-link-unescape path) desc1 'html)))) + + ((string= type "file") + ;; FILE link + (save-match-data + (let* + ((components + (if + (string-match "::\\(.*\\)" path) + (list + (replace-match "" t nil path) + (match-string 1 path)) + (list path nil))) + + ;;The proper path, without a fragment + (path-1 + (first components)) + + ;;The raw fragment + (fragment-0 + (second components)) + + ;;Check the fragment. If it can't be used as + ;;target fragment we'll pass nil instead. + (fragment-1 + (if + (and fragment-0 + (not (string-match "^[0-9]*$" fragment-0)) + (not (string-match "^\\*" fragment-0)) + (not (string-match "^/.*/$" fragment-0))) + (org-solidify-link-text + (org-link-unescape fragment-0)) + nil)) + (desc-2 + ;;Description minus "file:" and ".org" + (if (string-match "^file:" desc) + (let + ((desc-1 (replace-match "" t t desc))) + (if (string-match "\\.org$" desc-1) + (replace-match "" t t desc-1) + desc-1)) + desc))) + + (setq rpl + (if + (and + (functionp link-validate) + (not (funcall link-validate path-1 current-dir))) + desc + (org-lparse-format + 'ORG-LINK opt-plist "file" path-1 fragment-1 + desc-2 attr descp)))))) + + (t + ;; just publish the path, as default + (setq rpl (concat "<i><" type ":" + (save-match-data (org-link-unescape path)) + "></i>")))) + (setq line (replace-match rpl t t line) + start (+ start (length rpl)))) + line)) + +(defmacro with-org-lparse-preserve-paragraph-state (&rest body) + `(let ((org-lparse-do-open-par org-lparse-par-open)) + (org-lparse-end-paragraph) + ,@body + (when org-lparse-do-open-par + (org-lparse-begin-paragraph)))) + +(defvar org-lparse-native-backends + '("xhtml" "odt") + "List of native backends registered with `org-lparse'. +All native backends must implement a get routine and a mandatory +set of callback routines. + +The get routine must be named as org-<backend>-get where backend +is the name of the backend. The exporter uses `org-lparse-get' +and retrieves the backend-specific callback by querying for +ENTITY-CONTROL and ENTITY-FORMAT variables. + +For the sake of illustration, the html backend implements +`org-xhtml-get'. It returns +`org-xhtml-entity-control-callbacks-alist' and +`org-xhtml-entity-format-callbacks-alist' as the values of +ENTITY-CONTROL and ENTITY-FORMAT settings.") + +(defun org-lparse-get-other-backends (native-backend) + (org-lparse-backend-get native-backend 'OTHER-BACKENDS)) + +(defun org-lparse-all-backends () + (let (all-backends) + (flet ((add (other native) + (let ((val (assoc-string other all-backends t))) + (if val (setcdr val (nconc (list native) (cdr val))) + (push (cons other (list native)) all-backends))))) + (loop for backend in org-lparse-native-backends + do (loop for other in (org-lparse-get-other-backends backend) + do (add other backend)))) + all-backends)) + +(defun org-lparse-backend-is-native-p (backend) + (member backend org-lparse-native-backends)) + +(defun org-lparse (target-backend native-backend arg + &optional hidden ext-plist + to-buffer body-only pub-dir) + "Export the outline to various formats. +If there is an active region, export only the region. The outline +is first exported to NATIVE-BACKEND and optionally converted to +TARGET-BACKEND. See `org-lparse-native-backends' for list of +known native backends. Each native backend can specify a +converter and list of target backends it exports to using the +CONVERT-PROCESS and OTHER-BACKENDS settings of it's get +method. See `org-xhtml-get' for an illustrative example. + +ARG is a prefix argument that specifies how many levels of +outline should become headlines. The default is 3. Lower levels +will become bulleted lists. + +HIDDEN is obsolete and does nothing. + +EXT-PLIST is a property list that controls various aspects of +export. The settings here override org-mode's default settings +and but are inferior to file-local settings. + +TO-BUFFER dumps the exported lines to a buffer or a string +instead of a file. If TO-BUFFER is the symbol `string' return the +exported lines as a string. If TO-BUFFER is non-nil, create a +buffer with that name and export to that buffer. + +BODY-ONLY controls the presence of header and footer lines in +exported text. If BODY-ONLY is non-nil, don't produce the file +header and footer, simply return the content of <body>...</body>, +without even the body tags themselves. + +PUB-DIR specifies the publishing directory." + (interactive + (let* ((input (if (featurep 'ido) 'ido-completing-read 'completing-read)) + (all-backends (org-lparse-all-backends)) + (target-backend + (funcall input "Export to: " all-backends nil t nil)) + (native-backend + (or + ;; (and (org-lparse-backend-is-native-p target-backend) + ;; target-backend) + (funcall input "Use Native backend: " + (cdr (assoc target-backend all-backends)) nil t nil)))) + (list target-backend native-backend current-prefix-arg))) + (let* ((org-lparse-backend (intern native-backend)) + (org-lparse-other-backend (intern target-backend))) + (unless (org-lparse-backend-is-native-p native-backend) + (error "Don't know how to export natively to backend %s" native-backend)) + (unless (or (not target-backend) + (equal target-backend native-backend) + (member target-backend (org-lparse-get 'OTHER-BACKENDS))) + (error "Don't know how to export to backend %s %s" target-backend + (format "via %s" native-backend))) + (run-hooks 'org-export-first-hook) + (org-do-lparse arg hidden ext-plist to-buffer body-only pub-dir))) + +(defcustom org-export-convert-process + '("soffice" "-norestore" "-invisible" "-headless" "\"macro:///BasicODConverter.Main.Convert(%I,%f,%O)\"") + "Command to covert a Org exported format to other formats. +The variable is an list of the form (PROCESS ARG1 ARG2 ARG3 +...). Format specifiers used in the ARGs are replaced as below. +%i input file name in full +%I input file name as a URL +%f format of the output file +%o output file name in full +%O output file name as a URL +%d output dir in full +%D output dir as a URL" + :group 'org-export) + +(defun org-export-convert (&optional in-file fmt) + "Convert file from one format to another using a converter. +IN-FILE is the file to be converted. If unspecified, it defaults +to variable `buffer-file-name'. FMT is the desired output format. If the +backend has registered a CONVERT-METHOD via it's get function +then that converter is used. Otherwise +`org-export-conver-process' is used." + (interactive + (let* ((input (if (featurep 'ido) 'ido-completing-read 'completing-read)) + (in-file (read-file-name "File to be converted: " + nil buffer-file-name t)) + (fmt (funcall input "Output format: " + (or (ignore-errors + (org-lparse-get-other-backends + (file-name-extension in-file))) + (org-lparse-all-backends)) + nil nil nil))) + (list in-file fmt))) + (require 'browse-url) + (let* ((in-file (expand-file-name (or in-file buffer-file-name))) + (fmt (or fmt "doc") ) + (out-file (concat (file-name-sans-extension in-file) "." fmt)) + (out-dir (file-name-directory in-file)) + (backend (when (boundp 'org-lparse-backend) org-lparse-backend)) + (convert-process + (or (ignore-errors (org-lparse-backend-get backend 'CONVERT-METHOD)) + org-export-convert-process)) + program arglist) + + (setq program (and convert-process (consp convert-process) + (car convert-process))) + (unless (executable-find program) + (error "Unable to locate the converter %s" program)) + + (setq arglist + (mapcar (lambda (arg) + (format-spec arg `((?i . ,in-file) + (?I . ,(browse-url-file-url in-file)) + (?f . ,fmt) + (?o . ,out-file) + (?O . ,(browse-url-file-url out-file)) + (?d . ,out-dir) + (?D . ,(browse-url-file-url out-dir))))) + (cdr convert-process))) + (ignore-errors (delete-file out-file)) + + (message "Executing %s %s" program (mapconcat 'identity arglist " ")) + (apply 'call-process program nil nil nil arglist) + + (cond + ((file-exists-p out-file) + (message "Exported to %s using %s" out-file program) + out-file + ;; (set-buffer (find-file-noselect out-file)) + ) + (t + (message "Export to %s failed" out-file) + nil)))) + +(defvar org-lparse-insert-tag-with-newlines 'both) + +;; Following variables are let-bound during `org-lparse' +(defvar org-lparse-dyn-first-heading-pos) +(defvar org-lparse-toc) +(defvar org-lparse-entity-control-callbacks-alist) +(defvar org-lparse-entity-format-callbacks-alist) +(defvar org-lparse-backend) +(defvar org-lparse-body-only) +(defvar org-lparse-to-buffer) +(defun org-do-lparse (arg &optional hidden ext-plist + to-buffer body-only pub-dir) + "Export the outline to various formats. +See `org-lparse' for more information. This function is a +html-agnostic version of the `org-export-as-html' function in 7.5 +version." + ;; Make sure we have a file name when we need it. + (when (and (not (or to-buffer body-only)) + (not buffer-file-name)) + (if (buffer-base-buffer) + (org-set-local 'buffer-file-name + (with-current-buffer (buffer-base-buffer) + buffer-file-name)) + (error "Need a file name to be able to export"))) + + (org-lparse-warn + (format "Exporting to %s using org-lparse..." + (upcase (symbol-name + (or org-lparse-backend org-lparse-other-backend))))) + + (setq-default org-todo-line-regexp org-todo-line-regexp) + (setq-default org-deadline-line-regexp org-deadline-line-regexp) + (setq-default org-done-keywords org-done-keywords) + (setq-default org-maybe-keyword-time-regexp org-maybe-keyword-time-regexp) + (let* (org-lparse-encode-pending + org-lparse-par-open + org-lparse-outline-text-open + (org-lparse-latex-fragment-fallback ; currently used only by + ; odt exporter + (or (ignore-errors (org-lparse-get 'LATEX-FRAGMENT-FALLBACK)) + (if (and (org-check-external-command "latex" "" t) + (org-check-external-command "dvipng" "" t)) + 'dvipng + 'verbatim))) + (org-lparse-insert-tag-with-newlines 'both) + (org-lparse-to-buffer to-buffer) + (org-lparse-body-only body-only) + (org-lparse-entity-control-callbacks-alist + (org-lparse-get 'ENTITY-CONTROL)) + (org-lparse-entity-format-callbacks-alist + (org-lparse-get 'ENTITY-FORMAT)) + (opt-plist + (org-export-process-option-filters + (org-combine-plists (org-default-export-plist) + ext-plist + (org-infile-export-plist)))) + (body-only (or body-only (plist-get opt-plist :body-only))) + valid org-lparse-dyn-first-heading-pos + (odd org-odd-levels-only) + (region-p (org-region-active-p)) + (rbeg (and region-p (region-beginning))) + (rend (and region-p (region-end))) + (subtree-p + (if (plist-get opt-plist :ignore-subtree-p) + nil + (when region-p + (save-excursion + (goto-char rbeg) + (and (org-at-heading-p) + (>= (org-end-of-subtree t t) rend)))))) + (level-offset (if subtree-p + (save-excursion + (goto-char rbeg) + (+ (funcall outline-level) + (if org-odd-levels-only 1 0))) + 0)) + (opt-plist (setq org-export-opt-plist + (if subtree-p + (org-export-add-subtree-options opt-plist rbeg) + opt-plist))) + ;; The following two are dynamically scoped into other + ;; routines below. + (org-current-export-dir + (or pub-dir (org-lparse-get 'EXPORT-DIR opt-plist))) + (org-current-export-file buffer-file-name) + (level 0) (line "") (origline "") txt todo + (umax nil) + (umax-toc nil) + (filename (if to-buffer nil + (expand-file-name + (concat + (file-name-sans-extension + (or (and subtree-p + (org-entry-get (region-beginning) + "EXPORT_FILE_NAME" t)) + (file-name-nondirectory buffer-file-name))) + "." (org-lparse-get 'FILE-NAME-EXTENSION opt-plist)) + (file-name-as-directory + (or pub-dir (org-lparse-get 'EXPORT-DIR opt-plist)))))) + (current-dir (if buffer-file-name + (file-name-directory buffer-file-name) + default-directory)) + (buffer (if to-buffer + (cond + ((eq to-buffer 'string) + (get-buffer-create (org-lparse-get 'EXPORT-BUFFER-NAME))) + (t (get-buffer-create to-buffer))) + (find-file-noselect + (or (let ((f (org-lparse-get 'INIT-METHOD))) + (and f (functionp f) (funcall f filename))) + filename)))) + (org-levels-open (make-vector org-level-max nil)) + (date (plist-get opt-plist :date)) + (date (cond + ((and date (string-match "%" date)) + (format-time-string date)) + (date date) + (t (format-time-string "%Y-%m-%d %T %Z")))) + (dummy (setq opt-plist (plist-put opt-plist :effective-date date))) + (title (org-xml-encode-org-text-skip-links + (or (and subtree-p (org-export-get-title-from-subtree)) + (plist-get opt-plist :title) + (and (not body-only) + (not + (plist-get opt-plist :skip-before-1st-heading)) + (org-export-grab-title-from-buffer)) + (and buffer-file-name + (file-name-sans-extension + (file-name-nondirectory buffer-file-name))) + "UNTITLED"))) + (dummy (setq opt-plist (plist-put opt-plist :title title))) + (html-table-tag (plist-get opt-plist :html-table-tag)) + (quote-re0 (concat "^[ \t]*" org-quote-string "\\>")) + (quote-re (concat "^\\(\\*+\\)\\([ \t]+" org-quote-string "\\>\\)")) + (org-lparse-dyn-current-environment nil) + ;; Get the language-dependent settings + (lang-words (or (assoc (plist-get opt-plist :language) + org-export-language-setup) + (assoc "en" org-export-language-setup))) + (dummy (setq opt-plist (plist-put opt-plist :lang-words lang-words))) + (head-count 0) cnt + (start 0) + (coding-system-for-write + (or (ignore-errors (org-lparse-get 'CODING-SYSTEM-FOR-WRITE)) + (and (boundp 'buffer-file-coding-system) + buffer-file-coding-system))) + (save-buffer-coding-system + (or (ignore-errors (org-lparse-get 'CODING-SYSTEM-FOR-SAVE)) + (and (boundp 'buffer-file-coding-system) + buffer-file-coding-system))) + (region + (buffer-substring + (if region-p (region-beginning) (point-min)) + (if region-p (region-end) (point-max)))) + (org-export-have-math nil) + (org-export-footnotes-seen nil) + (org-export-footnotes-data (org-footnote-all-labels 'with-defs)) + (org-footnote-insert-pos-for-preprocessor 'point-min) + (lines + (org-split-string + (org-export-preprocess-string + region + :emph-multiline t + :for-backend (if (equal org-lparse-backend 'xhtml) ; hack + 'html + org-lparse-backend) + :skip-before-1st-heading + (plist-get opt-plist :skip-before-1st-heading) + :drawers (plist-get opt-plist :drawers) + :todo-keywords (plist-get opt-plist :todo-keywords) + :tasks (plist-get opt-plist :tasks) + :tags (plist-get opt-plist :tags) + :priority (plist-get opt-plist :priority) + :footnotes (plist-get opt-plist :footnotes) + :timestamps (plist-get opt-plist :timestamps) + :archived-trees + (plist-get opt-plist :archived-trees) + :select-tags (plist-get opt-plist :select-tags) + :exclude-tags (plist-get opt-plist :exclude-tags) + :add-text + (plist-get opt-plist :text) + :LaTeX-fragments + (plist-get opt-plist :LaTeX-fragments)) + "[\r\n]")) + table-open + table-buffer table-orig-buffer + ind + rpl path attr desc descp desc1 desc2 link + snumber fnc + footnotes footref-seen + org-lparse-output-buffer + org-lparse-footnote-definitions + org-lparse-footnote-number + org-lparse-footnote-buffer + org-lparse-toc + href + ) + + (let ((inhibit-read-only t)) + (org-unmodified + (remove-text-properties (point-min) (point-max) + '(:org-license-to-kill t)))) + + (message "Exporting...") + (org-init-section-numbers) + + ;; Switch to the output buffer + (setq org-lparse-output-buffer buffer) + (set-buffer org-lparse-output-buffer) + (let ((inhibit-read-only t)) (erase-buffer)) + (fundamental-mode) + (org-install-letbind) + + (and (fboundp 'set-buffer-file-coding-system) + (set-buffer-file-coding-system coding-system-for-write)) + + (let ((case-fold-search nil) + (org-odd-levels-only odd)) + ;; create local variables for all options, to make sure all called + ;; functions get the correct information + (mapc (lambda (x) + (set (make-local-variable (nth 2 x)) + (plist-get opt-plist (car x)))) + org-export-plist-vars) + (setq umax (if arg (prefix-numeric-value arg) + org-export-headline-levels)) + (setq umax-toc (if (integerp org-export-with-toc) + (min org-export-with-toc umax) + umax)) + + (when (and org-export-with-toc (not body-only)) + (setq lines (org-lparse-prepare-toc + lines level-offset opt-plist umax-toc))) + + (unless body-only + (org-lparse-begin 'DOCUMENT-CONTENT opt-plist) + (org-lparse-begin 'DOCUMENT-BODY opt-plist)) + + (setq head-count 0) + (org-init-section-numbers) + + (org-lparse-begin-paragraph) + + (while (setq line (pop lines) origline line) + (catch 'nextline + (when (and (org-lparse-current-environment-p 'quote) + (string-match "^\\*+ " line)) + (org-lparse-end-environment 'quote)) + + (when (org-lparse-current-environment-p 'quote) + (org-lparse-insert 'LINE line) + (throw 'nextline nil)) + + ;; Fixed-width, verbatim lines (examples) + (when (and org-export-with-fixed-width + (string-match "^[ \t]*:\\(\\([ \t]\\|$\\)\\(.*\\)\\)" line)) + (when (not (org-lparse-current-environment-p 'fixedwidth)) + (org-lparse-begin-environment 'fixedwidth)) + (org-lparse-insert 'LINE (match-string 3 line)) + (when (or (not lines) + (not (string-match "^[ \t]*:\\(\\([ \t]\\|$\\)\\(.*\\)\\)" + (car lines)))) + (org-lparse-end-environment 'fixedwidth)) + (throw 'nextline nil)) + + ;; Notes: The baseline version of org-html.el (git commit + ;; 3d802e), while encoutering a *line-long* protected text, + ;; does one of the following two things based on the state + ;; of the export buffer. + + ;; 1. If a paragraph element has just been opened and + ;; contains only whitespace as content, insert the + ;; protected text as part of the previous paragraph. + + ;; 2. If the paragraph element has already been opened and + ;; contains some valid content insert the protected text + ;; as part of the current paragraph. + + ;; I think ---> + + ;; Scenario 1 mentioned above kicks in when a block of + ;; protected text has to be inserted enbloc. For example, + ;; this happens, when inserting an source or example block + ;; or preformatted content enclosed in #+backend, + ;; #+begin_bakend ... #+end_backend) + + ;; Scenario 2 mentioned above kicks in when the protected + ;; text is part of a running sentence. For example this + ;; happens in the case of an *multiline* LaTeX equation that + ;; needs to be inserted verbatim. + + ;; org-html.el in the master branch seems to do some + ;; jugglery by moving paragraphs around. Inorder to make + ;; these changes backend-agnostic introduce a new text + ;; property org-native-text and impose the added semantics + ;; that these protected blocks appear outside of a + ;; conventional paragraph element. + ;; + ;; Extra Note: Check whether org-example and org-native-text + ;; are entirely equivalent. + + ;; Fixes bug reported by Christian Moe concerning verbatim + ;; LaTeX fragments. + ;; on git commit 533ba3f90250a1f25f494c390d639ea6274f235c + ;; http://repo.or.cz/w/org-mode/org-jambu.git/shortlog/refs/heads/staging + ;; See http://lists.gnu.org/archive/html/emacs-orgmode/2011-03/msg01379.html + + ;; Native Text + (when (and (get-text-property 0 'org-native-text line) + ;; Make sure it is the entire line that is protected + (not (< (or (next-single-property-change + 0 'org-native-text line) 10000) + (length line)))) + (let ((ind (get-text-property 0 'original-indentation line))) + (org-lparse-begin-environment 'native) + (org-lparse-insert 'LINE line) + (while (and lines + (or (= (length (car lines)) 0) + (not ind) + (equal ind (get-text-property + 0 'original-indentation (car lines)))) + (or (= (length (car lines)) 0) + (get-text-property 0 'org-native-text (car lines)))) + (org-lparse-insert 'LINE (pop lines))) + (org-lparse-end-environment 'native)) + (throw 'nextline nil)) + + ;; Protected HTML + (when (and (get-text-property 0 'org-protected line) + ;; Make sure it is the entire line that is protected + (not (< (or (next-single-property-change + 0 'org-protected line) 10000) + (length line)))) + (let ((ind (get-text-property 0 'original-indentation line))) + (org-lparse-insert 'LINE line) + (while (and lines + (or (= (length (car lines)) 0) + (not ind) + (equal ind (get-text-property + 0 'original-indentation (car lines)))) + (or (= (length (car lines)) 0) + (get-text-property 0 'org-protected (car lines)))) + (org-lparse-insert 'LINE (pop lines)))) + (throw 'nextline nil)) + + ;; Blockquotes, verse, and center + (when (string-match "^ORG-\\(.+\\)-\\(START\\|END\\)$" line) + (let* ((style (intern (downcase (match-string 1 line)))) + (f (cdr (assoc (match-string 2 line) + '(("START" . org-lparse-begin-environment) + ("END" . org-lparse-end-environment)))))) + (when (memq style '(blockquote verse center)) + (funcall f style) + (throw 'nextline nil)))) + + (run-hooks 'org-export-html-after-blockquotes-hook) + (when (org-lparse-current-environment-p 'verse) + (let ((i (org-get-string-indentation line))) + (if (> i 0) + (setq line (concat + (let ((org-lparse-encode-pending t)) + (org-lparse-format 'SPACES (* 2 i))) + " " (org-trim line)))) + (unless (string-match "\\\\\\\\[ \t]*$" line) + (setq line (concat line "\\\\"))))) + + ;; make targets to anchors + (setq start 0) + (while (string-match + "<<<?\\([^<>]*\\)>>>?\\((INVISIBLE)\\)?[ \t]*\n?" line start) + (cond + ((get-text-property (match-beginning 1) 'org-protected line) + (setq start (match-end 1))) + ((match-end 2) + (setq line (replace-match + (let ((org-lparse-encode-pending t)) + (org-lparse-format + 'ANCHOR "" (org-solidify-link-text + (match-string 1 line)))) + t t line))) + ((and org-export-with-toc (equal (string-to-char line) ?*)) + ;; FIXME: NOT DEPENDENT on TOC????????????????????? + (setq line (replace-match + (let ((org-lparse-encode-pending t)) + (org-lparse-format + 'FONTIFY (match-string 1 line) "target")) + ;; (concat "@<i>" (match-string 1 line) "@</i> ") + t t line))) + (t + (setq line (replace-match + (concat + (let ((org-lparse-encode-pending t)) + (org-lparse-format + 'ANCHOR (match-string 1 line) + (org-solidify-link-text (match-string 1 line)) + "target")) " ") + t t line))))) + + (let ((org-lparse-encode-pending t)) + (setq line (org-lparse-handle-time-stamps line))) + + ;; replace "&" by "&", "<" and ">" by "<" and ">" + ;; handle @<..> HTML tags (replace "@>..<" by "<..>") + ;; Also handle sub_superscripts and checkboxes + (or (string-match org-table-hline-regexp line) + (string-match "^[ \t]*\\([+]-\\||[ ]\\)[-+ |]*[+|][ \t]*$" line) + (setq line (org-xml-encode-org-text-skip-links line))) + + (setq line (org-lparse-format-org-link line opt-plist)) + + ;; TODO items + (if (and (string-match org-todo-line-regexp line) + (match-beginning 2)) + (setq line (concat + (substring line 0 (match-beginning 2)) + (org-lparse-format 'TODO (match-string 2 line)) + (substring line (match-end 2))))) + + ;; Does this contain a reference to a footnote? + (when org-export-with-footnotes + (setq start 0) + (while (string-match "\\([^* \t].*?\\)[ \t]*\\[\\([0-9]+\\)\\]" line start) + ;; Discard protected matches not clearly identified as + ;; footnote markers. + (if (or (get-text-property (match-beginning 2) 'org-protected line) + (not (get-text-property (match-beginning 2) 'org-footnote line))) + (setq start (match-end 2)) + (let ((n (match-string 2 line)) refcnt a) + (if (setq a (assoc n footref-seen)) + (progn + (setcdr a (1+ (cdr a))) + (setq refcnt (cdr a))) + (setq refcnt 1) + (push (cons n 1) footref-seen)) + (setq line + (replace-match + (concat + (or (match-string 1 line) "") + (org-lparse-format + 'FOOTNOTE-REFERENCE + n (cdr (assoc n org-lparse-footnote-definitions)) + refcnt) + ;; If another footnote is following the + ;; current one, add a separator. + (if (save-match-data + (string-match "\\`\\[[0-9]+\\]" + (substring line (match-end 0)))) + (ignore-errors + (org-lparse-get 'FOOTNOTE-SEPARATOR)) + "")) + t t line)))))) + + (cond + ((string-match "^\\(\\*+\\)[ \t]+\\(.*\\)" line) + ;; This is a headline + (setq level (org-tr-level (- (match-end 1) (match-beginning 1) + level-offset)) + txt (match-string 2 line)) + (if (string-match quote-re0 txt) + (setq txt (replace-match "" t t txt))) + (if (<= level (max umax umax-toc)) + (setq head-count (+ head-count 1))) + (unless org-lparse-dyn-first-heading-pos + (setq org-lparse-dyn-first-heading-pos (point))) + (org-lparse-begin-level level txt umax head-count) + + ;; QUOTES + (when (string-match quote-re line) + (org-lparse-begin-environment 'quote))) + + ((and org-export-with-tables + (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" line)) + (when (not table-open) + ;; New table starts + (setq table-open t table-buffer nil table-orig-buffer nil)) + + ;; Accumulate lines + (setq table-buffer (cons line table-buffer) + table-orig-buffer (cons origline table-orig-buffer)) + (when (or (not lines) + (not (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" + (car lines)))) + (setq table-open nil + table-buffer (nreverse table-buffer) + table-orig-buffer (nreverse table-orig-buffer)) + (org-lparse-end-paragraph) + (org-lparse-insert 'TABLE table-buffer table-orig-buffer))) + + ;; Normal lines + + (t + ;; This line either is list item or end a list. + (when (get-text-property 0 'list-item line) + (setq line (org-lparse-export-list-line + line + (get-text-property 0 'list-item line) + (get-text-property 0 'list-struct line) + (get-text-property 0 'list-prevs line)))) + + ;; Horizontal line + (when (string-match "^[ \t]*-\\{5,\\}[ \t]*$" line) + (with-org-lparse-preserve-paragraph-state + (org-lparse-insert 'HORIZONTAL-LINE)) + (throw 'nextline nil)) + + ;; Empty lines start a new paragraph. If hand-formatted lists + ;; are not fully interpreted, lines starting with "-", "+", "*" + ;; also start a new paragraph. + (when (string-match "^ [-+*]-\\|^[ \t]*$" line) + (when org-lparse-footnote-number + (org-lparse-end-footnote-definition org-lparse-footnote-number) + (setq org-lparse-footnote-number nil)) + (org-lparse-begin-paragraph)) + + ;; Is this the start of a footnote? + (when org-export-with-footnotes + (when (and (boundp 'footnote-section-tag-regexp) + (string-match (concat "^" footnote-section-tag-regexp) + line)) + ;; ignore this line + (throw 'nextline nil)) + (when (string-match "^[ \t]*\\[\\([0-9]+\\)\\]" line) + (org-lparse-end-paragraph) + (setq org-lparse-footnote-number (match-string 1 line)) + (setq line (replace-match "" t t line)) + (org-lparse-begin-footnote-definition org-lparse-footnote-number))) + ;; Check if the line break needs to be conserved + (cond + ((string-match "\\\\\\\\[ \t]*$" line) + (setq line (replace-match + (org-lparse-format 'LINE-BREAK) + t t line))) + (org-export-preserve-breaks + (setq line (concat line (org-lparse-format 'LINE-BREAK))))) + + ;; Check if a paragraph should be started + (let ((start 0)) + (while (and org-lparse-par-open + (string-match "\\\\par\\>" line start)) + (error "FIXME") + ;; Leave a space in the </p> so that the footnote matcher + ;; does not see this. + (if (not (get-text-property (match-beginning 0) + 'org-protected line)) + (setq line (replace-match "</p ><p >" t t line))) + (setq start (match-end 0)))) + + (org-lparse-insert 'LINE line))))) + + ;; Properly close all local lists and other lists + (when (org-lparse-current-environment-p 'quote) + (org-lparse-end-environment 'quote)) + + (org-lparse-end-level 1 umax) + + ;; the </div> to close the last text-... div. + (when (and (> umax 0) org-lparse-dyn-first-heading-pos) + (org-lparse-end-outline-text-or-outline)) + + (org-lparse-end 'DOCUMENT-BODY opt-plist) + (unless body-only + (org-lparse-end 'DOCUMENT-CONTENT)) + + (unless (plist-get opt-plist :buffer-will-be-killed) + (set-auto-mode t)) + + (org-lparse-end 'EXPORT) + + (goto-char (point-min)) + (or (org-export-push-to-kill-ring + (upcase (symbol-name org-lparse-backend))) + (message "Exporting... done")) + + (cond + ((not to-buffer) + (let ((f (org-lparse-get 'SAVE-METHOD))) + (or (and f (functionp f) (funcall f filename opt-plist)) + (save-buffer))) + (or (when (and (boundp 'org-lparse-other-backend) + org-lparse-other-backend + (not (equal org-lparse-backend org-lparse-other-backend))) + (let ((org-export-convert-process (org-lparse-get 'CONVERT-METHOD))) + (when org-export-convert-process + (org-export-convert buffer-file-name + (symbol-name org-lparse-other-backend))))) + (current-buffer))) + ((eq to-buffer 'string) + (prog1 (buffer-substring (point-min) (point-max)) + (kill-buffer (current-buffer)))) + (t (current-buffer)))))) + +(defun org-lparse-format-table (lines olines) + "Retuns backend-specific code for org-type and table-type +tables." + (if (stringp lines) + (setq lines (org-split-string lines "\n"))) + (if (string-match "^[ \t]*|" (car lines)) + ;; A normal org table + (org-lparse-format-org-table lines nil) + ;; Table made by table.el + (or (org-lparse-format-table-table-using-table-generate-source + org-lparse-backend olines + (not org-export-prefer-native-exporter-for-tables)) + ;; We are here only when table.el table has NO col or row + ;; spanning and the user prefers using org's own converter for + ;; exporting of such simple table.el tables. + (org-lparse-format-table-table lines)))) + +(defun org-lparse-table-get-colalign-info (lines) + (let ((forced-aligns (org-find-text-property-in-string + 'org-forced-aligns (car lines)))) + (when (and forced-aligns org-table-clean-did-remove-column) + (setq forced-aligns + (mapcar (lambda (x) (cons (1- (car x)) (cdr x))) forced-aligns))) + + forced-aligns)) + +(defvar org-lparse-table-style) +(defvar org-lparse-table-ncols) +(defvar org-lparse-table-rownum) +(defvar org-lparse-table-is-styled) +(defvar org-lparse-table-begin-marker) +(defvar org-lparse-table-num-numeric-items-per-column) +(defvar org-lparse-table-colalign-info) +(defvar org-lparse-table-colalign-vector) + +;; Following variables are defined in org-table.el +(defvar org-table-number-fraction) +(defvar org-table-number-regexp) + +(defun org-lparse-do-format-org-table (lines &optional splice) + "Format a org-type table into backend-specific code. +LINES is a list of lines. Optional argument SPLICE means, do not +insert header and surrounding <table> tags, just format the lines. +Optional argument NO-CSS means use XHTML attributes instead of CSS +for formatting. This is required for the DocBook exporter." + (require 'org-table) + ;; Get rid of hlines at beginning and end + (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) + (setq lines (nreverse lines)) + (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) + (setq lines (nreverse lines)) + (when org-export-table-remove-special-lines + ;; Check if the table has a marking column. If yes remove the + ;; column and the special lines + (setq lines (org-table-clean-before-export lines))) + + (let* ((caption (org-find-text-property-in-string 'org-caption (car lines))) + (caption (and caption (org-xml-encode-org-text caption))) + (label (org-find-text-property-in-string 'org-label (car lines))) + (org-lparse-table-colalign-info (org-lparse-table-get-colalign-info lines)) + (attributes (org-find-text-property-in-string 'org-attributes + (car lines))) + (head (and org-export-highlight-first-table-line + (delq nil (mapcar + (lambda (x) (string-match "^[ \t]*|-" x)) + (cdr lines))))) + (org-lparse-table-rownum -1) org-lparse-table-ncols i (cnt 0) + tbopen line fields + org-lparse-table-cur-rowgrp-is-hdr + org-lparse-table-rowgrp-open + org-lparse-table-num-numeric-items-per-column + org-lparse-table-colalign-vector n + org-lparse-table-rowgrp-info + org-lparse-table-begin-marker + (org-lparse-table-style 'org-table) + org-lparse-table-is-styled) + (cond + (splice + (setq org-lparse-table-is-styled nil) + (while (setq line (pop lines)) + (unless (string-match "^[ \t]*|-" line) + (insert + (org-lparse-format-table-row + (org-split-string line "[ \t]*|[ \t]*")) "\n")))) + (t + (setq org-lparse-table-is-styled t) + (org-lparse-begin 'TABLE caption label attributes) + (setq org-lparse-table-begin-marker (point)) + (org-lparse-begin-table-rowgroup head) + (while (setq line (pop lines)) + (cond + ((string-match "^[ \t]*|-" line) + (when lines (org-lparse-begin-table-rowgroup))) + (t + (insert + (org-lparse-format-table-row + (org-split-string line "[ \t]*|[ \t]*")) "\n")))) + (org-lparse-end 'TABLE-ROWGROUP) + (org-lparse-end-table))))) + +(defun org-lparse-format-org-table (lines &optional splice) + (with-temp-buffer + (org-lparse-do-format-org-table lines splice) + (buffer-substring-no-properties (point-min) (point-max)))) + +(defun org-lparse-do-format-table-table (lines) + "Format a table generated by table.el into backend-specific code. +This conversion does *not* use `table-generate-source' from table.el. +This has the advantage that Org-mode's HTML conversions can be used. +But it has the disadvantage, that no cell- or row-spanning is allowed." + (let (line field-buffer + (org-lparse-table-cur-rowgrp-is-hdr + org-export-highlight-first-table-line) + (caption nil) + (attributes nil) + (label nil) + (org-lparse-table-style 'table-table) + (org-lparse-table-is-styled nil) + fields org-lparse-table-ncols i (org-lparse-table-rownum -1) + (empty (org-lparse-format 'SPACES 1))) + (org-lparse-begin 'TABLE caption label attributes) + (while (setq line (pop lines)) + (cond + ((string-match "^[ \t]*\\+-" line) + (when field-buffer + (let ((org-export-table-row-tags '("<tr>" . "</tr>")) + ;; (org-export-html-table-use-header-tags-for-first-column nil) + ) + (insert (org-lparse-format-table-row field-buffer empty))) + (setq org-lparse-table-cur-rowgrp-is-hdr nil) + (setq field-buffer nil))) + (t + ;; Break the line into fields and store the fields + (setq fields (org-split-string line "[ \t]*|[ \t]*")) + (if field-buffer + (setq field-buffer (mapcar + (lambda (x) + (concat x (org-lparse-format 'LINE-BREAK) + (pop fields))) + field-buffer)) + (setq field-buffer fields))))) + (org-lparse-end-table))) + +(defun org-lparse-format-table-table (lines) + (with-temp-buffer + (org-lparse-do-format-table-table lines) + (buffer-substring-no-properties (point-min) (point-max)))) + +(defun org-lparse-format-table-table-using-table-generate-source (backend + lines + &optional + spanned-only) + "Format a table into BACKEND, using `table-generate-source' from table.el. +Use SPANNED-ONLY to suppress exporting of simple table.el tables. + +When SPANNED-ONLY is nil, all table.el tables are exported. When +SPANNED-ONLY is non-nil, only tables with either row or column +spans are exported. + +This routine returns the generated source or nil as appropriate. + +Refer docstring of `org-export-prefer-native-exporter-for-tables' +for further information." + (require 'table) + (with-current-buffer (get-buffer-create " org-tmp1 ") + (erase-buffer) + (insert (mapconcat 'identity lines "\n")) + (goto-char (point-min)) + (if (not (re-search-forward "|[^+]" nil t)) + (error "Error processing table")) + (table-recognize-table) + (when (or (not spanned-only) + (let* ((dim (table-query-dimension)) + (c (nth 4 dim)) (r (nth 5 dim)) (cells (nth 6 dim))) + (not (= (* c r) cells)))) + (with-current-buffer (get-buffer-create " org-tmp2 ") (erase-buffer)) + (cond + ((member backend table-source-languages) + (table-generate-source backend " org-tmp2 ") + (set-buffer " org-tmp2 ") + (buffer-substring (point-min) (point-max))) + (t + ;; table.el doesn't support the given backend. Currently this + ;; happens in case of odt export. Strip the table from the + ;; generated document. A better alternative would be to embed + ;; the table as ascii text in the output document. + (org-lparse-warn + (concat + "Found table.el-type table in the source org file. " + (format "table.el doesn't support %s backend. " + (upcase (symbol-name backend))) + "Skipping ahead ...")) + ""))))) + +(defun org-lparse-handle-time-stamps (s) + "Format time stamps in string S, or remove them." + (catch 'exit + (let (r b) + (while (string-match org-maybe-keyword-time-regexp s) + (or b (setq b (substring s 0 (match-beginning 0)))) + (setq r (concat + r (substring s 0 (match-beginning 0)) + (org-lparse-format + 'FONTIFY + (concat + (if (match-end 1) + (org-lparse-format + 'FONTIFY + (match-string 1 s) "timestamp-kwd")) + (org-lparse-format + 'FONTIFY + (substring (org-translate-time (match-string 3 s)) 1 -1) + "timestamp")) + "timestamp-wrapper")) + s (substring s (match-end 0)))) + ;; Line break if line started and ended with time stamp stuff + (if (not r) + s + (setq r (concat r s)) + (unless (string-match "\\S-" (concat b s)) + (setq r (concat r (org-lparse-format 'LINE-BREAK)))) + r)))) + +(defun org-xml-encode-plain-text (s) + "Convert plain text characters to HTML equivalent. +Possible conversions are set in `org-export-html-protect-char-alist'." + (let ((cl (org-lparse-get 'PLAIN-TEXT-MAP)) c) + (while (setq c (pop cl)) + (let ((start 0)) + (while (string-match (car c) s start) + (setq s (replace-match (cdr c) t t s) + start (1+ (match-beginning 0)))))) + s)) + +(defun org-xml-encode-org-text-skip-links (string) + "Prepare STRING for HTML export. Apply all active conversions. +If there are links in the string, don't modify these." + (let* ((re (concat org-bracket-link-regexp "\\|" + (org-re "[ \t]+\\(:[[:alnum:]_@#%:]+:\\)[ \t]*$"))) + m s l res) + (while (setq m (string-match re string)) + (setq s (substring string 0 m) + l (match-string 0 string) + string (substring string (match-end 0))) + (push (org-xml-encode-org-text s) res) + (push l res)) + (push (org-xml-encode-org-text string) res) + (apply 'concat (nreverse res)))) + +(defun org-xml-encode-org-text (s) + "Apply all active conversions to translate special ASCII to HTML." + (setq s (org-xml-encode-plain-text s)) + (if org-export-html-expand + (while (string-match "@<\\([^&]*\\)>" s) + (setq s (replace-match "<\\1>" t nil s)))) + (if org-export-with-emphasize + (setq s (org-lparse-apply-char-styles s))) + (if org-export-with-special-strings + (setq s (org-lparse-convert-special-strings s))) + (if org-export-with-sub-superscripts + (setq s (org-lparse-apply-sub-superscript-styles s))) + (if org-export-with-TeX-macros + (let ((start 0) wd rep) + (while (setq start (string-match "\\\\\\([a-zA-Z]+[0-9]*\\)\\({}\\)?" + s start)) + (if (get-text-property (match-beginning 0) 'org-protected s) + (setq start (match-end 0)) + (setq wd (match-string 1 s)) + (if (setq rep (org-lparse-format 'ORG-ENTITY wd)) + (setq s (replace-match rep t t s)) + (setq start (+ start (length wd)))))))) + s) + +(defun org-lparse-convert-special-strings (string) + "Convert special characters in STRING to HTML." + (let ((all (org-lparse-get 'SPECIAL-STRING-REGEXPS)) + e a re rpl start) + (while (setq a (pop all)) + (setq re (car a) rpl (cdr a) start 0) + (while (string-match re string start) + (if (get-text-property (match-beginning 0) 'org-protected string) + (setq start (match-end 0)) + (setq string (replace-match rpl t nil string))))) + string)) + +(defun org-lparse-apply-sub-superscript-styles (string) + "Apply subscript and superscript styles to STRING. +Use `org-export-with-sub-superscripts' to control application of +sub and superscript styles." + (let (key c (s 0) (requireb (eq org-export-with-sub-superscripts '{}))) + (while (string-match org-match-substring-regexp string s) + (cond + ((and requireb (match-end 8)) (setq s (match-end 2))) + ((get-text-property (match-beginning 2) 'org-protected string) + (setq s (match-end 2))) + (t + (setq s (match-end 1) + key (if (string= (match-string 2 string) "_") + 'subscript 'superscript) + c (or (match-string 8 string) + (match-string 6 string) + (match-string 5 string)) + string (replace-match + (concat (match-string 1 string) + (org-lparse-format 'FONTIFY c key)) + t t string))))) + (while (string-match "\\\\\\([_^]\\)" string) + (setq string (replace-match (match-string 1 string) t t string))) + string)) + +(defvar org-lparse-char-styles + `(("*" bold) + ("/" emphasis) + ("_" underline) + ("=" code) + ("~" verbatim) + ("+" strike)) + "Map Org emphasis markers to char styles. +This is an alist where each element is of the +form (ORG-EMPHASIS-CHAR . CHAR-STYLE).") + +(defun org-lparse-apply-char-styles (string) + "Apply char styles to STRING. +The variable `org-lparse-char-styles' controls how the Org +emphasis markers are interpreted." + (let ((s 0) rpl) + (while (string-match org-emph-re string s) + (if (not (equal + (substring string (match-beginning 3) (1+ (match-beginning 3))) + (substring string (match-beginning 4) (1+ (match-beginning 4))))) + (setq s (match-beginning 0) + rpl + (concat + (match-string 1 string) + (org-lparse-format + 'FONTIFY (match-string 4 string) + (nth 1 (assoc (match-string 3 string) + org-lparse-char-styles))) + (match-string 5 string)) + string (replace-match rpl t t string) + s (+ s (- (length rpl) 2))) + (setq s (1+ s)))) + string)) + +(defun org-lparse-export-list-line (line pos struct prevs) + "Insert list syntax in export buffer. Return LINE, maybe modified. + +POS is the item position or line position the line had before +modifications to buffer. STRUCT is the list structure. PREVS is +the alist of previous items." + (let* ((get-type + (function + ;; Translate type of list containing POS to "d", "o" or + ;; "u". + (lambda (pos struct prevs) + (let ((type (org-list-get-list-type pos struct prevs))) + (cond + ((eq 'ordered type) "o") + ((eq 'descriptive type) "d") + (t "u")))))) + (get-closings + (function + ;; Return list of all items and sublists ending at POS, in + ;; reverse order. + (lambda (pos) + (let (out) + (catch 'exit + (mapc (lambda (e) + (let ((end (nth 6 e)) + (item (car e))) + (cond + ((= end pos) (push item out)) + ((>= item pos) (throw 'exit nil))))) + struct)) + out))))) + ;; First close any previous item, or list, ending at POS. + (mapc (lambda (e) + (let* ((lastp (= (org-list-get-last-item e struct prevs) e)) + (first-item (org-list-get-list-begin e struct prevs)) + (type (funcall get-type first-item struct prevs))) + (org-lparse-end-paragraph) + ;; Ending for every item + (org-lparse-end-list-item type) + ;; We're ending last item of the list: end list. + (when lastp + (org-lparse-end 'LIST type) + (org-lparse-begin-paragraph)))) + (funcall get-closings pos)) + (cond + ;; At an item: insert appropriate tags in export buffer. + ((assq pos struct) + (string-match + (concat "[ \t]*\\(\\S-+[ \t]*\\)" + "\\(?:\\[@\\(?:start:\\)?\\([0-9]+\\|[A-Za-z]\\)\\]\\)?" + "\\(?:\\(\\[[ X-]\\]\\)[ \t]+\\)?" + "\\(?:\\(.*\\)[ \t]+::[ \t]+\\)?" + "\\(.*\\)") line) + (let* ((checkbox (match-string 3 line)) + (desc-tag (or (match-string 4 line) "???")) + (body (or (match-string 5 line) "")) + (list-beg (org-list-get-list-begin pos struct prevs)) + (firstp (= list-beg pos)) + ;; Always refer to first item to determine list type, in + ;; case list is ill-formed. + (type (funcall get-type list-beg struct prevs)) + (counter (let ((count-tmp (org-list-get-counter pos struct))) + (cond + ((not count-tmp) nil) + ((string-match "[A-Za-z]" count-tmp) + (- (string-to-char (upcase count-tmp)) 64)) + ((string-match "[0-9]+" count-tmp) + count-tmp))))) + (when firstp + (org-lparse-end-paragraph) + (org-lparse-begin 'LIST type)) + + (let ((arg (cond ((equal type "d") desc-tag) + ((equal type "o") counter)))) + (org-lparse-begin 'LIST-ITEM type arg)) + + ;; If line had a checkbox, some additional modification is required. + (when checkbox + (setq body + (concat + (org-lparse-format + 'FONTIFY (concat + "[" + (cond + ((string-match "X" checkbox) "X") + ((string-match " " checkbox) + (org-lparse-format 'SPACES 1)) + (t "-")) + "]") + 'code) + " " + body))) + ;; Return modified line + body)) + ;; At a list ender: go to next line (side-effects only). + ((equal "ORG-LIST-END-MARKER" line) (throw 'nextline nil)) + ;; Not at an item: return line unchanged (side-effects only). + (t line)))) + +(defun org-lparse-bind-local-variables (opt-plist) + (mapc (lambda (x) + (set (make-local-variable (nth 2 x)) + (plist-get opt-plist (car x)))) + org-export-plist-vars)) + +(defvar org-lparse-table-rowgrp-open) +(defvar org-lparse-table-cur-rowgrp-is-hdr) +(defvar org-lparse-footnote-number) +(defvar org-lparse-footnote-definitions) +(defvar org-lparse-footnote-buffer) +(defvar org-lparse-output-buffer) + +(defcustom org-lparse-debug nil + "." + :group 'org-lparse + :type 'boolean) + +(defun org-lparse-begin (entity &rest args) + "Begin ENTITY in current buffer. ARGS is entity specific. +ENTITY can be one of PARAGRAPH, LIST, LIST-ITEM etc. + +Use (org-lparse-begin 'LIST \"o\") to begin a list in current +buffer. + +See `org-xhtml-entity-control-callbacks-alist' for more +information." + (when (and (member org-lparse-debug '(t control)) + (not (eq entity 'DOCUMENT-CONTENT))) + (insert (org-lparse-format 'COMMENT "%s BEGIN %S" entity args))) + + (let ((f (cadr (assoc entity org-lparse-entity-control-callbacks-alist)))) + (unless f (error "Unknown entity: %s" entity)) + (apply f args))) + +(defun org-lparse-end (entity &rest args) + "Close ENTITY in current buffer. ARGS is entity specific. +ENTITY can be one of PARAGRAPH, LIST, LIST-ITEM +etc. + +Use (org-lparse-end 'LIST \"o\") to close a list in current +buffer. + +See `org-xhtml-entity-control-callbacks-alist' for more +information." + (when (and (member org-lparse-debug '(t control)) + (not (eq entity 'DOCUMENT-CONTENT))) + (insert (org-lparse-format 'COMMENT "%s END %S" entity args))) + + (let ((f (caddr (assoc entity org-lparse-entity-control-callbacks-alist)))) + (unless f (error "Unknown entity: %s" entity)) + (apply f args))) + +(defun org-lparse-begin-paragraph (&optional style) + "Insert <p>, but first close previous paragraph if any." + (org-lparse-end-paragraph) + (org-lparse-begin 'PARAGRAPH style) + (setq org-lparse-par-open t)) + +(defun org-lparse-end-paragraph () + "Close paragraph if there is one open." + (when org-lparse-par-open + (org-lparse-end 'PARAGRAPH) + (setq org-lparse-par-open nil))) + +(defun org-lparse-end-list-item (&optional type) + "Close <li> if necessary." + (org-lparse-end-paragraph) + (org-lparse-end 'LIST-ITEM (or type "u"))) + +(defvar org-lparse-dyn-current-environment nil) +(defun org-lparse-begin-environment (style) + (assert (not org-lparse-dyn-current-environment) t) + (setq org-lparse-dyn-current-environment style) + (org-lparse-begin 'ENVIRONMENT style)) + +(defun org-lparse-end-environment (style) + (org-lparse-end 'ENVIRONMENT style) + + (assert (eq org-lparse-dyn-current-environment style) t) + (setq org-lparse-dyn-current-environment nil)) + +(defun org-lparse-current-environment-p (style) + (eq org-lparse-dyn-current-environment style)) + +(defun org-lparse-begin-footnote-definition (n) + (unless org-lparse-footnote-buffer + (setq org-lparse-footnote-buffer + (get-buffer-create "*Org HTML Export Footnotes*"))) + (set-buffer org-lparse-footnote-buffer) + (erase-buffer) + (setq org-lparse-insert-tag-with-newlines nil) + (org-lparse-begin 'FOOTNOTE-DEFINITION n)) + +(defun org-lparse-end-footnote-definition (n) + (org-lparse-end 'FOOTNOTE-DEFINITION n) + (setq org-lparse-insert-tag-with-newlines 'both) + (push (cons n (buffer-string)) org-lparse-footnote-definitions) + (set-buffer org-lparse-output-buffer)) + +(defun org-lparse-format (entity &rest args) + "Format ENTITY in backend-specific way and return it. +ARGS is specific to entity being formatted. + +Use (org-lparse-format 'HEADING \"text\" 1) to format text as +level 1 heading. + +See `org-xhtml-entity-format-callbacks-alist' for more information." + (when (and (member org-lparse-debug '(t format)) + (not (equal entity 'COMMENT))) + (insert (org-lparse-format 'COMMENT "%s: %S" entity args))) + (cond + ((consp entity) + (let ((text (pop args))) + (apply 'org-lparse-format 'TAGS entity text args))) + (t + (let ((f (cdr (assoc entity org-lparse-entity-format-callbacks-alist)))) + (unless f (error "Unknown entity: %s" entity)) + (apply f args))))) + +(defun org-lparse-insert (entity &rest args) + (insert (apply 'org-lparse-format entity args))) + +(defun org-lparse-prepare-toc (lines level-offset opt-plist umax-toc) + (let* ((quote-re0 (concat "^[ \t]*" org-quote-string "\\>")) + (org-min-level (org-get-min-level lines level-offset)) + (org-last-level org-min-level) + level) + (with-temp-buffer + (org-lparse-bind-local-variables opt-plist) + (erase-buffer) + (org-lparse-begin 'TOC (nth 3 (plist-get opt-plist :lang-words))) + (setq + lines + (mapcar + #'(lambda (line) + (when (and (string-match org-todo-line-regexp line) + (not (get-text-property 0 'org-protected line)) + (<= (setq level (org-tr-level + (- (match-end 1) (match-beginning 1) + level-offset))) + umax-toc)) + (let ((txt (save-match-data + (org-xml-encode-org-text-skip-links + (org-export-cleanup-toc-line + (match-string 3 line))))) + (todo (and + org-export-mark-todo-in-toc + (or (and (match-beginning 2) + (not (member (match-string 2 line) + org-done-keywords))) + (and (= level umax-toc) + (org-search-todo-below + line lines level))))) + tags) + ;; Check for targets + (while (string-match org-any-target-regexp line) + (setq line + (replace-match + (let ((org-lparse-encode-pending t)) + (org-lparse-format 'FONTIFY + (match-string 1 line) "target")) + t t line))) + (when (string-match + (org-re "[ \t]+:\\([[:alnum:]_@:]+\\):[ \t]*$") txt) + (setq tags (match-string 1 txt) + txt (replace-match "" t nil txt))) + (when (string-match quote-re0 txt) + (setq txt (replace-match "" t t txt))) + (while (string-match "<\\(<\\)+\\|>\\(>\\)+" txt) + (setq txt (replace-match "" t t txt))) + (org-lparse-format + 'TOC-ITEM + (let* ((snumber (org-section-number level)) + (href (replace-regexp-in-string + "\\." "-" (format "sec-%s" snumber))) + (href + (or + (cdr (assoc + href org-export-preferred-target-alist)) + href)) + (href (org-solidify-link-text href))) + (org-lparse-format 'TOC-ENTRY snumber todo txt tags href)) + level org-last-level) + (setq org-last-level level))) + line) + lines)) + (org-lparse-end 'TOC) + (setq org-lparse-toc (buffer-string)))) + lines) + +(defun org-lparse-format-table-row (fields &optional text-for-empty-fields) + (unless org-lparse-table-ncols + ;; first row of the table + (setq org-lparse-table-ncols (length fields)) + (when org-lparse-table-is-styled + (setq org-lparse-table-num-numeric-items-per-column + (make-vector org-lparse-table-ncols 0)) + (setq org-lparse-table-colalign-vector + (make-vector org-lparse-table-ncols nil)) + (let ((c -1)) + (while (< (incf c) org-lparse-table-ncols) + (let ((cookie (cdr (assoc (1+ c) org-lparse-table-colalign-info)))) + (setf (aref org-lparse-table-colalign-vector c) + (cond + ((string= cookie "l") "left") + ((string= cookie "r") "right") + ((string= cookie "c") "center") + (t nil)))))))) + (incf org-lparse-table-rownum) + (let ((i -1)) + (org-lparse-format + 'TABLE-ROW + (mapconcat + (lambda (x) + (when (and (string= x "") text-for-empty-fields) + (setq x text-for-empty-fields)) + (incf i) + (and org-lparse-table-is-styled + (< i org-lparse-table-ncols) + (string-match org-table-number-regexp x) + (incf (aref org-lparse-table-num-numeric-items-per-column i))) + (org-lparse-format 'TABLE-CELL x org-lparse-table-rownum i)) + fields "\n")))) + +(defun org-lparse-get (what &optional opt-plist) + "Query for value of WHAT for the current backend `org-lparse-backend'. +See also `org-lparse-backend-get'." + (if (boundp 'org-lparse-backend) + (org-lparse-backend-get (symbol-name org-lparse-backend) what opt-plist) + (error "org-lparse-backend is not bound yet"))) + +(defun org-lparse-backend-get (backend what &optional opt-plist) + "Query BACKEND for value of WHAT. +Dispatch the call to `org-<backend>-user-get'. If that throws an +error, dispatch the call to `org-<backend>-get'. See +`org-xhtml-get' for all known settings queried for by +`org-lparse' during the course of export." + (assert (stringp backend) t) + (unless (org-lparse-backend-is-native-p backend) + (error "Unknown native backend %s" backend)) + (let ((backend-get-method (intern (format "org-%s-get" backend))) + (backend-user-get-method (intern (format "org-%s-user-get" backend)))) + (cond + ((functionp backend-get-method) + (condition-case nil + (funcall backend-user-get-method what opt-plist) + (error (funcall backend-get-method what opt-plist)))) + (t + (error "Native backend %s doesn't define %s" backend backend-get-method))))) + +(defun org-lparse-insert-tag (tag &rest args) + (when (member org-lparse-insert-tag-with-newlines '(lead both)) + (insert "\n")) + (insert (apply 'format tag args)) + (when (member org-lparse-insert-tag-with-newlines '(trail both)) + (insert "\n"))) + +(defun org-lparse-get-targets-from-title (title) + (let* ((target (org-get-text-property-any 0 'target title)) + (extra-targets (assoc target org-export-target-aliases)) + (target (or (cdr (assoc target org-export-preferred-target-alist)) + target))) + (cons target (remove target extra-targets)))) + +(defun org-lparse-suffix-from-snumber (snumber) + (let* ((snu (replace-regexp-in-string "\\." "-" snumber)) + (href (cdr (assoc (concat "sec-" snu) + org-export-preferred-target-alist)))) + (org-solidify-link-text (or href snu)))) + +(defun org-lparse-begin-level (level title umax head-count) + "Insert a new LEVEL in HTML export. +When TITLE is nil, just close all open levels." + (org-lparse-end-level level umax) + (unless title (error "Why is heading nil")) + (let* ((targets (org-lparse-get-targets-from-title title)) + (target (car targets)) (extra-targets (cdr targets)) + (target (and target (org-solidify-link-text target))) + (extra-class (org-get-text-property-any 0 'html-container-class title)) + snumber tags level1 class) + (when (string-match (org-re "\\(:[[:alnum:]_@#%:]+:\\)[ \t]*$") title) + (setq tags (and org-export-with-tags (match-string 1 title))) + (setq title (replace-match "" t t title))) + (if (> level umax) + (progn + (if (aref org-levels-open (1- level)) + (org-lparse-end-list-item) + (aset org-levels-open (1- level) t) + (org-lparse-end-paragraph) + (org-lparse-begin 'LIST 'unordered)) + (org-lparse-begin + 'LIST-ITEM 'unordered target + (org-lparse-format 'HEADLINE title extra-targets tags))) + (aset org-levels-open (1- level) t) + (setq snumber (org-section-number level)) + (setq level1 (+ level (or (org-lparse-get 'TOPLEVEL-HLEVEL) 1) -1)) + (unless (= head-count 1) + (org-lparse-end-outline-text-or-outline)) + (org-lparse-begin-outline-and-outline-text + level1 snumber title tags target extra-targets extra-class) + (org-lparse-begin-paragraph)))) + +(defun org-lparse-end-level (level umax) + (org-lparse-end-paragraph) + (loop for l from org-level-max downto level + do (when (aref org-levels-open (1- l)) + ;; Terminate one level in HTML export + (if (<= l umax) + (org-lparse-end-outline-text-or-outline) + (org-lparse-end-list-item) + (org-lparse-end 'LIST 'unordered)) + (aset org-levels-open (1- l) nil)))) + +(defvar org-lparse-outline-text-open) +(defun org-lparse-begin-outline-and-outline-text (level1 snumber title tags + target extra-targets + extra-class) + (org-lparse-begin + 'OUTLINE level1 snumber title tags target extra-targets extra-class) + (org-lparse-begin-outline-text level1 snumber extra-class)) + +(defun org-lparse-end-outline-text-or-outline () + (cond + (org-lparse-outline-text-open + (org-lparse-end 'OUTLINE-TEXT) + (setq org-lparse-outline-text-open nil)) + (t (org-lparse-end 'OUTLINE)))) + +(defun org-lparse-begin-outline-text (level1 snumber extra-class) + (assert (not org-lparse-outline-text-open) t) + (setq org-lparse-outline-text-open t) + (org-lparse-begin 'OUTLINE-TEXT level1 snumber extra-class)) + +(defun org-lparse-html-list-type-to-canonical-list-type (ltype) + (cdr (assoc ltype '(("o" . ordered) + ("u" . unordered) + ("d" . description))))) + +(defvar org-lparse-table-rowgrp-info) +(defun org-lparse-begin-table-rowgroup (&optional is-header-row) + (push (cons (1+ org-lparse-table-rownum) :start) org-lparse-table-rowgrp-info) + (org-lparse-begin 'TABLE-ROWGROUP is-header-row)) + +(defun org-lparse-end-table () + (when org-lparse-table-is-styled + ;; column groups + (unless (car org-table-colgroup-info) + (setq org-table-colgroup-info + (cons :start (cdr org-table-colgroup-info)))) + + ;; column alignment + (let ((c -1)) + (mapc + (lambda (x) + (incf c) + (setf (aref org-lparse-table-colalign-vector c) + (or (aref org-lparse-table-colalign-vector c) + (if (> (/ (float x) (1+ org-lparse-table-rownum)) + org-table-number-fraction) + "right" "left")))) + org-lparse-table-num-numeric-items-per-column))) + (org-lparse-end 'TABLE)) + +(defvar org-lparse-encode-pending nil) + +(defun org-lparse-format-tags (tag text prefix suffix &rest args) + (cond + ((consp tag) + (concat prefix (apply 'format (car tag) args) text suffix + (format (cdr tag)))) + ((stringp tag) ; singleton tag + (concat prefix (apply 'format tag args) text)))) + +(defun org-xml-fix-class-name (kwd) ; audit callers of this function + "Turn todo keyword into a valid class name. +Replaces invalid characters with \"_\"." + (save-match-data + (while (string-match "[^a-zA-Z0-9_]" kwd) + (setq kwd (replace-match "_" t t kwd)))) + kwd) + +(defun org-lparse-format-todo (todo) + (org-lparse-format 'FONTIFY + (concat + (ignore-errors (org-lparse-get 'TODO-KWD-CLASS-PREFIX)) + (org-xml-fix-class-name todo)) + (list (if (member todo org-done-keywords) "done" "todo") + todo))) + +(defun org-lparse-format-extra-targets (extra-targets) + (if (not extra-targets) "" + (mapconcat (lambda (x) + (setq x (org-solidify-link-text + (if (org-uuidgen-p x) (concat "ID-" x) x))) + (org-lparse-format 'ANCHOR "" x)) + extra-targets ""))) + +(defun org-lparse-format-org-tags (tags) + (if (not tags) "" + (org-lparse-format + 'FONTIFY (mapconcat + (lambda (x) + (org-lparse-format + 'FONTIFY x + (concat + (ignore-errors (org-lparse-get 'TAG-CLASS-PREFIX)) + (org-xml-fix-class-name x)))) + (org-split-string tags ":") + (org-lparse-format 'SPACES 1)) "tag"))) + +(defun org-lparse-format-section-number (&optional snumber level) + (and org-export-with-section-numbers + (not body-only) snumber level + (org-lparse-format 'FONTIFY snumber (format "section-number-%d" level)))) + +(defun org-lparse-warn (msg) + (put-text-property 0 (length msg) 'face 'font-lock-warning-face msg) + (message msg) + (sleep-for 3)) + +(defun org-xml-format-href (s) + "Make sure the S is valid as a href reference in an XHTML document." + (save-match-data + (let ((start 0)) + (while (string-match "&" s start) + (setq start (+ (match-beginning 0) 3) + s (replace-match "&" t t s))))) + s) + +(defun org-xml-format-desc (s) + "Make sure the S is valid as a description in a link." + (if (and s (not (get-text-property 1 'org-protected s))) + (save-match-data + (org-xml-encode-org-text s)) + s)) + +(provide 'org-lparse) + +;;; org-lparse.el ends here diff --git a/contrib/lisp/org-odt.el b/contrib/lisp/org-odt.el new file mode 100644 index 0000000..ad53204 --- /dev/null +++ b/contrib/lisp/org-odt.el @@ -0,0 +1,1513 @@ +;;; org-odt.el --- OpenDocumentText export for Org-mode + +;; Copyright (C) 2010-2011 +;; Jambunathan <kjambunathan at gmail dot com> + +;; Author: Jambunathan K <kjambunathan at gmail dot com> +;; Keywords: outlines, hypermedia, calendar, wp +;; Homepage: http://orgmode.org +;; Version: 0.8 + +;; This file is not (yet) part of GNU Emacs. +;; However, it is distributed under the same license. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Commentary: + +;;; Use M-x `org-odt-unit-test' to test drive the exporter + +;;; Code: +(eval-when-compile (require 'cl)) +(require 'org-lparse) + +(defun org-odt-end-export () + ;; remove empty paragraphs + (goto-char (point-min)) + (while (re-search-forward + "<text:p\\( text:style-name=\"Text_20_body\"\\)?>[ \r\n\t]*</text:p>" + nil t) + (replace-match "")) + (goto-char (point-min)) + + ;; Convert whitespace place holders + (goto-char (point-min)) + (let (beg end n) + (while (setq beg (next-single-property-change (point) 'org-whitespace)) + (setq n (get-text-property beg 'org-whitespace) + end (next-single-property-change beg 'org-whitespace)) + (goto-char beg) + (delete-region beg end) + (insert (format "<span style=\"visibility:hidden;\">%s</span>" + (make-string n ?x))))) + + ;; Remove empty lines at the beginning of the file. + (goto-char (point-min)) + (when (looking-at "\\s-+\n") (replace-match "")) + + ;; Remove display properties + (remove-text-properties (point-min) (point-max) '(display t))) + +(defvar org-odt-suppress-xref nil) +(defconst org-export-odt-special-string-regexps + '(("\\\\-" . "­\\1") ; shy + ("---\\([^-]\\)" . "—\\1") ; mdash + ("--\\([^-]\\)" . "–\\1") ; ndash + ("\\.\\.\\." . "…")) ; hellip + "Regular expressions for special string conversion.") + +(defconst org-odt-lib-dir (file-name-directory load-file-name)) +(defconst org-odt-data-dir + (let ((dir1 (expand-file-name ".." org-odt-lib-dir)) ; git + (dir2 (expand-file-name "./contrib/odt" org-odt-lib-dir))) ; elpa + (cond + ((file-directory-p dir1) dir1) + ((file-directory-p dir2) dir2) + (t (error "Cannot find factory styles file. Check package dir layout"))))) + +(defvar org-odt-file-extensions + '(("odt" . "OpenDocument Text") + ("ott" . "OpenDocument Text Template") + ("odm" . "OpenDocument Master Document") + ("ods" . "OpenDocument Spreadsheet") + ("ots" . "OpenDocument Spreadsheet Template") + ("odg" . "OpenDocument Drawing (Graphics)") + ("otg" . "OpenDocument Drawing Template") + ("odp" . "OpenDocument Presentation") + ("otp" . "OpenDocument Presentation Template") + ("odi" . "OpenDocument Image") + ("odf" . "OpenDocument Formula") + ("odc" . "OpenDocument Chart") + ("doc" . "Microsoft Text") + ("docx" . "Microsoft Text") + ("xls" . "Microsoft Spreadsheet") + ("xlsx" . "Microsoft Spreadsheet") + ("ppt" . "Microsoft Presentation") + ("pptx" . "Microsoft Presentation"))) + +(defvar org-odt-ms-file-extensions + '(("doc" . "Microsoft Text") + ("docx" . "Microsoft Text") + ("xls" . "Microsoft Spreadsheet") + ("xlsx" . "Microsoft Spreadsheet") + ("ppt" . "Microsoft Presentation") + ("pptx" . "Microsoft Presentation"))) + +;; RelaxNG validation of OpenDocument xml files +(eval-after-load 'rng-nxml + '(setq rng-nxml-auto-validate-flag t)) + +(eval-after-load 'rng-loc + '(add-to-list 'rng-schema-locating-files + (expand-file-name "etc/schema/schemas.xml" org-odt-data-dir))) + +(mapc + (lambda (desc) + ;; Let Org open all OpenDocument files using system-registered app + (add-to-list 'org-file-apps + (cons (concat "\\." (car desc) "\\'") 'system)) + ;; Let Emacs open all OpenDocument files in archive mode + (add-to-list 'auto-mode-alist + (cons (concat "\\." (car desc) "\\'") 'archive-mode))) + org-odt-file-extensions) + +(mapc + (lambda (desc) + ;; Let Org open all Microsoft files using system-registered app + (add-to-list 'org-file-apps + (cons (concat "\\." (car desc) "\\'") 'system))) + org-odt-ms-file-extensions) + +;; register the odt exporter +(add-to-list 'org-export-backends 'odt) + +(defcustom org-export-odt-automatic-styles-file nil + "Default style file for use with ODT exporter." + :group 'org-export-odt + :type 'file) + +;; TODO: Make configuration user-friendly. +(defcustom org-export-odt-styles-file nil + "Default style file for use with ODT exporter. +Valid values are path to an styles.xml file or a path to a valid +*.odt or a *.ott file or a list of the form (FILE (MEMBER1 +MEMBER2 ...)). In the last case, the specified FILE is unzipped +and MEMBER1, MEMBER2 etc are copied in to the generated odt +file. The last form is particularly useful if the styles.xml has +reference to additional files like header and footer images. +" + :group 'org-export-odt + :type 'file) +(defconst org-export-odt-tmpdir-prefix "odt-") +(defconst org-export-odt-bookmark-prefix "OrgXref.") +(defcustom org-export-odt-use-bookmarks-for-internal-links t + "Export Internal links as bookmarks?." + :group 'org-export-odt + :type 'boolean) + +(defcustom org-export-odt-embed-images t + "Should the images be copied in to the odt file or just linked?" + :group 'org-export-odt + :type 'boolean) + +(defcustom org-odt-export-inline-images 'maybe + "Non-nil means inline images into exported HTML pages. +This is done using an <img> tag. When nil, an anchor with href is used to +link to the image. If this option is `maybe', then images in links with +an empty description will be inlined, while images with a description will +be linked only." + :group 'org-odt-export + :type '(choice (const :tag "Never" nil) + (const :tag "Always" t) + (const :tag "When there is no description" maybe))) + +(defcustom org-odt-export-inline-image-extensions + '("png" "jpeg" "jpg" "gif") + "Extensions of image files that can be inlined into HTML." + :group 'org-odt-export + :type '(repeat (string :tag "Extension"))) + +(defcustom org-export-odt-pixels-per-inch display-pixels-per-inch + "" + :group 'org-export-odt + :type 'float) + +(defvar org-export-odt-default-org-styles-alist + '((paragraph . ((default . "Text_20_body") + (fixedwidth . "OrgSourceBlock") + (verse . "OrgVerse") + (quote . "Quotations") + (blockquote . "Quotations") + (center . "OrgCenter") + (left . "OrgLeft") + (right . "OrgRight") + (title . "Heading_20_1.title") + (footnote . "Footnote") + (src . "OrgSourceBlock") + (illustration . "Illustration") + (table . "Table") + (definition-term . "Text_20_body_20_bold") + (horizontal-line . "Horizontal_20_Line"))) + (character . ((bold . "Bold") + (emphasis . "Emphasis") + (code . "OrgCode") + (verbatim . "OrgCode") + (strike . "Strikethrough") + (underline . "Underline") + (subscript . "OrgSubscript") + (superscript . "OrgSuperscript"))) + (list . ((ordered . "OrgNumberedList") + (unordered . "OrgBulletedList") + (description . "OrgDescriptionList")))) + "Default styles for various entities.") + +(defvar org-export-odt-org-styles-alist org-export-odt-default-org-styles-alist) +(defun org-odt-get-style-name-for-entity (category &optional entity) + (let ((entity (or entity 'default))) + (or + (cdr (assoc entity (cdr (assoc category + org-export-odt-org-styles-alist)))) + (cdr (assoc entity (cdr (assoc category + org-export-odt-default-org-styles-alist)))) + (error "Cannot determine style name for entity %s of type %s" + entity category)))) + +;;;###autoload +(defun org-export-as-odt-and-open (arg) + "Export the outline as ODT and immediately open it with a browser. +If there is an active region, export only the region. +The prefix ARG specifies how many levels of the outline should become +headlines. The default is 3. Lower levels will become bulleted lists." + (interactive "P") + (org-lparse-and-open "odt" "odt" arg)) + +;;;###autoload +(defun org-export-as-odt-batch () + "Call the function `org-lparse-batch'. +This function can be used in batch processing as: +emacs --batch + --load=$HOME/lib/emacs/org.el + --eval \"(setq org-export-headline-levels 2)\" + --visit=MyFile --funcall org-export-as-odt-batch" + (org-lparse-batch "odt")) + +;;;###autoload +(defun org-export-as-odt-to-buffer (arg) + "Call `org-lparse-odt` with output to a temporary buffer. +No file is created. The prefix ARG is passed through to `org-lparse-to-buffer'." + (interactive "P") + (org-lparse-to-buffer "odt" arg)) + +;;;###autoload +(defun org-replace-region-by-odt (beg end) + "Assume the current region has org-mode syntax, and convert it to ODT. +This can be used in any buffer. For example, you could write an +itemized list in org-mode syntax in an ODT buffer and then use this +command to convert it." + (interactive "r") + (org-replace-region-by "odt" beg end)) + +;;;###autoload +(defun org-export-region-as-odt (beg end &optional body-only buffer) + "Convert region from BEG to END in org-mode buffer to ODT. +If prefix arg BODY-ONLY is set, omit file header, footer, and table of +contents, and only produce the region of converted text, useful for +cut-and-paste operations. +If BUFFER is a buffer or a string, use/create that buffer as a target +of the converted ODT. If BUFFER is the symbol `string', return the +produced ODT as a string and leave not buffer behind. For example, +a Lisp program could call this function in the following way: + + (setq odt (org-export-region-as-odt beg end t 'string)) + +When called interactively, the output buffer is selected, and shown +in a window. A non-interactive call will only return the buffer." + (interactive "r\nP") + (org-lparse-region "odt" beg end body-only buffer)) + +;;; org-export-as-odt +;;;###autoload +(defun org-export-as-odt (arg &optional hidden ext-plist + to-buffer body-only pub-dir) + "Export the outline as a OpenDocumentText file. +If there is an active region, export only the region. The prefix +ARG specifies how many levels of the outline should become +headlines. The default is 3. Lower levels will become bulleted +lists. HIDDEN is obsolete and does nothing. +EXT-PLIST is a property list with external parameters overriding +org-mode's default settings, but still inferior to file-local +settings. When TO-BUFFER is non-nil, create a buffer with that +name and export to that buffer. If TO-BUFFER is the symbol +`string', don't leave any buffer behind but just return the +resulting XML as a string. When BODY-ONLY is set, don't produce +the file header and footer, simply return the content of +<body>...</body>, without even the body tags themselves. When +PUB-DIR is set, use this as the publishing directory." + (interactive "P") + (org-lparse "odt" "odt" arg hidden ext-plist to-buffer body-only pub-dir)) + +(defvar org-odt-entity-control-callbacks-alist + `((EXPORT + . (org-odt-begin-export org-odt-end-export)) + (DOCUMENT-CONTENT + . (org-odt-begin-document-content org-odt-end-document-content)) + (DOCUMENT-BODY + . (org-odt-begin-document-body org-odt-end-document-body)) + (TOC + . (org-odt-begin-toc org-odt-end-toc)) + (ENVIRONMENT + . (org-odt-begin-environment org-odt-end-environment)) + (FOOTNOTE-DEFINITION + . (org-odt-begin-footnote-definition org-odt-end-footnote-definition)) + (TABLE + . (org-odt-begin-table org-odt-end-table)) + (TABLE-ROWGROUP + . (org-odt-begin-table-rowgroup org-odt-end-table-rowgroup)) + (LIST + . (org-odt-begin-list org-odt-end-list)) + (LIST-ITEM + . (org-odt-begin-list-item org-odt-end-list-item)) + (OUTLINE + . (org-odt-begin-outline org-odt-end-outline)) + (OUTLINE-TEXT + . (org-odt-begin-outline-text org-odt-end-outline-text)) + (PARAGRAPH + . (org-odt-begin-paragraph org-odt-end-paragraph))) + "") + +(defvar org-odt-entity-format-callbacks-alist + `((EXTRA-TARGETS . org-lparse-format-extra-targets) + (ORG-TAGS . org-lparse-format-org-tags) + (SECTION-NUMBER . org-lparse-format-section-number) + (HEADLINE . org-odt-format-headline) + (TOC-ENTRY . org-odt-format-toc-entry) + (TOC-ITEM . org-odt-format-toc-item) + (TAGS . org-odt-format-tags) + (SPACES . org-odt-format-spaces) + (TABS . org-odt-format-tabs) + (LINE-BREAK . org-odt-format-line-break) + (FONTIFY . org-odt-format-fontify) + (TODO . org-lparse-format-todo) + (LINK . org-odt-format-link) + (INLINE-IMAGE . org-odt-format-inline-image) + (ORG-LINK . org-odt-format-org-link) + (HEADING . org-odt-format-heading) + (ANCHOR . org-odt-format-anchor) + (TABLE . org-lparse-format-table) + (TABLE-ROW . org-odt-format-table-row) + (TABLE-CELL . org-odt-format-table-cell) + (FOOTNOTES-SECTION . ignore) + (FOOTNOTE-REFERENCE . org-odt-format-footnote-reference) + (HORIZONTAL-LINE . org-odt-format-horizontal-line) + (COMMENT . org-odt-format-comment) + (LINE . org-odt-format-line) + (ORG-ENTITY . org-odt-format-org-entity)) + "") + +;;;_. callbacks +;;;_. control callbacks +;;;_ , document body +(defun org-odt-begin-office-body () + (insert " + <office:body> + <office:text> + <text:sequence-decls> + <text:sequence-decl text:display-outline-level=\"0\" text:name=\"Illustration\"/> + <text:sequence-decl text:display-outline-level=\"0\" text:name=\"Table\"/> + <text:sequence-decl text:display-outline-level=\"0\" text:name=\"Text\"/> + <text:sequence-decl text:display-outline-level=\"0\" text:name=\"Drawing\"/> + </text:sequence-decls>")) + +;; Following variable is let bound when `org-do-lparse' is in +;; progress. See org-html.el. +(defvar org-lparse-toc) +(defun org-odt-begin-document-body (opt-plist) + (org-odt-begin-office-body) + (let ((title (plist-get opt-plist :title))) + (when title + (insert + (org-odt-format-stylized-paragraph 'title title)))) + + ;; insert toc + (when org-lparse-toc + (insert "\n" org-lparse-toc "\n"))) + +(defvar org-lparse-body-only) ; let bound during org-do-lparse +(defvar org-lparse-to-buffer) ; let bound during org-do-lparse +(defun org-odt-end-document-body (opt-plist) + (unless org-lparse-body-only + (org-lparse-insert-tag "</office:text>") + (org-lparse-insert-tag "</office:body>"))) + +(defconst org-odt-document-content-header + "<?xml version=\"1.0\" encoding=\"UTF-8\"?> +<office:document-content + xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" + xmlns:style=\"urn:oasis:names:tc:opendocument:xmlns:style:1.0\" + xmlns:text=\"urn:oasis:names:tc:opendocument:xmlns:text:1.0\" + xmlns:table=\"urn:oasis:names:tc:opendocument:xmlns:table:1.0\" + xmlns:draw=\"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\" + xmlns:fo=\"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\" + xmlns:xlink=\"http://www.w3.org/1999/xlink\" + xmlns:dc=\"http://purl.org/dc/elements/1.1/\" + xmlns:meta=\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\" + xmlns:number=\"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\" + xmlns:svg=\"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\" + xmlns:chart=\"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\" + xmlns:dr3d=\"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\" + xmlns:math=\"http://www.w3.org/1998/Math/MathML\" + xmlns:form=\"urn:oasis:names:tc:opendocument:xmlns:form:1.0\" + xmlns:script=\"urn:oasis:names:tc:opendocument:xmlns:script:1.0\" + xmlns:ooo=\"http://openoffice.org/2004/office\" + xmlns:ooow=\"http://openoffice.org/2004/writer\" + xmlns:oooc=\"http://openoffice.org/2004/calc\" + xmlns:dom=\"http://www.w3.org/2001/xml-events\" + xmlns:xforms=\"http://www.w3.org/2002/xforms\" + xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" + xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" + xmlns:rpt=\"http://openoffice.org/2005/report\" + xmlns:of=\"urn:oasis:names:tc:opendocument:xmlns:of:1.2\" + xmlns:xodt=\"http://www.w3.org/1999/xodt\" + xmlns:field=\"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\" office:version=\"1.2\"> +") + +(defun org-odt-begin-document-content (opt-plist) + ;; document header + (insert org-odt-document-content-header) + + ;; automatic styles + (insert-file-contents + (or org-export-odt-automatic-styles-file + (expand-file-name "styles/OrgOdtAutomaticStyles.xml" + org-odt-data-dir))) + (goto-char (point-max))) + +(defun org-odt-end-document-content () + (org-lparse-insert-tag "</office:document-content>")) + +(defun org-odt-begin-outline (level1 snumber title tags + target extra-targets class) + (org-lparse-insert + 'HEADING (org-lparse-format + 'HEADLINE title extra-targets tags snumber level1) + level1 target)) + +(defun org-odt-end-outline () + (ignore)) + +(defun org-odt-begin-outline-text (level1 snumber class) + (ignore)) + +(defun org-odt-end-outline-text () + (ignore)) + +(defun org-odt-begin-paragraph (&optional style) + (org-lparse-insert-tag + "<text:p%s>" (org-odt-get-extra-attrs-for-paragraph-style style))) + +(defun org-odt-end-paragraph () + (org-lparse-insert-tag "</text:p>")) + +(defun org-odt-get-extra-attrs-for-paragraph-style (style) + (let (style-name) + (setq style-name + (cond + ((stringp style) style) + ((symbolp style) (org-odt-get-style-name-for-entity + 'paragraph style)))) + (unless style-name + (error "Don't know how to handle paragraph style %s" style)) + (format " text:style-name=\"%s\"" style-name))) + +(defun org-odt-format-stylized-paragraph (style text) + (org-odt-format-tags + '("<text:p%s>" . "</text:p>") text + (org-odt-get-extra-attrs-for-paragraph-style style))) + +(defun org-odt-begin-environment (style) + (case style + ((blockquote verse center quote) + (org-lparse-begin-paragraph style) + (list)) + ((fixedwidth native) + (org-lparse-end-paragraph) + (list)) + (t (error "Unknown environment %s" style)))) + +(defun org-odt-end-environment (style) + (case style + ((blockquote verse center quote) + (org-lparse-end-paragraph) + (list)) + ((fixedwidth native) + (org-lparse-begin-paragraph) + (list)) + (t (error "Unknown environment %s" style)))) + +(defun org-odt-begin-list (ltype &optional arg1) + (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype) + ltype)) + (let* ((style-name (org-odt-get-style-name-for-entity 'list ltype)) + (extra (if style-name + (format " text:style-name=\"%s\"" style-name) ""))) + + ;; FIXME: Handle arg1 incase of ordered lists. + (case ltype + ((ordered unordered description) + (org-lparse-end-paragraph) + (org-lparse-insert-tag "<text:list%s>" extra)) + (t (error "Unknown list type: %s" ltype))))) + +(defun org-odt-end-list (ltype) + (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype) + ltype)) + (if ltype + (org-lparse-insert-tag "</text:list>") + (error "Unknown list type: %s" ltype))) + +(defun org-odt-begin-list-item (ltype &optional arg headline) + (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype) + ltype)) + (case ltype + (ordered + (assert (not headline) t) + (let* ((counter arg) (extra "")) + (org-lparse-insert-tag "<text:list-item>") + (org-lparse-begin-paragraph))) + (unordered + (let* ((id arg) (extra "")) + (org-lparse-insert-tag "<text:list-item>") + (org-lparse-begin-paragraph) + (insert (if headline (org-odt-format-target headline id) + (org-odt-format-bookmark "" id))))) + (description + (assert (not headline) t) + (let ((term (or arg "(no term)"))) + (insert + (org-odt-format-tags + '("<text:list-item>" . "</text:list-item>") + (org-odt-format-stylized-paragraph 'definition-term term))) + (org-lparse-begin 'LIST-ITEM 'unordered) + (org-lparse-begin 'LIST 'description) + (org-lparse-begin 'LIST-ITEM 'unordered))) + (t (error "Unknown list type")))) + +(defun org-odt-end-list-item (ltype) + (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype) + ltype)) + (case ltype + ((ordered unordered) + (org-lparse-insert-tag "</text:list-item>")) + (description + (org-lparse-end-list-item) + (org-lparse-end 'LIST 'description) + (org-lparse-end-list-item)) + (t (error "Unknown list type")))) + +;; Following variables are let bound when table emission is in +;; progress. See org-lparse.el. +(defvar org-lparse-table-begin-marker) +(defvar org-lparse-table-ncols) +(defvar org-lparse-table-rowgrp-open) +(defvar org-lparse-table-rownum) +(defvar org-lparse-table-cur-rowgrp-is-hdr) +(defvar org-lparse-table-is-styled) +(defvar org-lparse-table-rowgrp-info) +(defvar org-lparse-table-colalign-vector) +(defun org-odt-begin-table (caption label attributes) + (when label + (insert + (org-odt-format-stylized-paragraph + 'table (org-odt-format-entity-caption label caption "Table")))) + + (org-lparse-insert-tag + "<table:table table:name=\"%s\" table:style-name=\"%s\">" + (or label "") "OrgTable") + (setq org-lparse-table-begin-marker (point))) + +(defun org-odt-end-table () + (goto-char org-lparse-table-begin-marker) + (loop for level from 0 below org-lparse-table-ncols + do (insert (org-odt-format-tags "<table:table-column/>" ""))) + + ;; fill style attributes for table cells + (when org-lparse-table-is-styled + (while (re-search-forward "@@\\(table-cell:p\\|table-cell:style-name\\)@@\\([0-9]+\\)@@\\([0-9]+\\)@@" nil t) + (let ((spec (match-string 1)) + (r (string-to-number (match-string 2))) + (c (string-to-number (match-string 3)))) + (cond + ((equal spec "table-cell:p") + (let ((style-name (org-odt-get-paragraph-style-for-table-cell r c))) + (replace-match style-name t t))) + ((equal spec "table-cell:style-name") + (let ((style-name (org-odt-get-style-name-for-table-cell r c))) + (replace-match style-name t t))))))) + + (goto-char (point-max)) + (org-lparse-insert-tag "</table:table>")) + +(defun org-odt-begin-table-rowgroup (&optional is-header-row) + (when org-lparse-table-rowgrp-open + (org-lparse-end 'TABLE-ROWGROUP)) + (org-lparse-insert-tag (if is-header-row + "<table:table-header-rows>" + "<table:table-rows>")) + (setq org-lparse-table-rowgrp-open t) + (setq org-lparse-table-cur-rowgrp-is-hdr is-header-row)) + +(defun org-odt-end-table-rowgroup () + (when org-lparse-table-rowgrp-open + (setq org-lparse-table-rowgrp-open nil) + (org-lparse-insert-tag + (if org-lparse-table-cur-rowgrp-is-hdr + "</table:table-header-rows>" "</table:table-rows>")))) + +(defun org-odt-format-table-row (row) + (org-odt-format-tags + '("<table:table-row>" . "</table:table-row>") row)) + +(defun org-odt-get-style-name-for-table-cell (r c) + (concat + "OrgTblCell" + (cond + ((= r 0) "T") + ((eq (cdr (assoc r org-lparse-table-rowgrp-info)) :start) "T") + (t "")) + (when (= r org-lparse-table-rownum) "B") + (cond + ((= c 0) "") + ((or (memq (nth c org-table-colgroup-info) '(:start :startend)) + (memq (nth (1- c) org-table-colgroup-info) '(:end :startend))) "L") + (t "")))) + +(defun org-odt-get-paragraph-style-for-table-cell (r c) + (capitalize (aref org-lparse-table-colalign-vector c))) + +(defun org-odt-format-table-cell (data r c) + (if (not org-lparse-table-is-styled) + (org-odt-format-tags + '("<table:table-cell>" . "</table:table-cell>") + (org-odt-format-stylized-paragraph + (cond + (org-lparse-table-cur-rowgrp-is-hdr "OrgTableHeading") + ((and (= c 0) (org-lparse-get 'TABLE-FIRST-COLUMN-AS-LABELS)) + "OrgTableHeading") + (t "OrgTableContents")) + data)) + (let* ((style-name-cookie + (format "@@table-cell:style-name@@%03d@@%03d@@" r c)) + (paragraph-style-cookie + (concat + (cond + (org-lparse-table-cur-rowgrp-is-hdr "OrgTableHeading") + ((and (= c 0) (org-lparse-get 'TABLE-FIRST-COLUMN-AS-LABELS)) + "OrgTableHeading") + (t "OrgTableContents")) + (format "@@table-cell:p@@%03d@@%03d@@" r c)))) + (org-odt-format-tags + '("<table:table-cell table:style-name=\"%s\">" . + "</table:table-cell>") + (org-odt-format-stylized-paragraph paragraph-style-cookie data) + style-name-cookie)))) + +(defun org-odt-begin-footnote-definition (n) + (org-lparse-begin-paragraph 'footnote)) + +(defun org-odt-end-footnote-definition (n) + (org-lparse-end-paragraph)) + +(defun org-odt-begin-toc (lang-specific-heading) + (insert + (format " + <text:table-of-content text:style-name=\"Sect2\" text:protected=\"true\" text:name=\"Table of Contents1\"> + <text:table-of-content-source text:outline-level=\"10\"> + <text:index-title-template text:style-name=\"Contents_20_Heading\">%s</text:index-title-template> +" lang-specific-heading)) + + (loop for level from 1 upto 10 + do (insert (format + " + <text:table-of-content-entry-template text:outline-level=\"%d\" text:style-name=\"Contents_20_%d\"> + <text:index-entry-link-start text:style-name=\"Internet_20_link\"/> + <text:index-entry-chapter/> + <text:index-entry-text/> + <text:index-entry-link-end/> + </text:table-of-content-entry-template> +" level level))) + + (insert " + </text:table-of-content-source> + + <text:index-body> + <text:index-title text:style-name=\"Sect1\" text:name=\"Table of Contents1_Head\"> + <text:p text:style-name=\"Contents_20_Heading\">Table of Contents</text:p> + </text:index-title> +")) + +(defun org-odt-end-toc () + (insert " + </text:index-body> + </text:table-of-content> +")) + +(defun org-odt-format-toc-entry (snumber todo headline tags href) + (setq headline (concat + (and org-export-with-section-numbers + (concat snumber ". ")) + headline + (and tags + (concat + (org-lparse-format 'SPACES 3) + (org-lparse-format 'FONTIFY tags "tag"))))) + (when todo + (setq headline (org-lparse-format 'FONTIFY headline "todo"))) + + (let ((org-odt-suppress-xref t)) + (org-odt-format-link headline (concat "#" href)))) + +(defun org-odt-format-toc-item (toc-entry level org-last-level) + (let ((style (format "Contents_20_%d" + (+ level (or (org-lparse-get 'TOPLEVEL-HLEVEL) 1) -1)))) + (insert "\n" (org-odt-format-stylized-paragraph style toc-entry) "\n"))) + +;; Following variable is let bound during 'ORG-LINK callback. See +;; org-html.el +(defvar org-lparse-link-description-is-image nil) +(defun org-odt-format-link (desc href &optional attr) + (cond + ((and (= (string-to-char href) ?#) (not org-odt-suppress-xref)) + (setq href (concat org-export-odt-bookmark-prefix (substring href 1))) + (org-odt-format-tags + '("<text:bookmark-ref text:reference-format=\"text\" text:ref-name=\"%s\">" . + "</text:bookmark-ref>") + desc href)) + (org-lparse-link-description-is-image + (org-odt-format-tags + '("<draw:a xlink:type=\"simple\" xlink:href=\"%s\" %s>" . "</draw:a>") + desc href (or attr ""))) + (t + (org-odt-format-tags + '("<text:a xlink:type=\"simple\" xlink:href=\"%s\" %s>" . "</text:a>") + desc href (or attr ""))))) + +(defun org-odt-format-spaces (n) + (org-odt-format-tags "<text:s text:c=\"%d\"/>" "" n)) + +(defun org-odt-format-tabs (&optional n) + (let ((tab "<text:tab/>") + (n (or n 1))) + (insert tab))) + +(defun org-odt-format-line-break () + (org-odt-format-tags "<text:line-break/>" "")) + +(defun org-odt-format-horizontal-line () + (org-odt-format-stylized-paragraph 'horizontal-line "")) + +(defun org-odt-format-line (line) + (case org-lparse-dyn-current-environment + (fixedwidth (concat (org-odt-format-source-code-or-example-line + (org-xml-encode-plain-text line)) "\n")) + (t (concat line "\n")))) + +(defun org-odt-format-comment (fmt &rest args) + (let ((comment (apply 'format fmt args))) + (format "\n<!-- %s -->\n" comment))) + +(defun org-odt-format-org-entity (wd) + ;; FIXME: Seems to work. But is this correct? + (let ((s (org-entity-get-representation wd 'utf8))) + (and s (format "&#x%x;" (string-to-char s))))) + +(defun org-odt-fill-tabs-and-spaces (line) + (replace-regexp-in-string + "\\([\t]\\|\\([ ]+\\)\\)" (lambda (s) + (cond + ((string= s "\t") (org-odt-format-tabs)) + ((> (length s) 1) + (org-odt-format-spaces (length s))) + (t " "))) line)) + +(defun org-odt-format-source-code-or-example-line (line) + (org-odt-format-stylized-paragraph 'src (org-odt-fill-tabs-and-spaces line))) + +(defun org-odt-format-example (lines) + (mapconcat + (lambda (line) + (org-odt-format-source-code-or-example-line line)) + (org-split-string lines "[\r\n]") "\n")) + +(defun org-odt-format-source-code-or-example (lines lang caption textareap + cols rows num cont + rpllbl fmt) + (org-odt-format-example (org-export-number-lines + (org-xml-encode-plain-text-lines lines) + 0 0 num cont rpllbl fmt))) + +(defun org-xml-encode-plain-text-lines (rtn) + (mapconcat 'org-xml-encode-plain-text (org-split-string rtn "[\r\n]") "\n")) + +(defun org-odt-remap-stylenames (style-name) + (or + (cdr (assoc style-name '(("timestamp-wrapper" . "OrgTimestampWrapper") + ("timestamp" . "OrgTimestamp") + ("timestamp-kwd" . "OrgTimestampKeyword") + ("tag" . "OrgTag") + ("todo" . "OrgTodo") + ("done" . "OrgDone") + ("target" . "OrgTarget")))) + style-name)) + +(defun org-odt-format-fontify (text style &optional id) + (let* ((style-name + (cond + ((stringp style) + (org-odt-remap-stylenames style)) + ((symbolp style) + (org-odt-get-style-name-for-entity 'character style)) + ((listp style) + (assert (< 1 (length style))) + (let ((parent-style (pop style))) + (mapconcat (lambda (s) + ;; (assert (stringp s) t) + (org-odt-remap-stylenames s)) style "") + (org-odt-remap-stylenames parent-style))) + (t (error "Don't how to handle style %s" style))))) + (org-odt-format-tags + '("<text:span text:style-name=\"%s\">" . "</text:span>") + text style-name))) + +(defun org-odt-relocate-relative-path (path dir) + (if (file-name-absolute-p path) path + (file-relative-name (expand-file-name path dir) + (expand-file-name "eyecandy" dir)))) + +(defun org-odt-format-inline-image (thefile) + (let* ((thelink (if (file-name-absolute-p thefile) thefile + (org-xml-format-href + (org-odt-relocate-relative-path + thefile org-current-export-file)))) + (href + (org-odt-format-tags + "<draw:image xlink:href=\"%s\" xlink:type=\"simple\" xlink:show=\"embed\" xlink:actuate=\"onLoad\"/>" "" + (if org-export-odt-embed-images + (org-odt-copy-image-file thefile) thelink)))) + (org-export-odt-format-image thefile href))) + +(defun org-odt-format-org-link (opt-plist type-1 path fragment desc attr + descp) + "Make an HTML link. +OPT-PLIST is an options list. +TYPE is the device-type of the link (THIS://foo.html) +PATH is the path of the link (http://THIS#locationx) +FRAGMENT is the fragment part of the link, if any (foo.html#THIS) +DESC is the link description, if any. +ATTR is a string of other attributes of the a element. +MAY-INLINE-P allows inlining it as an image." + + (declare (special org-lparse-par-open)) + (save-match-data + (let* ((may-inline-p + (and (member type-1 '("http" "https" "file")) + (org-lparse-should-inline-p path descp) + (not fragment))) + (type (if (equal type-1 "id") "file" type-1)) + (filename path) + (thefile path)) + + (cond + ;; check for inlined images + ((and (member type '("file")) + (not fragment) + (org-file-image-p + filename org-odt-export-inline-image-extensions) + (or (eq t org-odt-export-inline-images) + (and org-odt-export-inline-images (not descp)))) + + ;; (when (and (string= type "file") (file-name-absolute-p path)) + ;; (setq thefile (concat "file://" (expand-file-name path)))) + ;; (setq thefile (org-xml-format-href thefile)) + ;; (org-export-html-format-image thefile) + (org-odt-format-inline-image thefile)) + (t + (when (string= type "file") + (setq thefile + (cond + ((file-name-absolute-p path) + (concat "file://" (expand-file-name path))) + (t (org-odt-relocate-relative-path + thefile org-current-export-file))))) + + (when (and (member type '("" "http" "https" "file" "coderef")) + fragment) + (setq thefile (concat thefile "#" fragment))) + + (setq thefile (org-xml-format-href thefile)) + + (when (not (member type '("" "file" "coderef"))) + (setq thefile (concat type ":" thefile))) + + (let ((org-odt-suppress-xref (string= type "coderef"))) + (org-odt-format-link + (org-xml-format-desc desc) thefile attr))))))) + +(defun org-odt-format-heading (text level &optional id) + (let* ((text (if id (org-odt-format-target text id) text))) + (org-odt-format-tags + '("<text:h text:style-name=\"Heading_20_%s\" text:outline-level=\"%s\">" . + "</text:h>") text level level))) + +(defun org-odt-format-headline (title extra-targets tags + &optional snumber level) + (concat + (org-lparse-format 'EXTRA-TARGETS extra-targets) + + ;; No need to generate section numbers. They are auto-generated by + ;; the application + + ;; (concat (org-lparse-format 'SECTION-NUMBER snumber level) " ") + title + (and tags (concat (org-lparse-format 'SPACES 3) + (org-lparse-format 'ORG-TAGS tags))))) + +(defun org-odt-format-anchor (text name &optional class) + (org-odt-format-target text name)) + +(defun org-odt-format-bookmark (text id) + (if id + (org-odt-format-tags "<text:bookmark text:name=\"%s\"/>" text id) + text)) + +(defun org-odt-format-target (text id) + (let ((name (concat org-export-odt-bookmark-prefix id))) + (concat + (and id (org-odt-format-tags + "<text:bookmark-start text:name=\"%s\"/>" "" name)) + (org-odt-format-bookmark text id) + (and id (org-odt-format-tags + "<text:bookmark-end text:name=\"%s\"/>" "" name))))) + +(defun org-odt-format-footnote (n def) + (let ((id (concat "fn" n)) + (note-class "footnote") + (par-style "Footnote")) + (org-odt-format-tags + '("<text:note text:id=\"%s\" text:note-class=\"%s\">" . + "</text:note>") + (concat + (org-odt-format-tags + '("<text:note-citation>" . "</text:note-citation>") + n) + (org-odt-format-tags + '("<text:note-body>" . "</text:note-body>") + def)) + id note-class))) + +(defun org-odt-format-footnote-reference (n def refcnt) + (if (= refcnt 1) + (org-odt-format-footnote n def) + (org-odt-format-footnote-ref n))) + +(defun org-odt-format-footnote-ref (n) + (let ((note-class "footnote") + (ref-format "text") + (ref-name (concat "fn" n))) + (org-odt-format-tags + '("<text:span text:style-name=\"%s\">" . "</text:span>") + (org-odt-format-tags + '("<text:note-ref text:note-class=\"%s\" text:reference-format=\"%s\" text:ref-name=\"%s\">" . "</text:note-ref>") + n note-class ref-format ref-name) + "OrgSuperscript"))) + +(defun org-odt-get-image-name (file-name) + (require 'sha1) + (file-relative-name + (expand-file-name + (concat (sha1 file-name) "." (file-name-extension file-name)) "Pictures"))) + +(defun org-export-odt-format-image (src href + ;; par-open + ) + "Create image tag with source and attributes." + (save-match-data + + (let (embed-as caption attr label attr-plist size width height) + + (cond + ((string-match "^ltxpng/" src) + ;; FIXME: Anyway the latex src can be embedded as an + ;; annotation + + ;; (org-find-text-property-in-string 'org-latex-src src) + (setq caption nil attr nil label nil embed-as 'character)) + + (t + (setq caption (org-find-text-property-in-string 'org-caption src) + caption (and caption (org-xml-format-desc caption)) + attr (org-find-text-property-in-string 'org-attributes src) + label (org-find-text-property-in-string 'org-label src) + embed-as 'paragraph))) + + (setq attr-plist (when attr (read attr))) + (setq size (org-odt-image-size-from-file + src (plist-get attr-plist :width) + (plist-get attr-plist :height) + (plist-get attr-plist :scale) nil embed-as)) + + (org-export-odt-do-format-image embed-as caption attr label + size href)))) + +(defun org-export-odt-do-format-image (embed-as caption attr label + size href) + "Create image tag with source and attributes." + (save-match-data + (let ((width (car size)) (height (cdr size)) + (draw-frame-pair + '("<draw:frame draw:style-name=\"%s\" + text:anchor-type=\"%s\" + draw:z-index=\"%d\" %s>" . "</draw:frame>"))) + (cond + ((and (not caption) (not label)) + (let (style-name anchor-type) + (cond + ((eq embed-as 'paragraph) + (setq style-name "OrgGraphicsParagraph" anchor-type "paragraph")) + ((eq embed-as 'character) + (setq style-name "OrgGraphicsBaseline" anchor-type "as-char"))) + (org-odt-format-tags + draw-frame-pair href style-name anchor-type 0 + (org-odt-image-attrs-from-size width height)))) + + (t + (concat + ;; (when par-open (org-odt-close-par)) + (org-odt-format-tags + draw-frame-pair + (org-odt-format-tags + '("<draw:text-box fo:min-height=\"%dcm\">" . "</draw:text-box>") + (org-odt-format-stylized-paragraph + 'illustration + (concat + (let ((extra " style:rel-width=\"100%\" style:rel-height=\"scale\"")) + (org-odt-format-tags + draw-frame-pair href "OrgGraphicsParagraphContent" "paragraph" 2 + (concat (org-odt-image-attrs-from-size width height) extra))) + (org-odt-format-entity-caption label caption))) + height) + "OrgFrame" "paragraph" 1 + (org-odt-image-attrs-from-size width)) + + ;; (when par-open (org-odt-open-par)) + )))))) + +;; xml files generated on-the-fly +(defconst org-export-odt-save-list + '("META-INF/manifest.xml" "content.xml" "meta.xml" "styles.xml")) + +;; xml files that are copied +(defconst org-export-odt-nosave-list '()) + +;; xml files that contribute to the final odt file +(defvar org-export-odt-file-list nil) + +(defconst org-export-odt-manifest-lines + '(("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<manifest:manifest xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\" manifest:version=\"1.2\">" + "<manifest:file-entry manifest:media-type=\"application/vnd.oasis.opendocument.text\" manifest:version=\"1.2\" manifest:full-path=\"/\"/>" + "<manifest:file-entry manifest:media-type=\"text/xml\" manifest:full-path=\"content.xml\"/>" + "<manifest:file-entry manifest:media-type=\"text/xml\" manifest:full-path=\"styles.xml\"/>" + "<manifest:file-entry manifest:media-type=\"text/xml\" manifest:full-path=\"meta.xml\"/>" + "<manifest:file-entry manifest:media-type=\"\" manifest:full-path=\"Pictures/\"/>") . ("</manifest:manifest>"))) + +(defconst org-export-odt-meta-lines + '(("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<office:document-meta" + " xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\"" + " xmlns:xlink=\"http://www.w3.org/1999/xlink\"" + " xmlns:dc=\"http://purl.org/dc/elements/1.1/\"" + " xmlns:meta=\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\"" + " xmlns:ooo=\"http://openoffice.org/2004/office\" " + " office:version=\"1.2\">" + " <office:meta>") . (" </office:meta>" "</office:document-meta>"))) + +(defun org-odt-copy-image-file (path &optional target-file) + "Returns the internal name of the file" + (let* ((image-type (file-name-extension path)) + (media-type (format "image/%s" image-type)) + (src-file (expand-file-name + path (file-name-directory org-current-export-file))) + (target-file (or target-file (org-odt-get-image-name src-file))) + ;; FIXME + (body-only nil)) + + (when (not org-lparse-to-buffer) + (message "Embedding %s as %s ..." + (substring-no-properties path) target-file) + (copy-file src-file target-file 'overwrite) + (org-odt-update-manifest-file media-type target-file) + (push target-file org-export-odt-file-list)) target-file)) + +(defun org-odt-image-attrs-from-size (&optional width height) + (concat + (when width (format "svg:width=\"%0.2fcm\"" width)) + " " + (when height (format "svg:height=\"%0.2fcm\"" height)))) + +(defvar org-export-odt-image-size-probe-method + '(emacs imagemagick force) + "Ordered list of methods by for determining size of an embedded + image.") + +(defvar org-export-odt-default-image-sizes-alist + '(("character" . (5 . 0.4)) + ("paragraph" . (5 . 5))) + "Hardcoded image dimensions one for each of the anchor + methods.") + +(defun org-odt-do-image-size (probe-method file &optional dpi anchor-type) + (setq dpi (or dpi org-export-odt-pixels-per-inch)) + (setq anchor-type (or anchor-type "paragraph")) + (flet ((size-in-cms (size-in-pixels) + (flet ((pixels-to-cms (pixels) + (let* ((cms-per-inch 2.54) + (inches (/ pixels dpi))) + (* cms-per-inch inches)))) + (and size-in-pixels + (cons (pixels-to-cms (car size-in-pixels)) + (pixels-to-cms (cdr size-in-pixels))))))) + (case probe-method + (emacs + (size-in-cms (ignore-errors (image-size (create-image file) 'pixels)))) + (imagemagick + (size-in-cms + (let ((dim (shell-command-to-string + (format "identify -format \"%%w:%%h\" \"%s\"" file)))) + (when (string-match "\\([0-9]+\\):\\([0-9]+\\)" dim) + (cons (string-to-number (match-string 1 dim)) + (string-to-number (match-string 2 dim))))))) + (t + (cdr (assoc-string anchor-type + org-export-odt-default-image-sizes-alist)))))) + +(defun org-odt-image-size-from-file (file &optional user-width + user-height scale dpi embed-as) + (unless (file-name-absolute-p file) + (setq file (expand-file-name + file (file-name-directory org-current-export-file)))) + (let* (size width height) + (unless (and user-height user-width) + (loop for probe-method in org-export-odt-image-size-probe-method + until size + do (setq size (org-odt-do-image-size + probe-method file dpi embed-as))) + (or size (error "Cannot determine Image size. Aborting ...")) + (setq width (car size) height (cdr size))) + (cond + (scale + (setq width (* width scale) height (* height scale))) + ((and user-height user-width) + (setq width user-width height user-height)) + (user-height + (setq width (* user-height (/ width height)) height user-height)) + (user-width + (setq height (* user-width (/ height width)) width user-width)) + (t (ignore))) + (cons width height))) + +(defvar org-odt-default-entity "Illustration") +(defun org-odt-format-entity-caption (label caption &optional default-entity) + (if (not label) (or caption "") + (let* ((label-components (org-odt-parse-label label)) + (entity (car label-components)) + (seqno (cdr label-components)) + (caption (and caption (concat ": " caption)))) + (unless seqno + (setq seqno label + entity (or default-entity org-odt-default-entity))) + (concat + entity " " + (org-odt-format-tags + '("<text:sequence text:ref-name=\"%s\" text:name=\"%s\" text:formula=\"ooow:%s+1\" style:num-format=\"1\">" . "</text:sequence>") + seqno label entity entity) + caption)))) + +(defun org-odt-format-tags (tag text &rest args) + (let ((prefix (when org-lparse-encode-pending "@")) + (suffix (when org-lparse-encode-pending "@"))) + (apply 'org-lparse-format-tags tag text prefix suffix args))) + +(defun org-odt-init-outfile (filename) + (let* ((outdir (make-temp-file org-export-odt-tmpdir-prefix t)) + (mimetype-file (expand-file-name "mimetype" outdir)) + (content-file (expand-file-name "content.xml" outdir)) + (manifest-file (expand-file-name "META-INF/manifest.xml" outdir)) + (meta-file (expand-file-name "meta.xml" outdir)) + (styles-file (expand-file-name "styles.xml" outdir)) + (pictures-dir (expand-file-name "Pictures" outdir)) + (body-only nil)) + + ;; content file + (with-current-buffer (find-file-noselect content-file t) + (erase-buffer)) + + ;; FIXME: How to factor in body-only here + (unless body-only + ;; manifest file + (make-directory (file-name-directory manifest-file)) + (with-current-buffer (find-file-noselect manifest-file t) + (erase-buffer) + (insert (mapconcat 'identity (car org-export-odt-manifest-lines) "\n")) + (insert "\n") + (save-excursion + (insert (mapconcat 'identity (cdr org-export-odt-manifest-lines) "\n")))) + + ;; meta file + (with-current-buffer (find-file-noselect meta-file t) + (erase-buffer) + (insert (mapconcat 'identity (car org-export-odt-meta-lines) "\n")) + (insert "\n") + (save-excursion + (insert (mapconcat 'identity (cdr org-export-odt-meta-lines) "\n")))) + + ;; styles file + ;; (copy-file org-export-odt-styles-file styles-file t) + + ;; Pictures dir + (make-directory pictures-dir) + + ;; initialize list of files that contribute to the odt file + (setq org-export-odt-file-list + (append org-export-odt-save-list org-export-odt-nosave-list))) + content-file)) + +(defconst org-export-odt-mimetype-lines + '("application/vnd.oasis.opendocument.text")) + +(defconst org-odt-manifest-file-entry-tag + "<manifest:file-entry manifest:media-type=\"%s\" manifest:full-path=\"%s\"/>") + +(defun org-odt-save-as-outfile (target opt-plist) + ;; write meta file + (org-odt-update-meta-file opt-plist) + + ;; write styles file + (org-odt-copy-styles-file) + + ;; Update styles.xml - take care of outline numbering + (with-current-buffer + (find-file-noselect (expand-file-name "styles.xml") t) + ;; Don't make automatic backup of styles.xml file. This setting + ;; prevents the backedup styles.xml file from being zipped in to + ;; odt file. This is more of a hackish fix. Better alternative + ;; would be to fix the zip command so that the output odt file + ;; includes only the needed files and excludes any auto-generated + ;; extra files like backups and auto-saves etc etc. Note that + ;; currently the zip command zips up the entire temp directory so + ;; that any auto-generated files created under the hood ends up in + ;; the resulting odt file. + (set (make-local-variable 'backup-inhibited) t) + + ;; Import local setting of `org-export-with-section-numbers' + (org-lparse-bind-local-variables opt-plist) + (org-odt-configure-outline-numbering + (if org-export-with-section-numbers org-export-headline-levels 0))) + + (let ((zipdir default-directory)) + (message "Switching to directory %s" (expand-file-name zipdir)) + + ;; save all xml files + (mapc (lambda (file) + (with-current-buffer + (find-file-noselect (expand-file-name file) t) + ;; prettify output + (indent-region (point-min) (point-max)) + (save-buffer))) + org-export-odt-save-list) + + (let* ((target-name (file-name-nondirectory target)) + (target-dir (file-name-directory target)) + (cmd (format "zip -rmTq %s %s" target-name "."))) + (when (file-exists-p target) + ;; FIXME: If the file is locked this throws a cryptic error + (delete-file target)) + + (let ((coding-system-for-write 'no-conversion) exitcode) + (message "Creating odt file using \"%s\"" cmd) + (setq exitcode + (apply 'call-process + "zip" + nil + nil + nil + (append (list "-rmTq") (list target-name ".")))) + + (or (zerop exitcode) + (error "Unable to create odt file (%S)" exitcode))) + + ;; move the file from outdir to target-dir + (rename-file target-name target-dir) + + ;; kill all xml buffers + (mapc (lambda (file) + (kill-buffer + (find-file-noselect (expand-file-name file zipdir) t))) + org-export-odt-save-list) + + (delete-directory zipdir))) + + (message "Created %s" target) + (set-buffer (find-file-noselect target t))) + +(defun org-odt-update-meta-file (opt-plist) + (with-current-buffer + (find-file-noselect (expand-file-name "meta.xml") t) + (let ((date (or (plist-get opt-plist :effective-date) "")) + (author (or (plist-get opt-plist :author) "")) + (email (plist-get opt-plist :email)) + (keywords (plist-get opt-plist :keywords)) + (description (plist-get opt-plist :description)) + (title (plist-get opt-plist :title))) + + (insert + "\n" + (org-odt-format-tags '("<dc:creator>" . "</dc:creator>") author) + (org-odt-format-tags + '("\n<meta:initial-creator>" . "</meta:initial-creator>") author) + (org-odt-format-tags '("\n<dc:date>" . "</dc:date>") date) + (org-odt-format-tags + '("\n<meta:creation-date>" . "</meta:creation-date>") date) + (org-odt-format-tags '("\n<meta:generator>" . "</meta:generator>") + (when org-export-creator-info + (format "Org-%s/Emacs-%s" + org-version emacs-version))) + (org-odt-format-tags '("\n<meta:keyword>" . "</meta:keyword>") keywords) + (org-odt-format-tags '("\n<dc:subject>" . "</dc:subject>") description) + (org-odt-format-tags '("\n<dc:title>" . "</dc:title>") title) + "\n")))) + +(defun org-odt-update-manifest-file (media-type full-path) + (with-current-buffer + (find-file-noselect (expand-file-name "META-INF/manifest.xml") t) + (insert (format org-odt-manifest-file-entry-tag media-type full-path)))) + +(defun org-odt-finalize-outfile () + (message "org-newodt: Finalizing outfile") + (org-odt-delete-empty-paragraphs)) + +(defun org-odt-delete-empty-paragraphs () + (goto-char (point-min)) + (let ((open "<text:p[^>]*>") + (close "</text:p>")) + (while (re-search-forward (format "%s[ \r\n\t]*%s" open close) nil t) + (replace-match "")))) + +(defun org-odt-get (what &optional opt-plist) + (case what + (BACKEND 'odt) + (EXPORT-DIR (org-export-directory :html opt-plist)) + (FILE-NAME-EXTENSION "odt") + (EXPORT-BUFFER-NAME "*Org ODT Export*") + (ENTITY-CONTROL org-odt-entity-control-callbacks-alist) + (ENTITY-FORMAT org-odt-entity-format-callbacks-alist) + (INIT-METHOD 'org-odt-init-outfile) + (FINAL-METHOD 'org-odt-finalize-outfile) + (SAVE-METHOD 'org-odt-save-as-outfile) + (OTHER-BACKENDS + '("bib" "doc" "doc6" "doc95" "html" "xhtml" "latex" "odt" "ott" "pdf" "rtf" + "sdw" "sdw3" "sdw4" "stw " "sxw" "mediawiki" "text" "txt" "uot" "vor" + "vor3" "vor4" "docbook" "ooxml" "ppt" "odp")) + (CONVERT-METHOD org-export-convert-process) + (TOPLEVEL-HLEVEL 1) + (SPECIAL-STRING-REGEXPS org-export-odt-special-string-regexps) + (INLINE-IMAGES 'maybe) + (INLINE-IMAGE-EXTENSIONS '("png" "jpeg" "jpg" "gif" "svg")) + (PLAIN-TEXT-MAP '(("&" . "&") ("<" . "<") (">" . ">"))) + (TABLE-FIRST-COLUMN-AS-LABELS nil) + (FOOTNOTE-SEPARATOR (org-lparse-format 'FONTIFY "," 'superscript)) + (t (error "Unknown property: %s" what)))) + +(defun org-odt-parse-label (label) + (save-match-data + (if (not (string-match "\\`[a-zA-Z]+:\\(.+\\)" label)) + (cons label nil) + (cons + (capitalize (substring label 0 (1- (match-beginning 1)))) + (substring label (match-beginning 1)))))) + +(defvar org-lparse-latex-fragment-fallback) ; set by org-do-lparse +(defun org-export-odt-preprocess (parameters) + "Convert LaTeX fragments to images." + (when (and org-current-export-file + (plist-get parameters :LaTeX-fragments)) + (org-format-latex + (concat "ltxpng/" (file-name-sans-extension + (file-name-nondirectory + org-current-export-file))) + org-current-export-dir nil "Creating LaTeX image %s" + nil nil + (cond + ((eq (plist-get parameters :LaTeX-fragments) 'verbatim) 'verbatim) + ;; Investigate MathToWeb for converting TeX equations to MathML + ;; See http://lists.gnu.org/archive/html/emacs-orgmode/2011-03/msg01755.html + ((or (eq (plist-get parameters :LaTeX-fragments) 'mathjax ) + (eq (plist-get parameters :LaTeX-fragments) t )) + (org-lparse-warn + (concat + "Use of MathJax is incompatible with ODT exporter. " + (format "Using %S instead." org-lparse-latex-fragment-fallback))) + org-lparse-latex-fragment-fallback) + ((eq (plist-get parameters :LaTeX-fragments) 'dvipng ) 'dvipng) + (t nil)))) + (goto-char (point-min)) + (let (label label-components category value pretty-label) + (while (re-search-forward "\\\\ref{\\([^{}\n]+\\)}" nil t) + (org-if-unprotected-at (match-beginning 1) + (setq label (match-string 1) + label-components (org-odt-parse-label label) + category (car label-components) + value (cdr label-components) + pretty-label (if value (concat category " " value) label)) + (replace-match + (let ((org-lparse-encode-pending t)) + (org-odt-format-tags + '("<text:sequence-ref text:reference-format=\"category-and-value\" text:ref-name=\"%s\">" + . "</text:sequence-ref>") pretty-label label)) t t))))) + +(declare-function archive-zip-extract "arc-mode.el" (archive name)) +(defun org-odt-zip-extract-one (archive member &optional target) + (require 'arc-mode) + (let* ((target (or target default-directory)) + (archive (expand-file-name archive)) + (archive-zip-extract + (list "unzip" "-qq" "-o" "-d" target)) + exit-code command-output) + (setq command-output + (with-temp-buffer + (setq exit-code (archive-zip-extract archive member)) + (buffer-string))) + (unless (zerop exit-code) + (message command-output) + (error "Extraction failed")))) + +(defun org-odt-zip-extract (archive members &optional target) + (when (atom members) (setq members (list members))) + (mapc (lambda (member) + (org-odt-zip-extract-one archive member target)) + members)) + +(defun org-odt-copy-styles-file (&optional styles-file) + ;; Non-availability of styles.xml is not a critical error. For now + ;; throw an error purely for aesthetic reasons. + (setq styles-file (or styles-file + org-export-odt-styles-file + (expand-file-name "styles/OrgOdtStyles.xml" + org-odt-data-dir) + (error "org-odt: Missing styles file?"))) + (cond + ((listp styles-file) + (let ((archive (nth 0 styles-file)) + (members (nth 1 styles-file))) + (org-odt-zip-extract archive members) + (mapc + (lambda (member) + (when (org-file-image-p member) + (let* ((image-type (file-name-extension member)) + (media-type (format "image/%s" image-type))) + (org-odt-update-manifest-file media-type member)))) + members))) + ((and (stringp styles-file) (file-exists-p styles-file)) + (let ((styles-file-type (file-name-extension styles-file))) + (cond + ((string= styles-file-type "xml") + (copy-file styles-file "styles.xml" t)) + ((member styles-file-type '("odt" "ott")) + (org-odt-zip-extract styles-file "styles.xml"))))) + (t + (error (format "Invalid specification of styles.xml file: %S" + org-export-odt-styles-file))))) + +(defvar org-export-odt-factory-settings + "d4328fb9d1b6cb211d4320ff546829f26700dc5e" + "SHA1 hash of OrgOdtStyles.xml.") + +(defun org-odt-configure-outline-numbering (level) + "Outline numbering is retained only upto LEVEL. +To disable outline numbering pass a LEVEL of 0." + (if (not (string= org-export-odt-factory-settings (sha1 (current-buffer)))) + (org-lparse-warn + "org-odt: Using custom styles file? Consider tweaking styles.xml for better output. To suppress this warning update `org-export-odt-factory-settings'") + (goto-char (point-min)) + (let ((regex + "<text:outline-level-style\\(.*\\)text:level=\"\\(.*\\)\"\\(.*\\)>") + (replacement + "<text:outline-level-style\\1text:level=\"\\2\" style:num-format=\"\">")) + (while (re-search-forward regex nil t) + (when (> (string-to-number (match-string 1)) level) + (replace-match replacement t nil)))) + (save-buffer 0))) + +;;;###autoload +(defun org-odt-unit-test (&optional linger) + "Automatically visit the Unit Test file and export it." + (interactive "P") + (with-current-buffer + (find-file (expand-file-name "tests/test.org" org-odt-data-dir)) + (unless linger + (call-interactively 'org-export-as-odt-and-open)))) + +(provide 'org-odt) + +;;; org-odt.el ends here diff --git a/contrib/lisp/org-xhtml.el b/contrib/lisp/org-xhtml.el new file mode 100644 index 0000000..cedd8e0 --- /dev/null +++ b/contrib/lisp/org-xhtml.el @@ -0,0 +1,1797 @@ +;;; org-html.el --- HTML export for Org-mode (uses org-lparse) + +;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 +;; Free Software Foundation, Inc. + +;; Author: Carsten Dominik <carsten at orgmode dot org> +;; Keywords: outlines, hypermedia, calendar, wp +;; Homepage: http://orgmode.org +;; Version: 0.8 + +;; This file is not (yet) part of GNU Emacs. +;; However, it is distributed under the same license. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Commentary: + +;;; Code: + +(require 'org-exp) +(require 'format-spec) + +(require 'org-lparse) + +(eval-when-compile (require 'cl) (require 'table) (require 'browse-url)) + +(declare-function org-id-find-id-file "org-id" (id)) +(declare-function htmlize-region "ext:htmlize" (beg end)) + +(defgroup org-export-html nil + "Options specific for HTML export of Org-mode files." + :tag "Org Export HTML" + :group 'org-export) + +(defcustom org-export-html-footnotes-section "<div id=\"footnotes\"> +<h2 class=\"footnotes\">%s: </h2> +<div id=\"text-footnotes\"> +%s +</div> +</div>" + "Format for the footnotes section. +Should contain a two instances of %s. The first will be replaced with the +language-specific word for \"Footnotes\", the second one will be replaced +by the footnotes themselves." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-footnote-format "<sup>%s</sup>" + "The format for the footnote reference. +%s will be replaced by the footnote reference itself." + :group 'org-export-html + :type 'string) + + +(defcustom org-export-html-footnote-separator "<sup>, </sup>" + "Text used to separate footnotes." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-coding-system nil + "Coding system for HTML export, defaults to `buffer-file-coding-system'." + :group 'org-export-html + :type 'coding-system) + +(defcustom org-export-html-extension "html" + "The extension for exported HTML files." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-xml-declaration + '(("html" . "<?xml version=\"1.0\" encoding=\"%s\"?>") + ("php" . "<?php echo \"<?xml version=\\\"1.0\\\" encoding=\\\"%s\\\" ?>\"; ?>")) + "The extension for exported HTML files. +%s will be replaced with the charset of the exported file. +This may be a string, or an alist with export extensions +and corresponding declarations." + :group 'org-export-html + :type '(choice + (string :tag "Single declaration") + (repeat :tag "Dependent on extension" + (cons (string :tag "Extension") + (string :tag "Declaration"))))) + +(defcustom org-export-html-style-include-scripts t + "Non-nil means include the JavaScript snippets in exported HTML files. +The actual script is defined in `org-export-html-scripts' and should +not be modified." + :group 'org-export-html + :type 'boolean) + +(defconst org-export-html-scripts +"<script type=\"text/javascript\"> +<!--/*--><![CDATA[/*><!--*/ + function CodeHighlightOn(elem, id) + { + var target = document.getElementById(id); + if(null != target) { + elem.cacheClassElem = elem.className; + elem.cacheClassTarget = target.className; + target.className = \"code-highlighted\"; + elem.className = \"code-highlighted\"; + } + } + function CodeHighlightOff(elem, id) + { + var target = document.getElementById(id); + if(elem.cacheClassElem) + elem.className = elem.cacheClassElem; + if(elem.cacheClassTarget) + target.className = elem.cacheClassTarget; + } +/*]]>*///--> +</script>" +"Basic JavaScript that is needed by HTML files produced by Org-mode.") + +(defconst org-export-html-style-default +"<style type=\"text/css\"> + <!--/*--><![CDATA[/*><!--*/ + html { font-family: Times, serif; font-size: 12pt; } + .title { text-align: center; } + .todo { color: red; } + .done { color: green; } + .tag { background-color: #add8e6; font-weight:normal } + .target { } + .timestamp { color: #bebebe; } + .timestamp-kwd { color: #5f9ea0; } + .right {margin-left:auto; margin-right:0px; text-align:right;} + .left {margin-left:0px; margin-right:auto; text-align:left;} + .center {margin-left:auto; margin-right:auto; text-align:center;} + p.verse { margin-left: 3% } + pre { + border: 1pt solid #AEBDCC; + background-color: #F3F5F7; + padding: 5pt; + font-family: courier, monospace; + font-size: 90%; + overflow:auto; + } + table { border-collapse: collapse; } + td, th { vertical-align: top; } + th.right { text-align:center; } + th.left { text-align:center; } + th.center { text-align:center; } + td.right { text-align:right; } + td.left { text-align:left; } + td.center { text-align:center; } + dt { font-weight: bold; } + div.figure { padding: 0.5em; } + div.figure p { text-align: center; } + textarea { overflow-x: auto; } + .linenr { font-size:smaller } + .code-highlighted {background-color:#ffff00;} + .org-info-js_info-navigation { border-style:none; } + #org-info-js_console-label { font-size:10px; font-weight:bold; + white-space:nowrap; } + .org-info-js_search-highlight {background-color:#ffff00; color:#000000; + font-weight:bold; } + /*]]>*/--> +</style>" + "The default style specification for exported HTML files. +Please use the variables `org-export-html-style' and +`org-export-html-style-extra' to add to this style. If you wish to not +have the default style included, customize the variable +`org-export-html-style-include-default'.") + +(defcustom org-export-html-style-include-default t + "Non-nil means include the default style in exported HTML files. +The actual style is defined in `org-export-html-style-default' and should +not be modified. Use the variables `org-export-html-style' to add +your own style information." + :group 'org-export-html + :type 'boolean) +;;;###autoload +(put 'org-export-html-style-include-default 'safe-local-variable 'booleanp) + +(defcustom org-export-html-style "" + "Org-wide style definitions for exported HTML files. + +This variable needs to contain the full HTML structure to provide a style, +including the surrounding HTML tags. If you set the value of this variable, +you should consider to include definitions for the following classes: + title, todo, done, timestamp, timestamp-kwd, tag, target. + +For example, a valid value would be: + + <style type=\"text/css\"> + <![CDATA[ + p { font-weight: normal; color: gray; } + h1 { color: black; } + .title { text-align: center; } + .todo, .timestamp-kwd { color: red; } + .done { color: green; } + ]]> + </style> + +If you'd like to refer to an external style file, use something like + + <link rel=\"stylesheet\" type=\"text/css\" href=\"mystyles.css\"> + +As the value of this option simply gets inserted into the HTML <head> header, +you can \"misuse\" it to add arbitrary text to the header. +See also the variable `org-export-html-style-extra'." + :group 'org-export-html + :type 'string) +;;;###autoload +(put 'org-export-html-style 'safe-local-variable 'stringp) + +(defcustom org-export-html-style-extra "" + "Additional style information for HTML export. +The value of this variable is inserted into the HTML buffer right after +the value of `org-export-html-style'. Use this variable for per-file +settings of style information, and do not forget to surround the style +settings with <style>...</style> tags." + :group 'org-export-html + :type 'string) +;;;###autoload +(put 'org-export-html-style-extra 'safe-local-variable 'stringp) + +(defcustom org-export-html-mathjax-options + '((path "http://orgmode.org/mathjax/MathJax.js") + (scale "100") + (align "center") + (indent "2em") + (mathml nil)) + "Options for MathJax setup. + +path The path where to find MathJax +scale Scaling for the HTML-CSS backend, usually between 100 and 133 +align How to align display math: left, center, or right +indent If align is not center, how far from the left/right side? +mathml Should a MathML player be used if available? + This is faster and reduces bandwidth use, but currently + sometimes has lower spacing quality. Therefore, the default is + nil. When browsers get better, this switch can be flipped. + +You can also customize this for each buffer, using something like + +#+MATHJAX: scale:\"133\" align:\"right\" mathml:t path:\"/MathJax/\"" + :group 'org-export-html + :type '(list :greedy t + (list :tag "path (the path from where to load MathJax.js)" + (const :format " " path) (string)) + (list :tag "scale (scaling for the displayed math)" + (const :format " " scale) (string)) + (list :tag "align (alignment of displayed equations)" + (const :format " " align) (string)) + (list :tag "indent (indentation with left or right alignment)" + (const :format " " indent) (string)) + (list :tag "mathml (should MathML display be used is possible)" + (const :format " " mathml) (boolean)))) + +(defun org-export-html-mathjax-config (template options in-buffer) + "Insert the user setup into the matchjax template." + (let (name val (yes " ") (no "// ") x) + (mapc + (lambda (e) + (setq name (car e) val (nth 1 e)) + (if (string-match (concat "\\<" (symbol-name name) ":") in-buffer) + (setq val (car (read-from-string + (substring in-buffer (match-end 0)))))) + (if (not (stringp val)) (setq val (format "%s" val))) + (if (string-match (concat "%" (upcase (symbol-name name))) template) + (setq template (replace-match val t t template)))) + options) + (setq val (nth 1 (assq 'mathml options))) + (if (string-match (concat "\\<mathml:") in-buffer) + (setq val (car (read-from-string + (substring in-buffer (match-end 0)))))) + ;; Exchange prefixes depending on mathml setting + (if (not val) (setq x yes yes no no x)) + ;; Replace cookies to turn on or off the config/jax lines + (if (string-match ":MMLYES:" template) + (setq template (replace-match yes t t template))) + (if (string-match ":MMLNO:" template) + (setq template (replace-match no t t template))) + ;; Return the modified template + template)) + +(defcustom org-export-html-mathjax-template + "<script type=\"text/javascript\" src=\"%PATH\"> +<!--/*--><![CDATA[/*><!--*/ + MathJax.Hub.Config({ + // Only one of the two following lines, depending on user settings + // First allows browser-native MathML display, second forces HTML/CSS + :MMLYES: config: [\"MMLorHTML.js\"], jax: [\"input/TeX\"], + :MMLNO: jax: [\"input/TeX\", \"output/HTML-CSS\"], + extensions: [\"tex2jax.js\",\"TeX/AMSmath.js\",\"TeX/AMSsymbols.js\", + \"TeX/noUndefined.js\"], + tex2jax: { + inlineMath: [ [\"\\\\(\",\"\\\\)\"] ], + displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"], [\"\\\\begin{displaymath}\",\"\\\\end{displaymath}\"] ], + skipTags: [\"script\",\"noscript\",\"style\",\"textarea\",\"pre\",\"code\"], + ignoreClass: \"tex2jax_ignore\", + processEscapes: false, + processEnvironments: true, + preview: \"TeX\" + }, + showProcessingMessages: true, + displayAlign: \"%ALIGN\", + displayIndent: \"%INDENT\", + + \"HTML-CSS\": { + scale: %SCALE, + availableFonts: [\"STIX\",\"TeX\"], + preferredFont: \"TeX\", + webFont: \"TeX\", + imageFont: \"TeX\", + showMathMenu: true, + }, + MMLorHTML: { + prefer: { + MSIE: \"MML\", + Firefox: \"MML\", + Opera: \"HTML\", + other: \"HTML\" + } + } + }); +/*]]>*///--> +</script>" + "The MathJax setup for XHTML files." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-tag-class-prefix "" + "Prefix to class names for TODO keywords. +Each tag gets a class given by the tag itself, with this prefix. +The default prefix is empty because it is nice to just use the keyword +as a class name. But if you get into conflicts with other, existing +CSS classes, then this prefix can be very useful." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-todo-kwd-class-prefix "" + "Prefix to class names for TODO keywords. +Each TODO keyword gets a class given by the keyword itself, with this prefix. +The default prefix is empty because it is nice to just use the keyword +as a class name. But if you get into conflicts with other, existing +CSS classes, then this prefix can be very useful." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-preamble t + "Non-nil means insert a preamble in HTML export. + +When `t', insert a string as defined by one of the formatting +strings in `org-export-html-preamble-format'. When set to a +string, this string overrides `org-export-html-preamble-format'. +When set to a function, apply this function and insert the +returned string. The function takes the property list of export +options as its only argument. + +Setting :html-preamble in publishing projects will take +precedence over this variable." + :group 'org-export-html + :type '(choice (const :tag "No preamble" nil) + (const :tag "Default preamble" t) + (string :tag "Custom formatting string") + (function :tag "Function (must return a string)"))) + +(defcustom org-export-html-preamble-format + '(("en" "<h1 class=\"title\">%t</h1>")) + "The format for the HTML preamble. + +%t stands for the title. + +If you need to use a \"%\" character, you need to escape it +like that: \"%%\"." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-postamble 'auto + "Non-nil means insert a postamble in HTML export. + +When `t', insert a string as defined by the formatting string in +`org-export-html-postamble-format'. When set to a string, this +string overrides `org-export-html-postamble-format'. When set to +'auto, discard `org-export-html-postamble-format' and honor +`org-export-author/email/creator-info' variables. When set to a +function, apply this function and insert the returned string. +The function takes the property list of export options as its +only argument. + +Setting :html-postamble in publishing projects will take +precedence over this variable." + :group 'org-export-html + :type '(choice (const :tag "No postamble" nil) + (const :tag "Auto preamble" 'auto) + (const :tag "Default formatting string" t) + (string :tag "Custom formatting string") + (function :tag "Function (must return a string)"))) + +(defcustom org-export-html-postamble-format + '(("en" "<p class=\"author\">Author: %a (%e)</p> +<p class=\"date\">Date: %d</p> +<p class=\"creator\">Generated by %c</p> +<p class=\"xhtml-validation\">%v</p> +")) + "The format for the HTML postamble. + +%a stands for the author. +%e stands for the email(s). +%d stands for the date. +%c will be replaced by information about Org/Emacs. +%v will be replaced by `org-export-html-validation-link'. + +If you need to use a \"%\" character, you need to escape it +like that: \"%%\"." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-home/up-format + "<div id=\"org-div-home-and-up\" style=\"text-align:right;font-size:70%%;white-space:nowrap;\"> + <a accesskey=\"h\" href=\"%s\"> UP </a> + | + <a accesskey=\"H\" href=\"%s\"> HOME </a> +</div>" + "Snippet used to insert the HOME and UP links. +This is a format string, the first %s will receive the UP link, +the second the HOME link. If both `org-export-html-link-up' and +`org-export-html-link-home' are empty, the entire snippet will be +ignored." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-toplevel-hlevel 2 + "The <H> level for level 1 headings in HTML export. +This is also important for the classes that will be wrapped around headlines +and outline structure. If this variable is 1, the top-level headlines will +be <h1>, and the corresponding classes will be outline-1, section-number-1, +and outline-text-1. If this is 2, all of these will get a 2 instead. +The default for this variable is 2, because we use <h1> for formatting the +document title." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-link-org-files-as-html t + "Non-nil means make file links to `file.org' point to `file.html'. +When org-mode is exporting an org-mode file to HTML, links to +non-html files are directly put into a href tag in HTML. +However, links to other Org-mode files (recognized by the +extension `.org.) should become links to the corresponding html +file, assuming that the linked org-mode file will also be +converted to HTML. +When nil, the links still point to the plain `.org' file." + :group 'org-export-html + :type 'boolean) + +(defcustom org-export-html-inline-images 'maybe + "Non-nil means inline images into exported HTML pages. +This is done using an <img> tag. When nil, an anchor with href is used to +link to the image. If this option is `maybe', then images in links with +an empty description will be inlined, while images with a description will +be linked only." + :group 'org-export-html + :type '(choice (const :tag "Never" nil) + (const :tag "Always" t) + (const :tag "When there is no description" maybe))) + +(defcustom org-export-html-inline-image-extensions + '("png" "jpeg" "jpg" "gif" "svg") + "Extensions of image files that can be inlined into HTML." + :group 'org-export-html + :type '(repeat (string :tag "Extension"))) + +(defcustom org-export-html-table-tag + "<table border=\"2\" cellspacing=\"0\" cellpadding=\"6\" rules=\"groups\" frame=\"hsides\">" + "The HTML tag that is used to start a table. +This must be a <table> tag, but you may change the options like +borders and spacing." + :group 'org-export-html + :type 'string) + +(defcustom org-export-table-header-tags '("<th scope=\"%s\"%s>" . "</th>") + "The opening tag for table header fields. +This is customizable so that alignment options can be specified. +The first %s will be filled with the scope of the field, either row or col. +The second %s will be replaced by a style entry to align the field. +See also the variable `org-export-html-table-use-header-tags-for-first-column'. +See also the variable `org-export-html-table-align-individual-fields'." + :group 'org-export-tables + :type '(cons (string :tag "Opening tag") (string :tag "Closing tag"))) + +(defcustom org-export-table-data-tags '("<td%s>" . "</td>") + "The opening tag for table data fields. +This is customizable so that alignment options can be specified. +The first %s will be filled with the scope of the field, either row or col. +The second %s will be replaced by a style entry to align the field. +See also the variable `org-export-html-table-align-individual-fields'." + :group 'org-export-tables + :type '(cons (string :tag "Opening tag") (string :tag "Closing tag"))) + +(defcustom org-export-table-row-tags '("<tr>" . "</tr>") + "The opening tag for table data fields. +This is customizable so that alignment options can be specified. +Instead of strings, these can be Lisp forms that will be evaluated +for each row in order to construct the table row tags. During evaluation, +the variable `head' will be true when this is a header line, nil when this +is a body line. And the variable `nline' will contain the line number, +starting from 1 in the first header line. For example + + (setq org-export-table-row-tags + (cons '(if head + \"<tr>\" + (if (= (mod nline 2) 1) + \"<tr class=\\\"tr-odd\\\">\" + \"<tr class=\\\"tr-even\\\">\")) + \"</tr>\")) + +will give even lines the class \"tr-even\" and odd lines the class \"tr-odd\"." + :group 'org-export-tables + :type '(cons + (choice :tag "Opening tag" + (string :tag "Specify") + (sexp)) + (choice :tag "Closing tag" + (string :tag "Specify") + (sexp)))) + +(defcustom org-export-html-table-align-individual-fields t + "Non-nil means attach style attributes for alignment to each table field. +When nil, alignment will only be specified in the column tags, but this +is ignored by some browsers (like Firefox, Safari). Opera does it right +though." + :group 'org-export-tables + :type 'boolean) + +(defcustom org-export-html-table-use-header-tags-for-first-column nil + "Non-nil means format column one in tables with header tags. +When nil, also column one will use data tags." + :group 'org-export-tables + :type 'boolean) + +(defcustom org-export-html-validation-link + "<a href=\"http://validator.w3.org/check?uri=referer\">Validate XHTML 1.0</a>" + "Link to HTML validation service." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-with-timestamp nil + "If non-nil, write timestamp into the exported HTML text. +If non-nil, write `org-export-html-html-helper-timestamp' into the +exported HTML text. Otherwise, the buffer will just be saved to +a file." + :group 'org-export-html + :type 'boolean) + +(defcustom org-export-html-html-helper-timestamp + "<br/><br/><hr/><p><!-- hhmts start --> <!-- hhmts end --></p>\n" + "The HTML tag used as timestamp delimiter for HTML-helper-mode." + :group 'org-export-html + :type 'string) + +(defcustom org-export-html-protect-char-alist + '(("&" . "&") + ("<" . "<") + (">" . ">")) + "Alist of characters to be converted by `org-html-protect'." + :type '(repeat (cons (string :tag "Character") + (string :tag "HTML equivalent")))) + +(defgroup org-export-htmlize nil + "Options for processing examples with htmlize.el." + :tag "Org Export Htmlize" + :group 'org-export-html) + +(defcustom org-export-htmlize-output-type 'inline-css + "Output type to be used by htmlize when formatting code snippets. +Choices are `css', to export the CSS selectors only, or `inline-css', to +export the CSS attribute values inline in the HTML. We use as default +`inline-css', in order to make the resulting HTML self-containing. + +However, this will fail when using Emacs in batch mode for export, because +then no rich font definitions are in place. It will also not be good if +people with different Emacs setup contribute HTML files to a website, +because the fonts will represent the individual setups. In these cases, +it is much better to let Org/Htmlize assign classes only, and to use +a style file to define the look of these classes. +To get a start for your css file, start Emacs session and make sure that +all the faces you are interested in are defined, for example by loading files +in all modes you want. Then, use the command +\\[org-export-htmlize-generate-css] to extract class definitions." + :group 'org-export-htmlize + :type '(choice (const css) (const inline-css))) + +(defcustom org-export-htmlize-css-font-prefix "org-" + "The prefix for CSS class names for htmlize font specifications." + :group 'org-export-htmlize + :type 'string) + +(defcustom org-export-htmlized-org-css-url nil + "URL pointing to a CSS file defining text colors for htmlized Emacs buffers. +Normally when creating an htmlized version of an Org buffer, htmlize will +create CSS to define the font colors. However, this does not work when +converting in batch mode, and it also can look bad if different people +with different fontification setup work on the same website. +When this variable is non-nil, creating an htmlized version of an Org buffer +using `org-export-as-org' will remove the internal CSS section and replace it +with a link to this URL." + :group 'org-export-htmlize + :type '(choice + (const :tag "Keep internal css" nil) + (string :tag "URL or local href"))) + +;;; Hooks + +(defvar org-export-html-after-blockquotes-hook nil + "Hook run during HTML export, after blockquote, verse, center are done.") + +(defvar org-export-html-final-hook nil + "Hook run at the end of HTML export, in the new buffer.") + +;;; HTML export + +(defun org-export-html-preprocess (parameters) + "Convert LaTeX fragments to images." + (when (and org-current-export-file + (plist-get parameters :LaTeX-fragments)) + (org-format-latex + (concat "ltxpng/" (file-name-sans-extension + (file-name-nondirectory + org-current-export-file))) + org-current-export-dir nil "Creating LaTeX image %s" + nil nil + (cond + ((eq (plist-get parameters :LaTeX-fragments) 'verbatim) 'verbatim) + ((eq (plist-get parameters :LaTeX-fragments) 'mathjax ) 'mathjax) + ((eq (plist-get parameters :LaTeX-fragments) t ) 'mathjax) + ((eq (plist-get parameters :LaTeX-fragments) 'dvipng ) 'dvipng) + (t nil)))) + (goto-char (point-min)) + (let (label l1) + (while (re-search-forward "\\\\ref{\\([^{}\n]+\\)}" nil t) + (org-if-unprotected-at (match-beginning 1) + (setq label (match-string 1)) + (save-match-data + (if (string-match "\\`[a-z]\\{1,10\\}:\\(.+\\)" label) + (setq l1 (substring label (match-beginning 1))) + (setq l1 label))) + (replace-match (format "[[#%s][%s]]" label l1) t t))))) + +(defvar html-table-tag nil) ; dynamically scoped into this. + +(defconst org-html-cvt-link-fn + nil + "Function to convert link URLs to exportable URLs. +Takes two arguments, TYPE and PATH. +Returns exportable url as (TYPE PATH), or nil to signal that it +didn't handle this case. +Intended to be locally bound around a call to `org-export-as-html'." ) + +(defun org-html-cvt-org-as-html (opt-plist type path) + "Convert an org filename to an equivalent html filename. +If TYPE is not file, just return `nil'. +See variable `org-export-html-link-org-files-as-html'" + + (save-match-data + (and + org-export-html-link-org-files-as-html + (string= type "file") + (string-match "\\.org$" path) + (progn + (list + "file" + (concat + (substring path 0 (match-beginning 0)) + "." + (plist-get opt-plist :html-extension))))))) + +;;; org-xhtml-format-org-link +(defun org-xhtml-format-org-link (opt-plist type-1 path fragment desc attr + descp) + "Make an HTML link. +OPT-PLIST is an options list. +TYPE is the device-type of the link (THIS://foo.html) +PATH is the path of the link (http://THIS#locationx) +FRAGMENT is the fragment part of the link, if any (foo.html#THIS) +DESC is the link description, if any. +ATTR is a string of other attributes of the a element. +MAY-INLINE-P allows inlining it as an image." + (declare (special org-lparse-par-open)) + (when (string= type-1 "coderef") + (setq attr + (format "class=\"coderef\" onmouseover=\"CodeHighlightOn(this, '%s');\" onmouseout=\"CodeHighlightOff(this, '%s');\"" + fragment fragment))) + (save-match-data + (let* ((may-inline-p + (and (member type-1 '("http" "https" "file")) + (org-lparse-should-inline-p path descp) + (not fragment))) + (type (if (equal type-1 "id") "file" type-1)) + (filename path) + ;;First pass. Just sanity stuff. + (components-1 + (cond + ((string= type "file") + (list + type + ;;Substitute just if original path was absolute. + ;;(Otherwise path must remain relative) + (if (file-name-absolute-p path) + (concat "file://" (expand-file-name path)) + path))) + ((string= type "") + (list nil path)) + (t (list type path)))) + + ;;Second pass. Components converted so they can refer + ;;to a remote site. + (components-2 + (or + (and org-html-cvt-link-fn + (apply org-html-cvt-link-fn + opt-plist components-1)) + (apply #'org-html-cvt-org-as-html + opt-plist components-1) + components-1)) + (type (first components-2)) + (thefile (second components-2))) + + + ;;Third pass. Build final link except for leading type + ;;spec. + (cond + ((or + (not type) + (string= type "http") + (string= type "https") + (string= type "file") + (string= type "coderef")) + (if fragment + (setq thefile (concat thefile "#" fragment)))) + + (t)) + + ;;Final URL-build, for all types. + (setq thefile + (let + ((str (org-xml-format-href thefile))) + (if (and type (not (or (string= "file" type) + (string= "coderef" type)))) + (concat type ":" str) + str))) + + (if may-inline-p + (org-xhtml-format-image thefile) + (org-lparse-format + 'LINK (org-xml-format-desc desc) thefile attr))))) + +(defun org-xhtml-format-inline-image (desc) + ;; FIXME: alt text missing here? + (org-xhtml-format-tags "<img src=\"%s\" alt=\"\"/>" "" desc)) + +(defvar org-lparse-link-description-is-image) + +(defun org-xhtml-format-image (src) + "Create image tag with source and attributes." + (save-match-data + (if (string-match "^ltxpng/" src) + (format "<img src=\"%s\" alt=\"%s\"/>" + src (org-find-text-property-in-string 'org-latex-src src)) + (let* ((caption (org-find-text-property-in-string 'org-caption src)) + (attr (org-find-text-property-in-string 'org-attributes src)) + (label (org-find-text-property-in-string 'org-label src)) + (caption (and caption (org-xml-encode-org-text caption))) + (img (format "<img src=\"%s\"%s />" + src + (if (string-match "\\<alt=" (or attr "")) + (concat " " attr ) + (concat " " attr " alt=\"" src "\"")))) + (extra (concat + (and label + (format "id=\"%s\" " (org-solidify-link-text label))) + "class=\"figure\""))) + (if caption + (with-temp-buffer + (with-org-lparse-preserve-paragraph-state + (insert + (org-lparse-format + '("<div %s>" . "\n</div>") + (concat + (org-lparse-format '("\n<p>" . "</p>") img) + (org-lparse-format '("\n<p>" . "</p>") caption)) + extra))) + (buffer-string)) + img))))) + +(defun org-export-html-get-bibliography () + "Find bibliography, cut it out and return it." + (catch 'exit + (let (beg end (cnt 1) bib) + (save-excursion + (goto-char (point-min)) + (when (re-search-forward "^[ \t]*<div \\(id\\|class\\)=\"bibliography\"" nil t) + (setq beg (match-beginning 0)) + (while (re-search-forward "</?div\\>" nil t) + (setq cnt (+ cnt (if (string= (match-string 0) "<div") +1 -1))) + (when (= cnt 0) + (and (looking-at ">") (forward-char 1)) + (setq bib (buffer-substring beg (point))) + (delete-region beg (point)) + (throw 'exit bib)))) + nil)))) + +(defun org-xhtml-format-table (lines olines) + (let ((org-xhtml-format-table-no-css nil)) + (org-lparse-format-table lines olines))) + +;; Following variable is defined for native tables i.e., when +;; `org-lparse-table-is-styled' evals to t. +(defvar org-xhtml-format-table-no-css) +(defvar org-table-number-regexp) ; defined in org-table.el + +;; FIXME: This function is called from other modules. Use xhtml suffix +;; to avoid conflict +(defun org-format-table-xhtml (lines olines &optional no-css) + "Find out which HTML converter to use and return the HTML code. +NO-CSS is passed to the exporter." + (let* ((org-lparse-backend 'xhtml) + (org-lparse-entity-control-callbacks-alist + (org-lparse-get 'ENTITY-CONTROL)) + (org-lparse-entity-format-callbacks-alist + (org-lparse-get 'ENTITY-FORMAT)) + (org-xhtml-format-table-no-css no-css)) + (org-lparse-format-table lines olines))) + +;; FIXME: This function is called from other modules. Use xhtml suffix +;; to avoid conflict +(defun org-format-org-table-xhtml (lines &optional splice no-css) + ;; This routine might get called outside of org-export-as-html. For + ;; example, this could happen as part of org-table-export or as part + ;; of org-export-as-docbook. Explicitly bind the parser callback to + ;; the html ones for the duration of the call. + (let* ((org-lparse-backend 'xhtml) + (org-lparse-entity-control-callbacks-alist + (org-lparse-get 'ENTITY-CONTROL)) + (org-lparse-entity-format-callbacks-alist + (org-lparse-get 'ENTITY-FORMAT)) + (org-xhtml-format-table-no-css no-css)) + (org-lparse-format-org-table lines splice))) + +(defun org-export-splice-attributes (tag attributes) + "Read attributes in string ATTRIBUTES, add and replace in HTML tag TAG." + (if (not attributes) + tag + (let (oldatt newatt) + (setq oldatt (org-extract-attributes-from-string tag) + tag (pop oldatt) + newatt (cdr (org-extract-attributes-from-string attributes))) + (while newatt + (setq oldatt (plist-put oldatt (pop newatt) (pop newatt)))) + (if (string-match ">" tag) + (setq tag + (replace-match (concat (org-attributes-to-string oldatt) ">") + t t tag))) + tag))) + +;; FIXME: This function is called from other modules. Use xhtml suffix +;; to avoid conflict +(defun org-format-table-table-xhtml (lines) + (let* ((org-lparse-get 'html) + (org-lparse-entity-control-callbacks-alist + (org-lparse-get 'ENTITY-CONTROL)) + (org-lparse-entity-format-callbacks-alist + (org-lparse-get 'ENTITY-FORMAT))) + (org-lparse-format-table-table lines))) + +(defun org-export-splice-style (style extra) + "Splice EXTRA into STYLE, just before \"</style>\"." + (if (and (stringp extra) + (string-match "\\S-" extra) + (string-match "</style>" style)) + (concat (substring style 0 (match-beginning 0)) + "\n" extra "\n" + (substring style (match-beginning 0))) + style)) + +(defvar htmlize-buffer-places) ; from htmlize.el +(defun org-export-htmlize-region-for-paste (beg end) + "Convert the region to HTML, using htmlize.el. +This is much like `htmlize-region-for-paste', only that it uses +the settings define in the org-... variables." + (let* ((htmlize-output-type org-export-htmlize-output-type) + (htmlize-css-name-prefix org-export-htmlize-css-font-prefix) + (htmlbuf (htmlize-region beg end))) + (unwind-protect + (with-current-buffer htmlbuf + (buffer-substring (plist-get htmlize-buffer-places 'content-start) + (plist-get htmlize-buffer-places 'content-end))) + (kill-buffer htmlbuf)))) + +;;;###autoload +(defun org-export-htmlize-generate-css () + "Create the CSS for all font definitions in the current Emacs session. +Use this to create face definitions in your CSS style file that can then +be used by code snippets transformed by htmlize. +This command just produces a buffer that contains class definitions for all +faces used in the current Emacs session. You can copy and paste the ones you +need into your CSS file. + +If you then set `org-export-htmlize-output-type' to `css', calls to +the function `org-export-htmlize-region-for-paste' will produce code +that uses these same face definitions." + (interactive) + (require 'htmlize) + (and (get-buffer "*html*") (kill-buffer "*html*")) + (with-temp-buffer + (let ((fl (face-list)) + (htmlize-css-name-prefix "org-") + (htmlize-output-type 'css) + f i) + (while (setq f (pop fl) + i (and f (face-attribute f :inherit))) + (when (and (symbolp f) (or (not i) (not (listp i)))) + (insert (org-add-props (copy-sequence "1") nil 'face f)))) + (htmlize-region (point-min) (point-max)))) + (switch-to-buffer "*html*") + (goto-char (point-min)) + (if (re-search-forward "<style" nil t) + (delete-region (point-min) (match-beginning 0))) + (if (re-search-forward "</style>" nil t) + (delete-region (1+ (match-end 0)) (point-max))) + (beginning-of-line 1) + (if (looking-at " +") (replace-match "")) + (goto-char (point-min))) + +(defvar body-only) ; dynamically scoped into this. + +;; Following variable is let bound when `org-do-lparse' is in +;; progress. See org-lparse.el. +(defvar org-lparse-toc) +(defvar org-lparse-footnote-buffer) +(defvar org-lparse-footnote-definitions) +(defvar org-lparse-dyn-first-heading-pos) + +(defun org-xhtml-end-export () + ;; insert the table of contents + (when (and org-export-with-toc (not body-only) org-lparse-toc) + (org-xhtml-insert-toc org-lparse-toc)) + + ;; remove empty paragraphs + (goto-char (point-min)) + (while (re-search-forward "<p>[ \r\n\t]*</p>" nil t) + (replace-match "")) + + ;; Convert whitespace place holders + (goto-char (point-min)) + (let (beg end n) + (while (setq beg (next-single-property-change (point) 'org-whitespace)) + (setq n (get-text-property beg 'org-whitespace) + end (next-single-property-change beg 'org-whitespace)) + (goto-char beg) + (delete-region beg end) + (insert (format "<span style=\"visibility:hidden;\">%s</span>" + (make-string n ?x))))) + + ;; Remove empty lines at the beginning of the file. + (goto-char (point-min)) + (when (looking-at "\\s-+\n") (replace-match "")) + + ;; Remove display properties + (remove-text-properties (point-min) (point-max) '(display t)) + + ;; kill temporary buffers + (when org-lparse-footnote-buffer + (kill-buffer org-lparse-footnote-buffer)) + + ;; Run the hook + (run-hooks 'org-export-html-final-hook)) + +(defun org-xhtml-format-toc-entry (snumber todo headline tags href) + (setq headline (concat + (and org-export-with-section-numbers + (concat snumber " ")) + headline + (and tags + (concat + (org-lparse-format 'SPACES 3) + (org-lparse-format 'FONTIFY tags "tag"))))) + (when todo + (setq headline (org-lparse-format 'FONTIFY headline "todo"))) + (org-lparse-format 'LINK headline (concat "#" href))) + +(defun org-xhtml-format-toc-item (toc-entry level org-last-level) + (when (> level org-last-level) + (let ((cnt (- level org-last-level))) + (while (>= (setq cnt (1- cnt)) 0) + (org-lparse-begin 'LIST 'unordered) + (org-lparse-begin 'LIST-ITEM 'unordered)))) + (when (< level org-last-level) + (let ((cnt (- org-last-level level))) + (while (>= (setq cnt (1- cnt)) 0) + (org-lparse-end-list-item) + (org-lparse-end 'LIST 'unordered)))) + + (org-lparse-end-list-item) + (org-lparse-begin 'LIST-ITEM 'unordered) + (insert toc-entry)) + +(defun org-xhtml-begin-toc (lang-specific-heading) + (org-lparse-insert-tag "<div id=\"table-of-contents\">") + (insert + (org-lparse-format 'HEADING lang-specific-heading + (or (org-lparse-get 'TOPLEVEL-HLEVEL) 1))) + (org-lparse-insert-tag "<div id=\"text-table-of-contents\">") + (org-lparse-begin 'LIST 'unordered) + (org-lparse-begin 'LIST-ITEM 'unordered)) + +(defun org-xhtml-end-toc () + (while (> org-last-level (1- org-min-level)) + (setq org-last-level (1- org-last-level)) + (org-lparse-end-list-item) + (org-lparse-end 'LIST 'unordered)) + (org-lparse-insert-tag "</div>") + (org-lparse-insert-tag "</div>") + + ;; cleanup empty list items in toc + (while (re-search-backward "<li>[ \r\n\t]*</li>\n?" (point-min) t) + (replace-match ""))) + +;;;###autoload +(defun org-export-as-xhtml-and-open (arg) + "Export the outline as HTML and immediately open it with a browser. +If there is an active region, export only the region. +The prefix ARG specifies how many levels of the outline should become +headlines. The default is 3. Lower levels will become bulleted lists." + (interactive "P") + (org-lparse-and-open "xhtml" "xhtml" arg)) + +;;;###autoload +(defun org-export-as-xhtml-batch () + "Call the function `org-lparse-batch'. +This function can be used in batch processing as: +emacs --batch + --load=$HOME/lib/emacs/org.el + --eval \"(setq org-export-headline-levels 2)\" + --visit=MyFile --funcall org-export-as-html-batch" + (org-lparse-batch "xhtml")) + +;;;###autoload +(defun org-export-as-xhtml-to-buffer (arg) + "Call `org-lparse-to-buffer` with output to a temporary buffer. +No file is created. The prefix ARG is passed through to `org-lparse-to-buffer'." + (interactive "P") + (org-lparse-to-buffer "xhtml" arg)) + +;;;###autoload +(defun org-replace-region-by-xhtml (beg end) + "Assume the current region has org-mode syntax, and convert it to HTML. +This can be used in any buffer. For example, you could write an +itemized list in org-mode syntax in an HTML buffer and then use this +command to convert it." + (interactive "r") + (org-replace-region-by "xhtml" beg end)) + +;;;###autoload +(defun org-export-region-as-xhtml (beg end &optional body-only buffer) + "Convert region from BEG to END in `org-mode' buffer to HTML. +If prefix arg BODY-ONLY is set, omit file header, footer, and table of +contents, and only produce the region of converted text, useful for +cut-and-paste operations. +If BUFFER is a buffer or a string, use/create that buffer as a target +of the converted HTML. If BUFFER is the symbol `string', return the +produced HTML as a string and leave not buffer behind. For example, +a Lisp program could call this function in the following way: + + (setq html (org-export-region-as-html beg end t 'string)) + +When called interactively, the output buffer is selected, and shown +in a window. A non-interactive call will only return the buffer." + (interactive "r\nP") + (org-lparse-region "xhtml" beg end body-only buffer)) + +;;; org-export-as-xhtml +;;;###autoload +(defun org-export-as-xhtml (arg &optional hidden ext-plist + to-buffer body-only pub-dir) + "Export the outline as a pretty HTML file. +Use `org-lparse' internally to perform the actual export. This +routine merely binds the TARGET-BACKEND and NATIVE-BACKEND args +of `org-lparse' to \"html\"." + (interactive "P") + (org-lparse "xhtml" "xhtml" arg hidden ext-plist to-buffer body-only pub-dir)) + +(defvar org-xhtml-entity-control-callbacks-alist + `((EXPORT + . (org-xhtml-begin-export org-xhtml-end-export)) + (DOCUMENT-CONTENT + . (org-xhtml-begin-document-content org-xhtml-end-document-content)) + (DOCUMENT-BODY + . (org-xhtml-begin-document-body org-xhtml-end-document-body)) + (TOC + . (org-xhtml-begin-toc org-xhtml-end-toc)) + (ENVIRONMENT + . (org-xhtml-begin-environment org-xhtml-end-environment)) + (FOOTNOTE-DEFINITION + . (org-xhtml-begin-footnote-definition org-xhtml-end-footnote-definition)) + (TABLE + . (org-xhtml-begin-table org-xhtml-end-table)) + (TABLE-ROWGROUP + . (org-xhtml-begin-table-rowgroup org-xhtml-end-table-rowgroup)) + (LIST + . (org-xhtml-begin-list org-xhtml-end-list)) + (LIST-ITEM + . (org-xhtml-begin-list-item org-xhtml-end-list-item)) + (OUTLINE + . (org-xhtml-begin-outline org-xhtml-end-outline)) + (OUTLINE-TEXT + . (org-xhtml-begin-outline-text org-xhtml-end-outline-text)) + (PARAGRAPH + . (org-xhtml-begin-paragraph org-xhtml-end-paragraph))) + "Alist of control callbacks registered with the exporter. +Each element is of the form (ENTITY . (BEGIN-ENTITY-FUNCTION +END-ENTITY-FUNCTION)). ENTITY is one of PARAGRAPH, LIST etc as +seen above. BEGIN-ENTITY-FUNCTION and END-ENTITY-FUNCTION are +functions that get called when the exporter needs to begin or end +an entity in the currently exported file. The signatures of +these callbacks are specific to the ENTITY being emitted. These +callbacks always get called with exported file as the current +buffer and need to insert the appropriate tags into the current +buffer. For example, `org-xhtml-begin-paragraph' inserts <p> and +`org-xhtml-end-paragraph' inserts </p> in to the current buffer. +These callbacks are invoked via `org-lparse-begin' and +`org-lparse-end'.") + +(defvar org-xhtml-entity-format-callbacks-alist + `((EXTRA-TARGETS . org-lparse-format-extra-targets) + (ORG-TAGS . org-lparse-format-org-tags) + (SECTION-NUMBER . org-lparse-format-section-number) + (HEADLINE . org-xhtml-format-headline) + (TOC-ENTRY . org-xhtml-format-toc-entry) + (TOC-ITEM . org-xhtml-format-toc-item) + (TAGS . org-xhtml-format-tags) + (SPACES . org-xhtml-format-spaces) + (TABS . org-xhtml-format-tabs) + (LINE-BREAK . org-xhtml-format-line-break) + (FONTIFY . org-xhtml-format-fontify) + (TODO . org-lparse-format-todo) + (ORG-LINK . org-xhtml-format-org-link) + (LINK . org-xhtml-format-link) + (INLINE-IMAGE . org-xhtml-format-inline-image) + (HEADING . org-xhtml-format-heading) + (ANCHOR . org-xhtml-format-anchor) + (TABLE . org-xhtml-format-table) + (TABLE-ROW . org-xhtml-format-table-row) + (TABLE-CELL . org-xhtml-format-table-cell) + (FOOTNOTES-SECTION . org-xhtml-format-footnotes-section) + (FOOTNOTE-REFERENCE . org-xhtml-format-footnote-reference) + (HORIZONTAL-LINE . org-xhtml-format-horizontal-line) + (LINE . org-xhtml-format-line) + (COMMENT . org-xhtml-format-comment) + (ORG-ENTITY . org-xhtml-format-org-entity)) + "Alist of format callbacks registered with the exporter. +Each element is of the form (ENTITY . ENTITY-FORMAT-FUNCTION). +ENTITY is one of LINE, HEADING, COMMENT, LINK, TABLE-ROW etc as +seen above. ENTITY-FORMAT-FUNCTION is a functions that gets +called when the exporter needs to format a string in `org-mode' +buffer in a backend specific way. The signatures of the +formatting callback is specific to the ENTITY being passed in. +These callbacks always need to encode the incoming entity in +backend specific way and return the same. These callbacks do not +make any modifications to the exporter file. For example, +`org-xhtml-format-table-row' encloses incoming entity in <tr> +</tr> tags and returns it. See also `org-lparse-format'.") + +(defun org-xhtml-begin-document-body (opt-plist) + (let ((link-up (and (plist-get opt-plist :link-up) + (string-match "\\S-" (plist-get opt-plist :link-up)) + (plist-get opt-plist :link-up))) + (link-home (and (plist-get opt-plist :link-home) + (string-match "\\S-" (plist-get opt-plist :link-home)) + (plist-get opt-plist :link-home)))) + (insert "\n<body>") + (org-lparse-insert-tag "<div id=\"content\">") + (insert "\n" + (or (and (or link-up link-home) + (format org-export-html-home/up-format + (or link-up link-home) + (or link-home link-up))) "") + "\n")) + (org-xhtml-insert-preamble opt-plist)) + +(defun org-xhtml-end-document-body (opt-plist) + (org-xhtml-insert-postamble opt-plist) + (unless body-only + (org-lparse-insert-tag "</div>") + (insert "\n</body>"))) + +(defun org-xhtml-begin-document-content (opt-plist) + (let* ((language (plist-get opt-plist :language)) + (charset (or (and coding-system-for-write + (fboundp 'coding-system-get) + (coding-system-get coding-system-for-write + 'mime-charset)) + "iso-8859-1")) + (style (concat (if (plist-get opt-plist :style-include-default) + org-export-html-style-default) + (plist-get opt-plist :style) + (plist-get opt-plist :style-extra) + "\n" + (if (plist-get opt-plist :style-include-scripts) + org-export-html-scripts))) + (mathjax + (if (or (eq (plist-get opt-plist :LaTeX-fragments) 'mathjax) + (and org-export-have-math + (eq (plist-get opt-plist :LaTeX-fragments) t))) + + (org-export-html-mathjax-config + org-export-html-mathjax-template + org-export-html-mathjax-options + (or (plist-get opt-plist :mathjax) "")) ""))) + (insert (format + "%s +<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" + \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"> +<html xmlns=\"http://www.w3.org/1999/xhtml\" +lang=\"%s\" xml:lang=\"%s\"> +<head> +<title>%s</title> +<meta http-equiv=\"Content-Type\" content=\"text/html;charset=%s\"/> +<meta name=\"generator\" content=\"Org-mode\"/> +<meta name=\"generated\" content=\"%s\"/> +<meta name=\"author\" content=\"%s\"/> +<meta name=\"description\" content=\"%s\"/> +<meta name=\"keywords\" content=\"%s\"/> +%s +%s +</head> +" + (format + (or (and (stringp org-export-html-xml-declaration) + org-export-html-xml-declaration) + (cdr (assoc (plist-get opt-plist :html-extension) + org-export-html-xml-declaration)) + (cdr (assoc "html" org-export-html-xml-declaration)) + + "") + charset) + language language + (plist-get opt-plist :title) + charset + (plist-get opt-plist :effective-date) + (plist-get opt-plist :author) + (plist-get opt-plist :description) + (plist-get opt-plist :keywords) + style + mathjax)))) + +(defun org-xhtml-end-document-content () + (insert "\n</html>\n")) + +(defun org-xhtml-begin-outline (level1 snumber title tags + target extra-targets extra-class) + (let* ((class (format "outline-%d" level1)) + (class (if extra-class (concat class " " extra-class) class)) + (id (format "outline-container-%s" + (org-lparse-suffix-from-snumber snumber))) + (extra (concat (when id (format " id=\"%s\"" id)) + (when class (format " class=\"%s\"" class))))) + (org-lparse-insert-tag "<div%s>" extra) + (insert + (org-lparse-format 'HEADING + (org-lparse-format + 'HEADLINE title extra-targets tags snumber level1) + level1 target)))) + +(defun org-xhtml-end-outline () + (org-lparse-insert-tag "</div>")) + +(defun org-xhtml-begin-outline-text (level1 snumber extra-class) + (let* ((class (format "outline-text-%d" level1)) + (class (if extra-class (concat class " " extra-class) class)) + (id (format "text-%s" (org-lparse-suffix-from-snumber snumber))) + (extra (concat (when id (format " id=\"%s\"" id)) + (when class (format " class=\"%s\"" class))))) + (org-lparse-insert-tag "<div%s>" extra))) + +(defun org-xhtml-end-outline-text () + (org-lparse-insert-tag "</div>")) + +(defun org-xhtml-begin-paragraph (&optional style) + (let* ((class (cdr (assoc style '((footnote . "footnote") + (verse . nil))))) + (extra (if class (format " class=\"%s\"" class) ""))) + (org-lparse-insert-tag "<p%s>" extra))) + +(defun org-xhtml-end-paragraph () + (insert "</p>")) + +(defun org-xhtml-format-environment (style beg-end) + (assert (memq style '(blockquote center verse fixedwidth quote native)) t) + (case style + (blockquote + (case beg-end + (BEGIN + (org-lparse-end-paragraph) + (insert "<blockquote>\n") + (org-lparse-begin-paragraph)) + (END + (org-lparse-end-paragraph) + (insert "\n</blockquote>\n") + (org-lparse-begin-paragraph)))) + (verse + (case beg-end + (BEGIN + (org-lparse-end-paragraph) + (insert "\n<p class=\"verse\">\n") + (setq org-lparse-par-open t)) + (END + (insert "</p>\n") + (setq org-lparse-par-open nil) + (org-lparse-begin-paragraph)))) + (center + (case beg-end + (BEGIN + (org-lparse-end-paragraph) + (insert "\n<div style=\"text-align: center\">") + (org-lparse-begin-paragraph)) + (END + (org-lparse-end-paragraph) + (insert "\n</div>") + (org-lparse-begin-paragraph)))) + (fixedwidth + (case beg-end + (BEGIN + (org-lparse-end-paragraph) + (insert "<pre class=\"example\">\n")) + (END + (insert "</pre>\n") + (org-lparse-begin-paragraph)))) + (quote + (case beg-end + (BEGIN + (org-lparse-end-paragraph) + (insert "<pre>")) + (END + (insert "</pre>\n") + (org-lparse-begin-paragraph)))) + (native + (case beg-end + (BEGIN (org-lparse-end-paragraph)) + (END (org-lparse-begin-paragraph)))) + (t (error "Unknown environment %s" style)))) + +(defun org-xhtml-begin-environment (style) + (org-xhtml-format-environment style 'BEGIN)) + +(defun org-xhtml-end-environment (style) + (org-xhtml-format-environment style 'END)) + +(defun org-xhtml-begin-list (ltype &optional arg1) + (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype) + ltype)) + + (case ltype + (ordered (let ((extra (if arg1 (format " start=\"%d\"" arg1) ""))) + (org-lparse-insert-tag "<ol%s>" extra))) + (unordered (org-lparse-insert-tag "<ul>")) + (description (org-lparse-insert-tag "<dl>")) + (t (error "Unknown list type: %s" ltype)))) + +(defun org-xhtml-end-list (ltype) + (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype) + ltype)) + + (org-lparse-insert-tag + (case ltype + (ordered "</ol>") + (unordered "</ul>") + (description "</dl>") + (t (error "Unknown list type: %s" ltype))))) + +(defun org-xhtml-begin-list-item (ltype &optional arg headline) + (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype) + ltype)) + (case ltype + (ordered + (assert (not headline) t) + (let* ((counter arg) + (extra (if counter (format " value=\"%s\"" counter) ""))) + (org-lparse-insert-tag "<li%s>" extra))) + (unordered + (let* ((id arg) + (extra (if id (format " id=\"%s\"" id) ""))) + (org-lparse-insert-tag "<li%s>" extra) + (when headline + (insert headline (org-lparse-format 'LINE-BREAK) "\n")))) + (description + (assert (not headline) t) + (let* ((desc-tag (or arg "(no term)"))) + (insert + (org-xhtml-format-tags '("<dt>" . "</dt>") desc-tag)) + (org-lparse-insert-tag "<dd>"))) + (t (error "Unknown list type")))) + +(defun org-xhtml-end-list-item (ltype) + (setq ltype (or (org-lparse-html-list-type-to-canonical-list-type ltype) + ltype)) + (case ltype + (ordered (org-lparse-insert-tag "</li>")) + (unordered (org-lparse-insert-tag "</li>")) + (description (org-lparse-insert-tag "</dd>")) + (t (error "Unknown list type")))) + +;; Following variables are let bound when table emission is in +;; progress. See org-lparse.el. +(defvar org-lparse-table-begin-marker) +(defvar org-lparse-table-ncols) +(defvar org-lparse-table-rowgrp-open) +(defvar org-lparse-table-rownum) +(defvar org-lparse-table-cur-rowgrp-is-hdr) +(defvar org-lparse-table-is-styled) +(defvar org-lparse-table-rowgrp-info) +(defvar org-lparse-table-colalign-vector) +(defvar org-lparse-table-num-numeric-items-per-column) + +(defun org-xhtml-begin-table-rowgroup (&optional is-header-row) + (when org-lparse-table-rowgrp-open + (org-lparse-end 'TABLE-ROWGROUP)) + (org-lparse-insert-tag (if is-header-row "<thead>" "<tbody>")) + (setq org-lparse-table-rowgrp-open t) + (setq org-lparse-table-cur-rowgrp-is-hdr is-header-row)) + +(defun org-xhtml-end-table-rowgroup () + (when org-lparse-table-rowgrp-open + (setq org-lparse-table-rowgrp-open nil) + (org-lparse-insert-tag + (if org-lparse-table-cur-rowgrp-is-hdr "</thead>" "</tbody>")))) + +(defun org-xhtml-begin-table (caption label attributes) + (let ((html-table-tag + (org-export-splice-attributes html-table-tag attributes))) + (when label + (setq html-table-tag + (org-export-splice-attributes + html-table-tag + (format "id=\"%s\"" (org-solidify-link-text label))))) + (org-lparse-insert-tag html-table-tag)) + + ;; Since the output of HTML table formatter can also be used in + ;; DocBook document, we want to always include the caption to make + ;; DocBook XML file valid. + (insert (format "<caption>%s</caption>" (or caption "")) "\n")) + +(defun org-xhtml-end-table () + (when org-lparse-table-is-styled + (goto-char org-lparse-table-begin-marker) + (setq org-lparse-table-begin-marker nil) + + (let ((c -1) gr colgropen) + (insert + (mapconcat + (lambda (x) + (incf c) + (setq gr (pop org-table-colgroup-info)) + + (concat + (if (memq gr '(:start :startend)) + (prog1 + (if colgropen + "</colgroup>\n<colgroup>" + "<colgroup>") + (setq colgropen t)) + "") + + (let* ((align (aref org-lparse-table-colalign-vector c)) + (alignspec (if org-xhtml-format-table-no-css + " align=\"%s\"" " class=\"%s\"")) + (extra (format alignspec align))) + (format "<col%s />" extra)) + + (if (memq gr '(:end :startend)) + (progn (setq colgropen nil) "</colgroup>") + ""))) + org-lparse-table-num-numeric-items-per-column "")) + + (if colgropen (insert "</colgroup>"))) + + ;; fill style attributes for table cells + (while (re-search-forward "@@class\\([0-9]+\\)@@" nil t) + (let ((c (string-to-number (match-string 1)))) + (replace-match + (if org-export-html-table-align-individual-fields + (format (if org-xhtml-format-table-no-css " align=\"%s\"" + " class=\"%s\"") + (or (aref org-lparse-table-colalign-vector c) "left")) "") + t t))) + (goto-char (point-max))) + (org-lparse-insert-tag "</table>\n")) + +(defun org-xhtml-format-table-row (row) + (org-xhtml-format-tags + (cons (eval (car org-export-table-row-tags)) + (eval (cdr org-export-table-row-tags))) row)) + +(defun org-xhtml-format-table-cell (text r c) + (let ((cell-style-cookie (or (and org-lparse-table-is-styled + (format "@@class%03d@@" c)) ""))) + (cond + (org-lparse-table-cur-rowgrp-is-hdr + (org-xhtml-format-tags + org-export-table-header-tags text "col" cell-style-cookie)) + ((and (= c 0) org-export-html-table-use-header-tags-for-first-column) + (org-xhtml-format-tags + org-export-table-header-tags text "row" cell-style-cookie)) + (t + (org-xhtml-format-tags + org-export-table-data-tags text cell-style-cookie))))) + +(defun org-xhtml-begin-footnote-definition (n) + (org-lparse-begin-paragraph 'footnote) + (insert + (format + (format org-export-html-footnote-format + "<a class=\"footnum\" name=\"fn.%s\" href=\"#fnr.%s\">%s</a>") + n n n))) + +(defun org-xhtml-end-footnote-definition (n) + (org-lparse-end-paragraph)) + +(defun org-xhtml-format-spaces (n) + (let ((space (or (and org-lparse-encode-pending "\\nbsp") " ")) out) + (while (> n 0) + (setq out (concat out space)) + (setq n (1- n))) out)) + +(defun org-xhtml-format-tabs (&optional n) + (ignore)) + +(defun org-xhtml-format-line-break () + (org-xhtml-format-tags "<br/>" "")) + +(defun org-xhtml-format-horizontal-line () + (concat "\n" "<hr/>" "\n")) + +(defun org-xhtml-format-line (line) + (case org-lparse-dyn-current-environment + ((quote fixedwidth) (concat (org-xml-encode-plain-text line) "\n")) + (t (concat line "\n")))) + +(defun org-xhtml-format-comment (fmt &rest args) + (let ((comment (apply 'format fmt args))) + (format "\n<!-- %s -->\n" comment))) + +(defun org-xhtml-format-fontify (text style &optional id) + (let (class extra how) + (cond + ((eq style 'underline) + (setq extra " style=\"text-decoration:underline;\"" )) + ((setq how (cdr (assoc style + '((bold . ("<b>" . "</b>")) + (emphasis . ("<i>" . "</i>")) + (code . ("<code>" . "</code>")) + (verbatim . ("<code>" . "</code>")) + (strike . ("<del>" . "</del>")) + (subscript . ("<sub>" . "</sub>")) + (superscript . ("<sup>" . "</sup>"))))))) + ((listp style) + (setq class (mapconcat 'identity style " "))) + ((stringp style) + (setq class style)) + (t (error "Unknown style %S" style))) + + (setq extra (concat (when class (format " class=\"%s\"" class)) + (when id (format " id=\"%s\"" id)) + extra)) + (org-xhtml-format-tags + (or how '("<span%s>" . "</span>")) text extra))) + +(defun org-xhtml-format-link (text href &optional extra) + (let ((extra (concat (format " href=\"%s\"" href) + (and extra (concat " " extra))))) + (org-xhtml-format-tags '("<a%s>" . "</a>") text extra))) + +(defun org-xhtml-format-heading (text level &optional id) + (let* ((extra (concat (when id (format " id=\"%s\"" id))))) + (concat (format "<h%d%s>" level extra) text (format "</h%d>" level)))) + +(defun org-xhtml-format-headline (title extra-targets tags + &optional snumber level) + (concat + (org-lparse-format 'EXTRA-TARGETS extra-targets) + (concat (org-lparse-format 'SECTION-NUMBER snumber level) " ") + title + (and tags (concat (org-lparse-format 'SPACES 3) + (org-lparse-format 'ORG-TAGS tags))))) + +(defun org-xhtml-format-anchor (text name &optional class) + (let* ((id name) + (extra (concat + (when name (format " name=\"%s\"" name)) + (when id (format " id=\"%s\"" id)) + (when class (format " class=\"%s\"" class))))) + (org-xhtml-format-tags '("<a%s>" . "</a>") text extra))) + +(defun org-xhtml-format-footnote-reference (n def refcnt) + (let ((extra (if (= refcnt 1) "" (format ".%d" refcnt)))) + (format org-export-html-footnote-format + (format + "<a class=\"footref\" name=\"fnr.%s%s\" href=\"#fn.%s\">%s</a>" + n extra n n)))) + +(defun org-xhtml-format-footnotes-section (section-name definitions) + (if (not definitions) "" + (format org-export-html-footnotes-section section-name definitions))) + +(defun org-xhtml-format-org-entity (wd) + (org-entity-get-representation wd 'html)) + +(defun org-xhtml-format-tags (tag text &rest args) + (let ((prefix (when org-lparse-encode-pending "@")) + (suffix (when org-lparse-encode-pending "@"))) + (apply 'org-lparse-format-tags tag text prefix suffix args))) + +(defun org-xhtml-get (what &optional opt-plist) + (case what + (BACKEND 'html) + (INIT-METHOD nil) + (SAVE-METHOD nil) + (CLEANUP-METHOD nil) + (OTHER-BACKENDS + '("etext" "html" "html10" "mediawiki" "pdf" "sdw" "sdw3" "sdw4" + "text" "text10" "odt" "vor" "vor4")) + (CONVERT-METHOD org-export-convert-process) + (EXPORT-DIR (org-export-directory :html opt-plist)) + (FILE-NAME-EXTENSION (plist-get opt-plist :html-extension)) + (EXPORT-BUFFER-NAME "*Org HTML Export*") + (ENTITY-CONTROL org-xhtml-entity-control-callbacks-alist) + (ENTITY-FORMAT org-xhtml-entity-format-callbacks-alist) + (TOPLEVEL-HLEVEL org-export-html-toplevel-hlevel) + (SPECIAL-STRING-REGEXPS org-export-html-special-string-regexps) + (CODING-SYSTEM-FOR-WRITE org-export-html-coding-system) + (CODING-SYSTEM-FOR-SAVE org-export-html-coding-system) + (INLINE-IMAGES org-export-html-inline-images) + (INLINE-IMAGE-EXTENSIONS org-export-html-inline-image-extensions) + (PLAIN-TEXT-MAP org-export-html-protect-char-alist) + (TABLE-FIRST-COLUMN-AS-LABELS + org-export-html-table-use-header-tags-for-first-column) + (TODO-KWD-CLASS-PREFIX org-export-html-todo-kwd-class-prefix) + (TAG-CLASS-PREFIX org-export-html-tag-class-prefix) + (FOOTNOTE-SEPARATOR org-export-html-footnote-separator) + (t (error "Unknown property: %s" what)))) + +(defun org-xhtml-get-coding-system-for-write () + (or org-export-html-coding-system + (and (boundp 'buffer-file-coding-system) buffer-file-coding-system))) + +(defun org-xhtml-get-coding-system-for-save () + (or org-export-html-coding-system + (and (boundp 'buffer-file-coding-system) buffer-file-coding-system))) + +(defun org-xhtml-insert-toc (toc) + ;; locate where toc needs to be inserted + (goto-char (point-min)) + (cond + ((or (re-search-forward "<p>\\s-*\\[TABLE-OF-CONTENTS\\]\\s-*</p>" nil t) + (re-search-forward "\\[TABLE-OF-CONTENTS\\]" nil t)) + (goto-char (match-beginning 0)) + (replace-match "") + (insert toc)) + (org-lparse-dyn-first-heading-pos + (goto-char org-lparse-dyn-first-heading-pos) + (when (looking-at "\\s-*</p>") + (goto-char (match-end 0)) + (insert "\n")) + (insert toc)) + (t (ignore)))) + +(defun org-xhtml-insert-preamble (opt-plist) + (when (plist-get opt-plist :html-preamble) + (let ((html-pre (plist-get opt-plist :html-preamble)) + (title (plist-get opt-plist :title)) + (date (plist-get opt-plist :effective-date)) + (author (plist-get opt-plist :author)) + (lang-words (plist-get opt-plist :lang-words)) + (email (plist-get opt-plist :email))) + (cond ((stringp html-pre) + (insert + (format-spec html-pre `((?t . ,title) (?a . ,author) + (?d . ,date) (?e . ,email))))) + ((functionp html-pre) + (funcall html-pre opt-plist)) + (t + (insert + (format-spec + (or (cadr (assoc (nth 0 lang-words) + org-export-html-preamble-format)) + (cadr (assoc "en" org-export-html-preamble-format))) + `((?t . ,title) (?a . ,author) + (?d . ,date) (?e . ,email))))))))) + +(defun org-xhtml-insert-postamble (opt-plist) + (when org-lparse-footnote-definitions + (insert + (org-lparse-format + 'FOOTNOTES-SECTION (nth 4 (plist-get opt-plist :lang-words)) + (mapconcat (lambda (x) (cdr x)) + (nreverse org-lparse-footnote-definitions) "\n")))) + (let ((bib (org-export-html-get-bibliography))) + (when bib + (insert "\n" bib "\n"))) + + ;; export html postamble + (unless body-only + (let* ((html-post (plist-get opt-plist :html-postamble)) + (date (plist-get opt-plist :effective-date)) + (author (plist-get opt-plist :author)) + (email (plist-get opt-plist :email)) + (lang-words (plist-get opt-plist :lang-words)) + (html-validation-link (or org-export-html-validation-link "")) + (email + (mapconcat (lambda(e) + (format "<a href=\"mailto:%s\">%s</a>" e e)) + (split-string email ",+ *") + ", ")) + (creator-info + (concat "Org version " org-version " with Emacs version " + (number-to-string emacs-major-version)))) + (when (plist-get opt-plist :html-postamble) + (cond ((stringp html-post) + (insert "<div id=\"postamble\">\n") + (insert (format-spec html-post + `((?a . ,author) (?e . ,email) + (?d . ,date) (?c . ,creator-info) + (?v . ,html-validation-link)))) + (insert "</div>")) + ((functionp html-post) + (funcall html-post opt-plist)) + ((eq html-post 'auto) + ;; fall back on default postamble + (insert "<div id=\"postamble\">\n") + (when (plist-get opt-plist :time-stamp-file) + (insert "<p class=\"date\">" (nth 2 lang-words) ": " date "</p>\n")) + (when (and (plist-get opt-plist :author-info) author) + (insert "<p class=\"author\">" (nth 1 lang-words) ": " author "</p>\n")) + (when (and (plist-get opt-plist :email-info) email) + (insert "<p class=\"email\">" email "</p>\n")) + (when (plist-get opt-plist :creator-info) + (insert "<p class=\"creator\">" + (concat "Org version " org-version " with Emacs version " + (number-to-string emacs-major-version) "</p>\n"))) + (insert html-validation-link "\n</div>")) + (t + (insert "<div id=\"postamble\">\n") + (insert (format-spec + (or (cadr (assoc (nth 0 lang-words) + org-export-html-postamble-format)) + (cadr (assoc "en" org-export-html-postamble-format))) + `((?a . ,author) (?e . ,email) + (?d . ,date) (?c . ,creator-info) + (?v . ,html-validation-link)))) + (insert "</div>")))))) + + (if org-export-html-with-timestamp + (insert org-export-html-html-helper-timestamp))) + + +;; There are references to org-html-expand, org-html-protect and +;; org-html-do-expand outside of org-html.el. For now provide a +;; migration path. Ultimately these functions have to be removed. + +;; (defun org-html-expand (string) +;; "A simple wrapper around `org-xml-encode-org-text-skip-links'." +;; (org-xml-encode-org-text-skip-links string)) + +;; (defun org-html-protect (s) +;; "A simple wrapper around `org-xml-encode-plain-text'." +;; (org-xml-encode-plain-text s)) + +;; (defun org-html-do-expand (s) +;; "A simple wrapper around `org-xml-encode-org-text'." +;; (org-xml-encode-org-text s)) + +;; (defun org-export-html-format-href (s) +;; "A simple wrapper around `org-xml-format-href'." +;; (org-xml-format-href s)) + +;; (defun org-export-html-format-desc (s) +;; "A simple wrapper around `org-xml-format-desc'." +;; (org-xml-format-desc s)) + +(provide 'org-xhtml) + +;; arch-tag: 8109d84d-eb8f-460b-b1a8-f45f3a6c7ea1 +;;; org-html.el ends here diff --git a/contrib/odt/BasicODConverter/BasicODConverter-0.8.0.oxt b/contrib/odt/BasicODConverter/BasicODConverter-0.8.0.oxt Binary files differnew file mode 100644 index 0000000..511187a --- /dev/null +++ b/contrib/odt/BasicODConverter/BasicODConverter-0.8.0.oxt diff --git a/contrib/odt/BasicODConverter/Filters.bas b/contrib/odt/BasicODConverter/Filters.bas new file mode 100644 index 0000000..5912f65 --- /dev/null +++ b/contrib/odt/BasicODConverter/Filters.bas @@ -0,0 +1,213 @@ +REM ***** BASIC ***** + +Dim DocTypes + +Private DocTypeToFiltersMap As New Collection +Private WriterExportFilters As New Collection +Private WriterWebExportFilters As New Collection +Private CalcExportFilters As New Collection +Private ImpressExportFilters As New Collection +Private DrawExportFilters As New Collection + + +Private ExportFiltersInited As Boolean + +Sub InitExportFilters + If ExportFiltersInited Then + Exit Sub + End If + + DocTypes = Array(_ + "com.sun.star.text.TextDocument", _ + "com.sun.star.sheet.SpreadsheetDocument", _ + "com.sun.star.presentation.PresentationDocument", _ + "com.sun.star.drawing.DrawingDocument",_ + "com.sun.star.text.WebDocument"_ + ) + With WriterExportFilters + .Add Key := "bib" , Item :=Array("bib" , "BibTeX" , "BibTeX_Writer ") + .Add Key := "doc" , Item :=Array("doc" , "Microsoft Word 97/2000/XP" , "MS Word 97 ") + .Add Key := "doc6" , Item :=Array("doc" , "Microsoft Word 6.0" , "MS WinWord 6.0 ") + .Add Key := "doc95" , Item :=Array("doc" , "Microsoft Word 95" , "MS Word 95 ") + .Add Key := "docbook" , Item :=Array("xml" , "DocBook" , "DocBook File ") + .Add Key := "html" , Item :=Array("html" , "HTML Document (OpenOffice.org Writer)" , "HTML (StarWriter) ") + .Add Key := "latex" , Item :=Array("ltx" , "LaTeX 2e" , "LaTeX_Writer ") + .Add Key := "mediawiki" , Item :=Array("txt" , "MediaWiki" , "MediaWiki ") + .Add Key := "odt" , Item :=Array("odt" , "ODF Text Document" , "writer8 ") + .Add Key := "ooxml" , Item :=Array("xml" , "Microsoft Office Open XML" , "MS Word 2003 XML ") + .Add Key := "ott" , Item :=Array("ott" , "Open Document Text" , "writer8_template ") + .Add Key := "pdf" , Item :=Array("pdf" , "Portable Document Format" , "writer_pdf_Export ") + .Add Key := "rtf" , Item :=Array("rtf" , "Rich Text Format" , "Rich Text Format ") + .Add Key := "sdw" , Item :=Array("sdw" , "StarWriter 5.0" , "StarWriter 5.0 ") + .Add Key := "sdw3" , Item :=Array("sdw" , "StarWriter 3.0" , "StarWriter 3.0 ") + .Add Key := "sdw4" , Item :=Array("sdw" , "StarWriter 4.0" , "StarWriter 4.0 ") + .Add Key := "stw" , Item :=Array("stw" , "Open Office.org 1.0 Text Document Template" , "writer_StarOffice_XML_Writer_Template ") + .Add Key := "sxw" , Item :=Array("sxw" , "Open Office.org 1.0 Text Document" , "StarOffice XML (Writer) ") + .Add Key := "text" , Item :=Array("txt" , "Text Encoded" , "Text (encoded) ") + .Add Key := "txt" , Item :=Array("txt" , "Text" , "Text ") + .Add Key := "uot" , Item :=Array("uot" , "Unified Office Format text" , "UOF text ") + .Add Key := "vor" , Item :=Array("vor" , "StarWriter 5.0 Template" , "StarWriter 5.0 Vorlage/Template ") + .Add Key := "vor3" , Item :=Array("vor" , "StarWriter 3.0 Template" , "StarWriter 3.0 Vorlage/Template ") + .Add Key := "vor4" , Item :=Array("vor" , "StarWriter 4.0 Template" , "StarWriter 4.0 Vorlage/Template ") + .Add Key := "xhtml" , Item :=Array("html" , "XHTML Document" , "XHTML Writer File ") + End With + + With DrawExportFilters + .Add Key := "bmp" , Item :=Array("bmp" , "Windows Bitmap" , "draw_bmp_Export ") + .Add Key := "emf" , Item :=Array("emf" , "Enhanced Metafile" , "draw_emf_Export ") + .Add Key := "eps" , Item :=Array("eps" , "Encapsulated PostScript" , "draw_eps_Export ") + .Add Key := "gif" , Item :=Array("gif" , "Graphics Interchange Format" , "draw_gif_Export ") + .Add Key := "html" , Item :=Array("html" , "HTML Document (OpenOffice.org Draw)" , "draw_html_Export ") + .Add Key := "jpg" , Item :=Array("jpg" , "Joint Photographic Experts Group" , "draw_jpg_Export ") + .Add Key := "met" , Item :=Array("met" , "OS/2 Metafile" , "draw_met_Export ") + .Add Key := "odd" , Item :=Array("odd" , "OpenDocument Drawing" , "draw8 ") + .Add Key := "otg" , Item :=Array("otg" , "OpenDocument Drawing Template" , "draw8_template ") + .Add Key := "pbm" , Item :=Array("pbm" , "Portable Bitmap" , "draw_pbm_Export ") + .Add Key := "pct" , Item :=Array("pct" , "Mac Pict" , "draw_pct_Export ") + .Add Key := "pdf" , Item :=Array("pdf" , "Portable Document Format" , "draw_pdf_Export ") + .Add Key := "pgm" , Item :=Array("pgm" , "Portable Graymap" , "draw_pgm_Export ") + .Add Key := "png" , Item :=Array("png" , "Portable Network Graphic" , "draw_png_Export ") + .Add Key := "ppm" , Item :=Array("ppm" , "Portable Pixelmap" , "draw_ppm_Export ") + .Add Key := "ras" , Item :=Array("ras" , "Sun Raster Image" , "draw_ras_Export ") + .Add Key := "std" , Item :=Array("std" , "OpenOffice.org 1.0 Drawing Template" , "draw_StarOffice_XML_Draw_Template ") + .Add Key := "svg" , Item :=Array("svg" , "Scalable Vector Graphics" , "draw_svg_Export ") + .Add Key := "svm" , Item :=Array("svm" , "StarView Metafile" , "draw_svm_Export ") + .Add Key := "swf" , Item :=Array("swf" , "Macromedia Flash (SWF)" , "draw_flash_Export ") + .Add Key := "sxd" , Item :=Array("sxd" , "OpenOffice.org 1.0 Drawing" , "StarOffice XML (Draw) ") + .Add Key := "sxd3" , Item :=Array("sxd" , "StarDraw 3.0" , "StarDraw 3.0 ") + .Add Key := "sxd5" , Item :=Array("sxd" , "StarDraw 5.0" , "StarDraw 5.0 ") + .Add Key := "tiff" , Item :=Array("tiff" , "Tagged Image File Format" , "draw_tif_Export ") + .Add Key := "vor" , Item :=Array("vor" , "StarDraw 5.0 Template" , "StarDraw 5.0 Vorlage ") + .Add Key := "vor3" , Item :=Array("vor" , "StarDraw 3.0 Template" , "StarDraw 3.0 Vorlage ") + .Add Key := "wmf" , Item :=Array("wmf" , "Windows Metafile" , "draw_wmf_Export ") + .Add Key := "xhtml" , Item :=Array("xhtml" , "XHTML" , "XHTML Draw File ") + .Add Key := "xpm" , Item :=Array("xpm" , "X PixMap" , "draw_xpm_Export ") + + + End With + + With ImpressExportFilters + .Add Key := "bmp" , Item :=Array("bmp" , "Windows Bitmap" , "impress_bmp_Export ") + .Add Key := "emf" , Item :=Array("emf" , "Enhanced Metafile" , "impress_emf_Export ") + .Add Key := "eps" , Item :=Array("eps" , "Encapsulated PostScript" , "impress_eps_Export ") + .Add Key := "gif" , Item :=Array("gif" , "Graphics Interchange Format" , "impress_gif_Export ") + .Add Key := "html" , Item :=Array("html" , "HTML Document (OpenOffice.org Impress)" , "impress_html_Export ") + .Add Key := "jpg" , Item :=Array("jpg" , "Joint Photographic Experts Group" , "impress_jpg_Export ") + .Add Key := "met" , Item :=Array("met" , "OS/2 Metafile" , "impress_met_Export ") + .Add Key := "odg" , Item :=Array("odg" , "ODF Drawing (Impress)" , "impress8_draw ") + .Add Key := "odp" , Item :=Array("odp" , "ODF Presentation" , "impress8 ") + .Add Key := "otp" , Item :=Array("otp" , "ODF Presentation Template" , "impress8_template ") + .Add Key := "pbm" , Item :=Array("pbm" , "Portable Bitmap" , "impress_pbm_Export ") + .Add Key := "pct" , Item :=Array("pct" , "Mac Pict" , "impress_pct_Export ") + .Add Key := "pdf" , Item :=Array("pdf" , "Portable Document Format" , "impress_pdf_Export ") + .Add Key := "pgm" , Item :=Array("pgm" , "Portable Graymap" , "impress_pgm_Export ") + .Add Key := "png" , Item :=Array("png" , "Portable Network Graphic" , "impress_png_Export ") + .Add Key := "pot" , Item :=Array("pot" , "Microsoft PowerPoint 97/2000/XP Template" , "MS PowerPoint 97 Vorlage ") + .Add Key := "ppm" , Item :=Array("ppm" , "Portable Pixelmap" , "impress_ppm_Export ") + .Add Key := "ppt" , Item :=Array("ppt" , "Microsoft PowerPoint 97/2000/XP" , "MS PowerPoint 97 ") + .Add Key := "pwp" , Item :=Array("pwp" , "PlaceWare" , "placeware_Export ") + .Add Key := "ras" , Item :=Array("ras" , "Sun Raster Image" , "impress_ras_Export ") + .Add Key := "sda" , Item :=Array("sda" , "StarDraw 5.0 (OpenOffice.org Impress)" , "StarDraw 5.0 (StarImpress) ") + .Add Key := "sdd" , Item :=Array("sdd" , "StarImpress 5.0" , "StarImpress 5.0 ") + .Add Key := "sdd3" , Item :=Array("sdd" , "StarDraw 3.0 (OpenOffice.org Impress)" , "StarDraw 3.0 (StarImpress) ") + .Add Key := "sdd4" , Item :=Array("sdd" , "StarImpress 4.0" , "StarImpress 4.0 ") + .Add Key := "sti" , Item :=Array("sti" , "OpenOffice.org 1.0 Presentation Template" , "impress_StarOffice_XML_Impress_Template ") + .Add Key := "svg" , Item :=Array("svg" , "Scalable Vector Graphics" , "impress_svg_Export ") + .Add Key := "svm" , Item :=Array("svm" , "StarView Metafile" , "impress_svm_Export ") + .Add Key := "swf" , Item :=Array("swf" , "Macromedia Flash (SWF)" , "impress_flash_Export ") + .Add Key := "sxd" , Item :=Array("sxd" , "OpenOffice.org 1.0 Drawing (OpenOffice.org Impress)" , "impress_StarOffice_XML_Draw ") + .Add Key := "sxi" , Item :=Array("sxi" , "OpenOffice.org 1.0 Presentation" , "StarOffice XML (Impress) ") + .Add Key := "tiff" , Item :=Array("tiff" , "Tagged Image File Format" , "impress_tif_Export ") + .Add Key := "uop" , Item :=Array("uop" , "Unified Office Format presentation" , "UOF presentation ") + .Add Key := "vor" , Item :=Array("vor" , "StarImpress 5.0 Template" , "StarImpress 5.0 Vorlage ") + .Add Key := "vor3" , Item :=Array("vor" , "StarDraw 3.0 Template (OpenOffice.org Impress)" , "StarDraw 3.0 Vorlage (StarImpress) ") + .Add Key := "vor4" , Item :=Array("vor" , "StarImpress 4.0 Template" , "StarImpress 4.0 Vorlage ") + .Add Key := "vor5" , Item :=Array("vor" , "StarDraw 5.0 Template (OpenOffice.org Impress)" , "StarDraw 5.0 Vorlage (StarImpress) ") + .Add Key := "wmf" , Item :=Array("wmf" , "Windows Metafile" , "impress_wmf_Export ") + .Add Key := "xhtml" , Item :=Array("xml" , "XHTML" , "XHTML Impress File ") + .Add Key := "xpm" , Item :=Array("xpm" , "X PixMap" , "impress_xpm_Export ") + + End With + + With CalcExportFilters + .Add Key := "csv" , Item :=Array("csv" , "Text CSV" , "Text - txt - csv (StarCalc) ") + .Add Key := "dbf" , Item :=Array("dbf" , "dBASE" , "dBase ") + .Add Key := "dif" , Item :=Array("dif" , "Data Interchange Format" , "DIF ") + .Add Key := "html" , Item :=Array("html" , "HTML Document (OpenOffice.org Calc)" , "HTML (StarCalc) ") + .Add Key := "ods" , Item :=Array("ods" , "ODF Spreadsheet" , "calc8 ") + .Add Key := "ooxml" , Item :=Array("xml" , "Microsoft Excel 2003 XML" , "MS Excel 2003 XML ") + .Add Key := "ots" , Item :=Array("ots" , "ODF Spreadsheet Template" , "calc8_template ") + .Add Key := "pdf" , Item :=Array("pdf" , "Portable Document Format" , "calc_pdf_Export ") + .Add Key := "sdc" , Item :=Array("sdc" , "StarCalc 5.0" , "StarCalc 5.0 ") + .Add Key := "sdc3" , Item :=Array("sdc" , "StarCalc 3.0" , "StarCalc 3.0 ") + .Add Key := "sdc4" , Item :=Array("sdc" , "StarCalc 4.0" , "StarCalc 4.0 ") + .Add Key := "slk" , Item :=Array("slk" , "SYLK" , "SYLK ") + .Add Key := "stc" , Item :=Array("stc" , "OpenOffice.org 1.0 Spreadsheet Template" , "calc_StarOffice_XML_Calc_Template ") + .Add Key := "sxc" , Item :=Array("sxc" , "OpenOffice.org 1.0 Spreadsheet" , "StarOffice XML (Calc) ") + .Add Key := "uos" , Item :=Array("uos" , "Unified Office Format spreadsheet" , "UOF spreadsheet ") + .Add Key := "vor" , Item :=Array("vor" , "StarCalc 5.0 Template" , "StarCalc 5.0 Vorlage/Template ") + .Add Key := "vor3" , Item :=Array("vor" , "StarCalc 3.0 Template" , "StarCalc 3.0 Vorlage/Template ") + .Add Key := "vor4" , Item :=Array("vor" , "StarCalc 4.0 Template" , "StarCalc 4.0 Vorlage/Template ") + .Add Key := "xhtml" , Item :=Array("xhtml" , "XHTML" , "XHTML Calc File ") + .Add Key := "xls" , Item :=Array("xls" , "Microsoft Excel 97/2000/XP" , "MS Excel 97 ") + .Add Key := "xls5" , Item :=Array("xls" , "Microsoft Excel 5.0" , "MS Excel 5.0/95 ") + .Add Key := "xls95" , Item :=Array("xls" , "Microsoft Excel 95" , "MS Excel 95 ") + .Add Key := "xlt" , Item :=Array("xlt" , "Microsoft Excel 97/2000/XP Template" , "MS Excel 97 Vorlage/Template ") + .Add Key := "xlt5" , Item :=Array("xlt" , "Microsoft Excel 5.0 Template" , "MS Excel 5.0/95 Vorlage/Template ") + .Add Key := "xlt95" , Item :=Array("xlt" , "Microsoft Excel 95 Template" , "MS Excel 95 Vorlage/Template ") + + End With + + With WriterWebExportFilters + .Add Key := "etext" , Item :=Array("txt" , "Text Encoded (OpenOffice.org Writer/Web)" , "Text (encoded) (StarWriter/Web) ") + .Add Key := "html" , Item :=Array("html" , "HTML Document" , "HTML ") + '.Add Key := "html" , Item :=Array("html" , "HTML Document Template" , "writerweb8_writer_template ") + .Add Key := "html10" , Item :=Array("html" , "OpenOffice.org 1.0 HTML Template" , "writer_web_StarOffice_XML_Writer_Web_Template ") + .Add Key := "mediawiki" , Item :=Array("txt" , "MediaWiki" , "MediaWiki_Web ") + .Add Key := "pdf" , Item :=Array("pdf" , "PDF - Portable Document Format" , "writer_web_pdf_Export ") + .Add Key := "sdw" , Item :=Array("sdw" , "StarWriter 5.0 (OpenOffice.org Writer/Web)" , "StarWriter 5.0 (StarWriter/Web) ") + .Add Key := "sdw3" , Item :=Array("sdw" , "StarWriter 3.0 (OpenOffice.org Writer/Web)" , "StarWriter 3.0 (StarWriter/Web) ") + .Add Key := "sdw4" , Item :=Array("sdw" , "StarWriter 4.0 (OpenOffice.org Writer/Web)" , "StarWriter 4.0 (StarWriter/Web) ") + .Add Key := "text" , Item :=Array("txt" , "Text (OpenOffice.org Writer/Web)" , "Text (StarWriter/Web) ") + .Add Key := "text10" , Item :=Array("txt" , "OpenOffice.org 1.0 Text Document (OpenOffice.org Writer/Web)" , "writer_web_StarOffice_XML_Writer ") + .Add Key := "odt" , Item :=Array("txt" , "OpenOffice.org Text (OpenOffice.org Writer/Web)" , "writerweb8_writer ") + .Add Key := "vor" , Item :=Array("vor" , "StarWriter/Web 5.0 Template" , "StarWriter/Web 5.0 Vorlage/Template ") + .Add Key := "vor4" , Item :=Array("vor" , "StarWriter/Web 4.0 Template" , "StarWriter/Web 4.0 Vorlage/Template ") + + End With + + With DocTypeToFiltersMap + .Add Key := "com.sun.star.text.TextDocument", Item := WriterExportFilters + .Add Key := "com.sun.star.sheet.SpreadsheetDocument", Item := CalcExportFilters + .Add Key := "com.sun.star.presentation.PresentationDocument", Item :=ImpressExportFilters + .Add Key := "com.sun.star.drawing.DrawingDocument", Item := DrawExportFilters + .Add Key := "com.sun.star.text.WebDocument", Item := WriterWebExportFilters + End With + ExportFiltersInited = True +End Sub + +Function FilterSaveExtension(filterDescriptor ()) + FilterSaveExtension = Trim(filterDescriptor(0)) +End Function + +Function FilterHandler(filterDescriptor ()) + FilterHandler = Trim(filterDescriptor(2)) +End Function + +Function GetFilter(docType, outputFormat) + Dim filters + + On Error Goto MissingFilter + filters = DocTypeToFiltersMap(docType) + LogMessage "output format is " & outputFormat + GetFilter = filters(outputFormat) + +Done: + Exit Function + +MissingFilter: + LogMessage("No existing filters for exporting " & docType & " to " & outputFormat) + GetFilter = Null + Resume Done +End Function + diff --git a/contrib/odt/BasicODConverter/Main.bas b/contrib/odt/BasicODConverter/Main.bas new file mode 100644 index 0000000..44838d3 --- /dev/null +++ b/contrib/odt/BasicODConverter/Main.bas @@ -0,0 +1,201 @@ +REM ***** BASIC ***** + +Dim Interactive As Boolean +Dim WaitFor + +Function Convert(Optional inFileURL, Optional filterSpec, Optional outFileURL) + Dim inDoc, inDocType, openParams, closeInDoc, presentationDoc + + ' Set Interactivity i.e., LogMessage pops up a message. + Interactive = False + + WaitFor = 10 + + ' Init dependencies + BasicLibraries.LoadLibrary("Tools") + ' BasicLibraries.LoadLibrary("XrayTool") + + ' Setup Export filters + InitExportFilters + + ' Export to doc format by default + If IsMissing(filterSpec) Then + If Interactive Then + filterSpec = InputBox("Export to: ") + Else + filterSpec = "doc" + End If + End If + filterSpec = Trim(filterSpec) + + closeInDoc = False + If IsMissing(inFileURL) Then + ' Most likely, the Macro is run interactively. Act on + ' the current document + If Not ThisComponent.HasLocation() Then + LogMessage("Document doesn't have a location") + Goto Failure + End If + + inDoc = ThisComponent + inFileURL = inDoc.GetLocation() + closeInDoc = False + + Else + ' Load the document + On Error Goto Failure + openParams = Array(MakePropertyValue("Hidden", True),MakePropertyValue("ReadOnly", True),) + + 'openParams = Array() + inDoc = StarDesktop.loadComponentFromURL(inFileURL, "_blank", 0, OpenParams()) + closeInDoc = True + End If + + If IsMissing(outFileURL) Then + outFileURL = GetURLWithoutExtension(inFileURL) + End If + + If ExportDocument(inDoc, filterSpec, outFileURL) Then + Goto Success + End If + + LogMessage("filterSpec1 is " & filterSpec) + + ' Export didn't go through. Maybe didn't find a valid filter. + + ' Check whether the request is to convert a Text or a Web + ' Document to a Presentation Document + + inDocType = GetDocumentType(inDoc) + If (inDocType = "com.sun.star.text.TextDocument" Or _ + inDocType = "com.sun.star.text.WebDocument") Then + LogMessage("Filterspec2 is " & filterSpec) + filter = GetFilter("com.sun.star.presentation.PresentationDocument", filterSpec) + If IsNull(filter) Then + LogMessage("We tried our best. Nothing more to do" + Goto Failure + Else + LogMessage("Trying to create presentation document. Found valid filter for " & filterSpec) + End If + Else + Goto Failure + End If + + ' Export Outline to Presentation + dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") + dispatcher.executeDispatch(inDoc.CurrentController.Frame, ".uno:SendOutlineToStarImpress", "", 0, Array()) + + ' Dispatch event above is aynchronous. Wait for a few seconds for the above event to finish + Wait(WaitFor * 1000) + + ' After the dispatch, the current component is a presentation + ' document. Note that it doesn't have a location + + presentationDoc = ThisComponent + If IsNull(ExportDocument(presentationDoc, filter, outFileURL)) Then + Goto Failure + Else + presentationDoc.Close(True) + End If + +Success: + LogMessage("Successfully exported to " & outFileURL ) + Goto Done + +Failure: + LogMessage("Export failed " & outFileURL ) + Goto Done + +Done: + If closeInDoc Then + inDoc.Close(True) + End If +End Function + +' http://codesnippets.services.openoffice.org/Writer/Writer.MergeDocs.snip +' http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=39983 +' http://user.services.openoffice.org/en/forum/viewtopic.php?f=21&t=23531 + +' http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/Files_and_Directories_%28Runtime_Library%29 + + +Function ExportDocument(inputDoc, filterSpec, outFileURL) As Boolean + Dim inputDocType, filter + ExportDocument = False + + On Error Goto Failure + inputDocType = GetDocumentType(inputDoc) + + If IsArray(filterSpec) Then + ' Filter is fully specified + filter = filterSpec + Else + ' Filter is specified by it's name + filter = GetFilter(inputDocType, filterSpec) + End If + + If InStr(outFileURL, ".") = 0 Then + outFileURL = outFileURL & "." & FilterSaveExtension(filter) + End If + + LogMessage("outFileURL is " & outFileURL) + + inputDoc.storeToUrl(outFileURL, Array(MakePropertyValue("FilterName", FilterHandler(filter)))) + + ExportDocument = True + LogMessage("Export to " & outFileURL & " succeeded") +Done: + Exit Function + +Failure: + LogMessage("Export to " & outFileURL & " failed") + Resume Done +End Function + + +Function GetURLWithoutExtension(s As String) + Dim pos + pos = Instr(s, ".") + If pos = 0 Then + GetURLWithoutExtension = s + Else + GetURLWithoutExtension = Left(s, pos - 1) + End If +End Function + +Function GetDocumentType(oDoc) + For Each docType in DocTypes + If (oDoc.supportsService(docType)) Then + GetDocumentType = docType + Exit Function + End If + Next docType + GetDocumentType = Nothing +End Function + +Function MakePropertyValue(Optional sName As String, Optional sValue) As com.sun.star.beans.PropertyValue + Dim oPropertyValue As New com.sun.star.beans.PropertyValue + + If Not IsMissing(sName) Then + oPropertyValue.Name = sName + EndIf + + If Not IsMissing(sValue) Then + oPropertyValue.Value = sValue + EndIf + + MakePropertyValue() = oPropertyValue + +End Function + + +Sub LogMessage(message) + If Interactive Then + If Err <> 0 Then + Print "Error " & Err & ": " & Error$ & " (line : " & Erl & ")" + End If + Print message + End If +End Sub + + diff --git a/contrib/odt/OASIS/OpenDocument-schema-v1.1.rng b/contrib/odt/OASIS/OpenDocument-schema-v1.1.rng new file mode 100644 index 0000000..3ba6a68 --- /dev/null +++ b/contrib/odt/OASIS/OpenDocument-schema-v1.1.rng @@ -0,0 +1,17891 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + OASIS OpenDocument v1.1 + OASIS Standard, 1 Feb 2007 + Relax-NG Schema + + $Id$ + + © 2002-2007 OASIS Open + © 1999-2007 Sun Microsystems, Inc. +--> + +<grammar + xmlns="http://relaxng.org/ns/structure/1.0" + xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" + + datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" + + xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" + xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" + xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" + xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" + xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" + xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" + xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" + xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" + xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" + xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" + xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" + xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" + xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" + xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" + + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:math="http://www.w3.org/1998/Math/MathML" + xmlns:xforms="http://www.w3.org/2002/xforms" + + xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" + xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" + xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" +> +<define name="office-process-content"> + <optional> + <attribute name="office:process-content" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<start> + <choice> + <ref name="office-document"/> + <ref name="office-document-content"/> + <ref name="office-document-styles"/> + <ref name="office-document-meta"/> + <ref name="office-document-settings"/> + </choice> +</start> +<define name="office-document"> + <element name="office:document"> + <ref name="office-document-attrs"/> + <ref name="office-document-common-attrs"/> + <ref name="office-meta"/> + <ref name="office-settings"/> + <ref name="office-scripts"/> + <ref name="office-font-face-decls"/> + <ref name="office-styles"/> + <ref name="office-automatic-styles"/> + <ref name="office-master-styles"/> + <ref name="office-body"/> + </element> +</define> +<define name="office-document-content"> + <element name="office:document-content"> + <ref name="office-document-common-attrs"/> + <ref name="office-scripts"/> + <ref name="office-font-face-decls"/> + <ref name="office-automatic-styles"/> + <ref name="office-body"/> + </element> +</define> +<define name="office-document-styles"> + <element name="office:document-styles"> + <ref name="office-document-common-attrs"/> + <ref name="office-font-face-decls"/> + <ref name="office-styles"/> + <ref name="office-automatic-styles"/> + <ref name="office-master-styles"/> + </element> +</define> +<define name="office-document-meta"> + <element name="office:document-meta"> + <ref name="office-document-common-attrs"/> + <ref name="office-meta"/> + </element> +</define> +<define name="office-document-settings"> + <element name="office:document-settings"> + <ref name="office-document-common-attrs"/> + <ref name="office-settings"/> + </element> +</define> +<define name="office-document-common-attrs" combine="interleave"> + <optional> + <attribute name="office:version"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="office-document-attrs" combine="interleave"> + <attribute name="office:mimetype"> + <ref name="string"/> + </attribute> +</define> +<define name="office-meta"> + <optional> + <element name="office:meta"> + <ref name="office-meta-content"/> + </element> + </optional> +</define> + +<define name="office-meta-content"> + <ref name="anyElements"/> +</define> + +<define name="office-meta-content-strict"> + <zeroOrMore> + <ref name="office-meta-data"/> + </zeroOrMore> +</define> +<define name="office-body"> + <element name="office:body"> + <ref name="office-body-content"/> + </element> +</define> +<define name="office-body-content" combine="choice"> + <element name="office:text"> + <ref name="office-text-attlist"/> + <ref name="office-text-content-prelude"/> + <zeroOrMore> + <ref name="office-text-content-main"/> + </zeroOrMore> + <ref name="office-text-content-epilogue"/> + </element> +</define> +<define name="office-text-content-prelude"> + <ref name="office-forms"/> + <ref name="text-tracked-changes"/> + <ref name="text-decls"/> + <ref name="table-decls"/> +</define> +<define name="office-text-content-main"> + <choice> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + <group> + <ref name="text-page-sequence"/> + <zeroOrMore> + <choice> + <ref name="draw-a"/> + <ref name="shape"/> + </choice> + </zeroOrMore> + </group> + </choice> +</define> + +<define name="text-content"> + <choice> + <ref name="text-h"/> + <ref name="text-p"/> + <ref name="text-list"/> + <ref name="text-numbered-paragraph"/> + <ref name="table-table"/> + <ref name="draw-a"/> + <ref name="text-section"/> + <ref name="text-soft-page-break"/> + <ref name="text-table-of-content"/> + <ref name="text-illustration-index"/> + <ref name="text-table-index"/> + <ref name="text-object-index"/> + <ref name="text-user-index"/> + <ref name="text-alphabetical-index"/> + <ref name="text-bibliography"/> + <ref name="shape"/> + <ref name="change-marks"/> + </choice> +</define> +<define name="office-text-content-epilogue"> + <ref name="table-functions"/> +</define> +<define name="office-text-attlist" combine="interleave"> + <optional> + <attribute name="text:global" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="office-text-attlist" combine="interleave"> + <optional> + <attribute name="text:use-soft-page-breaks" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="office-body-content" combine="choice"> + <element name="office:drawing"> + <ref name="office-drawing-attlist"/> + <ref name="office-drawing-content-prelude"/> + <ref name="office-drawing-content-main"/> + <ref name="office-drawing-content-epilogue"/> + </element> +</define> + +<define name="office-drawing-attlist"> + <empty/> +</define> +<define name="office-drawing-content-prelude"> + <ref name="text-decls"/> + <ref name="table-decls"/> +</define> +<define name="office-drawing-content-main"> + <zeroOrMore> + <ref name="draw-page"/> + </zeroOrMore> +</define> +<define name="office-drawing-content-epilogue"> + <ref name="table-functions"/> +</define> +<define name="office-body-content" combine="choice"> + <element name="office:presentation"> + <ref name="office-presentation-attlist"/> + <ref name="office-presentation-content-prelude"/> + <ref name="office-presentation-content-main"/> + <ref name="office-presentation-content-epilogue"/> + </element> +</define> + +<define name="office-presentation-attlist"> + <empty/> +</define> +<define name="office-presentation-content-prelude"> + <ref name="text-decls"/> + <ref name="table-decls"/> + <ref name="presentation-decls"/> +</define> +<define name="office-presentation-content-main"> + <zeroOrMore> + <ref name="draw-page"/> + </zeroOrMore> +</define> +<define name="office-presentation-content-epilogue"> + <ref name="presentation-settings"/> + <ref name="table-functions"/> +</define> +<define name="office-body-content" combine="choice"> + <element name="office:spreadsheet"> + <ref name="office-spreadsheet-attlist"/> + <ref name="office-spreadsheet-content-prelude"/> + <ref name="office-spreadsheet-content-main"/> + <ref name="office-spreadsheet-content-epilogue"/> + </element> +</define> +<define name="office-spreadsheet-content-prelude"> + <optional> + <ref name="table-tracked-changes"/> + </optional> + <ref name="text-decls"/> + <ref name="table-decls"/> +</define> + +<define name="table-decls"> + <optional> + <ref name="table-calculation-settings"/> + </optional> + <optional> + <ref name="table-content-validations"/> + </optional> + <optional> + <ref name="table-label-ranges"/> + </optional> +</define> +<define name="office-spreadsheet-content-main"> + <zeroOrMore> + <ref name="table-table"/> + </zeroOrMore> +</define> +<define name="office-spreadsheet-content-epilogue"> + <ref name="table-functions"/> +</define> + +<define name="table-functions"> + <optional> + <ref name="table-named-expressions"/> + </optional> + <optional> + <ref name="table-database-ranges"/> + </optional> + <optional> + <ref name="table-data-pilot-tables"/> + </optional> + <optional> + <ref name="table-consolidation"/> + </optional> + <optional> + <ref name="table-dde-links"/> + </optional> +</define> +<define name="office-body-content" combine="choice"> + <element name="office:chart"> + <ref name="office-chart-attlist"/> + <ref name="office-chart-content-prelude"/> + <ref name="office-chart-content-main"/> + <ref name="office-chart-content-epilogue"/> + </element> +</define> + +<define name="office-chart-attlist"> + <empty/> +</define> +<define name="office-chart-content-prelude"> + <ref name="text-decls"/> + <ref name="table-decls"/> +</define> +<define name="office-chart-content-main"> + <ref name="chart-chart"/> +</define> +<define name="office-chart-content-epilogue"> + <ref name="table-functions"/> +</define> +<define name="office-body-content" combine="choice"> + <element name="office:image"> + <ref name="office-image-attlist"/> + <ref name="office-image-content-prelude"/> + <ref name="office-image-content-main"/> + <ref name="office-image-content-epilogue"/> + </element> +</define> + +<define name="office-image-attlist"> + <empty/> +</define> +<define name="office-image-content-prelude"> + <empty/> +</define> +<define name="office-image-content-main"> + <ref name="draw-frame"/> +</define> +<define name="office-image-content-epilogue"> + <empty/> +</define> +<define name="office-settings"> + <optional> + <element name="office:settings"> + <oneOrMore> + <ref name="config-config-item-set"/> + </oneOrMore> + </element> + </optional> +</define> +<define name="config-config-item-set"> + <element name="config:config-item-set"> + <ref name="config-config-item-set-attlist"/> + <ref name="config-items"/> + </element> +</define> + +<define name="config-items"> + <oneOrMore> + <choice> + <ref name="config-config-item"/> + <ref name="config-config-item-set"/> + <ref name="config-config-item-map-named"/> + <ref name="config-config-item-map-indexed"/> + </choice> + </oneOrMore> +</define> +<define name="config-config-item-set-attlist" combine="interleave"> + <attribute name="config:name"> + <ref name="string"/> + </attribute> +</define> +<define name="config-config-item"> + <element name="config:config-item"> + <ref name="config-config-item-attlist"/> + <text/> + </element> +</define> +<define name="config-config-item-attlist" combine="interleave"> + <attribute name="config:name"> + <ref name="string"/> + </attribute> +</define> +<define name="config-config-item-attlist" combine="interleave"> + <attribute name="config:type"> + <choice> + <value>boolean</value> + <value>short</value> + <value>int</value> + <value>long</value> + <value>double</value> + <value>string</value> + <value>datetime</value> + <value>base64Binary</value> + </choice> + </attribute> +</define> +<define name="config-config-item-map-indexed"> + <element name="config:config-item-map-indexed"> + <ref name="config-config-item-map-indexed-attlist"/> + <oneOrMore> + <ref name="config-config-item-map-entry"/> + </oneOrMore> + </element> +</define> +<define name="config-config-item-map-indexed-attlist" combine="interleave"> + <attribute name="config:name"> + <ref name="string"/> + </attribute> +</define> +<define name="config-config-item-map-entry"> + <element name="config:config-item-map-entry"> + <ref name="config-config-item-map-entry-attlist"/> + <ref name="config-items"/> + </element> +</define> +<define name="config-config-item-map-entry-attlist" combine="interleave"> + <optional> + <attribute name="config:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="config-config-item-map-named"> + <element name="config:config-item-map-named"> + <ref name="config-config-item-map-named-attlist"/> + <oneOrMore> + <ref name="config-config-item-map-entry"/> + </oneOrMore> + </element> +</define> +<define name="config-config-item-map-named-attlist" combine="interleave"> + <attribute name="config:name"> + <ref name="string"/> + </attribute> +</define> +<define name="office-scripts"> + <optional> + <element name="office:scripts"> + <zeroOrMore> + <ref name="office-script"/> + </zeroOrMore> + <optional> + <ref name="office-event-listeners"/> + </optional> + </element> + </optional> +</define> +<define name="office-script"> + <element name="office:script"> + <ref name="office-script-attlist"/> + <mixed> + <ref name="anyElements"/> + </mixed> + </element> +</define> +<define name="office-script-attlist"> + <attribute name="script:language"> + <ref name="string"/> + </attribute> +</define> +<define name="office-font-face-decls"> + <optional> + <element name="office:font-face-decls"> + <zeroOrMore> + <ref name="style-font-face"/> + </zeroOrMore> + </element> + </optional> +</define> +<define name="office-styles"> + <optional> + <element name="office:styles"> + <interleave> + <ref name="styles"/> + <zeroOrMore> + <ref name="style-default-style"/> + </zeroOrMore> + <optional> + <ref name="text-outline-style"/> + </optional> + <zeroOrMore> + <ref name="text-notes-configuration"/> + </zeroOrMore> + <optional> + <ref name="text-bibliography-configuration"/> + </optional> + <optional> + <ref name="text-linenumbering-configuration"/> + </optional> + <zeroOrMore> + <ref name="draw-gradient"/> + </zeroOrMore> + <zeroOrMore> + <ref name="svg-linearGradient"/> + </zeroOrMore> + <zeroOrMore> + <ref name="svg-radialGradient"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-hatch"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-fill-image"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-marker"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-stroke-dash"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-opacity"/> + </zeroOrMore> + <zeroOrMore> + <ref name="style-presentation-page-layout"/> + </zeroOrMore> + </interleave> + </element> + </optional> +</define> +<define name="office-automatic-styles"> + <optional> + <element name="office:automatic-styles"> + <interleave> + <ref name="styles"/> + <zeroOrMore> + <ref name="style-page-layout"/> + </zeroOrMore> + </interleave> + </element> + </optional> +</define> +<define name="office-master-styles"> + <optional> + <element name="office:master-styles"> + <interleave> + <zeroOrMore> + <ref name="style-master-page"/> + </zeroOrMore> + <optional> + <ref name="style-handout-master"/> + </optional> + <optional> + <ref name="draw-layer-set"/> + </optional> + </interleave> + </element> + </optional> +</define> + +<define name="styles"> + <interleave> + <zeroOrMore> + <ref name="style-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="text-list-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-number-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-currency-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-percentage-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-date-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-time-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-boolean-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-text-style"/> + </zeroOrMore> + </interleave> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:generator"> + <ref name="string"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="dc:title"> + <ref name="string"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="dc:description"> + <ref name="string"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="dc:subject"> + <ref name="string"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:keyword"> + <ref name="string"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:initial-creator"> + <ref name="string"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <ref name="dc-creator"/> +</define> +<define name="dc-creator"> + <element name="dc:creator"> + <ref name="string"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:printed-by"> + <ref name="string"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:creation-date"> + <ref name="dateTime"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <ref name="dc-date"/> +</define> +<define name="dc-date"> + <element name="dc:date"> + <ref name="dateTime"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:print-date"> + <ref name="dateTime"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:template"> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onRequest"> + <value>onRequest</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:title"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="meta:date"> + <ref name="dateTime"/> + </attribute> + </optional> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:auto-reload"> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:show" a:defaultValue="replace"> + <value>replace</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onLoad"> + <value>onLoad</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + </optional> + <optional> + <attribute name="meta:delay"> + <ref name="duration"/> + </attribute> + </optional> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:hyperlink-behaviour"> + <optional> + <attribute name="office:target-frame-name"> + <ref name="targetFrameName"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="dc:language"> + <ref name="language"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:editing-cycles"> + <ref name="nonNegativeInteger"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:editing-duration"> + <ref name="duration"/> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:document-statistic"> + <optional> + <attribute name="meta:page-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:table-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:draw-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:image-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:ole-object-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:object-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:paragraph-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:word-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:character-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="frame-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="sentence-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="syllable-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="non-whitespace-character-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:row-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:cell-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </element> +</define> +<define name="office-meta-data" combine="choice"> + <element name="meta:user-defined"> + <attribute name="meta:name"> + <ref name="string"/> + </attribute> + <choice> + <group> + <attribute name="meta:value-type"> + <value>float</value> + </attribute> + <ref name="double"/> + </group> + <group> + <attribute name="meta:value-type"> + <value>date</value> + </attribute> + <ref name="dateOrDateTime"/> + </group> + <group> + <attribute name="meta:value-type"> + <value>time</value> + </attribute> + <ref name="duration"/> + </group> + <group> + <attribute name="meta:value-type"> + <value>boolean</value> + </attribute> + <ref name="boolean"/> + </group> + <group> + <attribute name="meta:value-type"> + <value>string</value> + </attribute> + <ref name="string"/> + </group> + <text/> + </choice> + </element> +</define> +<define name="text-h"> + <element name="text:h"> + <ref name="heading-attrs"/> + <ref name="paragraph-attrs"/> + <optional> + <ref name="text-number"/> + </optional> + <zeroOrMore> + <ref name="paragraph-content"/> + </zeroOrMore> + </element> +</define> +<define name="heading-attrs" combine="interleave"> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> +</define> +<define name="heading-attrs" combine="interleave"> + <optional> + <attribute name="text:restart-numbering" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="heading-attrs" combine="interleave"> + <optional> + <attribute name="text:start-value"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="heading-attrs" combine="interleave"> + <optional> + <attribute name="text:is-list-header" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-number"> + <element name="text:number"> + <ref name="string"/> + </element> +</define> +<define name="text-p"> + <element name="text:p"> + <ref name="paragraph-attrs"/> + <zeroOrMore> + <ref name="paragraph-content"/> + </zeroOrMore> + </element> +</define> +<define name="paragraph-attrs"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:class-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> + <optional> + <attribute name="text:cond-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="paragraph-attrs" combine="interleave"> + <optional> + <ref name="text-id"/> + </optional> +</define> +<define name="text-page-sequence"> + <element name="text:page-sequence"> + <oneOrMore> + <ref name="text-page"/> + </oneOrMore> + </element> +</define> +<define name="text-page"> + <element name="text:page"> + <ref name="text-page-attlist"/> + <empty/> + </element> +</define> +<define name="text-page-attlist"> + <attribute name="text:master-page-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="text-list"> + <element name="text:list"> + <ref name="text-list-attr"/> + <optional> + <ref name="text-list-header"/> + </optional> + <zeroOrMore> + <ref name="text-list-item"/> + </zeroOrMore> + </element> +</define> +<define name="text-list-attr" combine="interleave"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-list-attr" combine="interleave"> + <optional> + <attribute name="text:continue-numbering"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-list-item"> + <element name="text:list-item"> + <ref name="text-list-item-attr"/> + <ref name="text-list-item-content"/> + </element> +</define> +<define name="text-list-item-content"> + <optional> + <ref name="text-number"/> + </optional> + <zeroOrMore> + <choice> + <ref name="text-p"/> + <ref name="text-h"/> + <ref name="text-list"/> + <ref name="text-soft-page-break"/> + </choice> + </zeroOrMore> +</define> +<define name="text-list-item-attr" combine="interleave"> + <optional> + <attribute name="text:start-value"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="text-list-header"> + <element name="text:list-header"> + <ref name="text-list-item-content"/> + </element> +</define> +<define name="text-numbered-paragraph"> + <element name="text:numbered-paragraph"> + <ref name="text-numbered-paragraph-attr"/> + <optional> + <ref name="text-number"/> + </optional> + <choice> + <ref name="text-p"/> + <ref name="text-h"/> + </choice> + </element> +</define> +<define name="text-numbered-paragraph-attr" combine="interleave"> + <optional> + <attribute name="text:level" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="text-numbered-paragraph-attr" combine="interleave"> + <ref name="text-list-attr"/> +</define> +<define name="text-numbered-paragraph-attr" combine="interleave"> + <ref name="text-list-item-attr"/> +</define> +<define name="text-section"> + <element name="text:section"> + <ref name="text-section-attr"/> + <choice> + <ref name="text-section-source"/> + <ref name="text-section-source-dde"/> + <empty/> + </choice> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + </element> +</define> +<define name="text-section-attr" combine="interleave"> + <ref name="sectionAttr"/> +</define> +<define name="sectionAttr" combine="interleave"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="sectionAttr" combine="interleave"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> +</define> +<define name="sectionAttr" combine="interleave"> + <optional> + <attribute name="text:protected"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="sectionAttr" combine="interleave"> + <optional> + <attribute name="text:protection-key"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-section-attr" combine="interleave"> + <choice> + <attribute name="text:display"> + <choice> + <value>true</value> + <value>none</value> + </choice> + </attribute> + <group> + <attribute name="text:display"> + <value>condition</value> + </attribute> + <attribute name="text:condition"> + <ref name="string"/> + </attribute> + </group> + <empty/> + </choice> +</define> +<define name="text-section-source"> + <element name="text:section-source"> + <ref name="text-section-source-attr"/> + </element> +</define> +<define name="text-section-source-attr" combine="interleave"> + <optional> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:show" a:defaultValue="embed"> + <value>embed</value> + </attribute> + </optional> + </optional> +</define> +<define name="text-section-source-attr" combine="interleave"> + <optional> + <attribute name="text:section-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-section-source-attr" combine="interleave"> + <optional> + <attribute name="text:filter-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-section-source-dde"> + <ref name="office-dde-source"/> +</define> +<define name="text-tracked-changes"> + <optional> + <element name="text:tracked-changes"> + <ref name="text-tracked-changes-attr"/> + <zeroOrMore> + <ref name="text-changed-region"/> + </zeroOrMore> + </element> + </optional> +</define> +<define name="text-tracked-changes-attr" combine="interleave"> + <optional> + <attribute name="text:track-changes" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-changed-region"> + <element name="text:changed-region"> + <ref name="text-changed-region-attr"/> + <ref name="text-changed-region-content"/> + </element> +</define> +<define name="text-changed-region-attr" combine="interleave"> + <attribute name="text:id"> + <ref name="ID"/> + </attribute> +</define> +<define name="text-changed-region-content" combine="choice"> + <element name="text:insertion"> + <ref name="office-change-info"/> + </element> +</define> +<define name="text-changed-region-content" combine="choice"> + <element name="text:deletion"> + <ref name="office-change-info"/> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + </element> +</define> +<define name="text-changed-region-content" combine="choice"> + <element name="text:format-change"> + <ref name="office-change-info"/> + </element> +</define> +<define name="change-marks"> + <choice> + <element name="text:change"> + <ref name="change-mark-attr"/> + </element> + <element name="text:change-start"> + <ref name="change-mark-attr"/> + </element> + <element name="text:change-end"> + <ref name="change-mark-attr"/> + </element> + </choice> +</define> +<define name="change-mark-attr"> + <attribute name="text:change-id"> + <ref name="IDREF"/> + </attribute> +</define> +<define name="text-soft-page-break"> + <element name="text:soft-page-break"> + <empty/> + </element> +</define> +<define name="text-decls"> + <optional> + <element name="text:variable-decls"> + <zeroOrMore> + <ref name="text-variable-decl"/> + </zeroOrMore> + </element> + </optional> + <optional> + <element name="text:sequence-decls"> + <zeroOrMore> + <ref name="text-sequence-decl"/> + </zeroOrMore> + </element> + </optional> + <optional> + <element name="text:user-field-decls"> + <zeroOrMore> + <ref name="text-user-field-decl"/> + </zeroOrMore> + </element> + </optional> + <optional> + <element name="text:dde-connection-decls"> + <zeroOrMore> + <ref name="text-dde-connection-decl"/> + </zeroOrMore> + </element> + </optional> + <optional> + <ref name="text-alphabetical-index-auto-mark-file"/> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <text/> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:s"> + <optional> + <attribute name="text:c"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:tab"> + <ref name="text-tab-attr"/> + </element> +</define> +<define name="text-tab-attr"> + <optional> + <attribute name="text:tab-ref"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:line-break"> + <empty/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <ref name="text-soft-page-break"/> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:span"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:class-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> + <zeroOrMore> + <ref name="paragraph-content"/> + </zeroOrMore> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:a"> + <ref name="text-a-attlist"/> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="paragraph-content"/> + </zeroOrMore> + </element> +</define> +<define name="text-a-attlist" combine="interleave"> + <optional> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-a-attlist" combine="interleave"> + <optional> + <attribute name="office:title"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-a-attlist" combine="interleave"> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onRequest"> + <value>onRequest</value> + </attribute> + </optional> +</define> +<define name="text-a-attlist" combine="interleave"> + <optional> + <attribute name="office:target-frame-name"> + <ref name="targetFrameName"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-a-attlist" combine="interleave"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:visited-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <choice> + <element name="text:bookmark"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </element> + <element name="text:bookmark-start"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </element> + <element name="text:bookmark-end"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </element> + </choice> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:reference-mark"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <choice> + <element name="text:reference-mark-start"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </element> + <element name="text:reference-mark-end"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </element> + </choice> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:note"> + <ref name="text-note-class"/> + <optional> + <attribute name="text:id"> + <ref name="string"/> + </attribute> + </optional> + <element name="text:note-citation"> + <optional> + <attribute name="text:label"> + <ref name="string"/> + </attribute> + </optional> + <text/> + </element> + <element name="text:note-body"> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + </element> + </element> +</define> +<define name="text-note-class"> + <attribute name="text:note-class"> + <choice> + <value>footnote</value> + <value>endnote</value> + </choice> + </attribute> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:ruby"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <element name="text:ruby-base"> + <ref name="paragraph-content"/> + </element> + <element name="text:ruby-text"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <text/> + </element> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <ref name="office-annotation"/> +</define> +<define name="paragraph-content" combine="choice"> + <ref name="change-marks"/> +</define> +<define name="paragraph-content" combine="choice"> + <choice> + <ref name="shape"/> + <ref name="draw-a"/> + </choice> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:date"> + <ref name="text-date-attlist"/> + <text/> + </element> +</define> +<define name="text-date-attlist" combine="interleave"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> +</define> +<define name="text-date-attlist" combine="interleave"> + <optional> + <attribute name="text:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </optional> +</define> +<define name="text-date-attlist" combine="interleave"> + <optional> + <attribute name="text:date-adjust"> + <ref name="duration"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:time"> + <ref name="text-time-attlist"/> + <text/> + </element> +</define> +<define name="text-time-attlist" combine="interleave"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> +</define> +<define name="text-time-attlist" combine="interleave"> + <optional> + <attribute name="text:time-value"> + <ref name="timeOrDateTime"/> + </attribute> + </optional> +</define> +<define name="text-time-attlist" combine="interleave"> + <optional> + <attribute name="text:time-adjust"> + <ref name="duration"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:page-number"> + <ref name="text-page-number-attlist"/> + <text/> + </element> +</define> +<define name="text-page-number-attlist" combine="interleave"> + <interleave> + <ref name="common-field-num-format-attlist"/> + <ref name="common-field-fixed-attlist"/> + </interleave> +</define> +<define name="text-page-number-attlist" combine="interleave"> + <optional> + <attribute name="text:page-adjust"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="text-page-number-attlist" combine="interleave"> + <optional> + <attribute name="text:select-page"> + <choice> + <value>previous</value> + <value>current</value> + <value>next</value> + </choice> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:page-continuation"> + <ref name="text-page-continuation-attlist"/> + <text/> + </element> +</define> +<define name="text-page-continuation-attlist" combine="interleave"> + <attribute name="text:select-page"> + <choice> + <value>previous</value> + <value>next</value> + </choice> + </attribute> +</define> +<define name="text-page-continuation-attlist" combine="interleave"> + <optional> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-firstname"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-lastname"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-initials"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-title"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-position"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-email"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-phone-private"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-fax"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-company"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-phone-work"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-street"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-city"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-postal-code"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-country"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sender-state-or-province"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:author-name"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:author-initials"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:chapter"> + <ref name="text-chapter-attlist"/> + <text/> + </element> +</define> +<define name="text-chapter-attlist" combine="interleave"> + <attribute name="text:display"> + <choice> + <value>name</value> + <value>number</value> + <value>number-and-name</value> + <value>plain-number-and-name</value> + <value>plain-number</value> + </choice> + </attribute> +</define> +<define name="text-chapter-attlist" combine="interleave"> + <attribute name="text:outline-level"> + <ref name="nonNegativeInteger"/> + </attribute> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:file-name"> + <ref name="text-file-name-attlist"/> + <text/> + </element> +</define> +<define name="text-file-name-attlist" combine="interleave"> + <optional> + <attribute name="text:display"> + <choice> + <value>full</value> + <value>path</value> + <value>name</value> + <value>name-and-extension</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-file-name-attlist" combine="interleave"> + <ref name="common-field-fixed-attlist"/> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:template-name"> + <ref name="text-template-name-attlist"/> + <text/> + </element> +</define> +<define name="text-template-name-attlist"> + <optional> + <attribute name="text:display"> + <choice> + <value>full</value> + <value>path</value> + <value>name</value> + <value>name-and-extension</value> + <value>area</value> + <value>title</value> + </choice> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sheet-name"> + <text/> + </element> +</define> +<define name="text-variable-decl"> + <element name="text:variable-decl"> + <ref name="common-field-name-attlist"/> + <ref name="common-value-type-attlist"/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:variable-set"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-formula-attlist"/> + <ref name="common-value-and-type-attlist"/> + <ref name="common-field-display-value-none-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:variable-get"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-display-value-formula-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:variable-input"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-description-attlist"/> + <ref name="common-value-type-attlist"/> + <ref name="common-field-display-value-none-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> +</define> +<define name="text-user-field-decl"> + <element name="text:user-field-decl"> + <ref name="common-field-name-attlist"/> + <optional> + <ref name="common-field-formula-attlist"/> + </optional> + <ref name="common-value-and-type-attlist"/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:user-field-get"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-display-value-formula-none-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:user-field-input"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-description-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> +</define> +<define name="text-sequence-decl"> + <element name="text:sequence-decl"> + <ref name="text-sequence-decl-attlist"/> + </element> +</define> +<define name="text-sequence-decl-attlist" combine="interleave"> + <ref name="common-field-name-attlist"/> +</define> +<define name="text-sequence-decl-attlist" combine="interleave"> + <attribute name="text:display-outline-level"> + <ref name="nonNegativeInteger"/> + </attribute> +</define> +<define name="text-sequence-decl-attlist" combine="interleave"> + <optional> + <attribute name="text:separation-character"> + <ref name="character"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sequence"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-formula-attlist"/> + <ref name="common-field-num-format-attlist"/> + <ref name="text-sequence-ref-name"/> + </interleave> + <text/> + </element> +</define> +<define name="text-sequence-ref-name"> + <optional> + <attribute name="text:ref-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:expression"> + <interleave> + <ref name="common-field-formula-attlist"/> + <optional> + <ref name="common-value-and-type-attlist"/> + </optional> + <ref name="common-field-display-value-formula-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:text-input"> + <ref name="common-field-description-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:initial-creator"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:creation-date"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </optional> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:creation-time"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:time-value"> + <ref name="timeOrDateTime"/> + </attribute> + </optional> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:description"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:user-defined"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="office:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </optional> + <optional> + <attribute name="office:time-value"> + <ref name="duration"/> + </attribute> + </optional> + <optional> + <attribute name="office:boolean-value"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="office:string-value"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:print-time"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:time-value"> + <ref name="time"/> + </attribute> + </optional> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:print-date"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:date-value"> + <ref name="date"/> + </attribute> + </optional> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:printed-by"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:title"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:subject"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:keywords"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:editing-cycles"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:editing-duration"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:duration"> + <ref name="duration"/> + </attribute> + </optional> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:modification-time"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:time-value"> + <ref name="time"/> + </attribute> + </optional> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:modification-date"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:date-value"> + <ref name="date"/> + </attribute> + </optional> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:creator"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element> + <choice> + <name>text:page-count</name> + <name>text:paragraph-count</name> + <name>text:word-count</name> + <name>text:character-count</name> + <name>text:table-count</name> + <name>text:image-count</name> + <name>text:object-count</name> + </choice> + <ref name="common-field-num-format-attlist"/> + <text/> + </element> +</define> +<define name="common-field-database-table"> + <ref name="common-field-database-table-attlist"/> + <ref name="common-field-database-name"/> +</define> +<define name="common-field-database-name" combine="choice"> + <optional> + <attribute name="text:database-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-field-database-name" combine="choice"> + <ref name="form-connection-resource"/> +</define> +<define name="common-field-database-table-attlist" combine="interleave"> + <attribute name="text:table-name"> + <ref name="string"/> + </attribute> +</define> +<define name="common-field-database-table-attlist" combine="interleave"> + <optional> + <attribute name="text:table-type"> + <choice> + <value>table</value> + <value>query</value> + <value>command</value> + </choice> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:database-display"> + <ref name="text-database-display-attlist"/> + <text/> + </element> +</define> +<define name="text-database-display-attlist" combine="interleave"> + <ref name="common-field-database-table"/> +</define> +<define name="text-database-display-attlist" combine="interleave"> + <ref name="common-field-data-style-name-attlist"/> +</define> +<define name="text-database-display-attlist" combine="interleave"> + <attribute name="text:column-name"> + <ref name="string"/> + </attribute> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:database-next"> + <ref name="text-database-next-attlist"/> + </element> +</define> +<define name="text-database-next-attlist" combine="interleave"> + <ref name="common-field-database-table"/> +</define> +<define name="text-database-next-attlist" combine="interleave"> + <optional> + <attribute name="text:condition"> + <ref name="formula"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:database-row-select"> + <ref name="text-database-row-select-attlist"/> + </element> +</define> +<define name="text-database-row-select-attlist" combine="interleave"> + <ref name="common-field-database-table"/> +</define> +<define name="text-database-row-select-attlist" combine="interleave"> + <optional> + <attribute name="text:condition"> + <ref name="formula"/> + </attribute> + </optional> +</define> +<define name="text-database-row-select-attlist" combine="interleave"> + <optional> + <attribute name="text:row-number"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:database-row-number"> + <interleave> + <ref name="common-field-database-table"/> + <ref name="common-field-num-format-attlist"/> + <optional> + <attribute name="text:value"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </interleave> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:database-name"> + <ref name="common-field-database-table"/> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:page-variable-set"> + <ref name="text-set-page-variable-attlist"/> + <text/> + </element> +</define> +<define name="text-set-page-variable-attlist" combine="interleave"> + <optional> + <attribute name="text:active"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-set-page-variable-attlist" combine="interleave"> + <optional> + <attribute name="text:page-adjust"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:page-variable-get"> + <ref name="text-get-page-variable-attlist"/> + <text/> + </element> +</define> +<define name="text-get-page-variable-attlist" combine="interleave"> + <ref name="common-field-num-format-attlist"/> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:placeholder"> + <ref name="text-placeholder-attlist"/> + <text/> + </element> +</define> +<define name="text-placeholder-attlist" combine="interleave"> + <attribute name="text:placeholder-type"> + <choice> + <value>text</value> + <value>table</value> + <value>text-box</value> + <value>image</value> + <value>object</value> + </choice> + </attribute> +</define> +<define name="text-placeholder-attlist" combine="interleave"> + <ref name="common-field-description-attlist"/> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:conditional-text"> + <ref name="text-conditional-text-attlist"/> + <text/> + </element> +</define> +<define name="text-conditional-text-attlist" combine="interleave"> + <attribute name="text:condition"> + <ref name="formula"/> + </attribute> +</define> +<define name="text-conditional-text-attlist" combine="interleave"> + <attribute name="text:string-value-if-true"> + <ref name="string"/> + </attribute> +</define> +<define name="text-conditional-text-attlist" combine="interleave"> + <attribute name="text:string-value-if-false"> + <ref name="string"/> + </attribute> +</define> +<define name="text-conditional-text-attlist" combine="interleave"> + <optional> + <attribute name="text:current-value"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:hidden-text"> + <ref name="text-hidden-text-attlist"/> + <text/> + </element> +</define> +<define name="text-hidden-text-attlist" combine="interleave"> + <attribute name="text:condition"> + <ref name="formula"/> + </attribute> +</define> +<define name="text-hidden-text-attlist" combine="interleave"> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> +</define> +<define name="text-hidden-text-attlist" combine="interleave"> + <optional> + <attribute name="text:is-hidden"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element> + <choice> + <name>text:reference-ref</name> + <name>text:bookmark-ref</name> + </choice> + <interleave> + <ref name="text-common-ref-content"/> + <ref name="text-ref-content"/> + </interleave> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:note-ref"> + <interleave> + <ref name="text-common-ref-content"/> + <ref name="text-note-ref-content"/> + <ref name="text-ref-content"/> + </interleave> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:sequence-ref"> + <interleave> + <ref name="text-common-ref-content"/> + <ref name="text-sequence-ref-content"/> + </interleave> + </element> +</define> +<define name="text-common-ref-content" combine="interleave"> + <text/> +</define> +<define name="text-common-ref-content" combine="interleave"> + <optional> + <attribute name="text:ref-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-note-ref-content" combine="interleave"> + <ref name="text-note-class"/> +</define> +<define name="text-ref-content" combine="interleave"> + <optional> + <attribute name="text:reference-format"> + <choice> + <value>page</value> + <value>chapter</value> + <value>direction</value> + <value>text</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-sequence-ref-content" combine="interleave"> + <optional> + <attribute name="text:reference-format"> + <choice> + <value>page</value> + <value>chapter</value> + <value>direction</value> + <value>text</value> + <value>category-and-value</value> + <value>caption</value> + <value>value</value> + </choice> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:script"> + <interleave> + <choice> + <group> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + </group> + <text/> + </choice> + <optional> + <attribute name="script:language"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:execute-macro"> + <optional> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:hidden-paragraph"> + <ref name="text-hidden-paragraph-attlist"/> + <text/> + </element> +</define> +<define name="text-hidden-paragraph-attlist" combine="interleave"> + <attribute name="text:condition"> + <ref name="formula"/> + </attribute> +</define> +<define name="text-hidden-paragraph-attlist" combine="interleave"> + <optional> + <attribute name="text:is-hidden"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:dde-connection"> + <attribute name="text:connection-name"> + <ref name="string"/> + </attribute> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:measure"> + <attribute name="text:kind"> + <choice> + <value>value</value> + <value>unit</value> + <value>gap</value> + </choice> + </attribute> + <text/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:table-formula"> + <interleave> + <ref name="common-field-formula-attlist"/> + <ref name="common-field-display-value-formula-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> +</define> +<define name="common-value-type-attlist"> + <attribute name="office:value-type"> + <ref name="valueType"/> + </attribute> +</define> +<define name="common-value-and-type-attlist"> + <choice> + <group> + <attribute name="office:value-type"> + <value>float</value> + </attribute> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>percentage</value> + </attribute> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>currency</value> + </attribute> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + <optional> + <attribute name="office:currency"> + <ref name="string"/> + </attribute> + </optional> + </group> + <group> + <attribute name="office:value-type"> + <value>date</value> + </attribute> + <attribute name="office:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>time</value> + </attribute> + <attribute name="office:time-value"> + <ref name="duration"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>boolean</value> + </attribute> + <attribute name="office:boolean-value"> + <ref name="boolean"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>string</value> + </attribute> + <optional> + <attribute name="office:string-value"> + <ref name="string"/> + </attribute> + </optional> + </group> + </choice> +</define> +<define name="common-field-fixed-attlist"> + <optional> + <attribute name="text:fixed"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="common-field-name-attlist"> + <attribute name="text:name"> + <ref name="variableName"/> + </attribute> +</define> +<define name="common-field-description-attlist"> + <optional> + <attribute name="text:description"> + <text/> + </attribute> + </optional> +</define> +<define name="common-field-display-value-none-attlist"> + <optional> + <attribute name="text:display"> + <choice> + <value>value</value> + <value>none</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-field-display-value-formula-none-attlist"> + <optional> + <attribute name="text:display"> + <choice> + <value>value</value> + <value>formula</value> + <value>none</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-field-display-value-formula-attlist"> + <optional> + <attribute name="text:display"> + <choice> + <value>value</value> + <value>formula</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-field-formula-attlist"> + <optional> + <attribute name="text:formula"> + <ref name="formula"/> + </attribute> + </optional> +</define> +<define name="common-field-data-style-name-attlist"> + <optional> + <attribute name="style:data-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="common-field-num-format-attlist"> + <optional> + <ref name="common-num-format-attlist"/> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:toc-mark-start"> + <ref name="text-toc-mark-start-attrs"/> + </element> +</define> +<define name="text-toc-mark-start-attrs"> + <ref name="text-id"/> + <ref name="text-outline-level"/> +</define> +<define name="text-outline-level"> + <optional> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="text-id"> + <attribute name="text:id"> + <ref name="string"/> + </attribute> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:toc-mark-end"> + <ref name="text-id"/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:toc-mark"> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> + <ref name="text-outline-level"/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:user-index-mark-start"> + <ref name="text-id"/> + <ref name="text-outline-level"/> + <ref name="text-index-name"/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:user-index-mark-end"> + <ref name="text-id"/> + <ref name="text-outline-level"/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:user-index-mark"> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> + <ref name="text-outline-level"/> + <ref name="text-index-name"/> + </element> +</define> +<define name="text-index-name"> + <attribute name="text:index-name"> + <ref name="string"/> + </attribute> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:alphabetical-index-mark-start"> + <ref name="text-id"/> + <ref name="text-alphabetical-index-mark-attrs"/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:alphabetical-index-mark-end"> + <ref name="text-id"/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:alphabetical-index-mark"> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> + <ref name="text-alphabetical-index-mark-attrs"/> + </element> +</define> +<define name="text-alphabetical-index-mark-attrs" combine="interleave"> + <optional> + <attribute name="text:key1"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:key2"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-mark-attrs" combine="interleave"> + <optional> + <attribute name="text:string-value-phonetic"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:key1-phonetic"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:key2-phonetic"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-mark-attrs" combine="interleave"> + <optional> + <attribute name="text:main-entry" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="text:bibliography-mark"> + <attribute name="text:bibliography-type"> + <ref name="text-bibliography-types"/> + </attribute> + <zeroOrMore> + <attribute> + <choice> + <name>text:identifier</name> + <name>text:address</name> + <name>text:annote</name> + <name>text:author</name> + <name>text:booktitle</name> + <name>text:chapter</name> + <name>text:edition</name> + <name>text:editor</name> + <name>text:howpublished</name> + <name>text:institution</name> + <name>text:journal</name> + <name>text:month</name> + <name>text:note</name> + <name>text:number</name> + <name>text:organizations</name> + <name>text:pages</name> + <name>text:publisher</name> + <name>text:school</name> + <name>text:series</name> + <name>text:title</name> + <name>text:report-type</name> + <name>text:volume</name> + <name>text:year</name> + <name>text:url</name> + <name>text:custom1</name> + <name>text:custom2</name> + <name>text:custom3</name> + <name>text:custom4</name> + <name>text:custom5</name> + <name>text:isbn</name> + <name>text:issn</name> + </choice> + <ref name="string"/> + </attribute> + </zeroOrMore> + <text/> + </element> +</define> +<define name="text-bibliography-types"> + <choice> + <value>article</value> + <value>book</value> + <value>booklet</value> + <value>conference</value> + <value>custom1</value> + <value>custom2</value> + <value>custom3</value> + <value>custom4</value> + <value>custom5</value> + <value>email</value> + <value>inbook</value> + <value>incollection</value> + <value>inproceedings</value> + <value>journal</value> + <value>manual</value> + <value>mastersthesis</value> + <value>misc</value> + <value>phdthesis</value> + <value>proceedings</value> + <value>techreport</value> + <value>unpublished</value> + <value>www</value> + </choice> +</define> +<define name="text-index-body"> + <element name="text:index-body"> + <zeroOrMore> + <ref name="index-content-main"/> + </zeroOrMore> + </element> +</define> +<define name="index-content-main"> + <choice> + <ref name="text-content"/> + <ref name="text-index-title"/> + </choice> +</define> +<define name="text-index-title"> + <element name="text:index-title"> + <ref name="sectionAttr"/> + <zeroOrMore> + <ref name="index-content-main"/> + </zeroOrMore> + </element> +</define> +<define name="text-table-of-content"> + <element name="text:table-of-content"> + <ref name="sectionAttr"/> + <ref name="text-table-of-content-source"/> + <ref name="text-index-body"/> + </element> +</define> +<define name="text-table-of-content-source"> + <element name="text:table-of-content-source"> + <ref name="text-table-of-content-source-attlist"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <zeroOrMore> + <ref name="text-table-of-content-entry-template"/> + </zeroOrMore> + <zeroOrMore> + <ref name="text-index-source-styles"/> + </zeroOrMore> + </element> +</define> +<define name="text-table-of-content-source-attlist" combine="interleave"> + <optional> + <attribute name="text:outline-level"> + <choice> + <ref name="positiveInteger"/> + </choice> + </attribute> + </optional> +</define> +<define name="text-table-of-content-source-attlist" combine="interleave"> + <optional> + <attribute name="text:use-outline-level" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-table-of-content-source-attlist" combine="interleave"> + <optional> + <attribute name="text:use-index-marks"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-table-of-content-source-attlist" combine="interleave"> + <optional> + <attribute name="text:use-index-source-styles"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-table-of-content-source-attlist" combine="interleave"> + <optional> + <attribute name="text:index-scope"> + <choice> + <value>document</value> + <value>chapter</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-table-of-content-source-attlist" combine="interleave"> + <optional> + <attribute name="text:relative-tab-stop-position"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-table-of-content-entry-template"> + <element name="text:table-of-content-entry-template"> + <ref name="text-table-of-content-entry-template-attlist"/> + <zeroOrMore> + <ref name="text-table-of-content-children"/> + + </zeroOrMore> + </element> +</define> +<define name="text-table-of-content-children"> + <choice> + <ref name="text-index-entry-chapter"/> + <ref name="text-index-entry-page-number"/> + <ref name="text-index-entry-text"/> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + <ref name="text-index-entry-link-start"/> + <ref name="text-index-entry-link-end"/> + </choice> +</define> +<define name="text-table-of-content-entry-template-attlist" + combine="interleave"> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> +</define> +<define name="text-table-of-content-entry-template-attlist" + combine="interleave"> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="text-illustration-index"> + <element name="text:illustration-index"> + <ref name="sectionAttr"/> + <ref name="text-illustration-index-source"/> + <ref name="text-index-body"/> + </element> +</define> +<define name="text-illustration-index-source"> + <element name="text:illustration-index-source"> + <ref name="text-illustration-index-source-attrs"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <optional> + <ref name="text-illustration-index-entry-template"/> + </optional> + </element> +</define> +<define name="text-illustration-index-source-attrs" combine="interleave"> + <ref name="text-index-scope-attr"/> +</define> +<define name="text-index-scope-attr"> + <optional> + <attribute name="text:index-scope" a:defaultValue="document"> + <choice> + <value>document</value> + <value>chapter</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-illustration-index-source-attrs" combine="interleave"> + <ref name="text-relative-tab-stop-position-attr"/> +</define> +<define name="text-relative-tab-stop-position-attr"> + <optional> + <attribute name="text:relative-tab-stop-position" + a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-illustration-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:use-caption" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-illustration-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:caption-sequence-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-illustration-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:caption-sequence-format"> + <choice> + <value>text</value> + <value>category-and-value</value> + <value>caption</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-illustration-index-entry-template"> + <element name="text:illustration-index-entry-template"> + <ref name="text-illustration-index-entry-content"/> + </element> +</define> +<define name="text-illustration-index-entry-content"> + <ref name="text-illustration-index-entry-template-attrs"/> + <zeroOrMore> + <choice> + <ref name="text-index-entry-page-number"/> + <ref name="text-index-entry-text"/> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + </choice> + </zeroOrMore> +</define> +<define name="text-illustration-index-entry-template-attrs"> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="text-table-index"> + <element name="text:table-index"> + <ref name="sectionAttr"/> + <ref name="text-table-index-source"/> + <ref name="text-index-body"/> + </element> +</define> +<define name="text-table-index-source"> + <element name="text:table-index-source"> + <ref name="text-illustration-index-source-attrs"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <optional> + <ref name="text-table-index-entry-template"/> + </optional> + </element> +</define> +<define name="text-table-index-entry-template"> + <element name="text:table-index-entry-template"> + <ref name="text-illustration-index-entry-content"/> + </element> +</define> +<define name="text-object-index"> + <element name="text:object-index"> + <ref name="sectionAttr"/> + <ref name="text-object-index-source"/> + <ref name="text-index-body"/> + </element> +</define> +<define name="text-object-index-source"> + <element name="text:object-index-source"> + <ref name="text-object-index-source-attrs"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <optional> + <ref name="text-object-index-entry-template"/> + </optional> + </element> +</define> +<define name="text-object-index-source-attrs" combine="interleave"> + <ref name="text-index-scope-attr"/> +</define> +<define name="text-object-index-source-attrs" combine="interleave"> + <ref name="text-relative-tab-stop-position-attr"/> +</define> +<define name="text-object-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:use-spreadsheet-objects" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-object-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:use-math-objects" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-object-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:use-draw-objects" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-object-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:use-chart-objects" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-object-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:use-other-objects" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-object-index-entry-template"> + <element name="text:object-index-entry-template"> + <ref name="text-illustration-index-entry-content"/> + </element> +</define> +<define name="text-user-index"> + <element name="text:user-index"> + <ref name="sectionAttr"/> + <ref name="text-user-index-source"/> + <ref name="text-index-body"/> + </element> +</define> +<define name="text-user-index-source"> + <element name="text:user-index-source"> + <ref name="text-user-index-source-attr"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <zeroOrMore> + <ref name="text-user-index-entry-template"/> + </zeroOrMore> + <zeroOrMore> + <ref name="text-index-source-styles"/> + </zeroOrMore> + </element> +</define> +<define name="text-user-index-source-attr" combine="interleave"> + <ref name="text-index-scope-attr"/> + <ref name="text-relative-tab-stop-position-attr"/> + <attribute name="text:index-name"> + <ref name="string"/> + </attribute> +</define> +<define name="text-user-index-source-attr" combine="interleave"> + <optional> + <attribute name="text:use-index-marks" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-graphics" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-tables" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-floating-frames" + a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-objects" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-user-index-source-attr" combine="interleave"> + <optional> + <attribute name="text:copy-outline-levels" + a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-user-index-entry-template"> + <element name="text:user-index-entry-template"> + <ref name="text-user-index-entry-template-attrs"/> + <zeroOrMore> + <choice> + <ref name="text-index-entry-chapter"/> + <ref name="text-index-entry-page-number"/> + <ref name="text-index-entry-text"/> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + </choice> + </zeroOrMore> + </element> +</define> +<define name="text-user-index-entry-template-attrs" combine="interleave"> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> +</define> +<define name="text-user-index-entry-template-attrs" combine="interleave"> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="text-alphabetical-index"> + <element name="text:alphabetical-index"> + <ref name="sectionAttr"/> + <ref name="text-alphabetical-index-source"/> + <ref name="text-index-body"/> + </element> +</define> +<define name="text-alphabetical-index-source"> + <element name="text:alphabetical-index-source"> + <ref name="text-alphabetical-index-source-attrs"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <zeroOrMore> + <ref name="text-alphabetical-index-entry-template"/> + </zeroOrMore> + </element> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <ref name="text-index-scope-attr"/> + <ref name="text-relative-tab-stop-position-attr"/> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:ignore-case" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:main-entry-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:alphabetical-separators" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:combine-entries" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:combine-entries-with-dash" + a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:combine-entries-with-pp" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:use-keys-as-entries" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:capitalize-entries" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:comma-separated" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="fo:language"> + <ref name="languageCode"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="fo:country"> + <ref name="countryCode"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-source-attrs" combine="interleave"> + <optional> + <attribute name="text:sort-algorithm"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-alphabetical-index-auto-mark-file"> + <element name="text:alphabetical-index-auto-mark-file"> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + </element> +</define> +<define name="text-alphabetical-index-entry-template"> + <element name="text:alphabetical-index-entry-template"> + <ref name="text-alphabetical-index-entry-template-attrs"/> + <zeroOrMore> + <choice> + <ref name="text-index-entry-chapter"/> + <ref name="text-index-entry-page-number"/> + <ref name="text-index-entry-text"/> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + </choice> + </zeroOrMore> + </element> +</define> +<define name="text-alphabetical-index-entry-template-attrs" + combine="interleave"> + <attribute name="text:outline-level"> + <choice> + <value>1</value> + <value>2</value> + <value>3</value> + <value>separator</value> + </choice> + </attribute> +</define> +<define name="text-alphabetical-index-entry-template-attrs" + combine="interleave"> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="text-bibliography"> + <element name="text:bibliography"> + <ref name="sectionAttr"/> + <ref name="text-bibliography-source"/> + <ref name="text-index-body"/> + </element> +</define> +<define name="text-bibliography-source"> + <element name="text:bibliography-source"> + <optional> + <ref name="text-index-title-template"/> + </optional> + <zeroOrMore> + <ref name="text-bibliography-entry-template"/> + </zeroOrMore> + </element> +</define> +<define name="text-bibliography-entry-template"> + <element name="text:bibliography-entry-template"> + <ref name="text-bibliography-entry-template-attrs"/> + <zeroOrMore> + <choice> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + <ref name="text-index-entry-bibliography"/> + </choice> + </zeroOrMore> + </element> +</define> +<define name="text-bibliography-entry-template-attrs" combine="interleave"> + <attribute name="text:bibliography-type"> + <ref name="text-bibliography-types"/> + </attribute> +</define> +<define name="text-bibliography-entry-template-attrs" combine="interleave"> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="text-index-source-styles"> + <element name="text:index-source-styles"> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> + <zeroOrMore> + <ref name="text-index-source-style"/> + </zeroOrMore> + </element> +</define> +<define name="text-index-source-style"> + <element name="text:index-source-style"> + <attribute name="text:style-name"> + <ref name="styleName"/> + </attribute> + <empty/> + </element> +</define> +<define name="text-index-title-template"> + <element name="text:index-title-template"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <text/> + </element> +</define> +<define name="text-index-entry-chapter"> + <element name="text:index-entry-chapter"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <ref name="text-index-entry-chapter-attrs"/> + </element> +</define> +<define name="text-index-entry-chapter-attrs"> + <optional> + <attribute name="text:display" a:defaultValue="number"> + <choice> + <value>name</value> + <value>number</value> + <value>number-and-name</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-index-entry-text"> + <element name="text:index-entry-text"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </element> +</define> +<define name="text-index-entry-page-number"> + <element name="text:index-entry-page-number"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </element> +</define> +<define name="text-index-entry-span"> + <element name="text:index-entry-span"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <text/> + </element> +</define> +<define name="text-index-entry-bibliography"> + <element name="text:index-entry-bibliography"> + <ref name="text-index-entry-bibliography-attrs"/> + </element> +</define> +<define name="text-index-entry-bibliography-attrs" combine="interleave"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-index-entry-bibliography-attrs" combine="interleave"> + <attribute name="text:bibliography-data-field"> + <choice> + <value>address</value> + <value>annote</value> + <value>author</value> + <value>bibliography-type</value> + <value>booktitle</value> + <value>chapter</value> + <value>custom1</value> + <value>custom2</value> + <value>custom3</value> + <value>custom4</value> + <value>custom5</value> + <value>edition</value> + <value>editor</value> + <value>howpublished</value> + <value>identifier</value> + <value>institution</value> + <value>isbn</value> + <value>issn</value> + <value>journal</value> + <value>month</value> + <value>note</value> + <value>number</value> + <value>organizations</value> + <value>pages</value> + <value>publisher</value> + <value>report-type</value> + <value>school</value> + <value>series</value> + <value>title</value> + <value>url</value> + <value>volume</value> + <value>year</value> + </choice> + </attribute> +</define> +<define name="text-index-entry-tab-stop"> + <element name="text:index-entry-tab-stop"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <ref name="text-index-entry-tab-stop-attrs"/> + </element> +</define> +<define name="text-index-entry-tab-stop-attrs" combine="interleave"> + <optional> + <attribute name="style:leader-char"> + <ref name="character"/> + </attribute> + </optional> +</define> +<define name="text-index-entry-tab-stop-attrs" combine="interleave"> + <choice> + <attribute name="style:type"> + <value>right</value> + </attribute> + <group> + <attribute name="style:type"> + <value>left</value> + </attribute> + <attribute name="style:position"> + <ref name="length"/> + </attribute> + </group> + </choice> +</define> +<define name="text-index-entry-link-start"> + <element name="text:index-entry-link-start"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </element> +</define> +<define name="text-index-entry-link-end"> + <element name="text:index-entry-link-end"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </element> +</define> +<define name="table-table"> + <element name="table:table"> + <ref name="table-table-attlist"/> + <optional> + <ref name="table-table-source"/> + </optional> + <optional> + <ref name="office-dde-source"/> + </optional> + <optional> + <ref name="table-scenario"/> + </optional> + <optional> + <ref name="office-forms"/> + </optional> + <optional> + <ref name="table-shapes"/> + </optional> + <ref name="table-columns-and-groups"/> + <ref name="table-rows-and-groups"/> + </element> +</define> +<define name="table-columns-and-groups"> + <oneOrMore> + <choice> + <ref name="table-table-column-group"/> + <ref name="table-columns-no-group"/> + </choice> + </oneOrMore> +</define> + +<define name="table-columns-no-group"> + <choice> + <group> + <ref name="table-columns"/> + <optional> + <ref name="table-table-header-columns"/> + <optional> + <ref name="table-columns"/> + </optional> + </optional> + </group> + <group> + <ref name="table-table-header-columns"/> + <optional> + <ref name="table-columns"/> + </optional> + </group> + </choice> +</define> + +<define name="table-columns"> + <choice> + <ref name="table-table-columns"/> + <oneOrMore> + <ref name="table-table-column"/> + </oneOrMore> + </choice> +</define> + +<define name="table-rows-and-groups"> + <oneOrMore> + <choice> + <ref name="table-table-row-group"/> + <ref name="table-rows-no-group"/> + </choice> + </oneOrMore> +</define> + +<define name="table-rows-no-group"> + <choice> + <group> + <ref name="table-rows"/> + <optional> + <ref name="table-table-header-rows"/> + <optional> + <ref name="table-rows"/> + </optional> + </optional> + </group> + <group> + <ref name="table-table-header-rows"/> + <optional> + <ref name="table-rows"/> + </optional> + </group> + </choice> +</define> + +<define name="table-rows"> + <choice> + <ref name="table-table-rows"/> + <oneOrMore> + <optional> + <ref name="text-soft-page-break"/> + </optional> + <ref name="table-table-row"/> + </oneOrMore> + </choice> +</define> +<define name="table-table-attlist" combine="interleave"> + <optional> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-table-attlist" combine="interleave"> + <optional> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="table-table-attlist" combine="interleave"> + <optional> + <attribute name="table:protected" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:protection-key"> + <text/> + </attribute> + </optional> +</define> +<define name="table-table-attlist" combine="interleave"> + <optional> + <attribute name="table:print" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-table-attlist" combine="interleave"> + <optional> + <attribute name="table:print-ranges"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> +</define> +<define name="table-table-row"> + <element name="table:table-row"> + <ref name="table-table-row-attlist"/> + <oneOrMore> + <choice> + <ref name="table-table-cell"/> + <ref name="table-covered-table-cell"/> + </choice> + </oneOrMore> + </element> +</define> +<define name="table-table-row-attlist" combine="interleave"> + <optional> + <attribute name="table:number-rows-repeated" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="table-table-row-attlist" combine="interleave"> + <optional> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="table-table-row-attlist" combine="interleave"> + <optional> + <attribute name="table:default-cell-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="table-table-row-attlist" combine="interleave"> + <optional> + <attribute name="table:visibility" a:defaultValue="visible"> + <ref name="table-visibility-value"/> + </attribute> + </optional> +</define> + +<define name="table-visibility-value"> + <choice> + <value>visible</value> + <value>collapse</value> + <value>filter</value> + </choice> +</define> +<define name="table-table-cell"> + <element name="table:table-cell"> + <ref name="table-table-cell-attlist"/> + <ref name="table-table-cell-attlist-extra"/> + <ref name="table-table-cell-content"/> + </element> +</define> + +<define name="table-covered-table-cell"> + <element name="table:covered-table-cell"> + <ref name="table-table-cell-attlist"/> + <ref name="table-table-cell-content"/> + </element> +</define> + +<define name="table-table-cell-content"> + <optional> + <ref name="table-cell-range-source"/> + </optional> + <optional> + <ref name="office-annotation"/> + </optional> + <optional> + <ref name="table-detective"/> + </optional> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> +</define> +<define name="table-table-cell-attlist" combine="interleave"> + <optional> + <attribute name="table:number-columns-repeated" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="table-table-cell-attlist-extra" combine="interleave"> + <optional> + <attribute name="table:number-columns-spanned" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:number-rows-spanned" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="table-table-cell-attlist" combine="interleave"> + <optional> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="table-table-cell-attlist" combine="interleave"> + <optional> + <attribute name="table:content-validation-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-table-cell-attlist" combine="interleave"> + <optional> + <attribute name="table:formula"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-table-cell-attlist-extra" combine="interleave"> + <optional> + <attribute name="table:number-matrix-columns-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:number-matrix-rows-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="table-table-cell-attlist" combine="interleave"> + <optional> + <ref name="common-value-and-type-attlist"/> + </optional> +</define> +<define name="table-table-cell-attlist" combine="interleave"> + <optional> + <attribute name="table:protect" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-table-column"> + <element name="table:table-column"> + <ref name="table-table-column-attlist"/> + <empty/> + </element> +</define> +<define name="table-table-column-attlist" combine="interleave"> + <optional> + <attribute name="table:number-columns-repeated" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="table-table-column-attlist" combine="interleave"> + <optional> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="table-table-column-attlist" combine="interleave"> + <optional> + <attribute name="table:visibility" a:defaultValue="visible"> + <ref name="table-visibility-value"/> + </attribute> + </optional> +</define> +<define name="table-table-column-attlist" combine="interleave"> + <optional> + <attribute name="table:default-cell-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="table-table-header-columns"> + <element name="table:table-header-columns"> + <oneOrMore> + <ref name="table-table-column"/> + </oneOrMore> + </element> +</define> + +<define name="table-table-columns"> + <element name="table:table-columns"> + <oneOrMore> + <ref name="table-table-column"/> + </oneOrMore> + </element> +</define> +<define name="table-table-column-group"> + <element name="table:table-column-group"> + <ref name="table-table-column-group-attlist"/> + <ref name="table-columns-and-groups"/> + </element> +</define> +<define name="table-table-column-group-attlist" combine="interleave"> + <optional> + <attribute name="table:display" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-table-header-rows"> + <element name="table:table-header-rows"> + <oneOrMore> + <optional> + <ref name="text-soft-page-break"/> + </optional> + <ref name="table-table-row"/> + </oneOrMore> + </element> +</define> + +<define name="table-table-rows"> + <element name="table:table-rows"> + <oneOrMore> + <optional> + <ref name="text-soft-page-break"/> + </optional> + <ref name="table-table-row"/> + </oneOrMore> + </element> +</define> +<define name="table-table-row-group"> + <element name="table:table-row-group"> + <ref name="table-table-row-group-attlist"/> + <ref name="table-rows-and-groups"/> + </element> +</define> +<define name="table-table-row-group-attlist" combine="interleave"> + <optional> + <attribute name="table:display" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-table-attlist" combine="interleave"> + <optional> + <attribute name="table:is-sub-table" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="cellAddress"> + <data type="string"> + <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+</param> + + </data> +</define> +<define name="cellRangeAddress"> + <data type="string"> + <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?</param> + + </data> +</define> +<define name="cellRangeAddressList"> + <!-- Value is a space separated list of "cellRangeAddress" patterns --> + <data type="string"/> +</define> +<define name="table-table-source"> + <element name="table:table-source"> + <ref name="table-table-source-attlist"/> + <ref name="table-linked-source-attlist"/> + <empty/> + </element> +</define> +<define name="table-table-source-attlist" combine="interleave"> + <optional> + <attribute name="table:mode" a:defaultValue="copy-all"> + <choice> + <value>copy-all</value> + <value>copy-results-only</value> + </choice> + </attribute> + </optional> +</define> +<define name="table-table-source-attlist" combine="interleave"> + <optional> + <attribute name="table:table-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-linked-source-attlist" combine="interleave"> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onRequest"> + <value>onRequest</value> + </attribute> + </optional> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> +</define> +<define name="table-linked-source-attlist" combine="interleave"> + <optional> + <attribute name="table:filter-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-linked-source-attlist" combine="interleave"> + <optional> + <attribute name="table:filter-options"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-linked-source-attlist" combine="interleave"> + <optional> + <attribute name="table:refresh-delay"> + <ref name="duration"/> + </attribute> + </optional> +</define> +<define name="table-scenario"> + <element name="table:scenario"> + <ref name="table-scenario-attlist"/> + <empty/> + </element> +</define> +<define name="table-scenario-attlist" combine="interleave"> + <attribute name="table:scenario-ranges"> + <ref name="cellRangeAddressList"/> + </attribute> +</define> +<define name="table-scenario-attlist" combine="interleave"> + <attribute name="table:is-active"> + <ref name="boolean"/> + </attribute> +</define> +<define name="table-scenario-attlist" combine="interleave"> + <optional> + <attribute name="table:display-border" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-scenario-attlist" combine="interleave"> + <optional> + <attribute name="table:border-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="table-scenario-attlist" combine="interleave"> + <optional> + <attribute name="table:copy-back" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-scenario-attlist" combine="interleave"> + <optional> + <attribute name="table:copy-styles" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-scenario-attlist" combine="interleave"> + <optional> + <attribute name="table:copy-formulas" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-scenario-attlist" combine="interleave"> + <optional> + <attribute name="table:comment"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-scenario-attlist" combine="interleave"> + <optional> + <attribute name="table:protected"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-shapes"> + <element name="table:shapes"> + <oneOrMore> + <ref name="shape"/> + </oneOrMore> + </element> +</define> +<define name="table-cell-range-source"> + <element name="table:cell-range-source"> + <ref name="table-table-cell-range-source-attlist"/> + <ref name="table-linked-source-attlist"/> + <empty/> + </element> +</define> +<define name="table-table-cell-range-source-attlist" combine="interleave"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-table-cell-range-source-attlist" combine="interleave"> + <attribute name="table:last-column-spanned"> + <ref name="positiveInteger"/> + </attribute> + <attribute name="table:last-row-spanned"> + <ref name="positiveInteger"/> + </attribute> +</define> +<define name="table-detective"> + <element name="table:detective"> + <zeroOrMore> + <ref name="table-highlighted-range"/> + </zeroOrMore> + <zeroOrMore> + <ref name="table-operation"/> + </zeroOrMore> + </element> +</define> +<define name="table-operation"> + <element name="table:operation"> + <ref name="table-operation-attlist"/> + <empty/> + </element> +</define> +<define name="table-operation-attlist" combine="interleave"> + <attribute name="table:name"> + <choice> + <value>trace-dependents</value> + <value>remove-dependents</value> + <value>trace-precedents</value> + <value>remove-precedents</value> + <value>trace-errors</value> + </choice> + </attribute> +</define> +<define name="table-operation-attlist" combine="interleave"> + <attribute name="table:index"> + <ref name="nonNegativeInteger"/> + </attribute> +</define> +<define name="table-highlighted-range"> + <element name="table:highlighted-range"> + <choice> + <group> + <ref name="table-highlighted-range-attlist"/> + </group> + <group> + <ref name="table-highlighted-range-attlist-invalid"/> + </group> + </choice> + <empty/> + </element> +</define> +<define name="table-highlighted-range-attlist" combine="interleave"> + <optional> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> +</define> +<define name="table-highlighted-range-attlist" combine="interleave"> + <attribute name="table:direction"> + <choice> + <value>from-another-table</value> + <value>to-another-table</value> + <value>from-same-table</value> + </choice> + </attribute> +</define> +<define name="table-highlighted-range-attlist" combine="interleave"> + <optional> + <attribute name="table:contains-error" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-highlighted-range-attlist-invalid" combine="interleave"> + <attribute name="table:marked-invalid"> + <ref name="boolean"/> + </attribute> +</define> +<define name="office-spreadsheet-attlist" combine="interleave"> + <optional> + <attribute name="table:structure-protected" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:protection-key"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-calculation-settings"> + <element name="table:calculation-settings"> + <ref name="table-calculation-setting-attlist"/> + <optional> + <ref name="table-null-date"/> + </optional> + <optional> + <ref name="table-iteration"/> + </optional> + </element> +</define> +<define name="table-calculation-setting-attlist" combine="interleave"> + <optional> + <attribute name="table:case-sensitive" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-calculation-setting-attlist" combine="interleave"> + <optional> + <attribute name="table:precision-as-shown" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-calculation-setting-attlist" combine="interleave"> + <optional> + <attribute name="table:search-criteria-must-apply-to-whole-cell" + a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-calculation-setting-attlist" combine="interleave"> + <optional> + <attribute name="table:automatic-find-labels" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-calculation-setting-attlist" combine="interleave"> + <optional> + <attribute name="table:use-regular-expressions" + a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-calculation-setting-attlist" combine="interleave"> + <optional> + <attribute name="table:null-year" a:defaultValue="1930"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="table-null-date"> + <element name="table:null-date"> + <optional> + <attribute name="table:value-type" a:defaultValue="date"> + <ref name="valueType"/> + </attribute> + </optional> + <optional> + <attribute name="table:date-value" + a:defaultValue="1899-12-30"> + <ref name="date"/> + </attribute> + </optional> + <empty/> + </element> +</define> +<define name="table-iteration"> + <element name="table:iteration"> + <optional> + <attribute name="table:status" a:defaultValue="disable"> + <choice> + <value>enable</value> + <value>disable</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:steps" a:defaultValue="100"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:maximum-difference" + a:defaultValue="0.001"> + <ref name="double"/> + </attribute> + </optional> + <empty/> + </element> +</define> +<define name="table-content-validations"> + <element name="table:content-validations"> + <oneOrMore> + <ref name="table-content-validation"/> + </oneOrMore> + </element> +</define> + +<define name="table-content-validation"> + <element name="table:content-validation"> + <ref name="table-validation-attlist"/> + <optional> + <ref name="table-help-message"/> + </optional> + <optional> + <choice> + <ref name="table-error-message"/> + <group> + <ref name="table-error-macro"/> + <optional> + <ref name="office-event-listeners"/> + </optional> + </group> + </choice> + </optional> + </element> +</define> +<define name="table-validation-attlist" combine="interleave"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-validation-attlist" combine="interleave"> + <optional> + <attribute name="table:condition"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-validation-attlist" combine="interleave"> + <optional> + <attribute name="table:base-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> +</define> +<define name="table-validation-attlist" combine="interleave"> + <optional> + <attribute name="table:allow-empty-cell" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-validation-attlist" combine="interleave"> + <optional> + <attribute name="table:display-list" a:defaultValue="unsorted"> + <choice> + <value>none</value> + <value>unsorted</value> + <value>sort-ascending</value> + </choice> + </attribute> + </optional> +</define> +<define name="table-help-message"> + <element name="table:help-message"> + <optional> + <attribute name="table:title"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:display" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> +</define> +<define name="table-error-message"> + <element name="table:error-message"> + <optional> + <attribute name="table:title"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:display" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:message-type" a:defaultValue="stop"> + <choice> + <value>stop</value> + <value>warning</value> + <value>information</value> + </choice> + </attribute> + </optional> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> +</define> +<define name="table-error-macro"> + <element name="table:error-macro"> + <optional> + <attribute name="table:execute" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> + </element> +</define> +<define name="table-label-ranges"> + <element name="table:label-ranges"> + <zeroOrMore> + <ref name="table-label-range"/> + </zeroOrMore> + </element> +</define> + +<define name="table-label-range"> + <element name="table:label-range"> + <ref name="table-label-range-attlist"/> + <empty/> + </element> +</define> +<define name="table-label-range-attlist" combine="interleave"> + <attribute name="table:label-cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> +</define> +<define name="table-label-range-attlist" combine="interleave"> + <attribute name="table:data-cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> +</define> +<define name="table-label-range-attlist" combine="interleave"> + <attribute name="table:orientation"> + <choice> + <value>column</value> + <value>row</value> + </choice> + </attribute> +</define> +<define name="table-named-expressions"> + <element name="table:named-expressions"> + <zeroOrMore> + <choice> + <ref name="table-named-range"/> + <ref name="table-named-expression"/> + </choice> + </zeroOrMore> + </element> +</define> + +<define name="table-named-range"> + <element name="table:named-range"> + <ref name="table-named-range-attlist"/> + <empty/> + </element> +</define> + +<define name="table-named-range-attlist" combine="interleave"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + <optional> + <attribute name="table:base-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> + <optional> + <attribute name="table:range-usable-as" a:defaultValue="none"> + <choice> + <value>none</value> + <list> + <oneOrMore> + <choice> + <value>print-range</value> + <value>filter</value> + <value>repeat-row</value> + <value>repeat-column</value> + </choice> + </oneOrMore> + </list> + </choice> + </attribute> + </optional> +</define> +<define name="table-named-expression"> + <element name="table:named-expression"> + <ref name="table-named-expression-attlist"/> + <empty/> + </element> +</define> + +<define name="table-named-expression-attlist" combine="interleave"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <attribute name="table:expression"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="table:base-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> +</define> +<define name="table-database-ranges"> + <element name="table:database-ranges"> + <zeroOrMore> + <ref name="table-database-range"/> + </zeroOrMore> + </element> +</define> +<define name="table-database-range"> + <element name="table:database-range"> + <ref name="table-database-range-attlist"/> + <optional> + <choice> + <ref name="table-database-source-sql"/> + <ref name="table-database-source-table"/> + <ref name="table-database-source-query"/> + </choice> + </optional> + <optional> + <ref name="table-filter"/> + </optional> + <optional> + <ref name="table-sort"/> + </optional> + <optional> + <ref name="table-subtotal-rules"/> + </optional> + </element> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <optional> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <optional> + <attribute name="table:is-selection" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <optional> + <attribute name="table:on-update-keep-styles" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <optional> + <attribute name="table:on-update-keep-size" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <optional> + <attribute name="table:has-persistent-data" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <optional> + <attribute name="table:orientation" a:defaultValue="row"> + <choice> + <value>column</value> + <value>row</value> + </choice> + </attribute> + </optional> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <optional> + <attribute name="table:contains-header" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <optional> + <attribute name="table:display-filter-buttons" + a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <attribute name="table:target-range-address"> + <ref name="cellRangeAddress"/> + </attribute> +</define> +<define name="table-database-range-attlist" combine="interleave"> + <optional> + <attribute name="table:refresh-delay"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-database-source-sql"> + <element name="table:database-source-sql"> + <ref name="table-database-source-sql-attlist"/> + <empty/> + </element> +</define> +<define name="table-database-source-sql-attlist" combine="interleave"> + <attribute name="table:database-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-database-source-sql-attlist" combine="interleave"> + <attribute name="table:sql-statement"> + <ref name="string"/> + </attribute> +</define> +<define name="table-database-source-sql-attlist" combine="interleave"> + <optional> + <attribute name="table:parse-sql-statement" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-database-source-query"> + <element name="table:database-source-table"> + <ref name="table-database-source-table-attlist"/> + <empty/> + </element> +</define> +<define name="table-database-source-table-attlist" combine="interleave"> + <attribute name="table:database-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-database-source-table-attlist" combine="interleave"> + <attribute name="table:database-table-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-database-source-table"> + <element name="table:database-source-query"> + <ref name="table-database-source-query-attlist"/> + <empty/> + </element> +</define> +<define name="table-database-source-query-attlist" combine="interleave"> + <attribute name="table:database-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-database-source-query-attlist" combine="interleave"> + <attribute name="table:query-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-sort"> + <element name="table:sort"> + <ref name="table-sort-attlist"/> + <oneOrMore> + <ref name="table-sort-by"/> + </oneOrMore> + </element> +</define> +<define name="table-sort-attlist" combine="interleave"> + <optional> + <attribute name="table:bind-styles-to-content" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-sort-attlist" combine="interleave"> + <optional> + <attribute name="table:target-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> +</define> +<define name="table-sort-attlist" combine="interleave"> + <optional> + <attribute name="table:case-sensitive" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-sort-attlist" combine="interleave"> + <optional> + <attribute name="table:language"> + <ref name="languageCode"/> + </attribute> + </optional> +</define> +<define name="table-sort-attlist" combine="interleave"> + <optional> + <attribute name="table:country"> + <ref name="countryCode"/> + </attribute> + </optional> +</define> +<define name="table-sort-attlist" combine="interleave"> + <optional> + <attribute name="table:algorithm"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-sort-by"> + <element name="table:sort-by"> + <ref name="table-sort-by-attlist"/> + <empty/> + </element> +</define> +<define name="table-sort-by-attlist" combine="interleave"> + <attribute name="table:field-number"> + <ref name="nonNegativeInteger"/> + </attribute> +</define> +<define name="table-sort-by-attlist" combine="interleave"> + <optional> + <attribute name="table:data-type" a:defaultValue="automatic"> + <choice> + <value>text</value> + <value>number</value> + <value>automatic</value> + <ref name="string"/> + </choice> + </attribute> + </optional> +</define> +<define name="table-sort-by-attlist" combine="interleave"> + <optional> + <attribute name="table:order" a:defaultValue="ascending"> + <choice> + <value>ascending</value> + <value>descending</value> + </choice> + </attribute> + </optional> +</define> +<define name="table-subtotal-rules"> + <element name="table:subtotal-rules"> + <ref name="table-subtotal-rules-attlist"/> + <optional> + <ref name="table-sort-groups"/> + </optional> + <zeroOrMore> + <ref name="table-subtotal-rule"/> + </zeroOrMore> + </element> +</define> +<define name="table-subtotal-rules-attlist" combine="interleave"> + <optional> + <attribute name="table:bind-styles-to-content" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-subtotal-rules-attlist" combine="interleave"> + <optional> + <attribute name="table:case-sensitive" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-subtotal-rules-attlist" combine="interleave"> + <optional> + <attribute name="table:page-breaks-on-group-change" + a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-sort-groups"> + <element name="table:sort-groups"> + <ref name="table-sort-groups-attlist"/> + <empty/> + </element> +</define> +<define name="table-sort-groups-attlist" combine="interleave"> + <optional> + <attribute name="table:data-type" a:defaultValue="automatic"> + <choice> + <value>text</value> + <value>number</value> + <value>automatic</value> + <ref name="string"/> + </choice> + </attribute> + </optional> +</define> +<define name="table-sort-groups-attlist" combine="interleave"> + <optional> + <attribute name="table:order" a:defaultValue="ascending"> + <choice> + <value>ascending</value> + <value>descending</value> + </choice> + </attribute> + </optional> +</define> +<define name="table-subtotal-rule"> + <element name="table:subtotal-rule"> + <ref name="table-subtotal-rule-attlist"/> + <zeroOrMore> + <ref name="table-subtotal-field"/> + </zeroOrMore> + </element> +</define> +<define name="table-subtotal-rule-attlist" combine="interleave"> + <attribute name="table:group-by-field-number"> + <ref name="nonNegativeInteger"/> + </attribute> +</define> +<define name="table-subtotal-field"> + <element name="table:subtotal-field"> + <ref name="table-subtotal-field-attlist"/> + <empty/> + </element> +</define> +<define name="table-subtotal-field-attlist" combine="interleave"> + <attribute name="table:field-number"> + <ref name="nonNegativeInteger"/> + </attribute> +</define> +<define name="table-subtotal-field-attlist" combine="interleave"> + <attribute name="table:function"> + <choice> + <value>auto</value> + <value>average</value> + <value>count</value> + <value>countnums</value> + <value>max</value> + <value>min</value> + <value>product</value> + <value>stdev</value> + <value>stdevp</value> + <value>sum</value> + <value>var</value> + <value>varp</value> + <ref name="string"/> + </choice> + </attribute> +</define> +<define name="table-filter"> + <element name="table:filter"> + <ref name="table-filter-attlist"/> + <choice> + <ref name="table-filter-condition"/> + <ref name="table-filter-and"/> + <ref name="table-filter-or"/> + </choice> + </element> +</define> +<define name="table-filter-attlist" combine="interleave"> + <optional> + <attribute name="table:target-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> +</define> +<define name="table-filter-attlist" combine="interleave"> + <optional> + <attribute name="table:condition-source" a:defaultValue="self"> + <choice> + <value>self</value> + <value>cell-range</value> + </choice> + </attribute> + </optional> +</define> +<define name="table-filter-attlist" combine="interleave"> + <optional> + <attribute name="table:condition-source-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> +</define> +<define name="table-filter-attlist" combine="interleave"> + <optional> + <attribute name="table:display-duplicates" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-filter-and"> + <element name="table:filter-and"> + <oneOrMore> + <choice> + <ref name="table-filter-or"/> + <ref name="table-filter-condition"/> + </choice> + </oneOrMore> + </element> +</define> +<define name="table-filter-or"> + <element name="table:filter-or"> + <oneOrMore> + <choice> + <ref name="table-filter-and"/> + <ref name="table-filter-condition"/> + </choice> + </oneOrMore> + </element> +</define> +<define name="table-filter-condition"> + <element name="table:filter-condition"> + <ref name="table-filter-condition-attlist"/> + <empty/> + </element> +</define> +<define name="table-filter-condition-attlist" combine="interleave"> + <attribute name="table:field-number"> + <ref name="nonNegativeInteger"/> + </attribute> +</define> +<define name="table-filter-condition-attlist" combine="interleave"> + <attribute name="table:value"> + <ref name="string"/> + </attribute> +</define> +<define name="table-filter-condition-attlist" combine="interleave"> + <attribute name="table:operator"> + <ref name="string"/> + </attribute> +</define> +<define name="table-filter-condition-attlist" combine="interleave"> + <optional> + <attribute name="table:case-sensitive" a:defaultValue="false"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-filter-condition-attlist" combine="interleave"> + <optional> + <attribute name="table:data-type" a:defaultValue="text"> + <choice> + <value>text</value> + <value>number</value> + </choice> + </attribute> + </optional> +</define> +<define name="table-data-pilot-tables"> + <element name="table:data-pilot-tables"> + <zeroOrMore> + <ref name="table-data-pilot-table"/> + </zeroOrMore> + </element> +</define> +<define name="table-data-pilot-table"> + <element name="table:data-pilot-table"> + <ref name="table-data-pilot-table-attlist"/> + <optional> + <choice> + <ref name="table-database-source-sql"/> + <ref name="table-database-source-table"/> + <ref name="table-database-source-query"/> + <ref name="table-source-service"/> + <ref name="table-source-cell-range"/> + </choice> + </optional> + <oneOrMore> + <ref name="table-data-pilot-field"/> + </oneOrMore> + </element> +</define> +<define name="table-data-pilot-table-attlist" combine="interleave"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-data-pilot-table-attlist" combine="interleave"> + <optional> + <attribute name="table:application-data"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-table-attlist" combine="interleave"> + <optional> + <attribute name="table:grand-total" a:defaultValue="both"> + <choice> + <value>none</value> + <value>row</value> + <value>column</value> + <value>both</value> + </choice> + </attribute> + </optional> +</define> +<define name="table-data-pilot-table-attlist" combine="interleave"> + <optional> + <attribute name="table:ignore-empty-rows" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-table-attlist" combine="interleave"> + <optional> + <attribute name="table:identify-categories" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-table-attlist" combine="interleave"> + <attribute name="table:target-range-address"> + <ref name="cellRangeAddress"/> + </attribute> +</define> +<define name="table-data-pilot-table-attlist" combine="interleave"> + <optional> + <attribute name="table:buttons"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-table-attlist" combine="interleave"> + <optional> + <attribute name="table:show-filter-button" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-table-attlist" combine="interleave"> + <optional> + <attribute name="table:drill-down-on-double-click" + a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-source-cell-range"> + <element name="table:source-cell-range"> + <ref name="table-source-cell-range-attlist"/> + <optional> + <ref name="table-filter"/> + </optional> + </element> +</define> +<define name="table-source-cell-range-attlist" combine="interleave"> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> +</define> +<define name="table-source-service"> + <element name="table:source-service"> + <ref name="table-source-service-attlist"/> + <empty/> + </element> +</define> +<define name="table-source-service-attlist" combine="interleave"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-source-service-attlist" combine="interleave"> + <attribute name="table:source-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-source-service-attlist" combine="interleave"> + <attribute name="table:object-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-source-service-attlist" combine="interleave"> + <optional> + <attribute name="table:user-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-source-service-attlist" combine="interleave"> + <optional> + <attribute name="table:password"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-field"> + <element name="table:data-pilot-field"> + <ref name="table-data-pilot-field-attlist"/> + <optional> + <ref name="table-data-pilot-level"/> + </optional> + <optional> + <ref name="table-data-pilot-field-reference"/> + </optional> + <optional> + <ref name="table-data-pilot-groups"/> + </optional> + </element> +</define> +<define name="table-data-pilot-field-attlist" combine="interleave"> + <attribute name="table:source-field-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-data-pilot-field-attlist" combine="interleave"> + <choice> + <attribute name="table:orientation"> + <choice> + <value>row</value> + <value>column</value> + <value>data</value> + <value>hidden</value> + </choice> + </attribute> + <group> + <attribute name="table:orientation"> + <value>page</value> + </attribute> + <attribute name="table:selected-page"> + <ref name="string"/> + </attribute> + </group> + </choice> +</define> +<define name="table-data-pilot-field-attlist" combine="interleave"> + <optional> + <attribute name="table:is-data-layout-field" a:defaultValue="false"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-field-attlist" combine="interleave"> + <optional> + <attribute name="table:function"> + <choice> + <value>auto</value> + <value>average</value> + <value>count</value> + <value>countnums</value> + <value>max</value> + <value>min</value> + <value>product</value> + <value>stdev</value> + <value>stdevp</value> + <value>sum</value> + <value>var</value> + <value>varp</value> + <ref name="string"/> + </choice> + </attribute> + </optional> +</define> +<define name="table-data-pilot-field-attlist" combine="interleave"> + <optional> + <attribute name="table:used-hierarchy" a:defaultValue="-1"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-level"> + <element name="table:data-pilot-level"> + <ref name="table-data-pilot-level-attlist"/> + <optional> + <ref name="table-data-pilot-subtotals"/> + </optional> + <optional> + <ref name="table-data-pilot-members"/> + </optional> + <optional> + <ref name="table-data-pilot-display-info"/> + </optional> + <optional> + <ref name="table-data-pilot-sort-info"/> + </optional> + <optional> + <ref name="table-data-pilot-layout-info"/> + </optional> + </element> +</define> +<define name="table-data-pilot-level-attlist" combine="interleave"> + <optional> + <attribute name="table:show-empty"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-subtotals"> + <element name="table:data-pilot-subtotals"> + <zeroOrMore> + <ref name="table-data-pilot-subtotal"/> + </zeroOrMore> + </element> +</define> +<define name="table-data-pilot-subtotal"> + <element name="table:data-pilot-subtotal"> + <ref name="table-data-pilot-subtotal-attlist"/> + <empty/> + </element> +</define> +<define name="table-data-pilot-subtotal-attlist" combine="interleave"> + <attribute name="table:function"> + <choice> + <value>auto</value> + <value>average</value> + <value>count</value> + <value>countnums</value> + <value>max</value> + <value>min</value> + <value>product</value> + <value>stdev</value> + <value>stdevp</value> + <value>sum</value> + <value>var</value> + <value>varp</value> + <ref name="string"/> + </choice> + </attribute> +</define> +<define name="table-data-pilot-members"> + <element name="table:data-pilot-members"> + <zeroOrMore> + <ref name="table-data-pilot-member"/> + </zeroOrMore> + </element> +</define> +<define name="table-data-pilot-member"> + <element name="table:data-pilot-member"> + <ref name="table-data-pilot-member-attlist"/> + <empty/> + </element> +</define> +<define name="table-data-pilot-member-attlist" combine="interleave"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-data-pilot-member-attlist" combine="interleave"> + <optional> + <attribute name="table:display"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-member-attlist" combine="interleave"> + <optional> + <attribute name="table:show-details"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-data-pilot-display-info"> + <element name="table:data-pilot-display-info"> + <ref name="table-data-pilot-display-info-attlist"/> + <empty/> + </element> +</define> +<define name="table-data-pilot-display-info-attlist" combine="interleave"> + <attribute name="table:enabled"> + <ref name="boolean"/> + </attribute> +</define> +<define name="table-data-pilot-display-info-attlist" combine="interleave"> + <attribute name="table:data-field"> + <ref name="string"/> + </attribute> +</define> +<define name="table-data-pilot-display-info-attlist" combine="interleave"> + <attribute name="table:member-count"> + <ref name="nonNegativeInteger"/> + </attribute> +</define> +<define name="table-data-pilot-display-info-attlist" combine="interleave"> + <attribute name="table:display-member-mode"> + <choice> + <value>from-top</value> + <value>from-bottom</value> + </choice> + </attribute> +</define> +<define name="table-data-pilot-sort-info"> + <element name="table:data-pilot-sort-info"> + <ref name="table-data-pilot-sort-info-attlist"/> + <empty/> + </element> +</define> +<define name="table-data-pilot-sort-info-attlist" combine="interleave"> + <choice> + <group> + <attribute name="table:sort-mode"> + <value>data</value> + </attribute> + <attribute name="table:data-field"> + <ref name="string"/> + </attribute> + </group> + <attribute name="table:sort-mode"> + <choice> + <value>none</value> + <value>manual</value> + <value>name</value> + </choice> + </attribute> + </choice> +</define> +<define name="table-data-pilot-sort-info-attlist" combine="interleave"> + <attribute name="table:order"> + <choice> + <value>ascending</value> + <value>descending</value> + </choice> + </attribute> +</define> +<define name="table-data-pilot-layout-info"> + <element name="table:data-pilot-layout-info"> + <ref name="table-data-pilot-layout-info-attlist"/> + <empty/> + </element> +</define> +<define name="table-data-pilot-layout-info-attlist" combine="interleave"> + <attribute name="table:layout-mode"> + <choice> + <value>tabular-layout</value> + <value>outline-subtotals-top</value> + <value>outline-subtotals-bottom</value> + </choice> + </attribute> +</define> +<define name="table-data-pilot-layout-info-attlist" combine="interleave"> + <attribute name="table:add-empty-lines"> + <ref name="boolean"/> + </attribute> +</define> +<define name="table-data-pilot-field-reference"> + <element name="table:data-pilot-field-reference"> + <ref name="table-data-pilot-field-reference-attlist"/> + </element> +</define> +<define name="table-data-pilot-field-reference-attlist" combine="interleave"> + <attribute name="table:field-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-data-pilot-field-reference-attlist" combine="interleave"> + <choice> + <group> + <attribute name="table:member-type"> + <value>named</value> + </attribute> + <attribute name="table:member-name"> + <ref name="string"/> + </attribute> + </group> + <attribute name="table:member-type"> + <choice> + <value>previous</value> + <value>next</value> + </choice> + </attribute> + </choice> +</define> +<define name="table-data-pilot-field-reference-attlist" combine="interleave"> + <attribute name="table:type"> + <choice> + <value>none</value> + <value>member-difference</value> + <value>member-percentage</value> + <value>member-percentage-difference</value> + <value>running-total</value> + <value>row-percentage</value> + <value>column-percentage</value> + <value>total-percentage</value> + <value>index</value> + </choice> + </attribute> +</define> +<define name="table-data-pilot-groups"> + <element name="table:data-pilot-groups"> + <ref name="table-data-pilot-groups-attlist"/> + <oneOrMore> + <ref name="table-data-pilot-group"/> + </oneOrMore> + </element> +</define> +<define name="table-data-pilot-groups-attlist" combine="interleave"> + <attribute name="table:source-field-name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-data-pilot-groups-attlist" combine="interleave"> + <choice> + <attribute name="table:date-start"> + <choice> + <ref name="dateOrDateTime"/> + <value>auto</value> + </choice> + </attribute> + <attribute name="table:start"> + <choice> + <ref name="double"/> + <value>auto</value> + </choice> + </attribute> + </choice> +</define> +<define name="table-data-pilot-groups-attlist" combine="interleave"> + <choice> + <attribute name="table:date-end"> + <choice> + <ref name="dateOrDateTime"/> + <value>auto</value> + </choice> + </attribute> + <attribute name="table:end"> + <choice> + <ref name="double"/> + <value>auto</value> + </choice> + </attribute> + </choice> +</define> +<define name="table-data-pilot-groups-attlist" combine="interleave"> + <attribute name="table:step"> + <ref name="double"/> + </attribute> +</define> +<define name="table-data-pilot-groups-attlist" combine="interleave"> + <attribute name="table:grouped-by"> + <choice> + <value>seconds</value> + <value>minutes</value> + <value>hours</value> + <value>days</value> + <value>months</value> + <value>quarters</value> + <value>years</value> + </choice> + </attribute> +</define> +<define name="table-data-pilot-group"> + <element name="table:data-pilot-group"> + <ref name="table-data-pilot-group-attlist"/> + <oneOrMore> + <ref name="table-data-pilot-group-member"/> + </oneOrMore> + </element> +</define> +<define name="table-data-pilot-group-attlist" combine="interleave"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-data-pilot-group-member"> + <element name="table:data-pilot-group-member"> + <ref name="table-data-pilot-group-member-attlist"/> + </element> +</define> +<define name="table-data-pilot-group-member-attlist" combine="interleave"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-consolidation"> + <element name="table:consolidation"> + <ref name="table-consolidation-attlist"/> + <empty/> + </element> +</define> +<define name="table-consolidation-attlist" combine="interleave"> + <attribute name="table:function"> + <choice> + <value>auto</value> + <value>average</value> + <value>count</value> + <value>countnums</value> + <value>max</value> + <value>min</value> + <value>product</value> + <value>stdev</value> + <value>stdevp</value> + <value>sum</value> + <value>var</value> + <value>varp</value> + <ref name="string"/> + </choice> + </attribute> +</define> +<define name="table-consolidation-attlist" combine="interleave"> + <attribute name="table:source-cell-range-addresses"> + <ref name="cellRangeAddressList"/> + </attribute> +</define> +<define name="table-consolidation-attlist" combine="interleave"> + <attribute name="table:target-cell-address"> + <ref name="cellAddress"/> + </attribute> +</define> +<define name="table-consolidation-attlist" combine="interleave"> + <optional> + <attribute name="table:use-labels" a:defaultValue="none"> + <choice> + <value>none</value> + <value>row</value> + <value>column</value> + <value>both</value> + </choice> + </attribute> + </optional> +</define> +<define name="table-consolidation-attlist" combine="interleave"> + <optional> + <attribute name="table:link-to-source-data" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-dde-links"> + <element name="table:dde-links"> + <oneOrMore> + <ref name="table-dde-link"/> + </oneOrMore> + </element> +</define> +<define name="table-tracked-changes"> + <element name="table:tracked-changes"> + <ref name="table-tracked-changes-attlist"/> + <zeroOrMore> + <choice> + <ref name="table-cell-content-change"/> + <ref name="table-insertion"/> + <ref name="table-deletion"/> + <ref name="table-movement"/> + </choice> + </zeroOrMore> + </element> +</define> +<define name="table-tracked-changes-attlist" combine="interleave"> + <optional> + <attribute name="table:track-changes" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-insertion"> + <element name="table:insertion"> + <ref name="table-insertion-attlist"/> + <ref name="common-table-change-attlist"/> + <ref name="office-change-info"/> + <optional> + <ref name="table-dependencies"/> + </optional> + <optional> + <ref name="table-deletions"/> + </optional> + </element> +</define> +<define name="table-insertion-attlist" combine="interleave"> + <attribute name="table:type"> + <choice> + <value>row</value> + <value>column</value> + <value>table</value> + </choice> + </attribute> +</define> +<define name="table-insertion-attlist" combine="interleave"> + <attribute name="table:position"> + <ref name="integer"/> + </attribute> +</define> +<define name="table-insertion-attlist" combine="interleave"> + <optional> + <attribute name="table:count" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="table-insertion-attlist" combine="interleave"> + <optional> + <attribute name="table:table"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="table-dependencies"> + <element name="table:dependencies"> + <oneOrMore> + <ref name="table-dependency"/> + </oneOrMore> + </element> +</define> +<define name="table-dependency"> + <element name="table:dependency"> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + <empty/> + </element> +</define> +<define name="table-deletions"> + <element name="table:deletions"> + <oneOrMore> + <choice> + <ref name="table-cell-content-deletion"/> + <ref name="table-change-deletion"/> + </choice> + </oneOrMore> + </element> +</define> +<define name="table-cell-content-deletion"> + <element name="table:cell-content-deletion"> + <optional> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <ref name="table-cell-address"/> + </optional> + <optional> + <ref name="table-change-track-table-cell"/> + </optional> + </element> +</define> +<define name="table-change-deletion"> + <element name="table:change-deletion"> + <optional> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + </optional> + <empty/> + </element> +</define> +<define name="table-deletion"> + <element name="table:deletion"> + <ref name="table-deletion-attlist"/> + <ref name="common-table-change-attlist"/> + <ref name="office-change-info"/> + <optional> + <ref name="table-dependencies"/> + </optional> + <optional> + <ref name="table-deletions"/> + </optional> + <optional> + <ref name="table-cut-offs"/> + </optional> + </element> +</define> +<define name="table-deletion-attlist" combine="interleave"> + <attribute name="table:type"> + <choice> + <value>row</value> + <value>column</value> + <value>table</value> + </choice> + </attribute> +</define> +<define name="table-deletion-attlist" combine="interleave"> + <attribute name="table:position"> + <ref name="integer"/> + </attribute> +</define> +<define name="table-deletion-attlist" combine="interleave"> + <optional> + <attribute name="table:table"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="table-deletion-attlist" combine="interleave"> + <optional> + <attribute name="table:multi-deletion-spanned"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="table-cut-offs"> + <element name="table:cut-offs"> + <choice> + <oneOrMore> + <ref name="table-movement-cut-off"/> + </oneOrMore> + <group> + <ref name="table-insertion-cut-off"/> + <zeroOrMore> + <ref name="table-movement-cut-off"/> + </zeroOrMore> + </group> + </choice> + </element> +</define> +<define name="table-insertion-cut-off"> + <element name="table:insertion-cut-off"> + <ref name="table-insertion-cut-off-attlist"/> + <empty/> + </element> +</define> +<define name="table-insertion-cut-off-attlist" combine="interleave"> + <attribute name="table:id"> + <ref name="string"/> + </attribute> +</define> +<define name="table-insertion-cut-off-attlist" combine="interleave"> + <attribute name="table:position"> + <ref name="integer"/> + </attribute> +</define> +<define name="table-movement-cut-off"> + <element name="table:movement-cut-off"> + <ref name="table-movement-cut-off-attlist"/> + <empty/> + </element> +</define> +<define name="table-movement-cut-off-attlist" combine="interleave"> + <choice> + <attribute name="table:position"> + <ref name="integer"/> + </attribute> + <group> + <attribute name="table:start-position"> + <ref name="integer"/> + </attribute> + <attribute name="table:end-position"> + <ref name="integer"/> + </attribute> + </group> + </choice> +</define> +<define name="table-movement"> + <element name="table:movement"> + <ref name="common-table-change-attlist"/> + <ref name="table-source-range-address"/> + <ref name="table-target-range-address"/> + <ref name="office-change-info"/> + <optional> + <ref name="table-dependencies"/> + </optional> + <optional> + <ref name="table-deletions"/> + </optional> + </element> +</define> +<define name="table-source-range-address"> + <element name="table:source-range-address"> + <ref name="common-table-range-attlist"/> + <empty/> + </element> +</define> + +<define name="table-target-range-address"> + <element name="table:target-range-address"> + <ref name="common-table-range-attlist"/> + <empty/> + </element> +</define> + + +<define name="common-table-range-attlist" combine="interleave"> + <choice> + <group> + <ref name="common-table-cell-address-attlist"/> + </group> + <group> + <ref name="common-table-cell-range-address-attlist"/> + </group> + </choice> +</define> +<define name="common-table-cell-address-attlist" combine="interleave"> + <attribute name="table:column"> + <ref name="integer"/> + </attribute> + <attribute name="table:row"> + <ref name="integer"/> + </attribute> + <attribute name="table:table"> + <ref name="integer"/> + </attribute> +</define> +<define name="common-table-cell-range-address-attlist" combine="interleave"> + <attribute name="table:start-column"> + <ref name="integer"/> + </attribute> + <attribute name="table:start-row"> + <ref name="integer"/> + </attribute> + <attribute name="table:start-table"> + <ref name="integer"/> + </attribute> + <attribute name="table:end-column"> + <ref name="integer"/> + </attribute> + <attribute name="table:end-row"> + <ref name="integer"/> + </attribute> + <attribute name="table:end-table"> + <ref name="integer"/> + </attribute> +</define> +<define name="table-change-track-table-cell" combine="interleave"> + <element name="table:change-track-table-cell"> + <ref name="table-change-track-table-cell-attlist"/> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> +</define> +<define name="table-change-track-table-cell-attlist" combine="interleave"> + <optional> + <attribute name="table:cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> +</define> +<define name="table-change-track-table-cell-attlist" combine="interleave"> + <optional> + <attribute name="table:matrix-covered" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-change-track-table-cell-attlist" combine="interleave"> + <optional> + <attribute name="table:formula"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:number-matrix-columns-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:number-matrix-rows-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <ref name="common-value-and-type-attlist"/> + </optional> +</define> +<define name="table-cell-content-change"> + <element name="table:cell-content-change"> + <ref name="common-table-change-attlist"/> + <ref name="table-cell-address"/> + <ref name="office-change-info"/> + <optional> + <ref name="table-dependencies"/> + </optional> + <optional> + <ref name="table-deletions"/> + </optional> + <ref name="table-previous"/> + </element> +</define> +<define name="table-cell-address"> + <element name="table:cell-address"> + <ref name="common-table-cell-address-attlist"/> + <empty/> + </element> +</define> +<define name="table-previous"> + <element name="table:previous"> + <optional> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + </optional> + <ref name="table-change-track-table-cell"/> + </element> +</define> +<define name="common-table-change-attlist" combine="interleave"> + <attribute name="table:id"> + <ref name="string"/> + </attribute> +</define> +<define name="common-table-change-attlist" combine="interleave"> + <optional> + <attribute name="table:acceptance-state" a:defaultValue="pending"> + <choice> + <value>accepted</value> + <value>rejected</value> + <value>pending</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-table-change-attlist" combine="interleave"> + <optional> + <attribute name="table:rejecting-change-id"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-handout-master"> + <element name="style:handout-master"> + <ref name="common-presentation-header-footer-attlist"/> + <ref name="style-handout-master-attlist"/> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + </element> +</define> +<define name="style-handout-master-attlist" combine="interleave"> + <optional> + <attribute name="presentation:presentation-page-layout-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-handout-master-attlist" combine="interleave"> + <attribute name="style:page-layout-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="style-handout-master-attlist" combine="interleave"> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="draw-layer-set"> + <element name="draw:layer-set"> + <zeroOrMore> + <ref name="draw-layer"/> + </zeroOrMore> + </element> +</define> +<define name="draw-layer"> + <element name="draw:layer"> + <ref name="draw-layer-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + </element> +</define> +<define name="draw-layer-attlist" combine="interleave"> + <attribute name="draw:name"> + <ref name="string"/> + </attribute> +</define> +<define name="draw-layer-attlist" combine="interleave"> + <optional> + <attribute name="draw:protected" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-layer-attlist" combine="interleave"> + <optional> + <attribute name="draw:display" a:defaultValue="always"> + <choice> + <value>always</value> + <value>screen</value> + <value>printer</value> + <value>none</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-page"> + <element name="draw:page"> + <ref name="common-presentation-header-footer-attlist"/> + <ref name="draw-page-attlist"/> + <optional> + <ref name="office-forms"/> + </optional> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + <optional> + <choice> + <ref name="presentation-animations"/> + <ref name="animation-element"/> + </choice> + </optional> + <optional> + <ref name="presentation-notes"/> + </optional> + </element> +</define> +<define name="draw-page-attlist" combine="interleave"> + <optional> + <attribute name="draw:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-page-attlist" combine="interleave"> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="draw-page-attlist" combine="interleave"> + <attribute name="draw:master-page-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="draw-page-attlist" combine="interleave"> + <optional> + <attribute name="presentation:presentation-page-layout-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="common-presentation-header-footer-attlist" combine="interleave"> + <optional> + <attribute name="presentation:use-header-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-presentation-header-footer-attlist" combine="interleave"> + <optional> + <attribute name="presentation:use-footer-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-presentation-header-footer-attlist" combine="interleave"> + <optional> + <attribute name="presentation:use-date-time-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-page-attlist" combine="interleave"> + <optional> + <attribute name="draw:id"> + <ref name="ID"/> + </attribute> + </optional> +</define> +<define name="draw-page-attlist" combine="interleave"> + <optional> + <attribute name="draw:nav-order"> + <ref name="IDREFS"/> + </attribute> + </optional> +</define> +<define name="shape"> + <choice> + <ref name="draw-rect"/> + <ref name="draw-line"/> + <ref name="draw-polyline"/> + <ref name="draw-polygon"/> + <ref name="draw-regular-polygon"/> + <ref name="draw-path"/> + <ref name="draw-circle"/> + <ref name="draw-ellipse"/> + <ref name="draw-g"/> + <ref name="draw-page-thumbnail"/> + <ref name="draw-frame"/> + <ref name="draw-measure"/> + <ref name="draw-caption"/> + <ref name="draw-connector"/> + <ref name="draw-control"/> + <ref name="dr3d-scene"/> + <ref name="draw-custom-shape"/> + </choice> +</define> +<define name="draw-rect"> + <element name="draw:rect"> + <ref name="draw-rect-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="draw-rect-attlist" combine="interleave"> + <optional> + <attribute name="draw:corner-radius"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="draw-line"> + <element name="draw:line"> + <ref name="draw-line-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="draw-line-attlist" combine="interleave"> + <attribute name="svg:x1"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y1"> + <ref name="coordinate"/> + </attribute> +</define> +<define name="draw-line-attlist" combine="interleave"> + <attribute name="svg:x2"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y2"> + <ref name="coordinate"/> + </attribute> +</define> +<define name="draw-polyline"> + <element name="draw:polyline"> + <ref name="common-draw-points-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="common-draw-points-attlist"> + <attribute name="draw:points"> + <ref name="points"/> + </attribute> +</define> +<define name="draw-polygon"> + <element name="draw:polygon"> + <ref name="common-draw-points-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="draw-regular-polygon"> + <element name="draw:regular-polygon"> + <ref name="draw-regular-polygon-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="draw-regular-polygon-attlist" combine="interleave"> + <choice> + <attribute name="draw:concave"> + <value>false</value> + </attribute> + <group> + <attribute name="draw:concave"> + <value>true</value> + </attribute> + <ref name="draw-regular-polygon-sharpness-attlist"/> + </group> + </choice> +</define> +<define name="draw-regular-polygon-attlist" combine="interleave"> + <attribute name="draw:corners"> + <ref name="positiveInteger"/> + </attribute> +</define> +<define name="draw-regular-polygon-sharpness-attlist"> + <attribute name="draw:sharpness"> + <ref name="percent"/> + </attribute> +</define> +<define name="draw-path"> + <element name="draw:path"> + <ref name="common-draw-path-data-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="common-draw-path-data-attlist"> + <attribute name="svg:d"> + <ref name="pathData"/> + </attribute> +</define> +<define name="draw-circle"> + <element name="draw:circle"> + <ref name="draw-circle-attlist"/> + <ref name="common-draw-circle-ellipse-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="common-draw-circle-ellipse-attlist" combine="interleave"> + <optional> + <attribute name="svg:cx"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:cy"> + <ref name="coordinate"/> + </attribute> + </optional> +</define> +<define name="draw-circle-attlist" combine="interleave"> + <optional> + <attribute name="svg:r"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="common-draw-circle-ellipse-attlist" combine="interleave"> + <optional> + <attribute name="draw:kind" a:defaultValue="full"> + <choice> + <value>full</value> + <value>section</value> + <value>cut</value> + <value>arc</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-draw-circle-ellipse-attlist" combine="interleave"> + <optional> + <attribute name="draw:start-angle"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="common-draw-circle-ellipse-attlist" combine="interleave"> + <optional> + <attribute name="draw:end-angle"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="draw-ellipse"> + <element name="draw:ellipse"> + <ref name="common-draw-circle-ellipse-attlist"/> + <ref name="draw-ellipse-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="draw-ellipse-attlist" combine="interleave"> + <optional> + <attribute name="svg:rx"> + <ref name="length"/> + </attribute> + <attribute name="svg:ry"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="draw-connector"> + <element name="draw:connector"> + <ref name="draw-connector-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="draw-connector-attlist" combine="interleave"> + <optional> + <attribute name="draw:type" a:defaultValue="standard"> + <choice> + <value>standard</value> + <value>lines</value> + <value>line</value> + <value>curve</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-connector-attlist" combine="interleave"> + <optional> + <attribute name="svg:x1"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y1"> + <ref name="coordinate"/> + </attribute> + </optional> +</define> +<define name="draw-connector-attlist" combine="interleave"> + <optional> + <attribute name="draw:start-shape"> + <ref name="IDREF"/> + </attribute> + </optional> +</define> +<define name="draw-connector-attlist" combine="interleave"> + <optional> + <attribute name="draw:start-glue-point"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="draw-connector-attlist" combine="interleave"> + <optional> + <attribute name="svg:x2"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y2"> + <ref name="coordinate"/> + </attribute> + </optional> +</define> +<define name="draw-connector-attlist" combine="interleave"> + <optional> + <attribute name="draw:end-shape"> + <ref name="IDREF"/> + </attribute> + </optional> +</define> +<define name="draw-connector-attlist" combine="interleave"> + <optional> + <attribute name="draw:end-glue-point"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="draw-connector-attlist" combine="interleave"> + <optional> + <attribute name="draw:line-skew"> + <list> + <ref name="length"/> + <optional> + <ref name="length"/> + <optional> + <ref name="length"/> + </optional> + </optional> + </list> + </attribute> + </optional> +</define> +<define name="draw-caption"> + <element name="draw:caption"> + <ref name="draw-caption-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="draw-caption-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-point-x"> + <ref name="coordinate"/> + </attribute> + <attribute name="draw:caption-point-y"> + <ref name="coordinate"/> + </attribute> + </optional> +</define> +<define name="draw-caption-attlist" combine="interleave"> + <optional> + <attribute name="draw:corner-radius"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="draw-measure"> + <element name="draw:measure"> + <ref name="draw-measure-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> +</define> +<define name="draw-measure-attlist" combine="interleave"> + <attribute name="svg:x1"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y1"> + <ref name="coordinate"/> + </attribute> +</define> +<define name="draw-measure-attlist" combine="interleave"> + <attribute name="svg:x2"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y2"> + <ref name="coordinate"/> + </attribute> +</define> +<define name="draw-control"> + <element name="draw:control"> + <ref name="draw-control-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + </element> +</define> +<define name="draw-control-attlist" combine="interleave"> + <attribute name="draw:control"> + <ref name="IDREF"/> + </attribute> +</define> +<define name="draw-page-thumbnail"> + <element name="draw:page-thumbnail"> + <ref name="draw-page-thumbnail-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="presentation-shape-attlist"/> + <ref name="common-draw-shape-with-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + </element> +</define> +<define name="draw-page-thumbnail-attlist"> + <optional> + <attribute name="draw:page-number"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="draw-g"> + <element name="draw:g"> + <ref name="draw-g-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-name-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-text-spreadsheet-shape-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + </element> +</define> +<define name="draw-g-attlist" combine="interleave"> + <optional> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + </optional> +</define> +<define name="common-draw-name-attlist" combine="interleave"> + <optional> + <attribute name="draw:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-draw-caption-id-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-id"> + <ref name="IDREF"/> + </attribute> + </optional> +</define> +<define name="common-draw-position-attlist"> + <optional> + <attribute name="svg:x"> + <ref name="coordinate"/> + </attribute> + </optional> + <optional> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + </optional> +</define> +<define name="common-draw-size-attlist"> + <optional> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="common-draw-transform-attlist"> + <optional> + <attribute name="draw:transform"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-draw-viewbox-attlist"> + <attribute name="svg:viewBox"> + <list> + <ref name="integer"/> + <ref name="integer"/> + <ref name="integer"/> + <ref name="integer"/> + </list> + </attribute> +</define> +<define name="common-draw-style-name-attlist"> + <choice> + <group> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="draw:class-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> + </group> + <group> + <optional> + <attribute name="presentation:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:class-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> + </group> + </choice> +</define> +<define name="common-draw-text-style-name-attlist"> + <optional> + <attribute name="draw:text-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="common-draw-layer-name-attlist"> + <optional> + <attribute name="draw:layer"> + <data type="string"/> + </attribute> + </optional> +</define> +<define name="common-draw-id-attlist"> + <optional> + <attribute name="draw:id"> + <ref name="ID"/> + </attribute> + </optional> +</define> +<define name="common-draw-z-index-attlist"> + <optional> + <attribute name="draw:z-index"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="common-text-spreadsheet-shape-attlist" combine="interleave"> + <optional> + <attribute name="table:end-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> + <optional> + <attribute name="table:end-x"> + <ref name="coordinate"/> + </attribute> + </optional> + <optional> + <attribute name="table:end-y"> + <ref name="coordinate"/> + </attribute> + </optional> +</define> +<define name="common-text-spreadsheet-shape-attlist" combine="interleave"> + <optional> + <attribute name="table:table-background"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="common-text-spreadsheet-shape-attlist" combine="interleave"> + <ref name="common-text-anchor-attlist"/> +</define> + +<define name="common-text-anchor-attlist" combine="interleave"> + <optional> + <attribute name="text:anchor-type"> + <choice> + <value>page</value> + <value>frame</value> + <value>paragraph</value> + <value>char</value> + <value>as-char</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-text-anchor-attlist" combine="interleave"> + <optional> + <attribute name="text:anchor-page-number"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="draw-text"> + <zeroOrMore> + <choice> + <ref name="text-p"/> + <ref name="text-list"/> + </choice> + </zeroOrMore> +</define> +<define name="common-draw-shape-with-styles-attlist"> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-draw-transform-attlist"/> + <ref name="common-draw-name-attlist"/> + <ref name="common-text-spreadsheet-shape-attlist"/> +</define> +<define name="common-draw-shape-with-text-and-styles-attlist"> + <ref name="common-draw-shape-with-styles-attlist"/> + <ref name="common-draw-text-style-name-attlist"/> +</define> +<define name="draw-glue-point"> + <element name="draw:glue-point"> + <ref name="draw-glue-point-attlist"/> + <empty/> + </element> +</define> +<define name="draw-glue-point-attlist" combine="interleave"> + <attribute name="draw:id"> + <ref name="nonNegativeInteger"/> + </attribute> +</define> +<define name="draw-glue-point-attlist" combine="interleave"> + <attribute name="svg:x"> + <choice> + <ref name="distance"/> + <ref name="percent"/> + </choice> + </attribute> + <attribute name="svg:y"> + <choice> + <ref name="distance"/> + <ref name="percent"/> + </choice> + </attribute> +</define> +<define name="draw-glue-point-attlist" combine="interleave"> + <optional> + <attribute name="draw:align"> + <choice> + <value>top-left</value> + <value>top</value> + <value>top-right</value> + <value>left</value> + <value>center</value> + <value>right</value> + <value>bottom-left</value> + <value>bottom-right</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-glue-points-attlist" combine="interleave"> + <attribute name="draw:escape-direction"> + <choice> + <value>auto</value> + <value>left</value> + <value>right</value> + <value>up</value> + <value>down</value> + <value>horizontal</value> + <value>vertical</value> + </choice> + </attribute> +</define> +<define name="svg-title"> + <element name="svg:title"> + <text/> + </element> +</define> +<define name="svg-desc"> + <element name="svg:desc"> + <text/> + </element> +</define> +<define name="draw-frame"> + <element name="draw:frame"> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-rel-size-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <ref name="presentation-shape-attlist"/> + <ref name="draw-frame-attlist"/> + <zeroOrMore> + <choice> + <ref name="draw-text-box"/> + <ref name="draw-image"/> + <ref name="draw-object"/> + <ref name="draw-object-ole"/> + <ref name="draw-applet"/> + <ref name="draw-floating-frame"/> + <ref name="draw-plugin"/> + </choice> + </zeroOrMore> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <optional> + <ref name="draw-image-map"/> + </optional> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <choice> + <ref name="draw-contour-polygon"/> + <ref name="draw-contour-path"/> + </choice> + </optional> + </element> +</define> +<define name="common-draw-rel-size-attlist"> + <ref name="common-draw-size-attlist"/> + <optional> + <attribute name="style:rel-width"> + <choice> + <ref name="percent"/> + <value>scale</value> + <value>scale-min</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:rel-height"> + <choice> + <ref name="percent"/> + <value>scale</value> + <value>scale-min</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-frame-attlist" combine="interleave"> + <optional> + <attribute name="draw:copy-of"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-text-box"> + <element name="draw:text-box"> + <ref name="draw-text-box-attlist"/> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + </element> +</define> +<define name="draw-text-box-attlist" combine="interleave"> + <optional> + <attribute name="draw:chain-next-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-text-box-attlist" combine="interleave"> + <optional> + <attribute name="draw:corner-radius"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="draw-text-box-attlist" combine="interleave"> + <optional> + <attribute name="fo:min-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:min-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="draw-text-box-attlist" combine="interleave"> + <optional> + <attribute name="fo:max-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:max-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="draw-text-box-attlist" combine="interleave"> + <optional> + <ref name="text-id"/> + </optional> +</define> +<define name="draw-image"> + <element name="draw:image"> + <ref name="draw-image-attlist"/> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-binary-data"/> + </choice> + <ref name="draw-text"/> + </element> +</define> +<define name="common-draw-data-attlist" combine="interleave"> + <group> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <choice> + <value>simple</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="xlink:show" a:defaultValue="embed"> + <choice> + <value>embed</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onLoad"> + <choice> + <value>onLoad</value> + </choice> + </attribute> + </optional> + </group> +</define> + +<define name="office-binary-data"> + <element name="office:binary-data"> + <ref name="base64Binary"/> + </element> +</define> +<define name="draw-image-attlist" combine="interleave"> + <optional> + <attribute name="draw:filter-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-object"> + <element name="draw:object"> + <ref name="draw-object-attlist"/> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-document"/> + <ref name="math-math"/> + </choice> + </element> +</define> + +<define name="draw-object-ole"> + <element name="draw:object-ole"> + <ref name="draw-object-ole-attlist"/> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-binary-data"/> + </choice> + </element> +</define> +<define name="draw-object-attlist" combine="interleave"> + <optional> + <attribute name="draw:notify-on-update-of-ranges"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-object-ole-attlist" combine="interleave"> + <optional> + <attribute name="draw:class-id"/> + </optional> +</define> +<define name="draw-applet"> + <element name="draw:applet"> + <ref name="draw-applet-attlist"/> + <optional> + <ref name="common-draw-data-attlist"/> + </optional> + <zeroOrMore> + <ref name="draw-param"/> + </zeroOrMore> + </element> +</define> +<define name="draw-applet-attlist" combine="interleave"> + <optional> + <attribute name="draw:code"/> + </optional> +</define> +<define name="draw-applet-attlist" combine="interleave"> + <optional> + <attribute name="draw:object"/> + </optional> +</define> +<define name="draw-applet-attlist" combine="interleave"> + <optional> + <attribute name="draw:archive"/> + </optional> +</define> +<define name="draw-applet-attlist" combine="interleave"> + <optional> + <attribute name="draw:may-script" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-plugin"> + <element name="draw:plugin"> + <ref name="draw-plugin-attlist"/> + <ref name="common-draw-data-attlist"/> + <zeroOrMore> + <ref name="draw-param"/> + </zeroOrMore> + </element> +</define> +<define name="draw-plugin-attlist" combine="interleave"> + <optional> + <attribute name="draw:mime-type"/> + </optional> +</define> +<define name="draw-param"> + <element name="draw:param"> + <ref name="draw-param-attlist"/> + <empty/> + </element> +</define> +<define name="draw-param-attlist" combine="interleave"> + <optional> + <attribute name="draw:name"/> + </optional> +</define> +<define name="draw-param-attlist" combine="interleave"> + <optional> + <attribute name="draw:value"/> + </optional> +</define> +<define name="draw-floating-frame"> + <element name="draw:floating-frame"> + <ref name="draw-floating-frame-attlist"/> + <ref name="common-draw-data-attlist"/> + </element> +</define> +<define name="draw-floating-frame-attlist" combine="interleave"> + <optional> + <attribute name="draw:frame-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-contour-polygon"> + <element name="draw:contour-polygon"> + <ref name="common-contour-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-points-attlist"/> + <empty/> + </element> +</define> + +<define name="draw-contour-path"> + <element name="draw:contour-path"> + <ref name="common-contour-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-path-data-attlist"/> + <empty/> + </element> +</define> +<define name="common-contour-attlist" combine="interleave"> + <attribute name="draw:recreate-on-edit"> + <ref name="boolean"/> + </attribute> +</define> +<define name="draw-a"> + <element name="draw:a"> + <ref name="draw-a-attlist"/> + <ref name="draw-frame"/> + </element> +</define> +<define name="draw-a-attlist" combine="interleave"> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onRequest"> + <choice> + <value>onRequest</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-a-attlist" combine="interleave"> + <optional> + <attribute name="office:target-frame-name"> + <ref name="targetFrameName"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-a-attlist" combine="interleave"> + <optional> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-a-attlist" combine="interleave"> + <optional> + <attribute name="office:title"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-a-attlist" combine="interleave"> + <optional> + <attribute name="office:server-map" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-image-map"> + <element name="draw:image-map"> + <zeroOrMore> + <choice> + <ref name="draw-area-rectangle"/> + <ref name="draw-area-circle"/> + <ref name="draw-area-polygon"/> + </choice> + </zeroOrMore> + </element> +</define> +<define name="draw-area-rectangle"> + <element name="draw:area-rectangle"> + <ref name="common-draw-area-attlist"/> + <attribute name="svg:x"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + </element> +</define> +<define name="draw-area-circle"> + <element name="draw:area-circle"> + <ref name="common-draw-area-attlist"/> + <attribute name="svg:cx"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:cy"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:r"> + <ref name="length"/> + </attribute> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + </element> +</define> +<define name="draw-area-polygon"> + <element name="draw:area-polygon"> + <ref name="common-draw-area-attlist"/> + <attribute name="svg:x"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-points-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + </element> +</define> +<define name="common-draw-area-attlist" combine="interleave"> + <optional> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <choice> + <value>simple</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="office:target-frame-name"> + <ref name="targetFrameName"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-draw-area-attlist" combine="interleave"> + <optional> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-draw-area-attlist" combine="interleave"> + <optional> + <attribute name="draw:nohref"> + <choice> + <value>nohref</value> + </choice> + </attribute> + </optional> +</define> +<define name="dr3d-scene"> + <element name="dr3d:scene"> + <ref name="dr3d-scene-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-text-spreadsheet-shape-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <zeroOrMore> + <ref name="dr3d-light"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shapes3d"/> + </zeroOrMore> + </element> +</define> + +<define name="shapes3d"> + <choice> + <ref name="dr3d-scene"/> + <ref name="dr3d-extrude"/> + <ref name="dr3d-sphere"/> + <ref name="dr3d-rotate"/> + <ref name="dr3d-cube"/> + </choice> +</define> +<define name="dr3d-scene-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:vrp"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:vpn"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:vup"> + <ref name="vector3D"/> + </attribute> + </optional> +</define> +<define name="dr3d-scene-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:projection"> + <choice> + <value>parallel</value> + <value>perspective</value> + </choice> + </attribute> + </optional> +</define> +<define name="dr3d-scene-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:distance"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="dr3d-scene-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:focal-length"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="dr3d-scene-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:shadow-slant"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="dr3d-scene-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:shade-mode"> + <choice> + <value>flat</value> + <value>phong</value> + <value>gouraud</value> + <value>draft</value> + </choice> + </attribute> + </optional> +</define> +<define name="dr3d-scene-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:ambient-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="dr3d-scene-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:lighting-mode"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="common-dr3d-transform-attlist"> + <optional> + <attribute name="dr3d:transform"/> + </optional> +</define> +<define name="dr3d-light"> + <element name="dr3d:light"> + <ref name="dr3d-light-attlist"/> + <empty/> + </element> +</define> +<define name="dr3d-light-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:diffuse-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="dr3d-light-attlist" combine="interleave"> + <attribute name="dr3d:direction"> + <ref name="vector3D"/> + </attribute> +</define> +<define name="dr3d-light-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:enabled"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="dr3d-light-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:specular"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="dr3d-cube"> + <element name="dr3d:cube"> + <ref name="dr3d-cube-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <empty/> + </element> +</define> +<define name="dr3d-cube-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:min-edge"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:max-edge"> + <ref name="vector3D"/> + </attribute> + </optional> +</define> +<define name="dr3d-sphere"> + <element name="dr3d:sphere"> + <ref name="dr3d-sphere-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <empty/> + </element> +</define> +<define name="dr3d-sphere-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:center"> + <ref name="vector3D"/> + </attribute> + </optional> +</define> +<define name="dr3d-sphere-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:size"> + <ref name="vector3D"/> + </attribute> + </optional> +</define> +<define name="dr3d-extrude"> + <element name="dr3d:extrude"> + <ref name="common-draw-path-data-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <empty/> + </element> +</define> +<define name="dr3d-rotate"> + <element name="dr3d:rotate"> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-path-data-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <empty/> + </element> +</define> +<define name="draw-custom-shape"> + <element name="draw:custom-shape"> + <ref name="draw-custom-shape-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + <optional> + <ref name="draw-enhanced-geometry"/> + </optional> + </element> +</define> +<define name="draw-custom-shape-attlist" combine="interleave"> + <optional> + <attribute name="draw:engine"> + <ref name="namespacedToken"/> + </attribute> + </optional> +</define> +<define name="draw-custom-shape-attlist" combine="interleave"> + <optional> + <attribute name="draw:data"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry"> + <element name="draw:enhanced-geometry"> + <ref name="draw-enhanced-geometry-attlist"/> + <zeroOrMore> + <ref name="draw-equation"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-handle"/> + </zeroOrMore> + </element> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:type" a:defaultValue="non-primitive"> + <ref name="custom-shape-type"/> + </attribute> + </optional> +</define> + +<define name="custom-shape-type"> + <choice> + <value>non-primitive</value> + <ref name="string"/> + </choice> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="svg:viewBox"> + <list> + <ref name="integer"/> + <ref name="integer"/> + <ref name="integer"/> + <ref name="integer"/> + </list> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:mirror-vertical" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:mirror-horizontal" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:text-rotate-angle" a:defaultValue="0"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-allowed" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:text-path-allowed" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:concentric-gradient-fill-allowed" + a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-brightness" a:defaultValue="33%"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-depth" a:defaultValue="36pt 0"> + <list> + <ref name="length"/> + <ref name="double"/> + </list> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-diffusion" a:defaultValue="0%"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-number-of-line-segments" + a:defaultValue="30"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-light-face" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-first-light-harsh" + a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-second-light-harsh" + a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-first-light-level" + a:defaultValue="66%"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-second-light-level" + a:defaultValue="66%"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-first-light-direction" + a:defaultValue="(5 0 1)"> + <ref name="vector3D"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-second-light-direction" + a:defaultValue="(-5 0 1)"> + <ref name="vector3D"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-metal" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:shade-mode" a:defaultValue="flat"> + <choice> + <value>flat</value> + <value>phong</value> + <value>gouraud</value> + <value>draft</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-rotation-angle" a:defaultValue="0 0"> + <list> + <ref name="double"/> + <ref name="double"/> + </list> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-rotation-center"> + <ref name="vector3D"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-shininess" a:defaultValue="50%"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-skew" a:defaultValue="50 45"> + <list> + <ref name="double"/> + <ref name="double"/> + </list> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-specularity" a:defaultValue="0%"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:projection" a:defaultValue="parallel"> + <choice> + <value>parallel</value> + <value>perspective</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-viewpoint" + a:defaultValue="3.5cm -3.5cm 25cm"> + <ref name="point3D"/> + </attribute> + </optional> +</define> + +<define name="point3D"> + <data type="string"/> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-origin" a:defaultValue="0.5 -0.5"> + <list> + <ref name="double"/> + <ref name="double"/> + </list> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:extrusion-color" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:enhanced-path"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:path-stretchpoint-x" a:defaultValue="0"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="draw:path-stretchpoint-y" a:defaultValue="0"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:text-areas"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:glue-points"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:glue-point-type" a:defaultValue="none"> + <choice> + <value>none</value> + <value>segments</value> + <value>rectangle</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:glue-point-leaving-directions"/> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:text-path" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:text-path-mode" a:defaultValue="normal"> + <choice> + <value>normal</value> + <value>path</value> + <value>shape</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:text-path-scale" a:defaultValue="path"> + <choice> + <value>path</value> + <value>shape</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:text-path-same-letter-heights" + a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-enhanced-geometry-attlist" combine="interleave"> + <optional> + <attribute name="draw:modifiers"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-equation"> + <element name="draw:equation"> + <ref name="draw-equation-attlist"/> + <empty/> + </element> +</define> +<define name="draw-equation-attlist" combine="interleave"> + <optional> + <attribute name="draw:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-equation-attlist" combine="interleave"> + <optional> + <attribute name="draw:formula"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-handle"> + <element name="draw:handle"> + <ref name="draw-handle-attlist"/> + <empty/> + </element> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-mirror-vertical" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-mirror-horizontal" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-switched" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <attribute name="draw:handle-position"> + <ref name="string"/> + </attribute> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-range-x-minimum"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-range-x-maximum"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-range-y-minimum"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-range-y-maximum"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-polar"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-radius-range-minimum"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-handle-attlist" combine="interleave"> + <optional> + <attribute name="draw:handle-radius-range-maximum"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="presentation-shape-attlist" combine="interleave"> + <optional> + <attribute name="presentation:class"> + <ref name="presentation-classes"/> + </attribute> + </optional> +</define> +<define name="presentation-classes"> + <choice> + <value>title</value> + <value>outline</value> + <value>subtitle</value> + <value>text</value> + <value>graphic</value> + <value>object</value> + <value>chart</value> + <value>table</value> + <value>orgchart</value> + <value>page</value> + <value>notes</value> + <value>handout</value> + <value>header</value> + <value>footer</value> + <value>date-time</value> + <value>page-number</value> + </choice> +</define> +<define name="presentation-shape-attlist" combine="interleave"> + <optional> + <attribute name="presentation:placeholder"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-shape-attlist" combine="interleave"> + <optional> + <attribute name="presentation:user-transformed"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-animations"> + <element name="presentation:animations"> + <zeroOrMore> + <choice> + <ref name="presentation-animation-elements"/> + <ref name="presentation-animation-group"/> + </choice> + </zeroOrMore> + </element> +</define> +<define name="presentation-animation-elements"> + <choice> + <ref name="presentation-show-shape"/> + <ref name="presentation-show-text"/> + <ref name="presentation-hide-shape"/> + <ref name="presentation-hide-text"/> + <ref name="presentation-dim"/> + <ref name="presentation-play"/> + </choice> +</define> +<define name="presentation-sound"> + <element name="presentation:sound"> + <ref name="presentation-sound-attlist"/> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <choice> + <value>simple</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onRequest"> + <choice> + <value>onRequest</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> + <empty/> + </element> +</define> +<define name="presentation-sound-attlist" combine="interleave"> + <optional> + <attribute name="presentation:play-full"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-show-shape"> + <element name="presentation:show-shape"> + <ref name="common-presentation-effect-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> +</define> +<define name="common-presentation-effect-attlist" combine="interleave"> + <attribute name="draw:shape-id"> + <ref name="IDREF"/> + </attribute> +</define> +<define name="common-presentation-effect-attlist" combine="interleave"> + <optional> + <attribute name="presentation:effect" a:defaultValue="none"> + <ref name="presentationEffects"/> + </attribute> + </optional> +</define> +<define name="presentationEffects"> + <choice> + <value>none</value> + <value>fade</value> + <value>move</value> + <value>stripes</value> + <value>open</value> + <value>close</value> + <value>dissolve</value> + <value>wavyline</value> + <value>random</value> + <value>lines</value> + <value>laser</value> + <value>appear</value> + <value>hide</value> + <value>move-short</value> + <value>checkerboard</value> + <value>rotate</value> + <value>stretch</value> + </choice> +</define> +<define name="common-presentation-effect-attlist" combine="interleave"> + <optional> + <attribute name="presentation:direction" a:defaultValue="none"> + <ref name="presentationEffectDirections"/> + </attribute> + </optional> +</define> +<define name="presentationEffectDirections"> + <choice> + <value>none</value> + <value>from-left</value> + <value>from-top</value> + <value>from-right</value> + <value>from-bottom</value> + <value>from-center</value> + <value>from-upper-left</value> + <value>from-upper-right</value> + <value>from-lower-left</value> + <value>from-lower-right</value> + <value>to-left</value> + <value>to-top</value> + <value>to-right</value> + <value>to-bottom</value> + <value>to-upper-left</value> + <value>to-upper-right</value> + <value>to-lower-right</value> + <value>to-lower-left</value> + <value>path</value> + <value>spiral-inward-left</value> + <value>spiral-inward-right</value> + <value>spiral-outward-left</value> + <value>spiral-outward-right</value> + <value>vertical</value> + <value>horizontal</value> + <value>to-center</value> + <value>clockwise</value> + <value>counter-clockwise</value> + </choice> +</define> +<define name="common-presentation-effect-attlist" combine="interleave"> + <optional> + <attribute name="presentation:speed" a:defaultValue="medium"> + <ref name="presentationSpeeds"/> + </attribute> + </optional> +</define> +<define name="presentationSpeeds"> + <choice> + <value>slow</value> + <value>medium</value> + <value>fast</value> + </choice> +</define> +<define name="common-presentation-effect-attlist" combine="interleave"> + <optional> + <attribute name="presentation:delay"> + <ref name="duration"/> + </attribute> + </optional> +</define> +<define name="common-presentation-effect-attlist" combine="interleave"> + <optional> + <attribute name="presentation:start-scale" a:defaultValue="100%"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="common-presentation-effect-attlist" combine="interleave"> + <optional> + <attribute name="presentation:path-id"/> + </optional> +</define> +<define name="presentation-show-text"> + <element name="presentation:show-text"> + <ref name="common-presentation-effect-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> +</define> +<define name="presentation-hide-shape"> + <element name="presentation:hide-shape"> + <ref name="common-presentation-effect-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> +</define> +<define name="presentation-hide-text"> + <element name="presentation:hide-text"> + <ref name="common-presentation-effect-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> +</define> +<define name="presentation-dim"> + <element name="presentation:dim"> + <ref name="presentation-dim-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> +</define> +<define name="presentation-dim-attlist" combine="interleave"> + <attribute name="draw:shape-id"> + <ref name="IDREF"/> + </attribute> +</define> +<define name="presentation-dim-attlist" combine="interleave"> + <attribute name="draw:color"> + <ref name="color"/> + </attribute> +</define> +<define name="presentation-play"> + <element name="presentation:play"> + <ref name="presentation-play-attlist"/> + <empty/> + </element> +</define> +<define name="presentation-play-attlist" combine="interleave"> + <attribute name="draw:shape-id"> + <ref name="IDREF"/> + </attribute> + <optional> + <attribute name="presentation:speed" a:defaultValue="medium"> + <ref name="presentationSpeeds"/> + </attribute> + </optional> +</define> +<define name="presentation-animation-group"> + <element name="presentation:animation-group"> + <zeroOrMore> + <ref name="presentation-animation-elements"/> + </zeroOrMore> + </element> +</define> +<define name="common-anim-attlist" combine="interleave"> + <optional> + <attribute name="presentation:node-type" a:defaultValue="default"> + <choice> + <value>default</value> + <value>on-click</value> + <value>with-previous</value> + <value>after-previous</value> + <value>timing-root</value> + <value>main-sequence</value> + <value>interactive-sequence</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-anim-attlist" combine="interleave"> + <optional> + <attribute name="presentation:preset-id"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-anim-attlist" combine="interleave"> + <optional> + <attribute name="presentation:preset-sub-type"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-anim-attlist" combine="interleave"> + <optional> + <attribute name="presentation:preset-class" a:defaultValue="custom"> + <choice> + <value>custom</value> + <value>entrance</value> + <value>exit</value> + <value>emphasis</value> + <value>motion-path</value> + <value>ole-action</value> + <value>media-call</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-anim-attlist" combine="interleave"> + <optional> + <attribute name="presentation:master-element"> + <ref name="IDREF"/> + </attribute> + </optional> +</define> +<define name="common-anim-attlist" combine="interleave"> + <optional> + <attribute name="presentation:group-id"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="presentation-event-listener"> + <element name="presentation:event-listener"> + <ref name="presentation-event-listener-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> +</define> +<define name="presentation-event-listener-attlist" combine="interleave"> + <attribute name="script:event-name"> + <ref name="string"/> + </attribute> +</define> +<define name="presentation-event-listener-attlist" combine="interleave"> + <attribute name="presentation:action"> + <choice> + <value>none</value> + <value>previous-page</value> + <value>next-page</value> + <value>first-page</value> + <value>last-page</value> + <value>hide</value> + <value>stop</value> + <value>execute</value> + <value>show</value> + <value>verb</value> + <value>fade-out</value> + <value>sound</value> + </choice> + </attribute> +</define> +<define name="presentation-event-listener-attlist" combine="interleave"> + <optional> + <attribute name="presentation:effect" a:defaultValue="none"> + <ref name="presentationEffects"/> + </attribute> + </optional> +</define> +<define name="presentation-event-listener-attlist" combine="interleave"> + <optional> + <attribute name="presentation:direction" a:defaultValue="none"> + <ref name="presentationEffectDirections"/> + </attribute> + </optional> +</define> +<define name="presentation-event-listener-attlist" combine="interleave"> + <optional> + <attribute name="presentation:speed" a:defaultValue="medium"> + <ref name="presentationSpeeds"/> + </attribute> + </optional> +</define> +<define name="presentation-event-listener-attlist" combine="interleave"> + <optional> + <attribute name="presentation:start-scale" a:defaultValue="100%"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="presentation-event-listener-attlist" combine="interleave"> + <optional> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <choice> + <value>simple</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="xlink:show" a:defaultValue="embed"> + <choice> + <value>embed</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onRequest"> + <choice> + <value>onRequest</value> + </choice> + </attribute> + </optional> +</define> +<define name="presentation-event-listener-attlist" combine="interleave"> + <optional> + <attribute name="presentation:verb"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="paragraph-content" combine="choice"> + <element name="presentation:header"> + <empty/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="presentation:footer"> + <empty/> + </element> +</define> +<define name="paragraph-content" combine="choice"> + <element name="presentation:date-time"> + <empty/> + </element> +</define> +<define name="presentation-decls"> + <zeroOrMore> + <ref name="presentation-decl"/> + </zeroOrMore> +</define> +<define name="presentation-decl" combine="choice"> + <element name="presentation:header-decl"> + <ref name="presentation-header-decl-attlist"/> + <text/> + </element> +</define> +<define name="presentation-header-decl-attlist" combine="interleave"> + <attribute name="presentation:name"> + <ref name="string"/> + </attribute> +</define> +<define name="presentation-decl" combine="choice"> + <element name="presentation:footer-decl"> + <ref name="presentation-footer-decl-attlist"/> + <text/> + </element> +</define> +<define name="presentation-footer-decl-attlist" combine="interleave"> + <attribute name="presentation:name"> + <ref name="string"/> + </attribute> +</define> +<define name="presentation-decl" combine="choice"> + <element name="presentation:date-time-decl"> + <ref name="presentation-date-time-decl-attlist"/> + <text/> + </element> +</define> +<define name="presentation-date-time-decl-attlist" combine="interleave"> + <attribute name="presentation:name"> + <ref name="string"/> + </attribute> +</define> +<define name="presentation-date-time-decl-attlist" combine="interleave"> + <attribute name="presentation:source"> + <choice> + <value>fixed</value> + <value>current-date</value> + </choice> + </attribute> +</define> +<define name="presentation-date-time-decl-attlist" combine="interleave"> + <optional> + <attribute name="style:data-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="presentation-settings"> + <optional> + <element name="presentation:settings"> + <ref name="presentation-settings-attlist"/> + <zeroOrMore> + <ref name="presentation-show"/> + </zeroOrMore> + </element> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:start-page"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:show"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:full-screen" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:endless" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:pause"> + <ref name="duration"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:show-logo" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:force-manual" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:mouse-visible" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:mouse-as-pen" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:start-with-navigator" + a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:animations" a:defaultValue="enabled"> + <choice> + <value>enabled</value> + <value>disabled</value> + </choice> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:transition-on-click" + a:defaultValue="enabled"> + <choice> + <value>enabled</value> + <value>disabled</value> + </choice> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:stay-on-top" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-settings-attlist" combine="interleave"> + <optional> + <attribute name="presentation:show-end-of-presentation-slide" + a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="presentation-show"> + <element name="presentation:show"> + <ref name="presentation-show-attlist"/> + <empty/> + </element> +</define> +<define name="presentation-show-attlist" combine="interleave"> + <attribute name="presentation:name"> + <ref name="string"/> + </attribute> +</define> +<define name="presentation-show-attlist" combine="interleave"> + <attribute name="presentation:pages"/> +</define> +<define name="chart-chart"> + <element name="chart:chart"> + <ref name="chart-chart-attlist"/> + <optional> + <ref name="chart-title"/> + </optional> + <optional> + <ref name="chart-subtitle"/> + </optional> + <optional> + <ref name="chart-footer"/> + </optional> + <optional> + <ref name="chart-legend"/> + </optional> + <ref name="chart-plot-area"/> + <optional> + <ref name="table-table"/> + </optional> + </element> +</define> +<define name="chart-chart-attlist" combine="interleave"> + <attribute name="chart:class"> + <ref name="namespacedToken"/> + </attribute> +</define> +<define name="chart-chart-attlist" combine="interleave"> + <ref name="common-draw-size-attlist"/> +</define> +<define name="chart-chart-attlist" combine="interleave"> + <optional> + <attribute name="chart:column-mapping"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="chart-chart-attlist" combine="interleave"> + <optional> + <attribute name="chart:row-mapping"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="chart-chart-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-title"> + <element name="chart:title"> + <ref name="chart-title-attlist"/> + <optional> + <ref name="text-p"/> + </optional> + </element> +</define> +<define name="chart-title-attlist" combine="interleave"> + <optional> + <attribute name="table:cell-range"> + <ref name="cellAddress"/> + </attribute> + </optional> +</define> +<define name="chart-title-attlist" combine="interleave"> + <ref name="common-draw-position-attlist"/> +</define> +<define name="chart-title-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-subtitle"> + <element name="chart:subtitle"> + <ref name="chart-title-attlist"/> + <optional> + <ref name="text-p"/> + </optional> + </element> +</define> +<define name="chart-footer"> + <element name="chart:footer"> + <ref name="chart-title-attlist"/> + <optional> + <ref name="text-p"/> + </optional> + </element> +</define> +<define name="chart-legend"> + <element name="chart:legend"> + <ref name="chart-legend-attlist"/> + <empty/> + </element> +</define> +<define name="chart-legend-attlist" combine="interleave"> + <choice> + <group> + <attribute name="chart:legend-position"> + <choice> + <value>start</value> + <value>end</value> + <value>top</value> + <value>bottom</value> + </choice> + </attribute> + <optional> + <attribute name="chart:legend-align"> + <choice> + <value>start</value> + <value>center</value> + <value>end</value> + </choice> + </attribute> + </optional> + </group> + <attribute name="chart:legend-position"> + <choice> + <value>top-start</value> + <value>bottom-start</value> + <value>top-end</value> + <value>bottom-end</value> + </choice> + </attribute> + <empty/> + </choice> +</define> +<define name="chart-legend-attlist" combine="interleave"> + <ref name="common-draw-position-attlist"/> +</define> +<define name="chart-legend-attlist" combine="interleave"> + <choice> + <attribute name="style:legend-expansion"> + <choice> + <value>wide</value> + <value>high</value> + <value>balanced</value> + </choice> + </attribute> + <group> + <attribute name="style:legend-expansion"> + <value>custom</value> + </attribute> + <attribute name="style:legend-expansion-aspect-ratio"> + <ref name="double"/> + </attribute> + </group> + <empty/> + </choice> +</define> +<define name="chart-legend-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-plot-area"> + <element name="chart:plot-area"> + <ref name="chart-plot-area-attlist"/> + <zeroOrMore> + <ref name="dr3d-light"/> + </zeroOrMore> + <zeroOrMore> + <ref name="chart-axis"/> + </zeroOrMore> + <zeroOrMore> + <ref name="chart-series"/> + </zeroOrMore> + <optional> + <ref name="chart-stock-gain-marker"/> + </optional> + <optional> + <ref name="chart-stock-loss-marker"/> + </optional> + <optional> + <ref name="chart-stock-range-line"/> + </optional> + <optional> + <ref name="chart-wall"/> + </optional> + <optional> + <ref name="chart-floor"/> + </optional> + </element> +</define> +<define name="chart-plot-area-attlist" combine="interleave"> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> +</define> +<define name="chart-plot-area-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-plot-area-attlist" combine="interleave"> + <optional> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> +</define> +<define name="chart-plot-area-attlist" combine="interleave"> + <optional> + <attribute name="chart:data-source-has-labels" a:defaultValue="none"> + <choice> + <value>none</value> + <value>row</value> + <value>column</value> + <value>both</value> + </choice> + </attribute> + </optional> +</define> +<define name="chart-plot-area-attlist" combine="interleave"> + <ref name="dr3d-scene-attlist"/> + <ref name="common-dr3d-transform-attlist"/> +</define> +<define name="chart-wall"> + <element name="chart:wall"> + <ref name="chart-wall-attlist"/> + <empty/> + </element> +</define> +<define name="chart-wall-attlist" combine="interleave"> + <optional> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="chart-wall-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-floor"> + <element name="chart:floor"> + <ref name="chart-floor-attlist"/> + <empty/> + </element> +</define> +<define name="chart-floor-attlist" combine="interleave"> + <optional> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="chart-floor-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-axis"> + <element name="chart:axis"> + <ref name="chart-axis-attlist"/> + <optional> + <ref name="chart-title"/> + </optional> + <optional> + <ref name="chart-categories"/> + </optional> + <zeroOrMore> + <ref name="chart-grid"/> + </zeroOrMore> + </element> +</define> +<define name="chart-axis-attlist" combine="interleave"> + <attribute name="chart:dimension"> + <choice> + <value>x</value> + <value>y</value> + <value>z</value> + </choice> + </attribute> +</define> +<define name="chart-axis-attlist" combine="interleave"> + <optional> + <attribute name="chart:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="chart-axis-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-grid"> + <element name="chart:grid"> + <ref name="chart-grid-attlist"/> + </element> +</define> +<define name="chart-grid-attlist" combine="interleave"> + <optional> + <attribute name="chart:class" a:defaultValue="major"> + <choice> + <value>major</value> + <value>minor</value> + </choice> + </attribute> + </optional> +</define> +<define name="chart-grid-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-series"> + <element name="chart:series"> + <ref name="chart-series-attlist"/> + <zeroOrMore> + <ref name="chart-domain"/> + </zeroOrMore> + <optional> + <ref name="chart-mean-value"/> + </optional> + <optional> + <ref name="chart-regression-curve"/> + </optional> + <optional> + <ref name="chart-error-indicator"/> + </optional> + <zeroOrMore> + <ref name="chart-data-point"/> + </zeroOrMore> + </element> +</define> +<define name="chart-series-attlist" combine="interleave"> + <optional> + <attribute name="chart:values-cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> +</define> +<define name="chart-series-attlist" combine="interleave"> + <optional> + <attribute name="chart:label-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> +</define> +<define name="chart-series-attlist" combine="interleave"> + <optional> + <attribute name="chart:class"> + <ref name="namespacedToken"/> + </attribute> + </optional> +</define> +<define name="chart-series-attlist" combine="interleave"> + <optional> + <attribute name="chart:attached-axis"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="chart-series-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-domain"> + <element name="chart:domain"> + <optional> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> + </element> +</define> +<define name="chart-categories"> + <element name="chart:categories"> + <optional> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> + </element> +</define> +<define name="chart-data-point"> + <element name="chart:data-point"> + <ref name="chart-data-point-attlist"/> + <empty/> + </element> +</define> +<define name="chart-data-point-attlist" combine="interleave"> + <optional> + <attribute name="chart:repeated"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="chart-data-point-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> + +<define name="chart-mean-value"> + <element name="chart:mean-value"> + <ref name="chart-mean-value-attlist"/> + <empty/> + </element> +</define> +<define name="chart-mean-value-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-error-indicator"> + <element name="chart:error-indicator"> + <ref name="chart-error-indicator-attlist"/> + <empty/> + </element> +</define> +<define name="chart-error-indicator-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-regression-curve"> + <element name="chart:regression-curve"> + <ref name="chart-regression-curve-attlist"/> + <empty/> + </element> +</define> +<define name="chart-regression-curve-attlist" combine="interleave"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="chart-stock-gain-marker"> + <element name="chart:stock-gain-marker"> + <ref name="common-stock-marker-attlist"/> + </element> +</define> +<define name="chart-stock-loss-marker"> + <element name="chart:stock-loss-marker"> + <ref name="common-stock-marker-attlist"/> + </element> +</define> +<define name="chart-stock-range-line"> + <element name="chart:stock-range-line"> + <ref name="common-stock-marker-attlist"/> + </element> +</define> +<define name="common-stock-marker-attlist"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="office-forms"> + <optional> + <element name="office:forms"> + <ref name="office-forms-attlist"/> + <zeroOrMore> + <choice> + <ref name="form-form"/> + <ref name="xforms-model"/> + </choice> + </zeroOrMore> + </element> + </optional> +</define> +<define name="office-forms-attlist" combine="interleave"> + <optional> + <attribute name="form:automatic-focus" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="office-forms-attlist" combine="interleave"> + <optional> + <attribute name="form:apply-design-mode" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-form"> + <element name="form:form"> + <ref name="common-form-control-attlist"/> + <ref name="form-form-attlist"/> + <optional> + <ref name="form-properties"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <choice> + <ref name="controls"/> + <ref name="form-form"/> + </choice> + </zeroOrMore> + <optional> + <ref name="form-connection-resource"/> + </optional> + </element> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onRequest"> + <value>onRequest</value> + </attribute> + </optional> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="office:target-frame" a:defaultValue="_blank"> + <ref name="targetFrameName"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:method" a:defaultValue="get"> + <choice> + <value>get</value> + <value>post</value> + <ref name="string"/> + </choice> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:enctype" + a:defaultValue="application/x-www-form-urlencoded"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:allow-deletes" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:allow-inserts" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:allow-updates" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:apply-filter" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:command-type" a:defaultValue="command"> + <choice> + <value>table</value> + <value>query</value> + <value>command</value> + </choice> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:command"/> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:datasource"> + <choice> + <ref name="anyURI"/> + <ref name="string"/> + </choice> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:master-fields"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:detail-fields"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:escape-processing" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:filter"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:ignore-result" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:navigation-mode"> + <ref name="navigation"/> + </attribute> + </optional> +</define> + +<define name="navigation"> + <choice> + <value>none</value> + <value>current</value> + <value>parent</value> + </choice> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:order"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-form-attlist" combine="interleave"> + <optional> + <attribute name="form:tab-cycle"> + <ref name="tab-cycles"/> + </attribute> + </optional> +</define> +<define name="tab-cycles"> + <choice> + <value>records</value> + <value>current</value> + <value>page</value> + </choice> +</define> +<define name="form-connection-resource"> + <element name="form:connection-resource"> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <empty/> + </element> +</define> +<define name="xforms-model"> + <element name="xforms:model"> + <ref name="anyAttListOrElements"/> + </element> +</define> +<define name="column-controls" combine="choice"> + <element name="form:text"> + <ref name="form-text-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="controls" combine="choice"> + <ref name="column-controls"/> +</define> +<define name="form-text-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> +</define> +<define name="form-control-attlist"> + <ref name="common-form-control-attlist"/> + <ref name="common-control-id-attlist"/> + <ref name="xforms-bind-attlist"/> +</define> +<define name="common-form-control-content"> + <optional> + <ref name="form-properties"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> +</define> +<define name="column-controls" combine="choice"> + <element name="form:textarea"> + <ref name="form-textarea-attlist"/> + <ref name="common-form-control-content"/> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> +</define> +<define name="form-textarea-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> +</define> +<define name="controls" combine="choice"> + <element name="form:password"> + <ref name="form-password-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-password-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> +</define> +<define name="form-password-attlist" combine="interleave"> + <optional> + <attribute name="form:echo-char" a:defaultValue="*"> + <ref name="character"/> + </attribute> + </optional> +</define> +<define name="controls" combine="choice"> + <element name="form:file"> + <ref name="form-file-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-file-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> +</define> +<define name="column-controls" combine="choice"> + <element name="form:formatted-text"> + <ref name="form-formatted-text-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-formatted-text-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> +</define> +<define name="form-formatted-text-attlist" combine="interleave"> + <optional> + <attribute name="form:max-value"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-formatted-text-attlist" combine="interleave"> + <optional> + <attribute name="form:min-value"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-formatted-text-attlist" combine="interleave"> + <optional> + <attribute name="form:validation" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="column-controls" combine="choice"> + <element name="form:number"> + <ref name="form-number-attlist"/> + <ref name="common-numeric-control-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="common-numeric-control-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> +</define> +<define name="form-number-attlist" combine="interleave"> + <optional> + <attribute name="form:value"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="form-number-attlist" combine="interleave"> + <optional> + <attribute name="form:current-value"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="form-number-attlist" combine="interleave"> + <optional> + <attribute name="form:min-value"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="form-number-attlist" combine="interleave"> + <optional> + <attribute name="form:max-value"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="column-controls" combine="choice"> + <element name="form:date"> + <ref name="form-date-attlist"/> + <ref name="common-numeric-control-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="controls" combine="choice"> + <element name="form:time"> + <ref name="form-time-attlist"/> + <ref name="common-numeric-control-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-date-attlist" combine="interleave"> + <optional> + <attribute name="form:value"> + <ref name="date"/> + </attribute> + </optional> +</define> +<define name="form-time-attlist" combine="interleave"> + <optional> + <attribute name="form:value"> + <ref name="time"/> + </attribute> + </optional> +</define> +<define name="form-date-attlist" combine="interleave"> + <optional> + <attribute name="form:current-value"> + <ref name="date"/> + </attribute> + </optional> +</define> +<define name="form-time-attlist" combine="interleave"> + <optional> + <attribute name="form:current-value"> + <ref name="time"/> + </attribute> + </optional> +</define> +<define name="form-date-attlist" combine="interleave"> + <optional> + <attribute name="form:min-value"> + <ref name="date"/> + </attribute> + </optional> +</define> +<define name="form-time-attlist" combine="interleave"> + <optional> + <attribute name="form:min-value"> + <ref name="time"/> + </attribute> + </optional> +</define> +<define name="form-date-attlist" combine="interleave"> + <optional> + <attribute name="form:max-value"> + <ref name="date"/> + </attribute> + </optional> +</define> +<define name="form-time-attlist" combine="interleave"> + <optional> + <attribute name="form:max-value"> + <ref name="time"/> + </attribute> + </optional> +</define> +<define name="controls" combine="choice"> + <element name="form:fixed-text"> + <ref name="form-fixed-text-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-fixed-text-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="for"/> + <ref name="common-disabled-attlist"/> + <ref name="label"/> + <ref name="common-printable-attlist"/> + <ref name="common-title-attlist"/> +</define> +<define name="form-fixed-text-attlist" combine="interleave"> + <optional> + <attribute name="form:multi-line" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="column-controls" combine="choice"> + <element name="form:combobox"> + <ref name="form-combobox-attlist"/> + <ref name="common-form-control-content"/> + <zeroOrMore> + <ref name="form-item"/> + </zeroOrMore> + </element> +</define> +<define name="form-combobox-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="dropdown"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="size"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> + <ref name="list-source"/> + <ref name="list-source-type"/> +</define> +<define name="form-combobox-attlist" combine="interleave"> + <optional> + <attribute name="form:auto-complete"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-item"> + <element name="form:item"> + <ref name="form-item-attlist"/> + <text/> + </element> +</define> +<define name="form-item-attlist" combine="interleave"> + <ref name="label"/> +</define> +<define name="column-controls" combine="choice"> + <element name="form:listbox"> + <ref name="form-listbox-attlist"/> + <ref name="common-form-control-content"/> + <zeroOrMore> + <ref name="form-option"/> + </zeroOrMore> + </element> +</define> +<define name="form-listbox-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="dropdown"/> + <ref name="common-printable-attlist"/> + <ref name="size"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="bound-column"/> + <ref name="common-data-field-attlist"/> + <ref name="list-source"/> + <ref name="list-source-type"/> +</define> +<define name="form-listbox-attlist" combine="interleave"> + <optional> + <attribute name="form:multiple" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-listbox-attlist" combine="interleave"> + <optional> + <attribute name="form:xforms-list-source"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-option"> + <element name="form:option"> + <ref name="form-option-attlist"/> + <text/> + </element> +</define> +<define name="form-option-attlist" combine="interleave"> + <ref name="current-selected"/> + <ref name="selected"/> + <ref name="label"/> + <ref name="common-value-attlist"/> +</define> +<define name="controls" combine="choice"> + <element name="form:button"> + <ref name="form-button-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-button-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="button-type"/> + <ref name="common-disabled-attlist"/> + <ref name="label"/> + <ref name="image-data"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="target-frame"/> + <ref name="target-location"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-form-relative-image-position-attlist"/> +</define> +<define name="form-button-attlist" combine="interleave"> + <optional> + <attribute name="form:default-button" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-button-attlist" combine="interleave"> + <optional> + <attribute name="form:toggle" a:default-value="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-button-attlist" combine="interleave"> + <optional> + <attribute name="form:focus-on-click"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-button-attlist" combine="interleave"> + <optional> + <attribute name="form:xforms-submission"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="controls" combine="choice"> + <element name="form:image"> + <ref name="form-image-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-image-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="button-type"/> + <ref name="common-disabled-attlist"/> + <ref name="image-data"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="target-frame"/> + <ref name="target-location"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> +</define> +<define name="column-controls" combine="choice"> + <element name="form:checkbox"> + <ref name="form-checkbox-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-checkbox-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="label"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-data-field-attlist"/> + <ref name="common-form-visual-effect-attlist"/> + <ref name="common-form-relative-image-position-attlist"/> +</define> +<define name="states"> + <choice> + <value>unchecked</value> + <value>checked</value> + <value>unknown</value> + </choice> +</define> +<define name="form-checkbox-attlist" combine="interleave"> + <optional> + <attribute name="form:current-state"> + <ref name="states"/> + </attribute> + </optional> +</define> +<define name="form-checkbox-attlist" combine="interleave"> + <optional> + <attribute name="form:is-tristate" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="form-checkbox-attlist" combine="interleave"> + <optional> + <attribute name="form:state" a:defaultValue="unchecked"> + <ref name="states"/> + </attribute> + </optional> +</define> +<define name="controls" combine="choice"> + <element name="form:radio"> + <ref name="form-radio-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-radio-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="current-selected"/> + <ref name="common-disabled-attlist"/> + <ref name="label"/> + <ref name="common-printable-attlist"/> + <ref name="selected"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-data-field-attlist"/> + <ref name="common-form-visual-effect-attlist"/> + <ref name="common-form-relative-image-position-attlist"/> +</define> +<define name="controls" combine="choice"> + <element name="form:frame"> + <ref name="form-frame-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-frame-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="for"/> + <ref name="label"/> + <ref name="common-printable-attlist"/> + <ref name="common-title-attlist"/> +</define> +<define name="controls" combine="choice"> + <element name="form:image-frame"> + <ref name="form-image-frame-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-image-frame-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="image-data"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-data-field-attlist"/> +</define> +<define name="controls" combine="choice"> + <element name="form:hidden"> + <ref name="form-hidden-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-hidden-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-value-attlist"/> +</define> +<define name="controls" combine="choice"> + <element name="form:grid"> + <ref name="form-grid-attlist"/> + <ref name="common-form-control-content"/> + <zeroOrMore> + <ref name="form-column"/> + </zeroOrMore> + </element> +</define> +<define name="form-grid-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> +</define> +<define name="form-column"> + <element name="form:column"> + <ref name="form-column-attlist"/> + <oneOrMore> + <ref name="column-controls"/> + </oneOrMore> + </element> +</define> +<define name="form-column-attlist" combine="interleave"> + <ref name="common-form-control-attlist"/> + <ref name="label"/> + <ref name="text-style-name"/> +</define> +<define name="text-style-name"> + <optional> + <attribute name="form:text-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="controls" combine="choice"> + <element name="form:value-range"> + <ref name="form-value-range-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-value-range-attlist" combine="interleave"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> +</define> +<define name="form-value-range-attlist" combine="interleave"> + <optional> + <attribute name="form:max-value"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-value-range-attlist" combine="interleave"> + <optional> + <attribute name="form:min-value"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="form-value-range-attlist" combine="interleave"> + <optional> + <attribute name="form:step-size" a:defaultName="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="form-value-range-attlist" combine="interleave"> + <optional> + <attribute name="form:page-step-size"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="form-value-range-attlist" combine="interleave"> + <optional> + <attribute name="form:delay-for-repeat"> + <ref name="duration"/> + </attribute> + </optional> +</define> +<define name="form-value-range-attlist" combine="interleave"> + <optional> + <attribute name="form:orientation"> + <choice> + <value>horizontal</value> + <value>vertical</value> + </choice> + </attribute> + </optional> +</define> +<define name="controls" combine="choice"> + <element name="form:generic-control"> + <ref name="form-generic-control-attlist"/> + <ref name="common-form-control-content"/> + </element> +</define> +<define name="form-generic-control-attlist" combine="interleave"> + <ref name="form-control-attlist"/> +</define> +<define name="common-form-control-attlist" combine="interleave"> + <optional> + <attribute name="form:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-form-control-attlist" combine="interleave"> + <optional> + <attribute name="form:control-implementation"> + <ref name="namespacedToken"/> + </attribute> + </optional> +</define> +<define name="xforms-bind-attlist"> + <optional> + <attribute name="xforms:bind"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="types"> + <choice> + <value>submit</value> + <value>reset</value> + <value>push</value> + <value>url</value> + </choice> +</define> +<define name="button-type"> + <optional> + <attribute name="form:button-type" a:defaultValue="push"> + <ref name="types"/> + </attribute> + </optional> +</define> +<define name="common-control-id-attlist"> + <attribute name="form:id"> + <ref name="ID"/> + </attribute> +</define> +<define name="current-selected"> + <optional> + <attribute name="form:current-selected" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="common-value-attlist"> + <optional> + <attribute name="form:value"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-current-value-attlist"> + <optional> + <attribute name="form:current-value"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-disabled-attlist"> + <optional> + <attribute name="form:disabled" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="dropdown"> + <optional> + <attribute name="form:dropdown" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="for"> + <optional> + <attribute name="form:for"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="image-data"> + <optional> + <attribute name="form:image-data"> + <ref name="anyURI"/> + </attribute> + </optional> +</define> +<define name="label"> + <optional> + <attribute name="form:label"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-maxlength-attlist"> + <optional> + <attribute name="form:max-length"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="common-printable-attlist"> + <optional> + <attribute name="form:printable" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="common-readonly-attlist"> + <optional> + <attribute name="form:readonly" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="selected"> + <optional> + <attribute name="form:selected" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="size"> + <optional> + <attribute name="form:size"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="common-tab-attlist" combine="interleave"> + <optional> + <attribute name="form:tab-index" a:defaultValue="0"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="common-tab-attlist" combine="interleave"> + <optional> + <attribute name="form:tab-stop" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="target-frame"> + <optional> + <attribute name="office:target-frame" a:defaultValue="_blank"> + <ref name="targetFrameName"/> + </attribute> + </optional> +</define> +<define name="target-location"> + <optional> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + </optional> +</define> +<define name="common-title-attlist"> + <optional> + <attribute name="form:title"/> + </optional> +</define> +<define name="common-form-visual-effect-attlist" combine="interleave"> + <optional> + <attribute name="form:visual-effect"> + <choice> + <value>flat</value> + <value>3d</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-form-relative-image-position-attlist" + combine="interleave"> + <choice> + <optional> + <attribute name="form:image-position" a:defaultValue="center"> + <value>center</value> + </attribute> + </optional> + <group> + <attribute name="form:image-position"> + <choice> + <value>start</value> + <value>end</value> + <value>top</value> + <value>bottom</value> + </choice> + </attribute> + <optional> + <attribute name="form:image-align" a:defaultValue="center"> + <choice> + <value>start</value> + <value>center</value> + <value>end</value> + </choice> + </attribute> + </optional> + </group> + </choice> +</define> +<define name="bound-column"> + <optional> + <attribute name="form:bound-column"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-convert-empty-attlist"> + <optional> + <attribute name="form:convert-empty-to-null" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="common-data-field-attlist"> + <optional> + <attribute name="form:data-field"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="list-source"> + <optional> + <attribute name="form:list-source"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="list-source-type"> + <optional> + <attribute name="form:list-source-type"> + <choice> + <value>table</value> + <value>query</value> + <value>sql</value> + <value>sql-pass-through</value> + <value>value-list</value> + <value>table-fields</value> + </choice> + </attribute> + </optional> +</define> +<define name="form-properties"> + <element name="form:properties"> + <oneOrMore> + <ref name="form-property"/> + </oneOrMore> + </element> +</define> +<define name="form-property" combine="choice"> + <element name="form:property"> + <ref name="form-property-name"/> + <ref name="form-property-value-and-type-attlist"/> + </element> +</define> +<define name="form-property-name" combine="interleave"> + <attribute name="form:property-name"> + <ref name="string"/> + </attribute> +</define> +<define name="form-property-value-and-type-attlist" combine="interleave"> + <choice> + <ref name="common-value-and-type-attlist"/> + <attribute name="office:value-type"> + <value>void</value> + </attribute> + </choice> +</define> +<define name="form-property" combine="choice"> + <element name="form:list-property"> + <ref name="form-property-name"/> + <ref name="form-property-type-and-value-list"/> + </element> +</define> +<define name="form-property-type-and-value-list"> + <choice> + <group> + <attribute name="office:value-type"> + <value>float</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>percentage</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>currency</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + <optional> + <attribute name="office:currency"> + <ref name="string"/> + </attribute> + </optional> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>date</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>time</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:time-value"> + <ref name="duration"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>boolean</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:boolean-value"> + <ref name="boolean"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>string</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:string-value"> + <ref name="string"/> + </attribute> + </element> + </zeroOrMore> + </group> + <attribute name="office:value-type"> + <value>void</value> + </attribute> + </choice> +</define> +<define name="office-annotation"> + <element name="office:annotation"> + <ref name="office-annotation-attlist"/> + <ref name="draw-caption-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <optional> + <ref name="dc-creator"/> + </optional> + <optional> + <ref name="dc-date"/> + </optional> + <optional> + <ref name="meta-date-string"/> + </optional> + <zeroOrMore> + <choice> + <ref name="text-p"/> + <ref name="text-list"/> + </choice> + </zeroOrMore> + </element> +</define> +<define name="office-annotation-attlist" combine="interleave"> + <optional> + <attribute name="office:display"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="meta-date-string"> + <element name="meta:date-string"> + <ref name="string"/> + </element> +</define> +<define name="common-num-format-prefix-suffix-attlist" combine="interleave"> + <optional> + <attribute name="style:num-prefix"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:num-suffix"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-num-format-attlist" combine="interleave"> + <choice> + <attribute name="style:num-format"> + <choice> + <value>1</value> + <value>i</value> + <value>I</value> + <ref name="string"/> + <empty/> + </choice> + </attribute> + <group> + <attribute name="style:num-format"> + <choice> + <value>a</value> + <value>A</value> + </choice> + </attribute> + <ref name="style-num-letter-sync-attlist"/> + </group> + <empty/> + </choice> +</define> +<define name="style-num-letter-sync-attlist" combine="interleave"> + <optional> + <attribute name="style:num-letter-sync"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="office-change-info"> + <element name="office:change-info"> + <ref name="dc-creator"/> + <ref name="dc-date"/> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> +</define> +<define name="office-event-listeners"> + <element name="office:event-listeners"> + <zeroOrMore> + <choice> + <ref name="script-event-listener"/> + <ref name="presentation-event-listener"/> + </choice> + </zeroOrMore> + </element> +</define> +<define name="script-event-listener" combine="interleave"> + <element name="script:event-listener"> + <ref name="script-event-listener-attlist"/> + <empty/> + </element> +</define> +<define name="script-event-listener-attlist" combine="interleave"> + <attribute name="script:event-name"> + <ref name="string"/> + </attribute> +</define> +<define name="script-event-listener-attlist" combine="interleave"> + <attribute name="script:language"> + <ref name="string"/> + </attribute> +</define> +<define name="script-event-listener-attlist" combine="interleave"> + <choice> + <attribute name="script:macro-name"> + <ref name="string"/> + </attribute> + <group> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onRequest"> + <value>onRequest</value> + </attribute> + </optional> + </group> + </choice> +</define> +<define name="math-math"> + <element name="math:math"> + <ref name="mathMarkup"/> + </element> +</define> + +<!-- To avoid inclusion of the complete MathML schema, anything --> +<!-- is allowed within a math:math top-level element --> +<define name="mathMarkup"> + <zeroOrMore> + <choice> + <attribute> + <anyName/> + </attribute> + <text/> + <element> + <anyName/> + <ref name="mathMarkup"/> + </element> + </choice> + </zeroOrMore> +</define> +<define name="text-dde-connection-decl"> + <element name="text:dde-connection-decl"> + <ref name="text-dde-connection-decl-attlist"/> + <ref name="common-dde-connection-decl-attlist"/> + </element> +</define> +<define name="text-dde-connection-decl-attlist" combine="interleave"> + <attribute name="office:name"> + <ref name="string"/> + </attribute> +</define> +<define name="common-dde-connection-decl-attlist" combine="interleave"> + <attribute name="office:dde-application"> + <ref name="string"/> + </attribute> +</define> +<define name="common-dde-connection-decl-attlist" combine="interleave"> + <attribute name="office:dde-topic"> + <ref name="string"/> + </attribute> +</define> +<define name="common-dde-connection-decl-attlist" combine="interleave"> + <attribute name="office:dde-item"> + <ref name="string"/> + </attribute> +</define> +<define name="common-dde-connection-decl-attlist" combine="interleave"> + <optional> + <attribute name="office:automatic-update" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="table-dde-link"> + <element name="table:dde-link"> + <ref name="office-dde-source"/> + <ref name="table-table"/> + </element> +</define> +<define name="office-dde-source"> + <element name="office:dde-source"> + <ref name="office-dde-source-attlist"/> + <ref name="common-dde-connection-decl-attlist"/> + </element> +</define> +<define name="office-dde-source-attlist" combine="interleave"> + <optional> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="office-dde-source-attlist" combine="interleave"> + <optional> + <attribute name="office:conversion-mode" + a:defaultValue="into-default-style-data-style"> + <choice> + <value>into-default-style-data-style</value> + <value>into-english-number</value> + <value>keep-text</value> + </choice> + </attribute> + </optional> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:animate"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="common-anim-spline-mode-attlist"/> + <ref name="common-spline-anim-value-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + </element> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:set"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-set-values-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + </element> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:animateMotion"> + <ref name="anim-animate-motion-attlist"/> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-spline-anim-value-attlist"/> + </element> +</define> +<define name="anim-animate-motion-attlist" combine="interleave"> + <optional> + <attribute name="svg:path"> + <ref name="pathData"/> + </attribute> + </optional> +</define> +<define name="anim-animate-motion-attlist" combine="interleave"> + <optional> + <attribute name="svg:origin"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="anim-animate-motion-attlist" combine="interleave"> + <optional> + <attribute name="smil:calcMode" a:defaultValue="paced"> + <choice> + <value>discrete</value> + <value>linear</value> + <value>paced</value> + <value>spline</value> + </choice> + </attribute> + </optional> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:animateColor"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="common-anim-spline-mode-attlist"/> + <ref name="common-spline-anim-value-attlist"/> + <ref name="anim-animate-color-attlist"/> + <ref name="common-timing-attlist"/> + </element> +</define> +<define name="anim-animate-color-attlist" combine="interleave"> + <optional> + <attribute name="anim:color-interpolation" a:defaultValue="rgb"> + <choice> + <value>rgb</value> + <value>hsl</value> + </choice> + </attribute> + </optional> +</define> +<define name="anim-animate-color-attlist" combine="interleave"> + <optional> + <attribute name="anim:color-interpolation-direction" + a:defaultValue="clockwise"> + <choice> + <value>clockwise</value> + <value>counter-clockwise</value> + </choice> + </attribute> + </optional> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:animateTransform"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="anim-animate-transform-attlist"/> + <ref name="common-timing-attlist"/> + </element> +</define> +<define name="anim-animate-transform-attlist" combine="interleave"> + <attribute name="svg:type"> + <choice> + <value>translate</value> + <value>scale</value> + <value>rotate</value> + <value>skewX</value> + <value>skewY</value> + </choice> + </attribute> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:transitionFilter"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="common-anim-spline-mode-attlist "/> + <ref name="anim-transition-filter-attlist"/> + <ref name="common-timing-attlist"/> + </element> +</define> +<define name="anim-transition-filter-attlist" combine="interleave"> + <attribute name="smil:type"> + <ref name="string"/> + </attribute> +</define> +<define name="anim-transition-filter-attlist" combine="interleave"> + <optional> + <attribute name="smil:subtype"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="anim-transition-filter-attlist" combine="interleave"> + <optional> + <attribute name="smil:direction" a:defaultValue="forward"> + <choice> + <value>forward</value> + <value>reverse</value> + </choice> + </attribute> + </optional> +</define> +<define name="anim-transition-filter-attlist" combine="interleave"> + <optional> + <attribute name="smil:fadeColor"> + <choice> + <value>forward</value> + <value>reverse</value> + </choice> + </attribute> + </optional> +</define> +<define name="anim-transition-filter-attlist" combine="interleave"> + <optional> + <attribute name="smil:mode" a:defaultValue="in"> + <choice> + <value>in</value> + <value>out</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-anim-attlist" combine="interleave"> + <optional> + <attribute name="anim:id"> + <ref name="ID"/> + </attribute> + </optional> +</define> +<define name="common-anim-target-attlist" combine="interleave"> + <optional> + <attribute name="smil:targetElement"> + <ref name="IDREF"/> + </attribute> + </optional> +</define> +<define name="common-anim-named-target-attlist" combine="interleave"> + <attribute name="smil:attributeName"> + <ref name="string"/> + </attribute> +</define> +<define name="common-anim-target-attlist" combine="interleave"> + <optional> + <attribute name="anim:sub-item"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-anim-values-attlist" combine="interleave"> + <optional> + <attribute name="smil:values"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-anim-spline-mode-attlist" combine="interleave"> + <optional> + <attribute name="smil:calcMode" a:defaultValue="discrete"> + <choice> + <value>discrete</value> + <value>linear</value> + <value>paced</value> + <value>spline</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-spline-anim-value-attlist" combine="interleave"> + <optional> + <attribute name="smil:keyTimes"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-spline-anim-value-attlist" combine="interleave"> + <optional> + <attribute name="smil:keySplines"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-anim-add-accum-attlist" combine="interleave"> + <optional> + <attribute name="smil:accumulate"> + <choice> + <value>none</value> + <value>sum</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-anim-add-accum-attlist" combine="interleave"> + <optional> + <attribute name="smil:additive"> + <choice> + <value>replace</value> + <value>sum</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-anim-values-attlist" combine="interleave"> + <optional> + <attribute name="anim:formula"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-anim-set-values-attlist" combine="interleave"> + <optional> + <attribute name="smil:to"> + <ref name="string"/> + </attribute> + </optional> +</define> + +<define name="common-anim-values-attlist" combine="interleave"> + <ref name="common-anim-set-values-attlist"/> + <optional> + <attribute name="smil:from"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:by"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-begin-end-timing-attlist" combine="interleave"> + <optional> + <attribute name="smil:begin"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-begin-end-timing-attlist" combine="interleave"> + <optional> + <attribute name="smil:end"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-dur-timing-attlist" combine="interleave"> + <optional> + <attribute name="smil:dur"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-endsync-timing-attlist" combine="interleave"> + <optional> + <attribute name="smil:endsync"> + <choice> + <value>first</value> + <value>last</value> + <value>all</value> + <value>media</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-repeat-timing-attlist" combine="interleave"> + <optional> + <attribute name="smil:repeatDur"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:repeatCount"> + <choice> + <ref name="nonNegativeInteger"/> + <value>indefinite</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-fill-timing-attlist" combine="interleave"> + <optional> + <attribute name="smil:fill"> + <choice> + <value>remove</value> + <value>freeze</value> + <value>hold</value> + <value>auto</value> + <value>default</value> + <value>transition</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-fill-default-attlist" combine="interleave"> + <optional> + <attribute name="smil:fillDefault"> + <choice> + <value>remove</value> + <value>freeze</value> + <value>hold</value> + <value>transition</value> + <value>auto</value> + <value>inherit</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-restart-timing-attlist" combine="interleave"> + <optional> + <attribute name="smil:restart" a:defaultValue="default"> + <choice> + <value>never</value> + <value>always</value> + <value>whenNotActive</value> + <value>default</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-restart-default-attlist" combine="interleave"> + <optional> + <attribute name="smil:restartDefault" a:defaultValue="inherit"> + <choice> + <value>never</value> + <value>always</value> + <value>whenNotActive</value> + <value>inherit</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-time-manip-attlist" combine="interleave"> + <optional> + <attribute name="smil:accelerate" a:defaultValue="0.0"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="common-time-manip-attlist" combine="interleave"> + <optional> + <attribute name="smil:decelerate" a:defaultValue="0.0"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="common-time-manip-attlist" combine="interleave"> + <optional> + <attribute name="smil:autoReverse" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:par"> + <ref name="common-anim-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-endsync-timing-attlist"/> + <zeroOrMore> + <ref name="animation-element"/> + </zeroOrMore> + </element> +</define> + +<define name="common-basic-timing-attlist" combine="interleave"> + <ref name="common-begin-end-timing-attlist"/> + <ref name="common-dur-timing-attlist"/> + <ref name="common-repeat-timing-attlist"/> +</define> + +<define name="common-timing-attlist" combine="interleave"> + <ref name="common-basic-timing-attlist"/> + <ref name="common-restart-timing-attlist"/> + <ref name="common-restart-default-attlist"/> + <ref name="common-fill-timing-attlist"/> + <ref name="common-fill-default-attlist"/> + <ref name="common-time-manip-attlist"/> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:seq"> + <ref name="common-anim-attlist"/> + <ref name="common-endsync-timing-attlist"/> + <ref name="common-timing-attlist"/> + <zeroOrMore> + <ref name="animation-element"/> + </zeroOrMore> + </element> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:iterate"> + <ref name="common-anim-attlist"/> + <ref name="anim-iterate-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-endsync-timing-attlist"/> + <zeroOrMore> + <ref name="animation-element"/> + </zeroOrMore> + </element> +</define> +<define name="anim-iterate-attlist" combine="interleave"> + <ref name="common-anim-target-attlist"/> +</define> +<define name="anim-iterate-attlist" combine="interleave"> + <optional> + <attribute name="anim:iterate-type"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="anim-iterate-attlist" combine="interleave"> + <optional> + <attribute name="anim:iterate-interval"> + <ref name="duration"/> + </attribute> + </optional> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:audio"> + <ref name="common-anim-attlist"/> + <ref name="anim-audio-attlist"/> + <ref name="common-basic-timing-attlist"/> + </element> +</define> +<define name="anim-audio-attlist" combine="interleave"> + <optional> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + </optional> +</define> +<define name="anim-audio-attlist" combine="interleave"> + <optional> + <attribute name="anim:audio-level"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="animation-element" combine="choice"> + <element name="anim:command"> + <ref name="common-anim-attlist"/> + <ref name="anim-command-attlist"/> + <ref name="common-begin-end-timing-attlist"/> + <ref name="common-anim-target-attlist"/> + <zeroOrMore> + <element name="anim:param"> + <attribute name="anim:name"/> + <attribute name="anim:value"/> + </element> + </zeroOrMore> + </element> +</define> +<define name="anim-command-attlist" combine="interleave"> + <attribute name="anim:command"> + <ref name="string"/> + </attribute> +</define> +<define name="style-style"> + <element name="style:style"> + <ref name="style-style-attlist"/> + <ref name="style-style-content"/> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> +</define> +<define name="style-style-attlist" combine="interleave"> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="style-style-attlist" combine="interleave"> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-style-attlist" combine="interleave"> + <optional> + <attribute name="style:parent-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-style-attlist" combine="interleave"> + <optional> + <attribute name="style:next-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-style-attlist" combine="interleave"> + <optional> + <attribute name="style:list-style-name"> + <choice> + <ref name="styleName"/> + <empty/> + </choice> + </attribute> + </optional> +</define> +<define name="style-style-attlist" combine="interleave"> + <optional> + <attribute name="style:master-page-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-style-attlist" combine="interleave"> + <optional> + <attribute name="style:auto-update" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-style-attlist" combine="interleave"> + <optional> + <attribute name="style:data-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-style-attlist" combine="interleave"> + <optional> + <attribute name="style:class"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-style-attlist" combine="interleave"> + <optional> + <attribute name="style:default-outline-level"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="style-map"> + <element name="style:map"> + <ref name="style-map-attlist"/> + <empty/> + </element> +</define> +<define name="style-map-attlist" combine="interleave"> + <attribute name="style:condition"> + <ref name="string"/> + </attribute> +</define> +<define name="style-map-attlist" combine="interleave"> + <attribute name="style:apply-style-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="style-map-attlist" combine="interleave"> + <optional> + <attribute name="style:base-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> +</define> +<define name="style-default-style"> + <element name="style:default-style"> + <ref name="style-style-content"/> + </element> +</define> +<define name="style-page-layout"> + <element name="style:page-layout"> + <ref name="style-page-layout-attlist"/> + <optional> + <ref name="style-page-layout-properties"/> + </optional> + <optional> + <ref name="style-header-style"/> + </optional> + <optional> + <ref name="style-footer-style"/> + </optional> + </element> +</define> +<define name="style-page-layout-attlist" combine="interleave"> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="style-page-layout-attlist" combine="interleave"> + <optional> + <attribute name="style:page-usage" a:defaultValue="all"> + <choice> + <value>all</value> + <value>left</value> + <value>right</value> + <value>mirrored</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-header-style"> + <element name="style:header-style"> + <optional> + <ref name="style-header-footer-properties"/> + </optional> + </element> +</define> +<define name="style-footer-style"> + <element name="style:footer-style"> + <optional> + <ref name="style-header-footer-properties"/> + </optional> + </element> +</define> +<define name="style-master-page"> + <element name="style:master-page"> + <ref name="style-master-page-attlist"/> + <optional> + <ref name="style-header"/> + <optional> + <ref name="style-header-left"/> + </optional> + </optional> + <optional> + <ref name="style-footer"/> + <optional> + <ref name="style-footer-left"/> + </optional> + </optional> + <optional> + <ref name="office-forms"/> + </optional> + <zeroOrMore> + <ref name="style-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + <optional> + <ref name="presentation-notes"/> + </optional> + </element> +</define> +<define name="style-master-page-attlist" combine="interleave"> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="style-master-page-attlist" combine="interleave"> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-master-page-attlist" combine="interleave"> + <attribute name="style:page-layout-name"> + <ref name="styleNameRef"/> + </attribute> +</define> +<define name="style-master-page-attlist" combine="interleave"> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-master-page-attlist" combine="interleave"> + <optional> + <attribute name="style:next-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-header"> + <element name="style:header"> + <ref name="common-style-header-footer-attlist"/> + <ref name="header-footer-content"/> + </element> +</define> +<define name="style-footer"> + <element name="style:footer"> + <ref name="common-style-header-footer-attlist"/> + <ref name="header-footer-content"/> + </element> +</define> +<define name="style-header-left"> + <element name="style:header-left"> + <ref name="common-style-header-footer-attlist"/> + <ref name="header-footer-content"/> + </element> +</define> +<define name="style-footer-left"> + <element name="style:footer-left"> + <ref name="common-style-header-footer-attlist"/> + <ref name="header-footer-content"/> + </element> +</define> +<define name="header-footer-content"> + <choice> + <group> + <ref name="text-tracked-changes"/> + <ref name="text-decls"/> + <zeroOrMore> + <choice> + <ref name="text-h"/> + <ref name="text-p"/> + <ref name="text-list"/> + <ref name="table-table"/> + <ref name="text-section"/> + <ref name="text-table-of-content"/> + <ref name="text-illustration-index"/> + <ref name="text-table-index"/> + <ref name="text-object-index"/> + <ref name="text-user-index"/> + <ref name="text-alphabetical-index"/> + <ref name="text-bibliography"/> + <ref name="text-index-title"/> + <ref name="change-marks"/> + </choice> + </zeroOrMore> + </group> + <group> + <optional> + <ref name="style-region-left"/> + </optional> + <optional> + <ref name="style-region-center"/> + </optional> + <optional> + <ref name="style-region-right"/> + </optional> + </group> + </choice> +</define> +<define name="common-style-header-footer-attlist" combine="interleave"> + <optional> + <attribute name="style:display" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-region-left"> + <element name="style:region-left"> + <ref name="region-content"/> + </element> +</define> +<define name="style-region-center"> + <element name="style:region-center"> + <ref name="region-content"/> + </element> +</define> +<define name="style-region-right"> + <element name="style:region-right"> + <ref name="region-content"/> + </element> +</define> + +<define name="region-content"> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> +</define> +<define name="presentation-notes"> + <element name="presentation:notes"> + <ref name="common-presentation-header-footer-attlist"/> + <ref name="presentation-notes-attlist"/> + <ref name="office-forms"/> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + </element> +</define> +<define name="presentation-notes-attlist" combine="interleave"> + <optional> + <attribute name="style:page-layout-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="presentation-notes-attlist" combine="interleave"> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="table-table-template"> + <element name="table:table-template"> + <ref name="table-table-template-attlist"/> + <optional> + <ref name="table-first-row"/> + </optional> + <optional> + <ref name="table-last-row"/> + </optional> + <optional> + <ref name="table-first-column"/> + </optional> + <optional> + <ref name="table-last-column"/> + </optional> + <choice> + <ref name="table-body"/> + <group> + <ref name="table-even-rows"/> + <ref name="table-odd-rows"/> + </group> + <group> + <ref name="table-even-columns"/> + <ref name="table-odd-columns"/> + </group> + </choice> + </element> +</define> +<define name="table-table-template-attlist" combine="interleave"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> +</define> +<define name="table-table-template-attlist" combine="interleave"> + <attribute name="text:first-row-start-column"> + <ref name="rowOrCol"/> + </attribute> +</define> + +<define name="table-table-template-attlist" combine="interleave"> + <attribute name="text:first-row-end-column"> + <ref name="rowOrCol"/> + </attribute> +</define> + +<define name="table-table-template-attlist" combine="interleave"> + <attribute name="text:last-row-start-column"> + <ref name="rowOrCol"/> + </attribute> +</define> + +<define name="table-table-template-attlist" combine="interleave"> + <attribute name="text:last-row-end-column"> + <ref name="rowOrCol"/> + </attribute> +</define> + +<define name="rowOrCol"> + <choice> + <value>row</value> + <value>column</value> + </choice> +</define> +<define name="table-first-row"> + <element name="table:first-row"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> +</define> + +<define name="table-last-row"> + <element name="table:last-row"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> +</define> + +<define name="table-first-column"> + <element name="table:first-column"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> +</define> + +<define name="table-last-column"> + <element name="table:last-column"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> +</define> + +<define name="table-body"> + <element name="table:body"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> +</define> + +<define name="table-even-rows"> + <element name="table:even-rows"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> +</define> + +<define name="table-odd-rows"> + <element name="table:odd-rows"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> +</define> + +<define name="table-even-columns"> + <element name="table:even-columns"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> +</define> + +<define name="table-odd-columns"> + <element name="table:odd-columns"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> +</define> + +<define name="common-table-template-attlist" combine="interleave"> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + <attribute name="text:paragraph-style-name"> + <optional> + <ref name="styleNameRef"/> + </optional> + </attribute> +</define> +<define name="style-font-face"> + <element name="style:font-face"> + <ref name="style-font-face-attlist"/> + <optional> + <ref name="svg-font-face-src"/> + </optional> + <optional> + <ref name="svg-definition-src"/> + </optional> + </element> +</define> +<define name="style-font-face-attlist" combine="interleave"> + <optional> + <attribute name="svg:font-family"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="svg:font-style"> + <ref name="fontStyle"/> + </attribute> + </optional> + <optional> + <attribute name="svg:font-variant"> + <ref name="fontVariant"/> + </attribute> + </optional> + <optional> + <attribute name="svg:font-weight"> + <ref name="fontWeight"/> + </attribute> + </optional> + <optional> + <attribute name="svg:font-stretch"> + <choice> + <value>normal</value> + <value>ultra-condensed</value> + <value>extra-condensed</value> + <value>condensed</value> + <value>semi-condensed</value> + <value>semi-expanded</value> + <value>expanded</value> + <value>extra-expanded</value> + <value>ultra-expanded</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:font-size"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="svg:unicode-range"/> + </optional> + <optional> + <attribute name="svg:units-per-em"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:panose-1"/> + </optional> + <optional> + <attribute name="svg:stemv"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:stemh"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:slope"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:cap-height"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:x-height"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:accent-height"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:ascent"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:descent"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:widths"/> + </optional> + <optional> + <attribute name="svg:bbox"/> + </optional> + <optional> + <attribute name="svg:ideographic"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:alphabetic"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:mathematical"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:hanging"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:v-ideographic"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:v-alphabetic"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:v-mathematical"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:v-hanging"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:underline-position"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:underline-thickness"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:strikethrough-position"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:strikethrough-thickness"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:overline-position"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:overline-thickness"> + <ref name="integer"/> + </attribute> + </optional> +</define> + +<define name="svg-font-face-src"> + <element name="svg:font-face-src"> + <oneOrMore> + <choice> + <ref name="svg-font-face-uri"/> + <ref name="svg-font-face-name"/> + </choice> + </oneOrMore> + </element> +</define> + +<define name="svg-font-face-uri"> + <element name="svg:font-face-uri"> + <ref name="common-svg-font-face-xlink-attlist"/> + <zeroOrMore> + <ref name="svg-font-face-format"/> + </zeroOrMore> + </element> +</define> + +<define name="svg-font-face-format"> + <element name="svg:font-face-format"> + <optional> + <attribute name="svg:string"/> + </optional> + <empty/> + </element> +</define> +<define name="svg-font-face-name"> + <element name="svg:font-face-name"> + <optional> + <attribute name="svg:name"/> + </optional> + <empty/> + </element> +</define> + +<define name="svg-definition-src"> + <element name="svg:definition-src"> + <ref name="common-svg-font-face-xlink-attlist"/> + <empty/> + </element> +</define> + +<define name="common-svg-font-face-xlink-attlist" combine="interleave"> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <value>simple</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onRequest"> + <value>onRequest</value> + </attribute> + </optional> +</define> +<define name="style-font-face-attlist" combine="interleave"> + <attribute name="style:name"> + <ref name="string"/> + </attribute> +</define> +<define name="style-font-face-attlist" combine="interleave"> + <optional> + <attribute name="style:font-adornments"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-font-face-attlist" combine="interleave"> + <optional> + <attribute name="style:font-family-generic"> + <ref name="fontFamilyGeneric"/> + </attribute> + </optional> +</define> +<define name="style-font-face-attlist" combine="interleave"> + <optional> + <attribute name="style:font-pitch"> + <ref name="fontPitch"/> + </attribute> + </optional> +</define> + +<define name="style-font-face-attlist" combine="interleave"> + <optional> + <attribute name="style:font-charset"> + <ref name="textEncoding"/> + </attribute> + </optional> +</define> +<define name="number-number-style"> + <element name="number:number-style"> + <ref name="common-data-style-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <optional> + <ref name="any-number"/> + <optional> + <ref name="number-text"/> + </optional> + </optional> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> +</define> + +<define name="any-number"> + <choice> + <ref name="number-number"/> + <ref name="number-scientific-number"/> + <ref name="number-fraction"/> + </choice> +</define> +<define name="number-number"> + <element name="number:number"> + <ref name="number-number-attlist"/> + <ref name="common-decimal-places-attlist"/> + <ref name="common-number-attlist"/> + <zeroOrMore> + <ref name="number-embedded-text"/> + </zeroOrMore> + </element> +</define> +<define name="number-number-attlist" combine="interleave"> + <optional> + <attribute name="number:decimal-replacement"/> + </optional> +</define> +<define name="number-number-attlist" combine="interleave"> + <optional> + <attribute name="number:display-factor" a:defaultValue="1"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="number-embedded-text"> + <element name="number:embedded-text"> + <ref name="number-embedded-text-attlist"/> + <text/> + </element> +</define> +<define name="number-embedded-text-attlist" combine="interleave"> + <attribute name="number:position"> + <ref name="integer"/> + </attribute> +</define> +<define name="number-scientific-number"> + <element name="number:scientific-number"> + <ref name="number-scientific-number-attlist"/> + <ref name="common-decimal-places-attlist"/> + <ref name="common-number-attlist"/> + <empty/> + </element> +</define> +<define name="number-scientific-number-attlist" combine="interleave"> + <optional> + <attribute name="number:min-exponent-digits"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="number-fraction"> + <element name="number:fraction"> + <ref name="number-fraction-attlist"/> + <ref name="common-number-attlist"/> + <empty/> + </element> +</define> +<define name="number-fraction-attlist" combine="interleave"> + <optional> + <attribute name="number:min-numerator-digits"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="number-fraction-attlist" combine="interleave"> + <optional> + <attribute name="number:min-denominator-digits"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="number-fraction-attlist" combine="interleave"> + <optional> + <attribute name="number:denominator-value"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="number-currency-style"> + <element name="number:currency-style"> + <ref name="common-data-style-attlist"/> + <ref name="common-auto-reorder-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <optional> + <choice> + <group> + <ref name="number-and-text"/> + <optional> + <ref name="currency-symbol-and-text"/> + </optional> + </group> + <group> + <ref name="currency-symbol-and-text"/> + <optional> + <ref name="number-and-text"/> + </optional> + </group> + </choice> + </optional> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> +</define> + +<define name="currency-symbol-and-text"> + <ref name="number-currency-symbol"/> + <optional> + <ref name="number-text"/> + </optional> +</define> +<define name="number-and-text"> + <ref name="number-number"/> + <optional> + <ref name="number-text"/> + </optional> +</define> +<define name="number-currency-symbol"> + <element name="number:currency-symbol"> + <ref name="number-currency-symbol-attlist"/> + <text/> + </element> +</define> +<define name="number-currency-symbol-attlist" combine="interleave"> + <optional> + <attribute name="number:language"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="number:country"> + <ref name="countryCode"/> + </attribute> + </optional> +</define> +<define name="number-percentage-style"> + <element name="number:percentage-style"> + <ref name="common-data-style-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <optional> + <ref name="number-and-text"/> + </optional> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> +</define> +<define name="number-date-style"> + <element name="number:date-style"> + <ref name="common-data-style-attlist"/> + <ref name="common-auto-reorder-attlist"/> + <ref name="common-format-source-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <!-- This DTD does not reflect the fact that some elements must not --> + <!-- occur more than once. --> + <optional> + <ref name="number-text"/> + </optional> + <oneOrMore> + <ref name="any-date"/> + <optional> + <ref name="number-text"/> + </optional> + </oneOrMore> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> +</define> + +<define name="any-date"> + <choice> + <ref name="number-day"/> + <ref name="number-month"/> + <ref name="number-year"/> + <ref name="number-era"/> + <ref name="number-day-of-week"/> + <ref name="number-week-of-year"/> + <ref name="number-quarter"/> + <ref name="number-hours"/> + <ref name="number-am-pm"/> + <ref name="number-minutes"/> + <ref name="number-seconds"/> + </choice> +</define> +<define name="number-day"> + <element name="number:day"> + <ref name="number-day-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> +</define> +<define name="number-day-attlist" combine="interleave"> + <optional> + <attribute name="number:style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="number-month"> + <element name="number:month"> + <ref name="number-month-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> +</define> +<define name="number-month-attlist" combine="interleave"> + <optional> + <attribute name="number:textual" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="number-month-attlist" combine="interleave"> + <optional> + <attribute name="number:possessive-form" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="number-month-attlist" combine="interleave"> + <optional> + <attribute name="number:style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="number-year"> + <element name="number:year"> + <ref name="number-year-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> +</define> +<define name="number-year-attlist" combine="interleave"> + <optional> + <attribute name="number:style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="number-era"> + <element name="number:era"> + <ref name="number-era-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> +</define> +<define name="number-era-attlist" combine="interleave"> + <optional> + <attribute name="number:style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="number-day-of-week"> + <element name="number:day-of-week"> + <ref name="number-day-of-week-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> +</define> +<define name="number-day-of-week-attlist" combine="interleave"> + <optional> + <attribute name="number:style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="number-week-of-year"> + <element name="number:week-of-year"> + <ref name="common-calendar-attlist"/> + <empty/> + </element> +</define> +<define name="number-quarter"> + <element name="number:quarter"> + <ref name="number-quarter-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> +</define> +<define name="number-quarter-attlist" combine="interleave"> + <optional> + <attribute name="number:style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="number-time-style"> + <element name="number:time-style"> + <ref name="number-time-style-attlist"/> + <ref name="common-data-style-attlist"/> + <ref name="common-format-source-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <!-- This DTD does not reflect the fact that some elements must not --> + <!-- occur more than once. --> + <optional> + <ref name="number-text"/> + </optional> + <oneOrMore> + <ref name="any-time"/> + <optional> + <ref name="number-text"/> + </optional> + </oneOrMore> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> +</define> + +<define name="any-time"> + <choice> + <ref name="number-hours"/> + <ref name="number-am-pm"/> + <ref name="number-minutes"/> + <ref name="number-seconds"/> + </choice> +</define> +<define name="number-time-style-attlist" combine="interleave"> + <optional> + <attribute name="number:truncate-on-overflow" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="number-hours"> + <element name="number:hours"> + <ref name="number-hours-attlist"/> + <empty/> + </element> +</define> +<define name="number-hours-attlist" combine="interleave"> + <optional> + <attribute name="number:style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="number-minutes"> + <element name="number:minutes"> + <ref name="number-minutes-attlist"/> + <empty/> + </element> +</define> +<define name="number-minutes-attlist" combine="interleave"> + <optional> + <attribute name="number:style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="number-seconds"> + <element name="number:seconds"> + <ref name="number-seconds-attlist"/> + <empty/> + </element> +</define> +<define name="number-seconds-attlist" combine="interleave"> + <optional> + <attribute name="number:style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="number-seconds-attlist" combine="interleave"> + <optional> + <attribute name="number:decimal-places" a:defaultValue="0"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="number-am-pm"> + <element name="number:am-pm"> + <empty/> + </element> +</define> +<define name="number-boolean-style"> + <element name="number:boolean-style"> + <ref name="common-data-style-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <optional> + <ref name="number-boolean"/> + <optional> + <ref name="number-text"/> + </optional> + </optional> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> +</define> +<define name="number-boolean"> + <element name="number:boolean"> + <empty/> + </element> +</define> +<define name="number-text-style"> + <element name="number:text-style"> + <ref name="common-data-style-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <zeroOrMore> + <ref name="number-text-content"/> + <optional> + <ref name="number-text"/> + </optional> + </zeroOrMore> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> +</define> +<define name="number-text"> + <element name="number:text"> + <text/> + </element> +</define> +<define name="number-text-content"> + <element name="number:text-content"> + <empty/> + </element> +</define> +<define name="common-data-style-attlist" combine="interleave"> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="style-data-style-attlist" combine="interleave"> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-data-style-attlist" combine="interleave"> + <optional> + <attribute name="number:language"> + <ref name="languageCode"/> + </attribute> + </optional> +</define> +<define name="common-data-style-attlist" combine="interleave"> + <optional> + <attribute name="number:country"> + <ref name="countryCode"/> + </attribute> + </optional> +</define> +<define name="common-data-style-attlist" combine="interleave"> + <optional> + <attribute name="number:title"/> + </optional> +</define> +<define name="common-data-style-attlist" combine="interleave"> + <optional> + <attribute name="style:volatile"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="common-auto-reorder-attlist" combine="interleave"> + <optional> + <attribute name="number:automatic-order" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="common-format-source-attlist"> + <optional> + <attribute name="number:format-source" a:defaultValue="fixed"> + <choice> + <value>fixed</value> + <value>language</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-data-style-attlist" combine="interleave"> + <optional> + <attribute name="number:transliteration-format" a:defaultValue="1"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-data-style-attlist" combine="interleave"> + <optional> + <attribute name="number:transliteration-language"> + <ref name="countryCode"/> + </attribute> + </optional> +</define> +<define name="common-data-style-attlist" combine="interleave"> + <optional> + <attribute name="number:transliteration-country"> + <ref name="countryCode"/> + </attribute> + </optional> +</define> +<define name="common-data-style-attlist" combine="interleave"> + <optional> + <attribute name="number:transliteration-style" a:defaultValue="short"> + <choice> + <value>short</value> + <value>medium</value> + <value>long</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-decimal-places-attlist"> + <optional> + <attribute name="number:decimal-places"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="common-number-attlist" combine="interleave"> + <optional> + <attribute name="number:min-integer-digits"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="common-number-attlist" combine="interleave"> + <optional> + <attribute name="number:grouping" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="common-calendar-attlist" combine="interleave"> + <optional> + <attribute name="number:calendar"> + <choice> + <value>gregorian</value> + <value>gengou</value> + <value>ROC</value> + <value>hanja_yoil</value> + <value>hanja</value> + <value>hijri</value> + <value>jewish</value> + <value>buddhist</value> + <ref name="string"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>text</value> + </attribute> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>paragraph</value> + </attribute> + <optional> + <ref name="style-paragraph-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>section</value> + </attribute> + <optional> + <ref name="style-section-properties"/> + </optional> + </group> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>ruby</value> + </attribute> + <optional> + <ref name="style-ruby-properties"/> + </optional> + </group> +</define> +<define name="text-linenumbering-configuration"> + <element name="text:linenumbering-configuration"> + <ref name="text-linenumbering-configuration-attlist"/> + <optional> + <ref name="text-linenumbering-separator"/> + </optional> + </element> +</define> +<define name="text-linenumbering-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:number-lines" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-linenumbering-configuration-attlist" combine="interleave"> + <optional> + <ref name="common-num-format-attlist"/> + </optional> +</define> +<define name="text-linenumbering-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-linenumbering-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:increment"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="text-linenumbering-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:number-position" a:defaultValue="left"> + <choice> + <value>left</value> + <value>right</value> + <value>inner</value> + <value>outer</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-linenumbering-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:offset"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="text-linenumbering-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:count-empty-lines" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-linenumbering-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:count-in-text-boxes" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-linenumbering-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:restart-on-page" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-linenumbering-separator"> + <element name="text:linenumbering-separator"> + <optional> + <attribute name="text:increment"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <text/> + </element> +</define> +<define name="text-notes-configuration"> + <element name="text:notes-configuration"> + <ref name="text-notes-configuration-content"/> + </element> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <ref name="text-note-class"/> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <optional> + <attribute name="text:citation-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <optional> + <attribute name="text:citation-body-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <optional> + <attribute name="text:default-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <optional> + <attribute name="text:master-page-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <optional> + <attribute name="text:start-value"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <ref name="common-num-format-prefix-suffix-attlist"/> + <optional> + <ref name="common-num-format-attlist"/> + </optional> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <optional> + <attribute name="text:start-numbering-at"> + <choice> + <value>document</value> + <value>chapter</value> + <value>page</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <optional> + <attribute name="text:footnotes-position"> + <choice> + <value>text</value> + <value>page</value> + <value>section</value> + <value>document</value> + </choice> + </attribute> + </optional> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <optional> + <element name="text:note-continuation-notice-forward"> + <text/> + </element> + </optional> +</define> +<define name="text-notes-configuration-content" combine="interleave"> + <optional> + <element name="text:note-continuation-notice-backward"> + <text/> + </element> + </optional> +</define> +<define name="text-bibliography-configuration"> + <element name="text:bibliography-configuration"> + <ref name="text-bibliography-configuration-attlist"/> + <zeroOrMore> + <ref name="text-sort-key"/> + </zeroOrMore> + </element> +</define> +<define name="text-bibliography-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:prefix"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:suffix"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-bibliography-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:numbered-entries" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-bibliography-configuration-attlist" combine="interleave"> + <optional> + <attribute name="text:sort-by-position" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="fo:language"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="fo:country"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="text:sort-algorithm"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-sort-key"> + <element name="text:sort-key"> + <ref name="text-sort-key-attlist"/> + <empty/> + </element> +</define> + +<define name="text-sort-key-attlist" combine="interleave"> + <attribute name="text:key"> + <choice> + <value>address</value> + <value>annote</value> + <value>author</value> + <value>bibliography-type</value> + <value>booktitle</value> + <value>chapter</value> + <value>custom1</value> + <value>custom2</value> + <value>custom3</value> + <value>custom4</value> + <value>custom5</value> + <value>edition</value> + <value>editor</value> + <value>howpublished</value> + <value>identifier</value> + <value>institution</value> + <value>isbn</value> + <value>issn</value> + <value>journal</value> + <value>month</value> + <value>note</value> + <value>number</value> + <value>organizations</value> + <value>pages</value> + <value>publisher</value> + <value>report-type</value> + <value>school</value> + <value>series</value> + <value>title</value> + <value>url</value> + <value>volume</value> + <value>year</value> + </choice> + </attribute> + <optional> + <attribute name="text:sort-ascending" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-list-style"> + <element name="text:list-style"> + <ref name="text-list-style-attr"/> + <zeroOrMore> + <ref name="text-list-style-content"/> + </zeroOrMore> + </element> +</define> +<define name="text-list-style-attr" combine="interleave"> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="text-list-style-attr" combine="interleave"> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="text-list-style-attr" combine="interleave"> + <optional> + <attribute name="text:consecutive-numbering" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="text-list-level-style-attr"> + <attribute name="text:level"> + <ref name="positiveInteger"/> + </attribute> +</define> +<define name="text-list-style-content" combine="choice"> + <element name="text:list-level-style-number"> + <ref name="text-list-level-style-attr"/> + <ref name="text-list-level-style-number-attr"/> + <optional> + <ref name="style-list-level-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </element> +</define> +<define name="text-list-level-style-number-attr" combine="interleave"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-list-level-style-number-attr" combine="interleave"> + <ref name="common-num-format-attlist"/> + <ref name="common-num-format-prefix-suffix-attlist"/> +</define> +<define name="text-list-level-style-number-attr" combine="interleave"> + <optional> + <attribute name="text:display-levels" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="text-list-level-style-number-attr" combine="interleave"> + <optional> + <attribute name="text:start-value" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="text-list-style-content" combine="choice"> + <element name="text:list-level-style-bullet"> + <ref name="text-list-level-style-attr"/> + <ref name="text-list-level-style-bullet-attr"/> + <optional> + <ref name="style-list-level-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </element> +</define> +<define name="text-list-level-style-bullet-attr" combine="interleave"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-list-level-style-bullet-attr" combine="interleave"> + <attribute name="text:bullet-char"> + <ref name="character"/> + </attribute> +</define> +<define name="text-list-level-style-bullet-attr" combine="interleave"> + <ref name="common-num-format-prefix-suffix-attlist"/> +</define> +<define name="text-list-level-style-bullet-attr" combine="interleave"> + <optional> + <attribute name="text:bullet-relative-size"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="text-list-style-content" combine="choice"> + <element name="text:list-level-style-image"> + <ref name="text-list-level-style-attr"/> + <ref name="text-list-level-style-image-attr"/> + <optional> + <ref name="style-list-level-properties"/> + </optional> + </element> +</define> +<define name="text-list-level-style-image-attr" combine="interleave"> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-binary-data"/> + </choice> +</define> +<define name="text-outline-style"> + <element name="text:outline-style"> + <oneOrMore> + <ref name="text-outline-level-style"/> + </oneOrMore> + </element> +</define> +<define name="text-outline-level-style"> + <element name="text:outline-level-style"> + <ref name="text-outline-level-style-attlist"/> + <optional> + <ref name="style-list-level-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </element> +</define> +<define name="text-outline-level-style-attlist" combine="interleave"> + <attribute name="text:level"> + <ref name="positiveInteger"/> + </attribute> +</define> +<define name="text-outline-level-style-attlist" combine="interleave"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="text-outline-level-style-attlist" combine="interleave"> + <ref name="common-num-format-attlist"/> + <ref name="common-num-format-prefix-suffix-attlist"/> +</define> +<define name="text-outline-level-style-attlist" combine="interleave"> + <optional> + <attribute name="text:display-levels" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="text-outline-level-style-attlist" combine="interleave"> + <optional> + <attribute name="text:start-value" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>table</value> + </attribute> + <optional> + <ref name="style-table-properties"/> + </optional> + </group> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>table-column</value> + </attribute> + <optional> + <ref name="style-table-column-properties"/> + </optional> + </group> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>table-row</value> + </attribute> + <optional> + <ref name="style-table-row-properties"/> + </optional> + </group> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>table-cell</value> + </attribute> + <optional> + <ref name="style-table-cell-properties"/> + </optional> + <optional> + <ref name="style-paragraph-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <choice> + <value>graphic</value> + <value>presentation</value> + </choice> + </attribute> + <optional> + <ref name="style-graphic-properties"/> + </optional> + <optional> + <ref name="style-paragraph-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> +</define> + +<define name="style-graphic-properties"> + <element name="style:graphic-properties"> + <ref name="style-graphic-properties-content"/> + </element> +</define> + +<define name="style-graphic-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-graphic-properties-content-strict"> + <ref name="style-graphic-properties-attlist"/> + <ref name="style-graphic-fill-properties-attlist"/> + <ref name="style-graphic-properties-elements"/> +</define> + +<define name=" style-graphic-properties-elements"> + <empty/> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>drawing-page</value> + </attribute> + <optional> + <ref name="style-drawing-page-properties"/> + </optional> + </group> +</define> + +<define name="style-drawing-page-properties"> + <element name="style:drawing-page-properties"> + <ref name="style-drawing-page-properties-content"/> + </element> +</define> + +<define name="style-drawing-page-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-drawing-page-properties-content-strict"> + <ref name="style-graphic-fill-properties-attlist"/> + <ref name="style-drawing-page-properties-attlist"/> + <ref name="style-drawing-page-properties-elements"/> +</define> +<define name="draw-gradient"> + <element name="draw:gradient"> + <ref name="common-draw-gradient-attlist"/> + <ref name="draw-gradient-attlist"/> + <empty/> + </element> +</define> +<define name="common-draw-gradient-attlist" combine="interleave"> + <optional> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> + </optional> +</define> +<define name="common-draw-gradient-attlist" combine="interleave"> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="common-draw-gradient-attlist" combine="interleave"> + <attribute name="draw:style"> + <ref name="gradient-style"/> + </attribute> +</define> +<define name="gradient-style"> + <choice> + <value>linear</value> + <value>axial</value> + <value>radial</value> + <value>ellipsoid</value> + <value>square</value> + <value>rectangular</value> + </choice> +</define> +<define name="common-draw-gradient-attlist" combine="interleave"> + <optional> + <attribute name="draw:cx"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:cy"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="draw-gradient-attlist" combine="interleave"> + <optional> + <attribute name="draw:start-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="draw-gradient-attlist" combine="interleave"> + <optional> + <attribute name="draw:start-intensity"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-intensity"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="common-draw-gradient-attlist" combine="interleave"> + <optional> + <attribute name="draw:angle"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="common-draw-gradient-attlist" combine="interleave"> + <optional> + <attribute name="draw:border"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="svg-linearGradient"> + <element name="svg:linearGradient"> + <ref name="common-svg-gradient-attlist"/> + <optional> + <attribute name="svg:x1" a:defaultValue="0%"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:y1" a:defaultValue="0%"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:x2" a:defaultValue="100%"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:y2" a:defaultValue="100%"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <zeroOrMore> + <ref name="svg-stop"/> + </zeroOrMore> + </element> +</define> + +<define name="svg-radialGradient"> + <element name="svg:radialGradient"> + <ref name="common-svg-gradient-attlist"/> + <optional> + <attribute name="svg:cx" a:defaultValue="50%"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:cy" a:defaultValue="50%"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:r" a:defaultValue="50%"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:fx"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:fy"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <zeroOrMore> + <ref name="svg-stop"/> + </zeroOrMore> + </element> +</define> + +<define name="svg-stop"> + <element name="svg:stop"> + <attribute name="svg:offset"> + <choice> + <ref name="double"/> + <ref name="percent"/> + </choice> + </attribute> + <optional> + <attribute name="svg:stop-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="svg:stop-opacity"> + <ref name="double"/> + </attribute> + </optional> + </element> +</define> + +<define name="common-svg-gradient-attlist" combine="interleave"> + <optional> + <attribute name="svg:gradientUnits" a:defaultValue="objectBoundingBox"> + <value>objectBoundingBox</value> + </attribute> + </optional> + <optional> + <attribute name="svg:gradientTransform"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="svg:spreadMethod" a:defaultValue="pad"> + <choice> + <value>pad</value> + <value>reflect</value> + <value>repeat</value> + </choice> + </attribute> + </optional> +</define> +<define name="common-svg-gradient-attlist" combine="interleave"> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="common-svg-gradient-attlist" combine="interleave"> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-hatch"> + <element name="draw:hatch"> + <ref name="draw-hatch-attlist"/> + <empty/> + </element> +</define> +<define name="draw-hatch-attlist" combine="interleave"> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="draw-hatch-attlist" combine="interleave"> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-hatch-attlist" combine="interleave"> + <attribute name="draw:style"> + <choice> + <value>single</value> + <value>double</value> + <value>triple</value> + </choice> + </attribute> +</define> +<define name="draw-hatch-attlist" combine="interleave"> + <optional> + <attribute name="draw:color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="draw-hatch-attlist" combine="interleave"> + <optional> + <attribute name="draw:distance"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="draw-hatch-attlist" combine="interleave"> + <optional> + <attribute name="draw:rotation"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="draw-fill-image"> + <element name="draw:fill-image"> + <ref name="draw-fill-image-attlist"/> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + <optional> + <attribute name="xlink:type" a:defaultValue="simple"> + <choice> + <value>simple</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="xlink:show" a:defaultValue="embed"> + <choice> + <value>embed</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate" a:defaultValue="onLoad"> + <choice> + <value>onLoad</value> + </choice> + </attribute> + </optional> + <empty/> + </element> +</define> +<define name="draw-fill-image-attlist" combine="interleave"> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="draw-fill-image-attlist" combine="interleave"> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-fill-image-attlist" combine="interleave"> + <optional> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="draw-opacity"> + <element name="draw:opacity"> + <ref name="common-draw-gradient-attlist"/> + <ref name="draw-opacity-attlist"/> + <empty/> + </element> +</define> +<define name="draw-opacity-attlist" combine="interleave"> + <optional> + <attribute name="draw:start"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="draw-marker"> + <element name="draw:marker"> + <ref name="draw-marker-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-path-data-attlist"/> + <empty/> + </element> +</define> +<define name="draw-marker-attlist" combine="interleave"> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="draw-marker-attlist" combine="interleave"> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-stroke-dash"> + <element name="draw:stroke-dash"> + <ref name="draw-stroke-dash-attlist"/> + <empty/> + </element> +</define> +<define name="draw-stroke-dash-attlist" combine="interleave"> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> +</define> +<define name="draw-stroke-dash-attlist" combine="interleave"> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="draw-stroke-dash-attlist" combine="interleave"> + <optional> + <attribute name="draw:style"> + <choice> + <value>rect</value> + <value>round</value> + </choice> + </attribute> + </optional> +</define> +<define name="draw-stroke-dash-attlist" combine="interleave"> + <optional> + <attribute name="draw:dots1"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="draw:dots1-length"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:dots2"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="draw:dots2-length"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="draw-stroke-dash-attlist" combine="interleave"> + <optional> + <attribute name="draw:distance"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-presentation-page-layout"> + <element name="style:presentation-page-layout"> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> + <zeroOrMore> + <ref name="presentation-placeholder"/> + </zeroOrMore> + </element> +</define> +<define name="presentation-placeholder"> + <element name="presentation:placeholder"> + <attribute name="presentation:object"> + <ref name="presentation-classes"/> + </attribute> + <attribute name="svg:x"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + <attribute name="svg:y"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + <attribute name="svg:width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + <attribute name="svg:height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + <empty/> + </element> +</define> +<define name="style-style-content" combine="choice"> + <group> + <attribute name="style:family"> + <value>chart</value> + </attribute> + <optional> + <ref name="style-chart-properties"/> + </optional> + <optional> + <ref name="style-graphic-properties"/> + </optional> + <optional> + <ref name="style-paragraph-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> +</define> +<define name="style-properties-content"> + <ref name="anyAttListOrElements"/> +</define> +<define name="style-page-layout-properties"> + <element name="style:page-layout-properties"> + <ref name="style-page-layout-properties-content"/> + </element> +</define> + +<define name="style-page-layout-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-page-layout-properties-content-strict"> + <ref name="style-page-layout-properties-attlist"/> + <ref name="style-page-layout-properties-elements"/> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:page-width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="fo:page-height"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <ref name="common-num-format-attlist"/> + </optional> + <ref name="common-num-format-prefix-suffix-attlist"/> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:paper-tray-name"> + <choice> + <value>default</value> + <ref name="string"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:print-orientation"> + <choice> + <value>portrait</value> + <value>landscape</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <ref name="common-horizontal-margin-attlist"/> + <ref name="common-vertical-margin-attlist"/> + <ref name="common-margin-attlist"/> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <ref name="common-border-attlist"/> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <ref name="common-border-line-width-attlist"/> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <ref name="common-padding-attlist"/> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <ref name="common-shadow-attlist"/> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <ref name="common-background-color-attlist"/> +</define> +<define name="style-page-layout-properties-elements" combine="interleave"> + <ref name="style-background-image"/> +</define> +<define name="style-page-layout-properties-elements" combine="interleave"> + <ref name="style-columns"/> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:register-truth-ref-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:print"> + <list> + <zeroOrMore> + <choice> + <value>headers</value> + <value>grid</value> + <value>annotations</value> + <value>objects</value> + <value>charts</value> + <value>drawings</value> + <value>formulas</value> + <value>zero-values</value> + </choice> + </zeroOrMore> + </list> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:print-page-order"> + <choice> + <value>ttb</value> + <value>ltr</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:first-page-number"> + <choice> + <ref name="positiveInteger"/> + <value>continue</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:scale-to"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="style:scale-to-pages"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:table-centering"> + <choice> + <value>horizontal</value> + <value>vertical</value> + <value>both</value> + <value>none</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:footnote-max-height"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <ref name="common-writing-mode-attlist"/> +</define> +<define name="style-page-layout-properties-elements" combine="interleave"> + <ref name="style-footnote-sep"/> +</define> + +<define name="style-footnote-sep"> + <optional> + <element name="style:footnote-sep"> + <ref name="style-footnote-sep-attlist"/> + <empty/> + </element> + </optional> +</define> +<define name="style-footnote-sep-attlist" combine="interleave"> + <optional> + <attribute name="style:width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:rel-width"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="style:color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="style:line-style"> + <ref name="lineStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:adjustment" a:defaultValue="left"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:distance-before-sep"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:distance-after-sep"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:layout-grid-mode"> + <choice> + <value>none</value> + <value>line</value> + <value>both</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:layout-grid-base-height"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:layout-grid-ruby-height"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:layout-grid-lines"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:layout-grid-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:layout-grid-ruby-below"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:layout-grid-print"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-page-layout-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:layout-grid-display"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-header-footer-properties"> + <element name="style:header-footer-properties"> + <ref name="style-header-footer-properties-content"/> + </element> +</define> + +<define name="style-header-footer-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-header-footer-properties-content-strict"> + <ref name="style-header-footer-properties-attlist"/> + <ref name="style-header-footer-properties-elements"/> +</define> +<define name="style-header-footer-properties-attlist" combine="interleave"> + <optional> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="fo:min-height"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-header-footer-properties-attlist" combine="interleave"> + <ref name="common-horizontal-margin-attlist"/> + <ref name="common-vertical-margin-attlist"/> + <ref name="common-margin-attlist"/> +</define> +<define name="style-header-footer-properties-attlist" combine="interleave"> + <ref name="common-border-attlist"/> +</define> +<define name="style-header-footer-properties-attlist" combine="interleave"> + <ref name="common-border-line-width-attlist"/> +</define> +<define name="style-header-footer-properties-attlist" combine="interleave"> + <ref name="common-padding-attlist"/> +</define> +<define name="style-header-footer-properties-attlist" combine="interleave"> + <ref name="common-background-color-attlist"/> +</define> +<define name="style-header-footer-properties-elements" combine="interleave"> + <ref name="style-background-image"/> +</define> +<define name="style-header-footer-properties-attlist" combine="interleave"> + <ref name="common-shadow-attlist"/> +</define> +<define name="style-header-footer-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:dynamic-spacing"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-text-properties"> + <element name="style:text-properties"> + <ref name="style-text-properties-content"/> + </element> +</define> + +<define name="style-text-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-text-properties-content-strict"> + <ref name="style-text-properties-attlist"/> + <ref name="style-text-properties-elements"/> +</define> + +<define name="style-text-properties-elements"> + <empty/> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:font-variant"> + <ref name="fontVariant"/> + </attribute> + </optional> +</define> + +<define name="fontVariant"> + <choice> + <value>normal</value> + <value>small-caps</value> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:text-transform"> + <choice> + <value>none</value> + <value>lowercase</value> + <value>uppercase</value> + <value>capitalize</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:use-window-font-color"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-outline"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-line-through-type"> + <ref name="lineType"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-line-through-style"> + <ref name="lineStyle"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-line-through-width"> + <ref name="lineWidth"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-line-through-color"> + <choice> + <value>font-color</value> + <ref name="color"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-line-through-text"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-line-through-text-style"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-position"> + <list> + <choice> + <ref name="percent"/> + <value>super</value> + <value>sub</value> + </choice> + <optional> + <ref name="percent"/> + </optional> + </list> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:font-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-name-asian"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-name-complex"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:font-family"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-asian"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-complex"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:font-family-generic"> + <ref name="fontFamilyGeneric"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-generic-asian"> + <ref name="fontFamilyGeneric"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-generic-complex"> + <ref name="fontFamilyGeneric"/> + </attribute> + </optional> +</define> + +<define name="fontFamilyGeneric"> + <choice> + <value>roman</value> + <value>swiss</value> + <value>modern</value> + <value>decorative</value> + <value>script</value> + <value>system</value> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:font-style-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-style-name-asian"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-style-name-complex"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:font-pitch"> + <ref name="fontPitch"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-pitch-asian"> + <ref name="fontPitch"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-pitch-complex"> + <ref name="fontPitch"/> + </attribute> + </optional> +</define> + +<define name="fontPitch"> + <choice> + <value>fixed</value> + <value>variable</value> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:font-charset"> + <ref name="textEncoding"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-charset-asian"> + <ref name="textEncoding"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-charset-complex"> + <ref name="textEncoding"/> + </attribute> + </optional> +</define> + +<define name="textEncoding"> + <data type="string"> + <param name="pattern">[A-Za-z][A-Za-z0-9._\-]*</param> + </data> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:font-size"> + <choice> + <ref name="positiveLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:font-size-asian"> + <choice> + <ref name="positiveLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:font-size-complex"> + <choice> + <ref name="positiveLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:font-size-rel"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-size-rel-asian"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-size-rel-complex"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:script-type"> + <choice> + <value>latin</value> + <value>asian</value> + <value>complex</value> + <value>ignore</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:letter-spacing"> + <choice> + <ref name="length"/> + <value>normal</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:language"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:language-asian"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:language-complex"> + <ref name="languageCode"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:country"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:country-asian"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:country-complex"> + <ref name="countryCode"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:font-style"> + <ref name="fontStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-style-asian"> + <ref name="fontStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-style-complex"> + <ref name="fontStyle"/> + </attribute> + </optional> +</define> + +<define name="fontStyle"> + <choice> + <value>normal</value> + <value>italic</value> + <value>oblique</value> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:font-relief"> + <choice> + <value>none</value> + <value>embossed</value> + <value>engraved</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:text-shadow"> + <ref name="shadowType"/> + </attribute> + </optional> +</define> + +<define name="shadowType"> + <choice> + <value>none</value> + <!-- The following string must match an XSL shadow decl --> + <ref name="string"/> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-underline-type"> + <ref name="lineType"/> + </attribute> + </optional> +</define> + +<define name="lineType"> + <choice> + <value>none</value> + <value>single</value> + <value>double</value> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-underline-style"> + <ref name="lineStyle"/> + </attribute> + </optional> +</define> + +<define name="lineStyle"> + <choice> + <value>none</value> + <value>solid</value> + <value>dotted</value> + <value>dash</value> + <value>long-dash</value> + <value>dot-dash</value> + <value>dot-dot-dash</value> + <value>wave</value> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-underline-width"> + <ref name="lineWidth"/> + </attribute> + </optional> +</define> + +<define name="lineWidth"> + <choice> + <value>auto</value> + <value>normal</value> + <value>bold</value> + <value>thin</value> + <value>dash</value> + <value>medium</value> + <value>thick</value> + <ref name="positiveInteger"/> + <ref name="percent"/> + <ref name="positiveLength"/> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-underline-color"> + <choice> + <value>font-color</value> + <ref name="color"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:font-weight"> + <ref name="fontWeight"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-weight-asian"> + <ref name="fontWeight"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-weight-complex"> + <ref name="fontWeight"/> + </attribute> + </optional> +</define> + +<define name="fontWeight"> + <choice> + <value>normal</value> + <value>bold</value> + <value>100</value> + <value>200</value> + <value>300</value> + <value>400</value> + <value>500</value> + <value>600</value> + <value>700</value> + <value>800</value> + <value>900</value> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-underline-mode"> + <ref name="lineMode"/> + </attribute> + </optional> +</define> + +<define name="lineMode"> + <choice> + <value>continuous</value> + <value>skip-white-space</value> + </choice> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-line-through-mode"> + <ref name="lineMode"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:letter-kerning"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-blinking"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <ref name="common-background-color-attlist"/> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-combine"> + <choice> + <value>none</value> + <value>letters</value> + <value>lines</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-combine-start-char"> + <ref name="character"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-combine-end-char"> + <ref name="character"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-emphasize"> + <choice> + <value>none</value> + <list> + <choice> + <value>none</value> + <value>accent</value> + <value>dot</value> + <value>circle</value> + <value>disc</value> + </choice> + <choice> + <value>above</value> + <value>below</value> + </choice> + </list> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-scale"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-rotation-angle"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-rotation-scale"> + <choice> + <value>fixed</value> + <value>line-height</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:hyphenate"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:hyphenation-remain-char-count"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:hyphenation-push-char-count"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="style-text-properties-attlist" combine="interleave"> + <choice> + <attribute name="text:display"> + <value>true</value> + </attribute> + <attribute name="text:display"> + <value>none</value> + </attribute> + <group> + <attribute name="text:display"> + <value>condition</value> + </attribute> + <attribute name="text:condition"> + <value>none</value> + </attribute> + </group> + <empty/> + </choice> +</define> +<define name="style-paragraph-properties"> + <element name="style:paragraph-properties"> + <ref name="style-paragraph-properties-content"/> + </element> +</define> + +<define name="style-paragraph-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-paragraph-properties-content-strict"> + <ref name="style-paragraph-properties-attlist"/> + <ref name="style-paragraph-properties-elements"/> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:line-height"> + <choice> + <value>normal</value> + <ref name="nonNegativeLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:line-height-at-least"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:line-spacing"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:font-independent-line-spacing"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-text-align"/> +</define> + +<define name="common-text-align"> + <optional> + <attribute name="fo:text-align"> + <choice> + <value>start</value> + <value>end</value> + <value>left</value> + <value>right</value> + <value>center</value> + <value>justify</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:text-align-last"> + <choice> + <value>start</value> + <value>center</value> + <value>justify</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:justify-single-word"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:keep-together"> + <choice> + <value>auto</value> + <value>always</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:widows"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:orphans"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-elements" combine="interleave"> + <ref name="style-tab-stops"/> +</define> + +<define name="style-tab-stops"> + <optional> + <element name="style:tab-stops"> + <zeroOrMore> + <ref name="style-tab-stop"/> + </zeroOrMore> + </element> + </optional> +</define> + +<define name="style-tab-stop"> + <element name="style:tab-stop"> + <ref name="style-tab-stop-attlist"/> + <empty/> + </element> +</define> +<define name="style-tab-stop-attlist" combine="interleave"> + <attribute name="style:position"> + <ref name="nonNegativeLength"/> + </attribute> +</define> +<define name="style-tab-stop-attlist" combine="interleave"> + <choice> + <optional> + <attribute name="style:type" a:defaultValue="left"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + </choice> + </attribute> + </optional> + <group> + <attribute name="style:type"> + <value>char</value> + </attribute> + <ref name="style-tab-stop-char-attlist"/> + </group> + </choice> +</define> +<define name="style-tab-stop-char-attlist" combine="interleave"> + <attribute name="style:char"> + <ref name="character"/> + </attribute> +</define> +<define name="style-tab-stop-attlist" combine="interleave"> + <optional> + <attribute name="style:leader-type"> + <ref name="lineType"/> + </attribute> + </optional> +</define> +<define name="style-tab-stop-attlist" combine="interleave"> + <optional> + <attribute name="style:leader-style"> + <ref name="lineStyle"/> + </attribute> + </optional> +</define> +<define name="style-tab-stop-attlist" combine="interleave"> + <optional> + <attribute name="style:leader-width"> + <ref name="lineWidth"/> + </attribute> + </optional> +</define> +<define name="style-tab-stop-attlist" combine="interleave"> + <optional> + <attribute name="style:leader-color"> + <choice> + <value>font-color</value> + <ref name="color"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-tab-stop-attlist" combine="interleave"> + <optional> + <attribute name="style:leader-text" a:defaultValue=" "> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-tab-stop-attlist" combine="interleave"> + <optional> + <attribute name="style:leader-text-style"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:tab-stop-distance"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:hyphenation-keep"> + <choice> + <value>auto</value> + <value>page</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:hyphenation-ladder-count"> + <choice> + <value>no-limit</value> + <ref name="positiveInteger"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-elements" combine="interleave"> + <ref name="style-drop-cap"/> +</define> + +<define name="style-drop-cap"> + <optional> + <element name="style:drop-cap"> + <ref name="style-drop-cap-attlist"/> + <empty/> + </element> + </optional> +</define> +<define name="style-drop-cap-attlist" combine="interleave"> + <optional> + <attribute name="style:length" a:defaultValue="1"> + <choice> + <value>word</value> + <ref name="positiveInteger"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-drop-cap-attlist" combine="interleave"> + <optional> + <attribute name="style:lines" a:defaultValue="1"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="style-drop-cap-attlist" combine="interleave"> + <optional> + <attribute name="style:distance" a:defaultValue="0cm"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-drop-cap-attlist" combine="interleave"> + <optional> + <attribute name="style:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:register-true"> + <ref name="boolean"/> + </attribute> + </optional> + </define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-horizontal-margin-attlist"/> +</define> + +<define name="common-horizontal-margin-attlist"> + <optional> + <attribute name="fo:margin-left"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:margin-right"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:text-indent"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:auto-text-indent"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-vertical-margin-attlist"/> +</define> + +<define name="common-vertical-margin-attlist"> + <optional> + <attribute name="fo:margin-top"> + <choice> + <ref name="nonNegativeLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:margin-bottom"> + <choice> + <ref name="nonNegativeLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-margin-attlist"/> +</define> + +<define name="common-margin-attlist"> + <optional> + <attribute name="fo:margin"> + <choice> + <ref name="nonNegativeLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-break-attlist"/> +</define> + +<define name="common-break-attlist"> + <optional> + <attribute name="fo:break-before"> + <choice> + <value>auto</value> + <value>column</value> + <value>page</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:break-after"> + <choice> + <value>auto</value> + <value>column</value> + <value>page</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-background-color-attlist"/> +</define> + +<define name="common-background-color-attlist"> + <optional> + <attribute name="fo:background-color"> + <choice> + <value>transparent</value> + <ref name="color"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-elements" combine="interleave"> + <ref name="style-background-image"/> +</define> + +<define name="style-background-image"> + <optional> + <element name="style:background-image"> + <ref name="style-background-image-attlist"/> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-binary-data"/> + <empty/> + </choice> + </element> + </optional> +</define> +<define name="style-background-image-attlist" combine="interleave"> + <optional> + <attribute name="style:repeat" a:defaultValue="repeat"> + <choice> + <value>no-repeat</value> + <value>repeat</value> + <value>stretch</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-background-image-attlist" combine="interleave"> + <optional> + <attribute name="style:position" a:defaultValue="center"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>top</value> + <value>bottom</value> + <list> + <ref name="horiBackPos"/> + <ref name="vertBackPos"/> + </list> + <list> + <ref name="vertBackPos"/> + <ref name="horiBackPos"/> + </list> + </choice> + </attribute> + </optional> +</define> + +<define name="horiBackPos"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + </choice> +</define> +<define name="vertBackPos"> + <choice> + <value>top</value> + <value>center</value> + <value>bottom</value> + </choice> +</define> +<define name="style-background-image-attlist" combine="interleave"> + <optional> + <attribute name="style:filter-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-background-image-attlist" combine="interleave"> + <optional> + <attribute name="draw:opacity"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-border-attlist"/> +</define> + +<define name="common-border-attlist"> + <optional> + <attribute name="fo:border"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:border-top"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:border-bottom"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:border-left"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:border-right"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-border-line-width-attlist"/> +</define> + +<define name="common-border-line-width-attlist"> + <optional> + <attribute name="style:border-line-width"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:border-line-width-top"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:border-line-width-bottom"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:border-line-width-left"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:border-line-width-right"> + <ref name="borderWidths"/> + </attribute> + </optional> +</define> + +<define name="borderWidths"> + <list> + <ref name="positiveLength"/> + <ref name="positiveLength"/> + <ref name="positiveLength"/> + </list> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-padding-attlist"/> +</define> + +<define name="common-padding-attlist"> + <optional> + <attribute name="fo:padding"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:padding-top"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:padding-bottom"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:padding-left"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:padding-right"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-shadow-attlist"/> +</define> + +<define name="common-shadow-attlist"> + <optional> + <attribute name="style:shadow"> + <ref name="shadowType"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-keep-with-next-attlist"/> +</define> + +<define name="common-keep-with-next-attlist"> + <optional> + <attribute name="fo:keep-with-next"> + <choice> + <value>auto</value> + <value>always</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:number-lines" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:line-number"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-autospace"> + <choice> + <value>none</value> + <value>ideograph-alpha</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:punctuation-wrap"> + <choice> + <value>simple</value> + <value>hanging</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:line-break"> + <choice> + <value>normal</value> + <value>strict</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:vertical-align" a:defaultValue="auto"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + <value>auto</value> + <value>baseline</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-writing-mode-attlist"/> +</define> + +<define name="common-writing-mode-attlist"> + <optional> + <attribute name="style:writing-mode"> + <choice> + <value>lr-tb</value> + <value>rl-tb</value> + <value>tb-rl</value> + <value>tb-lr</value> + <value>lr</value> + <value>rl</value> + <value>tb</value> + <value>page</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:writing-mode-automatic"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:snap-to-layout-grid"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <ref name="common-page-number-attlist"/> +</define> + +<define name="common-page-number-attlist"> + <optional> + <attribute name="style:page-number"> + <choice> <ref name="positiveInteger"/> <value>auto</value> </choice> + </attribute> + </optional> +</define> +<define name="style-paragraph-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:background-transparency"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-ruby-properties"> + <element name="style:ruby-properties"> + <ref name="style-ruby-properties-content"/> + </element> +</define> + +<define name="style-ruby-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-ruby-properties-content-strict"> + <ref name="style-ruby-properties-attlist"/> + <ref name="style-ruby-properties-elements"/> +</define> + +<define name="style-ruby-properties-elements"> + <empty/> +</define> +<define name="style-ruby-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:ruby-position"> + <choice> + <value>above</value> + <value>below</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-ruby-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:ruby-align"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>distribute-letter</value> + <value>distribute-space</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-section-properties"> + <element name="style:section-properties"> + <ref name="style-section-properties-content"/> + </element> +</define> + +<define name="style-section-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-section-properties-content-strict"> + <ref name="style-section-properties-attlist"/> + <ref name="style-section-properties-elements"/> +</define> +<define name="style-section-properties-attlist" combine="interleave"> + <ref name="common-background-color-attlist"/> +</define> +<define name="style-section-properties-elements" combine="interleave"> + <ref name="style-background-image"/> +</define> +<define name="style-section-properties-attlist" combine="interleave"> + <ref name="common-horizontal-margin-attlist"/> +</define> +<define name="style-section-properties-elements" combine="interleave"> + <ref name="style-columns"/> +</define> + +<define name="style-columns"> + <optional> + <element name="style:columns"> + <ref name="style-columns-attlist"/> + <optional> + <ref name="style-column-sep"/> + </optional> + <zeroOrMore> + <ref name="style-column"/> + </zeroOrMore> + </element> + </optional> +</define> +<define name="style-columns-attlist" combine="interleave"> + <attribute name="fo:column-count"> + <ref name="positiveInteger"/> + </attribute> +</define> +<define name="style-columns-attlist" combine="interleave"> + <optional> + <attribute name="fo:column-gap"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-column"> + <element name="style:column"> + <ref name="style-column-attlist"/> + </element> +</define> +<define name="style-column-attlist" combine="interleave"> + <attribute name="style:rel-width"> + <ref name="relativeLength"/> + </attribute> +</define> +<define name="style-column-attlist" combine="interleave"> + <optional> + <attribute name="fo:start-indent" a:defaultValue="0cm"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-column-attlist" combine="interleave"> + <optional> + <attribute name="fo:end-indent" a:defaultValue="0cm"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-column-attlist" combine="interleave"> + <optional> + <attribute name="fo:space-before" a:defaultValue="0cm"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-column-attlist" combine="interleave"> + <optional> + <attribute name="fo:space-after" a:defaultValue="0cm"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-column-sep"> + <element name="style:column-sep"> + <ref name="style-column-sep-attlist"/> + </element> +</define> +<define name="style-column-sep-attlist" combine="interleave"> + <optional> + <attribute name="style:style" a:defaultValue="solid"> + <choice> + <value>none</value> + <value>solid</value> + <value>dotted</value> + <value>dashed</value> + <value>dot-dashed</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-column-sep-attlist" combine="interleave"> + <attribute name="style:width"> + <ref name="length"/> + </attribute> +</define> +<define name="style-column-sep-attlist" combine="interleave"> + <optional> + <attribute name="style:height" a:defaultValue="100%"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-column-sep-attlist" combine="interleave"> + <optional> + <attribute name="style:vertical-align" a:defaultValue="top"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-column-sep-attlist" combine="interleave"> + <optional> + <attribute name="style:color" a:defaultValue="#000000"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-section-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:protect" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-section-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:dont-balance-text-columns"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-section-properties-attlist" combine="interleave"> + <ref name="common-writing-mode-attlist"/> +</define> +<define name="style-section-properties-elements" combine="interleave"> + <zeroOrMore> + <ref name="text-notes-configuration"/> + </zeroOrMore> +</define> +<define name="style-table-properties"> + <element name="style:table-properties"> + <ref name="style-table-properties-content"/> + </element> +</define> + +<define name="style-table-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-table-properties-content-strict"> + <ref name="style-table-properties-attlist"/> + <ref name="style-table-properties-elements"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:width"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:rel-width"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <optional> + <attribute name="table:align"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>margins</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <ref name="common-horizontal-margin-attlist"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <ref name="common-vertical-margin-attlist"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <ref name="common-margin-attlist"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <ref name="common-page-number-attlist"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <ref name="common-break-attlist"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <ref name="common-background-color-attlist"/> +</define> +<define name="style-table-properties-elements" combine="interleave"> + <ref name="style-background-image"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <ref name="common-shadow-attlist"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <ref name="common-keep-with-next-attlist"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:may-break-between-rows"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <optional> + <attribute name="table:border-model"> + <choice> + <value>collapsing</value> + <value>separating</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <ref name="common-writing-mode-attlist"/> +</define> +<define name="style-table-properties-attlist" combine="interleave"> + <optional> + <attribute name="table:display"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-table-column-properties"> + <element name="style:table-column-properties"> + <ref name="style-table-column-properties-content"/> + </element> +</define> + +<define name="style-table-column-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-table-column-properties-content-strict"> + <ref name="style-table-column-properties-attlist"/> + <ref name="style-table-column-properties-elements"/> +</define> + +<define name="style-table-column-properties-elements"> + <empty/> +</define> +<define name="style-table-column-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:column-width"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:rel-column-width"> + <ref name="relativeLength"/> + </attribute> + </optional> +</define> +<define name="style-table-column-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:use-optimal-column-width"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-table-column-properties-attlist" combine="interleave"> + <ref name="common-break-attlist"/> +</define> +<define name="style-table-row-properties"> + <element name="style:table-row-properties"> + <ref name="style-table-row-properties-content"/> + </element> +</define> + +<define name="style-table-row-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-table-row-properties-content-strict"> + <ref name="style-table-row-properties-attlist"/> + <ref name="style-table-row-properties-elements"/> +</define> +<define name="style-table-row-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:row-height"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:min-row-height"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="style-table-row-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:use-optimal-row-height"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-table-row-properties-attlist" combine="interleave"> + <ref name="common-background-color-attlist"/> +</define> +<define name="style-table-row-properties-elements" combine="interleave"> + <ref name="style-background-image"/> +</define> +<define name="style-table-row-properties-attlist" combine="interleave"> + <ref name="common-break-attlist"/> +</define> +<define name="style-table-row-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:keep-together"> + <choice> + <value>auto</value> + <value>always</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties"> + <element name="style:table-cell-properties"> + <ref name="style-table-cell-properties-content"/> + </element> +</define> + +<define name="style-table-cell-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-table-cell-properties-content-strict"> + <ref name="style-table-cell-properties-attlist"/> + <ref name="style-table-cell-properties-elements"/> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:vertical-align"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + <value>automatic</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:text-align-source"> + <choice> + <value>fix</value> + <value>value-type</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <ref name="common-style-direction-attlist"/> +</define> + +<define name="common-style-direction-attlist"> + <optional> + <attribute name="style:direction"> + <choice> + <value>ltr</value> + <value>ttb</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:glyph-orientation-vertical"> + <choice> + <value>auto</value> + <value>0</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <ref name="common-shadow-attlist"/> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <ref name="common-background-color-attlist"/> +</define> +<define name="style-table-cell-properties-elements" combine="interleave"> + <ref name="style-background-image"/> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <ref name="common-border-attlist"/> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:diagonal-tl-br"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:diagonal-tl-br-widths"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:diagonal-bl-tr"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:diagonal-bl-tr-widths"> + <ref name="borderWidths"/> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <ref name="common-border-line-width-attlist"/> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <ref name="common-padding-attlist"/> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:wrap-option"> + <choice> + <value>no-wrap</value> + <value>wrap</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <ref name="common-rotation-angle-attlist"/> +</define> + +<define name="common-rotation-angle-attlist"> + <optional> + <attribute name="style:rotation-angle"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:rotation-align"> + <choice> + <value>none</value> + <value>bottom</value> + <value>top</value> + <value>center</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:cell-protect"> + <choice> + <value>none</value> + <value>hidden-and-protected</value> + <list> + <oneOrMore> + <choice> + <value>protected</value> + <value>formula-hidden</value> + </choice> + </oneOrMore> + </list> + </choice> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:print-content"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:decimal-places"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:repeat-content"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-table-cell-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:shrink-to-fit"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-list-level-properties"> + <element name="style:list-level-properties"> + <ref name="style-list-level-properties-content"/> + </element> +</define> + +<define name="style-list-level-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-list-level-properties-content-strict"> + <ref name="style-list-level-properties-attlist"/> + <ref name="style-list-level-properties-elements"/> +</define> + +<define name="style-list-level-properties-elements"> + <empty/> +</define> +<define name="style-list-level-properties-attlist" combine="interleave"> + <ref name="common-text-align"/> +</define> +<define name="style-list-level-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:space-before"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="style-list-level-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:min-label-width"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="style-list-level-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:min-label-distance"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="style-list-level-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:font-name"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-list-level-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:width"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:height"> + <ref name="positiveLength"/> + </attribute> + </optional> +</define> +<define name="style-list-level-properties-attlist" combine="interleave"> + <ref name="common-vertical-rel-attlist"/> + <ref name="common-vertical-pos-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:stroke"> + <choice> + <value>none</value> + <value>dash</value> + <value>solid</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:stroke-dash"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:stroke-dash-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="svg:stroke-width"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="svg:stroke-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:marker-start"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:marker-end"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:marker-start-width"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:marker-end-width"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:marker-start-center"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:marker-end-center"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="svg:stroke-opacity"> + <choice> + <data type="double"> + <param name="minInclusive">0</param> + <param name="maxInclusive">1</param> + </data> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:stroke-linejoin"> + <choice> + <value>miter</value> + <value>round</value> + <value>bevel</value> + <value>middle</value> + <value>none</value> + <value>inherit</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fill"> + <choice> + <value>none</value> + <value>solid</value> + <value>bitmap</value> + <value>gradient</value> + <value>hatch</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fill-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:secondary-fill-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fill-gradient-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:gradient-step-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fill-hatch-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fill-hatch-solid"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fill-image-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:repeat"> + <choice> + <value>no-repeat</value> + <value>repeat</value> + <value>stretch</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fill-image-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-image-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fill-image-ref-point-x"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-image-ref-point-y"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-image-ref-point"> + <choice> + <value>top-left</value> + <value>top</value> + <value>top-right</value> + <value>left</value> + <value>center</value> + <value>right</value> + <value>bottom-left</value> + <value>bottom</value> + <value>bottom-right</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:tile-repeat-offset"/> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:opacity"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:opacity-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> +</define> +<define name="style-graphic-fill-properties-attlist" combine="interleave"> + <optional> + <attribute name="svg:fill-rule"> + <choice> + <value>nonzero</value> + <value>evenodd</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:symbol-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:animation"> + <choice> + <value>none</value> + <value>scroll</value> + <value>alternate</value> + <value>slide</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:animation-direction"> + <choice> + <value>left</value> + <value>right</value> + <value>up</value> + <value>down</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:animation-start-inside"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:animation-stop-inside"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:animation-repeat"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:animation-delay"> + <ref name="duration"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="text:animation-steps"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:auto-grow-width"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:auto-grow-height"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fit-to-size"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:fit-to-contour"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:textarea-vertical-align"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + <value>justify</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:textarea-horizontal-align"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>justify</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:wrap-option"> + <choice> + <value>no-wrap</value> + <value>wrap</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-elements" combine="interleave"> + <optional> + <ref name="text-list-style"/> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:color-mode"> + <choice> + <value>greyscale</value> + <value>mono</value> + <value>watermark</value> + <value>standard</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:color-inversion"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:luminance"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:contrast"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:gamma"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:red"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:green"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:blue"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:image-opacity"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:shadow"> + <choice> + <value>visible</value> + <value>hidden</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:shadow-offset-x"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:shadow-offset-y"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:shadow-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:shadow-opacity"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:start-line-spacing-horizontal"> + <ref name="distance"/> + </attribute> + </optional> + <optional> + <attribute name="draw:start-line-spacing-vertical"> + <ref name="distance"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:end-line-spacing-horizontal"> + <ref name="distance"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-line-spacing-vertical"> + <ref name="distance"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:line-distance"> + <ref name="distance"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:guide-overhang"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:guide-distance"> + <ref name="distance"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:start-guide"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:end-guide"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:placing"> + <choice> + <value>below</value> + <value>above</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:parallel"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:measure-align"> + <choice> + <value>automatic</value> + <value>left-outside</value> + <value>inside</value> + <value>right-outside</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:measure-vertical-align"> + <choice> + <value>automatic</value> + <value>above</value> + <value>below</value> + <value>center</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:unit"> + <choice> + <value>automatic</value> + <value>mm</value> + <value>cm</value> + <value>m</value> + <value>km</value> + <value>pt</value> + <value>pc</value> + <value>inch</value> + <value>ft</value> + <value>mi</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:show-unit"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:decimal-places"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-type"> + <choice> + <value>straight-line</value> + <value>angled-line</value> + <value>angled-connector-line</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-angle-type"> + <choice> + <value>fixed</value> + <value>free</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-angle"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-gap"> + <ref name="distance"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-escape-direction"> + <choice> + <value>horizontal</value> + <value>vertical</value> + <value>auto</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-escape"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-line-length"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:caption-fit-line-length"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:horizontal-segments"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:vertical-segments"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:edge-rounding"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:edge-rounding-mode"> + <choice> + <value>correct</value> + <value>attractive</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:back-scale"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:depth"> + <ref name="length"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:backface-culling"> + <choice> + <value>enabled</value> + <value>disabled</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:end-angle"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:close-front"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:close-back"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:lighting-mode"> + <choice> + <value>standard</value> + <value>double-sided</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:normals-kind"> + <choice> + <value>object</value> + <value>flat</value> + <value>sphere</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:normals-direction"> + <choice> + <value>normal</value> + <value>inverse</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:texture-generation-mode-x"> + <choice> + <value>object</value> + <value>parallel</value> + <value>sphere</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:texture-generation-mode-y"> + <choice> + <value>object</value> + <value>parallel</value> + <value>sphere</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:texture-kind"> + <choice> + <value>luminance</value> + <value>intensity</value> + <value>color</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:texture-filter"> + <choice> + <value>enabled</value> + <value>disabled</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:texture-mode"> + <choice> + <value>replace</value> + <value>modulate</value> + <value>blend</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:ambient-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:emissive-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:specular-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:diffuse-color"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:shininess"> + <ref name="percent"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="dr3d:shadow"> + <choice> + <value>visible</value> + <value>hidden</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-draw-rel-size-attlist"/> + <optional> + <attribute name="fo:min-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:min-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:max-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:max-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-horizontal-margin-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-vertical-margin-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-margin-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:print-content"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:protect"> + <choice> + <value>none</value> + <list> + <oneOrMore> + <choice> + <value>content</value> + <value>position</value> + <value>size</value> + </choice> + </oneOrMore> + </list> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:horizontal-pos"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>from-left</value> + <value>inside</value> + <value>outside</value> + <value>from-inside</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:x"> + <ref name="coordinate"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:horizontal-rel"> + <choice> + <value>page</value> + <value>page-content</value> + <value>page-start-margin</value> + <value>page-end-margin</value> + <value>frame</value> + <value>frame-content</value> + <value>frame-start-margin</value> + <value>frame-end-margin</value> + <value>paragraph</value> + <value>paragraph-content</value> + <value>paragraph-start-margin</value> + <value>paragraph-end-margin</value> + <value>char</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-vertical-pos-attlist"/> +</define> + +<define name="common-vertical-pos-attlist"> + <optional> + <attribute name="style:vertical-pos"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + <value>from-top</value> + <value>below</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-vertical-rel-attlist"/> +</define> + +<define name="common-vertical-rel-attlist"> + <optional> + <attribute name="style:vertical-rel"> + <choice> + <value>page</value> + <value>page-content</value> + <value>frame</value> + <value>frame-content</value> + <value>paragraph</value> + <value>paragraph-content</value> + <value>char</value> + <value>line</value> + <value>baseline</value> + <value>text</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-text-anchor-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-border-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-border-line-width-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-padding-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-shadow-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-background-color-attlist"/> +</define> +<define name="style-graphic-properties-elements" combine="interleave"> + <ref name="style-background-image"/> +</define> +<define name="style-graphic-properties-elements" combine="interleave"> + <ref name="style-columns"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:editable"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:wrap"> + <choice> + <value>none</value> + <value>left</value> + <value>right</value> + <value>parallel</value> + <value>dynamic</value> + <value>run-through</value> + <value>biggest</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:wrap-dynamic-threshold"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:number-wrapped-paragraphs"> + <choice> + <value>no-limit</value> + <ref name="positiveInteger"/> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:wrap-contour"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:wrap-contour-mode"> + <choice> + <value>full</value> + <value>outside</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:run-through"> + <choice> + <value>foreground</value> + <value>background</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:flow-with-text"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:overflow-behavior"> + <choice> + <value>clip</value> + <value>auto-create-new-frame</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="style:mirror"> + <choice> + <value>none</value> + <value>vertical</value> + <ref name="horizontal-mirror"/> + <list> + <value>vertical</value> + <ref name="horizontal-mirror"/> + </list> + <list> + <ref name="horizontal-mirror"/> + <value>vertical</value> + </list> + </choice> + </attribute> + </optional> +</define> + +<define name="horizontal-mirror"> + <choice> + <value>horizontal</value> + <value>horizontal-on-odd</value> + <value>horizontal-on-even</value> + </choice> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="fo:clip"> + <!-- The attribute value must match the one XSL's clip --> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:wrap-influence-on-position" + a:defaultValue="iterative"> + <choice> + <value>iterative</value> + <value>once-concurrent</value> + <value>once-successive</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <ref name="common-writing-mode-attlist"/> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:frame-display-scrollbar"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:frame-display-border"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:frame-margin-horizontal"> + <ref name="nonNegativePixelLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:frame-margin-vertical"> + <ref name="nonNegativePixelLength"/> + </attribute> + </optional> +</define> + +<define name="nonNegativePixelLength"> + <data type="string"> + <param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)</param> + </data> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:visible-area-left"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:visible-area-top"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:visible-area-width"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:visible-area-height"> + <ref name="positiveLength"/> + </attribute> + </optional> +</define> +<define name="style-graphic-properties-attlist" combine="interleave"> + <optional> + <attribute name="draw:ole-draw-aspect"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties"> + <element name="style:chart-properties"> + <ref name="style-chart-properties-content"/> + </element> +</define> + +<define name="style-chart-properties-content"> + <ref name="style-properties-content"/> +</define> + +<define name="style-chart-properties-content-strict"> + <ref name="style-chart-properties-attlist"/> + <ref name="style-chart-properties-elements"/> +</define> + +<define name="style-chart-properties-elements"> + <empty/> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:scale-text" a:defaultValue="true"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:three-dimensional"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:deep"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <choice> + <attribute name="chart:symbol-type"> + <value>none</value> + </attribute> + <attribute name="chart:symbol-type"> + <value>automatic</value> + </attribute> + <group> + <attribute name="chart:symbol-type"> + <value>named-symbol</value> + </attribute> + <attribute name="chart:symbol-name"> + <choice> + <value>square</value> + <value>diamond</value> + <value>arrow-down</value> + <value>arrow-up</value> + <value>arrow-right</value> + <value>arrow-left</value> + <value>bow-tie</value> + <value>hourglass</value> + <value>circle</value> + <value>star</value> + <value>x</value> + <value>plus</value> + <value>asterisk</value> + <value>horizontal-bar</value> + <value>vertical-bar</value> + </choice> + </attribute> + </group> + <group> + <attribute name="chart:symbol-type"> + <value>image</value> + </attribute> + <element name="chart:symbol-image"> + <attribute name="xlink:href"> + <ref name="anyURI"/> + </attribute> + </element> + </group> + <empty/> + </choice> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:symbol-width"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="chart:symbol-height"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:vertical" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:connect-bars" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:gap-width"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="chart:overlap"> + <ref name="integer"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:japanese-candle-stick" + a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:interpolation" a:defaultValue="none"> + <choice> + <value>none</value> + <value>cubic-spline</value> + <value>b-spline</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:spline-order" a:defaultValue="2"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="chart:spline-resolution" a:defaultValue="20"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:pie-offset" a:defaultValue="0"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:lines" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:solid-type" a:defaultValue="cuboid"> + <choice> + <value>cuboid</value> + <value>cylinder</value> + <value>cone</value> + <value>pyramid</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:stacked" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:percentage" a:defaultValue="false"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:link-data-style-to-source"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:visible"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:logarithmic"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:maximum"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:minimum"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:origin"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:interval-major"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:interval-minor-divisor"> + <ref name="positiveInteger"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:tick-marks-major-inner"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:tick-marks-major-outer"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:tick-marks-minor-inner"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:tick-marks-minor-outer"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:display-label"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:text-overlap"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:line-break"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:label-arrangement" + a:defaultValue="side-by-side"> + <choice> + <value>side-by-side</value> + <value>stagger-even</value> + <value>stagger-odd</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <ref name="common-style-direction-attlist"/> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <ref name="common-rotation-angle-attlist"/> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:data-label-number"> + <choice> + <value>none</value> + <value>value</value> + <value>percentage</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:data-label-text"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:data-label-symbol"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:mean-value"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:error-category" a:defaultValue="none"> + <choice> + <value>none</value> + <value>variance</value> + <value>standard-deviation</value> + <value>percentage</value> + <value>error-margin</value> + <value>constant</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:error-percentage"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:error-margin"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:error-lower-limit"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-upper-limit"> + <ref name="double"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:error-upper-indicator"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-lower-indicator"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:series-source" a:defaultValue="columns"> + <choice> + <value>columns</value> + <value>rows</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-chart-properties-attlist" combine="interleave"> + <optional> + <attribute name="chart:regression-type" a:defaultValue="none"> + <choice> + <value>none</value> + <value>linear</value> + <value>logarithmic</value> + <value>exponential</value> + <value>power</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" + combine="interleave"> + <optional> + <attribute name="presentation:transition-type"> + <choice> + <value>manual</value> + <value>automatic</value> + <value>semi-automatic</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" + combine="interleave"> + <optional> + <attribute name="presentation:transition-style"> + <choice> + <value>none</value> + <value>fade-from-left</value> + <value>fade-from-top</value> + <value>fade-from-right</value> + <value>fade-from-bottom</value> + <value>fade-from-upperleft</value> + <value>fade-from-upperright</value> + <value>fade-from-lowerleft</value> + <value>fade-from-lowerright</value> + <value>move-from-left</value> + <value>move-from-top</value> + <value>move-from-right</value> + <value>move-from-bottom</value> + <value>move-from-upperleft</value> + <value>move-from-upperright</value> + <value>move-from-lowerleft</value> + <value>move-from-lowerright</value> + <value>uncover-to-left</value> + <value>uncover-to-top</value> + <value>uncover-to-right</value> + <value>uncover-to-bottom</value> + <value>uncover-to-upperleft</value> + <value>uncover-to-upperright</value> + <value>uncover-to-lowerleft</value> + <value>uncover-to-lowerright</value> + <value>fade-to-center</value> + <value>fade-from-center</value> + <value>vertical-stripes</value> + <value>horizontal-stripes</value> + <value>clockwise</value> + <value>counterclockwise</value> + <value>open-vertical</value> + <value>open-horizontal</value> + <value>close-vertical</value> + <value>close-horizontal</value> + <value>wavyline-from-left</value> + <value>wavyline-from-top</value> + <value>wavyline-from-right</value> + <value>wavyline-from-bottom</value> + <value>spiralin-left</value> + <value>spiralin-right</value> + <value>spiralout-left</value> + <value>spiralout-right</value> + <value>roll-from-top</value> + <value>roll-from-left</value> + <value>roll-from-right</value> + <value>roll-from-bottom</value> + <value>stretch-from-left</value> + <value>stretch-from-top</value> + <value>stretch-from-right</value> + <value>stretch-from-bottom</value> + + <value>vertical-lines</value> + <value>horizontal-lines</value> + <value>dissolve</value> + <value>random</value> + <value>vertical-checkerboard</value> + <value>horizontal-checkerboard</value> + <value>interlocking-horizontal-left</value> + <value>interlocking-horizontal-right</value> + <value>interlocking-vertical-top</value> + <value>interlocking-vertical-bottom</value> + <value>fly-away</value> + <value>open</value> + <value>close</value> + <value>melt</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" + combine="interleave"> + <optional> + <attribute name="presentation:transition-speed"> + <ref name="presentationSpeeds"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist " combine="interleave"> + <optional> + <attribute name="smil:type"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" combine="interleave"> + <optional> + <attribute name="smil:subtype"> + <ref name="string"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" combine="interleave"> + <optional> + <attribute name="smil:direction" a:defaultValue="forward"> + <choice> + <value>forward</value> + <value>reverse</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" combine="interleave"> + <optional> + <attribute name="smil:fadeColor"> + <ref name="color"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" + combine="interleave"> + <optional> + <attribute name="presentation:duration"> + <ref name="duration"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" + combine="interleave"> + <optional> + <attribute name="presentation:visibility"> + <choice> + <value>visible</value> + <value>hidden</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-elements" + combine="interleave"> + <optional> + <ref name="presentation-sound"/> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" + combine="interleave"> + <optional> + <attribute name="draw:background-size"> + <choice> + <value>full</value> + <value>border</value> + </choice> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" + combine="interleave"> + <optional> + <attribute name="presentation:background-objects-visible"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" + combine="interleave"> + <optional> + <attribute name="presentation:background-visible"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" combine="interleave"> + <optional> + <attribute name="presentation:display-header"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" combine="interleave"> + <optional> + <attribute name="presentation:display-footer"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" combine="interleave"> + <optional> + <attribute name="presentation:display-page-number"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="style-drawing-page-properties-attlist" combine="interleave"> + <optional> + <attribute name="presentation:display-date-time"> + <ref name="boolean"/> + </attribute> + </optional> +</define> +<define name="string"> + <data type="string"/> +</define> +<define name="date"> + <data type="date"/> +</define> +<define name="time"> + <data type="time"/> +</define> +<define name="dateTime"> + <data type="dateTime"/> +</define> +<define name="duration"> + <data type="duration"/> +</define> +<define name="integer"> + <data type="integer"/> +</define> +<define name="nonNegativeInteger"> + <data type="nonNegativeInteger"/> +</define> +<define name="positiveInteger"> + <data type="positiveInteger"/> +</define> +<define name="double"> + <data type="double"/> +</define> +<define name="anyURI"> + <data type="anyURI"/> +</define> +<define name="base64Binary"> + <data type="base64Binary"/> +</define> +<define name="ID"> + <data type="ID"/> +</define> +<define name="IDREF"> + <data type="IDREF"/> +</define> +<define name="IDREFS"> + <data type="IDREFS"/> +</define> +<define name="boolean"> + <choice> + <value>true</value> + <value>false</value> + </choice> +</define> +<define name="dateOrDateTime"> + <choice> + <data type="date"/> + <data type="dateTime"/> + </choice> +</define> +<define name="timeOrDateTime"> + <choice> + <data type="time"/> + <data type="dateTime"/> + </choice> +</define> +<define name="language"> + <data type="language"/> +</define> +<define name="countryCode"> + <data type="token"> + <param name="pattern">[A-Za-z0-9]{1,8}</param> + </data> +</define> +<define name="languageCode"> + <data type="token"> + <param name="pattern">[A-Za-z]{1,8}</param> + </data> +</define> +<define name="character"> + <data type="string"> + <param name="length">1</param> + </data> +</define> +<define name="length"> + <data type="string"> + <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param> + + </data> +</define> +<define name="nonNegativeLength"> + <data type="string"> + <param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param> + + </data> +</define> +<define name="positiveLength"> + <data type="string"> + <param name="pattern">([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))</param> + + </data> +</define> +<define name="percent"> + <data type="string"> + <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%</param> + </data> +</define> +<define name="relativeLength"> + <data type="string"> + <param name="pattern">[0-9]+\*</param> + </data> +</define> +<define name="coordinate"> + <ref name="length"/> +</define> +<define name="distance"> + <ref name="length"/> +</define> +<define name="color"> + <data type="string"> + <param name="pattern">#[0-9a-fA-F]{6}</param> + </data> +</define> +<define name="styleName"> + <data type="NCName"/> +</define> +<define name="styleNameRef"> + <choice> + <data type="NCName"/> + <empty/> + </choice> +</define> +<define name="styleNameRefs"> + <list> + <zeroOrMore> + <data type="NCName"/> + </zeroOrMore> + </list> +</define> +<define name="variableName"> + <data type="string"/> +</define> +<define name="formula"> + <!-- A formula should start with a namespace prefix, --> + <!-- but has no restrictions--> + <data type="string"/> +</define> + +<define name="targetFrameName"> + <choice> + <value>_self</value> + <value>_blank</value> + <value>_parent</value> + <value>_top</value> + <ref name="string"/> + </choice> +</define> + +<define name="valueType"> + <choice> + <value>float</value> + <value>time</value> + <value>date</value> + <value>percentage</value> + <value>currency</value> + <value>boolean</value> + <value>string</value> + </choice> +</define> + +<define name="points"> + <data type="string"> + <param name="pattern">-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*</param> + </data> +</define> +<define name="pathData"> + <data type="string"/> +</define> + +<define name="vector3D"> + <data type="string"> + <param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)</param> + + </data> +</define> + +<define name="namespacedToken"> + <data type="string"> + <param name="pattern">[0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+</param> + </data> +</define> +<define name="anyAttListOrElements"> + <zeroOrMore> + <attribute> + <anyName/> + <text/> + </attribute> + </zeroOrMore> + <ref name="anyElements"/> +</define> +<define name="anyElements"> + <zeroOrMore> + <element> + <anyName/> + <mixed> + <ref name="anyAttListOrElements"/> + </mixed> + </element> + </zeroOrMore> +</define> +</grammar> diff --git a/contrib/odt/OASIS/OpenDocument-v1.2-cs01-manifest-schema.rng b/contrib/odt/OASIS/OpenDocument-v1.2-cs01-manifest-schema.rng new file mode 100644 index 0000000..f8726c5 --- /dev/null +++ b/contrib/odt/OASIS/OpenDocument-v1.2-cs01-manifest-schema.rng @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Open Document Format for Office Applications (OpenDocument) Version 1.2 + Committee Specification (CS) 01, 17 March 2011 + Manifest Relax-NG Schema + + Copyright (c) OASIS Open 2002-2011. All Rights Reserved. + + All capitalized terms in the following text have the meanings assigned to them + in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The + full Policy may be found at the OASIS website. + + This document and translations of it may be copied and furnished to others, and + derivative works that comment on or otherwise explain it or assist in its + implementation may be prepared, copied, published, and distributed, in whole or + in part, without restriction of any kind, provided that the above copyright + notice and this section are included on all such copies and derivative works. + However, this document itself may not be modified in any way, including by + removing the copyright notice or references to OASIS, except as needed for the + purpose of developing any document or deliverable produced by an OASIS + Technical Committee (in which case the rules applicable to copyrights, as set + forth in the OASIS IPR Policy, must be followed) or as required to translate it + into languages other than English. + + The limited permissions granted above are perpetual and will not be revoked by + OASIS or its successors or assigns. + + This document and the information contained herein is provided on an "AS IS" + basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT + LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT + INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR + FITNESS FOR A PARTICULAR PURPOSE. +--> +<grammar + xmlns="http://relaxng.org/ns/structure/1.0" + + datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" + + xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" +> +<start> + <choice> + <ref name="manifest"/> + </choice> +</start> +<define name="manifest"> + <element name="manifest:manifest"> + <ref name="manifest-attlist"/> + <oneOrMore> + <ref name="file-entry"/> + </oneOrMore> + </element> +</define> +<define name="manifest-attlist"> + <attribute name="manifest:version"> + <value>1.2</value> + </attribute> +</define> +<define name="file-entry"> + <element name="manifest:file-entry"> + <ref name="file-entry-attlist"/> + <optional> + <ref name="encryption-data"/> + </optional> + </element> +</define> +<define name="file-entry-attlist"> + <interleave> + <attribute name="manifest:full-path"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="manifest:size"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <attribute name="manifest:media-type"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="manifest:preferred-view-mode"> + <choice> + <value>edit</value> + <value>presentation-slide-show</value> + <value>read-only</value> + <ref name="namespacedToken"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="manifest:version"> + <ref name="string"/> + </attribute> + </optional> + </interleave> +</define> + +<define name="encryption-data"> + <element name="manifest:encryption-data"> + <ref name="encryption-data-attlist"/> + <ref name="algorithm"/> + <optional> + <ref name="start-key-generation"/> + </optional> + <ref name="key-derivation"/> + </element> +</define> +<define name="encryption-data-attlist"> + <interleave> + <attribute name="manifest:checksum-type"> + <choice> + <value>SHA1/1K</value> + <ref name="anyURI"/> + </choice> + </attribute> + <attribute name="manifest:checksum"> + <ref name="base64Binary"/> + </attribute> + </interleave> +</define> +<define name="algorithm"> + <element name="manifest:algorithm"> + <ref name="algorithm-attlist"/> + <ref name="anyElements"/> + </element> +</define> +<define name="algorithm-attlist"> + <interleave> + <attribute name="manifest:algorithm-name"> + <choice> + <value>Blowfish CFB</value> + <ref name="anyURI"/> + </choice> + </attribute> + <attribute name="manifest:initialisation-vector"> + <ref name="base64Binary"/> + </attribute> + </interleave> +</define> +<define name="anyAttListOrElements"> + <zeroOrMore> + <attribute> + <anyName/> + <text/> + </attribute> + </zeroOrMore> + <ref name="anyElements"/> +</define> +<define name="anyElements"> + <zeroOrMore> + <element> + <anyName/> + <mixed> + <ref name="anyAttListOrElements"/> + </mixed> + </element> + </zeroOrMore> +</define> +<define name="key-derivation"> + <element name="manifest:key-derivation"> + <ref name="key-derivation-attlist"/> + <empty/> + </element> +</define> +<define name="key-derivation-attlist"> + <interleave> + <attribute name="manifest:key-derivation-name"> + <choice> + <value>PBKDF2</value> + <ref name="anyURI"/> + </choice> + </attribute> + <attribute name="manifest:salt"> + <ref name="base64Binary"/> + </attribute> + <attribute name="manifest:iteration-count"> + <ref name="nonNegativeInteger"/> + </attribute> + <optional> + <attribute name="manifest:key-size"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </interleave> +</define> +<define name="start-key-generation"> + <element name="manifest:start-key-generation"> + <ref name="start-key-generation-attlist"/> + <empty/> + </element> +</define> +<define name="start-key-generation-attlist"> + <interleave> + <attribute name="manifest:start-key-generation-name"> + <choice> + <value>SHA1</value> + <ref name="anyURI"/> + </choice> + </attribute> + <optional> + <attribute name="manifest:key-size"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </interleave> +</define> +<define name="base64Binary"> + <data type="base64Binary"/> +</define> +<define name="namespacedToken"> + <data type="QName"> + <param name="pattern">[^:]+:[^:]+</param> + </data> +</define> +<define name="nonNegativeInteger"> + <data type="nonNegativeInteger"/> +</define> +<define name="string"> + <data type="string"/> +</define> +<define name="anyURI"> + <data type="anyURI"/> +</define> +</grammar> diff --git a/contrib/odt/OASIS/OpenDocument-v1.2-cs01-schema.rng b/contrib/odt/OASIS/OpenDocument-v1.2-cs01-schema.rng new file mode 100644 index 0000000..9935cb3 --- /dev/null +++ b/contrib/odt/OASIS/OpenDocument-v1.2-cs01-schema.rng @@ -0,0 +1,18127 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Open Document Format for Office Applications (OpenDocument) Version 1.2 + Committee Specification (CS) 01, 17 March 2011 + Relax-NG Schema + + Copyright (c) OASIS Open 2002-2011. All Rights Reserved. + + All capitalized terms in the following text have the meanings assigned to them + in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The + full Policy may be found at the OASIS website. + + This document and translations of it may be copied and furnished to others, and + derivative works that comment on or otherwise explain it or assist in its + implementation may be prepared, copied, published, and distributed, in whole or + in part, without restriction of any kind, provided that the above copyright + notice and this section are included on all such copies and derivative works. + However, this document itself may not be modified in any way, including by + removing the copyright notice or references to OASIS, except as needed for the + purpose of developing any document or deliverable produced by an OASIS + Technical Committee (in which case the rules applicable to copyrights, as set + forth in the OASIS IPR Policy, must be followed) or as required to translate it + into languages other than English. + + The limited permissions granted above are perpetual and will not be revoked by + OASIS or its successors or assigns. + + This document and the information contained herein is provided on an "AS IS" + basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT + LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT + INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR + FITNESS FOR A PARTICULAR PURPOSE. +--> +<grammar + xmlns="http://relaxng.org/ns/structure/1.0" + + datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" + + xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" + xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" + xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" + xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" + xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" + xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" + xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" + xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" + xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" + xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" + xmlns:db="urn:oasis:names:tc:opendocument:xmlns:database:1.0" + xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" + xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" + xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" + xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" + + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:math="http://www.w3.org/1998/Math/MathML" + xmlns:xforms="http://www.w3.org/2002/xforms" + xmlns:grddl="http://www.w3.org/2003/g/data-view#" + xmlns:xhtml="http://www.w3.org/1999/xhtml" + + xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" + xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" + xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" +> + <define name="office-process-content"> + <optional> + <attribute name="office:process-content"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <start> + <choice> + <ref name="office-document"/> + <ref name="office-document-content"/> + <ref name="office-document-styles"/> + <ref name="office-document-meta"/> + <ref name="office-document-settings"/> + </choice> + </start> + <define name="office-document"> + <element name="office:document"> + <ref name="office-document-attrs"/> + <ref name="office-document-common-attrs"/> + <ref name="office-meta"/> + <ref name="office-settings"/> + <ref name="office-scripts"/> + <ref name="office-font-face-decls"/> + <ref name="office-styles"/> + <ref name="office-automatic-styles"/> + <ref name="office-master-styles"/> + <ref name="office-body"/> + </element> + </define> + <define name="office-document-content"> + <element name="office:document-content"> + <ref name="office-document-common-attrs"/> + <ref name="office-scripts"/> + <ref name="office-font-face-decls"/> + <ref name="office-automatic-styles"/> + <ref name="office-body"/> + </element> + </define> + <define name="office-document-styles"> + <element name="office:document-styles"> + <ref name="office-document-common-attrs"/> + <ref name="office-font-face-decls"/> + <ref name="office-styles"/> + <ref name="office-automatic-styles"/> + <ref name="office-master-styles"/> + </element> + </define> + <define name="office-document-meta"> + <element name="office:document-meta"> + <ref name="office-document-common-attrs"/> + <ref name="office-meta"/> + </element> + </define> + <define name="office-document-settings"> + <element name="office:document-settings"> + <ref name="office-document-common-attrs"/> + <ref name="office-settings"/> + </element> + </define> + <define name="office-document-common-attrs"> + <interleave> + <attribute name="office:version"> + <value>1.2</value> + </attribute> + <optional> + <attribute name="grddl:transformation"> + <list> + <zeroOrMore> + <ref name="anyIRI"/> + </zeroOrMore> + </list> + </attribute> + </optional> + </interleave> + </define> + <define name="office-document-attrs"> + <attribute name="office:mimetype"> + <ref name="string"/> + </attribute> + </define> + <define name="office-meta"> + <optional> + <element name="office:meta"> + <ref name="office-meta-content-strict"/> + </element> + </optional> + </define> + <define name="office-meta-content-strict"> + <zeroOrMore> + <ref name="office-meta-data"/> + </zeroOrMore> + </define> + <define name="office-body"> + <element name="office:body"> + <ref name="office-body-content"/> + </element> + </define> + <define name="office-body-content"> + <choice> + <element name="office:text"> + <ref name="office-text-attlist"/> + <ref name="office-text-content-prelude"/> + <ref name="office-text-content-main"/> + <ref name="office-text-content-epilogue"/> + </element> + <element name="office:drawing"> + <ref name="office-drawing-attlist"/> + <ref name="office-drawing-content-prelude"/> + <ref name="office-drawing-content-main"/> + <ref name="office-drawing-content-epilogue"/> + </element> + <element name="office:presentation"> + <ref name="office-presentation-attlist"/> + <ref name="office-presentation-content-prelude"/> + <ref name="office-presentation-content-main"/> + <ref name="office-presentation-content-epilogue"/> + </element> + <element name="office:spreadsheet"> + <ref name="office-spreadsheet-attlist"/> + <ref name="office-spreadsheet-content-prelude"/> + <ref name="office-spreadsheet-content-main"/> + <ref name="office-spreadsheet-content-epilogue"/> + </element> + <element name="office:chart"> + <ref name="office-chart-attlist"/> + <ref name="office-chart-content-prelude"/> + <ref name="office-chart-content-main"/> + <ref name="office-chart-content-epilogue"/> + </element> + <element name="office:image"> + <ref name="office-image-attlist"/> + <ref name="office-image-content-prelude"/> + <ref name="office-image-content-main"/> + <ref name="office-image-content-epilogue"/> + </element> + <ref name="office-database"/> + </choice> + </define> + <define name="office-text-content-prelude"> + <ref name="office-forms"/> + <ref name="text-tracked-changes"/> + <ref name="text-decls"/> + <ref name="table-decls"/> + </define> + <define name="office-text-content-main"> + <choice> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + <group> + <ref name="text-page-sequence"/> + <zeroOrMore> + <choice> + <ref name="shape"/> + </choice> + </zeroOrMore> + </group> + </choice> + </define> + <define name="text-content"> + <choice> + <ref name="text-h"/> + <ref name="text-p"/> + <ref name="text-list"/> + <ref name="text-numbered-paragraph"/> + <ref name="table-table"/> + <ref name="text-section"/> + <ref name="text-soft-page-break"/> + <ref name="text-table-of-content"/> + <ref name="text-illustration-index"/> + <ref name="text-table-index"/> + <ref name="text-object-index"/> + <ref name="text-user-index"/> + <ref name="text-alphabetical-index"/> + <ref name="text-bibliography"/> + <ref name="shape"/> + <ref name="change-marks"/> + </choice> + </define> + <define name="office-text-content-epilogue"> + <ref name="table-functions"/> + </define> + <define name="office-text-attlist"> + <interleave> + <optional> + <attribute name="text:global"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-soft-page-breaks"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="office-drawing-attlist"> + <empty/> + </define> + <define name="office-drawing-content-prelude"> + <ref name="text-decls"/> + <ref name="table-decls"/> + </define> + <define name="office-drawing-content-main"> + <zeroOrMore> + <ref name="draw-page"/> + </zeroOrMore> + </define> + <define name="office-drawing-content-epilogue"> + <ref name="table-functions"/> + </define> + <define name="office-presentation-attlist"> + <empty/> + </define> + <define name="office-presentation-content-prelude"> + <ref name="text-decls"/> + <ref name="table-decls"/> + <ref name="presentation-decls"/> + </define> + <define name="office-presentation-content-main"> + <zeroOrMore> + <ref name="draw-page"/> + </zeroOrMore> + </define> + <define name="office-presentation-content-epilogue"> + <ref name="presentation-settings"/> + <ref name="table-functions"/> + </define> + <define name="office-spreadsheet-content-prelude"> + <optional> + <ref name="table-tracked-changes"/> + </optional> + <ref name="text-decls"/> + <ref name="table-decls"/> + </define> + <define name="table-decls"> + <optional> + <ref name="table-calculation-settings"/> + </optional> + <optional> + <ref name="table-content-validations"/> + </optional> + <optional> + <ref name="table-label-ranges"/> + </optional> + </define> + <define name="office-spreadsheet-content-main"> + <zeroOrMore> + <ref name="table-table"/> + </zeroOrMore> + </define> + <define name="office-spreadsheet-content-epilogue"> + <ref name="table-functions"/> + </define> + <define name="table-functions"> + <optional> + <ref name="table-named-expressions"/> + </optional> + <optional> + <ref name="table-database-ranges"/> + </optional> + <optional> + <ref name="table-data-pilot-tables"/> + </optional> + <optional> + <ref name="table-consolidation"/> + </optional> + <optional> + <ref name="table-dde-links"/> + </optional> + </define> + <define name="office-chart-attlist"> + <empty/> + </define> + <define name="office-chart-content-prelude"> + <ref name="text-decls"/> + <ref name="table-decls"/> + </define> + <define name="office-chart-content-main"> + <ref name="chart-chart"/> + </define> + <define name="office-chart-content-epilogue"> + <ref name="table-functions"/> + </define> + <define name="office-image-attlist"> + <empty/> + </define> + <define name="office-image-content-prelude"> + <empty/> + </define> + <define name="office-image-content-main"> + <ref name="draw-frame"/> + </define> + <define name="office-image-content-epilogue"> + <empty/> + </define> + <define name="office-settings"> + <optional> + <element name="office:settings"> + <oneOrMore> + <ref name="config-config-item-set"/> + </oneOrMore> + </element> + </optional> + </define> + <define name="config-config-item-set"> + <element name="config:config-item-set"> + <ref name="config-config-item-set-attlist"/> + <ref name="config-items"/> + </element> + </define> + <define name="config-items"> + <oneOrMore> + <choice> + <ref name="config-config-item"/> + <ref name="config-config-item-set"/> + <ref name="config-config-item-map-named"/> + <ref name="config-config-item-map-indexed"/> + </choice> + </oneOrMore> + </define> + <define name="config-config-item-set-attlist"> + <attribute name="config:name"> + <ref name="string"/> + </attribute> + </define> + <define name="config-config-item"> + <element name="config:config-item"> + <ref name="config-config-item-attlist"/> + <text/> + </element> + </define> + <define name="config-config-item-attlist"> + <interleave> + <attribute name="config:name"> + <ref name="string"/> + </attribute> + <attribute name="config:type"> + <choice> + <value>boolean</value> + <value>short</value> + <value>int</value> + <value>long</value> + <value>double</value> + <value>string</value> + <value>datetime</value> + <value>base64Binary</value> + </choice> + </attribute> + </interleave> + </define> + <define name="config-config-item-map-indexed"> + <element name="config:config-item-map-indexed"> + <ref name="config-config-item-map-indexed-attlist"/> + <oneOrMore> + <ref name="config-config-item-map-entry"/> + </oneOrMore> + </element> + </define> + <define name="config-config-item-map-indexed-attlist"> + <attribute name="config:name"> + <ref name="string"/> + </attribute> + </define> + <define name="config-config-item-map-entry"> + <element name="config:config-item-map-entry"> + <ref name="config-config-item-map-entry-attlist"/> + <ref name="config-items"/> + </element> + </define> + <define name="config-config-item-map-entry-attlist"> + <optional> + <attribute name="config:name"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="config-config-item-map-named"> + <element name="config:config-item-map-named"> + <ref name="config-config-item-map-named-attlist"/> + <oneOrMore> + <ref name="config-config-item-map-entry"/> + </oneOrMore> + </element> + </define> + <define name="config-config-item-map-named-attlist"> + <attribute name="config:name"> + <ref name="string"/> + </attribute> + </define> + <define name="office-scripts"> + <optional> + <element name="office:scripts"> + <zeroOrMore> + <ref name="office-script"/> + </zeroOrMore> + <optional> + <ref name="office-event-listeners"/> + </optional> + </element> + </optional> + </define> + <define name="office-script"> + <element name="office:script"> + <ref name="office-script-attlist"/> + <mixed> + <ref name="anyElements"/> + </mixed> + </element> + </define> + <define name="office-script-attlist"> + <attribute name="script:language"> + <ref name="string"/> + </attribute> + </define> + <define name="office-font-face-decls"> + <optional> + <element name="office:font-face-decls"> + <zeroOrMore> + <ref name="style-font-face"/> + </zeroOrMore> + </element> + </optional> + </define> + <define name="office-styles"> + <optional> + <element name="office:styles"> + <interleave> + <ref name="styles"/> + <zeroOrMore> + <ref name="style-default-style"/> + </zeroOrMore> + <optional> + <ref name="style-default-page-layout"/> + </optional> + <optional> + <ref name="text-outline-style"/> + </optional> + <zeroOrMore> + <ref name="text-notes-configuration"/> + </zeroOrMore> + <optional> + <ref name="text-bibliography-configuration"/> + </optional> + <optional> + <ref name="text-linenumbering-configuration"/> + </optional> + <zeroOrMore> + <ref name="draw-gradient"/> + </zeroOrMore> + <zeroOrMore> + <ref name="svg-linearGradient"/> + </zeroOrMore> + <zeroOrMore> + <ref name="svg-radialGradient"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-hatch"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-fill-image"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-marker"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-stroke-dash"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-opacity"/> + </zeroOrMore> + <zeroOrMore> + <ref name="style-presentation-page-layout"/> + </zeroOrMore> + <zeroOrMore> + <ref name="table-table-template"/> + </zeroOrMore> + </interleave> + </element> + </optional> + </define> + <define name="office-automatic-styles"> + <optional> + <element name="office:automatic-styles"> + <interleave> + <ref name="styles"/> + <zeroOrMore> + <ref name="style-page-layout"/> + </zeroOrMore> + </interleave> + </element> + </optional> + </define> + <define name="office-master-styles"> + <optional> + <element name="office:master-styles"> + <interleave> + <zeroOrMore> + <ref name="style-master-page"/> + </zeroOrMore> + <optional> + <ref name="style-handout-master"/> + </optional> + <optional> + <ref name="draw-layer-set"/> + </optional> + </interleave> + </element> + </optional> + </define> + <define name="styles"> + <interleave> + <zeroOrMore> + <ref name="style-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="text-list-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-number-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-currency-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-percentage-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-date-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-time-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-boolean-style"/> + </zeroOrMore> + <zeroOrMore> + <ref name="number-text-style"/> + </zeroOrMore> + </interleave> + </define> + <define name="office-meta-data"> + <choice> + <element name="meta:generator"> + <ref name="string"/> + </element> + <element name="dc:title"> + <ref name="string"/> + </element> + <element name="dc:description"> + <ref name="string"/> + </element> + <element name="dc:subject"> + <ref name="string"/> + </element> + <element name="meta:keyword"> + <ref name="string"/> + </element> + <element name="meta:initial-creator"> + <ref name="string"/> + </element> + <ref name="dc-creator"/> + <element name="meta:printed-by"> + <ref name="string"/> + </element> + <element name="meta:creation-date"> + <ref name="dateTime"/> + </element> + <ref name="dc-date"/> + <element name="meta:print-date"> + <ref name="dateTime"/> + </element> + <element name="meta:template"> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:title"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="meta:date"> + <ref name="dateTime"/> + </attribute> + </optional> + </element> + <element name="meta:auto-reload"> + <optional> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:show"> + <value>replace</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate"> + <value>onLoad</value> + </attribute> + </optional> + </optional> + <optional> + <attribute name="meta:delay"> + <ref name="duration"/> + </attribute> + </optional> + </element> + <element name="meta:hyperlink-behaviour"> + <optional> + <attribute name="office:target-frame-name"> + <ref name="targetFrameName"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> + </element> + <element name="dc:language"> + <ref name="language"/> + </element> + <element name="meta:editing-cycles"> + <ref name="nonNegativeInteger"/> + </element> + <element name="meta:editing-duration"> + <ref name="duration"/> + </element> + <element name="meta:document-statistic"> + <optional> + <attribute name="meta:page-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:table-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:draw-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:image-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:ole-object-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:object-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:paragraph-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:word-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:character-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:frame-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:sentence-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:syllable-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:non-whitespace-character-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:row-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="meta:cell-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </element> + <element name="meta:user-defined"> + <attribute name="meta:name"> + <ref name="string"/> + </attribute> + <choice> + <group> + <attribute name="meta:value-type"> + <value>float</value> + </attribute> + <ref name="double"/> + </group> + <group> + <attribute name="meta:value-type"> + <value>date</value> + </attribute> + <ref name="dateOrDateTime"/> + </group> + <group> + <attribute name="meta:value-type"> + <value>time</value> + </attribute> + <ref name="duration"/> + </group> + <group> + <attribute name="meta:value-type"> + <value>boolean</value> + </attribute> + <ref name="boolean"/> + </group> + <group> + <attribute name="meta:value-type"> + <value>string</value> + </attribute> + <ref name="string"/> + </group> + <text/> + </choice> + </element> + </choice> + </define> + <define name="dc-creator"> + <element name="dc:creator"> + <ref name="string"/> + </element> + </define> + <define name="dc-date"> + <element name="dc:date"> + <ref name="dateTime"/> + </element> + </define> + <define name="text-h"> + <element name="text:h"> + <ref name="heading-attrs"/> + <ref name="paragraph-attrs"/> + <optional> + <ref name="text-number"/> + </optional> + <zeroOrMore> + <ref name="paragraph-content-or-hyperlink"/> + </zeroOrMore> + </element> + </define> + <define name="heading-attrs"> + <interleave> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> + <optional> + <attribute name="text:restart-numbering"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:start-value"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="text:is-list-header"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-number"> + <element name="text:number"> + <ref name="string"/> + </element> + </define> + <define name="text-p"> + <element name="text:p"> + <ref name="paragraph-attrs"/> + <zeroOrMore> + <ref name="paragraph-content-or-hyperlink"/> + </zeroOrMore> + </element> + </define> + <define name="paragraph-attrs"> + <interleave> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:class-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> + <optional> + <attribute name="text:cond-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <group> + <ref name="xml-id"/> + <optional> + <attribute name="text:id"> + <ref name="NCName"/> + </attribute> + </optional> + </group> + </optional> + <optional> + <ref name="common-in-content-meta-attlist"/> + </optional> + </interleave> + </define> + <define name="text-page-sequence"> + <element name="text:page-sequence"> + <oneOrMore> + <ref name="text-page"/> + </oneOrMore> + </element> + </define> + <define name="text-page"> + <element name="text:page"> + <ref name="text-page-attlist"/> + <empty/> + </element> + </define> + <define name="text-page-attlist"> + <attribute name="text:master-page-name"> + <ref name="styleNameRef"/> + </attribute> + </define> + <define name="text-list"> + <element name="text:list"> + <ref name="text-list-attr"/> + <optional> + <ref name="text-list-header"/> + </optional> + <zeroOrMore> + <ref name="text-list-item"/> + </zeroOrMore> + </element> + </define> + <define name="text-list-attr"> + <interleave> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:continue-numbering"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:continue-list"> + <ref name="IDREF"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="text-list-item"> + <element name="text:list-item"> + <ref name="text-list-item-attr"/> + <ref name="text-list-item-content"/> + </element> + </define> + <define name="text-list-item-content"> + <optional> + <ref name="text-number"/> + </optional> + <zeroOrMore> + <choice> + <ref name="text-p"/> + <ref name="text-h"/> + <ref name="text-list"/> + <ref name="text-soft-page-break"/> + </choice> + </zeroOrMore> + </define> + <define name="text-list-item-attr"> + <interleave> + <optional> + <attribute name="text:start-value"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="text:style-override"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="text-list-header"> + <element name="text:list-header"> + <ref name="text-list-header-attr"/> + <ref name="text-list-item-content"/> + </element> + </define> + <define name="text-list-header-attr"> + <optional> + <ref name="xml-id"/> + </optional> + </define> + <define name="text-numbered-paragraph"> + <element name="text:numbered-paragraph"> + <ref name="text-numbered-paragraph-attr"/> + <optional> + <ref name="text-number"/> + </optional> + <choice> + <ref name="text-p"/> + <ref name="text-h"/> + </choice> + </element> + </define> + <define name="text-numbered-paragraph-attr"> + <interleave> + <attribute name="text:list-id"> + <ref name="NCName"/> + </attribute> + <optional> + <attribute name="text:level"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + <attribute name="text:continue-numbering"> + <ref name="boolean"/> + </attribute> + <attribute name="text:start-value"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="text-section"> + <element name="text:section"> + <ref name="text-section-attlist"/> + <choice> + <ref name="text-section-source"/> + <ref name="text-section-source-dde"/> + <empty/> + </choice> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + </element> + </define> + <define name="text-section-attlist"> + <interleave> + <ref name="common-section-attlist"/> + <choice> + <attribute name="text:display"> + <choice> + <value>true</value> + <value>none</value> + </choice> + </attribute> + <group> + <attribute name="text:display"> + <value>condition</value> + </attribute> + <attribute name="text:condition"> + <ref name="string"/> + </attribute> + </group> + <empty/> + </choice> + </interleave> + </define> + <define name="common-section-attlist"> + <interleave> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="text:protected"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:protection-key"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:protection-key-digest-algorithm"> + <ref name="anyIRI"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="text-section-source"> + <element name="text:section-source"> + <ref name="text-section-source-attr"/> + </element> + </define> + <define name="text-section-source-attr"> + <interleave> + <optional> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:show"> + <value>embed</value> + </attribute> + </optional> + </optional> + <optional> + <attribute name="text:section-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:filter-name"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-section-source-dde"> + <ref name="office-dde-source"/> + </define> + <define name="text-tracked-changes"> + <optional> + <element name="text:tracked-changes"> + <ref name="text-tracked-changes-attr"/> + <zeroOrMore> + <ref name="text-changed-region"/> + </zeroOrMore> + </element> + </optional> + </define> + <define name="text-tracked-changes-attr"> + <optional> + <attribute name="text:track-changes"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="text-changed-region"> + <element name="text:changed-region"> + <ref name="text-changed-region-attr"/> + <ref name="text-changed-region-content"/> + </element> + </define> + <define name="text-changed-region-attr"> + <group> + <ref name="xml-id"/> + <optional> + <attribute name="text:id"> + <ref name="NCName"/> + </attribute> + </optional> + </group> + </define> + <define name="text-changed-region-content"> + <choice> + <element name="text:insertion"> + <ref name="office-change-info"/> + </element> + <element name="text:deletion"> + <ref name="office-change-info"/> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + </element> + <element name="text:format-change"> + <ref name="office-change-info"/> + </element> + </choice> + </define> + <define name="change-marks"> + <choice> + <element name="text:change"> + <ref name="change-mark-attr"/> + </element> + <element name="text:change-start"> + <ref name="change-mark-attr"/> + </element> + <element name="text:change-end"> + <ref name="change-mark-attr"/> + </element> + </choice> + </define> + <define name="change-mark-attr"> + <attribute name="text:change-id"> + <ref name="IDREF"/> + </attribute> + </define> + <define name="text-soft-page-break"> + <element name="text:soft-page-break"> + <empty/> + </element> + </define> + <define name="text-decls"> + <optional> + <element name="text:variable-decls"> + <zeroOrMore> + <ref name="text-variable-decl"/> + </zeroOrMore> + </element> + </optional> + <optional> + <element name="text:sequence-decls"> + <zeroOrMore> + <ref name="text-sequence-decl"/> + </zeroOrMore> + </element> + </optional> + <optional> + <element name="text:user-field-decls"> + <zeroOrMore> + <ref name="text-user-field-decl"/> + </zeroOrMore> + </element> + </optional> + <optional> + <element name="text:dde-connection-decls"> + <zeroOrMore> + <ref name="text-dde-connection-decl"/> + </zeroOrMore> + </element> + </optional> + <optional> + <ref name="text-alphabetical-index-auto-mark-file"/> + </optional> + </define> + <define name="paragraph-content-or-hyperlink"> + <choice> + <ref name="paragraph-content"/> + <ref name="text-a"/> + </choice> + </define> + <define name="paragraph-content"> + <choice> + <text/> + <element name="text:s"> + <optional> + <attribute name="text:c"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </element> + <element name="text:tab"> + <ref name="text-tab-attr"/> + </element> + <element name="text:line-break"> + <empty/> + </element> + <ref name="text-soft-page-break"/> + <element name="text:span"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:class-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> + <zeroOrMore> + <ref name="paragraph-content-or-hyperlink"/> + </zeroOrMore> + </element> + <element name="text:meta"> + <ref name="text-meta-attlist"/> + <zeroOrMore> + <ref name="paragraph-content-or-hyperlink"/> + </zeroOrMore> + </element> + <choice> + <ref name="text-bookmark"/> + <ref name="text-bookmark-start"/> + <ref name="text-bookmark-end"/> + </choice> + <element name="text:reference-mark"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </element> + <choice> + <element name="text:reference-mark-start"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </element> + <element name="text:reference-mark-end"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </element> + </choice> + <element name="text:note"> + <ref name="text-note-class"/> + <optional> + <attribute name="text:id"> + <ref name="string"/> + </attribute> + </optional> + <element name="text:note-citation"> + <optional> + <attribute name="text:label"> + <ref name="string"/> + </attribute> + </optional> + <text/> + </element> + <element name="text:note-body"> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + </element> + </element> + <element name="text:ruby"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <element name="text:ruby-base"> + <zeroOrMore> + <ref name="paragraph-content-or-hyperlink"/> + </zeroOrMore> + </element> + <element name="text:ruby-text"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <text/> + </element> + </element> + <choice> + <ref name="office-annotation"/> + <ref name="office-annotation-end"/> + </choice> + <ref name="change-marks"/> + <ref name="shape"/> + <element name="text:date"> + <ref name="text-date-attlist"/> + <text/> + </element> + <element name="text:time"> + <ref name="text-time-attlist"/> + <text/> + </element> + <element name="text:page-number"> + <ref name="text-page-number-attlist"/> + <text/> + </element> + <element name="text:page-continuation"> + <ref name="text-page-continuation-attlist"/> + <text/> + </element> + <element name="text:sender-firstname"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-lastname"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-initials"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-title"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-position"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-email"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-phone-private"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-fax"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-company"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-phone-work"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-street"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-city"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-postal-code"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-country"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:sender-state-or-province"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:author-name"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:author-initials"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:chapter"> + <ref name="text-chapter-attlist"/> + <text/> + </element> + <element name="text:file-name"> + <ref name="text-file-name-attlist"/> + <text/> + </element> + <element name="text:template-name"> + <ref name="text-template-name-attlist"/> + <text/> + </element> + <element name="text:sheet-name"> + <text/> + </element> + <element name="text:variable-set"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-formula-attlist"/> + <ref name="common-value-and-type-attlist"/> + <ref name="common-field-display-value-none-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> + <element name="text:variable-get"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-display-value-formula-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> + <element name="text:variable-input"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-description-attlist"/> + <ref name="common-value-type-attlist"/> + <ref name="common-field-display-value-none-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> + <element name="text:user-field-get"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-display-value-formula-none-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> + <element name="text:user-field-input"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-description-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> + <element name="text:sequence"> + <interleave> + <ref name="common-field-name-attlist"/> + <ref name="common-field-formula-attlist"/> + <ref name="common-field-num-format-attlist"/> + <ref name="text-sequence-ref-name"/> + </interleave> + <text/> + </element> + <element name="text:expression"> + <interleave> + <ref name="common-field-formula-attlist"/> + <optional> + <ref name="common-value-and-type-attlist"/> + </optional> + <ref name="common-field-display-value-formula-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> + <element name="text:text-input"> + <ref name="common-field-description-attlist"/> + <text/> + </element> + <element name="text:initial-creator"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:creation-date"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </optional> + </interleave> + <text/> + </element> + <element name="text:creation-time"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:time-value"> + <ref name="timeOrDateTime"/> + </attribute> + </optional> + </interleave> + <text/> + </element> + <element name="text:description"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:user-defined"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="office:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </optional> + <optional> + <attribute name="office:time-value"> + <ref name="duration"/> + </attribute> + </optional> + <optional> + <attribute name="office:boolean-value"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="office:string-value"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + <text/> + </element> + <element name="text:print-time"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:time-value"> + <ref name="time"/> + </attribute> + </optional> + </interleave> + <text/> + </element> + <element name="text:print-date"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:date-value"> + <ref name="date"/> + </attribute> + </optional> + </interleave> + <text/> + </element> + <element name="text:printed-by"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:title"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:subject"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:keywords"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:editing-cycles"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element name="text:editing-duration"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:duration"> + <ref name="duration"/> + </attribute> + </optional> + </interleave> + <text/> + </element> + <element name="text:modification-time"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:time-value"> + <ref name="time"/> + </attribute> + </optional> + </interleave> + <text/> + </element> + <element name="text:modification-date"> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + <optional> + <attribute name="text:date-value"> + <ref name="date"/> + </attribute> + </optional> + </interleave> + <text/> + </element> + <element name="text:creator"> + <ref name="common-field-fixed-attlist"/> + <text/> + </element> + <element> + <choice> + <name>text:page-count</name> + <name>text:paragraph-count</name> + <name>text:word-count</name> + <name>text:character-count</name> + <name>text:table-count</name> + <name>text:image-count</name> + <name>text:object-count</name> + </choice> + <ref name="common-field-num-format-attlist"/> + <text/> + </element> + <element name="text:database-display"> + <ref name="text-database-display-attlist"/> + <text/> + </element> + <element name="text:database-next"> + <ref name="text-database-next-attlist"/> + </element> + <element name="text:database-row-select"> + <ref name="text-database-row-select-attlist"/> + </element> + <element name="text:database-row-number"> + <interleave> + <ref name="common-field-database-table"/> + <ref name="common-field-num-format-attlist"/> + <optional> + <attribute name="text:value"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </interleave> + <text/> + </element> + <element name="text:database-name"> + <ref name="common-field-database-table"/> + <text/> + </element> + <element name="text:page-variable-set"> + <ref name="text-set-page-variable-attlist"/> + <text/> + </element> + <element name="text:page-variable-get"> + <ref name="text-get-page-variable-attlist"/> + <text/> + </element> + <element name="text:placeholder"> + <ref name="text-placeholder-attlist"/> + <text/> + </element> + <element name="text:conditional-text"> + <ref name="text-conditional-text-attlist"/> + <text/> + </element> + <element name="text:hidden-text"> + <ref name="text-hidden-text-attlist"/> + <text/> + </element> + <element> + <choice> + <name>text:reference-ref</name> + <name>text:bookmark-ref</name> + </choice> + <interleave> + <ref name="text-common-ref-content"/> + <ref name="text-bookmark-ref-content"/> + </interleave> + </element> + <element name="text:note-ref"> + <interleave> + <ref name="text-common-ref-content"/> + <ref name="text-note-ref-content"/> + </interleave> + </element> + <element name="text:sequence-ref"> + <interleave> + <ref name="text-common-ref-content"/> + <ref name="text-sequence-ref-content"/> + </interleave> + </element> + <element name="text:script"> + <interleave> + <choice> + <group> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + </group> + <text/> + </choice> + <optional> + <attribute name="script:language"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </element> + <element name="text:execute-macro"> + <optional> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <text/> + </element> + <element name="text:hidden-paragraph"> + <ref name="text-hidden-paragraph-attlist"/> + <text/> + </element> + <element name="text:dde-connection"> + <attribute name="text:connection-name"> + <ref name="string"/> + </attribute> + <text/> + </element> + <element name="text:measure"> + <attribute name="text:kind"> + <choice> + <value>value</value> + <value>unit</value> + <value>gap</value> + </choice> + </attribute> + <text/> + </element> + <element name="text:table-formula"> + <interleave> + <ref name="common-field-formula-attlist"/> + <ref name="common-field-display-value-formula-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <text/> + </element> + <element name="text:meta-field"> + <ref name="text-meta-field-attlist"/> + <zeroOrMore> + <ref name="paragraph-content-or-hyperlink"/> + </zeroOrMore> + </element> + <element name="text:toc-mark-start"> + <ref name="text-toc-mark-start-attrs"/> + </element> + <element name="text:toc-mark-end"> + <ref name="text-id"/> + </element> + <element name="text:toc-mark"> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> + <ref name="text-outline-level"/> + </element> + <element name="text:user-index-mark-start"> + <ref name="text-id"/> + <ref name="text-outline-level"/> + <ref name="text-index-name"/> + </element> + <element name="text:user-index-mark-end"> + <ref name="text-id"/> + </element> + <element name="text:user-index-mark"> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> + <ref name="text-outline-level"/> + <ref name="text-index-name"/> + </element> + <element name="text:alphabetical-index-mark-start"> + <ref name="text-id"/> + <ref name="text-alphabetical-index-mark-attrs"/> + </element> + <element name="text:alphabetical-index-mark-end"> + <ref name="text-id"/> + </element> + <element name="text:alphabetical-index-mark"> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> + <ref name="text-alphabetical-index-mark-attrs"/> + </element> + <element name="text:bibliography-mark"> + <attribute name="text:bibliography-type"> + <ref name="text-bibliography-types"/> + </attribute> + <zeroOrMore> + <attribute> + <choice> + <name>text:identifier</name> + <name>text:address</name> + <name>text:annote</name> + <name>text:author</name> + <name>text:booktitle</name> + <name>text:chapter</name> + <name>text:edition</name> + <name>text:editor</name> + <name>text:howpublished</name> + <name>text:institution</name> + <name>text:journal</name> + <name>text:month</name> + <name>text:note</name> + <name>text:number</name> + <name>text:organizations</name> + <name>text:pages</name> + <name>text:publisher</name> + <name>text:school</name> + <name>text:series</name> + <name>text:title</name> + <name>text:report-type</name> + <name>text:volume</name> + <name>text:year</name> + <name>text:url</name> + <name>text:custom1</name> + <name>text:custom2</name> + <name>text:custom3</name> + <name>text:custom4</name> + <name>text:custom5</name> + <name>text:isbn</name> + <name>text:issn</name> + </choice> + <ref name="string"/> + </attribute> + </zeroOrMore> + <text/> + </element> + <element name="presentation:header"> + <empty/> + </element> + <element name="presentation:footer"> + <empty/> + </element> + <element name="presentation:date-time"> + <empty/> + </element> + </choice> + </define> + <define name="text-tab-attr"> + <optional> + <attribute name="text:tab-ref"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </define> + <define name="text-a"> + <element name="text:a"> + <ref name="text-a-attlist"/> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="paragraph-content"/> + </zeroOrMore> + </element> + </define> + <define name="text-a-attlist"> + <interleave> + <optional> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="office:title"> + <ref name="string"/> + </attribute> + </optional> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + <optional> + <attribute name="office:target-frame-name"> + <ref name="targetFrameName"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:visited-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-meta-attlist"> + <interleave> + <optional> + <ref name="common-in-content-meta-attlist"/> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="text-bookmark"> + <element name="text:bookmark"> + <ref name="text-bookmark-attlist"/> + <empty/> + </element> + </define> + <define name="text-bookmark-start"> + <element name="text:bookmark-start"> + <ref name="text-bookmark-start-attlist"/> + <empty/> + </element> + </define> + <define name="text-bookmark-end"> + <element name="text:bookmark-end"> + <ref name="text-bookmark-end-attlist"/> + <empty/> + </element> + </define> + <define name="text-bookmark-attlist"> + <interleave> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="text-bookmark-start-attlist"> + <interleave> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + <optional> + <ref name="xml-id"/> + </optional> + <optional> + <ref name="common-in-content-meta-attlist"/> + </optional> + </interleave> + </define> + <define name="text-bookmark-end-attlist"> + <attribute name="text:name"> + <ref name="string"/> + </attribute> + </define> + <define name="text-note-class"> + <attribute name="text:note-class"> + <choice> + <value>footnote</value> + <value>endnote</value> + </choice> + </attribute> + </define> + <define name="text-date-attlist"> + <interleave> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <optional> + <attribute name="text:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </optional> + <optional> + <attribute name="text:date-adjust"> + <ref name="duration"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-time-attlist"> + <interleave> + <interleave> + <ref name="common-field-fixed-attlist"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + <optional> + <attribute name="text:time-value"> + <ref name="timeOrDateTime"/> + </attribute> + </optional> + <optional> + <attribute name="text:time-adjust"> + <ref name="duration"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-page-number-attlist"> + <interleave> + <interleave> + <ref name="common-field-num-format-attlist"/> + <ref name="common-field-fixed-attlist"/> + </interleave> + <optional> + <attribute name="text:page-adjust"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="text:select-page"> + <choice> + <value>previous</value> + <value>current</value> + <value>next</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="text-page-continuation-attlist"> + <interleave> + <attribute name="text:select-page"> + <choice> + <value>previous</value> + <value>next</value> + </choice> + </attribute> + <optional> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-chapter-attlist"> + <interleave> + <attribute name="text:display"> + <choice> + <value>name</value> + <value>number</value> + <value>number-and-name</value> + <value>plain-number-and-name</value> + <value>plain-number</value> + </choice> + </attribute> + <attribute name="text:outline-level"> + <ref name="nonNegativeInteger"/> + </attribute> + </interleave> + </define> + <define name="text-file-name-attlist"> + <interleave> + <optional> + <attribute name="text:display"> + <choice> + <value>full</value> + <value>path</value> + <value>name</value> + <value>name-and-extension</value> + </choice> + </attribute> + </optional> + <ref name="common-field-fixed-attlist"/> + </interleave> + </define> + <define name="text-template-name-attlist"> + <optional> + <attribute name="text:display"> + <choice> + <value>full</value> + <value>path</value> + <value>name</value> + <value>name-and-extension</value> + <value>area</value> + <value>title</value> + </choice> + </attribute> + </optional> + </define> + <define name="text-variable-decl"> + <element name="text:variable-decl"> + <ref name="common-field-name-attlist"/> + <ref name="common-value-type-attlist"/> + </element> + </define> + <define name="text-user-field-decl"> + <element name="text:user-field-decl"> + <ref name="common-field-name-attlist"/> + <optional> + <ref name="common-field-formula-attlist"/> + </optional> + <ref name="common-value-and-type-attlist"/> + </element> + </define> + <define name="text-sequence-decl"> + <element name="text:sequence-decl"> + <ref name="text-sequence-decl-attlist"/> + </element> + </define> + <define name="text-sequence-decl-attlist"> + <interleave> + <ref name="common-field-name-attlist"/> + <attribute name="text:display-outline-level"> + <ref name="nonNegativeInteger"/> + </attribute> + <optional> + <attribute name="text:separation-character"> + <ref name="character"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-sequence-ref-name"> + <optional> + <attribute name="text:ref-name"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-field-database-table"> + <ref name="common-field-database-table-attlist"/> + <ref name="common-field-database-name"/> + </define> + <define name="common-field-database-name"> + <choice> + <optional> + <attribute name="text:database-name"> + <ref name="string"/> + </attribute> + </optional> + <ref name="form-connection-resource"/> + </choice> + </define> + <define name="common-field-database-table-attlist"> + <interleave> + <attribute name="text:table-name"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="text:table-type"> + <choice> + <value>table</value> + <value>query</value> + <value>command</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="text-database-display-attlist"> + <interleave> + <ref name="common-field-database-table"/> + <ref name="common-field-data-style-name-attlist"/> + <attribute name="text:column-name"> + <ref name="string"/> + </attribute> + </interleave> + </define> + <define name="text-database-next-attlist"> + <interleave> + <ref name="common-field-database-table"/> + <optional> + <attribute name="text:condition"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-database-row-select-attlist"> + <interleave> + <ref name="common-field-database-table"/> + <optional> + <attribute name="text:condition"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:row-number"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-set-page-variable-attlist"> + <interleave> + <optional> + <attribute name="text:active"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:page-adjust"> + <ref name="integer"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-get-page-variable-attlist"> + <ref name="common-field-num-format-attlist"/> + </define> + <define name="text-placeholder-attlist"> + <interleave> + <attribute name="text:placeholder-type"> + <choice> + <value>text</value> + <value>table</value> + <value>text-box</value> + <value>image</value> + <value>object</value> + </choice> + </attribute> + <ref name="common-field-description-attlist"/> + </interleave> + </define> + <define name="text-conditional-text-attlist"> + <interleave> + <attribute name="text:condition"> + <ref name="string"/> + </attribute> + <attribute name="text:string-value-if-true"> + <ref name="string"/> + </attribute> + <attribute name="text:string-value-if-false"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="text:current-value"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-hidden-text-attlist"> + <interleave> + <attribute name="text:condition"> + <ref name="string"/> + </attribute> + <attribute name="text:string-value"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="text:is-hidden"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-common-ref-content"> + <interleave> + <text/> + <optional> + <attribute name="text:ref-name"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-bookmark-ref-content"> + <optional> + <attribute name="text:reference-format"> + <choice> + <ref name="common-ref-format-values"/> + <value>number-no-superior</value> + <value>number-all-superior</value> + <value>number</value> + </choice> + </attribute> + </optional> + </define> + <define name="text-note-ref-content"> + <interleave> + <optional> + <attribute name="text:reference-format"> + <choice> + <ref name="common-ref-format-values"/> + </choice> + </attribute> + </optional> + <ref name="text-note-class"/> + </interleave> + </define> + <define name="text-sequence-ref-content"> + <optional> + <attribute name="text:reference-format"> + <choice> + <ref name="common-ref-format-values"/> + <value>category-and-value</value> + <value>caption</value> + <value>value</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-ref-format-values"> + <choice> + <value>page</value> + <value>chapter</value> + <value>direction</value> + <value>text</value> + </choice> + </define> + <define name="text-hidden-paragraph-attlist"> + <interleave> + <attribute name="text:condition"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="text:is-hidden"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-meta-field-attlist"> + <interleave> + <ref name="xml-id"/> + <ref name="common-field-data-style-name-attlist"/> + </interleave> + </define> + <define name="common-value-type-attlist"> + <attribute name="office:value-type"> + <ref name="valueType"/> + </attribute> + </define> + <define name="common-value-and-type-attlist"> + <choice> + <group> + <attribute name="office:value-type"> + <value>float</value> + </attribute> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>percentage</value> + </attribute> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>currency</value> + </attribute> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + <optional> + <attribute name="office:currency"> + <ref name="string"/> + </attribute> + </optional> + </group> + <group> + <attribute name="office:value-type"> + <value>date</value> + </attribute> + <attribute name="office:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>time</value> + </attribute> + <attribute name="office:time-value"> + <ref name="duration"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>boolean</value> + </attribute> + <attribute name="office:boolean-value"> + <ref name="boolean"/> + </attribute> + </group> + <group> + <attribute name="office:value-type"> + <value>string</value> + </attribute> + <optional> + <attribute name="office:string-value"> + <ref name="string"/> + </attribute> + </optional> + </group> + </choice> + </define> + <define name="common-field-fixed-attlist"> + <optional> + <attribute name="text:fixed"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="common-field-name-attlist"> + <attribute name="text:name"> + <ref name="variableName"/> + </attribute> + </define> + <define name="common-field-description-attlist"> + <optional> + <attribute name="text:description"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-field-display-value-none-attlist"> + <optional> + <attribute name="text:display"> + <choice> + <value>value</value> + <value>none</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-field-display-value-formula-none-attlist"> + <optional> + <attribute name="text:display"> + <choice> + <value>value</value> + <value>formula</value> + <value>none</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-field-display-value-formula-attlist"> + <optional> + <attribute name="text:display"> + <choice> + <value>value</value> + <value>formula</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-field-formula-attlist"> + <optional> + <attribute name="text:formula"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-field-data-style-name-attlist"> + <optional> + <attribute name="style:data-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </define> + <define name="common-field-num-format-attlist"> + <optional> + <ref name="common-num-format-attlist"/> + </optional> + </define> + <define name="text-toc-mark-start-attrs"> + <ref name="text-id"/> + <ref name="text-outline-level"/> + </define> + <define name="text-outline-level"> + <optional> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </define> + <define name="text-id"> + <attribute name="text:id"> + <ref name="string"/> + </attribute> + </define> + <define name="text-index-name"> + <attribute name="text:index-name"> + <ref name="string"/> + </attribute> + </define> + <define name="text-alphabetical-index-mark-attrs"> + <interleave> + <optional> + <attribute name="text:key1"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:key2"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:string-value-phonetic"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:key1-phonetic"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:key2-phonetic"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:main-entry"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-bibliography-types"> + <choice> + <value>article</value> + <value>book</value> + <value>booklet</value> + <value>conference</value> + <value>custom1</value> + <value>custom2</value> + <value>custom3</value> + <value>custom4</value> + <value>custom5</value> + <value>email</value> + <value>inbook</value> + <value>incollection</value> + <value>inproceedings</value> + <value>journal</value> + <value>manual</value> + <value>mastersthesis</value> + <value>misc</value> + <value>phdthesis</value> + <value>proceedings</value> + <value>techreport</value> + <value>unpublished</value> + <value>www</value> + </choice> + </define> + <define name="text-index-body"> + <element name="text:index-body"> + <zeroOrMore> + <ref name="index-content-main"/> + </zeroOrMore> + </element> + </define> + <define name="index-content-main"> + <choice> + <ref name="text-content"/> + <ref name="text-index-title"/> + </choice> + </define> + <define name="text-index-title"> + <element name="text:index-title"> + <ref name="common-section-attlist"/> + <zeroOrMore> + <ref name="index-content-main"/> + </zeroOrMore> + </element> + </define> + <define name="text-table-of-content"> + <element name="text:table-of-content"> + <ref name="common-section-attlist"/> + <ref name="text-table-of-content-source"/> + <ref name="text-index-body"/> + </element> + </define> + <define name="text-table-of-content-source"> + <element name="text:table-of-content-source"> + <ref name="text-table-of-content-source-attlist"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <zeroOrMore> + <ref name="text-table-of-content-entry-template"/> + </zeroOrMore> + <zeroOrMore> + <ref name="text-index-source-styles"/> + </zeroOrMore> + </element> + </define> + <define name="text-table-of-content-source-attlist"> + <interleave> + <optional> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-outline-level"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-index-marks"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-index-source-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:index-scope"> + <choice> + <value>document</value> + <value>chapter</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="text:relative-tab-stop-position"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-table-of-content-entry-template"> + <element name="text:table-of-content-entry-template"> + <ref name="text-table-of-content-entry-template-attlist"/> + <zeroOrMore> + <ref name="text-table-of-content-children"/> + </zeroOrMore> + </element> + </define> + <define name="text-table-of-content-children"> + <choice> + <ref name="text-index-entry-chapter"/> + <ref name="text-index-entry-page-number"/> + <ref name="text-index-entry-text"/> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + <ref name="text-index-entry-link-start"/> + <ref name="text-index-entry-link-end"/> + </choice> + </define> + <define name="text-table-of-content-entry-template-attlist"> + <interleave> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </interleave> + </define> + <define name="text-illustration-index"> + <element name="text:illustration-index"> + <ref name="common-section-attlist"/> + <ref name="text-illustration-index-source"/> + <ref name="text-index-body"/> + </element> + </define> + <define name="text-illustration-index-source"> + <element name="text:illustration-index-source"> + <ref name="text-illustration-index-source-attrs"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <optional> + <ref name="text-illustration-index-entry-template"/> + </optional> + </element> + </define> + <define name="text-illustration-index-source-attrs"> + <interleave> + <ref name="text-index-scope-attr"/> + <ref name="text-relative-tab-stop-position-attr"/> + <optional> + <attribute name="text:use-caption"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:caption-sequence-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:caption-sequence-format"> + <choice> + <value>text</value> + <value>category-and-value</value> + <value>caption</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="text-index-scope-attr"> + <optional> + <attribute name="text:index-scope"> + <choice> + <value>document</value> + <value>chapter</value> + </choice> + </attribute> + </optional> + </define> + <define name="text-relative-tab-stop-position-attr"> + <optional> + <attribute name="text:relative-tab-stop-position"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="text-illustration-index-entry-template"> + <element name="text:illustration-index-entry-template"> + <ref name="text-illustration-index-entry-content"/> + </element> + </define> + <define name="text-illustration-index-entry-content"> + <ref name="text-illustration-index-entry-template-attrs"/> + <zeroOrMore> + <choice> + <ref name="text-index-entry-chapter"/> + <ref name="text-index-entry-page-number"/> + <ref name="text-index-entry-text"/> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + </choice> + </zeroOrMore> + </define> + <define name="text-illustration-index-entry-template-attrs"> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </define> + <define name="text-table-index"> + <element name="text:table-index"> + <ref name="common-section-attlist"/> + <ref name="text-table-index-source"/> + <ref name="text-index-body"/> + </element> + </define> + <define name="text-table-index-source"> + <element name="text:table-index-source"> + <ref name="text-illustration-index-source-attrs"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <optional> + <ref name="text-table-index-entry-template"/> + </optional> + </element> + </define> + <define name="text-table-index-entry-template"> + <element name="text:table-index-entry-template"> + <ref name="text-illustration-index-entry-content"/> + </element> + </define> + <define name="text-object-index"> + <element name="text:object-index"> + <ref name="common-section-attlist"/> + <ref name="text-object-index-source"/> + <ref name="text-index-body"/> + </element> + </define> + <define name="text-object-index-source"> + <element name="text:object-index-source"> + <ref name="text-object-index-source-attrs"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <optional> + <ref name="text-object-index-entry-template"/> + </optional> + </element> + </define> + <define name="text-object-index-source-attrs"> + <interleave> + <ref name="text-index-scope-attr"/> + <ref name="text-relative-tab-stop-position-attr"/> + <optional> + <attribute name="text:use-spreadsheet-objects"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-math-objects"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-draw-objects"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-chart-objects"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-other-objects"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-object-index-entry-template"> + <element name="text:object-index-entry-template"> + <ref name="text-illustration-index-entry-content"/> + </element> + </define> + <define name="text-user-index"> + <element name="text:user-index"> + <ref name="common-section-attlist"/> + <ref name="text-user-index-source"/> + <ref name="text-index-body"/> + </element> + </define> + <define name="text-user-index-source"> + <element name="text:user-index-source"> + <ref name="text-user-index-source-attr"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <zeroOrMore> + <ref name="text-user-index-entry-template"/> + </zeroOrMore> + <zeroOrMore> + <ref name="text-index-source-styles"/> + </zeroOrMore> + </element> + </define> + <define name="text-user-index-source-attr"> + <interleave> + <ref name="text-index-scope-attr"/> + <ref name="text-relative-tab-stop-position-attr"/> + <optional> + <attribute name="text:use-index-marks"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-index-source-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-graphics"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-tables"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-floating-frames"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-objects"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:copy-outline-levels"> + <ref name="boolean"/> + </attribute> + </optional> + <attribute name="text:index-name"> + <ref name="string"/> + </attribute> + </interleave> + </define> + <define name="text-user-index-entry-template"> + <element name="text:user-index-entry-template"> + <ref name="text-user-index-entry-template-attrs"/> + <zeroOrMore> + <choice> + <ref name="text-index-entry-chapter"/> + <ref name="text-index-entry-page-number"/> + <ref name="text-index-entry-text"/> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="text-user-index-entry-template-attrs"> + <interleave> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </interleave> + </define> + <define name="text-alphabetical-index"> + <element name="text:alphabetical-index"> + <ref name="common-section-attlist"/> + <ref name="text-alphabetical-index-source"/> + <ref name="text-index-body"/> + </element> + </define> + <define name="text-alphabetical-index-source"> + <element name="text:alphabetical-index-source"> + <ref name="text-alphabetical-index-source-attrs"/> + <optional> + <ref name="text-index-title-template"/> + </optional> + <zeroOrMore> + <ref name="text-alphabetical-index-entry-template"/> + </zeroOrMore> + </element> + </define> + <define name="text-alphabetical-index-source-attrs"> + <interleave> + <ref name="text-index-scope-attr"/> + <ref name="text-relative-tab-stop-position-attr"/> + <optional> + <attribute name="text:ignore-case"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:main-entry-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:alphabetical-separators"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:combine-entries"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:combine-entries-with-dash"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:combine-entries-with-pp"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:use-keys-as-entries"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:capitalize-entries"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:comma-separated"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="fo:language"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="fo:country"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="fo:script"> + <ref name="scriptCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:rfc-language-tag"> + <ref name="language"/> + </attribute> + </optional> + <optional> + <attribute name="text:sort-algorithm"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-alphabetical-index-auto-mark-file"> + <element name="text:alphabetical-index-auto-mark-file"> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + </element> + </define> + <define name="text-alphabetical-index-entry-template"> + <element name="text:alphabetical-index-entry-template"> + <ref name="text-alphabetical-index-entry-template-attrs"/> + <zeroOrMore> + <choice> + <ref name="text-index-entry-chapter"/> + <ref name="text-index-entry-page-number"/> + <ref name="text-index-entry-text"/> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="text-alphabetical-index-entry-template-attrs"> + <interleave> + <attribute name="text:outline-level"> + <choice> + <value>1</value> + <value>2</value> + <value>3</value> + <value>separator</value> + </choice> + </attribute> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </interleave> + </define> + <define name="text-bibliography"> + <element name="text:bibliography"> + <ref name="common-section-attlist"/> + <ref name="text-bibliography-source"/> + <ref name="text-index-body"/> + </element> + </define> + <define name="text-bibliography-source"> + <element name="text:bibliography-source"> + <optional> + <ref name="text-index-title-template"/> + </optional> + <zeroOrMore> + <ref name="text-bibliography-entry-template"/> + </zeroOrMore> + </element> + </define> + <define name="text-bibliography-entry-template"> + <element name="text:bibliography-entry-template"> + <ref name="text-bibliography-entry-template-attrs"/> + <zeroOrMore> + <choice> + <ref name="text-index-entry-span"/> + <ref name="text-index-entry-tab-stop"/> + <ref name="text-index-entry-bibliography"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="text-bibliography-entry-template-attrs"> + <interleave> + <attribute name="text:bibliography-type"> + <ref name="text-bibliography-types"/> + </attribute> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </interleave> + </define> + <define name="text-index-source-styles"> + <element name="text:index-source-styles"> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> + <zeroOrMore> + <ref name="text-index-source-style"/> + </zeroOrMore> + </element> + </define> + <define name="text-index-source-style"> + <element name="text:index-source-style"> + <attribute name="text:style-name"> + <ref name="styleName"/> + </attribute> + <empty/> + </element> + </define> + <define name="text-index-title-template"> + <element name="text:index-title-template"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <text/> + </element> + </define> + <define name="text-index-entry-chapter"> + <element name="text:index-entry-chapter"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <ref name="text-index-entry-chapter-attrs"/> + </element> + </define> + <define name="text-index-entry-chapter-attrs"> + <interleave> + <optional> + <attribute name="text:display"> + <choice> + <value>name</value> + <value>number</value> + <value>number-and-name</value> + <value>plain-number</value> + <value>plain-number-and-name</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="text:outline-level"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-index-entry-text"> + <element name="text:index-entry-text"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </element> + </define> + <define name="text-index-entry-page-number"> + <element name="text:index-entry-page-number"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </element> + </define> + <define name="text-index-entry-span"> + <element name="text:index-entry-span"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <text/> + </element> + </define> + <define name="text-index-entry-bibliography"> + <element name="text:index-entry-bibliography"> + <ref name="text-index-entry-bibliography-attrs"/> + </element> + </define> + <define name="text-index-entry-bibliography-attrs"> + <interleave> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <attribute name="text:bibliography-data-field"> + <choice> + <value>address</value> + <value>annote</value> + <value>author</value> + <value>bibliography-type</value> + <value>booktitle</value> + <value>chapter</value> + <value>custom1</value> + <value>custom2</value> + <value>custom3</value> + <value>custom4</value> + <value>custom5</value> + <value>edition</value> + <value>editor</value> + <value>howpublished</value> + <value>identifier</value> + <value>institution</value> + <value>isbn</value> + <value>issn</value> + <value>journal</value> + <value>month</value> + <value>note</value> + <value>number</value> + <value>organizations</value> + <value>pages</value> + <value>publisher</value> + <value>report-type</value> + <value>school</value> + <value>series</value> + <value>title</value> + <value>url</value> + <value>volume</value> + <value>year</value> + </choice> + </attribute> + </interleave> + </define> + <define name="text-index-entry-tab-stop"> + <element name="text:index-entry-tab-stop"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <ref name="text-index-entry-tab-stop-attrs"/> + </element> + </define> + <define name="text-index-entry-tab-stop-attrs"> + <interleave> + <optional> + <attribute name="style:leader-char"> + <ref name="character"/> + </attribute> + </optional> + <choice> + <attribute name="style:type"> + <value>right</value> + </attribute> + <group> + <attribute name="style:type"> + <value>left</value> + </attribute> + <attribute name="style:position"> + <ref name="length"/> + </attribute> + </group> + </choice> + </interleave> + </define> + <define name="text-index-entry-link-start"> + <element name="text:index-entry-link-start"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </element> + </define> + <define name="text-index-entry-link-end"> + <element name="text:index-entry-link-end"> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </element> + </define> + <define name="table-table"> + <element name="table:table"> + <ref name="table-table-attlist"/> + <optional> + <ref name="table-title"/> + </optional> + <optional> + <ref name="table-desc"/> + </optional> + <optional> + <ref name="table-table-source"/> + </optional> + <optional> + <ref name="office-dde-source"/> + </optional> + <optional> + <ref name="table-scenario"/> + </optional> + <optional> + <ref name="office-forms"/> + </optional> + <optional> + <ref name="table-shapes"/> + </optional> + <ref name="table-columns-and-groups"/> + <ref name="table-rows-and-groups"/> + <optional> + <ref name="table-named-expressions"/> + </optional> + </element> + </define> + <define name="table-columns-and-groups"> + <oneOrMore> + <choice> + <ref name="table-table-column-group"/> + <ref name="table-columns-no-group"/> + </choice> + </oneOrMore> + </define> + <define name="table-columns-no-group"> + <choice> + <group> + <ref name="table-columns"/> + <optional> + <ref name="table-table-header-columns"/> + <optional> + <ref name="table-columns"/> + </optional> + </optional> + </group> + <group> + <ref name="table-table-header-columns"/> + <optional> + <ref name="table-columns"/> + </optional> + </group> + </choice> + </define> + <define name="table-columns"> + <choice> + <ref name="table-table-columns"/> + <oneOrMore> + <ref name="table-table-column"/> + </oneOrMore> + </choice> + </define> + <define name="table-rows-and-groups"> + <oneOrMore> + <choice> + <ref name="table-table-row-group"/> + <ref name="table-rows-no-group"/> + </choice> + </oneOrMore> + </define> + <define name="table-rows-no-group"> + <choice> + <group> + <ref name="table-rows"/> + <optional> + <ref name="table-table-header-rows"/> + <optional> + <ref name="table-rows"/> + </optional> + </optional> + </group> + <group> + <ref name="table-table-header-rows"/> + <optional> + <ref name="table-rows"/> + </optional> + </group> + </choice> + </define> + <define name="table-rows"> + <choice> + <ref name="table-table-rows"/> + <oneOrMore> + <optional> + <ref name="text-soft-page-break"/> + </optional> + <ref name="table-table-row"/> + </oneOrMore> + </choice> + </define> + <define name="table-table-attlist"> + <interleave> + <optional> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="table:template-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:use-first-row-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:use-last-row-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:use-first-column-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:use-last-column-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:use-banding-rows-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:use-banding-columns-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:protected"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:protection-key"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:protection-key-digest-algorithm"> + <ref name="anyIRI"/> + </attribute> + </optional> + <optional> + <attribute name="table:print"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:print-ranges"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + <optional> + <attribute name="table:is-sub-table"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-title"> + <element name="table:title"> + <text/> + </element> + </define> + <define name="table-desc"> + <element name="table:desc"> + <text/> + </element> + </define> + <define name="table-table-row"> + <element name="table:table-row"> + <ref name="table-table-row-attlist"/> + <oneOrMore> + <choice> + <ref name="table-table-cell"/> + <ref name="table-covered-table-cell"/> + </choice> + </oneOrMore> + </element> + </define> + <define name="table-table-row-attlist"> + <interleave> + <optional> + <attribute name="table:number-rows-repeated"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="table:default-cell-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="table:visibility"> + <ref name="table-visibility-value"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="table-visibility-value"> + <choice> + <value>visible</value> + <value>collapse</value> + <value>filter</value> + </choice> + </define> + <define name="table-table-cell"> + <element name="table:table-cell"> + <ref name="table-table-cell-attlist"/> + <ref name="table-table-cell-attlist-extra"/> + <ref name="table-table-cell-content"/> + </element> + </define> + <define name="table-covered-table-cell"> + <element name="table:covered-table-cell"> + <ref name="table-table-cell-attlist"/> + <ref name="table-table-cell-content"/> + </element> + </define> + <define name="table-table-cell-content"> + <optional> + <ref name="table-cell-range-source"/> + </optional> + <optional> + <ref name="office-annotation"/> + </optional> + <optional> + <ref name="table-detective"/> + </optional> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + </define> + <define name="table-table-cell-attlist"> + <interleave> + <optional> + <attribute name="table:number-columns-repeated"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="table:content-validation-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:formula"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <ref name="common-value-and-type-attlist"/> + </optional> + <optional> + <attribute name="table:protect"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:protected"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + <optional> + <ref name="common-in-content-meta-attlist"/> + </optional> + </interleave> + </define> + <define name="table-table-cell-attlist-extra"> + <interleave> + <optional> + <attribute name="table:number-columns-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:number-rows-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:number-matrix-columns-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:number-matrix-rows-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-table-column"> + <element name="table:table-column"> + <ref name="table-table-column-attlist"/> + <empty/> + </element> + </define> + <define name="table-table-column-attlist"> + <interleave> + <optional> + <attribute name="table:number-columns-repeated"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="table:visibility"> + <ref name="table-visibility-value"/> + </attribute> + </optional> + <optional> + <attribute name="table:default-cell-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="table-table-header-columns"> + <element name="table:table-header-columns"> + <oneOrMore> + <ref name="table-table-column"/> + </oneOrMore> + </element> + </define> + <define name="table-table-columns"> + <element name="table:table-columns"> + <oneOrMore> + <ref name="table-table-column"/> + </oneOrMore> + </element> + </define> + <define name="table-table-column-group"> + <element name="table:table-column-group"> + <ref name="table-table-column-group-attlist"/> + <ref name="table-columns-and-groups"/> + </element> + </define> + <define name="table-table-column-group-attlist"> + <optional> + <attribute name="table:display"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="table-table-header-rows"> + <element name="table:table-header-rows"> + <oneOrMore> + <optional> + <ref name="text-soft-page-break"/> + </optional> + <ref name="table-table-row"/> + </oneOrMore> + </element> + </define> + <define name="table-table-rows"> + <element name="table:table-rows"> + <oneOrMore> + <optional> + <ref name="text-soft-page-break"/> + </optional> + <ref name="table-table-row"/> + </oneOrMore> + </element> + </define> + <define name="table-table-row-group"> + <element name="table:table-row-group"> + <ref name="table-table-row-group-attlist"/> + <ref name="table-rows-and-groups"/> + </element> + </define> + <define name="table-table-row-group-attlist"> + <optional> + <attribute name="table:display"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="cellAddress"> + <data type="string"> + <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+</param> + </data> + </define> + <define name="cellRangeAddress"> + <choice> + <data type="string"> + <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?</param> + </data> + <data type="string"> + <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+</param> + </data> + <data type="string"> + <param name="pattern">($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+</param> + </data> + </choice> + </define> + <define name="cellRangeAddressList"> + <data type="string"/> + <dc:description>Value is a space separated list of "cellRangeAddress" patterns</dc:description> + </define> + <define name="table-table-source"> + <element name="table:table-source"> + <ref name="table-table-source-attlist"/> + <ref name="table-linked-source-attlist"/> + <empty/> + </element> + </define> + <define name="table-table-source-attlist"> + <interleave> + <optional> + <attribute name="table:mode"> + <choice> + <value>copy-all</value> + <value>copy-results-only</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:table-name"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-linked-source-attlist"> + <interleave> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + <optional> + <attribute name="table:filter-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:filter-options"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:refresh-delay"> + <ref name="duration"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-scenario"> + <element name="table:scenario"> + <ref name="table-scenario-attlist"/> + <empty/> + </element> + </define> + <define name="table-scenario-attlist"> + <interleave> + <attribute name="table:scenario-ranges"> + <ref name="cellRangeAddressList"/> + </attribute> + <attribute name="table:is-active"> + <ref name="boolean"/> + </attribute> + <optional> + <attribute name="table:display-border"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:border-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="table:copy-back"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:copy-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:copy-formulas"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:comment"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:protected"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-shapes"> + <element name="table:shapes"> + <oneOrMore> + <ref name="shape"/> + </oneOrMore> + </element> + </define> + <define name="table-cell-range-source"> + <element name="table:cell-range-source"> + <ref name="table-table-cell-range-source-attlist"/> + <ref name="table-linked-source-attlist"/> + <empty/> + </element> + </define> + <define name="table-table-cell-range-source-attlist"> + <interleave> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <attribute name="table:last-column-spanned"> + <ref name="positiveInteger"/> + </attribute> + <attribute name="table:last-row-spanned"> + <ref name="positiveInteger"/> + </attribute> + </interleave> + </define> + <define name="table-detective"> + <element name="table:detective"> + <zeroOrMore> + <ref name="table-highlighted-range"/> + </zeroOrMore> + <zeroOrMore> + <ref name="table-operation"/> + </zeroOrMore> + </element> + </define> + <define name="table-operation"> + <element name="table:operation"> + <ref name="table-operation-attlist"/> + <empty/> + </element> + </define> + <define name="table-operation-attlist"> + <interleave> + <attribute name="table:name"> + <choice> + <value>trace-dependents</value> + <value>remove-dependents</value> + <value>trace-precedents</value> + <value>remove-precedents</value> + <value>trace-errors</value> + </choice> + </attribute> + <attribute name="table:index"> + <ref name="nonNegativeInteger"/> + </attribute> + </interleave> + </define> + <define name="table-highlighted-range"> + <element name="table:highlighted-range"> + <choice> + <group> + <ref name="table-highlighted-range-attlist"/> + </group> + <group> + <ref name="table-highlighted-range-attlist-invalid"/> + </group> + </choice> + <empty/> + </element> + </define> + <define name="table-highlighted-range-attlist"> + <interleave> + <optional> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> + <attribute name="table:direction"> + <choice> + <value>from-another-table</value> + <value>to-another-table</value> + <value>from-same-table</value> + </choice> + </attribute> + <optional> + <attribute name="table:contains-error"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-highlighted-range-attlist-invalid"> + <attribute name="table:marked-invalid"> + <ref name="boolean"/> + </attribute> + </define> + <define name="office-spreadsheet-attlist"> + <optional> + <attribute name="table:structure-protected"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:protection-key"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:protection-key-digest-algorithm"> + <ref name="anyIRI"/> + </attribute> + </optional> + </define> + <define name="table-calculation-settings"> + <element name="table:calculation-settings"> + <ref name="table-calculation-setting-attlist"/> + <optional> + <ref name="table-null-date"/> + </optional> + <optional> + <ref name="table-iteration"/> + </optional> + </element> + </define> + <define name="table-calculation-setting-attlist"> + <interleave> + <optional> + <attribute name="table:case-sensitive"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:precision-as-shown"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:search-criteria-must-apply-to-whole-cell"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:automatic-find-labels"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:use-regular-expressions"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:use-wildcards"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:null-year"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-null-date"> + <element name="table:null-date"> + <optional> + <attribute name="table:value-type"> + <value>date</value> + </attribute> + </optional> + <optional> + <attribute name="table:date-value"> + <ref name="date"/> + </attribute> + </optional> + <empty/> + </element> + </define> + <define name="table-iteration"> + <element name="table:iteration"> + <optional> + <attribute name="table:status"> + <choice> + <value>enable</value> + <value>disable</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:steps"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:maximum-difference"> + <ref name="double"/> + </attribute> + </optional> + <empty/> + </element> + </define> + <define name="table-content-validations"> + <element name="table:content-validations"> + <oneOrMore> + <ref name="table-content-validation"/> + </oneOrMore> + </element> + </define> + <define name="table-content-validation"> + <element name="table:content-validation"> + <ref name="table-validation-attlist"/> + <optional> + <ref name="table-help-message"/> + </optional> + <optional> + <choice> + <ref name="table-error-message"/> + <group> + <ref name="table-error-macro"/> + <ref name="office-event-listeners"/> + </group> + </choice> + </optional> + </element> + </define> + <define name="table-validation-attlist"> + <interleave> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="table:condition"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:base-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> + <optional> + <attribute name="table:allow-empty-cell"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:display-list"> + <choice> + <value>none</value> + <value>unsorted</value> + <value>sort-ascending</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="table-help-message"> + <element name="table:help-message"> + <optional> + <attribute name="table:title"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:display"> + <ref name="boolean"/> + </attribute> + </optional> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> + </define> + <define name="table-error-message"> + <element name="table:error-message"> + <optional> + <attribute name="table:title"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:display"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:message-type"> + <choice> + <value>stop</value> + <value>warning</value> + <value>information</value> + </choice> + </attribute> + </optional> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> + </define> + <define name="table-error-macro"> + <element name="table:error-macro"> + <optional> + <attribute name="table:execute"> + <ref name="boolean"/> + </attribute> + </optional> + </element> + </define> + <define name="table-label-ranges"> + <element name="table:label-ranges"> + <zeroOrMore> + <ref name="table-label-range"/> + </zeroOrMore> + </element> + </define> + <define name="table-label-range"> + <element name="table:label-range"> + <ref name="table-label-range-attlist"/> + <empty/> + </element> + </define> + <define name="table-label-range-attlist"> + <interleave> + <attribute name="table:label-cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + <attribute name="table:data-cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + <attribute name="table:orientation"> + <choice> + <value>column</value> + <value>row</value> + </choice> + </attribute> + </interleave> + </define> + <define name="table-named-expressions"> + <element name="table:named-expressions"> + <zeroOrMore> + <choice> + <ref name="table-named-range"/> + <ref name="table-named-expression"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="table-named-range"> + <element name="table:named-range"> + <ref name="table-named-range-attlist"/> + <empty/> + </element> + </define> + <define name="table-named-range-attlist"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + <optional> + <attribute name="table:base-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> + <optional> + <attribute name="table:range-usable-as"> + <choice> + <value>none</value> + <list> + <oneOrMore> + <choice> + <value>print-range</value> + <value>filter</value> + <value>repeat-row</value> + <value>repeat-column</value> + </choice> + </oneOrMore> + </list> + </choice> + </attribute> + </optional> + </define> + <define name="table-named-expression"> + <element name="table:named-expression"> + <ref name="table-named-expression-attlist"/> + <empty/> + </element> + </define> + <define name="table-named-expression-attlist"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <attribute name="table:expression"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="table:base-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> + </define> + <define name="table-database-ranges"> + <element name="table:database-ranges"> + <zeroOrMore> + <ref name="table-database-range"/> + </zeroOrMore> + </element> + </define> + <define name="table-database-range"> + <element name="table:database-range"> + <ref name="table-database-range-attlist"/> + <optional> + <choice> + <ref name="table-database-source-sql"/> + <ref name="table-database-source-table"/> + <ref name="table-database-source-query"/> + </choice> + </optional> + <optional> + <ref name="table-filter"/> + </optional> + <optional> + <ref name="table-sort"/> + </optional> + <optional> + <ref name="table-subtotal-rules"/> + </optional> + </element> + </define> + <define name="table-database-range-attlist"> + <interleave> + <optional> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:is-selection"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:on-update-keep-styles"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:on-update-keep-size"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:has-persistent-data"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:orientation"> + <choice> + <value>column</value> + <value>row</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:contains-header"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:display-filter-buttons"> + <ref name="boolean"/> + </attribute> + </optional> + <attribute name="table:target-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + <optional> + <attribute name="table:refresh-delay"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-database-source-sql"> + <element name="table:database-source-sql"> + <ref name="table-database-source-sql-attlist"/> + <empty/> + </element> + </define> + <define name="table-database-source-sql-attlist"> + <interleave> + <attribute name="table:database-name"> + <ref name="string"/> + </attribute> + <attribute name="table:sql-statement"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="table:parse-sql-statement"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-database-source-query"> + <element name="table:database-source-table"> + <ref name="table-database-source-table-attlist"/> + <empty/> + </element> + </define> + <define name="table-database-source-table-attlist"> + <interleave> + <attribute name="table:database-name"> + <ref name="string"/> + </attribute> + <attribute name="table:database-table-name"> + <ref name="string"/> + </attribute> + </interleave> + </define> + <define name="table-database-source-table"> + <element name="table:database-source-query"> + <ref name="table-database-source-query-attlist"/> + <empty/> + </element> + </define> + <define name="table-database-source-query-attlist"> + <interleave> + <attribute name="table:database-name"> + <ref name="string"/> + </attribute> + <attribute name="table:query-name"> + <ref name="string"/> + </attribute> + </interleave> + </define> + <define name="table-sort"> + <element name="table:sort"> + <ref name="table-sort-attlist"/> + <oneOrMore> + <ref name="table-sort-by"/> + </oneOrMore> + </element> + </define> + <define name="table-sort-attlist"> + <interleave> + <optional> + <attribute name="table:bind-styles-to-content"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:target-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> + <optional> + <attribute name="table:case-sensitive"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:language"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="table:country"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="table:script"> + <ref name="scriptCode"/> + </attribute> + </optional> + <optional> + <attribute name="table:rfc-language-tag"> + <ref name="language"/> + </attribute> + </optional> + <optional> + <attribute name="table:algorithm"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:embedded-number-behavior"> + <choice> + <value>alpha-numeric</value> + <value>integer</value> + <value>double</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="table-sort-by"> + <element name="table:sort-by"> + <ref name="table-sort-by-attlist"/> + <empty/> + </element> + </define> + <define name="table-sort-by-attlist"> + <interleave> + <attribute name="table:field-number"> + <ref name="nonNegativeInteger"/> + </attribute> + <optional> + <attribute name="table:data-type"> + <choice> + <value>text</value> + <value>number</value> + <value>automatic</value> + <ref name="string"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:order"> + <choice> + <value>ascending</value> + <value>descending</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="table-subtotal-rules"> + <element name="table:subtotal-rules"> + <ref name="table-subtotal-rules-attlist"/> + <optional> + <ref name="table-sort-groups"/> + </optional> + <zeroOrMore> + <ref name="table-subtotal-rule"/> + </zeroOrMore> + </element> + </define> + <define name="table-subtotal-rules-attlist"> + <interleave> + <optional> + <attribute name="table:bind-styles-to-content"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:case-sensitive"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:page-breaks-on-group-change"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-sort-groups"> + <element name="table:sort-groups"> + <ref name="table-sort-groups-attlist"/> + <empty/> + </element> + </define> + <define name="table-sort-groups-attlist"> + <interleave> + <optional> + <attribute name="table:data-type"> + <choice> + <value>text</value> + <value>number</value> + <value>automatic</value> + <ref name="string"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:order"> + <choice> + <value>ascending</value> + <value>descending</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="table-subtotal-rule"> + <element name="table:subtotal-rule"> + <ref name="table-subtotal-rule-attlist"/> + <zeroOrMore> + <ref name="table-subtotal-field"/> + </zeroOrMore> + </element> + </define> + <define name="table-subtotal-rule-attlist"> + <attribute name="table:group-by-field-number"> + <ref name="nonNegativeInteger"/> + </attribute> + </define> + <define name="table-subtotal-field"> + <element name="table:subtotal-field"> + <ref name="table-subtotal-field-attlist"/> + <empty/> + </element> + </define> + <define name="table-subtotal-field-attlist"> + <interleave> + <attribute name="table:field-number"> + <ref name="nonNegativeInteger"/> + </attribute> + <attribute name="table:function"> + <choice> + <value>average</value> + <value>count</value> + <value>countnums</value> + <value>max</value> + <value>min</value> + <value>product</value> + <value>stdev</value> + <value>stdevp</value> + <value>sum</value> + <value>var</value> + <value>varp</value> + <ref name="string"/> + </choice> + </attribute> + </interleave> + </define> + <define name="table-filter"> + <element name="table:filter"> + <ref name="table-filter-attlist"/> + <choice> + <ref name="table-filter-condition"/> + <ref name="table-filter-and"/> + <ref name="table-filter-or"/> + </choice> + </element> + </define> + <define name="table-filter-attlist"> + <interleave> + <optional> + <attribute name="table:target-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> + <optional> + <attribute name="table:condition-source"> + <choice> + <value>self</value> + <value>cell-range</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:condition-source-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </optional> + <optional> + <attribute name="table:display-duplicates"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-filter-and"> + <element name="table:filter-and"> + <oneOrMore> + <choice> + <ref name="table-filter-or"/> + <ref name="table-filter-condition"/> + </choice> + </oneOrMore> + </element> + </define> + <define name="table-filter-or"> + <element name="table:filter-or"> + <oneOrMore> + <choice> + <ref name="table-filter-and"/> + <ref name="table-filter-condition"/> + </choice> + </oneOrMore> + </element> + </define> + <define name="table-filter-condition"> + <element name="table:filter-condition"> + <ref name="table-filter-condition-attlist"/> + <zeroOrMore> + <ref name="table-filter-set-item"/> + </zeroOrMore> + </element> + </define> + <define name="table-filter-condition-attlist"> + <interleave> + <attribute name="table:field-number"> + <ref name="nonNegativeInteger"/> + </attribute> + <attribute name="table:value"> + <choice> + <ref name="string"/> + <ref name="double"/> + </choice> + </attribute> + <attribute name="table:operator"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="table:case-sensitive"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:data-type"> + <choice> + <value>text</value> + <value>number</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="table-filter-set-item"> + <element name="table:filter-set-item"> + <attribute name="table:value"> + <ref name="string"/> + </attribute> + <empty/> + </element> + </define> + <define name="table-data-pilot-tables"> + <element name="table:data-pilot-tables"> + <zeroOrMore> + <ref name="table-data-pilot-table"/> + </zeroOrMore> + </element> + </define> + <define name="table-data-pilot-table"> + <element name="table:data-pilot-table"> + <ref name="table-data-pilot-table-attlist"/> + <optional> + <choice> + <ref name="table-database-source-sql"/> + <ref name="table-database-source-table"/> + <ref name="table-database-source-query"/> + <ref name="table-source-service"/> + <ref name="table-source-cell-range"/> + </choice> + </optional> + <oneOrMore> + <ref name="table-data-pilot-field"/> + </oneOrMore> + </element> + </define> + <define name="table-data-pilot-table-attlist"> + <interleave> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="table:application-data"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:grand-total"> + <choice> + <value>none</value> + <value>row</value> + <value>column</value> + <value>both</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:ignore-empty-rows"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:identify-categories"> + <ref name="boolean"/> + </attribute> + </optional> + <attribute name="table:target-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + <optional> + <attribute name="table:buttons"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + <optional> + <attribute name="table:show-filter-button"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:drill-down-on-double-click"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-source-cell-range"> + <element name="table:source-cell-range"> + <ref name="table-source-cell-range-attlist"/> + <optional> + <ref name="table-filter"/> + </optional> + </element> + </define> + <define name="table-source-cell-range-attlist"> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddress"/> + </attribute> + </define> + <define name="table-source-service"> + <element name="table:source-service"> + <ref name="table-source-service-attlist"/> + <empty/> + </element> + </define> + <define name="table-source-service-attlist"> + <interleave> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <attribute name="table:source-name"> + <ref name="string"/> + </attribute> + <attribute name="table:object-name"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="table:user-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:password"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-data-pilot-field"> + <element name="table:data-pilot-field"> + <ref name="table-data-pilot-field-attlist"/> + <optional> + <ref name="table-data-pilot-level"/> + </optional> + <optional> + <ref name="table-data-pilot-field-reference"/> + </optional> + <optional> + <ref name="table-data-pilot-groups"/> + </optional> + </element> + </define> + <define name="table-data-pilot-field-attlist"> + <interleave> + <attribute name="table:source-field-name"> + <ref name="string"/> + </attribute> + <choice> + <attribute name="table:orientation"> + <choice> + <value>row</value> + <value>column</value> + <value>data</value> + <value>hidden</value> + </choice> + </attribute> + <group> + <attribute name="table:orientation"> + <value>page</value> + </attribute> + <attribute name="table:selected-page"> + <ref name="string"/> + </attribute> + </group> + </choice> + <optional> + <attribute name="table:is-data-layout-field"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:function"> + <choice> + <value>auto</value> + <value>average</value> + <value>count</value> + <value>countnums</value> + <value>max</value> + <value>min</value> + <value>product</value> + <value>stdev</value> + <value>stdevp</value> + <value>sum</value> + <value>var</value> + <value>varp</value> + <ref name="string"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:used-hierarchy"> + <ref name="integer"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-data-pilot-level"> + <element name="table:data-pilot-level"> + <ref name="table-data-pilot-level-attlist"/> + <optional> + <ref name="table-data-pilot-subtotals"/> + </optional> + <optional> + <ref name="table-data-pilot-members"/> + </optional> + <optional> + <ref name="table-data-pilot-display-info"/> + </optional> + <optional> + <ref name="table-data-pilot-sort-info"/> + </optional> + <optional> + <ref name="table-data-pilot-layout-info"/> + </optional> + </element> + </define> + <define name="table-data-pilot-level-attlist"> + <optional> + <attribute name="table:show-empty"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="table-data-pilot-subtotals"> + <element name="table:data-pilot-subtotals"> + <zeroOrMore> + <ref name="table-data-pilot-subtotal"/> + </zeroOrMore> + </element> + </define> + <define name="table-data-pilot-subtotal"> + <element name="table:data-pilot-subtotal"> + <ref name="table-data-pilot-subtotal-attlist"/> + <empty/> + </element> + </define> + <define name="table-data-pilot-subtotal-attlist"> + <attribute name="table:function"> + <choice> + <value>auto</value> + <value>average</value> + <value>count</value> + <value>countnums</value> + <value>max</value> + <value>min</value> + <value>product</value> + <value>stdev</value> + <value>stdevp</value> + <value>sum</value> + <value>var</value> + <value>varp</value> + <ref name="string"/> + </choice> + </attribute> + </define> + <define name="table-data-pilot-members"> + <element name="table:data-pilot-members"> + <zeroOrMore> + <ref name="table-data-pilot-member"/> + </zeroOrMore> + </element> + </define> + <define name="table-data-pilot-member"> + <element name="table:data-pilot-member"> + <ref name="table-data-pilot-member-attlist"/> + <empty/> + </element> + </define> + <define name="table-data-pilot-member-attlist"> + <interleave> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="table:display"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:show-details"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-data-pilot-display-info"> + <element name="table:data-pilot-display-info"> + <ref name="table-data-pilot-display-info-attlist"/> + <empty/> + </element> + </define> + <define name="table-data-pilot-display-info-attlist"> + <interleave> + <attribute name="table:enabled"> + <ref name="boolean"/> + </attribute> + <attribute name="table:data-field"> + <ref name="string"/> + </attribute> + <attribute name="table:member-count"> + <ref name="nonNegativeInteger"/> + </attribute> + <attribute name="table:display-member-mode"> + <choice> + <value>from-top</value> + <value>from-bottom</value> + </choice> + </attribute> + </interleave> + </define> + <define name="table-data-pilot-sort-info"> + <element name="table:data-pilot-sort-info"> + <ref name="table-data-pilot-sort-info-attlist"/> + <empty/> + </element> + </define> + <define name="table-data-pilot-sort-info-attlist"> + <interleave> + <choice> + <group> + <attribute name="table:sort-mode"> + <value>data</value> + </attribute> + <attribute name="table:data-field"> + <ref name="string"/> + </attribute> + </group> + <attribute name="table:sort-mode"> + <choice> + <value>none</value> + <value>manual</value> + <value>name</value> + </choice> + </attribute> + </choice> + <attribute name="table:order"> + <choice> + <value>ascending</value> + <value>descending</value> + </choice> + </attribute> + </interleave> + </define> + <define name="table-data-pilot-layout-info"> + <element name="table:data-pilot-layout-info"> + <ref name="table-data-pilot-layout-info-attlist"/> + <empty/> + </element> + </define> + <define name="table-data-pilot-layout-info-attlist"> + <interleave> + <attribute name="table:layout-mode"> + <choice> + <value>tabular-layout</value> + <value>outline-subtotals-top</value> + <value>outline-subtotals-bottom</value> + </choice> + </attribute> + <attribute name="table:add-empty-lines"> + <ref name="boolean"/> + </attribute> + </interleave> + </define> + <define name="table-data-pilot-field-reference"> + <element name="table:data-pilot-field-reference"> + <ref name="table-data-pilot-field-reference-attlist"/> + </element> + </define> + <define name="table-data-pilot-field-reference-attlist"> + <interleave> + <attribute name="table:field-name"> + <ref name="string"/> + </attribute> + <choice> + <group> + <attribute name="table:member-type"> + <value>named</value> + </attribute> + <attribute name="table:member-name"> + <ref name="string"/> + </attribute> + </group> + <attribute name="table:member-type"> + <choice> + <value>previous</value> + <value>next</value> + </choice> + </attribute> + </choice> + <attribute name="table:type"> + <choice> + <value>none</value> + <value>member-difference</value> + <value>member-percentage</value> + <value>member-percentage-difference</value> + <value>running-total</value> + <value>row-percentage</value> + <value>column-percentage</value> + <value>total-percentage</value> + <value>index</value> + </choice> + </attribute> + </interleave> + </define> + <define name="table-data-pilot-groups"> + <element name="table:data-pilot-groups"> + <ref name="table-data-pilot-groups-attlist"/> + <oneOrMore> + <ref name="table-data-pilot-group"/> + </oneOrMore> + </element> + </define> + <define name="table-data-pilot-groups-attlist"> + <interleave> + <attribute name="table:source-field-name"> + <ref name="string"/> + </attribute> + <choice> + <attribute name="table:date-start"> + <choice> + <ref name="dateOrDateTime"/> + <value>auto</value> + </choice> + </attribute> + <attribute name="table:start"> + <choice> + <ref name="double"/> + <value>auto</value> + </choice> + </attribute> + </choice> + <choice> + <attribute name="table:date-end"> + <choice> + <ref name="dateOrDateTime"/> + <value>auto</value> + </choice> + </attribute> + <attribute name="table:end"> + <choice> + <ref name="double"/> + <value>auto</value> + </choice> + </attribute> + </choice> + <attribute name="table:step"> + <ref name="double"/> + </attribute> + <attribute name="table:grouped-by"> + <choice> + <value>seconds</value> + <value>minutes</value> + <value>hours</value> + <value>days</value> + <value>months</value> + <value>quarters</value> + <value>years</value> + </choice> + </attribute> + </interleave> + </define> + <define name="table-data-pilot-group"> + <element name="table:data-pilot-group"> + <ref name="table-data-pilot-group-attlist"/> + <oneOrMore> + <ref name="table-data-pilot-group-member"/> + </oneOrMore> + </element> + </define> + <define name="table-data-pilot-group-attlist"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + </define> + <define name="table-data-pilot-group-member"> + <element name="table:data-pilot-group-member"> + <ref name="table-data-pilot-group-member-attlist"/> + </element> + </define> + <define name="table-data-pilot-group-member-attlist"> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + </define> + <define name="table-consolidation"> + <element name="table:consolidation"> + <ref name="table-consolidation-attlist"/> + <empty/> + </element> + </define> + <define name="table-consolidation-attlist"> + <interleave> + <attribute name="table:function"> + <choice> + <value>average</value> + <value>count</value> + <value>countnums</value> + <value>max</value> + <value>min</value> + <value>product</value> + <value>stdev</value> + <value>stdevp</value> + <value>sum</value> + <value>var</value> + <value>varp</value> + <ref name="string"/> + </choice> + </attribute> + <attribute name="table:source-cell-range-addresses"> + <ref name="cellRangeAddressList"/> + </attribute> + <attribute name="table:target-cell-address"> + <ref name="cellAddress"/> + </attribute> + <optional> + <attribute name="table:use-labels"> + <choice> + <value>none</value> + <value>row</value> + <value>column</value> + <value>both</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:link-to-source-data"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-dde-links"> + <element name="table:dde-links"> + <oneOrMore> + <ref name="table-dde-link"/> + </oneOrMore> + </element> + </define> + <define name="table-tracked-changes"> + <element name="table:tracked-changes"> + <ref name="table-tracked-changes-attlist"/> + <zeroOrMore> + <choice> + <ref name="table-cell-content-change"/> + <ref name="table-insertion"/> + <ref name="table-deletion"/> + <ref name="table-movement"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="table-tracked-changes-attlist"> + <optional> + <attribute name="table:track-changes"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="table-insertion"> + <element name="table:insertion"> + <ref name="table-insertion-attlist"/> + <ref name="common-table-change-attlist"/> + <ref name="office-change-info"/> + <optional> + <ref name="table-dependencies"/> + </optional> + <optional> + <ref name="table-deletions"/> + </optional> + </element> + </define> + <define name="table-insertion-attlist"> + <interleave> + <attribute name="table:type"> + <choice> + <value>row</value> + <value>column</value> + <value>table</value> + </choice> + </attribute> + <attribute name="table:position"> + <ref name="integer"/> + </attribute> + <optional> + <attribute name="table:count"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:table"> + <ref name="integer"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-dependencies"> + <element name="table:dependencies"> + <oneOrMore> + <ref name="table-dependency"/> + </oneOrMore> + </element> + </define> + <define name="table-dependency"> + <element name="table:dependency"> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + <empty/> + </element> + </define> + <define name="table-deletions"> + <element name="table:deletions"> + <oneOrMore> + <choice> + <ref name="table-cell-content-deletion"/> + <ref name="table-change-deletion"/> + </choice> + </oneOrMore> + </element> + </define> + <define name="table-cell-content-deletion"> + <element name="table:cell-content-deletion"> + <optional> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <ref name="table-cell-address"/> + </optional> + <optional> + <ref name="table-change-track-table-cell"/> + </optional> + </element> + </define> + <define name="table-change-deletion"> + <element name="table:change-deletion"> + <optional> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + </optional> + <empty/> + </element> + </define> + <define name="table-deletion"> + <element name="table:deletion"> + <ref name="table-deletion-attlist"/> + <ref name="common-table-change-attlist"/> + <ref name="office-change-info"/> + <optional> + <ref name="table-dependencies"/> + </optional> + <optional> + <ref name="table-deletions"/> + </optional> + <optional> + <ref name="table-cut-offs"/> + </optional> + </element> + </define> + <define name="table-deletion-attlist"> + <interleave> + <attribute name="table:type"> + <choice> + <value>row</value> + <value>column</value> + <value>table</value> + </choice> + </attribute> + <attribute name="table:position"> + <ref name="integer"/> + </attribute> + <optional> + <attribute name="table:table"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="table:multi-deletion-spanned"> + <ref name="integer"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-cut-offs"> + <element name="table:cut-offs"> + <choice> + <oneOrMore> + <ref name="table-movement-cut-off"/> + </oneOrMore> + <group> + <ref name="table-insertion-cut-off"/> + <zeroOrMore> + <ref name="table-movement-cut-off"/> + </zeroOrMore> + </group> + </choice> + </element> + </define> + <define name="table-insertion-cut-off"> + <element name="table:insertion-cut-off"> + <ref name="table-insertion-cut-off-attlist"/> + <empty/> + </element> + </define> + <define name="table-insertion-cut-off-attlist"> + <interleave> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + <attribute name="table:position"> + <ref name="integer"/> + </attribute> + </interleave> + </define> + <define name="table-movement-cut-off"> + <element name="table:movement-cut-off"> + <ref name="table-movement-cut-off-attlist"/> + <empty/> + </element> + </define> + <define name="table-movement-cut-off-attlist"> + <choice> + <attribute name="table:position"> + <ref name="integer"/> + </attribute> + <group> + <attribute name="table:start-position"> + <ref name="integer"/> + </attribute> + <attribute name="table:end-position"> + <ref name="integer"/> + </attribute> + </group> + </choice> + </define> + <define name="table-movement"> + <element name="table:movement"> + <ref name="common-table-change-attlist"/> + <ref name="table-source-range-address"/> + <ref name="table-target-range-address"/> + <ref name="office-change-info"/> + <optional> + <ref name="table-dependencies"/> + </optional> + <optional> + <ref name="table-deletions"/> + </optional> + </element> + </define> + <define name="table-source-range-address"> + <element name="table:source-range-address"> + <ref name="common-table-range-attlist"/> + <empty/> + </element> + </define> + <define name="table-target-range-address"> + <element name="table:target-range-address"> + <ref name="common-table-range-attlist"/> + <empty/> + </element> + </define> + <define name="common-table-range-attlist"> + <choice> + <group> + <ref name="common-table-cell-address-attlist"/> + </group> + <group> + <ref name="common-table-cell-range-address-attlist"/> + </group> + </choice> + </define> + <define name="common-table-cell-address-attlist"> + <attribute name="table:column"> + <ref name="integer"/> + </attribute> + <attribute name="table:row"> + <ref name="integer"/> + </attribute> + <attribute name="table:table"> + <ref name="integer"/> + </attribute> + </define> + <define name="common-table-cell-range-address-attlist"> + <attribute name="table:start-column"> + <ref name="integer"/> + </attribute> + <attribute name="table:start-row"> + <ref name="integer"/> + </attribute> + <attribute name="table:start-table"> + <ref name="integer"/> + </attribute> + <attribute name="table:end-column"> + <ref name="integer"/> + </attribute> + <attribute name="table:end-row"> + <ref name="integer"/> + </attribute> + <attribute name="table:end-table"> + <ref name="integer"/> + </attribute> + </define> + <define name="table-change-track-table-cell"> + <element name="table:change-track-table-cell"> + <ref name="table-change-track-table-cell-attlist"/> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> + </define> + <define name="table-change-track-table-cell-attlist"> + <interleave> + <optional> + <attribute name="table:cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> + <optional> + <attribute name="table:matrix-covered"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:formula"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="table:number-matrix-columns-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="table:number-matrix-rows-spanned"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <ref name="common-value-and-type-attlist"/> + </optional> + </interleave> + </define> + <define name="table-cell-content-change"> + <element name="table:cell-content-change"> + <ref name="common-table-change-attlist"/> + <ref name="table-cell-address"/> + <ref name="office-change-info"/> + <optional> + <ref name="table-dependencies"/> + </optional> + <optional> + <ref name="table-deletions"/> + </optional> + <ref name="table-previous"/> + </element> + </define> + <define name="table-cell-address"> + <element name="table:cell-address"> + <ref name="common-table-cell-address-attlist"/> + <empty/> + </element> + </define> + <define name="table-previous"> + <element name="table:previous"> + <optional> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + </optional> + <ref name="table-change-track-table-cell"/> + </element> + </define> + <define name="common-table-change-attlist"> + <interleave> + <attribute name="table:id"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="table:acceptance-state"> + <choice> + <value>accepted</value> + <value>rejected</value> + <value>pending</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="table:rejecting-change-id"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-handout-master"> + <element name="style:handout-master"> + <ref name="common-presentation-header-footer-attlist"/> + <ref name="style-handout-master-attlist"/> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + </element> + </define> + <define name="style-handout-master-attlist"> + <interleave> + <optional> + <attribute name="presentation:presentation-page-layout-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <attribute name="style:page-layout-name"> + <ref name="styleNameRef"/> + </attribute> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-layer-set"> + <element name="draw:layer-set"> + <zeroOrMore> + <ref name="draw-layer"/> + </zeroOrMore> + </element> + </define> + <define name="draw-layer"> + <element name="draw:layer"> + <ref name="draw-layer-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + </element> + </define> + <define name="draw-layer-attlist"> + <interleave> + <attribute name="draw:name"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="draw:protected"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:display"> + <choice> + <value>always</value> + <value>screen</value> + <value>printer</value> + <value>none</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-page"> + <element name="draw:page"> + <ref name="common-presentation-header-footer-attlist"/> + <ref name="draw-page-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="draw-layer-set"/> + </optional> + <optional> + <ref name="office-forms"/> + </optional> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + <optional> + <choice> + <ref name="presentation-animations"/> + <ref name="animation-element"/> + </choice> + </optional> + <optional> + <ref name="presentation-notes"/> + </optional> + </element> + </define> + <define name="draw-page-attlist"> + <interleave> + <optional> + <attribute name="draw:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <attribute name="draw:master-page-name"> + <ref name="styleNameRef"/> + </attribute> + <optional> + <attribute name="presentation:presentation-page-layout-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <group> + <ref name="xml-id"/> + <optional> + <attribute name="draw:id"> + <ref name="NCName"/> + </attribute> + </optional> + </group> + </optional> + <optional> + <attribute name="draw:nav-order"> + <ref name="IDREFS"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-presentation-header-footer-attlist"> + <interleave> + <optional> + <attribute name="presentation:use-header-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:use-footer-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:use-date-time-name"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="shape"> + <choice> + <ref name="shape-instance"/> + <ref name="draw-a"/> + </choice> + </define> + <define name="shape-instance"> + <choice> + <ref name="draw-rect"/> + <ref name="draw-line"/> + <ref name="draw-polyline"/> + <ref name="draw-polygon"/> + <ref name="draw-regular-polygon"/> + <ref name="draw-path"/> + <ref name="draw-circle"/> + <ref name="draw-ellipse"/> + <ref name="draw-g"/> + <ref name="draw-page-thumbnail"/> + <ref name="draw-frame"/> + <ref name="draw-measure"/> + <ref name="draw-caption"/> + <ref name="draw-connector"/> + <ref name="draw-control"/> + <ref name="dr3d-scene"/> + <ref name="draw-custom-shape"/> + </choice> + </define> + <define name="draw-rect"> + <element name="draw:rect"> + <ref name="draw-rect-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="draw-rect-attlist"> + <choice> + <optional> + <attribute name="draw:corner-radius"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <group> + <optional> + <attribute name="svg:rx"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="svg:ry"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + </group> + </choice> + </define> + <define name="draw-line"> + <element name="draw:line"> + <ref name="draw-line-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="draw-line-attlist"> + <interleave> + <attribute name="svg:x1"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y1"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:x2"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y2"> + <ref name="coordinate"/> + </attribute> + </interleave> + </define> + <define name="draw-polyline"> + <element name="draw:polyline"> + <ref name="common-draw-points-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="common-draw-points-attlist"> + <attribute name="draw:points"> + <ref name="points"/> + </attribute> + </define> + <define name="draw-polygon"> + <element name="draw:polygon"> + <ref name="common-draw-points-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="draw-regular-polygon"> + <element name="draw:regular-polygon"> + <ref name="draw-regular-polygon-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="draw-regular-polygon-attlist"> + <interleave> + <choice> + <attribute name="draw:concave"> + <value>false</value> + </attribute> + <group> + <attribute name="draw:concave"> + <value>true</value> + </attribute> + <ref name="draw-regular-polygon-sharpness-attlist"/> + </group> + </choice> + <attribute name="draw:corners"> + <ref name="positiveInteger"/> + </attribute> + </interleave> + </define> + <define name="draw-regular-polygon-sharpness-attlist"> + <attribute name="draw:sharpness"> + <ref name="percent"/> + </attribute> + </define> + <define name="draw-path"> + <element name="draw:path"> + <ref name="common-draw-path-data-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="common-draw-path-data-attlist"> + <attribute name="svg:d"> + <ref name="pathData"/> + </attribute> + </define> + <define name="draw-circle"> + <element name="draw:circle"> + <choice> + <group> + <ref name="draw-circle-attlist"/> + <ref name="common-draw-circle-ellipse-pos-attlist"/> + </group> + <group> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + </group> + </choice> + <ref name="common-draw-circle-ellipse-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="common-draw-circle-ellipse-pos-attlist"> + <attribute name="svg:cx"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:cy"> + <ref name="coordinate"/> + </attribute> + </define> + <define name="draw-circle-attlist"> + <attribute name="svg:r"> + <ref name="length"/> + </attribute> + </define> + <define name="common-draw-circle-ellipse-attlist"> + <interleave> + <optional> + <attribute name="draw:kind"> + <choice> + <value>full</value> + <value>section</value> + <value>cut</value> + <value>arc</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:start-angle"> + <ref name="angle"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-angle"> + <ref name="angle"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-ellipse"> + <element name="draw:ellipse"> + <choice> + <group> + <ref name="draw-ellipse-attlist"/> + <ref name="common-draw-circle-ellipse-pos-attlist"/> + </group> + <group> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + </group> + </choice> + <ref name="common-draw-circle-ellipse-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="draw-ellipse-attlist"> + <attribute name="svg:rx"> + <ref name="length"/> + </attribute> + <attribute name="svg:ry"> + <ref name="length"/> + </attribute> + </define> + <define name="draw-connector"> + <element name="draw:connector"> + <ref name="draw-connector-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="draw-connector-attlist"> + <interleave> + <optional> + <attribute name="draw:type"> + <choice> + <value>standard</value> + <value>lines</value> + <value>line</value> + <value>curve</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:x1"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y1"> + <ref name="coordinate"/> + </attribute> + </optional> + <optional> + <attribute name="draw:start-shape"> + <ref name="IDREF"/> + </attribute> + </optional> + <optional> + <attribute name="draw:start-glue-point"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="svg:x2"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y2"> + <ref name="coordinate"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-shape"> + <ref name="IDREF"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-glue-point"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="draw:line-skew"> + <list> + <ref name="length"/> + <optional> + <ref name="length"/> + <optional> + <ref name="length"/> + </optional> + </optional> + </list> + </attribute> + </optional> + <optional> + <attribute name="svg:d"> + <ref name="pathData"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-caption"> + <element name="draw:caption"> + <ref name="draw-caption-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="draw-caption-attlist"> + <interleave> + <optional> + <attribute name="draw:caption-point-x"> + <ref name="coordinate"/> + </attribute> + <attribute name="draw:caption-point-y"> + <ref name="coordinate"/> + </attribute> + </optional> + <optional> + <attribute name="draw:corner-radius"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-measure"> + <element name="draw:measure"> + <ref name="draw-measure-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + </element> + </define> + <define name="draw-measure-attlist"> + <interleave> + <attribute name="svg:x1"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y1"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:x2"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y2"> + <ref name="coordinate"/> + </attribute> + </interleave> + </define> + <define name="draw-control"> + <element name="draw:control"> + <ref name="draw-control-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + </element> + </define> + <define name="draw-control-attlist"> + <attribute name="draw:control"> + <ref name="IDREF"/> + </attribute> + </define> + <define name="draw-page-thumbnail"> + <element name="draw:page-thumbnail"> + <ref name="draw-page-thumbnail-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="presentation-shape-attlist"/> + <ref name="common-draw-shape-with-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + </element> + </define> + <define name="draw-page-thumbnail-attlist"> + <optional> + <attribute name="draw:page-number"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </define> + <define name="draw-g"> + <element name="draw:g"> + <ref name="draw-g-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-name-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-text-spreadsheet-shape-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + </element> + </define> + <define name="draw-g-attlist"> + <optional> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + </optional> + </define> + <define name="common-draw-name-attlist"> + <optional> + <attribute name="draw:name"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-draw-caption-id-attlist"> + <optional> + <attribute name="draw:caption-id"> + <ref name="IDREF"/> + </attribute> + </optional> + </define> + <define name="common-draw-position-attlist"> + <optional> + <attribute name="svg:x"> + <ref name="coordinate"/> + </attribute> + </optional> + <optional> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + </optional> + </define> + <define name="common-draw-size-attlist"> + <optional> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + </optional> + </define> + <define name="common-draw-transform-attlist"> + <optional> + <attribute name="draw:transform"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-draw-viewbox-attlist"> + <attribute name="svg:viewBox"> + <list> + <ref name="integer"/> + <ref name="integer"/> + <ref name="integer"/> + <ref name="integer"/> + </list> + </attribute> + </define> + <define name="common-draw-style-name-attlist"> + <choice> + <group> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="draw:class-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> + </group> + <group> + <optional> + <attribute name="presentation:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:class-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> + </group> + </choice> + </define> + <define name="common-draw-text-style-name-attlist"> + <optional> + <attribute name="draw:text-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </define> + <define name="common-draw-layer-name-attlist"> + <optional> + <attribute name="draw:layer"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-draw-id-attlist"> + <optional> + <group> + <ref name="xml-id"/> + <optional> + <attribute name="draw:id"> + <ref name="NCName"/> + </attribute> + </optional> + </group> + </optional> + </define> + <define name="common-draw-z-index-attlist"> + <optional> + <attribute name="draw:z-index"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </define> + <define name="common-text-spreadsheet-shape-attlist"> + <interleave> + <optional> + <attribute name="table:end-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> + <optional> + <attribute name="table:end-x"> + <ref name="coordinate"/> + </attribute> + </optional> + <optional> + <attribute name="table:end-y"> + <ref name="coordinate"/> + </attribute> + </optional> + <optional> + <attribute name="table:table-background"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-text-anchor-attlist"/> + </interleave> + </define> + <define name="common-text-anchor-attlist"> + <interleave> + <optional> + <attribute name="text:anchor-type"> + <choice> + <value>page</value> + <value>frame</value> + <value>paragraph</value> + <value>char</value> + <value>as-char</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="text:anchor-page-number"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-text"> + <zeroOrMore> + <choice> + <ref name="text-p"/> + <ref name="text-list"/> + </choice> + </zeroOrMore> + </define> + <define name="common-draw-shape-with-styles-attlist"> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-draw-transform-attlist"/> + <ref name="common-draw-name-attlist"/> + <ref name="common-text-spreadsheet-shape-attlist"/> + </define> + <define name="common-draw-shape-with-text-and-styles-attlist"> + <ref name="common-draw-shape-with-styles-attlist"/> + <ref name="common-draw-text-style-name-attlist"/> + </define> + <define name="draw-glue-point"> + <element name="draw:glue-point"> + <ref name="draw-glue-point-attlist"/> + <empty/> + </element> + </define> + <define name="draw-glue-point-attlist"> + <interleave> + <attribute name="draw:id"> + <ref name="nonNegativeInteger"/> + </attribute> + <attribute name="svg:x"> + <choice> + <ref name="distance"/> + <ref name="percent"/> + </choice> + </attribute> + <attribute name="svg:y"> + <choice> + <ref name="distance"/> + <ref name="percent"/> + </choice> + </attribute> + <optional> + <attribute name="draw:align"> + <choice> + <value>top-left</value> + <value>top</value> + <value>top-right</value> + <value>left</value> + <value>center</value> + <value>right</value> + <value>bottom-left</value> + <value>bottom-right</value> + </choice> + </attribute> + </optional> + <attribute name="draw:escape-direction"> + <choice> + <value>auto</value> + <value>left</value> + <value>right</value> + <value>up</value> + <value>down</value> + <value>horizontal</value> + <value>vertical</value> + </choice> + </attribute> + </interleave> + </define> + <define name="svg-title"> + <element name="svg:title"> + <text/> + </element> + </define> + <define name="svg-desc"> + <element name="svg:desc"> + <text/> + </element> + </define> + <define name="draw-frame"> + <element name="draw:frame"> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-rel-size-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <ref name="presentation-shape-attlist"/> + <ref name="draw-frame-attlist"/> + <zeroOrMore> + <choice> + <ref name="draw-text-box"/> + <ref name="draw-image"/> + <ref name="draw-object"/> + <ref name="draw-object-ole"/> + <ref name="draw-applet"/> + <ref name="draw-floating-frame"/> + <ref name="draw-plugin"/> + <ref name="table-table"/> + </choice> + </zeroOrMore> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <optional> + <ref name="draw-image-map"/> + </optional> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <choice> + <ref name="draw-contour-polygon"/> + <ref name="draw-contour-path"/> + </choice> + </optional> + </element> + </define> + <define name="common-draw-rel-size-attlist"> + <ref name="common-draw-size-attlist"/> + <optional> + <attribute name="style:rel-width"> + <choice> + <ref name="percent"/> + <value>scale</value> + <value>scale-min</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:rel-height"> + <choice> + <ref name="percent"/> + <value>scale</value> + <value>scale-min</value> + </choice> + </attribute> + </optional> + </define> + <define name="draw-frame-attlist"> + <optional> + <attribute name="draw:copy-of"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="draw-text-box"> + <element name="draw:text-box"> + <ref name="draw-text-box-attlist"/> + <zeroOrMore> + <ref name="text-content"/> + </zeroOrMore> + </element> + </define> + <define name="draw-text-box-attlist"> + <interleave> + <optional> + <attribute name="draw:chain-next-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:corner-radius"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:min-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:min-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:max-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:max-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <group> + <ref name="xml-id"/> + <optional> + <attribute name="text:id"> + <ref name="NCName"/> + </attribute> + </optional> + </group> + </optional> + </interleave> + </define> + <define name="draw-image"> + <element name="draw:image"> + <ref name="draw-image-attlist"/> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-binary-data"/> + </choice> + <ref name="draw-text"/> + </element> + </define> + <define name="common-draw-data-attlist"> + <group> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:show"> + <value>embed</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate"> + <value>onLoad</value> + </attribute> + </optional> + </group> + </define> + <define name="office-binary-data"> + <element name="office:binary-data"> + <ref name="base64Binary"/> + </element> + </define> + <define name="draw-image-attlist"> + <interleave> + <optional> + <attribute name="draw:filter-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="draw-object"> + <element name="draw:object"> + <ref name="draw-object-attlist"/> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-document"/> + <ref name="math-math"/> + </choice> + </element> + </define> + <define name="draw-object-ole"> + <element name="draw:object-ole"> + <ref name="draw-object-ole-attlist"/> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-binary-data"/> + </choice> + </element> + </define> + <define name="draw-object-attlist"> + <interleave> + <optional> + <attribute name="draw:notify-on-update-of-ranges"> + <choice> + <ref name="cellRangeAddressList"/> + <ref name="string"/> + </choice> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="draw-object-ole-attlist"> + <interleave> + <optional> + <attribute name="draw:class-id"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="draw-applet"> + <element name="draw:applet"> + <ref name="draw-applet-attlist"/> + <optional> + <ref name="common-draw-data-attlist"/> + </optional> + <zeroOrMore> + <ref name="draw-param"/> + </zeroOrMore> + </element> + </define> + <define name="draw-applet-attlist"> + <interleave> + <optional> + <attribute name="draw:code"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:object"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:archive"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:may-script"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="draw-plugin"> + <element name="draw:plugin"> + <ref name="draw-plugin-attlist"/> + <ref name="common-draw-data-attlist"/> + <zeroOrMore> + <ref name="draw-param"/> + </zeroOrMore> + </element> + </define> + <define name="draw-plugin-attlist"> + <interleave> + <optional> + <attribute name="draw:mime-type"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="draw-param"> + <element name="draw:param"> + <ref name="draw-param-attlist"/> + <empty/> + </element> + </define> + <define name="draw-param-attlist"> + <interleave> + <optional> + <attribute name="draw:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:value"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-floating-frame"> + <element name="draw:floating-frame"> + <ref name="draw-floating-frame-attlist"/> + <ref name="common-draw-data-attlist"/> + </element> + </define> + <define name="draw-floating-frame-attlist"> + <interleave> + <optional> + <attribute name="draw:frame-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="draw-contour-polygon"> + <element name="draw:contour-polygon"> + <ref name="common-contour-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-points-attlist"/> + <empty/> + </element> + </define> + <define name="draw-contour-path"> + <element name="draw:contour-path"> + <ref name="common-contour-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-path-data-attlist"/> + <empty/> + </element> + </define> + <define name="common-contour-attlist"> + <attribute name="draw:recreate-on-edit"> + <ref name="boolean"/> + </attribute> + </define> + <define name="draw-a"> + <element name="draw:a"> + <ref name="draw-a-attlist"/> + <ref name="shape-instance"/> + </element> + </define> + <define name="draw-a-attlist"> + <interleave> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + <optional> + <attribute name="office:target-frame-name"> + <ref name="targetFrameName"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="office:title"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="office:server-map"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="draw-image-map"> + <element name="draw:image-map"> + <zeroOrMore> + <choice> + <ref name="draw-area-rectangle"/> + <ref name="draw-area-circle"/> + <ref name="draw-area-polygon"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="draw-area-rectangle"> + <element name="draw:area-rectangle"> + <ref name="common-draw-area-attlist"/> + <attribute name="svg:x"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + </element> + </define> + <define name="draw-area-circle"> + <element name="draw:area-circle"> + <ref name="common-draw-area-attlist"/> + <attribute name="svg:cx"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:cy"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:r"> + <ref name="length"/> + </attribute> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + </element> + </define> + <define name="draw-area-polygon"> + <element name="draw:area-polygon"> + <ref name="common-draw-area-attlist"/> + <attribute name="svg:x"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-points-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + </element> + </define> + <define name="common-draw-area-attlist"> + <interleave> + <optional> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="office:target-frame-name"> + <ref name="targetFrameName"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> + </optional> + <optional> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:nohref"> + <value>nohref</value> + </attribute> + </optional> + </interleave> + </define> + <define name="dr3d-scene"> + <element name="dr3d:scene"> + <ref name="dr3d-scene-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-text-spreadsheet-shape-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <zeroOrMore> + <ref name="dr3d-light"/> + </zeroOrMore> + <zeroOrMore> + <ref name="shapes3d"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + </element> + </define> + <define name="shapes3d"> + <choice> + <ref name="dr3d-scene"/> + <ref name="dr3d-extrude"/> + <ref name="dr3d-sphere"/> + <ref name="dr3d-rotate"/> + <ref name="dr3d-cube"/> + </choice> + </define> + <define name="dr3d-scene-attlist"> + <interleave> + <optional> + <attribute name="dr3d:vrp"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:vpn"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:vup"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:projection"> + <choice> + <value>parallel</value> + <value>perspective</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:distance"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:focal-length"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:shadow-slant"> + <ref name="angle"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:shade-mode"> + <choice> + <value>flat</value> + <value>phong</value> + <value>gouraud</value> + <value>draft</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:ambient-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:lighting-mode"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-dr3d-transform-attlist"> + <optional> + <attribute name="dr3d:transform"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="dr3d-light"> + <element name="dr3d:light"> + <ref name="dr3d-light-attlist"/> + <empty/> + </element> + </define> + <define name="dr3d-light-attlist"> + <interleave> + <optional> + <attribute name="dr3d:diffuse-color"> + <ref name="color"/> + </attribute> + </optional> + <attribute name="dr3d:direction"> + <ref name="vector3D"/> + </attribute> + <optional> + <attribute name="dr3d:enabled"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:specular"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="dr3d-cube"> + <element name="dr3d:cube"> + <ref name="dr3d-cube-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <empty/> + </element> + </define> + <define name="dr3d-cube-attlist"> + <optional> + <attribute name="dr3d:min-edge"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:max-edge"> + <ref name="vector3D"/> + </attribute> + </optional> + </define> + <define name="dr3d-sphere"> + <element name="dr3d:sphere"> + <ref name="dr3d-sphere-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <empty/> + </element> + </define> + <define name="dr3d-sphere-attlist"> + <interleave> + <optional> + <attribute name="dr3d:center"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:size"> + <ref name="vector3D"/> + </attribute> + </optional> + </interleave> + </define> + <define name="dr3d-extrude"> + <element name="dr3d:extrude"> + <ref name="common-draw-path-data-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <empty/> + </element> + </define> + <define name="dr3d-rotate"> + <element name="dr3d:rotate"> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-path-data-attlist"/> + <ref name="common-draw-z-index-attlist"/> + <ref name="common-draw-id-attlist"/> + <ref name="common-draw-layer-name-attlist"/> + <ref name="common-draw-style-name-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <empty/> + </element> + </define> + <define name="draw-custom-shape"> + <element name="draw:custom-shape"> + <ref name="draw-custom-shape-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <ref name="common-draw-caption-id-attlist"/> + <optional> + <ref name="svg-title"/> + </optional> + <optional> + <ref name="svg-desc"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <ref name="draw-glue-point"/> + </zeroOrMore> + <ref name="draw-text"/> + <optional> + <ref name="draw-enhanced-geometry"/> + </optional> + </element> + </define> + <define name="draw-custom-shape-attlist"> + <interleave> + <optional> + <attribute name="draw:engine"> + <ref name="namespacedToken"/> + </attribute> + </optional> + <optional> + <attribute name="draw:data"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-enhanced-geometry"> + <element name="draw:enhanced-geometry"> + <ref name="draw-enhanced-geometry-attlist"/> + <zeroOrMore> + <ref name="draw-equation"/> + </zeroOrMore> + <zeroOrMore> + <ref name="draw-handle"/> + </zeroOrMore> + </element> + </define> + <define name="draw-enhanced-geometry-attlist"> + <interleave> + <optional> + <attribute name="draw:type"> + <ref name="custom-shape-type"/> + </attribute> + </optional> + <optional> + <attribute name="svg:viewBox"> + <list> + <ref name="integer"/> + <ref name="integer"/> + <ref name="integer"/> + <ref name="integer"/> + </list> + </attribute> + </optional> + <optional> + <attribute name="draw:mirror-vertical"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:mirror-horizontal"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:text-rotate-angle"> + <ref name="angle"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-allowed"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:text-path-allowed"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:concentric-gradient-fill-allowed"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-brightness"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-depth"> + <list> + <ref name="length"/> + <ref name="double"/> + </list> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-diffusion"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-number-of-line-segments"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-light-face"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-first-light-harsh"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-second-light-harsh"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-first-light-level"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-second-light-level"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-first-light-direction"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-second-light-direction"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-metal"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:shade-mode"> + <choice> + <value>flat</value> + <value>phong</value> + <value>gouraud</value> + <value>draft</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-rotation-angle"> + <list> + <ref name="angle"/> + <ref name="angle"/> + </list> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-rotation-center"> + <ref name="vector3D"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-shininess"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-skew"> + <list> + <ref name="double"/> + <ref name="angle"/> + </list> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-specularity"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:projection"> + <choice> + <value>parallel</value> + <value>perspective</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-viewpoint"> + <ref name="point3D"/> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-origin"> + <list> + <ref name="extrusionOrigin"/> + <ref name="extrusionOrigin"/> + </list> + </attribute> + </optional> + <optional> + <attribute name="draw:extrusion-color"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:enhanced-path"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:path-stretchpoint-x"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="draw:path-stretchpoint-y"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="draw:text-areas"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:glue-points"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:glue-point-type"> + <choice> + <value>none</value> + <value>segments</value> + <value>rectangle</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:glue-point-leaving-directions"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:text-path"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:text-path-mode"> + <choice> + <value>normal</value> + <value>path</value> + <value>shape</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:text-path-scale"> + <choice> + <value>path</value> + <value>shape</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:text-path-same-letter-heights"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:modifiers"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="custom-shape-type"> + <choice> + <value>non-primitive</value> + <ref name="string"/> + </choice> + </define> + <define name="point3D"> + <data type="string"> + <param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\)</param> + </data> + </define> + <define name="extrusionOrigin"> + <data type="double"> + <param name="minInclusive">-0.5</param> + <param name="maxInclusive">0.5</param> + </data> + </define> + <define name="draw-equation"> + <element name="draw:equation"> + <ref name="draw-equation-attlist"/> + <empty/> + </element> + </define> + <define name="draw-equation-attlist"> + <interleave> + <optional> + <attribute name="draw:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:formula"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-handle"> + <element name="draw:handle"> + <ref name="draw-handle-attlist"/> + <empty/> + </element> + </define> + <define name="draw-handle-attlist"> + <interleave> + <optional> + <attribute name="draw:handle-mirror-vertical"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:handle-mirror-horizontal"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:handle-switched"> + <ref name="boolean"/> + </attribute> + </optional> + <attribute name="draw:handle-position"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="draw:handle-range-x-minimum"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:handle-range-x-maximum"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:handle-range-y-minimum"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:handle-range-y-maximum"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:handle-polar"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:handle-radius-range-minimum"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:handle-radius-range-maximum"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="presentation-shape-attlist"> + <interleave> + <optional> + <attribute name="presentation:class"> + <ref name="presentation-classes"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:placeholder"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:user-transformed"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="presentation-classes"> + <choice> + <value>title</value> + <value>outline</value> + <value>subtitle</value> + <value>text</value> + <value>graphic</value> + <value>object</value> + <value>chart</value> + <value>table</value> + <value>orgchart</value> + <value>page</value> + <value>notes</value> + <value>handout</value> + <value>header</value> + <value>footer</value> + <value>date-time</value> + <value>page-number</value> + </choice> + </define> + <define name="presentation-animations"> + <element name="presentation:animations"> + <zeroOrMore> + <choice> + <ref name="presentation-animation-elements"/> + <ref name="presentation-animation-group"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="presentation-animation-elements"> + <choice> + <ref name="presentation-show-shape"/> + <ref name="presentation-show-text"/> + <ref name="presentation-hide-shape"/> + <ref name="presentation-hide-text"/> + <ref name="presentation-dim"/> + <ref name="presentation-play"/> + </choice> + </define> + <define name="presentation-sound"> + <element name="presentation:sound"> + <ref name="presentation-sound-attlist"/> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:show"> + <choice> + <value>new</value> + <value>replace</value> + </choice> + </attribute> + </optional> + <empty/> + </element> + </define> + <define name="presentation-sound-attlist"> + <interleave> + <optional> + <attribute name="presentation:play-full"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="presentation-show-shape"> + <element name="presentation:show-shape"> + <ref name="common-presentation-effect-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> + </define> + <define name="common-presentation-effect-attlist"> + <interleave> + <attribute name="draw:shape-id"> + <ref name="IDREF"/> + </attribute> + <optional> + <attribute name="presentation:effect"> + <ref name="presentationEffects"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:direction"> + <ref name="presentationEffectDirections"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:speed"> + <ref name="presentationSpeeds"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:delay"> + <ref name="duration"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:start-scale"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:path-id"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="presentationEffects"> + <choice> + <value>none</value> + <value>fade</value> + <value>move</value> + <value>stripes</value> + <value>open</value> + <value>close</value> + <value>dissolve</value> + <value>wavyline</value> + <value>random</value> + <value>lines</value> + <value>laser</value> + <value>appear</value> + <value>hide</value> + <value>move-short</value> + <value>checkerboard</value> + <value>rotate</value> + <value>stretch</value> + </choice> + </define> + <define name="presentationEffectDirections"> + <choice> + <value>none</value> + <value>from-left</value> + <value>from-top</value> + <value>from-right</value> + <value>from-bottom</value> + <value>from-center</value> + <value>from-upper-left</value> + <value>from-upper-right</value> + <value>from-lower-left</value> + <value>from-lower-right</value> + <value>to-left</value> + <value>to-top</value> + <value>to-right</value> + <value>to-bottom</value> + <value>to-upper-left</value> + <value>to-upper-right</value> + <value>to-lower-right</value> + <value>to-lower-left</value> + <value>path</value> + <value>spiral-inward-left</value> + <value>spiral-inward-right</value> + <value>spiral-outward-left</value> + <value>spiral-outward-right</value> + <value>vertical</value> + <value>horizontal</value> + <value>to-center</value> + <value>clockwise</value> + <value>counter-clockwise</value> + </choice> + </define> + <define name="presentationSpeeds"> + <choice> + <value>slow</value> + <value>medium</value> + <value>fast</value> + </choice> + </define> + <define name="presentation-show-text"> + <element name="presentation:show-text"> + <ref name="common-presentation-effect-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> + </define> + <define name="presentation-hide-shape"> + <element name="presentation:hide-shape"> + <ref name="common-presentation-effect-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> + </define> + <define name="presentation-hide-text"> + <element name="presentation:hide-text"> + <ref name="common-presentation-effect-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> + </define> + <define name="presentation-dim"> + <element name="presentation:dim"> + <ref name="presentation-dim-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> + </define> + <define name="presentation-dim-attlist"> + <interleave> + <attribute name="draw:shape-id"> + <ref name="IDREF"/> + </attribute> + <attribute name="draw:color"> + <ref name="color"/> + </attribute> + </interleave> + </define> + <define name="presentation-play"> + <element name="presentation:play"> + <ref name="presentation-play-attlist"/> + <empty/> + </element> + </define> + <define name="presentation-play-attlist"> + <attribute name="draw:shape-id"> + <ref name="IDREF"/> + </attribute> + <optional> + <attribute name="presentation:speed"> + <ref name="presentationSpeeds"/> + </attribute> + </optional> + </define> + <define name="presentation-animation-group"> + <element name="presentation:animation-group"> + <zeroOrMore> + <ref name="presentation-animation-elements"/> + </zeroOrMore> + </element> + </define> + <define name="common-anim-attlist"> + <interleave> + <optional> + <attribute name="presentation:node-type"> + <choice> + <value>default</value> + <value>on-click</value> + <value>with-previous</value> + <value>after-previous</value> + <value>timing-root</value> + <value>main-sequence</value> + <value>interactive-sequence</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="presentation:preset-id"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:preset-sub-type"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:preset-class"> + <choice> + <value>custom</value> + <value>entrance</value> + <value>exit</value> + <value>emphasis</value> + <value>motion-path</value> + <value>ole-action</value> + <value>media-call</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="presentation:master-element"> + <ref name="IDREF"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:group-id"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <group> + <ref name="xml-id"/> + <optional> + <attribute name="anim:id"> + <ref name="NCName"/> + </attribute> + </optional> + </group> + </optional> + </interleave> + </define> + <define name="presentation-event-listener"> + <element name="presentation:event-listener"> + <ref name="presentation-event-listener-attlist"/> + <optional> + <ref name="presentation-sound"/> + </optional> + </element> + </define> + <define name="presentation-event-listener-attlist"> + <interleave> + <attribute name="script:event-name"> + <ref name="string"/> + </attribute> + <attribute name="presentation:action"> + <choice> + <value>none</value> + <value>previous-page</value> + <value>next-page</value> + <value>first-page</value> + <value>last-page</value> + <value>hide</value> + <value>stop</value> + <value>execute</value> + <value>show</value> + <value>verb</value> + <value>fade-out</value> + <value>sound</value> + <value>last-visited-page</value> + </choice> + </attribute> + <optional> + <attribute name="presentation:effect"> + <ref name="presentationEffects"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:direction"> + <ref name="presentationEffectDirections"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:speed"> + <ref name="presentationSpeeds"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:start-scale"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:show"> + <value>embed</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + </optional> + <optional> + <attribute name="presentation:verb"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="presentation-decls"> + <zeroOrMore> + <ref name="presentation-decl"/> + </zeroOrMore> + </define> + <define name="presentation-decl"> + <choice> + <element name="presentation:header-decl"> + <ref name="presentation-header-decl-attlist"/> + <text/> + </element> + <element name="presentation:footer-decl"> + <ref name="presentation-footer-decl-attlist"/> + <text/> + </element> + <element name="presentation:date-time-decl"> + <ref name="presentation-date-time-decl-attlist"/> + <text/> + </element> + </choice> + </define> + <define name="presentation-header-decl-attlist"> + <attribute name="presentation:name"> + <ref name="string"/> + </attribute> + </define> + <define name="presentation-footer-decl-attlist"> + <attribute name="presentation:name"> + <ref name="string"/> + </attribute> + </define> + <define name="presentation-date-time-decl-attlist"> + <interleave> + <attribute name="presentation:name"> + <ref name="string"/> + </attribute> + <attribute name="presentation:source"> + <choice> + <value>fixed</value> + <value>current-date</value> + </choice> + </attribute> + <optional> + <attribute name="style:data-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="presentation-settings"> + <optional> + <element name="presentation:settings"> + <ref name="presentation-settings-attlist"/> + <zeroOrMore> + <ref name="presentation-show"/> + </zeroOrMore> + </element> + </optional> + </define> + <define name="presentation-settings-attlist"> + <interleave> + <optional> + <attribute name="presentation:start-page"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:show"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:full-screen"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:endless"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:pause"> + <ref name="duration"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:show-logo"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:force-manual"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:mouse-visible"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:mouse-as-pen"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:start-with-navigator"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:animations"> + <choice> + <value>enabled</value> + <value>disabled</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="presentation:transition-on-click"> + <choice> + <value>enabled</value> + <value>disabled</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="presentation:stay-on-top"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:show-end-of-presentation-slide"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="presentation-show"> + <element name="presentation:show"> + <ref name="presentation-show-attlist"/> + <empty/> + </element> + </define> + <define name="presentation-show-attlist"> + <interleave> + <attribute name="presentation:name"> + <ref name="string"/> + </attribute> + <attribute name="presentation:pages"> + <ref name="string"/> + </attribute> + </interleave> + </define> + <define name="chart-chart"> + <element name="chart:chart"> + <ref name="chart-chart-attlist"/> + <optional> + <ref name="chart-title"/> + </optional> + <optional> + <ref name="chart-subtitle"/> + </optional> + <optional> + <ref name="chart-footer"/> + </optional> + <optional> + <ref name="chart-legend"/> + </optional> + <ref name="chart-plot-area"/> + <optional> + <ref name="table-table"/> + </optional> + </element> + </define> + <define name="chart-chart-attlist"> + <interleave> + <attribute name="chart:class"> + <ref name="namespacedToken"/> + </attribute> + <ref name="common-draw-size-attlist"/> + <optional> + <attribute name="chart:column-mapping"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="chart:row-mapping"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <group> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + </group> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="chart-title"> + <element name="chart:title"> + <ref name="chart-title-attlist"/> + <optional> + <ref name="text-p"/> + </optional> + </element> + </define> + <define name="chart-title-attlist"> + <interleave> + <optional> + <attribute name="table:cell-range"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + <ref name="common-draw-position-attlist"/> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="chart-subtitle"> + <element name="chart:subtitle"> + <ref name="chart-title-attlist"/> + <optional> + <ref name="text-p"/> + </optional> + </element> + </define> + <define name="chart-footer"> + <element name="chart:footer"> + <ref name="chart-title-attlist"/> + <optional> + <ref name="text-p"/> + </optional> + </element> + </define> + <define name="chart-legend"> + <element name="chart:legend"> + <ref name="chart-legend-attlist"/> + <optional> + <ref name="text-p"/> + </optional> + </element> + </define> + <define name="chart-legend-attlist"> + <interleave> + <choice> + <group> + <attribute name="chart:legend-position"> + <choice> + <value>start</value> + <value>end</value> + <value>top</value> + <value>bottom</value> + </choice> + </attribute> + <optional> + <attribute name="chart:legend-align"> + <choice> + <value>start</value> + <value>center</value> + <value>end</value> + </choice> + </attribute> + </optional> + </group> + <attribute name="chart:legend-position"> + <choice> + <value>top-start</value> + <value>bottom-start</value> + <value>top-end</value> + <value>bottom-end</value> + </choice> + </attribute> + <empty/> + </choice> + <ref name="common-draw-position-attlist"/> + <choice> + <attribute name="style:legend-expansion"> + <choice> + <value>wide</value> + <value>high</value> + <value>balanced</value> + </choice> + </attribute> + <group> + <attribute name="style:legend-expansion"> + <value>custom</value> + </attribute> + <attribute name="style:legend-expansion-aspect-ratio"> + <ref name="double"/> + </attribute> + </group> + <empty/> + </choice> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="chart-plot-area"> + <element name="chart:plot-area"> + <ref name="chart-plot-area-attlist"/> + <zeroOrMore> + <ref name="dr3d-light"/> + </zeroOrMore> + <zeroOrMore> + <ref name="chart-axis"/> + </zeroOrMore> + <zeroOrMore> + <ref name="chart-series"/> + </zeroOrMore> + <optional> + <ref name="chart-stock-gain-marker"/> + </optional> + <optional> + <ref name="chart-stock-loss-marker"/> + </optional> + <optional> + <ref name="chart-stock-range-line"/> + </optional> + <optional> + <ref name="chart-wall"/> + </optional> + <optional> + <ref name="chart-floor"/> + </optional> + </element> + </define> + <define name="chart-plot-area-attlist"> + <interleave> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + <optional> + <attribute name="chart:data-source-has-labels"> + <choice> + <value>none</value> + <value>row</value> + <value>column</value> + <value>both</value> + </choice> + </attribute> + </optional> + <ref name="dr3d-scene-attlist"/> + <ref name="common-dr3d-transform-attlist"/> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="chart-wall"> + <element name="chart:wall"> + <ref name="chart-wall-attlist"/> + <empty/> + </element> + </define> + <define name="chart-wall-attlist"> + <interleave> + <optional> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="chart-floor"> + <element name="chart:floor"> + <ref name="chart-floor-attlist"/> + <empty/> + </element> + </define> + <define name="chart-floor-attlist"> + <interleave> + <optional> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="chart-axis"> + <element name="chart:axis"> + <ref name="chart-axis-attlist"/> + <optional> + <ref name="chart-title"/> + </optional> + <optional> + <ref name="chart-categories"/> + </optional> + <zeroOrMore> + <ref name="chart-grid"/> + </zeroOrMore> + </element> + </define> + <define name="chart-axis-attlist"> + <interleave> + <attribute name="chart:dimension"> + <ref name="chart-dimension"/> + </attribute> + <optional> + <attribute name="chart:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="chart-dimension"> + <choice> + <value>x</value> + <value>y</value> + <value>z</value> + </choice> + </define> + <define name="chart-categories"> + <element name="chart:categories"> + <optional> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + </element> + </define> + <define name="chart-grid"> + <element name="chart:grid"> + <ref name="chart-grid-attlist"/> + </element> + </define> + <define name="chart-grid-attlist"> + <interleave> + <optional> + <attribute name="chart:class"> + <choice> + <value>major</value> + <value>minor</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="chart-series"> + <element name="chart:series"> + <ref name="chart-series-attlist"/> + <zeroOrMore> + <ref name="chart-domain"/> + </zeroOrMore> + <optional> + <ref name="chart-mean-value"/> + </optional> + <zeroOrMore> + <ref name="chart-regression-curve"/> + </zeroOrMore> + <zeroOrMore> + <ref name="chart-error-indicator"/> + </zeroOrMore> + <zeroOrMore> + <ref name="chart-data-point"/> + </zeroOrMore> + <optional> + <ref name="chart-data-label"/> + </optional> + </element> + </define> + <define name="chart-series-attlist"> + <interleave> + <optional> + <attribute name="chart:values-cell-range-address"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + <optional> + <attribute name="chart:label-cell-address"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + <optional> + <attribute name="chart:class"> + <ref name="namespacedToken"/> + </attribute> + </optional> + <optional> + <attribute name="chart:attached-axis"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="chart-domain"> + <element name="chart:domain"> + <optional> + <attribute name="table:cell-range-address"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + </element> + </define> + <define name="chart-data-point"> + <element name="chart:data-point"> + <ref name="chart-data-point-attlist"/> + <optional> + <ref name="chart-data-label"/> + </optional> + </element> + </define> + <define name="chart-data-point-attlist"> + <interleave> + <optional> + <attribute name="chart:repeated"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <ref name="xml-id"/> + </optional> + </interleave> + </define> + <define name="chart-data-label"> + <element name="chart:data-label"> + <ref name="chart-data-label-attlist"/> + <optional> + <ref name="text-p"/> + </optional> + </element> + </define> + <define name="chart-data-label-attlist"> + <interleave> + <ref name="common-draw-position-attlist"/> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="chart-mean-value"> + <element name="chart:mean-value"> + <ref name="chart-mean-value-attlist"/> + <empty/> + </element> + </define> + <define name="chart-mean-value-attlist"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </define> + <define name="chart-error-indicator"> + <element name="chart:error-indicator"> + <ref name="chart-error-indicator-attlist"/> + <empty/> + </element> + </define> + <define name="chart-error-indicator-attlist"> + <interleave> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <attribute name="chart:dimension"> + <ref name="chart-dimension"/> + </attribute> + </interleave> + </define> + <define name="chart-regression-curve"> + <element name="chart:regression-curve"> + <ref name="chart-regression-curve-attlist"/> + <optional> + <ref name="chart-equation"/> + </optional> + </element> + </define> + <define name="chart-regression-curve-attlist"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </define> + <define name="chart-equation"> + <element name="chart:equation"> + <ref name="chart-equation-attlist"/> + <optional> + <ref name="text-p"/> + </optional> + </element> + </define> + <define name="chart-equation-attlist"> + <interleave> + <optional> + <attribute name="chart:automatic-content"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:display-r-square"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:display-equation"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-draw-position-attlist"/> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="chart-stock-gain-marker"> + <element name="chart:stock-gain-marker"> + <ref name="common-stock-marker-attlist"/> + </element> + </define> + <define name="chart-stock-loss-marker"> + <element name="chart:stock-loss-marker"> + <ref name="common-stock-marker-attlist"/> + </element> + </define> + <define name="chart-stock-range-line"> + <element name="chart:stock-range-line"> + <ref name="common-stock-marker-attlist"/> + </element> + </define> + <define name="common-stock-marker-attlist"> + <optional> + <attribute name="chart:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </define> + <define name="office-database"> + <element name="office:database"> + <ref name="db-data-source"/> + <optional> + <ref name="db-forms"/> + </optional> + <optional> + <ref name="db-reports"/> + </optional> + <optional> + <ref name="db-queries"/> + </optional> + <optional> + <ref name="db-table-presentations"/> + </optional> + <optional> + <ref name="db-schema-definition"/> + </optional> + </element> + </define> + <define name="db-data-source"> + <element name="db:data-source"> + <ref name="db-data-source-attlist"/> + <ref name="db-connection-data"/> + <optional> + <ref name="db-driver-settings"/> + </optional> + <optional> + <ref name="db-application-connection-settings"/> + </optional> + </element> + </define> + <define name="db-data-source-attlist"> + <empty/> + </define> + <define name="db-connection-data"> + <element name="db:connection-data"> + <ref name="db-connection-data-attlist"/> + <choice> + <ref name="db-database-description"/> + <ref name="db-connection-resource"/> + </choice> + <optional> + <ref name="db-login"/> + </optional> + </element> + </define> + <define name="db-connection-data-attlist"> + <empty/> + </define> + <define name="db-database-description"> + <element name="db:database-description"> + <ref name="db-database-description-attlist"/> + <choice> + <ref name="db-file-based-database"/> + <ref name="db-server-database"/> + </choice> + </element> + </define> + <define name="db-database-description-attlist"> + <empty/> + </define> + <define name="db-file-based-database"> + <element name="db:file-based-database"> + <ref name="db-file-based-database-attlist"/> + </element> + </define> + <define name="db-file-based-database-attlist"> + <interleave> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <attribute name="db:media-type"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="db:extension"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-server-database"> + <element name="db:server-database"> + <ref name="db-server-database-attlist"/> + <empty/> + </element> + </define> + <define name="db-server-database-attlist"> + <interleave> + <attribute name="db:type"> + <ref name="namespacedToken"/> + </attribute> + <choice> + <ref name="db-host-and-port"/> + <ref name="db-local-socket-name"/> + </choice> + <optional> + <attribute name="db:database-name"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-host-and-port"> + <attribute name="db:hostname"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="db:port"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </define> + <define name="db-local-socket-name"> + <optional> + <attribute name="db:local-socket"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="db-connection-resource"> + <element name="db:connection-resource"> + <ref name="db-connection-resource-attlist"/> + <empty/> + </element> + </define> + <define name="db-connection-resource-attlist"> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:show"> + <value>none</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + </define> + <define name="db-login"> + <element name="db:login"> + <ref name="db-login-attlist"/> + <empty/> + </element> + </define> + <define name="db-login-attlist"> + <interleave> + <optional> + <choice> + <attribute name="db:user-name"> + <ref name="string"/> + </attribute> + <attribute name="db:use-system-user"> + <ref name="boolean"/> + </attribute> + </choice> + </optional> + <optional> + <attribute name="db:is-password-required"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="db:login-timeout"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-driver-settings"> + <element name="db:driver-settings"> + <ref name="db-driver-settings-attlist"/> + <optional> + <ref name="db-auto-increment"/> + </optional> + <optional> + <ref name="db-delimiter"/> + </optional> + <optional> + <ref name="db-character-set"/> + </optional> + <optional> + <ref name="db-table-settings"/> + </optional> + </element> + </define> + <define name="db-driver-settings-attlist"> + <interleave> + <ref name="db-show-deleted"/> + <optional> + <attribute name="db:system-driver-settings"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="db:base-dn"> + <ref name="string"/> + </attribute> + </optional> + <ref name="db-is-first-row-header-line"/> + <optional> + <attribute name="db:parameter-name-substitution"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-show-deleted"> + <optional> + <attribute name="db:show-deleted"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="db-is-first-row-header-line"> + <optional> + <attribute name="db:is-first-row-header-line"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="db-auto-increment"> + <element name="db:auto-increment"> + <ref name="db-auto-increment-attlist"/> + <empty/> + </element> + </define> + <define name="db-auto-increment-attlist"> + <interleave> + <optional> + <attribute name="db:additional-column-statement"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="db:row-retrieving-statement"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-delimiter"> + <element name="db:delimiter"> + <ref name="db-delimiter-attlist"/> + <empty/> + </element> + </define> + <define name="db-delimiter-attlist"> + <interleave> + <optional> + <attribute name="db:field"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="db:string"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="db:decimal"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="db:thousand"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-character-set"> + <element name="db:character-set"> + <ref name="db-character-set-attlist"/> + <empty/> + </element> + </define> + <define name="db-character-set-attlist"> + <optional> + <attribute name="db:encoding"> + <ref name="textEncoding"/> + </attribute> + </optional> + </define> + <define name="db-table-settings"> + <element name="db:table-settings"> + <zeroOrMore> + <ref name="db-table-setting"/> + </zeroOrMore> + </element> + </define> + <define name="db-table-setting"> + <element name="db:table-setting"> + <ref name="db-table-setting-attlist"/> + <optional> + <ref name="db-delimiter"/> + </optional> + <optional> + <ref name="db-character-set"/> + </optional> + <empty/> + </element> + </define> + <define name="db-table-setting-attlist"> + <ref name="db-is-first-row-header-line"/> + <ref name="db-show-deleted"/> + </define> + <define name="db-application-connection-settings"> + <element name="db:application-connection-settings"> + <ref name="db-application-connection-settings-attlist"/> + <optional> + <ref name="db-table-filter"/> + </optional> + <optional> + <ref name="db-table-type-filter"/> + </optional> + <optional> + <ref name="db-data-source-settings"/> + </optional> + </element> + </define> + <define name="db-application-connection-settings-attlist"> + <interleave> + <optional> + <attribute name="db:is-table-name-length-limited"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="db:enable-sql92-check"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="db:append-table-alias-name"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="db:ignore-driver-privileges"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="db:boolean-comparison-mode"> + <choice> + <value>equal-integer</value> + <value>is-boolean</value> + <value>equal-boolean</value> + <value>equal-use-only-zero</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="db:use-catalog"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="db:max-row-count"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="db:suppress-version-columns"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-table-filter"> + <element name="db:table-filter"> + <ref name="db-table-filter-attlist"/> + <optional> + <ref name="db-table-include-filter"/> + </optional> + <optional> + <ref name="db-table-exclude-filter"/> + </optional> + </element> + </define> + <define name="db-table-filter-attlist"> + <empty/> + </define> + <define name="db-table-include-filter"> + <element name="db:table-include-filter"> + <ref name="db-table-include-filter-attlist"/> + <oneOrMore> + <ref name="db-table-filter-pattern"/> + </oneOrMore> + </element> + </define> + <define name="db-table-include-filter-attlist"> + <empty/> + </define> + <define name="db-table-exclude-filter"> + <element name="db:table-exclude-filter"> + <ref name="db-table-exclude-filter-attlist"/> + <oneOrMore> + <ref name="db-table-filter-pattern"/> + </oneOrMore> + </element> + </define> + <define name="db-table-exclude-filter-attlist"> + <empty/> + </define> + <define name="db-table-filter-pattern"> + <element name="db:table-filter-pattern"> + <ref name="db-table-filter-pattern-attlist"/> + <ref name="string"/> + </element> + </define> + <define name="db-table-filter-pattern-attlist"> + <empty/> + </define> + <define name="db-table-type-filter"> + <element name="db:table-type-filter"> + <ref name="db-table-type-filter-attlist"/> + <zeroOrMore> + <ref name="db-table-type"/> + </zeroOrMore> + </element> + </define> + <define name="db-table-type-filter-attlist"> + <empty/> + </define> + <define name="db-table-type"> + <element name="db:table-type"> + <ref name="db-table-type-attlist"/> + <ref name="string"/> + </element> + </define> + <define name="db-table-type-attlist"> + <empty/> + </define> + <define name="db-data-source-settings"> + <element name="db:data-source-settings"> + <ref name="db-data-source-settings-attlist"/> + <oneOrMore> + <ref name="db-data-source-setting"/> + </oneOrMore> + </element> + </define> + <define name="db-data-source-settings-attlist"> + <empty/> + </define> + <define name="db-data-source-setting"> + <element name="db:data-source-setting"> + <ref name="db-data-source-setting-attlist"/> + <oneOrMore> + <ref name="db-data-source-setting-value"/> + </oneOrMore> + </element> + </define> + <define name="db-data-source-setting-attlist"> + <interleave> + <optional> + <attribute name="db:data-source-setting-is-list"> + <ref name="boolean"/> + </attribute> + </optional> + <attribute name="db:data-source-setting-name"> + <ref name="string"/> + </attribute> + <attribute name="db:data-source-setting-type"> + <ref name="db-data-source-setting-types"/> + </attribute> + </interleave> + </define> + <define name="db-data-source-setting-types"> + <choice> + <value>boolean</value> + <value>short</value> + <value>int</value> + <value>long</value> + <value>double</value> + <value>string</value> + </choice> + </define> + <define name="db-data-source-setting-value"> + <element name="db:data-source-setting-value"> + <ref name="db-data-source-setting-value-attlist"/> + <ref name="string"/> + </element> + </define> + <define name="db-data-source-setting-value-attlist"> + <empty/> + </define> + <define name="db-forms"> + <element name="db:forms"> + <ref name="db-forms-attlist"/> + <zeroOrMore> + <choice> + <ref name="db-component"/> + <ref name="db-component-collection"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="db-forms-attlist"> + <empty/> + </define> + <define name="db-reports"> + <element name="db:reports"> + <ref name="db-reports-attlist"/> + <zeroOrMore> + <choice> + <ref name="db-component"/> + <ref name="db-component-collection"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="db-reports-attlist"> + <empty/> + </define> + <define name="db-component-collection"> + <element name="db:component-collection"> + <ref name="db-component-collection-attlist"/> + <ref name="common-db-object-name"/> + <ref name="common-db-object-title"/> + <ref name="common-db-object-description"/> + <zeroOrMore> + <choice> + <ref name="db-component"/> + <ref name="db-component-collection"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="db-component-collection-attlist"> + <empty/> + </define> + <define name="db-component"> + <element name="db:component"> + <ref name="db-component-attlist"/> + <ref name="common-db-object-name"/> + <ref name="common-db-object-title"/> + <ref name="common-db-object-description"/> + <optional> + <choice> + <ref name="office-document"/> + <ref name="math-math"/> + </choice> + </optional> + </element> + </define> + <define name="db-component-attlist"> + <interleave> + <optional> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:show"> + <value>none</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + </optional> + <optional> + <attribute name="db:as-template"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-queries"> + <element name="db:queries"> + <ref name="db-queries-attlist"/> + <zeroOrMore> + <choice> + <ref name="db-query"/> + <ref name="db-query-collection"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="db-queries-attlist"> + <empty/> + </define> + <define name="db-query-collection"> + <element name="db:query-collection"> + <ref name="db-query-collection-attlist"/> + <ref name="common-db-object-name"/> + <ref name="common-db-object-title"/> + <ref name="common-db-object-description"/> + <zeroOrMore> + <choice> + <ref name="db-query"/> + <ref name="db-query-collection"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="db-query-collection-attlist"> + <empty/> + </define> + <define name="db-query"> + <element name="db:query"> + <ref name="db-query-attlist"/> + <ref name="common-db-object-name"/> + <ref name="common-db-object-title"/> + <ref name="common-db-object-description"/> + <ref name="common-db-table-style-name"/> + <optional> + <ref name="db-order-statement"/> + </optional> + <optional> + <ref name="db-filter-statement"/> + </optional> + <optional> + <ref name="db-columns"/> + </optional> + <optional> + <ref name="db-update-table"/> + </optional> + </element> + </define> + <define name="db-query-attlist"> + <interleave> + <attribute name="db:command"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="db:escape-processing"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-order-statement"> + <element name="db:order-statement"> + <ref name="db-command"/> + <ref name="db-apply-command"/> + <empty/> + </element> + </define> + <define name="db-filter-statement"> + <element name="db:filter-statement"> + <ref name="db-command"/> + <ref name="db-apply-command"/> + <empty/> + </element> + </define> + <define name="db-update-table"> + <element name="db:update-table"> + <ref name="common-db-table-name-attlist"/> + </element> + </define> + <define name="db-table-presentations"> + <element name="db:table-representations"> + <ref name="db-table-presentations-attlist"/> + <zeroOrMore> + <ref name="db-table-presentation"/> + </zeroOrMore> + </element> + </define> + <define name="db-table-presentations-attlist"> + <empty/> + </define> + <define name="db-table-presentation"> + <element name="db:table-representation"> + <ref name="db-table-presentation-attlist"/> + <ref name="common-db-table-name-attlist"/> + <ref name="common-db-object-title"/> + <ref name="common-db-object-description"/> + <ref name="common-db-table-style-name"/> + <optional> + <ref name="db-order-statement"/> + </optional> + <optional> + <ref name="db-filter-statement"/> + </optional> + <optional> + <ref name="db-columns"/> + </optional> + </element> + </define> + <define name="db-table-presentation-attlist"> + <empty/> + </define> + <define name="db-columns"> + <element name="db:columns"> + <ref name="db-columns-attlist"/> + <oneOrMore> + <ref name="db-column"/> + </oneOrMore> + </element> + </define> + <define name="db-columns-attlist"> + <empty/> + </define> + <define name="db-column"> + <element name="db:column"> + <ref name="db-column-attlist"/> + <ref name="common-db-object-name"/> + <ref name="common-db-object-title"/> + <ref name="common-db-object-description"/> + <ref name="common-db-default-value"/> + </element> + </define> + <define name="db-column-attlist"> + <interleave> + <optional> + <attribute name="db:visible"> + <ref name="boolean"/> + </attribute> + </optional> + + <optional> + <attribute name="db:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="db:default-cell-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-command"> + <attribute name="db:command"> + <ref name="string"/> + </attribute> + </define> + <define name="db-apply-command"> + <optional> + <attribute name="db:apply-command"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="common-db-table-name-attlist"> + <interleave> + <attribute name="db:name"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="db:catalog-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="db:schema-name"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-db-object-name"> + <attribute name="db:name"> + <ref name="string"/> + </attribute> + </define> + <define name="common-db-object-title"> + <optional> + <attribute name="db:title"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-db-object-description"> + <optional> + <attribute name="db:description"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-db-table-style-name"> + <interleave> + <optional> + <attribute name="db:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="db:default-row-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-db-default-value"> + <optional> + <ref name="common-value-and-type-attlist"/> + </optional> + </define> + <define name="db-schema-definition"> + <element name="db:schema-definition"> + <ref name="db-schema-definition-attlist"/> + <ref name="db-table-definitions"/> + </element> + </define> + <define name="db-schema-definition-attlist"> + <empty/> + </define> + <define name="db-table-definitions"> + <element name="db:table-definitions"> + <ref name="db-table-definitions-attlist"/> + <zeroOrMore> + <ref name="db-table-definition"/> + </zeroOrMore> + </element> + </define> + <define name="db-table-definitions-attlist"> + <empty/> + </define> + <define name="db-table-definition"> + <element name="db:table-definition"> + <ref name="common-db-table-name-attlist"/> + <ref name="db-table-definition-attlist"/> + <ref name="db-column-definitions"/> + <optional> + <ref name="db-keys"/> + </optional> + <optional> + <ref name="db-indices"/> + </optional> + </element> + </define> + <define name="db-table-definition-attlist"> + <optional> + <attribute name="db:type"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="db-column-definitions"> + <element name="db:column-definitions"> + <ref name="db-column-definitions-attlist"/> + <oneOrMore> + <ref name="db-column-definition"/> + </oneOrMore> + </element> + </define> + <define name="db-column-definitions-attlist"> + <empty/> + </define> + <define name="db-column-definition"> + <element name="db:column-definition"> + <ref name="db-column-definition-attlist"/> + <ref name="common-db-default-value"/> + </element> + </define> + <define name="db-column-definition-attlist"> + <interleave> + <attribute name="db:name"> + <ref name="string"/> + </attribute> + + <optional> + <attribute name="db:data-type"> + <ref name="db-data-types"/> + </attribute> + </optional> + + <optional> + <attribute name="db:type-name"> + <ref name="string"/> + </attribute> + </optional> + + <optional> + <attribute name="db:precision"> + <ref name="positiveInteger"/> + </attribute> + </optional> + + <optional> + <attribute name="db:scale"> + <ref name="positiveInteger"/> + </attribute> + </optional> + + <optional> + <attribute name="db:is-nullable"> + <choice> + <value>no-nulls</value> + <value>nullable</value> + </choice> + </attribute> + </optional> + + <optional> + <attribute name="db:is-empty-allowed"> + <ref name="boolean"/> + </attribute> + </optional> + + <optional> + <attribute name="db:is-autoincrement"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-data-types"> + <choice> + <value>bit</value> + <value>boolean</value> + <value>tinyint</value> + <value>smallint</value> + <value>integer</value> + <value>bigint</value> + <value>float</value> + <value>real</value> + <value>double</value> + <value>numeric</value> + <value>decimal</value> + <value>char</value> + <value>varchar</value> + <value>longvarchar</value> + <value>date</value> + <value>time</value> + <value>timestmp</value> + <value>binary</value> + <value>varbinary</value> + <value>longvarbinary</value> + <value>sqlnull</value> + <value>other</value> + <value>object</value> + <value>distinct</value> + <value>struct</value> + <value>array</value> + <value>blob</value> + <value>clob</value> + <value>ref</value> + </choice> + </define> + <define name="db-keys"> + <element name="db:keys"> + <ref name="db-keys-attlist"/> + <oneOrMore> + <ref name="db-key"/> + </oneOrMore> + </element> + </define> + <define name="db-keys-attlist"> + <empty/> + </define> + <define name="db-key"> + <element name="db:key"> + <ref name="db-key-attlist"/> + <oneOrMore> + <ref name="db-key-columns"/> + </oneOrMore> + </element> + </define> + <define name="db-key-attlist"> + <interleave> + <optional> + <attribute name="db:name"> + <ref name="string"/> + </attribute> + </optional> + + <attribute name="db:type"> + <choice> + <value>primary</value> + <value>unique</value> + <value>foreign</value> + </choice> + </attribute> + + <optional> + <attribute name="db:referenced-table-name"> + <ref name="string"/> + </attribute> + </optional> + + <optional> + <attribute name="db:update-rule"> + <choice> + <value>cascade</value> + <value>restrict</value> + <value>set-null</value> + <value>no-action</value> + <value>set-default</value> + </choice> + </attribute> + </optional> + + <optional> + <attribute name="db:delete-rule"> + <choice> + <value>cascade</value> + <value>restrict</value> + <value>set-null</value> + <value>no-action</value> + <value>set-default</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="db-key-columns"> + <element name="db:key-columns"> + <ref name="db-key-columns-attlist"/> + <oneOrMore> + <ref name="db-key-column"/> + </oneOrMore> + </element> + </define> + <define name="db-key-columns-attlist"> + <empty/> + </define> + <define name="db-key-column"> + <element name="db:key-column"> + <ref name="db-key-column-attlist"/> + <empty/> + </element> + </define> + <define name="db-key-column-attlist"> + <interleave> + <optional> + <attribute name="db:name"> + <ref name="string"/> + </attribute> + </optional> + + <optional> + <attribute name="db:related-column-name"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-indices"> + <element name="db:indices"> + <ref name="db-indices-attlist"/> + <oneOrMore> + <ref name="db-index"/> + </oneOrMore> + </element> + </define> + <define name="db-indices-attlist"> + <empty/> + </define> + <define name="db-index"> + <element name="db:index"> + <ref name="db-index-attlist"/> + <oneOrMore> + <ref name="db-index-columns"/> + </oneOrMore> + </element> + </define> + <define name="db-index-attlist"> + <interleave> + <attribute name="db:name"> + <ref name="string"/> + </attribute> + + <optional> + <attribute name="db:catalog-name"> + <ref name="string"/> + </attribute> + </optional> + + <optional> + <attribute name="db:is-unique"> + <ref name="boolean"/> + </attribute> + </optional> + + <optional> + <attribute name="db:is-clustered"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="db-index-columns"> + <element name="db:index-columns"> + <oneOrMore> + <ref name="db-index-column"/> + </oneOrMore> + </element> + </define> + <define name="db-index-column"> + <element name="db:index-column"> + <ref name="db-index-column-attlist"/> + <empty/> + </element> + </define> + <define name="db-index-column-attlist"> + <interleave> + <attribute name="db:name"> + <ref name="string"/> + </attribute> + + <optional> + <attribute name="db:is-ascending"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="office-forms"> + <optional> + <element name="office:forms"> + <ref name="office-forms-attlist"/> + <zeroOrMore> + <choice> + <ref name="form-form"/> + <ref name="xforms-model"/> + </choice> + </zeroOrMore> + </element> + </optional> + </define> + <define name="office-forms-attlist"> + <interleave> + <optional> + <attribute name="form:automatic-focus"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:apply-design-mode"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="form-form"> + <element name="form:form"> + <ref name="common-form-control-attlist"/> + <ref name="form-form-attlist"/> + <optional> + <ref name="form-properties"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + <zeroOrMore> + <choice> + <ref name="controls"/> + <ref name="form-form"/> + </choice> + </zeroOrMore> + <optional> + <ref name="form-connection-resource"/> + </optional> + </element> + </define> + <define name="form-form-attlist"> + <interleave> + <optional> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + </optional> + <optional> + <attribute name="office:target-frame"> + <ref name="targetFrameName"/> + </attribute> + </optional> + <optional> + <attribute name="form:method"> + <choice> + <value>get</value> + <value>post</value> + <ref name="string"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="form:enctype"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="form:allow-deletes"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:allow-inserts"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:allow-updates"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:apply-filter"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:command-type"> + <choice> + <value>table</value> + <value>query</value> + <value>command</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="form:command"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="form:datasource"> + <choice> + <ref name="anyIRI"/> + <ref name="string"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="form:master-fields"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="form:detail-fields"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="form:escape-processing"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:filter"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="form:ignore-result"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:navigation-mode"> + <ref name="navigation"/> + </attribute> + </optional> + <optional> + <attribute name="form:order"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="form:tab-cycle"> + <ref name="tab-cycles"/> + </attribute> + </optional> + </interleave> + </define> + <define name="navigation"> + <choice> + <value>none</value> + <value>current</value> + <value>parent</value> + </choice> + </define> + <define name="tab-cycles"> + <choice> + <value>records</value> + <value>current</value> + <value>page</value> + </choice> + </define> + <define name="form-connection-resource"> + <element name="form:connection-resource"> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <empty/> + </element> + </define> + <define name="xforms-model"> + <element name="xforms:model"> + <ref name="anyAttListOrElements"/> + </element> + </define> + <define name="column-controls"> + <choice> + <element name="form:text"> + <ref name="form-text-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:textarea"> + <ref name="form-textarea-attlist"/> + <ref name="common-form-control-content"/> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> + <element name="form:formatted-text"> + <ref name="form-formatted-text-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:number"> + <ref name="form-number-attlist"/> + <ref name="common-numeric-control-attlist"/> + <ref name="common-form-control-content"/> + <ref name="common-linked-cell"/> + <ref name="common-spin-button"/> + <ref name="common-repeat"/> + <ref name="common-delay-for-repeat"/> + </element> + <element name="form:date"> + <ref name="form-date-attlist"/> + <ref name="common-numeric-control-attlist"/> + <ref name="common-form-control-content"/> + <ref name="common-linked-cell"/> + <ref name="common-spin-button"/> + <ref name="common-repeat"/> + <ref name="common-delay-for-repeat"/> + </element> + <element name="form:time"> + <ref name="form-time-attlist"/> + <ref name="common-numeric-control-attlist"/> + <ref name="common-form-control-content"/> + <ref name="common-linked-cell"/> + <ref name="common-spin-button"/> + <ref name="common-repeat"/> + <ref name="common-delay-for-repeat"/> + </element> + <element name="form:combobox"> + <ref name="form-combobox-attlist"/> + <ref name="common-form-control-content"/> + <zeroOrMore> + <ref name="form-item"/> + </zeroOrMore> + </element> + <element name="form:listbox"> + <ref name="form-listbox-attlist"/> + <ref name="common-form-control-content"/> + <zeroOrMore> + <ref name="form-option"/> + </zeroOrMore> + </element> + <element name="form:checkbox"> + <ref name="form-checkbox-attlist"/> + <ref name="common-form-control-content"/> + </element> + </choice> + </define> + <define name="controls"> + <choice> + <ref name="column-controls"/> + <element name="form:password"> + <ref name="form-password-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:file"> + <ref name="form-file-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:fixed-text"> + <ref name="form-fixed-text-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:button"> + <ref name="form-button-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:image"> + <ref name="form-image-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:radio"> + <ref name="form-radio-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:frame"> + <ref name="form-frame-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:image-frame"> + <ref name="form-image-frame-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:hidden"> + <ref name="form-hidden-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:grid"> + <ref name="form-grid-attlist"/> + <ref name="common-form-control-content"/> + <zeroOrMore> + <ref name="form-column"/> + </zeroOrMore> + </element> + <element name="form:value-range"> + <ref name="form-value-range-attlist"/> + <ref name="common-form-control-content"/> + </element> + <element name="form:generic-control"> + <ref name="form-generic-control-attlist"/> + <ref name="common-form-control-content"/> + </element> + </choice> + </define> + <define name="form-text-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> + <ref name="common-linked-cell"/> + </define> + <define name="form-control-attlist"> + <ref name="common-form-control-attlist"/> + <ref name="common-control-id-attlist"/> + <ref name="xforms-bind-attlist"/> + </define> + <define name="common-form-control-content"> + <optional> + <ref name="form-properties"/> + </optional> + <optional> + <ref name="office-event-listeners"/> + </optional> + </define> + <define name="form-textarea-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> + <ref name="common-linked-cell"/> + </define> + <define name="form-password-attlist"> + <interleave> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-linked-cell"/> + <optional> + <attribute name="form:echo-char"> + <ref name="character"/> + </attribute> + </optional> + </interleave> + </define> + <define name="form-file-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-linked-cell"/> + </define> + <define name="form-formatted-text-attlist"> + <interleave> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> + <ref name="common-linked-cell"/> + <ref name="common-spin-button"/> + <ref name="common-repeat"/> + <ref name="common-delay-for-repeat"/> + <optional> + <attribute name="form:max-value"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="form:min-value"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="form:validation"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-numeric-control-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> + </define> + <define name="form-number-attlist"> + <interleave> + <optional> + <attribute name="form:value"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="form:current-value"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="form:min-value"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="form:max-value"> + <ref name="double"/> + </attribute> + </optional> + </interleave> + </define> + <define name="form-date-attlist"> + <interleave> + <optional> + <attribute name="form:value"> + <ref name="date"/> + </attribute> + </optional> + <optional> + <attribute name="form:current-value"> + <ref name="date"/> + </attribute> + </optional> + <optional> + <attribute name="form:min-value"> + <ref name="date"/> + </attribute> + </optional> + <optional> + <attribute name="form:max-value"> + <ref name="date"/> + </attribute> + </optional> + </interleave> + </define> + <define name="form-time-attlist"> + <interleave> + <optional> + <attribute name="form:value"> + <ref name="time"/> + </attribute> + </optional> + <optional> + <attribute name="form:current-value"> + <ref name="time"/> + </attribute> + </optional> + <optional> + <attribute name="form:min-value"> + <ref name="time"/> + </attribute> + </optional> + <optional> + <attribute name="form:max-value"> + <ref name="time"/> + </attribute> + </optional> + </interleave> + </define> + <define name="form-fixed-text-attlist"> + <interleave> + <ref name="form-control-attlist"/> + <ref name="for"/> + <ref name="common-disabled-attlist"/> + <ref name="label"/> + <ref name="common-printable-attlist"/> + <ref name="common-title-attlist"/> + <optional> + <attribute name="form:multi-line"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="form-combobox-attlist"> + <interleave> + <ref name="form-control-attlist"/> + <ref name="common-current-value-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="dropdown"/> + <ref name="common-maxlength-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="size"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-convert-empty-attlist"/> + <ref name="common-data-field-attlist"/> + <ref name="list-source"/> + <ref name="list-source-type"/> + <ref name="common-linked-cell"/> + <ref name="common-source-cell-range"/> + <optional> + <attribute name="form:auto-complete"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="form-item"> + <element name="form:item"> + <ref name="form-item-attlist"/> + <text/> + </element> + </define> + <define name="form-item-attlist"> + <ref name="label"/> + </define> + <define name="form-listbox-attlist"> + <interleave> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="dropdown"/> + <ref name="common-printable-attlist"/> + <ref name="size"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="bound-column"/> + <ref name="common-data-field-attlist"/> + <ref name="list-source"/> + <ref name="list-source-type"/> + <ref name="common-linked-cell"/> + <ref name="list-linkage-type"/> + <ref name="common-source-cell-range"/> + <optional> + <attribute name="form:multiple"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:xforms-list-source"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="list-linkage-type"> + <optional> + <attribute name="form:list-linkage-type"> + <choice> + <value>selection</value> + <value>selection-indices</value> + </choice> + </attribute> + </optional> + </define> + <define name="form-option"> + <element name="form:option"> + <ref name="form-option-attlist"/> + <text/> + </element> + </define> + <define name="form-option-attlist"> + <ref name="current-selected"/> + <ref name="selected"/> + <ref name="label"/> + <ref name="common-value-attlist"/> + </define> + <define name="form-button-attlist"> + <interleave> + <ref name="form-control-attlist"/> + <ref name="button-type"/> + <ref name="common-disabled-attlist"/> + <ref name="label"/> + <ref name="image-data"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="target-frame"/> + <ref name="target-location"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-form-relative-image-position-attlist"/> + <ref name="common-repeat"/> + <ref name="common-delay-for-repeat"/> + <optional> + <attribute name="form:default-button"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:toggle"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:focus-on-click"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:xforms-submission"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="form-image-attlist"> + <ref name="form-control-attlist"/> + <ref name="button-type"/> + <ref name="common-disabled-attlist"/> + <ref name="image-data"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="target-frame"/> + <ref name="target-location"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + </define> + <define name="form-checkbox-attlist"> + <interleave> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="label"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-data-field-attlist"/> + <ref name="common-form-visual-effect-attlist"/> + <ref name="common-form-relative-image-position-attlist"/> + <ref name="common-linked-cell"/> + <optional> + <attribute name="form:current-state"> + <ref name="states"/> + </attribute> + </optional> + <optional> + <attribute name="form:is-tristate"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="form:state"> + <ref name="states"/> + </attribute> + </optional> + </interleave> + </define> + <define name="states"> + <choice> + <value>unchecked</value> + <value>checked</value> + <value>unknown</value> + </choice> + </define> + <define name="form-radio-attlist"> + <ref name="form-control-attlist"/> + <ref name="current-selected"/> + <ref name="common-disabled-attlist"/> + <ref name="label"/> + <ref name="common-printable-attlist"/> + <ref name="selected"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-data-field-attlist"/> + <ref name="common-form-visual-effect-attlist"/> + <ref name="common-form-relative-image-position-attlist"/> + <ref name="common-linked-cell"/> + </define> + <define name="form-frame-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="for"/> + <ref name="label"/> + <ref name="common-printable-attlist"/> + <ref name="common-title-attlist"/> + </define> + <define name="form-image-frame-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="image-data"/> + <ref name="common-printable-attlist"/> + <ref name="common-readonly-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-data-field-attlist"/> + </define> + <define name="form-hidden-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-value-attlist"/> + </define> + <define name="form-grid-attlist"> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + </define> + <define name="form-column"> + <element name="form:column"> + <ref name="form-column-attlist"/> + <oneOrMore> + <ref name="column-controls"/> + </oneOrMore> + </element> + </define> + <define name="form-column-attlist"> + <ref name="common-form-control-attlist"/> + <ref name="label"/> + <ref name="text-style-name"/> + </define> + <define name="text-style-name"> + <optional> + <attribute name="form:text-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </define> + <define name="form-value-range-attlist"> + <interleave> + <ref name="form-control-attlist"/> + <ref name="common-disabled-attlist"/> + <ref name="common-printable-attlist"/> + <ref name="common-tab-attlist"/> + <ref name="common-title-attlist"/> + <ref name="common-value-attlist"/> + <ref name="common-linked-cell"/> + <ref name="common-repeat"/> + <ref name="common-delay-for-repeat"/> + <optional> + <attribute name="form:max-value"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="form:min-value"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="form:step-size"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="form:page-step-size"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="form:orientation"> + <choice> + <value>horizontal</value> + <value>vertical</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="form-generic-control-attlist"> + <ref name="form-control-attlist"/> + </define> + <define name="common-form-control-attlist"> + <interleave> + <optional> + <attribute name="form:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="form:control-implementation"> + <ref name="namespacedToken"/> + </attribute> + </optional> + </interleave> + </define> + <define name="xforms-bind-attlist"> + <optional> + <attribute name="xforms:bind"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="types"> + <choice> + <value>submit</value> + <value>reset</value> + <value>push</value> + <value>url</value> + </choice> + </define> + <define name="button-type"> + <optional> + <attribute name="form:button-type"> + <ref name="types"/> + </attribute> + </optional> + </define> + <define name="common-control-id-attlist"> + <group> + <ref name="xml-id"/> + <optional> + <attribute name="form:id"> + <ref name="NCName"/> + </attribute> + </optional> + </group> + </define> + <define name="current-selected"> + <optional> + <attribute name="form:current-selected"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="common-value-attlist"> + <optional> + <attribute name="form:value"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-current-value-attlist"> + <optional> + <attribute name="form:current-value"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-disabled-attlist"> + <optional> + <attribute name="form:disabled"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="dropdown"> + <optional> + <attribute name="form:dropdown"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="for"> + <optional> + <attribute name="form:for"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="image-data"> + <optional> + <attribute name="form:image-data"> + <ref name="anyIRI"/> + </attribute> + </optional> + </define> + <define name="label"> + <optional> + <attribute name="form:label"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-maxlength-attlist"> + <optional> + <attribute name="form:max-length"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </define> + <define name="common-printable-attlist"> + <optional> + <attribute name="form:printable"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="common-readonly-attlist"> + <optional> + <attribute name="form:readonly"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="selected"> + <optional> + <attribute name="form:selected"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="size"> + <optional> + <attribute name="form:size"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </define> + <define name="common-tab-attlist"> + <interleave> + <optional> + <attribute name="form:tab-index"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="form:tab-stop"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="target-frame"> + <optional> + <attribute name="office:target-frame"> + <ref name="targetFrameName"/> + </attribute> + </optional> + </define> + <define name="target-location"> + <optional> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + </optional> + </define> + <define name="common-title-attlist"> + <optional> + <attribute name="form:title"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-form-visual-effect-attlist"> + <optional> + <attribute name="form:visual-effect"> + <choice> + <value>flat</value> + <value>3d</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-form-relative-image-position-attlist"> + <choice> + <optional> + <attribute name="form:image-position"> + <value>center</value> + </attribute> + </optional> + <group> + <attribute name="form:image-position"> + <choice> + <value>start</value> + <value>end</value> + <value>top</value> + <value>bottom</value> + </choice> + </attribute> + <optional> + <attribute name="form:image-align"> + <choice> + <value>start</value> + <value>center</value> + <value>end</value> + </choice> + </attribute> + </optional> + </group> + </choice> + </define> + <define name="bound-column"> + <optional> + <attribute name="form:bound-column"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-convert-empty-attlist"> + <optional> + <attribute name="form:convert-empty-to-null"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="common-data-field-attlist"> + <optional> + <attribute name="form:data-field"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="list-source"> + <optional> + <attribute name="form:list-source"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="list-source-type"> + <optional> + <attribute name="form:list-source-type"> + <choice> + <value>table</value> + <value>query</value> + <value>sql</value> + <value>sql-pass-through</value> + <value>value-list</value> + <value>table-fields</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-linked-cell"> + <optional> + <attribute name="form:linked-cell"> + <choice> + <ref name="cellAddress"/> + <ref name="string"/> + </choice> + </attribute> + </optional> + </define> + <define name="common-source-cell-range"> + <optional> + <attribute name="form:source-cell-range"> + <choice> + <ref name="cellRangeAddress"/> + <ref name="string"/> + </choice> + </attribute> + </optional> + </define> + <define name="common-spin-button"> + <optional> + <attribute name="form:spin-button"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="common-repeat"> + <optional> + <attribute name="form:repeat"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="common-delay-for-repeat"> + <optional> + <attribute name="form:delay-for-repeat"> + <ref name="duration"/> + </attribute> + </optional> + </define> + <define name="form-properties"> + <element name="form:properties"> + <oneOrMore> + <ref name="form-property"/> + </oneOrMore> + </element> + </define> + <define name="form-property"> + <choice> + <element name="form:property"> + <ref name="form-property-name"/> + <ref name="form-property-value-and-type-attlist"/> + </element> + <element name="form:list-property"> + <ref name="form-property-name"/> + <ref name="form-property-type-and-value-list"/> + </element> + </choice> + </define> + <define name="form-property-name"> + <attribute name="form:property-name"> + <ref name="string"/> + </attribute> + </define> + <define name="form-property-value-and-type-attlist"> + <choice> + <ref name="common-value-and-type-attlist"/> + <attribute name="office:value-type"> + <value>void</value> + </attribute> + </choice> + </define> + <define name="form-property-type-and-value-list"> + <choice> + <group> + <attribute name="office:value-type"> + <value>float</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>percentage</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>currency</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:value"> + <ref name="double"/> + </attribute> + <optional> + <attribute name="office:currency"> + <ref name="string"/> + </attribute> + </optional> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>date</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:date-value"> + <ref name="dateOrDateTime"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>time</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:time-value"> + <ref name="duration"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>boolean</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:boolean-value"> + <ref name="boolean"/> + </attribute> + </element> + </zeroOrMore> + </group> + <group> + <attribute name="office:value-type"> + <value>string</value> + </attribute> + <zeroOrMore> + <element name="form:list-value"> + <attribute name="office:string-value"> + <ref name="string"/> + </attribute> + </element> + </zeroOrMore> + </group> + <attribute name="office:value-type"> + <value>void</value> + </attribute> + </choice> + </define> + <define name="office-annotation"> + <element name="office:annotation"> + <ref name="office-annotation-attlist"/> + <ref name="draw-caption-attlist"/> + <ref name="common-draw-position-attlist"/> + <ref name="common-draw-size-attlist"/> + <ref name="common-draw-shape-with-text-and-styles-attlist"/> + <optional> + <ref name="dc-creator"/> + </optional> + <optional> + <ref name="dc-date"/> + </optional> + <optional> + <ref name="meta-date-string"/> + </optional> + <zeroOrMore> + <choice> + <ref name="text-p"/> + <ref name="text-list"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="office-annotation-end"> + <element name="office:annotation-end"> + <ref name="office-annotation-end-attlist"/> + </element> + </define> + <define name="office-annotation-attlist"> + <interleave> + <optional> + <attribute name="office:display"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <ref name="common-office-annotation-name-attlist"/> + </optional> + </interleave> + </define> + <define name="office-annotation-end-attlist"> + <ref name="common-office-annotation-name-attlist"/> + </define> + <define name="common-office-annotation-name-attlist"> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </define> + <define name="meta-date-string"> + <element name="meta:date-string"> + <ref name="string"/> + </element> + </define> + <define name="common-num-format-prefix-suffix-attlist"> + <optional> + <attribute name="style:num-prefix"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:num-suffix"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-num-format-attlist"> + <choice> + <attribute name="style:num-format"> + <choice> + <value>1</value> + <value>i</value> + <value>I</value> + <ref name="string"/> + <empty/> + </choice> + </attribute> + <group> + <attribute name="style:num-format"> + <choice> + <value>a</value> + <value>A</value> + </choice> + </attribute> + <ref name="style-num-letter-sync-attlist"/> + </group> + <empty/> + </choice> + </define> + <define name="style-num-letter-sync-attlist"> + <optional> + <attribute name="style:num-letter-sync"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="office-change-info"> + <element name="office:change-info"> + <ref name="dc-creator"/> + <ref name="dc-date"/> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </element> + </define> + <define name="office-event-listeners"> + <element name="office:event-listeners"> + <zeroOrMore> + <choice> + <ref name="script-event-listener"/> + <ref name="presentation-event-listener"/> + </choice> + </zeroOrMore> + </element> + </define> + <define name="script-event-listener"> + <element name="script:event-listener"> + <ref name="script-event-listener-attlist"/> + <empty/> + </element> + </define> + <define name="script-event-listener-attlist"> + <interleave> + <attribute name="script:event-name"> + <ref name="string"/> + </attribute> + <attribute name="script:language"> + <ref name="string"/> + </attribute> + <choice> + <attribute name="script:macro-name"> + <ref name="string"/> + </attribute> + <group> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + </group> + </choice> + </interleave> + </define> + <define name="math-math"> + <element name="math:math"> + <ref name="mathMarkup"/> + </element> + </define> + <define name="mathMarkup"> + <dc:description>To avoid inclusion of the complete MathML schema, anything is allowed within a math:math top-level element</dc:description> + <zeroOrMore> + <choice> + <attribute> + <anyName/> + </attribute> + <text/> + <element> + <anyName/> + <ref name="mathMarkup"/> + </element> + </choice> + </zeroOrMore> + </define> + <define name="text-dde-connection-decl"> + <element name="text:dde-connection-decl"> + <ref name="text-dde-connection-decl-attlist"/> + <ref name="common-dde-connection-decl-attlist"/> + </element> + </define> + <define name="text-dde-connection-decl-attlist"> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </define> + <define name="common-dde-connection-decl-attlist"> + <interleave> + <attribute name="office:dde-application"> + <ref name="string"/> + </attribute> + <attribute name="office:dde-topic"> + <ref name="string"/> + </attribute> + <attribute name="office:dde-item"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="office:automatic-update"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-dde-link"> + <element name="table:dde-link"> + <ref name="office-dde-source"/> + <ref name="table-table"/> + </element> + </define> + <define name="office-dde-source"> + <element name="office:dde-source"> + <ref name="office-dde-source-attlist"/> + <ref name="common-dde-connection-decl-attlist"/> + </element> + </define> + <define name="office-dde-source-attlist"> + <interleave> + <optional> + <attribute name="office:name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="office:conversion-mode"> + <choice> + <value>into-default-style-data-style</value> + <value>into-english-number</value> + <value>keep-text</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="animation-element"> + <choice> + <element name="anim:animate"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="common-anim-spline-mode-attlist"/> + <ref name="common-spline-anim-value-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + </element> + <element name="anim:set"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-set-values-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + </element> + <element name="anim:animateMotion"> + <ref name="anim-animate-motion-attlist"/> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-spline-anim-value-attlist"/> + </element> + <element name="anim:animateColor"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="common-anim-spline-mode-attlist"/> + <ref name="common-spline-anim-value-attlist"/> + <ref name="anim-animate-color-attlist"/> + <ref name="common-timing-attlist"/> + </element> + <element name="anim:animateTransform"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-named-target-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="anim-animate-transform-attlist"/> + <ref name="common-timing-attlist"/> + </element> + <element name="anim:transitionFilter"> + <ref name="common-anim-target-attlist"/> + <ref name="common-anim-add-accum-attlist"/> + <ref name="common-anim-values-attlist"/> + <ref name="common-anim-spline-mode-attlist"/> + <ref name="anim-transition-filter-attlist"/> + <ref name="common-timing-attlist"/> + </element> + <element name="anim:par"> + <ref name="common-anim-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-endsync-timing-attlist"/> + <zeroOrMore> + <ref name="animation-element"/> + </zeroOrMore> + </element> + <element name="anim:seq"> + <ref name="common-anim-attlist"/> + <ref name="common-endsync-timing-attlist"/> + <ref name="common-timing-attlist"/> + <zeroOrMore> + <ref name="animation-element"/> + </zeroOrMore> + </element> + <element name="anim:iterate"> + <ref name="common-anim-attlist"/> + <ref name="anim-iterate-attlist"/> + <ref name="common-timing-attlist"/> + <ref name="common-endsync-timing-attlist"/> + <zeroOrMore> + <ref name="animation-element"/> + </zeroOrMore> + </element> + <element name="anim:audio"> + <ref name="common-anim-attlist"/> + <ref name="anim-audio-attlist"/> + <ref name="common-basic-timing-attlist"/> + </element> + <element name="anim:command"> + <ref name="common-anim-attlist"/> + <ref name="anim-command-attlist"/> + <ref name="common-begin-end-timing-attlist"/> + <ref name="common-anim-target-attlist"/> + <zeroOrMore> + <element name="anim:param"> + <attribute name="anim:name"> + <ref name="string"/> + </attribute> + <attribute name="anim:value"> + <ref name="string"/> + </attribute> + </element> + </zeroOrMore> + </element> + </choice> + </define> + <define name="anim-animate-motion-attlist"> + <interleave> + <optional> + <attribute name="svg:path"> + <ref name="pathData"/> + </attribute> + </optional> + <optional> + <attribute name="svg:origin"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:calcMode"> + <choice> + <value>discrete</value> + <value>linear</value> + <value>paced</value> + <value>spline</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="anim-animate-color-attlist"> + <interleave> + <optional> + <attribute name="anim:color-interpolation"> + <choice> + <value>rgb</value> + <value>hsl</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="anim:color-interpolation-direction"> + <choice> + <value>clockwise</value> + <value>counter-clockwise</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="anim-animate-transform-attlist"> + <attribute name="svg:type"> + <choice> + <value>translate</value> + <value>scale</value> + <value>rotate</value> + <value>skewX</value> + <value>skewY</value> + </choice> + </attribute> + </define> + <define name="anim-transition-filter-attlist"> + <interleave> + <attribute name="smil:type"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="smil:subtype"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:direction"> + <choice> + <value>forward</value> + <value>reverse</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="smil:fadeColor"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="smil:mode"> + <choice> + <value>in</value> + <value>out</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="common-anim-target-attlist"> + <interleave> + <optional> + <attribute name="smil:targetElement"> + <ref name="IDREF"/> + </attribute> + </optional> + <optional> + <attribute name="anim:sub-item"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-anim-named-target-attlist"> + <attribute name="smil:attributeName"> + <ref name="string"/> + </attribute> + </define> + <define name="common-anim-values-attlist"> + <interleave> + <optional> + <attribute name="smil:values"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="anim:formula"> + <ref name="string"/> + </attribute> + </optional> + <ref name="common-anim-set-values-attlist"/> + <optional> + <attribute name="smil:from"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:by"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-anim-spline-mode-attlist"> + <optional> + <attribute name="smil:calcMode"> + <choice> + <value>discrete</value> + <value>linear</value> + <value>paced</value> + <value>spline</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-spline-anim-value-attlist"> + <interleave> + <optional> + <attribute name="smil:keyTimes"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:keySplines"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-anim-add-accum-attlist"> + <interleave> + <optional> + <attribute name="smil:accumulate"> + <choice> + <value>none</value> + <value>sum</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="smil:additive"> + <choice> + <value>replace</value> + <value>sum</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="common-anim-set-values-attlist"> + <optional> + <attribute name="smil:to"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-begin-end-timing-attlist"> + <interleave> + <optional> + <attribute name="smil:begin"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:end"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-dur-timing-attlist"> + <optional> + <attribute name="smil:dur"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-endsync-timing-attlist"> + <optional> + <attribute name="smil:endsync"> + <choice> + <value>first</value> + <value>last</value> + <value>all</value> + <value>media</value> + <ref name="IDREF"/> + </choice> + </attribute> + </optional> + </define> + <define name="common-repeat-timing-attlist"> + <optional> + <attribute name="smil:repeatDur"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:repeatCount"> + <choice> + <ref name="nonNegativeDecimal"/> + <value>indefinite</value> + </choice> + </attribute> + </optional> + </define> + <define name="nonNegativeDecimal"> + <data type="decimal"> + <param name="minInclusive">0.0</param> + </data> + </define> + <define name="common-fill-timing-attlist"> + <optional> + <attribute name="smil:fill"> + <choice> + <value>remove</value> + <value>freeze</value> + <value>hold</value> + <value>auto</value> + <value>default</value> + <value>transition</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-fill-default-attlist"> + <optional> + <attribute name="smil:fillDefault"> + <choice> + <value>remove</value> + <value>freeze</value> + <value>hold</value> + <value>transition</value> + <value>auto</value> + <value>inherit</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-restart-timing-attlist"> + <optional> + <attribute name="smil:restart"> + <choice> + <value>never</value> + <value>always</value> + <value>whenNotActive</value> + <value>default</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-restart-default-attlist"> + <optional> + <attribute name="smil:restartDefault"> + <choice> + <value>never</value> + <value>always</value> + <value>whenNotActive</value> + <value>inherit</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-time-manip-attlist"> + <interleave> + <optional> + <attribute name="smil:accelerate"> + <ref name="zeroToOneDecimal"/> + </attribute> + </optional> + <optional> + <attribute name="smil:decelerate"> + <ref name="zeroToOneDecimal"/> + </attribute> + </optional> + <optional> + <attribute name="smil:autoReverse"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="zeroToOneDecimal"> + <data type="decimal"> + <param name="minInclusive">0</param> + <param name="maxInclusive">1</param> + </data> + </define> + <define name="common-basic-timing-attlist"> + <ref name="common-begin-end-timing-attlist"/> + <ref name="common-dur-timing-attlist"/> + <ref name="common-repeat-timing-attlist"/> + <ref name="common-restart-timing-attlist"/> + <ref name="common-restart-default-attlist"/> + <ref name="common-fill-timing-attlist"/> + <ref name="common-fill-default-attlist"/> + </define> + <define name="common-timing-attlist"> + <ref name="common-basic-timing-attlist"/> + <ref name="common-time-manip-attlist"/> + </define> + <define name="anim-iterate-attlist"> + <interleave> + <ref name="common-anim-target-attlist"/> + <optional> + <attribute name="anim:iterate-type"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="anim:iterate-interval"> + <ref name="duration"/> + </attribute> + </optional> + </interleave> + </define> + <define name="anim-audio-attlist"> + <interleave> + <optional> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + </optional> + <optional> + <attribute name="anim:audio-level"> + <ref name="double"/> + </attribute> + </optional> + </interleave> + </define> + <define name="anim-command-attlist"> + <attribute name="anim:command"> + <ref name="string"/> + </attribute> + </define> + <define name="style-style"> + <element name="style:style"> + <ref name="style-style-attlist"/> + <ref name="style-style-content"/> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> + </define> + <define name="common-in-content-meta-attlist"> + <attribute name="xhtml:about"> + <ref name="URIorSafeCURIE"/> + </attribute> + <attribute name="xhtml:property"> + <ref name="CURIEs"/> + </attribute> + <ref name="common-meta-literal-attlist"/> + </define> + <define name="common-meta-literal-attlist"> + <optional> + <attribute name="xhtml:datatype"> + <ref name="CURIE"/> + </attribute> + </optional> + <optional> + <attribute name="xhtml:content"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="xml-id"> + <attribute name="xml:id"> + <ref name="ID"/> + </attribute> + </define> + <define name="style-style-attlist"> + <interleave> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:parent-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="style:next-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="style:list-level"> + <choice> + <ref name="positiveInteger"/> + <empty/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:list-style-name"> + <choice> + <ref name="styleName"/> + <empty/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:master-page-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="style:auto-update"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:data-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="style:percentage-data-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="style:class"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:default-outline-level"> + <choice> + <ref name="positiveInteger"/> + <empty/> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="style-map"> + <element name="style:map"> + <ref name="style-map-attlist"/> + <empty/> + </element> + </define> + <define name="style-map-attlist"> + <interleave> + <attribute name="style:condition"> + <ref name="string"/> + </attribute> + <attribute name="style:apply-style-name"> + <ref name="styleNameRef"/> + </attribute> + <optional> + <attribute name="style:base-cell-address"> + <ref name="cellAddress"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-default-style"> + <element name="style:default-style"> + <ref name="style-style-content"/> + </element> + </define> + <define name="style-page-layout"> + <element name="style:page-layout"> + <ref name="style-page-layout-attlist"/> + <ref name="style-page-layout-content"/> + </element> + </define> + <define name="style-page-layout-content"> + <optional> + <ref name="style-page-layout-properties"/> + </optional> + <optional> + <ref name="style-header-style"/> + </optional> + <optional> + <ref name="style-footer-style"/> + </optional> + </define> + <define name="style-page-layout-attlist"> + <interleave> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="style:page-usage"> + <choice> + <value>all</value> + <value>left</value> + <value>right</value> + <value>mirrored</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="style-header-style"> + <element name="style:header-style"> + <optional> + <ref name="style-header-footer-properties"/> + </optional> + </element> + </define> + <define name="style-footer-style"> + <element name="style:footer-style"> + <optional> + <ref name="style-header-footer-properties"/> + </optional> + </element> + </define> + <define name="style-default-page-layout"> + <element name="style:default-page-layout"> + <ref name="style-page-layout-content"/> + </element> + </define> + <define name="style-master-page"> + <element name="style:master-page"> + <ref name="style-master-page-attlist"/> + <optional> + <ref name="style-header"/> + <optional> + <ref name="style-header-left"/> + </optional> + </optional> + <optional> + <ref name="style-footer"/> + <optional> + <ref name="style-footer-left"/> + </optional> + </optional> + <optional> + <ref name="draw-layer-set"/> + </optional> + <optional> + <ref name="office-forms"/> + </optional> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + <optional> + <ref name="animation-element"/> + </optional> + <optional> + <ref name="presentation-notes"/> + </optional> + </element> + </define> + <define name="style-master-page-attlist"> + <interleave> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> + <attribute name="style:page-layout-name"> + <ref name="styleNameRef"/> + </attribute> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="style:next-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-header"> + <element name="style:header"> + <ref name="common-style-header-footer-attlist"/> + <ref name="header-footer-content"/> + </element> + </define> + <define name="style-footer"> + <element name="style:footer"> + <ref name="common-style-header-footer-attlist"/> + <ref name="header-footer-content"/> + </element> + </define> + <define name="style-header-left"> + <element name="style:header-left"> + <ref name="common-style-header-footer-attlist"/> + <ref name="header-footer-content"/> + </element> + </define> + <define name="style-footer-left"> + <element name="style:footer-left"> + <ref name="common-style-header-footer-attlist"/> + <ref name="header-footer-content"/> + </element> + </define> + <define name="header-footer-content"> + <choice> + <group> + <ref name="text-tracked-changes"/> + <ref name="text-decls"/> + <zeroOrMore> + <choice> + <ref name="text-h"/> + <ref name="text-p"/> + <ref name="text-list"/> + <ref name="table-table"/> + <ref name="text-section"/> + <ref name="text-table-of-content"/> + <ref name="text-illustration-index"/> + <ref name="text-table-index"/> + <ref name="text-object-index"/> + <ref name="text-user-index"/> + <ref name="text-alphabetical-index"/> + <ref name="text-bibliography"/> + <ref name="text-index-title"/> + <ref name="change-marks"/> + </choice> + </zeroOrMore> + </group> + <group> + <optional> + <ref name="style-region-left"/> + </optional> + <optional> + <ref name="style-region-center"/> + </optional> + <optional> + <ref name="style-region-right"/> + </optional> + </group> + </choice> + </define> + <define name="common-style-header-footer-attlist"> + <optional> + <attribute name="style:display"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="style-region-left"> + <element name="style:region-left"> + <ref name="region-content"/> + </element> + </define> + <define name="style-region-center"> + <element name="style:region-center"> + <ref name="region-content"/> + </element> + </define> + <define name="style-region-right"> + <element name="style:region-right"> + <ref name="region-content"/> + </element> + </define> + <define name="region-content"> + <zeroOrMore> + <ref name="text-p"/> + </zeroOrMore> + </define> + <define name="presentation-notes"> + <element name="presentation:notes"> + <ref name="common-presentation-header-footer-attlist"/> + <ref name="presentation-notes-attlist"/> + <ref name="office-forms"/> + <zeroOrMore> + <ref name="shape"/> + </zeroOrMore> + </element> + </define> + <define name="presentation-notes-attlist"> + <interleave> + <optional> + <attribute name="style:page-layout-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="draw:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="table-table-template"> + <element name="table:table-template"> + <ref name="table-table-template-attlist"/> + <optional> + <ref name="table-first-row"/> + </optional> + <optional> + <ref name="table-last-row"/> + </optional> + <optional> + <ref name="table-first-column"/> + </optional> + <optional> + <ref name="table-last-column"/> + </optional> + <ref name="table-body"/> + <optional> + <ref name="table-even-rows"/> + </optional> + <optional> + <ref name="table-odd-rows"/> + </optional> + <optional> + <ref name="table-even-columns"/> + </optional> + <optional> + <ref name="table-odd-columns"/> + </optional> + <optional> + <ref name="table-background"/> + </optional> + </element> + </define> + <define name="table-table-template-attlist"> + <interleave> + <attribute name="table:name"> + <ref name="string"/> + </attribute> + <attribute name="table:first-row-start-column"> + <ref name="rowOrCol"/> + </attribute> + <attribute name="table:first-row-end-column"> + <ref name="rowOrCol"/> + </attribute> + <attribute name="table:last-row-start-column"> + <ref name="rowOrCol"/> + </attribute> + <attribute name="table:last-row-end-column"> + <ref name="rowOrCol"/> + </attribute> + </interleave> + </define> + <define name="rowOrCol"> + <choice> + <value>row</value> + <value>column</value> + </choice> + </define> + <define name="table-first-row"> + <element name="table:first-row"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> + </define> + <define name="table-last-row"> + <element name="table:last-row"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> + </define> + <define name="table-first-column"> + <element name="table:first-column"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> + </define> + <define name="table-last-column"> + <element name="table:last-column"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> + </define> + <define name="table-body"> + <element name="table:body"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> + </define> + <define name="table-even-rows"> + <element name="table:even-rows"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> + </define> + <define name="table-odd-rows"> + <element name="table:odd-rows"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> + </define> + <define name="table-even-columns"> + <element name="table:even-columns"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> + </define> + <define name="table-odd-columns"> + <element name="table:odd-columns"> + <ref name="common-table-template-attlist"/> + <empty/> + </element> + </define> + <define name="common-table-template-attlist"> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + <optional> + <attribute name="table:paragraph-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </define> + <define name="table-background"> + <element name="table:background"> + <ref name="table-background-attlist"/> + <empty/> + </element> + </define> + <define name="table-background-attlist"> + <attribute name="table:style-name"> + <ref name="styleNameRef"/> + </attribute> + </define> + <define name="style-font-face"> + <element name="style:font-face"> + <ref name="style-font-face-attlist"/> + <optional> + <ref name="svg-font-face-src"/> + </optional> + <optional> + <ref name="svg-definition-src"/> + </optional> + </element> + </define> + <define name="style-font-face-attlist"> + <interleave> + <optional> + <attribute name="svg:font-family"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="svg:font-style"> + <ref name="fontStyle"/> + </attribute> + </optional> + <optional> + <attribute name="svg:font-variant"> + <ref name="fontVariant"/> + </attribute> + </optional> + <optional> + <attribute name="svg:font-weight"> + <ref name="fontWeight"/> + </attribute> + </optional> + <optional> + <attribute name="svg:font-stretch"> + <choice> + <value>normal</value> + <value>ultra-condensed</value> + <value>extra-condensed</value> + <value>condensed</value> + <value>semi-condensed</value> + <value>semi-expanded</value> + <value>expanded</value> + <value>extra-expanded</value> + <value>ultra-expanded</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:font-size"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="svg:unicode-range"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="svg:units-per-em"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:panose-1"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="svg:stemv"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:stemh"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:slope"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:cap-height"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:x-height"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:accent-height"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:ascent"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:descent"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:widths"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="svg:bbox"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="svg:ideographic"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:alphabetic"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:mathematical"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:hanging"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:v-ideographic"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:v-alphabetic"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:v-mathematical"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:v-hanging"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:underline-position"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:underline-thickness"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:strikethrough-position"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:strikethrough-thickness"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:overline-position"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="svg:overline-thickness"> + <ref name="integer"/> + </attribute> + </optional> + <attribute name="style:name"> + <ref name="string"/> + </attribute> + <optional> + <attribute name="style:font-adornments"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-generic"> + <ref name="fontFamilyGeneric"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-pitch"> + <ref name="fontPitch"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-charset"> + <ref name="textEncoding"/> + </attribute> + </optional> + </interleave> + </define> + <define name="svg-font-face-src"> + <element name="svg:font-face-src"> + <oneOrMore> + <choice> + <ref name="svg-font-face-uri"/> + <ref name="svg-font-face-name"/> + </choice> + </oneOrMore> + </element> + </define> + <define name="svg-font-face-uri"> + <element name="svg:font-face-uri"> + <ref name="common-svg-font-face-xlink-attlist"/> + <zeroOrMore> + <ref name="svg-font-face-format"/> + </zeroOrMore> + </element> + </define> + <define name="svg-font-face-format"> + <element name="svg:font-face-format"> + <optional> + <attribute name="svg:string"> + <ref name="string"/> + </attribute> + </optional> + <empty/> + </element> + </define> + <define name="svg-font-face-name"> + <element name="svg:font-face-name"> + <optional> + <attribute name="svg:name"> + <ref name="string"/> + </attribute> + </optional> + <empty/> + </element> + </define> + <define name="svg-definition-src"> + <element name="svg:definition-src"> + <ref name="common-svg-font-face-xlink-attlist"/> + <empty/> + </element> + </define> + <define name="common-svg-font-face-xlink-attlist"> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:actuate"> + <value>onRequest</value> + </attribute> + </optional> + </define> + <define name="number-number-style"> + <element name="number:number-style"> + <ref name="common-data-style-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <optional> + <ref name="any-number"/> + <optional> + <ref name="number-text"/> + </optional> + </optional> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> + </define> + <define name="any-number"> + <choice> + <ref name="number-number"/> + <ref name="number-scientific-number"/> + <ref name="number-fraction"/> + </choice> + </define> + <define name="number-number"> + <element name="number:number"> + <ref name="number-number-attlist"/> + <ref name="common-decimal-places-attlist"/> + <ref name="common-number-attlist"/> + <zeroOrMore> + <ref name="number-embedded-text"/> + </zeroOrMore> + </element> + </define> + <define name="number-number-attlist"> + <interleave> + <optional> + <attribute name="number:decimal-replacement"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="number:display-factor"> + <ref name="double"/> + </attribute> + </optional> + </interleave> + </define> + <define name="number-embedded-text"> + <element name="number:embedded-text"> + <ref name="number-embedded-text-attlist"/> + <text/> + </element> + </define> + <define name="number-embedded-text-attlist"> + <attribute name="number:position"> + <ref name="integer"/> + </attribute> + </define> + <define name="number-scientific-number"> + <element name="number:scientific-number"> + <ref name="number-scientific-number-attlist"/> + <ref name="common-decimal-places-attlist"/> + <ref name="common-number-attlist"/> + <empty/> + </element> + </define> + <define name="number-scientific-number-attlist"> + <optional> + <attribute name="number:min-exponent-digits"> + <ref name="integer"/> + </attribute> + </optional> + </define> + <define name="number-fraction"> + <element name="number:fraction"> + <ref name="number-fraction-attlist"/> + <ref name="common-number-attlist"/> + <empty/> + </element> + </define> + <define name="number-fraction-attlist"> + <interleave> + <optional> + <attribute name="number:min-numerator-digits"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="number:min-denominator-digits"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="number:denominator-value"> + <ref name="integer"/> + </attribute> + </optional> + </interleave> + </define> + <define name="number-currency-style"> + <element name="number:currency-style"> + <ref name="common-data-style-attlist"/> + <ref name="common-auto-reorder-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <optional> + <choice> + <group> + <ref name="number-and-text"/> + <optional> + <ref name="currency-symbol-and-text"/> + </optional> + </group> + <group> + <ref name="currency-symbol-and-text"/> + <optional> + <ref name="number-and-text"/> + </optional> + </group> + </choice> + </optional> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> + </define> + <define name="currency-symbol-and-text"> + <ref name="number-currency-symbol"/> + <optional> + <ref name="number-text"/> + </optional> + </define> + <define name="number-and-text"> + <ref name="number-number"/> + <optional> + <ref name="number-text"/> + </optional> + </define> + <define name="number-currency-symbol"> + <element name="number:currency-symbol"> + <ref name="number-currency-symbol-attlist"/> + <text/> + </element> + </define> + <define name="number-currency-symbol-attlist"> + <optional> + <attribute name="number:language"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="number:country"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="number:script"> + <ref name="scriptCode"/> + </attribute> + </optional> + <optional> + <attribute name="number:rfc-language-tag"> + <ref name="language"/> + </attribute> + </optional> + </define> + <define name="number-percentage-style"> + <element name="number:percentage-style"> + <ref name="common-data-style-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <optional> + <ref name="number-and-text"/> + </optional> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> + </define> + <define name="number-date-style"> + <element name="number:date-style"> + <ref name="common-data-style-attlist"/> + <ref name="common-auto-reorder-attlist"/> + <ref name="common-format-source-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <oneOrMore> + <ref name="any-date"/> + <optional> + <ref name="number-text"/> + </optional> + </oneOrMore> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> + </define> + <define name="any-date"> + <choice> + <ref name="number-day"/> + <ref name="number-month"/> + <ref name="number-year"/> + <ref name="number-era"/> + <ref name="number-day-of-week"/> + <ref name="number-week-of-year"/> + <ref name="number-quarter"/> + <ref name="number-hours"/> + <ref name="number-am-pm"/> + <ref name="number-minutes"/> + <ref name="number-seconds"/> + </choice> + </define> + <define name="number-day"> + <element name="number:day"> + <ref name="number-day-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> + </define> + <define name="number-day-attlist"> + <optional> + <attribute name="number:style"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> + </define> + <define name="number-month"> + <element name="number:month"> + <ref name="number-month-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> + </define> + <define name="number-month-attlist"> + <interleave> + <optional> + <attribute name="number:textual"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="number:possessive-form"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="number:style"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="number-year"> + <element name="number:year"> + <ref name="number-year-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> + </define> + <define name="number-year-attlist"> + <optional> + <attribute name="number:style"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> + </define> + <define name="number-era"> + <element name="number:era"> + <ref name="number-era-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> + </define> + <define name="number-era-attlist"> + <optional> + <attribute name="number:style"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> + </define> + <define name="number-day-of-week"> + <element name="number:day-of-week"> + <ref name="number-day-of-week-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> + </define> + <define name="number-day-of-week-attlist"> + <optional> + <attribute name="number:style"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> + </define> + <define name="number-week-of-year"> + <element name="number:week-of-year"> + <ref name="common-calendar-attlist"/> + <empty/> + </element> + </define> + <define name="number-quarter"> + <element name="number:quarter"> + <ref name="number-quarter-attlist"/> + <ref name="common-calendar-attlist"/> + <empty/> + </element> + </define> + <define name="number-quarter-attlist"> + <optional> + <attribute name="number:style"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> + </define> + <define name="number-time-style"> + <element name="number:time-style"> + <ref name="number-time-style-attlist"/> + <ref name="common-data-style-attlist"/> + <ref name="common-format-source-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <oneOrMore> + <ref name="any-time"/> + <optional> + <ref name="number-text"/> + </optional> + </oneOrMore> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> + </define> + <define name="any-time"> + <choice> + <ref name="number-hours"/> + <ref name="number-am-pm"/> + <ref name="number-minutes"/> + <ref name="number-seconds"/> + </choice> + </define> + <define name="number-time-style-attlist"> + <optional> + <attribute name="number:truncate-on-overflow"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="number-hours"> + <element name="number:hours"> + <ref name="number-hours-attlist"/> + <empty/> + </element> + </define> + <define name="number-hours-attlist"> + <optional> + <attribute name="number:style"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> + </define> + <define name="number-minutes"> + <element name="number:minutes"> + <ref name="number-minutes-attlist"/> + <empty/> + </element> + </define> + <define name="number-minutes-attlist"> + <optional> + <attribute name="number:style"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> + </define> + <define name="number-seconds"> + <element name="number:seconds"> + <ref name="number-seconds-attlist"/> + <empty/> + </element> + </define> + <define name="number-seconds-attlist"> + <interleave> + <optional> + <attribute name="number:style"> + <choice> + <value>short</value> + <value>long</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="number:decimal-places"> + <ref name="integer"/> + </attribute> + </optional> + </interleave> + </define> + <define name="number-am-pm"> + <element name="number:am-pm"> + <empty/> + </element> + </define> + <define name="number-boolean-style"> + <element name="number:boolean-style"> + <ref name="common-data-style-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <optional> + <ref name="number-boolean"/> + <optional> + <ref name="number-text"/> + </optional> + </optional> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> + </define> + <define name="number-boolean"> + <element name="number:boolean"> + <empty/> + </element> + </define> + <define name="number-text-style"> + <element name="number:text-style"> + <ref name="common-data-style-attlist"/> + <optional> + <ref name="style-text-properties"/> + </optional> + <optional> + <ref name="number-text"/> + </optional> + <zeroOrMore> + <ref name="number-text-content"/> + <optional> + <ref name="number-text"/> + </optional> + </zeroOrMore> + <zeroOrMore> + <ref name="style-map"/> + </zeroOrMore> + </element> + </define> + <define name="number-text"> + <element name="number:text"> + <text/> + </element> + </define> + <define name="number-text-content"> + <element name="number:text-content"> + <empty/> + </element> + </define> + <define name="common-data-style-attlist"> + <interleave> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="number:language"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="number:country"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="number:script"> + <ref name="scriptCode"/> + </attribute> + </optional> + <optional> + <attribute name="number:rfc-language-tag"> + <ref name="language"/> + </attribute> + </optional> + <optional> + <attribute name="number:title"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:volatile"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="number:transliteration-format"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="number:transliteration-language"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="number:transliteration-country"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="number:transliteration-style"> + <choice> + <value>short</value> + <value>medium</value> + <value>long</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="common-auto-reorder-attlist"> + <optional> + <attribute name="number:automatic-order"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="common-format-source-attlist"> + <optional> + <attribute name="number:format-source"> + <choice> + <value>fixed</value> + <value>language</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-decimal-places-attlist"> + <optional> + <attribute name="number:decimal-places"> + <ref name="integer"/> + </attribute> + </optional> + </define> + <define name="common-number-attlist"> + <interleave> + <optional> + <attribute name="number:min-integer-digits"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="number:grouping"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-calendar-attlist"> + <optional> + <attribute name="number:calendar"> + <choice> + <value>gregorian</value> + <value>gengou</value> + <value>ROC</value> + <value>hanja_yoil</value> + <value>hanja</value> + <value>hijri</value> + <value>jewish</value> + <value>buddhist</value> + <ref name="string"/> + </choice> + </attribute> + </optional> + </define> + <define name="style-style-content"> + <choice> + <group> + <attribute name="style:family"> + <value>text</value> + </attribute> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <value>paragraph</value> + </attribute> + <optional> + <ref name="style-paragraph-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <value>section</value> + </attribute> + <optional> + <ref name="style-section-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <value>ruby</value> + </attribute> + <optional> + <ref name="style-ruby-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <value>table</value> + </attribute> + <optional> + <ref name="style-table-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <value>table-column</value> + </attribute> + <optional> + <ref name="style-table-column-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <value>table-row</value> + </attribute> + <optional> + <ref name="style-table-row-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <value>table-cell</value> + </attribute> + <optional> + <ref name="style-table-cell-properties"/> + </optional> + <optional> + <ref name="style-paragraph-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <choice> + <value>graphic</value> + <value>presentation</value> + </choice> + </attribute> + <optional> + <ref name="style-graphic-properties"/> + </optional> + <optional> + <ref name="style-paragraph-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <value>drawing-page</value> + </attribute> + <optional> + <ref name="style-drawing-page-properties"/> + </optional> + </group> + <group> + <attribute name="style:family"> + <value>chart</value> + </attribute> + <optional> + <ref name="style-chart-properties"/> + </optional> + <optional> + <ref name="style-graphic-properties"/> + </optional> + <optional> + <ref name="style-paragraph-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </group> + </choice> + </define> + <define name="text-linenumbering-configuration"> + <element name="text:linenumbering-configuration"> + <ref name="text-linenumbering-configuration-attlist"/> + <optional> + <ref name="text-linenumbering-separator"/> + </optional> + </element> + </define> + <define name="text-linenumbering-configuration-attlist"> + <interleave> + <optional> + <attribute name="text:number-lines"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <ref name="common-num-format-attlist"/> + </optional> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:increment"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="text:number-position"> + <choice> + <value>left</value> + <value>right</value> + <value>inner</value> + <value>outer</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="text:offset"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="text:count-empty-lines"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:count-in-text-boxes"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:restart-on-page"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-linenumbering-separator"> + <element name="text:linenumbering-separator"> + <optional> + <attribute name="text:increment"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <text/> + </element> + </define> + <define name="text-notes-configuration"> + <element name="text:notes-configuration"> + <ref name="text-notes-configuration-content"/> + </element> + </define> + <define name="text-notes-configuration-content"> + <interleave> + <ref name="text-note-class"/> + <optional> + <attribute name="text:citation-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:citation-body-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:default-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:master-page-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="text:start-value"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <ref name="common-num-format-prefix-suffix-attlist"/> + <optional> + <ref name="common-num-format-attlist"/> + </optional> + <optional> + <attribute name="text:start-numbering-at"> + <choice> + <value>document</value> + <value>chapter</value> + <value>page</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="text:footnotes-position"> + <choice> + <value>text</value> + <value>page</value> + <value>section</value> + <value>document</value> + </choice> + </attribute> + </optional> + <optional> + <element name="text:note-continuation-notice-forward"> + <text/> + </element> + </optional> + <optional> + <element name="text:note-continuation-notice-backward"> + <text/> + </element> + </optional> + </interleave> + </define> + <define name="text-bibliography-configuration"> + <element name="text:bibliography-configuration"> + <ref name="text-bibliography-configuration-attlist"/> + <zeroOrMore> + <ref name="text-sort-key"/> + </zeroOrMore> + </element> + </define> + <define name="text-bibliography-configuration-attlist"> + <interleave> + <optional> + <attribute name="text:prefix"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:suffix"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:numbered-entries"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:sort-by-position"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="fo:language"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="fo:country"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="fo:script"> + <ref name="scriptCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:rfc-language-tag"> + <ref name="language"/> + </attribute> + </optional> + <optional> + <attribute name="text:sort-algorithm"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-sort-key"> + <element name="text:sort-key"> + <ref name="text-sort-key-attlist"/> + <empty/> + </element> + </define> + <define name="text-sort-key-attlist"> + <attribute name="text:key"> + <choice> + <value>address</value> + <value>annote</value> + <value>author</value> + <value>bibliography-type</value> + <value>booktitle</value> + <value>chapter</value> + <value>custom1</value> + <value>custom2</value> + <value>custom3</value> + <value>custom4</value> + <value>custom5</value> + <value>edition</value> + <value>editor</value> + <value>howpublished</value> + <value>identifier</value> + <value>institution</value> + <value>isbn</value> + <value>issn</value> + <value>journal</value> + <value>month</value> + <value>note</value> + <value>number</value> + <value>organizations</value> + <value>pages</value> + <value>publisher</value> + <value>report-type</value> + <value>school</value> + <value>series</value> + <value>title</value> + <value>url</value> + <value>volume</value> + <value>year</value> + </choice> + </attribute> + <optional> + <attribute name="text:sort-ascending"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="text-list-style"> + <element name="text:list-style"> + <ref name="text-list-style-attr"/> + <zeroOrMore> + <ref name="text-list-style-content"/> + </zeroOrMore> + </element> + </define> + <define name="text-list-style-attr"> + <interleave> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="text:consecutive-numbering"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-list-style-content"> + <choice> + <element name="text:list-level-style-number"> + <ref name="text-list-level-style-attr"/> + <ref name="text-list-level-style-number-attr"/> + <optional> + <ref name="style-list-level-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </element> + <element name="text:list-level-style-bullet"> + <ref name="text-list-level-style-attr"/> + <ref name="text-list-level-style-bullet-attr"/> + <optional> + <ref name="style-list-level-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </element> + <element name="text:list-level-style-image"> + <ref name="text-list-level-style-attr"/> + <ref name="text-list-level-style-image-attr"/> + <optional> + <ref name="style-list-level-properties"/> + </optional> + </element> + </choice> + </define> + <define name="text-list-level-style-number-attr"> + <interleave> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <ref name="common-num-format-attlist"/> + <ref name="common-num-format-prefix-suffix-attlist"/> + <optional> + <attribute name="text:display-levels"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="text:start-value"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-list-level-style-bullet-attr"> + <interleave> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <attribute name="text:bullet-char"> + <ref name="character"/> + </attribute> + <ref name="common-num-format-prefix-suffix-attlist"/> + <optional> + <attribute name="text:bullet-relative-size"> + <ref name="percent"/> + </attribute> + </optional> + </interleave> + </define> + <define name="text-list-level-style-image-attr"> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-binary-data"/> + </choice> + </define> + <define name="text-list-level-style-attr"> + <attribute name="text:level"> + <ref name="positiveInteger"/> + </attribute> + </define> + <define name="text-outline-style"> + <element name="text:outline-style"> + <ref name="text-outline-style-attr"/> + <oneOrMore> + <ref name="text-outline-level-style"/> + </oneOrMore> + </element> + </define> + <define name="text-outline-style-attr"> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> + </define> + <define name="text-outline-level-style"> + <element name="text:outline-level-style"> + <ref name="text-outline-level-style-attlist"/> + <optional> + <ref name="style-list-level-properties"/> + </optional> + <optional> + <ref name="style-text-properties"/> + </optional> + </element> + </define> + <define name="text-outline-level-style-attlist"> + <interleave> + <attribute name="text:level"> + <ref name="positiveInteger"/> + </attribute> + <optional> + <attribute name="text:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <ref name="common-num-format-attlist"/> + <ref name="common-num-format-prefix-suffix-attlist"/> + <optional> + <attribute name="text:display-levels"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="text:start-value"> + <ref name="positiveInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-graphic-properties"> + <element name="style:graphic-properties"> + <ref name="style-graphic-properties-content-strict"/> + </element> + </define> + <define name="style-graphic-properties-content-strict"> + <ref name="style-graphic-properties-attlist"/> + <ref name="style-graphic-fill-properties-attlist"/> + <ref name="style-graphic-properties-elements"/> + </define> + <define name="style-drawing-page-properties"> + <element name="style:drawing-page-properties"> + <ref name="style-drawing-page-properties-content-strict"/> + </element> + </define> + <define name="style-drawing-page-properties-content-strict"> + <ref name="style-graphic-fill-properties-attlist"/> + <ref name="style-drawing-page-properties-attlist"/> + <ref name="style-drawing-page-properties-elements"/> + </define> + <define name="draw-gradient"> + <element name="draw:gradient"> + <ref name="common-draw-gradient-attlist"/> + <ref name="draw-gradient-attlist"/> + <empty/> + </element> + </define> + <define name="common-draw-gradient-attlist"> + <interleave> + <optional> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> + </optional> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> + <attribute name="draw:style"> + <ref name="gradient-style"/> + </attribute> + <optional> + <attribute name="draw:cx"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:cy"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:angle"> + <ref name="angle"/> + </attribute> + </optional> + <optional> + <attribute name="draw:border"> + <ref name="percent"/> + </attribute> + </optional> + </interleave> + </define> + <define name="gradient-style"> + <choice> + <value>linear</value> + <value>axial</value> + <value>radial</value> + <value>ellipsoid</value> + <value>square</value> + <value>rectangular</value> + </choice> + </define> + <define name="draw-gradient-attlist"> + <interleave> + <optional> + <attribute name="draw:start-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="draw:start-intensity"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-intensity"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + </interleave> + </define> + <define name="svg-linearGradient"> + <element name="svg:linearGradient"> + <ref name="common-svg-gradient-attlist"/> + <optional> + <attribute name="svg:x1"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:y1"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:x2"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:y2"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <zeroOrMore> + <ref name="svg-stop"/> + </zeroOrMore> + </element> + </define> + <define name="svg-radialGradient"> + <element name="svg:radialGradient"> + <ref name="common-svg-gradient-attlist"/> + <optional> + <attribute name="svg:cx"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:cy"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:r"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:fx"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:fy"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <zeroOrMore> + <ref name="svg-stop"/> + </zeroOrMore> + </element> + </define> + <define name="svg-stop"> + <element name="svg:stop"> + <attribute name="svg:offset"> + <choice> + <ref name="double"/> + <ref name="percent"/> + </choice> + </attribute> + <optional> + <attribute name="svg:stop-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="svg:stop-opacity"> + <ref name="double"/> + </attribute> + </optional> + </element> + </define> + <define name="common-svg-gradient-attlist"> + <interleave> + <optional> + <attribute name="svg:gradientUnits"> + <value>objectBoundingBox</value> + </attribute> + </optional> + <optional> + <attribute name="svg:gradientTransform"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="svg:spreadMethod"> + <choice> + <value>pad</value> + <value>reflect</value> + <value>repeat</value> + </choice> + </attribute> + </optional> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-hatch"> + <element name="draw:hatch"> + <ref name="draw-hatch-attlist"/> + <empty/> + </element> + </define> + <define name="draw-hatch-attlist"> + <interleave> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> + <attribute name="draw:style"> + <choice> + <value>single</value> + <value>double</value> + <value>triple</value> + </choice> + </attribute> + <optional> + <attribute name="draw:color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="draw:distance"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:rotation"> + <ref name="angle"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-fill-image"> + <element name="draw:fill-image"> + <ref name="draw-fill-image-attlist"/> + <attribute name="xlink:type"> + <value>simple</value> + </attribute> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + <optional> + <attribute name="xlink:show"> + <value>embed</value> + </attribute> + </optional> + <optional> + <attribute name="xlink:actuate"> + <value>onLoad</value> + </attribute> + </optional> + <empty/> + </element> + </define> + <define name="draw-fill-image-attlist"> + <interleave> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="svg:width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-opacity"> + <element name="draw:opacity"> + <ref name="common-draw-gradient-attlist"/> + <ref name="draw-opacity-attlist"/> + <empty/> + </element> + </define> + <define name="draw-opacity-attlist"> + <optional> + <attribute name="draw:start"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + </define> + <define name="draw-marker"> + <element name="draw:marker"> + <ref name="draw-marker-attlist"/> + <ref name="common-draw-viewbox-attlist"/> + <ref name="common-draw-path-data-attlist"/> + <empty/> + </element> + </define> + <define name="draw-marker-attlist"> + <interleave> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> + </interleave> + </define> + <define name="draw-stroke-dash"> + <element name="draw:stroke-dash"> + <ref name="draw-stroke-dash-attlist"/> + <empty/> + </element> + </define> + <define name="draw-stroke-dash-attlist"> + <interleave> + <attribute name="draw:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="draw:display-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:style"> + <choice> + <value>rect</value> + <value>round</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:dots1"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="draw:dots1-length"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:dots2"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="draw:dots2-length"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:distance"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="style-presentation-page-layout"> + <element name="style:presentation-page-layout"> + <attribute name="style:name"> + <ref name="styleName"/> + </attribute> + <optional> + <attribute name="style:display-name"> + <ref name="string"/> + </attribute> + </optional> + <zeroOrMore> + <ref name="presentation-placeholder"/> + </zeroOrMore> + </element> + </define> + <define name="presentation-placeholder"> + <element name="presentation:placeholder"> + <attribute name="presentation:object"> + <ref name="presentation-classes"/> + </attribute> + <attribute name="svg:x"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + <attribute name="svg:y"> + <choice> + <ref name="coordinate"/> + <ref name="percent"/> + </choice> + </attribute> + <attribute name="svg:width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + <attribute name="svg:height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + <empty/> + </element> + </define> + <define name="style-page-layout-properties"> + <element name="style:page-layout-properties"> + <ref name="style-page-layout-properties-content-strict"/> + </element> + </define> + <define name="style-page-layout-properties-content-strict"> + <ref name="style-page-layout-properties-attlist"/> + <ref name="style-page-layout-properties-elements"/> + </define> + <define name="style-page-layout-properties-attlist"> + <interleave> + <optional> + <attribute name="fo:page-width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="fo:page-height"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <ref name="common-num-format-attlist"/> + </optional> + <ref name="common-num-format-prefix-suffix-attlist"/> + <optional> + <attribute name="style:paper-tray-name"> + <choice> + <value>default</value> + <ref name="string"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:print-orientation"> + <choice> + <value>portrait</value> + <value>landscape</value> + </choice> + </attribute> + </optional> + <ref name="common-horizontal-margin-attlist"/> + <ref name="common-vertical-margin-attlist"/> + <ref name="common-margin-attlist"/> + <ref name="common-border-attlist"/> + <ref name="common-border-line-width-attlist"/> + <ref name="common-padding-attlist"/> + <ref name="common-shadow-attlist"/> + <ref name="common-background-color-attlist"/> + <optional> + <attribute name="style:register-truth-ref-style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="style:print"> + <list> + <zeroOrMore> + <choice> + <value>headers</value> + <value>grid</value> + <value>annotations</value> + <value>objects</value> + <value>charts</value> + <value>drawings</value> + <value>formulas</value> + <value>zero-values</value> + </choice> + </zeroOrMore> + </list> + </attribute> + </optional> + <optional> + <attribute name="style:print-page-order"> + <choice> + <value>ttb</value> + <value>ltr</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:first-page-number"> + <choice> + <ref name="positiveInteger"/> + <value>continue</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:scale-to"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="style:scale-to-pages"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="style:table-centering"> + <choice> + <value>horizontal</value> + <value>vertical</value> + <value>both</value> + <value>none</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:footnote-max-height"> + <ref name="length"/> + </attribute> + </optional> + <ref name="common-writing-mode-attlist"/> + <optional> + <attribute name="style:layout-grid-mode"> + <choice> + <value>none</value> + <value>line</value> + <value>both</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-standard-mode"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-base-height"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-ruby-height"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-lines"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-base-width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-ruby-below"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-print"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-display"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:layout-grid-snap-to"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-page-layout-properties-elements"> + <interleave> + <ref name="style-background-image"/> + <ref name="style-columns"/> + <ref name="style-footnote-sep"/> + </interleave> + </define> + <define name="style-footnote-sep"> + <optional> + <element name="style:footnote-sep"> + <ref name="style-footnote-sep-attlist"/> + <empty/> + </element> + </optional> + </define> + <define name="style-footnote-sep-attlist"> + <optional> + <attribute name="style:width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:rel-width"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="style:color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="style:line-style"> + <ref name="lineStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:adjustment"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:distance-before-sep"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:distance-after-sep"> + <ref name="length"/> + </attribute> + </optional> + </define> + <define name="style-header-footer-properties"> + <element name="style:header-footer-properties"> + <ref name="style-header-footer-properties-content-strict"/> + </element> + </define> + <define name="style-header-footer-properties-content-strict"> + <ref name="style-header-footer-properties-attlist"/> + <ref name="style-header-footer-properties-elements"/> + </define> + <define name="style-header-footer-properties-attlist"> + <interleave> + <optional> + <attribute name="svg:height"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="fo:min-height"> + <ref name="length"/> + </attribute> + </optional> + <ref name="common-horizontal-margin-attlist"/> + <ref name="common-vertical-margin-attlist"/> + <ref name="common-margin-attlist"/> + <ref name="common-border-attlist"/> + <ref name="common-border-line-width-attlist"/> + <ref name="common-padding-attlist"/> + <ref name="common-background-color-attlist"/> + <ref name="common-shadow-attlist"/> + <optional> + <attribute name="style:dynamic-spacing"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-header-footer-properties-elements"> + <ref name="style-background-image"/> + </define> + <define name="style-text-properties"> + <element name="style:text-properties"> + <ref name="style-text-properties-content-strict"/> + </element> + </define> + <define name="style-text-properties-content-strict"> + <ref name="style-text-properties-attlist"/> + <ref name="style-text-properties-elements"/> + </define> + <define name="style-text-properties-elements"> + <empty/> + </define> + <define name="style-text-properties-attlist"> + <interleave> + <optional> + <attribute name="fo:font-variant"> + <ref name="fontVariant"/> + </attribute> + </optional> + <optional> + <attribute name="fo:text-transform"> + <choice> + <value>none</value> + <value>lowercase</value> + <value>uppercase</value> + <value>capitalize</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="style:use-window-font-color"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-outline"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-line-through-type"> + <ref name="lineType"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-line-through-style"> + <ref name="lineStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-line-through-width"> + <ref name="lineWidth"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-line-through-color"> + <choice> + <value>font-color</value> + <ref name="color"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:text-line-through-text"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-line-through-text-style"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-position"> + <list> + <choice> + <ref name="percent"/> + <value>super</value> + <value>sub</value> + </choice> + <optional> + <ref name="percent"/> + </optional> + </list> + </attribute> + </optional> + <optional> + <attribute name="style:font-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-name-asian"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-name-complex"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:font-family"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-asian"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-complex"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-generic"> + <ref name="fontFamilyGeneric"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-generic-asian"> + <ref name="fontFamilyGeneric"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-family-generic-complex"> + <ref name="fontFamilyGeneric"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-style-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-style-name-asian"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-style-name-complex"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-pitch"> + <ref name="fontPitch"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-pitch-asian"> + <ref name="fontPitch"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-pitch-complex"> + <ref name="fontPitch"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-charset"> + <ref name="textEncoding"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-charset-asian"> + <ref name="textEncoding"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-charset-complex"> + <ref name="textEncoding"/> + </attribute> + </optional> + <optional> + <attribute name="fo:font-size"> + <choice> + <ref name="positiveLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:font-size-asian"> + <choice> + <ref name="positiveLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:font-size-complex"> + <choice> + <ref name="positiveLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:font-size-rel"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-size-rel-asian"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-size-rel-complex"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:script-type"> + <choice> + <value>latin</value> + <value>asian</value> + <value>complex</value> + <value>ignore</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:letter-spacing"> + <choice> + <ref name="length"/> + <value>normal</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:language"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:language-asian"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:language-complex"> + <ref name="languageCode"/> + </attribute> + </optional> + <optional> + <attribute name="fo:country"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:country-asian"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:country-complex"> + <ref name="countryCode"/> + </attribute> + </optional> + <optional> + <attribute name="fo:script"> + <ref name="scriptCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:script-asian"> + <ref name="scriptCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:script-complex"> + <ref name="scriptCode"/> + </attribute> + </optional> + <optional> + <attribute name="style:rfc-language-tag"> + <ref name="language"/> + </attribute> + </optional> + <optional> + <attribute name="style:rfc-language-tag-asian"> + <ref name="language"/> + </attribute> + </optional> + <optional> + <attribute name="style:rfc-language-tag-complex"> + <ref name="language"/> + </attribute> + </optional> + <optional> + <attribute name="fo:font-style"> + <ref name="fontStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-style-asian"> + <ref name="fontStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-style-complex"> + <ref name="fontStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-relief"> + <choice> + <value>none</value> + <value>embossed</value> + <value>engraved</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:text-shadow"> + <ref name="shadowType"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-underline-type"> + <ref name="lineType"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-underline-style"> + <ref name="lineStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-underline-width"> + <ref name="lineWidth"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-underline-color"> + <choice> + <value>font-color</value> + <ref name="color"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:text-overline-type"> + <ref name="lineType"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-overline-style"> + <ref name="lineStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-overline-width"> + <ref name="lineWidth"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-overline-color"> + <choice> + <value>font-color</value> + <ref name="color"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:text-overline-mode"> + <ref name="lineMode"/> + </attribute> + </optional> + <optional> + <attribute name="fo:font-weight"> + <ref name="fontWeight"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-weight-asian"> + <ref name="fontWeight"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-weight-complex"> + <ref name="fontWeight"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-underline-mode"> + <ref name="lineMode"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-line-through-mode"> + <ref name="lineMode"/> + </attribute> + </optional> + <optional> + <attribute name="style:letter-kerning"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-blinking"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-background-color-attlist"/> + <optional> + <attribute name="style:text-combine"> + <choice> + <value>none</value> + <value>letters</value> + <value>lines</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:text-combine-start-char"> + <ref name="character"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-combine-end-char"> + <ref name="character"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-emphasize"> + <choice> + <value>none</value> + <list> + <choice> + <value>none</value> + <value>accent</value> + <value>dot</value> + <value>circle</value> + <value>disc</value> + </choice> + <choice> + <value>above</value> + <value>below</value> + </choice> + </list> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:text-scale"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-rotation-angle"> + <ref name="angle"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-rotation-scale"> + <choice> + <value>fixed</value> + <value>line-height</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:hyphenate"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="fo:hyphenation-remain-char-count"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="fo:hyphenation-push-char-count"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <choice> + <attribute name="text:display"> + <value>true</value> + </attribute> + <attribute name="text:display"> + <value>none</value> + </attribute> + <group> + <attribute name="text:display"> + <value>condition</value> + </attribute> + <attribute name="text:condition"> + <value>none</value> + </attribute> + </group> + <empty/> + </choice> + </interleave> + </define> + <define name="fontVariant"> + <choice> + <value>normal</value> + <value>small-caps</value> + </choice> + </define> + <define name="fontFamilyGeneric"> + <choice> + <value>roman</value> + <value>swiss</value> + <value>modern</value> + <value>decorative</value> + <value>script</value> + <value>system</value> + </choice> + </define> + <define name="fontPitch"> + <choice> + <value>fixed</value> + <value>variable</value> + </choice> + </define> + <define name="textEncoding"> + <data type="string"> + <param name="pattern">[A-Za-z][A-Za-z0-9._\-]*</param> + </data> + </define> + <define name="fontStyle"> + <choice> + <value>normal</value> + <value>italic</value> + <value>oblique</value> + </choice> + </define> + <define name="shadowType"> + <choice> + <value>none</value> + <ref name="string"/> + </choice> + </define> + <define name="lineType"> + <choice> + <value>none</value> + <value>single</value> + <value>double</value> + </choice> + </define> + <define name="lineStyle"> + <choice> + <value>none</value> + <value>solid</value> + <value>dotted</value> + <value>dash</value> + <value>long-dash</value> + <value>dot-dash</value> + <value>dot-dot-dash</value> + <value>wave</value> + </choice> + </define> + <define name="lineWidth"> + <choice> + <value>auto</value> + <value>normal</value> + <value>bold</value> + <value>thin</value> + <value>medium</value> + <value>thick</value> + <ref name="positiveInteger"/> + <ref name="percent"/> + <ref name="positiveLength"/> + </choice> + </define> + <define name="fontWeight"> + <choice> + <value>normal</value> + <value>bold</value> + <value>100</value> + <value>200</value> + <value>300</value> + <value>400</value> + <value>500</value> + <value>600</value> + <value>700</value> + <value>800</value> + <value>900</value> + </choice> + </define> + <define name="lineMode"> + <choice> + <value>continuous</value> + <value>skip-white-space</value> + </choice> + </define> + <define name="style-paragraph-properties"> + <element name="style:paragraph-properties"> + <ref name="style-paragraph-properties-content-strict"/> + </element> + </define> + <define name="style-paragraph-properties-content-strict"> + <ref name="style-paragraph-properties-attlist"/> + <ref name="style-paragraph-properties-elements"/> + </define> + <define name="style-paragraph-properties-attlist"> + <interleave> + <optional> + <attribute name="fo:line-height"> + <choice> + <value>normal</value> + <ref name="nonNegativeLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:line-height-at-least"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:line-spacing"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-independent-line-spacing"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-text-align"/> + <optional> + <attribute name="fo:text-align-last"> + <choice> + <value>start</value> + <value>center</value> + <value>justify</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:justify-single-word"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="fo:keep-together"> + <choice> + <value>auto</value> + <value>always</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:widows"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="fo:orphans"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="style:tab-stop-distance"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:hyphenation-keep"> + <choice> + <value>auto</value> + <value>page</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:hyphenation-ladder-count"> + <choice> + <value>no-limit</value> + <ref name="positiveInteger"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:register-true"> + <ref name="boolean"/> + </attribute> + </optional> + + <ref name="common-horizontal-margin-attlist"/> + <optional> + <attribute name="fo:text-indent"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:auto-text-indent"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-vertical-margin-attlist"/> + <ref name="common-margin-attlist"/> + <ref name="common-break-attlist"/> + <ref name="common-background-color-attlist"/> + <ref name="common-border-attlist"/> + <ref name="common-border-line-width-attlist"/> + <optional> + <attribute name="style:join-border"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-padding-attlist"/> + <ref name="common-shadow-attlist"/> + <ref name="common-keep-with-next-attlist"/> + <optional> + <attribute name="text:number-lines"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:line-number"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="style:text-autospace"> + <choice> + <value>none</value> + <value>ideograph-alpha</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:punctuation-wrap"> + <choice> + <value>simple</value> + <value>hanging</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:line-break"> + <choice> + <value>normal</value> + <value>strict</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:vertical-align"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + <value>auto</value> + <value>baseline</value> + </choice> + </attribute> + </optional> + <ref name="common-writing-mode-attlist"/> + <optional> + <attribute name="style:writing-mode-automatic"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:snap-to-layout-grid"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-page-number-attlist"/> + <ref name="common-background-transparency-attlist"/> + </interleave> + </define> + <define name="common-text-align"> + <optional> + <attribute name="fo:text-align"> + <choice> + <value>start</value> + <value>end</value> + <value>left</value> + <value>right</value> + <value>center</value> + <value>justify</value> + </choice> + </attribute> + </optional> + </define> + <define name="style-paragraph-properties-elements"> + <interleave> + <ref name="style-tab-stops"/> + <ref name="style-drop-cap"/> + <ref name="style-background-image"/> + </interleave> + </define> + <define name="style-tab-stops"> + <optional> + <element name="style:tab-stops"> + <zeroOrMore> + <ref name="style-tab-stop"/> + </zeroOrMore> + </element> + </optional> + </define> + <define name="style-tab-stop"> + <element name="style:tab-stop"> + <ref name="style-tab-stop-attlist"/> + <empty/> + </element> + </define> + <define name="style-tab-stop-attlist"> + <interleave> + <attribute name="style:position"> + <ref name="length"/> + </attribute> + <choice> + <optional> + <attribute name="style:type"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + </choice> + </attribute> + </optional> + <group> + <attribute name="style:type"> + <value>char</value> + </attribute> + <ref name="style-tab-stop-char-attlist"/> + </group> + </choice> + <optional> + <attribute name="style:leader-type"> + <ref name="lineType"/> + </attribute> + </optional> + <optional> + <attribute name="style:leader-style"> + <ref name="lineStyle"/> + </attribute> + </optional> + <optional> + <attribute name="style:leader-width"> + <ref name="lineWidth"/> + </attribute> + </optional> + <optional> + <attribute name="style:leader-color"> + <choice> + <value>font-color</value> + <ref name="color"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:leader-text"> + <ref name="character"/> + </attribute> + </optional> + <optional> + <attribute name="style:leader-text-style"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-tab-stop-char-attlist"> + <attribute name="style:char"> + <ref name="character"/> + </attribute> + </define> + <define name="style-drop-cap"> + <optional> + <element name="style:drop-cap"> + <ref name="style-drop-cap-attlist"/> + <empty/> + </element> + </optional> + </define> + <define name="style-drop-cap-attlist"> + <interleave> + <optional> + <attribute name="style:length"> + <choice> + <value>word</value> + <ref name="positiveInteger"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:lines"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="style:distance"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="style:style-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-horizontal-margin-attlist"> + <optional> + <attribute name="fo:margin-left"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:margin-right"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + </define> + <define name="common-vertical-margin-attlist"> + <optional> + <attribute name="fo:margin-top"> + <choice> + <ref name="nonNegativeLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:margin-bottom"> + <choice> + <ref name="nonNegativeLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + </define> + <define name="common-margin-attlist"> + <optional> + <attribute name="fo:margin"> + <choice> + <ref name="nonNegativeLength"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + </define> + <define name="common-break-attlist"> + <optional> + <attribute name="fo:break-before"> + <choice> + <value>auto</value> + <value>column</value> + <value>page</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:break-after"> + <choice> + <value>auto</value> + <value>column</value> + <value>page</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-background-color-attlist"> + <optional> + <attribute name="fo:background-color"> + <choice> + <value>transparent</value> + <ref name="color"/> + </choice> + </attribute> + </optional> + </define> + <define name="style-background-image"> + <optional> + <element name="style:background-image"> + <ref name="style-background-image-attlist"/> + <choice> + <ref name="common-draw-data-attlist"/> + <ref name="office-binary-data"/> + <empty/> + </choice> + </element> + </optional> + </define> + <define name="style-background-image-attlist"> + <interleave> + <optional> + <attribute name="style:repeat"> + <choice> + <value>no-repeat</value> + <value>repeat</value> + <value>stretch</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:position"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>top</value> + <value>bottom</value> + <list> + <ref name="horiBackPos"/> + <ref name="vertBackPos"/> + </list> + <list> + <ref name="vertBackPos"/> + <ref name="horiBackPos"/> + </list> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:filter-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="draw:opacity"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + </interleave> + </define> + <define name="horiBackPos"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + </choice> + </define> + <define name="vertBackPos"> + <choice> + <value>top</value> + <value>center</value> + <value>bottom</value> + </choice> + </define> + <define name="common-border-attlist"> + <optional> + <attribute name="fo:border"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:border-top"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:border-bottom"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:border-left"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:border-right"> + <ref name="string"/> + </attribute> + </optional> + </define> + <define name="common-border-line-width-attlist"> + <optional> + <attribute name="style:border-line-width"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:border-line-width-top"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:border-line-width-bottom"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:border-line-width-left"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:border-line-width-right"> + <ref name="borderWidths"/> + </attribute> + </optional> + </define> + <define name="borderWidths"> + <list> + <ref name="positiveLength"/> + <ref name="positiveLength"/> + <ref name="positiveLength"/> + </list> + </define> + <define name="common-padding-attlist"> + <optional> + <attribute name="fo:padding"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:padding-top"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:padding-bottom"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:padding-left"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:padding-right"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + </define> + <define name="common-shadow-attlist"> + <optional> + <attribute name="style:shadow"> + <ref name="shadowType"/> + </attribute> + </optional> + </define> + <define name="common-keep-with-next-attlist"> + <optional> + <attribute name="fo:keep-with-next"> + <choice> + <value>auto</value> + <value>always</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-writing-mode-attlist"> + <optional> + <attribute name="style:writing-mode"> + <choice> + <value>lr-tb</value> + <value>rl-tb</value> + <value>tb-rl</value> + <value>tb-lr</value> + <value>lr</value> + <value>rl</value> + <value>tb</value> + <value>page</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-page-number-attlist"> + <optional> + <attribute name="style:page-number"> + <choice> + <ref name="positiveInteger"/> + <value>auto</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-background-transparency-attlist"> + <optional> + <attribute name="style:background-transparency"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + </define> + <define name="style-ruby-properties"> + <element name="style:ruby-properties"> + <ref name="style-ruby-properties-content-strict"/> + </element> + </define> + <define name="style-ruby-properties-content-strict"> + <ref name="style-ruby-properties-attlist"/> + <ref name="style-ruby-properties-elements"/> + </define> + <define name="style-ruby-properties-elements"> + <empty/> + </define> + <define name="style-ruby-properties-attlist"> + <interleave> + <optional> + <attribute name="style:ruby-position"> + <choice> + <value>above</value> + <value>below</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:ruby-align"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>distribute-letter</value> + <value>distribute-space</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="style-section-properties"> + <element name="style:section-properties"> + <ref name="style-section-properties-content-strict"/> + </element> + </define> + <define name="style-section-properties-content-strict"> + <ref name="style-section-properties-attlist"/> + <ref name="style-section-properties-elements"/> + </define> + <define name="style-section-properties-attlist"> + <interleave> + <ref name="common-background-color-attlist"/> + <ref name="common-horizontal-margin-attlist"/> + <optional> + <attribute name="style:protect"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-editable-attlist"/> + <optional> + <attribute name="text:dont-balance-text-columns"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-writing-mode-attlist"/> + </interleave> + </define> + <define name="style-section-properties-elements"> + <interleave> + <ref name="style-background-image"/> + <ref name="style-columns"/> + <zeroOrMore> + <ref name="text-notes-configuration"/> + </zeroOrMore> + </interleave> + </define> + <define name="style-columns"> + <optional> + <element name="style:columns"> + <ref name="style-columns-attlist"/> + <optional> + <ref name="style-column-sep"/> + </optional> + <zeroOrMore> + <ref name="style-column"/> + </zeroOrMore> + </element> + </optional> + </define> + <define name="style-columns-attlist"> + <interleave> + <attribute name="fo:column-count"> + <ref name="positiveInteger"/> + </attribute> + <optional> + <attribute name="fo:column-gap"> + <ref name="length"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-column"> + <element name="style:column"> + <ref name="style-column-attlist"/> + </element> + </define> + <define name="style-column-attlist"> + <interleave> + <attribute name="style:rel-width"> + <ref name="relativeLength"/> + </attribute> + <optional> + <attribute name="fo:start-indent"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="fo:end-indent"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="fo:space-before"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="fo:space-after"> + <ref name="length"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-column-sep"> + <element name="style:column-sep"> + <ref name="style-column-sep-attlist"/> + </element> + </define> + <define name="style-column-sep-attlist"> + <interleave> + <optional> + <attribute name="style:style"> + <choice> + <value>none</value> + <value>solid</value> + <value>dotted</value> + <value>dashed</value> + <value>dot-dashed</value> + </choice> + </attribute> + </optional> + <attribute name="style:width"> + <ref name="length"/> + </attribute> + <optional> + <attribute name="style:height"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="style:vertical-align"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:color"> + <ref name="color"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-table-properties"> + <element name="style:table-properties"> + <ref name="style-table-properties-content-strict"/> + </element> + </define> + <define name="style-table-properties-content-strict"> + <ref name="style-table-properties-attlist"/> + <ref name="style-table-properties-elements"/> + </define> + <define name="style-table-properties-attlist"> + <interleave> + <optional> + <attribute name="style:width"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:rel-width"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="table:align"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>margins</value> + </choice> + </attribute> + </optional> + <ref name="common-horizontal-margin-attlist"/> + <ref name="common-vertical-margin-attlist"/> + <ref name="common-margin-attlist"/> + <ref name="common-page-number-attlist"/> + <ref name="common-break-attlist"/> + <ref name="common-background-color-attlist"/> + <ref name="common-shadow-attlist"/> + <ref name="common-keep-with-next-attlist"/> + <optional> + <attribute name="style:may-break-between-rows"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="table:border-model"> + <choice> + <value>collapsing</value> + <value>separating</value> + </choice> + </attribute> + </optional> + <ref name="common-writing-mode-attlist"/> + <optional> + <attribute name="table:display"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-table-properties-elements"> + <ref name="style-background-image"/> + </define> + <define name="style-table-column-properties"> + <element name="style:table-column-properties"> + <ref name="style-table-column-properties-content-strict"/> + </element> + </define> + <define name="style-table-column-properties-content-strict"> + <ref name="style-table-column-properties-attlist"/> + <ref name="style-table-column-properties-elements"/> + </define> + <define name="style-table-column-properties-elements"> + <empty/> + </define> + <define name="style-table-column-properties-attlist"> + <interleave> + <optional> + <attribute name="style:column-width"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:rel-column-width"> + <ref name="relativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:use-optimal-column-width"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-break-attlist"/> + </interleave> + </define> + <define name="style-table-row-properties"> + <element name="style:table-row-properties"> + <ref name="style-table-row-properties-content-strict"/> + </element> + </define> + <define name="style-table-row-properties-content-strict"> + <ref name="style-table-row-properties-attlist"/> + <ref name="style-table-row-properties-elements"/> + </define> + <define name="style-table-row-properties-attlist"> + <interleave> + <optional> + <attribute name="style:row-height"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:min-row-height"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:use-optimal-row-height"> + <ref name="boolean"/> + </attribute> + </optional> + <ref name="common-background-color-attlist"/> + <ref name="common-break-attlist"/> + <optional> + <attribute name="fo:keep-together"> + <choice> + <value>auto</value> + <value>always</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="style-table-row-properties-elements"> + <ref name="style-background-image"/> + </define> + <define name="style-table-cell-properties"> + <element name="style:table-cell-properties"> + <ref name="style-table-cell-properties-content-strict"/> + </element> + </define> + <define name="style-table-cell-properties-content-strict"> + <ref name="style-table-cell-properties-attlist"/> + <ref name="style-table-cell-properties-elements"/> + </define> + <define name="style-table-cell-properties-attlist"> + <interleave> + <optional> + <attribute name="style:vertical-align"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + <value>automatic</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:text-align-source"> + <choice> + <value>fix</value> + <value>value-type</value> + </choice> + </attribute> + </optional> + <ref name="common-style-direction-attlist"/> + <optional> + <attribute name="style:glyph-orientation-vertical"> + <choice> + <value>auto</value> + <value>0</value> + <value>0deg</value> + <value>0rad</value> + <value>0grad</value> + </choice> + </attribute> + </optional> + <ref name="common-writing-mode-attlist"/> + <ref name="common-shadow-attlist"/> + <ref name="common-background-color-attlist"/> + <ref name="common-border-attlist"/> + <optional> + <attribute name="style:diagonal-tl-br"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:diagonal-tl-br-widths"> + <ref name="borderWidths"/> + </attribute> + </optional> + <optional> + <attribute name="style:diagonal-bl-tr"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="style:diagonal-bl-tr-widths"> + <ref name="borderWidths"/> + </attribute> + </optional> + <ref name="common-border-line-width-attlist"/> + <ref name="common-padding-attlist"/> + <optional> + <attribute name="fo:wrap-option"> + <choice> + <value>no-wrap</value> + <value>wrap</value> + </choice> + </attribute> + </optional> + <ref name="common-rotation-angle-attlist"/> + <optional> + <attribute name="style:rotation-align"> + <choice> + <value>none</value> + <value>bottom</value> + <value>top</value> + <value>center</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:cell-protect"> + <choice> + <value>none</value> + <value>hidden-and-protected</value> + <list> + <oneOrMore> + <choice> + <value>protected</value> + <value>formula-hidden</value> + </choice> + </oneOrMore> + </list> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:print-content"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:decimal-places"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="style:repeat-content"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:shrink-to-fit"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="common-style-direction-attlist"> + <optional> + <attribute name="style:direction"> + <choice> + <value>ltr</value> + <value>ttb</value> + </choice> + </attribute> + </optional> + </define> + <define name="style-table-cell-properties-elements"> + <ref name="style-background-image"/> + </define> + <define name="common-rotation-angle-attlist"> + <optional> + <attribute name="style:rotation-angle"> + <ref name="angle"/> + </attribute> + </optional> + </define> + <define name="style-list-level-properties"> + <element name="style:list-level-properties"> + <ref name="style-list-level-properties-content-strict"/> + </element> + </define> + <define name="style-list-level-properties-content-strict"> + <ref name="style-list-level-properties-attlist"/> + <ref name="style-list-level-properties-elements"/> + </define> + <define name="style-list-level-properties-attlist"> + <interleave> + <ref name="common-text-align"/> + <optional> + <attribute name="text:space-before"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="text:min-label-width"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="text:min-label-distance"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:font-name"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="fo:width"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="fo:height"> + <ref name="positiveLength"/> + </attribute> + </optional> + <ref name="common-vertical-rel-attlist"/> + <ref name="common-vertical-pos-attlist"/> + <optional> + <attribute name="text:list-level-position-and-space-mode"> + <choice> + <value>label-width-and-position</value> + <value>label-alignment</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="style-list-level-properties-elements"> + <ref name="style-list-level-label-alignment"/> + </define> + <define name="style-list-level-label-alignment"> + <optional> + <element name="style:list-level-label-alignment"> + <ref name="style-list-level-label-alignment-attlist"/> + <empty/> + </element> + </optional> + </define> + <define name="style-list-level-label-alignment-attlist"> + <interleave> + <attribute name="text:label-followed-by"> + <choice> + <value>listtab</value> + <value>space</value> + <value>nothing</value> + </choice> + </attribute> + <optional> + <attribute name="text:list-tab-stop-position"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="fo:text-indent"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="fo:margin-left"> + <ref name="length"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-graphic-properties-attlist"> + <interleave> + <optional> + <attribute name="draw:stroke"> + <choice> + <value>none</value> + <value>dash</value> + <value>solid</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:stroke-dash"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="draw:stroke-dash-names"> + <ref name="styleNameRefs"/> + </attribute> + </optional> + <optional> + <attribute name="svg:stroke-width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="svg:stroke-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="draw:marker-start"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="draw:marker-end"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="draw:marker-start-width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:marker-end-width"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:marker-start-center"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:marker-end-center"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="svg:stroke-opacity"> + <choice> + <data type="double"> + <param name="minInclusive">0</param> + <param name="maxInclusive">1</param> + </data> + <ref name="zeroToHundredPercent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:stroke-linejoin"> + <choice> + <value>miter</value> + <value>round</value> + <value>bevel</value> + <value>middle</value> + <value>none</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:stroke-linecap"> + <choice> + <value>butt</value> + <value>square</value> + <value>round</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:symbol-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="text:animation"> + <choice> + <value>none</value> + <value>scroll</value> + <value>alternate</value> + <value>slide</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="text:animation-direction"> + <choice> + <value>left</value> + <value>right</value> + <value>up</value> + <value>down</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="text:animation-start-inside"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:animation-stop-inside"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:animation-repeat"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="text:animation-delay"> + <ref name="duration"/> + </attribute> + </optional> + <optional> + <attribute name="text:animation-steps"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:auto-grow-width"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:auto-grow-height"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fit-to-size"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fit-to-contour"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:textarea-vertical-align"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + <value>justify</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:textarea-horizontal-align"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>justify</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:wrap-option"> + <choice> + <value>no-wrap</value> + <value>wrap</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:shrink-to-fit"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:color-mode"> + <choice> + <value>greyscale</value> + <value>mono</value> + <value>watermark</value> + <value>standard</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:color-inversion"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:luminance"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:contrast"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:gamma"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:red"> + <ref name="signedZeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:green"> + <ref name="signedZeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:blue"> + <ref name="signedZeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:image-opacity"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:shadow"> + <choice> + <value>visible</value> + <value>hidden</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:shadow-offset-x"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:shadow-offset-y"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:shadow-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="draw:shadow-opacity"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:start-line-spacing-horizontal"> + <ref name="distance"/> + </attribute> + </optional> + <optional> + <attribute name="draw:start-line-spacing-vertical"> + <ref name="distance"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-line-spacing-horizontal"> + <ref name="distance"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-line-spacing-vertical"> + <ref name="distance"/> + </attribute> + </optional> + <optional> + <attribute name="draw:line-distance"> + <ref name="distance"/> + </attribute> + </optional> + <optional> + <attribute name="draw:guide-overhang"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:guide-distance"> + <ref name="distance"/> + </attribute> + </optional> + <optional> + <attribute name="draw:start-guide"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:end-guide"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:placing"> + <choice> + <value>below</value> + <value>above</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:parallel"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:measure-align"> + <choice> + <value>automatic</value> + <value>left-outside</value> + <value>inside</value> + <value>right-outside</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:measure-vertical-align"> + <choice> + <value>automatic</value> + <value>above</value> + <value>below</value> + <value>center</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:unit"> + <choice> + <value>automatic</value> + <value>mm</value> + <value>cm</value> + <value>m</value> + <value>km</value> + <value>pt</value> + <value>pc</value> + <value>inch</value> + <value>ft</value> + <value>mi</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:show-unit"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:decimal-places"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="draw:caption-type"> + <choice> + <value>straight-line</value> + <value>angled-line</value> + <value>angled-connector-line</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:caption-angle-type"> + <choice> + <value>fixed</value> + <value>free</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:caption-angle"> + <ref name="angle"/> + </attribute> + </optional> + <optional> + <attribute name="draw:caption-gap"> + <ref name="distance"/> + </attribute> + </optional> + <optional> + <attribute name="draw:caption-escape-direction"> + <choice> + <value>horizontal</value> + <value>vertical</value> + <value>auto</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:caption-escape"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:caption-line-length"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="draw:caption-fit-line-length"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:horizontal-segments"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:vertical-segments"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:edge-rounding"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:edge-rounding-mode"> + <choice> + <value>correct</value> + <value>attractive</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:back-scale"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:depth"> + <ref name="length"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:backface-culling"> + <choice> + <value>enabled</value> + <value>disabled</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:end-angle"> + <ref name="angle"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:close-front"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:close-back"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:lighting-mode"> + <choice> + <value>standard</value> + <value>double-sided</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:normals-kind"> + <choice> + <value>object</value> + <value>flat</value> + <value>sphere</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:normals-direction"> + <choice> + <value>normal</value> + <value>inverse</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:texture-generation-mode-x"> + <choice> + <value>object</value> + <value>parallel</value> + <value>sphere</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:texture-generation-mode-y"> + <choice> + <value>object</value> + <value>parallel</value> + <value>sphere</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:texture-kind"> + <choice> + <value>luminance</value> + <value>intensity</value> + <value>color</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:texture-filter"> + <choice> + <value>enabled</value> + <value>disabled</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:texture-mode"> + <choice> + <value>replace</value> + <value>modulate</value> + <value>blend</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="dr3d:ambient-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:emissive-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:specular-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:diffuse-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:shininess"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="dr3d:shadow"> + <choice> + <value>visible</value> + <value>hidden</value> + </choice> + </attribute> + </optional> + <ref name="common-draw-rel-size-attlist"/> + <optional> + <attribute name="fo:min-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:min-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:max-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:max-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <ref name="common-horizontal-margin-attlist"/> + <ref name="common-vertical-margin-attlist"/> + <ref name="common-margin-attlist"/> + <optional> + <attribute name="style:print-content"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:protect"> + <choice> + <value>none</value> + <list> + <oneOrMore> + <choice> + <value>content</value> + <value>position</value> + <value>size</value> + </choice> + </oneOrMore> + </list> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:horizontal-pos"> + <choice> + <value>left</value> + <value>center</value> + <value>right</value> + <value>from-left</value> + <value>inside</value> + <value>outside</value> + <value>from-inside</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:x"> + <ref name="coordinate"/> + </attribute> + </optional> + <optional> + <attribute name="style:horizontal-rel"> + <choice> + <value>page</value> + <value>page-content</value> + <value>page-start-margin</value> + <value>page-end-margin</value> + <value>frame</value> + <value>frame-content</value> + <value>frame-start-margin</value> + <value>frame-end-margin</value> + <value>paragraph</value> + <value>paragraph-content</value> + <value>paragraph-start-margin</value> + <value>paragraph-end-margin</value> + <value>char</value> + </choice> + </attribute> + </optional> + <ref name="common-vertical-pos-attlist"/> + <ref name="common-vertical-rel-attlist"/> + <ref name="common-text-anchor-attlist"/> + <ref name="common-border-attlist"/> + <ref name="common-border-line-width-attlist"/> + <ref name="common-padding-attlist"/> + <ref name="common-shadow-attlist"/> + <ref name="common-background-color-attlist"/> + <ref name="common-background-transparency-attlist"/> + <ref name="common-editable-attlist"/> + <optional> + <attribute name="style:wrap"> + <choice> + <value>none</value> + <value>left</value> + <value>right</value> + <value>parallel</value> + <value>dynamic</value> + <value>run-through</value> + <value>biggest</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:wrap-dynamic-threshold"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="style:number-wrapped-paragraphs"> + <choice> + <value>no-limit</value> + <ref name="positiveInteger"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:wrap-contour"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:wrap-contour-mode"> + <choice> + <value>full</value> + <value>outside</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:run-through"> + <choice> + <value>foreground</value> + <value>background</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:flow-with-text"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="style:overflow-behavior"> + <choice> + <value>clip</value> + <value>auto-create-new-frame</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="style:mirror"> + <choice> + <value>none</value> + <value>vertical</value> + <ref name="horizontal-mirror"/> + <list> + <value>vertical</value> + <ref name="horizontal-mirror"/> + </list> + <list> + <ref name="horizontal-mirror"/> + <value>vertical</value> + </list> + </choice> + </attribute> + </optional> + <optional> + <attribute name="fo:clip"> + <choice> + <value>auto</value> + <ref name="clipShape"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:wrap-influence-on-position"> + <choice> + <value>iterative</value> + <value>once-concurrent</value> + <value>once-successive</value> + </choice> + </attribute> + </optional> + <ref name="common-writing-mode-attlist"/> + <optional> + <attribute name="draw:frame-display-scrollbar"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:frame-display-border"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:frame-margin-horizontal"> + <ref name="nonNegativePixelLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:frame-margin-vertical"> + <ref name="nonNegativePixelLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:visible-area-left"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:visible-area-top"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:visible-area-width"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:visible-area-height"> + <ref name="positiveLength"/> + </attribute> + </optional> + <optional> + <attribute name="draw:draw-aspect"> + <choice> + <value>content</value> + <value>thumbnail</value> + <value>icon</value> + <value>print-view</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:ole-draw-aspect"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-graphic-fill-properties-attlist"> + <interleave> + <optional> + <attribute name="draw:fill"> + <choice> + <value>none</value> + <value>solid</value> + <value>bitmap</value> + <value>gradient</value> + <value>hatch</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="draw:secondary-fill-color"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-gradient-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="draw:gradient-step-count"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-hatch-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-hatch-solid"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-image-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="style:repeat"> + <choice> + <value>no-repeat</value> + <value>repeat</value> + <value>stretch</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-image-width"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-image-height"> + <choice> + <ref name="length"/> + <ref name="percent"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-image-ref-point-x"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-image-ref-point-y"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:fill-image-ref-point"> + <choice> + <value>top-left</value> + <value>top</value> + <value>top-right</value> + <value>left</value> + <value>center</value> + <value>right</value> + <value>bottom-left</value> + <value>bottom</value> + <value>bottom-right</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:tile-repeat-offset"> + <list> + <ref name="zeroToHundredPercent"/> + <choice> + <value>horizontal</value> + <value>vertical</value> + </choice> + </list> + </attribute> + </optional> + <optional> + <attribute name="draw:opacity"> + <ref name="zeroToHundredPercent"/> + </attribute> + </optional> + <optional> + <attribute name="draw:opacity-name"> + <ref name="styleNameRef"/> + </attribute> + </optional> + <optional> + <attribute name="svg:fill-rule"> + <choice> + <value>nonzero</value> + <value>evenodd</value> + </choice> + </attribute> + </optional> + </interleave> + </define> + <define name="style-graphic-properties-elements"> + <interleave> + <optional> + <ref name="text-list-style"/> + </optional> + <ref name="style-background-image"/> + <ref name="style-columns"/> + </interleave> + </define> + <define name="common-vertical-pos-attlist"> + <optional> + <attribute name="style:vertical-pos"> + <choice> + <value>top</value> + <value>middle</value> + <value>bottom</value> + <value>from-top</value> + <value>below</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="svg:y"> + <ref name="coordinate"/> + </attribute> + </optional> + </define> + <define name="common-vertical-rel-attlist"> + <optional> + <attribute name="style:vertical-rel"> + <choice> + <value>page</value> + <value>page-content</value> + <value>frame</value> + <value>frame-content</value> + <value>paragraph</value> + <value>paragraph-content</value> + <value>char</value> + <value>line</value> + <value>baseline</value> + <value>text</value> + </choice> + </attribute> + </optional> + </define> + <define name="common-editable-attlist"> + <optional> + <attribute name="style:editable"> + <ref name="boolean"/> + </attribute> + </optional> + </define> + <define name="horizontal-mirror"> + <choice> + <value>horizontal</value> + <value>horizontal-on-odd</value> + <value>horizontal-on-even</value> + </choice> + </define> + <define name="clipShape"> + <data type="string"> + <param name="pattern">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}[ ]*\)</param> + </data> + </define> + <define name="nonNegativePixelLength"> + <data type="string"> + <param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)</param> + </data> + </define> + <define name="style-chart-properties"> + <element name="style:chart-properties"> + <ref name="style-chart-properties-content-strict"/> + </element> + </define> + <define name="style-chart-properties-content-strict"> + <ref name="style-chart-properties-attlist"/> + <ref name="style-chart-properties-elements"/> + </define> + <define name="style-chart-properties-elements"> + <empty/> + </define> + <define name="style-chart-properties-attlist"> + <interleave> + <optional> + <attribute name="chart:scale-text"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:three-dimensional"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:deep"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:right-angled-axes"> + <ref name="boolean"/> + </attribute> + </optional> + <choice> + <attribute name="chart:symbol-type"> + <value>none</value> + </attribute> + <attribute name="chart:symbol-type"> + <value>automatic</value> + </attribute> + <group> + <attribute name="chart:symbol-type"> + <value>named-symbol</value> + </attribute> + <attribute name="chart:symbol-name"> + <choice> + <value>square</value> + <value>diamond</value> + <value>arrow-down</value> + <value>arrow-up</value> + <value>arrow-right</value> + <value>arrow-left</value> + <value>bow-tie</value> + <value>hourglass</value> + <value>circle</value> + <value>star</value> + <value>x</value> + <value>plus</value> + <value>asterisk</value> + <value>horizontal-bar</value> + <value>vertical-bar</value> + </choice> + </attribute> + </group> + <group> + <attribute name="chart:symbol-type"> + <value>image</value> + </attribute> + <element name="chart:symbol-image"> + <attribute name="xlink:href"> + <ref name="anyIRI"/> + </attribute> + </element> + </group> + <empty/> + </choice> + <optional> + <attribute name="chart:symbol-width"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="chart:symbol-height"> + <ref name="nonNegativeLength"/> + </attribute> + </optional> + <optional> + <attribute name="chart:sort-by-x-values"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:vertical"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:connect-bars"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:gap-width"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="chart:overlap"> + <ref name="integer"/> + </attribute> + </optional> + <optional> + <attribute name="chart:group-bars-per-axis"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:japanese-candle-stick"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:interpolation"> + <choice> + <value>none</value> + <value>cubic-spline</value> + <value>b-spline</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:spline-order"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="chart:spline-resolution"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="chart:pie-offset"> + <ref name="nonNegativeInteger"/> + </attribute> + </optional> + <optional> + <attribute name="chart:angle-offset"> + <ref name="angle"/> + </attribute> + </optional> + <optional> + <attribute name="chart:hole-size"> + <ref name="percent"/> + </attribute> + </optional> + <optional> + <attribute name="chart:lines"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:solid-type"> + <choice> + <value>cuboid</value> + <value>cylinder</value> + <value>cone</value> + <value>pyramid</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:stacked"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:percentage"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:treat-empty-cells"> + <choice> + <value>use-zero</value> + <value>leave-gap</value> + <value>ignore</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:link-data-style-to-source"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:logarithmic"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:maximum"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:minimum"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:origin"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:interval-major"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:interval-minor-divisor"> + <ref name="positiveInteger"/> + </attribute> + </optional> + <optional> + <attribute name="chart:tick-marks-major-inner"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:tick-marks-major-outer"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:tick-marks-minor-inner"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:tick-marks-minor-outer"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:reverse-direction"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:display-label"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:text-overlap"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="text:line-break"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:label-arrangement"> + <choice> + <value>side-by-side</value> + <value>stagger-even</value> + <value>stagger-odd</value> + </choice> + </attribute> + </optional> + <ref name="common-style-direction-attlist"/> + <ref name="common-rotation-angle-attlist"/> + <optional> + <attribute name="chart:data-label-number"> + <choice> + <value>none</value> + <value>value</value> + <value>percentage</value> + <value>value-and-percentage</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:data-label-text"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:data-label-symbol"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <element name="chart:label-separator"> + <ref name="text-p"/> + </element> + </optional> + <optional> + <attribute name="chart:label-position"> + <ref name="labelPositions"/> + </attribute> + </optional> + <optional> + <attribute name="chart:label-position-negative"> + <ref name="labelPositions"/> + </attribute> + </optional> + <optional> + <attribute name="chart:visible"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:auto-position"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:auto-size"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:mean-value"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-category"> + <choice> + <value>none</value> + <value>variance</value> + <value>standard-deviation</value> + <value>percentage</value> + <value>error-margin</value> + <value>constant</value> + <value>standard-error</value> + <value>cell-range</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:error-percentage"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-margin"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-lower-limit"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-upper-limit"> + <ref name="double"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-upper-indicator"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-lower-indicator"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-lower-range"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + <optional> + <attribute name="chart:error-upper-range"> + <ref name="cellRangeAddressList"/> + </attribute> + </optional> + <optional> + <attribute name="chart:series-source"> + <choice> + <value>columns</value> + <value>rows</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:regression-type"> + <choice> + <value>none</value> + <value>linear</value> + <value>logarithmic</value> + <value>exponential</value> + <value>power</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:axis-position"> + <choice> + <value>start</value> + <value>end</value> + <ref name="double"/> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:axis-label-position"> + <choice> + <value>near-axis</value> + <value>near-axis-other-side</value> + <value>outside-start</value> + <value>outside-end</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:tick-mark-position"> + <choice> + <value>at-labels</value> + <value>at-axis</value> + <value>at-labels-and-axis</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="chart:include-hidden-cells"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="labelPositions"> + <choice> + <value>avoid-overlap</value> + <value>center</value> + <value>top</value> + <value>top-right</value> + <value>right</value> + <value>bottom-right</value> + <value>bottom</value> + <value>bottom-left</value> + <value>left</value> + <value>top-left</value> + <value>inside</value> + <value>outside</value> + <value>near-origin</value> + </choice> + </define> + <define name="style-drawing-page-properties-attlist"> + <interleave> + <optional> + <attribute name="presentation:transition-type"> + <choice> + <value>manual</value> + <value>automatic</value> + <value>semi-automatic</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="presentation:transition-style"> + <choice> + <value>none</value> + <value>fade-from-left</value> + <value>fade-from-top</value> + <value>fade-from-right</value> + <value>fade-from-bottom</value> + <value>fade-from-upperleft</value> + <value>fade-from-upperright</value> + <value>fade-from-lowerleft</value> + <value>fade-from-lowerright</value> + <value>move-from-left</value> + <value>move-from-top</value> + <value>move-from-right</value> + <value>move-from-bottom</value> + <value>move-from-upperleft</value> + <value>move-from-upperright</value> + <value>move-from-lowerleft</value> + <value>move-from-lowerright</value> + <value>uncover-to-left</value> + <value>uncover-to-top</value> + <value>uncover-to-right</value> + <value>uncover-to-bottom</value> + <value>uncover-to-upperleft</value> + <value>uncover-to-upperright</value> + <value>uncover-to-lowerleft</value> + <value>uncover-to-lowerright</value> + <value>fade-to-center</value> + <value>fade-from-center</value> + <value>vertical-stripes</value> + <value>horizontal-stripes</value> + <value>clockwise</value> + <value>counterclockwise</value> + <value>open-vertical</value> + <value>open-horizontal</value> + <value>close-vertical</value> + <value>close-horizontal</value> + <value>wavyline-from-left</value> + <value>wavyline-from-top</value> + <value>wavyline-from-right</value> + <value>wavyline-from-bottom</value> + <value>spiralin-left</value> + <value>spiralin-right</value> + <value>spiralout-left</value> + <value>spiralout-right</value> + <value>roll-from-top</value> + <value>roll-from-left</value> + <value>roll-from-right</value> + <value>roll-from-bottom</value> + <value>stretch-from-left</value> + <value>stretch-from-top</value> + <value>stretch-from-right</value> + <value>stretch-from-bottom</value> + <value>vertical-lines</value> + <value>horizontal-lines</value> + <value>dissolve</value> + <value>random</value> + <value>vertical-checkerboard</value> + <value>horizontal-checkerboard</value> + <value>interlocking-horizontal-left</value> + <value>interlocking-horizontal-right</value> + <value>interlocking-vertical-top</value> + <value>interlocking-vertical-bottom</value> + <value>fly-away</value> + <value>open</value> + <value>close</value> + <value>melt</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="presentation:transition-speed"> + <ref name="presentationSpeeds"/> + </attribute> + </optional> + <optional> + <attribute name="smil:type"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:subtype"> + <ref name="string"/> + </attribute> + </optional> + <optional> + <attribute name="smil:direction"> + <choice> + <value>forward</value> + <value>reverse</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="smil:fadeColor"> + <ref name="color"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:duration"> + <ref name="duration"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:visibility"> + <choice> + <value>visible</value> + <value>hidden</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="draw:background-size"> + <choice> + <value>full</value> + <value>border</value> + </choice> + </attribute> + </optional> + <optional> + <attribute name="presentation:background-objects-visible"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:background-visible"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:display-header"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:display-footer"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:display-page-number"> + <ref name="boolean"/> + </attribute> + </optional> + <optional> + <attribute name="presentation:display-date-time"> + <ref name="boolean"/> + </attribute> + </optional> + </interleave> + </define> + <define name="style-drawing-page-properties-elements"> + <optional> + <ref name="presentation-sound"/> + </optional> + </define> + <define name="string"> + <data type="string"/> + </define> + <define name="date"> + <data type="date"/> + </define> + <define name="time"> + <data type="time"/> + </define> + <define name="dateTime"> + <data type="dateTime"/> + </define> + <define name="duration"> + <data type="duration"/> + </define> + <define name="integer"> + <data type="integer"/> + </define> + <define name="nonNegativeInteger"> + <data type="nonNegativeInteger"/> + </define> + <define name="positiveInteger"> + <data type="positiveInteger"/> + </define> + <define name="double"> + <data type="double"/> + </define> + <define name="anyURI"> + <data type="anyURI"/> + </define> + <define name="base64Binary"> + <data type="base64Binary"/> + </define> + <define name="ID"> + <data type="ID"/> + </define> + <define name="IDREF"> + <data type="IDREF"/> + </define> + <define name="IDREFS"> + <data type="IDREFS"/> + </define> + <define name="NCName"> + <data type="NCName"/> + </define> + <define name="boolean"> + <choice> + <value>true</value> + <value>false</value> + </choice> + </define> + <define name="dateOrDateTime"> + <choice> + <data type="date"/> + <data type="dateTime"/> + </choice> + </define> + <define name="timeOrDateTime"> + <choice> + <data type="time"/> + <data type="dateTime"/> + </choice> + </define> + <define name="language"> + <data type="language"/> + </define> + <define name="countryCode"> + <data type="token"> + <param name="pattern">[A-Za-z0-9]{1,8}</param> + </data> + </define> + <define name="languageCode"> + <data type="token"> + <param name="pattern">[A-Za-z]{1,8}</param> + </data> + </define> + <define name="scriptCode"> + <data type="token"> + <param name="pattern">[A-Za-z0-9]{1,8}</param> + </data> + </define> + <define name="character"> + <data type="string"> + <param name="length">1</param> + </data> + </define> + <define name="length"> + <data type="string"> + <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param> + </data> + </define> + <define name="nonNegativeLength"> + <data type="string"> + <param name="pattern">([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))</param> + </data> + </define> + <define name="positiveLength"> + <data type="string"> + <param name="pattern">([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))</param> + </data> + </define> + <define name="percent"> + <data type="string"> + <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%</param> + </data> + </define> + <define name="zeroToHundredPercent"> + <data type="string"> + <param name="pattern">([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%</param> + </data> + </define> + <define name="signedZeroToHundredPercent"> + <data type="string"> + <param name="pattern">-?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%</param> + </data> + </define> + <define name="relativeLength"> + <data type="string"> + <param name="pattern">[0-9]+\*</param> + </data> + </define> + <define name="coordinate"> + <ref name="length"/> + </define> + <define name="distance"> + <ref name="length"/> + </define> + <define name="color"> + <data type="string"> + <param name="pattern">#[0-9a-fA-F]{6}</param> + </data> + </define> + <define name="angle"> + <data type="string"/> + </define> + <define name="CURIE"> + <data type="string"> + <param name="pattern">(([\i-[:]][\c-[:]]*)?:)?.+</param> + <param name="minLength">1</param> + </data> + </define> + <define name="CURIEs"> + <list> + <oneOrMore> + <ref name="CURIE"/> + </oneOrMore> + </list> + </define> + <define name="SafeCURIE"> + <data type="string"> + <param name="pattern">\[(([\i-[:]][\c-[:]]*)?:)?.+\]</param> + <param name="minLength">3</param> + </data> + </define> + <define name="URIorSafeCURIE"> + <choice> + <ref name="anyURI"/> + <ref name="SafeCURIE"/> + </choice> + </define> + <define name="styleName"> + <data type="NCName"/> + </define> + <define name="styleNameRef"> + <choice> + <data type="NCName"/> + <empty/> + </choice> + </define> + <define name="styleNameRefs"> + <list> + <zeroOrMore> + <data type="NCName"/> + </zeroOrMore> + </list> + </define> + <define name="variableName"> + <data type="string"/> + </define> + <define name="targetFrameName"> + <choice> + <value>_self</value> + <value>_blank</value> + <value>_parent</value> + <value>_top</value> + <ref name="string"/> + </choice> + </define> + <define name="valueType"> + <choice> + <value>float</value> + <value>time</value> + <value>date</value> + <value>percentage</value> + <value>currency</value> + <value>boolean</value> + <value>string</value> + </choice> + </define> + <define name="points"> + <data type="string"> + <param name="pattern">-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*</param> + </data> + </define> + <define name="pathData"> + <data type="string"/> + </define> + <define name="vector3D"> + <data type="string"> + <param name="pattern">\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)</param> + </data> + </define> + <define name="namespacedToken"> + <data type="QName"> + <param name="pattern">[^:]+:[^:]+</param> + </data> + </define> + <define name="anyIRI"> + <data type="anyURI"/> + <dc:description>An IRI-reference as defined in [RFC3987]. See ODF 1.2 Part 1 section 18.3.</dc:description> + </define> + <define name="anyAttListOrElements"> + <zeroOrMore> + <attribute> + <anyName/> + <text/> + </attribute> + </zeroOrMore> + <ref name="anyElements"/> + </define> + <define name="anyElements"> + <zeroOrMore> + <element> + <anyName/> + <mixed> + <ref name="anyAttListOrElements"/> + </mixed> + </element> + </zeroOrMore> + </define> +</grammar> diff --git a/contrib/odt/README.org b/contrib/odt/README.org new file mode 100644 index 0000000..e9eee19 --- /dev/null +++ b/contrib/odt/README.org @@ -0,0 +1,298 @@ +#+TITLE: OpenDocumentText Exporter for Orgmode +#+AUTHOR: Jambunathan K +#+EMAIL: emacs-orgmode@gnu.org +#+DATE: %Y-%m-%d %T %Z +#+DESCRIPTION: +#+KEYWORDS: +#+LANGUAGE: en +#+OPTIONS: H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t +#+OPTIONS: TeX:t LaTeX:dvipng skip:nil d:nil todo:t pri:nil tags:not-in-toc + +#+EXPORT_SELECT_TAGS: export +#+EXPORT_EXCLUDE_TAGS: noexport +#+LINK_UP: +#+LINK_HOME: +#+XSLT: + + +* Summary + + This package adds support for exporting of Orgmode files to + OpenDocumentText. + + The latest version of this document is available at + +# - Text version :: http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/doc/ReleaseNotes.org + - Web page :: http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/README.html + +* Compatibility with Official Orgmode + :PROPERTIES: + :CUSTOM_ID: compatibility + :END: + + This release is is as good as *org-20110613 (git commit c4737ae)* + with *only* the following changes left out. + + | git commit | Description | + |------------+------------------------------------------------------------------------| + | 2f50b1 | add an alternate for inline images | + | 49e6bc | Fix for html & docbook export of desc list items | + | a201b1 | Fix HTML export of footnotes with lists, tables, quotes. | + | 9f57b8 | Mixed export of numbered and unnumbered sections in HTML | + | 438536 | Revert "Change underscores to hyphens in section labels" | + | 33bae1 | Revert "Fix markup problems when using references in source fragments" | + | fa12fe | Revert "org-html.el: Fix export of table.el tables." | + | f72541 | Revert "HTML export -- Allow to change the name of the global DIV" | + +* Implementation Details + + This package enhances Orgmode in the following manner: + 1. A new line-oriented generic exporter + 2. All new html exporter re-implemented as a plugin to (1). + 3. A odt backend as a plugin to (1). + + Feature (1) is provided by =org-lparse.el=. + Feture (2) is provided by =lisp/org-html.el=. + Feature (3) is provided by =lisp/org-odt.el=. + + The new html exporter is feature-compatible with the official html + exporter. + +* Notes for Reviewers and Fellow Developers + + =org-lparse= is the entry point for the generic exporter and + drives html and odt backends. + + =org-do-lparse= is the genericized version of the original + =org-export-as-html= routine. + + =C-h v org-lparse-native-backends= is a good starting point for + exploring the generic exporter. + +* Package Layout + + - odt/README.org + - odt/lisp/ + - org-lparse.el :: Generic line-oriented exporter + - org-xhtml.el :: All new XHTML exporter + - org-odt.el :: The OpenDocumentText backend + - contrib/odt/tests + - org-mode-unicorn.png :: + - test.org :: Sample files for validating the exporter + - contrib/odt/styles + - OrgOdtAutomaticStyles.xml :: The default styles.xml file used by + the OpenDocumentText exporter. + - OrgOdtStyles.xml :: Automatic styles inserted in to content.xml + - odt/BasicODConverter/ + - BasicODConverter-0.8.0.oxt :: OpenOffice extension for + converting between various file formats supported by + OpenOffice. A poor clone of unoconv. + - Filters.bas :: + - Main.bas :: StarBasic files that contribute to the above + extension. + - odt/OASIS + - OpenDocument-v1.2-cs01-schema.rng :: Copy of + http://docs.oasis-open.org/office/v1.2/cs01/OpenDocument-v1.2-cs01-schema.rng + - OpenDocument-v1.2-cs01-manifest-schema.rng :: Copy of + http://docs.oasis-open.org/office/v1.2/cs01/OpenDocument-v1.2-cs01-manifest-schema.rng + - OpenDocument-schema-v1.1.rng :: Copy of + http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-schema-v1.1.rng + - odt/etc/schema + - od-schema-v1.1.rnc :: + - od-manifest-schema-v1.2-cs01.rnc :: + - od-schema-v1.2-cs01.rnc :: rnc files for above rng + files. Generated using [[http://www.thaiopensource.com/relaxng/trang.html][trang]]. + + - schemas.xml :: schema location file for auto validating the XML + files that form part of an OpenDocument + file. Refer =C-h f + rng-set-schema-file-and-validate= FILENAME and + =C-h f rng-what-schema=. + + All the above files have been submitted for inclusing in Emacs + proper. See + http://lists.gnu.org/archive/html/emacs-devel/2011-06/msg00671.html + +* Obtaining OpenDocumentExporter + + The OpenDocumentExporter could be downloaded by one of the following + methods: + +** git checkout + - Checkout URL :: http://repo.or.cz/r/org-mode/org-jambu.git + - Web URL :: http://repo.or.cz/w/org-mode/org-jambu.git/ + +** Conventional tar + - Download URL :: http://repo.or.cz/w/org-mode/org-jambu.git/snapshot/HEAD.tar.gz + +** ELPA Tarball + - Archive URL :: http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/ + + The tarball is distributed as an org-odt package (for example + =org-odt-20110519.tar=). + + You need to have an *Org build >= org-20110626* for the exporter to + function properly. + + The most hassle-free way to download and install org-odt is through + ELPA. + + More help on all the above methods are available at + http://orgmode.org/worg/org-faq.html. + +* Test driving the Exporter + + Once the package is installed in to your load-path, use + =C-u M-x org-odt-unit-test= to visit an example org file bundled + with this package. + + 1. Use =C-c C-e O= to export the buffer to OpenDocumentText. + 2. Use =M-x org-lparse= or =M-x org-lparse-and-open= for + exporting to MS doc format. + 3. Use =M-x org-export-convert= on a buffer visiting odt file. + + Steps 2 and 3 require that a converter be installed on the + system. See [[#converter][this FAQ entry]] for more information on this. + + - Misc. Info :: This package re-implements HTML exporter as + well. You will see the following warning message + *"Exporting to HTML using org-lparse..."* while you + are exporting using new HTML exporter. + + - Hint :: If you are using BasicODConverter, you can use steps 2 and + 3 for exporting an Org outline to presentation formats + like OpenOffice Impress (odp) and Microsoft Powerpoint + (ppt) + - Know Issues :: If you have dvipng installed it is possible that + the exported odt file has embedded images + clobbered. This is *not* a bug in the exporter but + seems like a bug in the package installer. See + http://lists.gnu.org/archive/html/bug-gnu-emacs/2011-06/msg00445.html. + +* Bug Reports and Feature Requests + + Send in your bug report and feature requests to + =emacs-orgmode@gnu.org= or to =kjambunathan at gmail dot com=. + + Please search the Mailing List Archive - + http://lists.gnu.org/archive/html/emacs-orgmode/ for =org-odt= + before posting a question or a request either to me or the mailing + list. + + Posting to mailing list is preferable. It is possible that your post + helps another user out there. + +* Possible Feature Enhacmentes + +** TODO Support for fontification of babel blocks + May require enhancements to htmlfontify or htmlize packages. + +** TODO Enhance table.el to support Odt format + +** TODO Add support for exporting to odp + + Use OpenOffice's File->Send->{Outline to Presentation | + AutoAbstract to Presentation}. Also see + + http://wiki.services.openoffice.org/wiki/Documentation/OOoAuthors_User_Manual/Impress_Guide/Creating_slides_from_an_outline + +** TODO Support for generating MathML for LaTeX fragments + See http://lists.gnu.org/archive/html/emacs-orgmode/2011-03/msg01755.html + +* Frequently Asked Questions + +** What features does the OpenDocumentExporter support? + + At the moment, the exporter supports the following most commonly + used features of Org + + - Various Character Styles + - Various Paragraph Styles (including Source Blocks) + - Embedded ODT + - Embedded MathML + - Numbered, Bulleted and Description lists + - Embedding and Resizing of Images including embedding of LaTeX fragments + - Fuzzy, Dedicated and Radio Targets and Links + - Tables + - Footnotes + - Outline Numbering and Table Of Contents + - Special markups for elements like TODOs, Timestamps and Tags + + The exporter is quite usable and stable. + +** Is OpenDocumentExporter part of Orgmode or Emacs? + + Not yet. I have expressed my willingness to merge this package in + to official Orgmode and thus to Emacs. The current maintainer of + Orgmode - =Bastien Guerry bzg at gnu.org= - has agreed to consider + the package for integration. If you are interested in having this + package merged with Orgmode send your requests to the maintainer. + + For the sake of record, I am the sole author of the changes + included in this package and I am consenting to have this work or + derivative works make it's way into Emacs proper. My FSF copyright + assignment number is #618390. + +** How does it compare with official Orgmode + For information about the latest release see [[#compatibility][this.]] For general + information refer + http://lists.gnu.org/archive/html/emacs-orgmode/2011-05/msg00751.html. + +** How can I export via command line? + + See the following post + http://lists.gnu.org/archive/html/emacs-orgmode/2011-04/msg00952.html. + +** How can I export to doc or docx format? + :PROPERTIES: + :CUSTOM_ID: converter + :END: + Here are the steps. + +*** Install the converter program. + + There are numerous converters that are available: =unoconv=, + =PyODConverter=, =JODConverter= etc etc. + + org-odt is distributed with it's own converter + =BasicODConverter=. It is /Basic/ not only because it is + implemented in StarBasic but is a a very basic clone of unoconv. + +**** BasicODConverter + Install [[http://repo.or.cz/w/org-mode/org-jambu.git/blob/HEAD:/contrib/odt/BasicODConverter-0.8.0.oxt][BasicODConverter]] as a OpenOffice Extension. + +**** unoconv + + If you prefer using unoconv as the converter add the following + snippet to your =.emacs=. + +#+begin_src emacs-lisp + ;; not tested with unoconv + (require 'org-html) + (setq org-export-convert-process '("unoconv" "-f" "%f" "-o" "%d" "%i")) +#+end_src + +*** Convert using new interactive functions + +**** Export an Org buffer + Use =M-x org-lparse= or =M-x org-lparse-and-open= and follow + the prompts. Use TAB for completion if you are not already using + ido. + +***** Additional Note + 1. If you are using BasicODConverter you can export an Org file + to =odp= or =ppt= formats. + 2. You can convert csv files to xls format + 3. OpenOffice doesn't ship with mediawiki or docbook export + filters by default. So make sure that these extensions are + installed before trying out these converters. + +**** Export an existing file + + Use =M-x org-export-convert= to convert an existing file. + + +** How can I apply custom styles? + + See this thread: + http://lists.gnu.org/archive/html/emacs-orgmode/2011-03/msg01460.html diff --git a/contrib/odt/etc/schema/od-manifest-schema-v1.2-cs01.rnc b/contrib/odt/etc/schema/od-manifest-schema-v1.2-cs01.rnc new file mode 100644 index 0000000..647828d --- /dev/null +++ b/contrib/odt/etc/schema/od-manifest-schema-v1.2-cs01.rnc @@ -0,0 +1,88 @@ +# Open Document Format for Office Applications (OpenDocument) Version 1.2 +# Committee Specification (CS) 01, 17 March 2011 +# Manifest Relax-NG Schema +# +# Copyright (c) OASIS Open 2002-2011. All Rights Reserved. +# +# All capitalized terms in the following text have the meanings assigned to them +# in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The +# full Policy may be found at the OASIS website. +# +# This document and translations of it may be copied and furnished to others, and +# derivative works that comment on or otherwise explain it or assist in its +# implementation may be prepared, copied, published, and distributed, in whole or +# in part, without restriction of any kind, provided that the above copyright +# notice and this section are included on all such copies and derivative works. +# However, this document itself may not be modified in any way, including by +# removing the copyright notice or references to OASIS, except as needed for the +# purpose of developing any document or deliverable produced by an OASIS +# Technical Committee (in which case the rules applicable to copyrights, as set +# forth in the OASIS IPR Policy, must be followed) or as required to translate it +# into languages other than English. +# +# The limited permissions granted above are perpetual and will not be revoked by +# OASIS or its successors or assigns. +# +# This document and the information contained herein is provided on an "AS IS" +# basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT +# LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT +# INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR +# FITNESS FOR A PARTICULAR PURPOSE. + +namespace manifest = + "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" + +start = manifest +manifest = element manifest:manifest { manifest-attlist, file-entry+ } +manifest-attlist = attribute manifest:version { "1.2" } +file-entry = + element manifest:file-entry { file-entry-attlist, encryption-data? } +file-entry-attlist = + attribute manifest:full-path { \string } + & attribute manifest:size { nonNegativeInteger }? + & attribute manifest:media-type { \string } + & attribute manifest:preferred-view-mode { + "edit" | "presentation-slide-show" | "read-only" | namespacedToken + }? + & attribute manifest:version { \string }? +encryption-data = + element manifest:encryption-data { + encryption-data-attlist, + algorithm, + start-key-generation?, + key-derivation + } +encryption-data-attlist = + attribute manifest:checksum-type { "SHA1/1K" | anyURI } + & attribute manifest:checksum { base64Binary } +algorithm = + element manifest:algorithm { algorithm-attlist, anyElements } +algorithm-attlist = + attribute manifest:algorithm-name { "Blowfish CFB" | anyURI } + & attribute manifest:initialisation-vector { base64Binary } +anyAttListOrElements = + attribute * { text }*, + anyElements +anyElements = + element * { + mixed { anyAttListOrElements } + }* +key-derivation = + element manifest:key-derivation { key-derivation-attlist, empty } +key-derivation-attlist = + attribute manifest:key-derivation-name { "PBKDF2" | anyURI } + & attribute manifest:salt { base64Binary } + & attribute manifest:iteration-count { nonNegativeInteger } + & attribute manifest:key-size { nonNegativeInteger }? +start-key-generation = + element manifest:start-key-generation { + start-key-generation-attlist, empty + } +start-key-generation-attlist = + attribute manifest:start-key-generation-name { "SHA1" | anyURI } + & attribute manifest:key-size { nonNegativeInteger }? +base64Binary = xsd:base64Binary +namespacedToken = xsd:QName { pattern = "[^:]+:[^:]+" } +nonNegativeInteger = xsd:nonNegativeInteger +\string = xsd:string +anyURI = xsd:anyURI diff --git a/contrib/odt/etc/schema/od-schema-v1.1.rnc b/contrib/odt/etc/schema/od-schema-v1.1.rnc new file mode 100644 index 0000000..1edeb40 --- /dev/null +++ b/contrib/odt/etc/schema/od-schema-v1.1.rnc @@ -0,0 +1,6444 @@ +# OASIS OpenDocument v1.1 +# OASIS Standard, 1 Feb 2007 +# Relax-NG Schema +# +# $Id$ +# +# © 2002-2007 OASIS Open +# © 1999-2007 Sun Microsystems, Inc. + +namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" +namespace anim = "urn:oasis:names:tc:opendocument:xmlns:animation:1.0" +namespace chart = "urn:oasis:names:tc:opendocument:xmlns:chart:1.0" +namespace config = "urn:oasis:names:tc:opendocument:xmlns:config:1.0" +namespace dc = "http://purl.org/dc/elements/1.1/" +namespace dr3d = "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" +namespace draw = "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" +namespace fo = + "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" +namespace form = "urn:oasis:names:tc:opendocument:xmlns:form:1.0" +namespace math = "http://www.w3.org/1998/Math/MathML" +namespace meta = "urn:oasis:names:tc:opendocument:xmlns:meta:1.0" +namespace number = "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" +namespace office = "urn:oasis:names:tc:opendocument:xmlns:office:1.0" +namespace presentation = + "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" +namespace script = "urn:oasis:names:tc:opendocument:xmlns:script:1.0" +namespace smil = + "urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" +namespace style = "urn:oasis:names:tc:opendocument:xmlns:style:1.0" +namespace svg = + "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" +namespace table = "urn:oasis:names:tc:opendocument:xmlns:table:1.0" +namespace text = "urn:oasis:names:tc:opendocument:xmlns:text:1.0" +namespace xforms = "http://www.w3.org/2002/xforms" +namespace xlink = "http://www.w3.org/1999/xlink" + +office-process-content = + [ a:defaultValue = "true" ] + attribute office:process-content { boolean }? +start = + office-document + | office-document-content + | office-document-styles + | office-document-meta + | office-document-settings +office-document = + element office:document { + office-document-attrs, + office-document-common-attrs, + office-meta, + office-settings, + office-scripts, + office-font-face-decls, + office-styles, + office-automatic-styles, + office-master-styles, + office-body + } +office-document-content = + element office:document-content { + office-document-common-attrs, + office-scripts, + office-font-face-decls, + office-automatic-styles, + office-body + } +office-document-styles = + element office:document-styles { + office-document-common-attrs, + office-font-face-decls, + office-styles, + office-automatic-styles, + office-master-styles + } +office-document-meta = + element office:document-meta { + office-document-common-attrs, office-meta + } +office-document-settings = + element office:document-settings { + office-document-common-attrs, office-settings + } +office-document-common-attrs &= attribute office:version { \string }? +office-document-attrs &= attribute office:mimetype { \string } +office-meta = element office:meta { office-meta-content }? +office-meta-content = anyElements +office-meta-content-strict = office-meta-data* +office-body = element office:body { office-body-content } +office-body-content |= + element office:text { + office-text-attlist, + office-text-content-prelude, + office-text-content-main*, + office-text-content-epilogue + } +office-text-content-prelude = + office-forms, text-tracked-changes, text-decls, table-decls +office-text-content-main = + text-content* + | (text-page-sequence, (draw-a | shape)*) +text-content = + text-h + | text-p + | text-list + | text-numbered-paragraph + | table-table + | draw-a + | text-section + | text-soft-page-break + | text-table-of-content + | text-illustration-index + | text-table-index + | text-object-index + | text-user-index + | text-alphabetical-index + | text-bibliography + | shape + | change-marks +office-text-content-epilogue = table-functions +office-text-attlist &= + [ a:defaultValue = "false" ] attribute text:global { boolean }? +office-text-attlist &= + [ a:defaultValue = "false" ] + attribute text:use-soft-page-breaks { boolean }? +office-body-content |= + element office:drawing { + office-drawing-attlist, + office-drawing-content-prelude, + office-drawing-content-main, + office-drawing-content-epilogue + } +office-drawing-attlist = empty +office-drawing-content-prelude = text-decls, table-decls +office-drawing-content-main = draw-page* +office-drawing-content-epilogue = table-functions +office-body-content |= + element office:presentation { + office-presentation-attlist, + office-presentation-content-prelude, + office-presentation-content-main, + office-presentation-content-epilogue + } +office-presentation-attlist = empty +office-presentation-content-prelude = + text-decls, table-decls, presentation-decls +office-presentation-content-main = draw-page* +office-presentation-content-epilogue = + presentation-settings, table-functions +office-body-content |= + element office:spreadsheet { + office-spreadsheet-attlist, + office-spreadsheet-content-prelude, + office-spreadsheet-content-main, + office-spreadsheet-content-epilogue + } +office-spreadsheet-content-prelude = + table-tracked-changes?, text-decls, table-decls +table-decls = + table-calculation-settings?, + table-content-validations?, + table-label-ranges? +office-spreadsheet-content-main = table-table* +office-spreadsheet-content-epilogue = table-functions +table-functions = + table-named-expressions?, + table-database-ranges?, + table-data-pilot-tables?, + table-consolidation?, + table-dde-links? +office-body-content |= + element office:chart { + office-chart-attlist, + office-chart-content-prelude, + office-chart-content-main, + office-chart-content-epilogue + } +office-chart-attlist = empty +office-chart-content-prelude = text-decls, table-decls +office-chart-content-main = chart-chart +office-chart-content-epilogue = table-functions +office-body-content |= + element office:image { + office-image-attlist, + office-image-content-prelude, + office-image-content-main, + office-image-content-epilogue + } +office-image-attlist = empty +office-image-content-prelude = empty +office-image-content-main = draw-frame +office-image-content-epilogue = empty +office-settings = element office:settings { config-config-item-set+ }? +config-config-item-set = + element config:config-item-set { + config-config-item-set-attlist, config-items + } +config-items = + (config-config-item + | config-config-item-set + | config-config-item-map-named + | config-config-item-map-indexed)+ +config-config-item-set-attlist &= attribute config:name { \string } +config-config-item = + element config:config-item { config-config-item-attlist, text } +config-config-item-attlist &= attribute config:name { \string } +config-config-item-attlist &= + attribute config:type { + "boolean" + | "short" + | "int" + | "long" + | "double" + | "string" + | "datetime" + | "base64Binary" + } +config-config-item-map-indexed = + element config:config-item-map-indexed { + config-config-item-map-indexed-attlist, + config-config-item-map-entry+ + } +config-config-item-map-indexed-attlist &= + attribute config:name { \string } +config-config-item-map-entry = + element config:config-item-map-entry { + config-config-item-map-entry-attlist, config-items + } +config-config-item-map-entry-attlist &= + attribute config:name { \string }? +config-config-item-map-named = + element config:config-item-map-named { + config-config-item-map-named-attlist, config-config-item-map-entry+ + } +config-config-item-map-named-attlist &= + attribute config:name { \string } +office-scripts = + element office:scripts { office-script*, office-event-listeners? }? +office-script = + element office:script { + office-script-attlist, + mixed { anyElements } + } +office-script-attlist = attribute script:language { \string } +office-font-face-decls = + element office:font-face-decls { style-font-face* }? +office-styles = + element office:styles { + styles + & style-default-style* + & text-outline-style? + & text-notes-configuration* + & text-bibliography-configuration? + & text-linenumbering-configuration? + & draw-gradient* + & svg-linearGradient* + & svg-radialGradient* + & draw-hatch* + & draw-fill-image* + & draw-marker* + & draw-stroke-dash* + & draw-opacity* + & style-presentation-page-layout* + }? +office-automatic-styles = + element office:automatic-styles { styles & style-page-layout* }? +office-master-styles = + element office:master-styles { + style-master-page* & style-handout-master? & draw-layer-set? + }? +styles = + style-style* + & text-list-style* + & number-number-style* + & number-currency-style* + & number-percentage-style* + & number-date-style* + & number-time-style* + & number-boolean-style* + & number-text-style* +office-meta-data |= element meta:generator { \string } +office-meta-data |= element dc:title { \string } +office-meta-data |= element dc:description { \string } +office-meta-data |= element dc:subject { \string } +office-meta-data |= element meta:keyword { \string } +office-meta-data |= element meta:initial-creator { \string } +office-meta-data |= dc-creator +dc-creator = element dc:creator { \string } +office-meta-data |= element meta:printed-by { \string } +office-meta-data |= element meta:creation-date { dateTime } +office-meta-data |= dc-date +dc-date = element dc:date { dateTime } +office-meta-data |= element meta:print-date { dateTime } +office-meta-data |= + element meta:template { + attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "onRequest" ] + attribute xlink:actuate { "onRequest" }?, + attribute xlink:title { \string }?, + attribute meta:date { dateTime }? + } +office-meta-data |= + element meta:auto-reload { + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "replace" ] attribute xlink:show { "replace" }?, + [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?, + attribute xlink:href { anyURI }?, + attribute meta:delay { duration }? + } +office-meta-data |= + element meta:hyperlink-behaviour { + attribute office:target-frame-name { targetFrameName }?, + attribute xlink:show { "new" | "replace" }? + } +office-meta-data |= element dc:language { language } +office-meta-data |= element meta:editing-cycles { nonNegativeInteger } +office-meta-data |= element meta:editing-duration { duration } +office-meta-data |= + element meta:document-statistic { + attribute meta:page-count { nonNegativeInteger }?, + attribute meta:table-count { nonNegativeInteger }?, + attribute meta:draw-count { nonNegativeInteger }?, + attribute meta:image-count { nonNegativeInteger }?, + attribute meta:ole-object-count { nonNegativeInteger }?, + attribute meta:object-count { nonNegativeInteger }?, + attribute meta:paragraph-count { nonNegativeInteger }?, + attribute meta:word-count { nonNegativeInteger }?, + attribute meta:character-count { nonNegativeInteger }?, + attribute frame-count { nonNegativeInteger }?, + attribute sentence-count { nonNegativeInteger }?, + attribute syllable-count { nonNegativeInteger }?, + attribute non-whitespace-character-count { nonNegativeInteger }?, + attribute meta:row-count { nonNegativeInteger }?, + attribute meta:cell-count { nonNegativeInteger }? + } +office-meta-data |= + element meta:user-defined { + attribute meta:name { \string }, + ((attribute meta:value-type { "float" }, + double) + | (attribute meta:value-type { "date" }, + dateOrDateTime) + | (attribute meta:value-type { "time" }, + duration) + | (attribute meta:value-type { "boolean" }, + boolean) + | (attribute meta:value-type { "string" }, + \string) + | text) + } +text-h = + element text:h { + heading-attrs, paragraph-attrs, text-number?, paragraph-content* + } +heading-attrs &= attribute text:outline-level { positiveInteger } +heading-attrs &= + [ a:defaultValue = "false" ] + attribute text:restart-numbering { boolean }? +heading-attrs &= attribute text:start-value { nonNegativeInteger }? +heading-attrs &= + [ a:defaultValue = "false" ] + attribute text:is-list-header { boolean }? +text-number = element text:number { \string } +text-p = element text:p { paragraph-attrs, paragraph-content* } +paragraph-attrs = + attribute text:style-name { styleNameRef }?, + attribute text:class-names { styleNameRefs }?, + attribute text:cond-style-name { styleNameRef }? +paragraph-attrs &= text-id? +text-page-sequence = element text:page-sequence { text-page+ } +text-page = element text:page { text-page-attlist, empty } +text-page-attlist = attribute text:master-page-name { styleNameRef } +text-list = + element text:list { + text-list-attr, text-list-header?, text-list-item* + } +text-list-attr &= attribute text:style-name { styleNameRef }? +text-list-attr &= attribute text:continue-numbering { boolean }? +text-list-item = + element text:list-item { text-list-item-attr, text-list-item-content } +text-list-item-content = + text-number?, (text-p | text-h | text-list | text-soft-page-break)* +text-list-item-attr &= + attribute text:start-value { nonNegativeInteger }? +text-list-header = element text:list-header { text-list-item-content } +text-numbered-paragraph = + element text:numbered-paragraph { + text-numbered-paragraph-attr, text-number?, (text-p | text-h) + } +text-numbered-paragraph-attr &= + [ a:defaultValue = "1" ] attribute text:level { positiveInteger }? +text-numbered-paragraph-attr &= text-list-attr +text-numbered-paragraph-attr &= text-list-item-attr +text-section = + element text:section { + text-section-attr, + (text-section-source | text-section-source-dde | empty), + text-content* + } +text-section-attr &= sectionAttr +sectionAttr &= attribute text:style-name { styleNameRef }? +sectionAttr &= attribute text:name { \string } +sectionAttr &= attribute text:protected { boolean }? +sectionAttr &= attribute text:protection-key { \string }? +text-section-attr &= + attribute text:display { "true" | "none" } + | (attribute text:display { "condition" }, + attribute text:condition { \string }) + | empty +text-section-source = + element text:section-source { text-section-source-attr } +text-section-source-attr &= + (attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?)? +text-section-source-attr &= attribute text:section-name { \string }? +text-section-source-attr &= attribute text:filter-name { \string }? +text-section-source-dde = office-dde-source +text-tracked-changes = + element text:tracked-changes { + text-tracked-changes-attr, text-changed-region* + }? +text-tracked-changes-attr &= + [ a:defaultValue = "true" ] attribute text:track-changes { boolean }? +text-changed-region = + element text:changed-region { + text-changed-region-attr, text-changed-region-content + } +text-changed-region-attr &= attribute text:id { ID } +text-changed-region-content |= + element text:insertion { office-change-info } +text-changed-region-content |= + element text:deletion { office-change-info, text-content* } +text-changed-region-content |= + element text:format-change { office-change-info } +change-marks = + element text:change { change-mark-attr } + | element text:change-start { change-mark-attr } + | element text:change-end { change-mark-attr } +change-mark-attr = attribute text:change-id { IDREF } +text-soft-page-break = element text:soft-page-break { empty } +text-decls = + element text:variable-decls { text-variable-decl* }?, + element text:sequence-decls { text-sequence-decl* }?, + element text:user-field-decls { text-user-field-decl* }?, + element text:dde-connection-decls { text-dde-connection-decl* }?, + text-alphabetical-index-auto-mark-file? +paragraph-content |= text +paragraph-content |= + element text:s { + attribute text:c { nonNegativeInteger }? + } +paragraph-content |= element text:tab { text-tab-attr } +text-tab-attr = attribute text:tab-ref { nonNegativeInteger }? +paragraph-content |= element text:line-break { empty } +paragraph-content |= text-soft-page-break +paragraph-content |= + element text:span { + attribute text:style-name { styleNameRef }?, + attribute text:class-names { styleNameRefs }?, + paragraph-content* + } +paragraph-content |= + element text:a { + text-a-attlist, office-event-listeners?, paragraph-content* + } +text-a-attlist &= attribute office:name { \string }? +text-a-attlist &= attribute office:title { \string }? +text-a-attlist &= + attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "onRequest" ] + attribute xlink:actuate { "onRequest" }? +text-a-attlist &= + attribute office:target-frame-name { targetFrameName }?, + attribute xlink:show { "new" | "replace" }? +text-a-attlist &= + attribute text:style-name { styleNameRef }?, + attribute text:visited-style-name { styleNameRef }? +paragraph-content |= + element text:bookmark { + attribute text:name { \string } + } + | element text:bookmark-start { + attribute text:name { \string } + } + | element text:bookmark-end { + attribute text:name { \string } + } +paragraph-content |= + element text:reference-mark { + attribute text:name { \string } + } +paragraph-content |= + element text:reference-mark-start { + attribute text:name { \string } + } + | element text:reference-mark-end { + attribute text:name { \string } + } +paragraph-content |= + element text:note { + text-note-class, + attribute text:id { \string }?, + element text:note-citation { + attribute text:label { \string }?, + text + }, + element text:note-body { text-content* } + } +text-note-class = attribute text:note-class { "footnote" | "endnote" } +paragraph-content |= + element text:ruby { + attribute text:style-name { styleNameRef }?, + element text:ruby-base { paragraph-content }, + element text:ruby-text { + attribute text:style-name { styleNameRef }?, + text + } + } +paragraph-content |= office-annotation +paragraph-content |= change-marks +paragraph-content |= shape | draw-a +paragraph-content |= element text:date { text-date-attlist, text } +text-date-attlist &= + common-field-fixed-attlist & common-field-data-style-name-attlist +text-date-attlist &= attribute text:date-value { dateOrDateTime }? +text-date-attlist &= attribute text:date-adjust { duration }? +paragraph-content |= element text:time { text-time-attlist, text } +text-time-attlist &= + common-field-fixed-attlist & common-field-data-style-name-attlist +text-time-attlist &= attribute text:time-value { timeOrDateTime }? +text-time-attlist &= attribute text:time-adjust { duration }? +paragraph-content |= + element text:page-number { text-page-number-attlist, text } +text-page-number-attlist &= + common-field-num-format-attlist & common-field-fixed-attlist +text-page-number-attlist &= attribute text:page-adjust { integer }? +text-page-number-attlist &= + attribute text:select-page { "previous" | "current" | "next" }? +paragraph-content |= + element text:page-continuation { + text-page-continuation-attlist, text + } +text-page-continuation-attlist &= + attribute text:select-page { "previous" | "next" } +text-page-continuation-attlist &= + attribute text:string-value { \string }? +paragraph-content |= + element text:sender-firstname { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-lastname { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-initials { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-title { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-position { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-email { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-phone-private { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-fax { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-company { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-phone-work { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-street { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-city { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-postal-code { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-country { common-field-fixed-attlist, text } +paragraph-content |= + element text:sender-state-or-province { + common-field-fixed-attlist, text + } +paragraph-content |= + element text:author-name { common-field-fixed-attlist, text } +paragraph-content |= + element text:author-initials { common-field-fixed-attlist, text } +paragraph-content |= element text:chapter { text-chapter-attlist, text } +text-chapter-attlist &= + attribute text:display { + "name" + | "number" + | "number-and-name" + | "plain-number-and-name" + | "plain-number" + } +text-chapter-attlist &= + attribute text:outline-level { nonNegativeInteger } +paragraph-content |= + element text:file-name { text-file-name-attlist, text } +text-file-name-attlist &= + attribute text:display { + "full" | "path" | "name" | "name-and-extension" + }? +text-file-name-attlist &= common-field-fixed-attlist +paragraph-content |= + element text:template-name { text-template-name-attlist, text } +text-template-name-attlist = + attribute text:display { + "full" | "path" | "name" | "name-and-extension" | "area" | "title" + }? +paragraph-content |= element text:sheet-name { text } +text-variable-decl = + element text:variable-decl { + common-field-name-attlist, common-value-type-attlist + } +paragraph-content |= + element text:variable-set { + (common-field-name-attlist + & common-field-formula-attlist + & common-value-and-type-attlist + & common-field-display-value-none-attlist + & common-field-data-style-name-attlist), + text + } +paragraph-content |= + element text:variable-get { + (common-field-name-attlist + & common-field-display-value-formula-attlist + & common-field-data-style-name-attlist), + text + } +paragraph-content |= + element text:variable-input { + (common-field-name-attlist + & common-field-description-attlist + & common-value-type-attlist + & common-field-display-value-none-attlist + & common-field-data-style-name-attlist), + text + } +text-user-field-decl = + element text:user-field-decl { + common-field-name-attlist, + common-field-formula-attlist?, + common-value-and-type-attlist + } +paragraph-content |= + element text:user-field-get { + (common-field-name-attlist + & common-field-display-value-formula-none-attlist + & common-field-data-style-name-attlist), + text + } +paragraph-content |= + element text:user-field-input { + (common-field-name-attlist + & common-field-description-attlist + & common-field-data-style-name-attlist), + text + } +text-sequence-decl = + element text:sequence-decl { text-sequence-decl-attlist } +text-sequence-decl-attlist &= common-field-name-attlist +text-sequence-decl-attlist &= + attribute text:display-outline-level { nonNegativeInteger } +text-sequence-decl-attlist &= + attribute text:separation-character { character }? +paragraph-content |= + element text:sequence { + (common-field-name-attlist + & common-field-formula-attlist + & common-field-num-format-attlist + & text-sequence-ref-name), + text + } +text-sequence-ref-name = attribute text:ref-name { \string }? +paragraph-content |= + element text:expression { + (common-field-formula-attlist + & common-value-and-type-attlist? + & common-field-display-value-formula-attlist + & common-field-data-style-name-attlist), + text + } +paragraph-content |= + element text:text-input { common-field-description-attlist, text } +paragraph-content |= + element text:initial-creator { common-field-fixed-attlist, text } +paragraph-content |= + element text:creation-date { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:date-value { dateOrDateTime }?), + text + } +paragraph-content |= + element text:creation-time { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:time-value { timeOrDateTime }?), + text + } +paragraph-content |= + element text:description { common-field-fixed-attlist, text } +paragraph-content |= + element text:user-defined { + (common-field-fixed-attlist + & attribute text:name { \string } + & common-field-data-style-name-attlist + & attribute office:value { double }? + & attribute office:date-value { dateOrDateTime }? + & attribute office:time-value { duration }? + & attribute office:boolean-value { boolean }? + & attribute office:string-value { \string }?), + text + } +paragraph-content |= + element text:print-time { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:time-value { time }?), + text + } +paragraph-content |= + element text:print-date { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:date-value { date }?), + text + } +paragraph-content |= + element text:printed-by { common-field-fixed-attlist, text } +paragraph-content |= + element text:title { common-field-fixed-attlist, text } +paragraph-content |= + element text:subject { common-field-fixed-attlist, text } +paragraph-content |= + element text:keywords { common-field-fixed-attlist, text } +paragraph-content |= + element text:editing-cycles { common-field-fixed-attlist, text } +paragraph-content |= + element text:editing-duration { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:duration { duration }?), + text + } +paragraph-content |= + element text:modification-time { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:time-value { time }?), + text + } +paragraph-content |= + element text:modification-date { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:date-value { date }?), + text + } +paragraph-content |= + element text:creator { common-field-fixed-attlist, text } +paragraph-content |= + element text:page-count + | text:paragraph-count + | text:word-count + | text:character-count + | text:table-count + | text:image-count + | text:object-count { common-field-num-format-attlist, text } +common-field-database-table = + common-field-database-table-attlist, common-field-database-name +common-field-database-name |= attribute text:database-name { \string }? +common-field-database-name |= form-connection-resource +common-field-database-table-attlist &= + attribute text:table-name { \string } +common-field-database-table-attlist &= + attribute text:table-type { "table" | "query" | "command" }? +paragraph-content |= + element text:database-display { text-database-display-attlist, text } +text-database-display-attlist &= common-field-database-table +text-database-display-attlist &= common-field-data-style-name-attlist +text-database-display-attlist &= attribute text:column-name { \string } +paragraph-content |= + element text:database-next { text-database-next-attlist } +text-database-next-attlist &= common-field-database-table +text-database-next-attlist &= attribute text:condition { formula }? +paragraph-content |= + element text:database-row-select { text-database-row-select-attlist } +text-database-row-select-attlist &= common-field-database-table +text-database-row-select-attlist &= + attribute text:condition { formula }? +text-database-row-select-attlist &= + attribute text:row-number { nonNegativeInteger }? +paragraph-content |= + element text:database-row-number { + (common-field-database-table + & common-field-num-format-attlist + & attribute text:value { nonNegativeInteger }?), + text + } +paragraph-content |= + element text:database-name { common-field-database-table, text } +paragraph-content |= + element text:page-variable-set { + text-set-page-variable-attlist, text + } +text-set-page-variable-attlist &= attribute text:active { boolean }? +text-set-page-variable-attlist &= + attribute text:page-adjust { integer }? +paragraph-content |= + element text:page-variable-get { + text-get-page-variable-attlist, text + } +text-get-page-variable-attlist &= common-field-num-format-attlist +paragraph-content |= + element text:placeholder { text-placeholder-attlist, text } +text-placeholder-attlist &= + attribute text:placeholder-type { + "text" | "table" | "text-box" | "image" | "object" + } +text-placeholder-attlist &= common-field-description-attlist +paragraph-content |= + element text:conditional-text { text-conditional-text-attlist, text } +text-conditional-text-attlist &= attribute text:condition { formula } +text-conditional-text-attlist &= + attribute text:string-value-if-true { \string } +text-conditional-text-attlist &= + attribute text:string-value-if-false { \string } +text-conditional-text-attlist &= + attribute text:current-value { boolean }? +paragraph-content |= + element text:hidden-text { text-hidden-text-attlist, text } +text-hidden-text-attlist &= attribute text:condition { formula } +text-hidden-text-attlist &= attribute text:string-value { \string } +text-hidden-text-attlist &= attribute text:is-hidden { boolean }? +paragraph-content |= + element text:reference-ref | text:bookmark-ref { + text-common-ref-content & text-ref-content + } +paragraph-content |= + element text:note-ref { + text-common-ref-content & text-note-ref-content & text-ref-content + } +paragraph-content |= + element text:sequence-ref { + text-common-ref-content & text-sequence-ref-content + } +text-common-ref-content &= text +text-common-ref-content &= attribute text:ref-name { \string }? +text-note-ref-content &= text-note-class +text-ref-content &= + attribute text:reference-format { + "page" | "chapter" | "direction" | "text" + }? +text-sequence-ref-content &= + attribute text:reference-format { + "page" + | "chapter" + | "direction" + | "text" + | "category-and-value" + | "caption" + | "value" + }? +paragraph-content |= + element text:script { + ((attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?) + | text) + & attribute script:language { \string }? + } +paragraph-content |= + element text:execute-macro { + attribute text:name { \string }?, + office-event-listeners?, + text + } +paragraph-content |= + element text:hidden-paragraph { text-hidden-paragraph-attlist, text } +text-hidden-paragraph-attlist &= attribute text:condition { formula } +text-hidden-paragraph-attlist &= attribute text:is-hidden { boolean }? +paragraph-content |= + element text:dde-connection { + attribute text:connection-name { \string }, + text + } +paragraph-content |= + element text:measure { + attribute text:kind { "value" | "unit" | "gap" }, + text + } +paragraph-content |= + element text:table-formula { + (common-field-formula-attlist + & common-field-display-value-formula-attlist + & common-field-data-style-name-attlist), + text + } +common-value-type-attlist = attribute office:value-type { valueType } +common-value-and-type-attlist = + (attribute office:value-type { "float" }, + attribute office:value { double }) + | (attribute office:value-type { "percentage" }, + attribute office:value { double }) + | (attribute office:value-type { "currency" }, + attribute office:value { double }, + attribute office:currency { \string }?) + | (attribute office:value-type { "date" }, + attribute office:date-value { dateOrDateTime }) + | (attribute office:value-type { "time" }, + attribute office:time-value { duration }) + | (attribute office:value-type { "boolean" }, + attribute office:boolean-value { boolean }) + | (attribute office:value-type { "string" }, + attribute office:string-value { \string }?) +common-field-fixed-attlist = attribute text:fixed { boolean }? +common-field-name-attlist = attribute text:name { variableName } +common-field-description-attlist = attribute text:description { text }? +common-field-display-value-none-attlist = + attribute text:display { "value" | "none" }? +common-field-display-value-formula-none-attlist = + attribute text:display { "value" | "formula" | "none" }? +common-field-display-value-formula-attlist = + attribute text:display { "value" | "formula" }? +common-field-formula-attlist = attribute text:formula { formula }? +common-field-data-style-name-attlist = + attribute style:data-style-name { styleNameRef }? +common-field-num-format-attlist = common-num-format-attlist? +paragraph-content |= + element text:toc-mark-start { text-toc-mark-start-attrs } +text-toc-mark-start-attrs = text-id, text-outline-level +text-outline-level = attribute text:outline-level { positiveInteger }? +text-id = attribute text:id { \string } +paragraph-content |= element text:toc-mark-end { text-id } +paragraph-content |= + element text:toc-mark { + attribute text:string-value { \string }, + text-outline-level + } +paragraph-content |= + element text:user-index-mark-start { + text-id, text-outline-level, text-index-name + } +paragraph-content |= + element text:user-index-mark-end { text-id, text-outline-level } +paragraph-content |= + element text:user-index-mark { + attribute text:string-value { \string }, + text-outline-level, + text-index-name + } +text-index-name = attribute text:index-name { \string } +paragraph-content |= + element text:alphabetical-index-mark-start { + text-id, text-alphabetical-index-mark-attrs + } +paragraph-content |= + element text:alphabetical-index-mark-end { text-id } +paragraph-content |= + element text:alphabetical-index-mark { + attribute text:string-value { \string }, + text-alphabetical-index-mark-attrs + } +text-alphabetical-index-mark-attrs &= + attribute text:key1 { \string }?, + attribute text:key2 { \string }? +text-alphabetical-index-mark-attrs &= + attribute text:string-value-phonetic { \string }?, + attribute text:key1-phonetic { \string }?, + attribute text:key2-phonetic { \string }? +text-alphabetical-index-mark-attrs &= + [ a:defaultValue = "false" ] attribute text:main-entry { boolean }? +paragraph-content |= + element text:bibliography-mark { + attribute text:bibliography-type { text-bibliography-types }, + attribute text:identifier + | text:address + | text:annote + | text:author + | text:booktitle + | text:chapter + | text:edition + | text:editor + | text:howpublished + | text:institution + | text:journal + | text:month + | text:note + | text:number + | text:organizations + | text:pages + | text:publisher + | text:school + | text:series + | text:title + | text:report-type + | text:volume + | text:year + | text:url + | text:custom1 + | text:custom2 + | text:custom3 + | text:custom4 + | text:custom5 + | text:isbn + | text:issn { \string }*, + text + } +text-bibliography-types = + "article" + | "book" + | "booklet" + | "conference" + | "custom1" + | "custom2" + | "custom3" + | "custom4" + | "custom5" + | "email" + | "inbook" + | "incollection" + | "inproceedings" + | "journal" + | "manual" + | "mastersthesis" + | "misc" + | "phdthesis" + | "proceedings" + | "techreport" + | "unpublished" + | "www" +text-index-body = element text:index-body { index-content-main* } +index-content-main = text-content | text-index-title +text-index-title = + element text:index-title { sectionAttr, index-content-main* } +text-table-of-content = + element text:table-of-content { + sectionAttr, text-table-of-content-source, text-index-body + } +text-table-of-content-source = + element text:table-of-content-source { + text-table-of-content-source-attlist, + text-index-title-template?, + text-table-of-content-entry-template*, + text-index-source-styles* + } +text-table-of-content-source-attlist &= + attribute text:outline-level { positiveInteger }? +text-table-of-content-source-attlist &= + [ a:defaultValue = "true" ] + attribute text:use-outline-level { boolean }? +text-table-of-content-source-attlist &= + attribute text:use-index-marks { boolean }? +text-table-of-content-source-attlist &= + attribute text:use-index-source-styles { boolean }? +text-table-of-content-source-attlist &= + attribute text:index-scope { "document" | "chapter" }? +text-table-of-content-source-attlist &= + attribute text:relative-tab-stop-position { boolean }? +text-table-of-content-entry-template = + element text:table-of-content-entry-template { + text-table-of-content-entry-template-attlist, + text-table-of-content-children* + } +text-table-of-content-children = + text-index-entry-chapter + | text-index-entry-page-number + | text-index-entry-text + | text-index-entry-span + | text-index-entry-tab-stop + | text-index-entry-link-start + | text-index-entry-link-end +text-table-of-content-entry-template-attlist &= + attribute text:outline-level { positiveInteger } +text-table-of-content-entry-template-attlist &= + attribute text:style-name { styleNameRef } +text-illustration-index = + element text:illustration-index { + sectionAttr, text-illustration-index-source, text-index-body + } +text-illustration-index-source = + element text:illustration-index-source { + text-illustration-index-source-attrs, + text-index-title-template?, + text-illustration-index-entry-template? + } +text-illustration-index-source-attrs &= text-index-scope-attr +text-index-scope-attr = + [ a:defaultValue = "document" ] + attribute text:index-scope { "document" | "chapter" }? +text-illustration-index-source-attrs &= + text-relative-tab-stop-position-attr +text-relative-tab-stop-position-attr = + [ a:defaultValue = "true" ] + attribute text:relative-tab-stop-position { boolean }? +text-illustration-index-source-attrs &= + [ a:defaultValue = "true" ] attribute text:use-caption { boolean }? +text-illustration-index-source-attrs &= + attribute text:caption-sequence-name { \string }? +text-illustration-index-source-attrs &= + attribute text:caption-sequence-format { + "text" | "category-and-value" | "caption" + }? +text-illustration-index-entry-template = + element text:illustration-index-entry-template { + text-illustration-index-entry-content + } +text-illustration-index-entry-content = + text-illustration-index-entry-template-attrs, + (text-index-entry-page-number + | text-index-entry-text + | text-index-entry-span + | text-index-entry-tab-stop)* +text-illustration-index-entry-template-attrs = + attribute text:style-name { styleNameRef } +text-table-index = + element text:table-index { + sectionAttr, text-table-index-source, text-index-body + } +text-table-index-source = + element text:table-index-source { + text-illustration-index-source-attrs, + text-index-title-template?, + text-table-index-entry-template? + } +text-table-index-entry-template = + element text:table-index-entry-template { + text-illustration-index-entry-content + } +text-object-index = + element text:object-index { + sectionAttr, text-object-index-source, text-index-body + } +text-object-index-source = + element text:object-index-source { + text-object-index-source-attrs, + text-index-title-template?, + text-object-index-entry-template? + } +text-object-index-source-attrs &= text-index-scope-attr +text-object-index-source-attrs &= text-relative-tab-stop-position-attr +text-object-index-source-attrs &= + [ a:defaultValue = "false" ] + attribute text:use-spreadsheet-objects { boolean }? +text-object-index-source-attrs &= + [ a:defaultValue = "false" ] + attribute text:use-math-objects { boolean }? +text-object-index-source-attrs &= + [ a:defaultValue = "false" ] + attribute text:use-draw-objects { boolean }? +text-object-index-source-attrs &= + [ a:defaultValue = "false" ] + attribute text:use-chart-objects { boolean }? +text-object-index-source-attrs &= + [ a:defaultValue = "false" ] + attribute text:use-other-objects { boolean }? +text-object-index-entry-template = + element text:object-index-entry-template { + text-illustration-index-entry-content + } +text-user-index = + element text:user-index { + sectionAttr, text-user-index-source, text-index-body + } +text-user-index-source = + element text:user-index-source { + text-user-index-source-attr, + text-index-title-template?, + text-user-index-entry-template*, + text-index-source-styles* + } +text-user-index-source-attr &= + text-index-scope-attr, + text-relative-tab-stop-position-attr, + attribute text:index-name { \string } +text-user-index-source-attr &= + [ a:defaultValue = "false" ] + attribute text:use-index-marks { boolean }?, + [ a:defaultValue = "false" ] attribute text:use-graphics { boolean }?, + [ a:defaultValue = "false" ] attribute text:use-tables { boolean }?, + [ a:defaultValue = "false" ] + attribute text:use-floating-frames { boolean }?, + [ a:defaultValue = "false" ] attribute text:use-objects { boolean }? +text-user-index-source-attr &= + [ a:defaultValue = "false" ] + attribute text:copy-outline-levels { boolean }? +text-user-index-entry-template = + element text:user-index-entry-template { + text-user-index-entry-template-attrs, + (text-index-entry-chapter + | text-index-entry-page-number + | text-index-entry-text + | text-index-entry-span + | text-index-entry-tab-stop)* + } +text-user-index-entry-template-attrs &= + attribute text:outline-level { positiveInteger } +text-user-index-entry-template-attrs &= + attribute text:style-name { styleNameRef } +text-alphabetical-index = + element text:alphabetical-index { + sectionAttr, text-alphabetical-index-source, text-index-body + } +text-alphabetical-index-source = + element text:alphabetical-index-source { + text-alphabetical-index-source-attrs, + text-index-title-template?, + text-alphabetical-index-entry-template* + } +text-alphabetical-index-source-attrs &= + text-index-scope-attr, text-relative-tab-stop-position-attr +text-alphabetical-index-source-attrs &= + [ a:defaultValue = "false" ] attribute text:ignore-case { boolean }? +text-alphabetical-index-source-attrs &= + attribute text:main-entry-style-name { styleNameRef }? +text-alphabetical-index-source-attrs &= + [ a:defaultValue = "false" ] + attribute text:alphabetical-separators { boolean }? +text-alphabetical-index-source-attrs &= + [ a:defaultValue = "true" ] + attribute text:combine-entries { boolean }?, + [ a:defaultValue = "false" ] + attribute text:combine-entries-with-dash { boolean }?, + [ a:defaultValue = "true" ] + attribute text:combine-entries-with-pp { boolean }? +text-alphabetical-index-source-attrs &= + [ a:defaultValue = "false" ] + attribute text:use-keys-as-entries { boolean }? +text-alphabetical-index-source-attrs &= + [ a:defaultValue = "false" ] + attribute text:capitalize-entries { boolean }? +text-alphabetical-index-source-attrs &= + [ a:defaultValue = "false" ] + attribute text:comma-separated { boolean }? +text-alphabetical-index-source-attrs &= + attribute fo:language { languageCode }? +text-alphabetical-index-source-attrs &= + attribute fo:country { countryCode }? +text-alphabetical-index-source-attrs &= + attribute text:sort-algorithm { \string }? +text-alphabetical-index-auto-mark-file = + element text:alphabetical-index-auto-mark-file { + attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }? + } +text-alphabetical-index-entry-template = + element text:alphabetical-index-entry-template { + text-alphabetical-index-entry-template-attrs, + (text-index-entry-chapter + | text-index-entry-page-number + | text-index-entry-text + | text-index-entry-span + | text-index-entry-tab-stop)* + } +text-alphabetical-index-entry-template-attrs &= + attribute text:outline-level { "1" | "2" | "3" | "separator" } +text-alphabetical-index-entry-template-attrs &= + attribute text:style-name { styleNameRef } +text-bibliography = + element text:bibliography { + sectionAttr, text-bibliography-source, text-index-body + } +text-bibliography-source = + element text:bibliography-source { + text-index-title-template?, text-bibliography-entry-template* + } +text-bibliography-entry-template = + element text:bibliography-entry-template { + text-bibliography-entry-template-attrs, + (text-index-entry-span + | text-index-entry-tab-stop + | text-index-entry-bibliography)* + } +text-bibliography-entry-template-attrs &= + attribute text:bibliography-type { text-bibliography-types } +text-bibliography-entry-template-attrs &= + attribute text:style-name { styleNameRef } +text-index-source-styles = + element text:index-source-styles { + attribute text:outline-level { positiveInteger }, + text-index-source-style* + } +text-index-source-style = + element text:index-source-style { + attribute text:style-name { styleName }, + empty + } +text-index-title-template = + element text:index-title-template { + attribute text:style-name { styleNameRef }?, + text + } +text-index-entry-chapter = + element text:index-entry-chapter { + attribute text:style-name { styleNameRef }?, + text-index-entry-chapter-attrs + } +text-index-entry-chapter-attrs = + [ a:defaultValue = "number" ] + attribute text:display { "name" | "number" | "number-and-name" }? +text-index-entry-text = + element text:index-entry-text { + attribute text:style-name { styleNameRef }? + } +text-index-entry-page-number = + element text:index-entry-page-number { + attribute text:style-name { styleNameRef }? + } +text-index-entry-span = + element text:index-entry-span { + attribute text:style-name { styleNameRef }?, + text + } +text-index-entry-bibliography = + element text:index-entry-bibliography { + text-index-entry-bibliography-attrs + } +text-index-entry-bibliography-attrs &= + attribute text:style-name { styleNameRef }? +text-index-entry-bibliography-attrs &= + attribute text:bibliography-data-field { + "address" + | "annote" + | "author" + | "bibliography-type" + | "booktitle" + | "chapter" + | "custom1" + | "custom2" + | "custom3" + | "custom4" + | "custom5" + | "edition" + | "editor" + | "howpublished" + | "identifier" + | "institution" + | "isbn" + | "issn" + | "journal" + | "month" + | "note" + | "number" + | "organizations" + | "pages" + | "publisher" + | "report-type" + | "school" + | "series" + | "title" + | "url" + | "volume" + | "year" + } +text-index-entry-tab-stop = + element text:index-entry-tab-stop { + attribute text:style-name { styleNameRef }?, + text-index-entry-tab-stop-attrs + } +text-index-entry-tab-stop-attrs &= + attribute style:leader-char { character }? +text-index-entry-tab-stop-attrs &= + attribute style:type { "right" } + | (attribute style:type { "left" }, + attribute style:position { length }) +text-index-entry-link-start = + element text:index-entry-link-start { + attribute text:style-name { styleNameRef }? + } +text-index-entry-link-end = + element text:index-entry-link-end { + attribute text:style-name { styleNameRef }? + } +table-table = + element table:table { + table-table-attlist, + table-table-source?, + office-dde-source?, + table-scenario?, + office-forms?, + table-shapes?, + table-columns-and-groups, + table-rows-and-groups + } +table-columns-and-groups = + (table-table-column-group | table-columns-no-group)+ +table-columns-no-group = + (table-columns, (table-table-header-columns, table-columns?)?) + | (table-table-header-columns, table-columns?) +table-columns = table-table-columns | table-table-column+ +table-rows-and-groups = (table-table-row-group | table-rows-no-group)+ +table-rows-no-group = + (table-rows, (table-table-header-rows, table-rows?)?) + | (table-table-header-rows, table-rows?) +table-rows = + table-table-rows | (text-soft-page-break?, table-table-row)+ +table-table-attlist &= attribute table:name { \string }? +table-table-attlist &= attribute table:style-name { styleNameRef }? +table-table-attlist &= + [ a:defaultValue = "false" ] attribute table:protected { boolean }?, + attribute table:protection-key { text }? +table-table-attlist &= + [ a:defaultValue = "true" ] attribute table:print { boolean }? +table-table-attlist &= + attribute table:print-ranges { cellRangeAddressList }? +table-table-row = + element table:table-row { + table-table-row-attlist, + (table-table-cell | table-covered-table-cell)+ + } +table-table-row-attlist &= + [ a:defaultValue = "1" ] + attribute table:number-rows-repeated { positiveInteger }? +table-table-row-attlist &= attribute table:style-name { styleNameRef }? +table-table-row-attlist &= + attribute table:default-cell-style-name { styleNameRef }? +table-table-row-attlist &= + [ a:defaultValue = "visible" ] + attribute table:visibility { table-visibility-value }? +table-visibility-value = "visible" | "collapse" | "filter" +table-table-cell = + element table:table-cell { + table-table-cell-attlist, + table-table-cell-attlist-extra, + table-table-cell-content + } +table-covered-table-cell = + element table:covered-table-cell { + table-table-cell-attlist, table-table-cell-content + } +table-table-cell-content = + table-cell-range-source?, + office-annotation?, + table-detective?, + text-content* +table-table-cell-attlist &= + [ a:defaultValue = "1" ] + attribute table:number-columns-repeated { positiveInteger }? +table-table-cell-attlist-extra &= + [ a:defaultValue = "1" ] + attribute table:number-columns-spanned { positiveInteger }?, + [ a:defaultValue = "1" ] + attribute table:number-rows-spanned { positiveInteger }? +table-table-cell-attlist &= attribute table:style-name { styleNameRef }? +table-table-cell-attlist &= + attribute table:content-validation-name { \string }? +table-table-cell-attlist &= attribute table:formula { \string }? +table-table-cell-attlist-extra &= + attribute table:number-matrix-columns-spanned { positiveInteger }?, + attribute table:number-matrix-rows-spanned { positiveInteger }? +table-table-cell-attlist &= common-value-and-type-attlist? +table-table-cell-attlist &= + [ a:defaultValue = "false" ] attribute table:protect { boolean }? +table-table-column = + element table:table-column { table-table-column-attlist, empty } +table-table-column-attlist &= + [ a:defaultValue = "1" ] + attribute table:number-columns-repeated { positiveInteger }? +table-table-column-attlist &= + attribute table:style-name { styleNameRef }? +table-table-column-attlist &= + [ a:defaultValue = "visible" ] + attribute table:visibility { table-visibility-value }? +table-table-column-attlist &= + attribute table:default-cell-style-name { styleNameRef }? +table-table-header-columns = + element table:table-header-columns { table-table-column+ } +table-table-columns = + element table:table-columns { table-table-column+ } +table-table-column-group = + element table:table-column-group { + table-table-column-group-attlist, table-columns-and-groups + } +table-table-column-group-attlist &= + [ a:defaultValue = "true" ] attribute table:display { boolean }? +table-table-header-rows = + element table:table-header-rows { + (text-soft-page-break?, table-table-row)+ + } +table-table-rows = + element table:table-rows { (text-soft-page-break?, table-table-row)+ } +table-table-row-group = + element table:table-row-group { + table-table-row-group-attlist, table-rows-and-groups + } +table-table-row-group-attlist &= + [ a:defaultValue = "true" ] attribute table:display { boolean }? +table-table-attlist &= + [ a:defaultValue = "false" ] attribute table:is-sub-table { boolean }? +cellAddress = + xsd:string { + pattern = "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+" + } +cellRangeAddress = + xsd:string { + pattern = + "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?" + } +cellRangeAddressList = + # Value is a space separated list of "cellRangeAddress" patterns + xsd:string +table-table-source = + element table:table-source { + table-table-source-attlist, table-linked-source-attlist, empty + } +table-table-source-attlist &= + [ a:defaultValue = "copy-all" ] + attribute table:mode { "copy-all" | "copy-results-only" }? +table-table-source-attlist &= attribute table:table-name { \string }? +table-linked-source-attlist &= + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "onRequest" ] + attribute xlink:actuate { "onRequest" }?, + attribute xlink:href { anyURI } +table-linked-source-attlist &= attribute table:filter-name { \string }? +table-linked-source-attlist &= + attribute table:filter-options { \string }? +table-linked-source-attlist &= + attribute table:refresh-delay { duration }? +table-scenario = + element table:scenario { table-scenario-attlist, empty } +table-scenario-attlist &= + attribute table:scenario-ranges { cellRangeAddressList } +table-scenario-attlist &= attribute table:is-active { boolean } +table-scenario-attlist &= + [ a:defaultValue = "true" ] + attribute table:display-border { boolean }? +table-scenario-attlist &= attribute table:border-color { color }? +table-scenario-attlist &= + [ a:defaultValue = "true" ] attribute table:copy-back { boolean }? +table-scenario-attlist &= + [ a:defaultValue = "true" ] attribute table:copy-styles { boolean }? +table-scenario-attlist &= + [ a:defaultValue = "true" ] attribute table:copy-formulas { boolean }? +table-scenario-attlist &= attribute table:comment { \string }? +table-scenario-attlist &= attribute table:protected { boolean }? +table-shapes = element table:shapes { shape+ } +table-cell-range-source = + element table:cell-range-source { + table-table-cell-range-source-attlist, + table-linked-source-attlist, + empty + } +table-table-cell-range-source-attlist &= + attribute table:name { \string } +table-table-cell-range-source-attlist &= + attribute table:last-column-spanned { positiveInteger }, + attribute table:last-row-spanned { positiveInteger } +table-detective = + element table:detective { table-highlighted-range*, table-operation* } +table-operation = + element table:operation { table-operation-attlist, empty } +table-operation-attlist &= + attribute table:name { + "trace-dependents" + | "remove-dependents" + | "trace-precedents" + | "remove-precedents" + | "trace-errors" + } +table-operation-attlist &= attribute table:index { nonNegativeInteger } +table-highlighted-range = + element table:highlighted-range { + (table-highlighted-range-attlist + | table-highlighted-range-attlist-invalid), + empty + } +table-highlighted-range-attlist &= + attribute table:cell-range-address { cellRangeAddress }? +table-highlighted-range-attlist &= + attribute table:direction { + "from-another-table" | "to-another-table" | "from-same-table" + } +table-highlighted-range-attlist &= + [ a:defaultValue = "false" ] + attribute table:contains-error { boolean }? +table-highlighted-range-attlist-invalid &= + attribute table:marked-invalid { boolean } +office-spreadsheet-attlist &= + [ a:defaultValue = "false" ] + attribute table:structure-protected { boolean }?, + attribute table:protection-key { \string }? +table-calculation-settings = + element table:calculation-settings { + table-calculation-setting-attlist, + table-null-date?, + table-iteration? + } +table-calculation-setting-attlist &= + [ a:defaultValue = "true" ] + attribute table:case-sensitive { boolean }? +table-calculation-setting-attlist &= + [ a:defaultValue = "false" ] + attribute table:precision-as-shown { boolean }? +table-calculation-setting-attlist &= + [ a:defaultValue = "true" ] + attribute table:search-criteria-must-apply-to-whole-cell { boolean }? +table-calculation-setting-attlist &= + [ a:defaultValue = "true" ] + attribute table:automatic-find-labels { boolean }? +table-calculation-setting-attlist &= + [ a:defaultValue = "true" ] + attribute table:use-regular-expressions { boolean }? +table-calculation-setting-attlist &= + [ a:defaultValue = "1930" ] + attribute table:null-year { positiveInteger }? +table-null-date = + element table:null-date { + [ a:defaultValue = "date" ] + attribute table:value-type { valueType }?, + [ a:defaultValue = "1899-12-30" ] + attribute table:date-value { date }?, + empty + } +table-iteration = + element table:iteration { + [ a:defaultValue = "disable" ] + attribute table:status { "enable" | "disable" }?, + [ a:defaultValue = "100" ] + attribute table:steps { positiveInteger }?, + [ a:defaultValue = "0.001" ] + attribute table:maximum-difference { double }?, + empty + } +table-content-validations = + element table:content-validations { table-content-validation+ } +table-content-validation = + element table:content-validation { + table-validation-attlist, + table-help-message?, + (table-error-message + | (table-error-macro, office-event-listeners?))? + } +table-validation-attlist &= attribute table:name { \string } +table-validation-attlist &= attribute table:condition { \string }? +table-validation-attlist &= + attribute table:base-cell-address { cellAddress }? +table-validation-attlist &= + [ a:defaultValue = "true" ] + attribute table:allow-empty-cell { boolean }? +table-validation-attlist &= + [ a:defaultValue = "unsorted" ] + attribute table:display-list { + "none" | "unsorted" | "sort-ascending" + }? +table-help-message = + element table:help-message { + attribute table:title { \string }?, + [ a:defaultValue = "false" ] attribute table:display { boolean }?, + text-p* + } +table-error-message = + element table:error-message { + attribute table:title { \string }?, + [ a:defaultValue = "false" ] attribute table:display { boolean }?, + [ a:defaultValue = "stop" ] + attribute table:message-type { + "stop" | "warning" | "information" + }?, + text-p* + } +table-error-macro = + element table:error-macro { + [ a:defaultValue = "true" ] attribute table:execute { boolean }? + } +table-label-ranges = element table:label-ranges { table-label-range* } +table-label-range = + element table:label-range { table-label-range-attlist, empty } +table-label-range-attlist &= + attribute table:label-cell-range-address { cellRangeAddress } +table-label-range-attlist &= + attribute table:data-cell-range-address { cellRangeAddress } +table-label-range-attlist &= + attribute table:orientation { "column" | "row" } +table-named-expressions = + element table:named-expressions { + (table-named-range | table-named-expression)* + } +table-named-range = + element table:named-range { table-named-range-attlist, empty } +table-named-range-attlist &= + attribute table:name { \string }, + attribute table:cell-range-address { cellRangeAddress }, + attribute table:base-cell-address { cellAddress }?, + [ a:defaultValue = "none" ] + attribute table:range-usable-as { + "none" + | list { + ("print-range" | "filter" | "repeat-row" | "repeat-column")+ + } + }? +table-named-expression = + element table:named-expression { + table-named-expression-attlist, empty + } +table-named-expression-attlist &= + attribute table:name { \string }, + attribute table:expression { \string }, + attribute table:base-cell-address { cellAddress }? +table-database-ranges = + element table:database-ranges { table-database-range* } +table-database-range = + element table:database-range { + table-database-range-attlist, + (table-database-source-sql + | table-database-source-table + | table-database-source-query)?, + table-filter?, + table-sort?, + table-subtotal-rules? + } +table-database-range-attlist &= attribute table:name { \string }? +table-database-range-attlist &= + [ a:defaultValue = "false" ] attribute table:is-selection { boolean }? +table-database-range-attlist &= + [ a:defaultValue = "false" ] + attribute table:on-update-keep-styles { boolean }? +table-database-range-attlist &= + [ a:defaultValue = "true" ] + attribute table:on-update-keep-size { boolean }? +table-database-range-attlist &= + [ a:defaultValue = "true" ] + attribute table:has-persistent-data { boolean }? +table-database-range-attlist &= + [ a:defaultValue = "row" ] + attribute table:orientation { "column" | "row" }? +table-database-range-attlist &= + [ a:defaultValue = "true" ] + attribute table:contains-header { boolean }? +table-database-range-attlist &= + [ a:defaultValue = "false" ] + attribute table:display-filter-buttons { boolean }? +table-database-range-attlist &= + attribute table:target-range-address { cellRangeAddress } +table-database-range-attlist &= + attribute table:refresh-delay { boolean }? +table-database-source-sql = + element table:database-source-sql { + table-database-source-sql-attlist, empty + } +table-database-source-sql-attlist &= + attribute table:database-name { \string } +table-database-source-sql-attlist &= + attribute table:sql-statement { \string } +table-database-source-sql-attlist &= + [ a:defaultValue = "false" ] + attribute table:parse-sql-statement { boolean }? +table-database-source-query = + element table:database-source-table { + table-database-source-table-attlist, empty + } +table-database-source-table-attlist &= + attribute table:database-name { \string } +table-database-source-table-attlist &= + attribute table:database-table-name { \string } +table-database-source-table = + element table:database-source-query { + table-database-source-query-attlist, empty + } +table-database-source-query-attlist &= + attribute table:database-name { \string } +table-database-source-query-attlist &= + attribute table:query-name { \string } +table-sort = element table:sort { table-sort-attlist, table-sort-by+ } +table-sort-attlist &= + [ a:defaultValue = "true" ] + attribute table:bind-styles-to-content { boolean }? +table-sort-attlist &= + attribute table:target-range-address { cellRangeAddress }? +table-sort-attlist &= + [ a:defaultValue = "false" ] + attribute table:case-sensitive { boolean }? +table-sort-attlist &= attribute table:language { languageCode }? +table-sort-attlist &= attribute table:country { countryCode }? +table-sort-attlist &= attribute table:algorithm { \string }? +table-sort-by = element table:sort-by { table-sort-by-attlist, empty } +table-sort-by-attlist &= + attribute table:field-number { nonNegativeInteger } +table-sort-by-attlist &= + [ a:defaultValue = "automatic" ] + attribute table:data-type { + "text" | "number" | "automatic" | \string + }? +table-sort-by-attlist &= + [ a:defaultValue = "ascending" ] + attribute table:order { "ascending" | "descending" }? +table-subtotal-rules = + element table:subtotal-rules { + table-subtotal-rules-attlist, + table-sort-groups?, + table-subtotal-rule* + } +table-subtotal-rules-attlist &= + [ a:defaultValue = "true" ] + attribute table:bind-styles-to-content { boolean }? +table-subtotal-rules-attlist &= + [ a:defaultValue = "false" ] + attribute table:case-sensitive { boolean }? +table-subtotal-rules-attlist &= + [ a:defaultValue = "false" ] + attribute table:page-breaks-on-group-change { boolean }? +table-sort-groups = + element table:sort-groups { table-sort-groups-attlist, empty } +table-sort-groups-attlist &= + [ a:defaultValue = "automatic" ] + attribute table:data-type { + "text" | "number" | "automatic" | \string + }? +table-sort-groups-attlist &= + [ a:defaultValue = "ascending" ] + attribute table:order { "ascending" | "descending" }? +table-subtotal-rule = + element table:subtotal-rule { + table-subtotal-rule-attlist, table-subtotal-field* + } +table-subtotal-rule-attlist &= + attribute table:group-by-field-number { nonNegativeInteger } +table-subtotal-field = + element table:subtotal-field { table-subtotal-field-attlist, empty } +table-subtotal-field-attlist &= + attribute table:field-number { nonNegativeInteger } +table-subtotal-field-attlist &= + attribute table:function { + "auto" + | "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + } +table-filter = + element table:filter { + table-filter-attlist, + (table-filter-condition | table-filter-and | table-filter-or) + } +table-filter-attlist &= + attribute table:target-range-address { cellRangeAddress }? +table-filter-attlist &= + [ a:defaultValue = "self" ] + attribute table:condition-source { "self" | "cell-range" }? +table-filter-attlist &= + attribute table:condition-source-range-address { cellRangeAddress }? +table-filter-attlist &= + [ a:defaultValue = "true" ] + attribute table:display-duplicates { boolean }? +table-filter-and = + element table:filter-and { + (table-filter-or | table-filter-condition)+ + } +table-filter-or = + element table:filter-or { + (table-filter-and | table-filter-condition)+ + } +table-filter-condition = + element table:filter-condition { + table-filter-condition-attlist, empty + } +table-filter-condition-attlist &= + attribute table:field-number { nonNegativeInteger } +table-filter-condition-attlist &= attribute table:value { \string } +table-filter-condition-attlist &= attribute table:operator { \string } +table-filter-condition-attlist &= + [ a:defaultValue = "false" ] + attribute table:case-sensitive { \string }? +table-filter-condition-attlist &= + [ a:defaultValue = "text" ] + attribute table:data-type { "text" | "number" }? +table-data-pilot-tables = + element table:data-pilot-tables { table-data-pilot-table* } +table-data-pilot-table = + element table:data-pilot-table { + table-data-pilot-table-attlist, + (table-database-source-sql + | table-database-source-table + | table-database-source-query + | table-source-service + | table-source-cell-range)?, + table-data-pilot-field+ + } +table-data-pilot-table-attlist &= attribute table:name { \string } +table-data-pilot-table-attlist &= + attribute table:application-data { \string }? +table-data-pilot-table-attlist &= + [ a:defaultValue = "both" ] + attribute table:grand-total { "none" | "row" | "column" | "both" }? +table-data-pilot-table-attlist &= + [ a:defaultValue = "false" ] + attribute table:ignore-empty-rows { boolean }? +table-data-pilot-table-attlist &= + [ a:defaultValue = "false" ] + attribute table:identify-categories { boolean }? +table-data-pilot-table-attlist &= + attribute table:target-range-address { cellRangeAddress } +table-data-pilot-table-attlist &= + attribute table:buttons { cellRangeAddressList }? +table-data-pilot-table-attlist &= + [ a:defaultValue = "true" ] + attribute table:show-filter-button { boolean }? +table-data-pilot-table-attlist &= + [ a:defaultValue = "true" ] + attribute table:drill-down-on-double-click { boolean }? +table-source-cell-range = + element table:source-cell-range { + table-source-cell-range-attlist, table-filter? + } +table-source-cell-range-attlist &= + attribute table:cell-range-address { cellRangeAddress } +table-source-service = + element table:source-service { table-source-service-attlist, empty } +table-source-service-attlist &= attribute table:name { \string } +table-source-service-attlist &= attribute table:source-name { \string } +table-source-service-attlist &= attribute table:object-name { \string } +table-source-service-attlist &= attribute table:user-name { \string }? +table-source-service-attlist &= attribute table:password { \string }? +table-data-pilot-field = + element table:data-pilot-field { + table-data-pilot-field-attlist, + table-data-pilot-level?, + table-data-pilot-field-reference?, + table-data-pilot-groups? + } +table-data-pilot-field-attlist &= + attribute table:source-field-name { \string } +table-data-pilot-field-attlist &= + attribute table:orientation { "row" | "column" | "data" | "hidden" } + | (attribute table:orientation { "page" }, + attribute table:selected-page { \string }) +table-data-pilot-field-attlist &= + [ a:defaultValue = "false" ] + attribute table:is-data-layout-field { \string }? +table-data-pilot-field-attlist &= + attribute table:function { + "auto" + | "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + }? +table-data-pilot-field-attlist &= + [ a:defaultValue = "-1" ] attribute table:used-hierarchy { integer }? +table-data-pilot-level = + element table:data-pilot-level { + table-data-pilot-level-attlist, + table-data-pilot-subtotals?, + table-data-pilot-members?, + table-data-pilot-display-info?, + table-data-pilot-sort-info?, + table-data-pilot-layout-info? + } +table-data-pilot-level-attlist &= + attribute table:show-empty { boolean }? +table-data-pilot-subtotals = + element table:data-pilot-subtotals { table-data-pilot-subtotal* } +table-data-pilot-subtotal = + element table:data-pilot-subtotal { + table-data-pilot-subtotal-attlist, empty + } +table-data-pilot-subtotal-attlist &= + attribute table:function { + "auto" + | "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + } +table-data-pilot-members = + element table:data-pilot-members { table-data-pilot-member* } +table-data-pilot-member = + element table:data-pilot-member { + table-data-pilot-member-attlist, empty + } +table-data-pilot-member-attlist &= attribute table:name { \string } +table-data-pilot-member-attlist &= attribute table:display { boolean }? +table-data-pilot-member-attlist &= + attribute table:show-details { boolean }? +table-data-pilot-display-info = + element table:data-pilot-display-info { + table-data-pilot-display-info-attlist, empty + } +table-data-pilot-display-info-attlist &= + attribute table:enabled { boolean } +table-data-pilot-display-info-attlist &= + attribute table:data-field { \string } +table-data-pilot-display-info-attlist &= + attribute table:member-count { nonNegativeInteger } +table-data-pilot-display-info-attlist &= + attribute table:display-member-mode { "from-top" | "from-bottom" } +table-data-pilot-sort-info = + element table:data-pilot-sort-info { + table-data-pilot-sort-info-attlist, empty + } +table-data-pilot-sort-info-attlist &= + (attribute table:sort-mode { "data" }, + attribute table:data-field { \string }) + | attribute table:sort-mode { "none" | "manual" | "name" } +table-data-pilot-sort-info-attlist &= + attribute table:order { "ascending" | "descending" } +table-data-pilot-layout-info = + element table:data-pilot-layout-info { + table-data-pilot-layout-info-attlist, empty + } +table-data-pilot-layout-info-attlist &= + attribute table:layout-mode { + "tabular-layout" + | "outline-subtotals-top" + | "outline-subtotals-bottom" + } +table-data-pilot-layout-info-attlist &= + attribute table:add-empty-lines { boolean } +table-data-pilot-field-reference = + element table:data-pilot-field-reference { + table-data-pilot-field-reference-attlist + } +table-data-pilot-field-reference-attlist &= + attribute table:field-name { \string } +table-data-pilot-field-reference-attlist &= + (attribute table:member-type { "named" }, + attribute table:member-name { \string }) + | attribute table:member-type { "previous" | "next" } +table-data-pilot-field-reference-attlist &= + attribute table:type { + "none" + | "member-difference" + | "member-percentage" + | "member-percentage-difference" + | "running-total" + | "row-percentage" + | "column-percentage" + | "total-percentage" + | "index" + } +table-data-pilot-groups = + element table:data-pilot-groups { + table-data-pilot-groups-attlist, table-data-pilot-group+ + } +table-data-pilot-groups-attlist &= + attribute table:source-field-name { \string } +table-data-pilot-groups-attlist &= + attribute table:date-start { dateOrDateTime | "auto" } + | attribute table:start { double | "auto" } +table-data-pilot-groups-attlist &= + attribute table:date-end { dateOrDateTime | "auto" } + | attribute table:end { double | "auto" } +table-data-pilot-groups-attlist &= attribute table:step { double } +table-data-pilot-groups-attlist &= + attribute table:grouped-by { + "seconds" + | "minutes" + | "hours" + | "days" + | "months" + | "quarters" + | "years" + } +table-data-pilot-group = + element table:data-pilot-group { + table-data-pilot-group-attlist, table-data-pilot-group-member+ + } +table-data-pilot-group-attlist &= attribute table:name { \string } +table-data-pilot-group-member = + element table:data-pilot-group-member { + table-data-pilot-group-member-attlist + } +table-data-pilot-group-member-attlist &= + attribute table:name { \string } +table-consolidation = + element table:consolidation { table-consolidation-attlist, empty } +table-consolidation-attlist &= + attribute table:function { + "auto" + | "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + } +table-consolidation-attlist &= + attribute table:source-cell-range-addresses { cellRangeAddressList } +table-consolidation-attlist &= + attribute table:target-cell-address { cellAddress } +table-consolidation-attlist &= + [ a:defaultValue = "none" ] + attribute table:use-labels { "none" | "row" | "column" | "both" }? +table-consolidation-attlist &= + [ a:defaultValue = "false" ] + attribute table:link-to-source-data { boolean }? +table-dde-links = element table:dde-links { table-dde-link+ } +table-tracked-changes = + element table:tracked-changes { + table-tracked-changes-attlist, + (table-cell-content-change + | table-insertion + | table-deletion + | table-movement)* + } +table-tracked-changes-attlist &= + [ a:defaultValue = "false" ] + attribute table:track-changes { boolean }? +table-insertion = + element table:insertion { + table-insertion-attlist, + common-table-change-attlist, + office-change-info, + table-dependencies?, + table-deletions? + } +table-insertion-attlist &= + attribute table:type { "row" | "column" | "table" } +table-insertion-attlist &= attribute table:position { integer } +table-insertion-attlist &= + [ a:defaultValue = "1" ] attribute table:count { positiveInteger }? +table-insertion-attlist &= attribute table:table { integer }? +table-dependencies = element table:dependencies { table-dependency+ } +table-dependency = + element table:dependency { + attribute table:id { \string }, + empty + } +table-deletions = + element table:deletions { + (table-cell-content-deletion | table-change-deletion)+ + } +table-cell-content-deletion = + element table:cell-content-deletion { + attribute table:id { \string }?, + table-cell-address?, + table-change-track-table-cell? + } +table-change-deletion = + element table:change-deletion { + attribute table:id { \string }?, + empty + } +table-deletion = + element table:deletion { + table-deletion-attlist, + common-table-change-attlist, + office-change-info, + table-dependencies?, + table-deletions?, + table-cut-offs? + } +table-deletion-attlist &= + attribute table:type { "row" | "column" | "table" } +table-deletion-attlist &= attribute table:position { integer } +table-deletion-attlist &= attribute table:table { integer }? +table-deletion-attlist &= + attribute table:multi-deletion-spanned { integer }? +table-cut-offs = + element table:cut-offs { + table-movement-cut-off+ + | (table-insertion-cut-off, table-movement-cut-off*) + } +table-insertion-cut-off = + element table:insertion-cut-off { + table-insertion-cut-off-attlist, empty + } +table-insertion-cut-off-attlist &= attribute table:id { \string } +table-insertion-cut-off-attlist &= attribute table:position { integer } +table-movement-cut-off = + element table:movement-cut-off { + table-movement-cut-off-attlist, empty + } +table-movement-cut-off-attlist &= + attribute table:position { integer } + | (attribute table:start-position { integer }, + attribute table:end-position { integer }) +table-movement = + element table:movement { + common-table-change-attlist, + table-source-range-address, + table-target-range-address, + office-change-info, + table-dependencies?, + table-deletions? + } +table-source-range-address = + element table:source-range-address { + common-table-range-attlist, empty + } +table-target-range-address = + element table:target-range-address { + common-table-range-attlist, empty + } +common-table-range-attlist &= + common-table-cell-address-attlist + | common-table-cell-range-address-attlist +common-table-cell-address-attlist &= + attribute table:column { integer }, + attribute table:row { integer }, + attribute table:table { integer } +common-table-cell-range-address-attlist &= + attribute table:start-column { integer }, + attribute table:start-row { integer }, + attribute table:start-table { integer }, + attribute table:end-column { integer }, + attribute table:end-row { integer }, + attribute table:end-table { integer } +table-change-track-table-cell &= + element table:change-track-table-cell { + table-change-track-table-cell-attlist, text-p* + } +table-change-track-table-cell-attlist &= + attribute table:cell-address { cellAddress }? +table-change-track-table-cell-attlist &= + [ a:defaultValue = "false" ] + attribute table:matrix-covered { boolean }? +table-change-track-table-cell-attlist &= + attribute table:formula { \string }?, + attribute table:number-matrix-columns-spanned { positiveInteger }?, + attribute table:number-matrix-rows-spanned { positiveInteger }?, + common-value-and-type-attlist? +table-cell-content-change = + element table:cell-content-change { + common-table-change-attlist, + table-cell-address, + office-change-info, + table-dependencies?, + table-deletions?, + table-previous + } +table-cell-address = + element table:cell-address { + common-table-cell-address-attlist, empty + } +table-previous = + element table:previous { + attribute table:id { \string }?, + table-change-track-table-cell + } +common-table-change-attlist &= attribute table:id { \string } +common-table-change-attlist &= + [ a:defaultValue = "pending" ] + attribute table:acceptance-state { + "accepted" | "rejected" | "pending" + }? +common-table-change-attlist &= + attribute table:rejecting-change-id { \string }? +style-handout-master = + element style:handout-master { + common-presentation-header-footer-attlist, + style-handout-master-attlist, + shape* + } +style-handout-master-attlist &= + attribute presentation:presentation-page-layout-name { styleNameRef }? +style-handout-master-attlist &= + attribute style:page-layout-name { styleNameRef } +style-handout-master-attlist &= + attribute draw:style-name { styleNameRef }? +draw-layer-set = element draw:layer-set { draw-layer* } +draw-layer = + element draw:layer { draw-layer-attlist, svg-title?, svg-desc? } +draw-layer-attlist &= attribute draw:name { \string } +draw-layer-attlist &= + [ a:defaultValue = "false" ] attribute draw:protected { boolean }? +draw-layer-attlist &= + [ a:defaultValue = "always" ] + attribute draw:display { "always" | "screen" | "printer" | "none" }? +draw-page = + element draw:page { + common-presentation-header-footer-attlist, + draw-page-attlist, + office-forms?, + shape*, + (presentation-animations | animation-element)?, + presentation-notes? + } +draw-page-attlist &= attribute draw:name { \string }? +draw-page-attlist &= attribute draw:style-name { styleNameRef }? +draw-page-attlist &= attribute draw:master-page-name { styleNameRef } +draw-page-attlist &= + attribute presentation:presentation-page-layout-name { styleNameRef }? +common-presentation-header-footer-attlist &= + attribute presentation:use-header-name { \string }? +common-presentation-header-footer-attlist &= + attribute presentation:use-footer-name { \string }? +common-presentation-header-footer-attlist &= + attribute presentation:use-date-time-name { \string }? +draw-page-attlist &= attribute draw:id { ID }? +draw-page-attlist &= attribute draw:nav-order { IDREFS }? +shape = + draw-rect + | draw-line + | draw-polyline + | draw-polygon + | draw-regular-polygon + | draw-path + | draw-circle + | draw-ellipse + | draw-g + | draw-page-thumbnail + | draw-frame + | draw-measure + | draw-caption + | draw-connector + | draw-control + | dr3d-scene + | draw-custom-shape +draw-rect = + element draw:rect { + draw-rect-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-rect-attlist &= attribute draw:corner-radius { nonNegativeLength }? +draw-line = + element draw:line { + draw-line-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-line-attlist &= + attribute svg:x1 { coordinate }, + attribute svg:y1 { coordinate } +draw-line-attlist &= + attribute svg:x2 { coordinate }, + attribute svg:y2 { coordinate } +draw-polyline = + element draw:polyline { + common-draw-points-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +common-draw-points-attlist = attribute draw:points { points } +draw-polygon = + element draw:polygon { + common-draw-points-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-regular-polygon = + element draw:regular-polygon { + draw-regular-polygon-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-regular-polygon-attlist &= + attribute draw:concave { "false" } + | (attribute draw:concave { "true" }, + draw-regular-polygon-sharpness-attlist) +draw-regular-polygon-attlist &= + attribute draw:corners { positiveInteger } +draw-regular-polygon-sharpness-attlist = + attribute draw:sharpness { percent } +draw-path = + element draw:path { + common-draw-path-data-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +common-draw-path-data-attlist = attribute svg:d { pathData } +draw-circle = + element draw:circle { + draw-circle-attlist, + common-draw-circle-ellipse-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +common-draw-circle-ellipse-attlist &= + (attribute svg:cx { coordinate }, + attribute svg:cy { coordinate })? +draw-circle-attlist &= attribute svg:r { length }? +common-draw-circle-ellipse-attlist &= + [ a:defaultValue = "full" ] + attribute draw:kind { "full" | "section" | "cut" | "arc" }? +common-draw-circle-ellipse-attlist &= + attribute draw:start-angle { double }? +common-draw-circle-ellipse-attlist &= + attribute draw:end-angle { double }? +draw-ellipse = + element draw:ellipse { + common-draw-circle-ellipse-attlist, + draw-ellipse-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-ellipse-attlist &= + (attribute svg:rx { length }, + attribute svg:ry { length })? +draw-connector = + element draw:connector { + draw-connector-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-connector-attlist &= + [ a:defaultValue = "standard" ] + attribute draw:type { "standard" | "lines" | "line" | "curve" }? +draw-connector-attlist &= + (attribute svg:x1 { coordinate }, + attribute svg:y1 { coordinate })? +draw-connector-attlist &= attribute draw:start-shape { IDREF }? +draw-connector-attlist &= + attribute draw:start-glue-point { nonNegativeInteger }? +draw-connector-attlist &= + (attribute svg:x2 { coordinate }, + attribute svg:y2 { coordinate })? +draw-connector-attlist &= attribute draw:end-shape { IDREF }? +draw-connector-attlist &= + attribute draw:end-glue-point { nonNegativeInteger }? +draw-connector-attlist &= + attribute draw:line-skew { + list { length, (length, length?)? } + }? +draw-caption = + element draw:caption { + draw-caption-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-caption-attlist &= + (attribute draw:caption-point-x { coordinate }, + attribute draw:caption-point-y { coordinate })? +draw-caption-attlist &= + attribute draw:corner-radius { nonNegativeLength }? +draw-measure = + element draw:measure { + draw-measure-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-measure-attlist &= + attribute svg:x1 { coordinate }, + attribute svg:y1 { coordinate } +draw-measure-attlist &= + attribute svg:x2 { coordinate }, + attribute svg:y2 { coordinate } +draw-control = + element draw:control { + draw-control-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + draw-glue-point* + } +draw-control-attlist &= attribute draw:control { IDREF } +draw-page-thumbnail = + element draw:page-thumbnail { + draw-page-thumbnail-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + presentation-shape-attlist, + common-draw-shape-with-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc? + } +draw-page-thumbnail-attlist = + attribute draw:page-number { positiveInteger }? +draw-g = + element draw:g { + draw-g-attlist, + common-draw-z-index-attlist, + common-draw-name-attlist, + common-draw-id-attlist, + common-draw-style-name-attlist, + common-text-spreadsheet-shape-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + shape* + } +draw-g-attlist &= attribute svg:y { coordinate }? +common-draw-name-attlist &= attribute draw:name { \string }? +common-draw-caption-id-attlist &= attribute draw:caption-id { IDREF }? +common-draw-position-attlist = + attribute svg:x { coordinate }?, + attribute svg:y { coordinate }? +common-draw-size-attlist = + attribute svg:width { length }?, + attribute svg:height { length }? +common-draw-transform-attlist = attribute draw:transform { \string }? +common-draw-viewbox-attlist = + attribute svg:viewBox { + list { integer, integer, integer, integer } + } +common-draw-style-name-attlist = + (attribute draw:style-name { styleNameRef }?, + attribute draw:class-names { styleNameRefs }?) + | (attribute presentation:style-name { styleNameRef }?, + attribute presentation:class-names { styleNameRefs }?) +common-draw-text-style-name-attlist = + attribute draw:text-style-name { styleNameRef }? +common-draw-layer-name-attlist = attribute draw:layer { xsd:string }? +common-draw-id-attlist = attribute draw:id { ID }? +common-draw-z-index-attlist = + attribute draw:z-index { nonNegativeInteger }? +common-text-spreadsheet-shape-attlist &= + attribute table:end-cell-address { cellAddress }?, + attribute table:end-x { coordinate }?, + attribute table:end-y { coordinate }? +common-text-spreadsheet-shape-attlist &= + attribute table:table-background { boolean }? +common-text-spreadsheet-shape-attlist &= common-text-anchor-attlist +common-text-anchor-attlist &= + attribute text:anchor-type { + "page" | "frame" | "paragraph" | "char" | "as-char" + }? +common-text-anchor-attlist &= + attribute text:anchor-page-number { positiveInteger }? +draw-text = (text-p | text-list)* +common-draw-shape-with-styles-attlist = + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-draw-transform-attlist, + common-draw-name-attlist, + common-text-spreadsheet-shape-attlist +common-draw-shape-with-text-and-styles-attlist = + common-draw-shape-with-styles-attlist, + common-draw-text-style-name-attlist +draw-glue-point = + element draw:glue-point { draw-glue-point-attlist, empty } +draw-glue-point-attlist &= attribute draw:id { nonNegativeInteger } +draw-glue-point-attlist &= + attribute svg:x { distance | percent }, + attribute svg:y { distance | percent } +draw-glue-point-attlist &= + attribute draw:align { + "top-left" + | "top" + | "top-right" + | "left" + | "center" + | "right" + | "bottom-left" + | "bottom-right" + }? +draw-glue-points-attlist &= + attribute draw:escape-direction { + "auto" + | "left" + | "right" + | "up" + | "down" + | "horizontal" + | "vertical" + } +svg-title = element svg:title { text } +svg-desc = element svg:desc { text } +draw-frame = + element draw:frame { + common-draw-shape-with-text-and-styles-attlist, + common-draw-position-attlist, + common-draw-rel-size-attlist, + common-draw-caption-id-attlist, + presentation-shape-attlist, + draw-frame-attlist, + (draw-text-box + | draw-image + | draw-object + | draw-object-ole + | draw-applet + | draw-floating-frame + | draw-plugin)*, + office-event-listeners?, + draw-glue-point*, + draw-image-map?, + svg-title?, + svg-desc?, + (draw-contour-polygon | draw-contour-path)? + } +common-draw-rel-size-attlist = + common-draw-size-attlist, + attribute style:rel-width { percent | "scale" | "scale-min" }?, + attribute style:rel-height { percent | "scale" | "scale-min" }? +draw-frame-attlist &= attribute draw:copy-of { \string }? +draw-text-box = + element draw:text-box { draw-text-box-attlist, text-content* } +draw-text-box-attlist &= attribute draw:chain-next-name { \string }? +draw-text-box-attlist &= + attribute draw:corner-radius { nonNegativeLength }? +draw-text-box-attlist &= + attribute fo:min-height { length | percent }?, + attribute fo:min-width { length | percent }? +draw-text-box-attlist &= + attribute fo:max-height { length | percent }?, + attribute fo:max-width { length | percent }? +draw-text-box-attlist &= text-id? +draw-image = + element draw:image { + draw-image-attlist, + (common-draw-data-attlist | office-binary-data), + draw-text + } +common-draw-data-attlist &= + attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?, + [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }? +office-binary-data = element office:binary-data { base64Binary } +draw-image-attlist &= attribute draw:filter-name { \string }? +draw-object = + element draw:object { + draw-object-attlist, + (common-draw-data-attlist | office-document | math-math) + } +draw-object-ole = + element draw:object-ole { + draw-object-ole-attlist, + (common-draw-data-attlist | office-binary-data) + } +draw-object-attlist &= + attribute draw:notify-on-update-of-ranges { \string }? +draw-object-ole-attlist &= attribute draw:class-id { text }? +draw-applet = + element draw:applet { + draw-applet-attlist, common-draw-data-attlist?, draw-param* + } +draw-applet-attlist &= attribute draw:code { text }? +draw-applet-attlist &= attribute draw:object { text }? +draw-applet-attlist &= attribute draw:archive { text }? +draw-applet-attlist &= + [ a:defaultValue = "false" ] attribute draw:may-script { boolean }? +draw-plugin = + element draw:plugin { + draw-plugin-attlist, common-draw-data-attlist, draw-param* + } +draw-plugin-attlist &= attribute draw:mime-type { text }? +draw-param = element draw:param { draw-param-attlist, empty } +draw-param-attlist &= attribute draw:name { text }? +draw-param-attlist &= attribute draw:value { text }? +draw-floating-frame = + element draw:floating-frame { + draw-floating-frame-attlist, common-draw-data-attlist + } +draw-floating-frame-attlist &= attribute draw:frame-name { \string }? +draw-contour-polygon = + element draw:contour-polygon { + common-contour-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-points-attlist, + empty + } +draw-contour-path = + element draw:contour-path { + common-contour-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-path-data-attlist, + empty + } +common-contour-attlist &= attribute draw:recreate-on-edit { boolean } +draw-a = element draw:a { draw-a-attlist, draw-frame } +draw-a-attlist &= + attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "onRequest" ] + attribute xlink:actuate { "onRequest" }? +draw-a-attlist &= + attribute office:target-frame-name { targetFrameName }?, + attribute xlink:show { "new" | "replace" }? +draw-a-attlist &= attribute office:name { \string }? +draw-a-attlist &= attribute office:title { \string }? +draw-a-attlist &= + [ a:defaultValue = "false" ] attribute office:server-map { boolean }? +draw-image-map = + element draw:image-map { + (draw-area-rectangle | draw-area-circle | draw-area-polygon)* + } +draw-area-rectangle = + element draw:area-rectangle { + common-draw-area-attlist, + attribute svg:x { coordinate }, + attribute svg:y { coordinate }, + attribute svg:width { length }, + attribute svg:height { length }, + svg-title?, + svg-desc?, + office-event-listeners? + } +draw-area-circle = + element draw:area-circle { + common-draw-area-attlist, + attribute svg:cx { coordinate }, + attribute svg:cy { coordinate }, + attribute svg:r { length }, + svg-title?, + svg-desc?, + office-event-listeners? + } +draw-area-polygon = + element draw:area-polygon { + common-draw-area-attlist, + attribute svg:x { coordinate }, + attribute svg:y { coordinate }, + attribute svg:width { length }, + attribute svg:height { length }, + common-draw-viewbox-attlist, + common-draw-points-attlist, + svg-title?, + svg-desc?, + office-event-listeners? + } +common-draw-area-attlist &= + attribute xlink:href { anyURI }?, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + attribute office:target-frame-name { targetFrameName }?, + attribute xlink:show { "new" | "replace" }? +common-draw-area-attlist &= attribute office:name { \string }? +common-draw-area-attlist &= attribute draw:nohref { "nohref" }? +dr3d-scene = + element dr3d:scene { + dr3d-scene-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-style-name-attlist, + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-text-spreadsheet-shape-attlist, + common-dr3d-transform-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + dr3d-light*, + shapes3d* + } +shapes3d = + dr3d-scene | dr3d-extrude | dr3d-sphere | dr3d-rotate | dr3d-cube +dr3d-scene-attlist &= + attribute dr3d:vrp { vector3D }?, + attribute dr3d:vpn { vector3D }?, + attribute dr3d:vup { vector3D }? +dr3d-scene-attlist &= + attribute dr3d:projection { "parallel" | "perspective" }? +dr3d-scene-attlist &= attribute dr3d:distance { length }? +dr3d-scene-attlist &= attribute dr3d:focal-length { length }? +dr3d-scene-attlist &= + attribute dr3d:shadow-slant { nonNegativeInteger }? +dr3d-scene-attlist &= + attribute dr3d:shade-mode { "flat" | "phong" | "gouraud" | "draft" }? +dr3d-scene-attlist &= attribute dr3d:ambient-color { color }? +dr3d-scene-attlist &= attribute dr3d:lighting-mode { boolean }? +common-dr3d-transform-attlist = attribute dr3d:transform { text }? +dr3d-light = element dr3d:light { dr3d-light-attlist, empty } +dr3d-light-attlist &= attribute dr3d:diffuse-color { color }? +dr3d-light-attlist &= attribute dr3d:direction { vector3D } +dr3d-light-attlist &= attribute dr3d:enabled { boolean }? +dr3d-light-attlist &= attribute dr3d:specular { boolean }? +dr3d-cube = + element dr3d:cube { + dr3d-cube-attlist, + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-dr3d-transform-attlist, + empty + } +dr3d-cube-attlist &= + attribute dr3d:min-edge { vector3D }?, + attribute dr3d:max-edge { vector3D }? +dr3d-sphere = + element dr3d:sphere { + dr3d-sphere-attlist, + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-dr3d-transform-attlist, + empty + } +dr3d-sphere-attlist &= attribute dr3d:center { vector3D }? +dr3d-sphere-attlist &= attribute dr3d:size { vector3D }? +dr3d-extrude = + element dr3d:extrude { + common-draw-path-data-attlist, + common-draw-viewbox-attlist, + common-draw-id-attlist, + common-draw-z-index-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-dr3d-transform-attlist, + empty + } +dr3d-rotate = + element dr3d:rotate { + common-draw-viewbox-attlist, + common-draw-path-data-attlist, + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-dr3d-transform-attlist, + empty + } +draw-custom-shape = + element draw:custom-shape { + draw-custom-shape-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text, + draw-enhanced-geometry? + } +draw-custom-shape-attlist &= attribute draw:engine { namespacedToken }? +draw-custom-shape-attlist &= attribute draw:data { \string }? +draw-enhanced-geometry = + element draw:enhanced-geometry { + draw-enhanced-geometry-attlist, draw-equation*, draw-handle* + } +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "non-primitive" ] + attribute draw:type { custom-shape-type }? +custom-shape-type = "non-primitive" | \string +draw-enhanced-geometry-attlist &= + attribute svg:viewBox { + list { integer, integer, integer, integer } + }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "false" ] + attribute draw:mirror-vertical { boolean }?, + [ a:defaultValue = "false" ] + attribute draw:mirror-horizontal { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "0" ] attribute draw:text-rotate-angle { double }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "false" ] + attribute draw:extrusion-allowed { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "false" ] + attribute draw:text-path-allowed { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "false" ] + attribute draw:concentric-gradient-fill-allowed { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "false" ] attribute draw:extrusion { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "33%" ] + attribute draw:extrusion-brightness { percent }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "36pt 0" ] + attribute draw:extrusion-depth { + list { length, double } + }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "0%" ] + attribute draw:extrusion-diffusion { percent }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "30" ] + attribute draw:extrusion-number-of-line-segments { integer }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "true" ] + attribute draw:extrusion-light-face { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "true" ] + attribute draw:extrusion-first-light-harsh { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "true" ] + attribute draw:extrusion-second-light-harsh { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "66%" ] + attribute draw:extrusion-first-light-level { percent }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "66%" ] + attribute draw:extrusion-second-light-level { percent }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "(5 0 1)" ] + attribute draw:extrusion-first-light-direction { vector3D }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "(-5 0 1)" ] + attribute draw:extrusion-second-light-direction { vector3D }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "false" ] + attribute draw:extrusion-metal { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "flat" ] + attribute dr3d:shade-mode { "flat" | "phong" | "gouraud" | "draft" }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "0 0" ] + attribute draw:extrusion-rotation-angle { + list { double, double } + }? +draw-enhanced-geometry-attlist &= + attribute draw:extrusion-rotation-center { vector3D }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "50%" ] + attribute draw:extrusion-shininess { percent }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "50 45" ] + attribute draw:extrusion-skew { + list { double, double } + }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "0%" ] + attribute draw:extrusion-specularity { percent }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "parallel" ] + attribute dr3d:projection { "parallel" | "perspective" }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "3.5cm -3.5cm 25cm" ] + attribute draw:extrusion-viewpoint { point3D }? +point3D = xsd:string +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "0.5 -0.5" ] + attribute draw:extrusion-origin { + list { double, double } + }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "false" ] + attribute draw:extrusion-color { boolean }? +draw-enhanced-geometry-attlist &= + attribute draw:enhanced-path { \string }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "0" ] + attribute draw:path-stretchpoint-x { double }?, + [ a:defaultValue = "0" ] + attribute draw:path-stretchpoint-y { double }? +draw-enhanced-geometry-attlist &= attribute draw:text-areas { \string }? +draw-enhanced-geometry-attlist &= + attribute draw:glue-points { \string }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "none" ] + attribute draw:glue-point-type { "none" | "segments" | "rectangle" }? +draw-enhanced-geometry-attlist &= + attribute draw:glue-point-leaving-directions { text }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "false" ] attribute draw:text-path { boolean }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "normal" ] + attribute draw:text-path-mode { "normal" | "path" | "shape" }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "path" ] + attribute draw:text-path-scale { "path" | "shape" }? +draw-enhanced-geometry-attlist &= + [ a:defaultValue = "false" ] + attribute draw:text-path-same-letter-heights { boolean }? +draw-enhanced-geometry-attlist &= attribute draw:modifiers { \string }? +draw-equation = element draw:equation { draw-equation-attlist, empty } +draw-equation-attlist &= attribute draw:name { \string }? +draw-equation-attlist &= attribute draw:formula { \string }? +draw-handle = element draw:handle { draw-handle-attlist, empty } +draw-handle-attlist &= + [ a:defaultValue = "false" ] + attribute draw:handle-mirror-vertical { boolean }? +draw-handle-attlist &= + [ a:defaultValue = "false" ] + attribute draw:handle-mirror-horizontal { boolean }? +draw-handle-attlist &= + [ a:defaultValue = "false" ] + attribute draw:handle-switched { boolean }? +draw-handle-attlist &= attribute draw:handle-position { \string } +draw-handle-attlist &= + attribute draw:handle-range-x-minimum { \string }? +draw-handle-attlist &= + attribute draw:handle-range-x-maximum { \string }? +draw-handle-attlist &= + attribute draw:handle-range-y-minimum { \string }? +draw-handle-attlist &= + attribute draw:handle-range-y-maximum { \string }? +draw-handle-attlist &= attribute draw:handle-polar { \string }? +draw-handle-attlist &= + attribute draw:handle-radius-range-minimum { \string }? +draw-handle-attlist &= + attribute draw:handle-radius-range-maximum { \string }? +presentation-shape-attlist &= + attribute presentation:class { presentation-classes }? +presentation-classes = + "title" + | "outline" + | "subtitle" + | "text" + | "graphic" + | "object" + | "chart" + | "table" + | "orgchart" + | "page" + | "notes" + | "handout" + | "header" + | "footer" + | "date-time" + | "page-number" +presentation-shape-attlist &= + attribute presentation:placeholder { boolean }? +presentation-shape-attlist &= + attribute presentation:user-transformed { boolean }? +presentation-animations = + element presentation:animations { + (presentation-animation-elements | presentation-animation-group)* + } +presentation-animation-elements = + presentation-show-shape + | presentation-show-text + | presentation-hide-shape + | presentation-hide-text + | presentation-dim + | presentation-play +presentation-sound = + element presentation:sound { + presentation-sound-attlist, + attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "onRequest" ] + attribute xlink:actuate { "onRequest" }?, + attribute xlink:show { "new" | "replace" }?, + empty + } +presentation-sound-attlist &= + attribute presentation:play-full { boolean }? +presentation-show-shape = + element presentation:show-shape { + common-presentation-effect-attlist, presentation-sound? + } +common-presentation-effect-attlist &= attribute draw:shape-id { IDREF } +common-presentation-effect-attlist &= + [ a:defaultValue = "none" ] + attribute presentation:effect { presentationEffects }? +presentationEffects = + "none" + | "fade" + | "move" + | "stripes" + | "open" + | "close" + | "dissolve" + | "wavyline" + | "random" + | "lines" + | "laser" + | "appear" + | "hide" + | "move-short" + | "checkerboard" + | "rotate" + | "stretch" +common-presentation-effect-attlist &= + [ a:defaultValue = "none" ] + attribute presentation:direction { presentationEffectDirections }? +presentationEffectDirections = + "none" + | "from-left" + | "from-top" + | "from-right" + | "from-bottom" + | "from-center" + | "from-upper-left" + | "from-upper-right" + | "from-lower-left" + | "from-lower-right" + | "to-left" + | "to-top" + | "to-right" + | "to-bottom" + | "to-upper-left" + | "to-upper-right" + | "to-lower-right" + | "to-lower-left" + | "path" + | "spiral-inward-left" + | "spiral-inward-right" + | "spiral-outward-left" + | "spiral-outward-right" + | "vertical" + | "horizontal" + | "to-center" + | "clockwise" + | "counter-clockwise" +common-presentation-effect-attlist &= + [ a:defaultValue = "medium" ] + attribute presentation:speed { presentationSpeeds }? +presentationSpeeds = "slow" | "medium" | "fast" +common-presentation-effect-attlist &= + attribute presentation:delay { duration }? +common-presentation-effect-attlist &= + [ a:defaultValue = "100%" ] + attribute presentation:start-scale { percent }? +common-presentation-effect-attlist &= + attribute presentation:path-id { text }? +presentation-show-text = + element presentation:show-text { + common-presentation-effect-attlist, presentation-sound? + } +presentation-hide-shape = + element presentation:hide-shape { + common-presentation-effect-attlist, presentation-sound? + } +presentation-hide-text = + element presentation:hide-text { + common-presentation-effect-attlist, presentation-sound? + } +presentation-dim = + element presentation:dim { + presentation-dim-attlist, presentation-sound? + } +presentation-dim-attlist &= attribute draw:shape-id { IDREF } +presentation-dim-attlist &= attribute draw:color { color } +presentation-play = + element presentation:play { presentation-play-attlist, empty } +presentation-play-attlist &= + attribute draw:shape-id { IDREF }, + [ a:defaultValue = "medium" ] + attribute presentation:speed { presentationSpeeds }? +presentation-animation-group = + element presentation:animation-group { + presentation-animation-elements* + } +common-anim-attlist &= + [ a:defaultValue = "default" ] + attribute presentation:node-type { + "default" + | "on-click" + | "with-previous" + | "after-previous" + | "timing-root" + | "main-sequence" + | "interactive-sequence" + }? +common-anim-attlist &= attribute presentation:preset-id { \string }? +common-anim-attlist &= + attribute presentation:preset-sub-type { \string }? +common-anim-attlist &= + [ a:defaultValue = "custom" ] + attribute presentation:preset-class { + "custom" + | "entrance" + | "exit" + | "emphasis" + | "motion-path" + | "ole-action" + | "media-call" + }? +common-anim-attlist &= attribute presentation:master-element { IDREF }? +common-anim-attlist &= attribute presentation:group-id { \string }? +presentation-event-listener = + element presentation:event-listener { + presentation-event-listener-attlist, presentation-sound? + } +presentation-event-listener-attlist &= + attribute script:event-name { \string } +presentation-event-listener-attlist &= + attribute presentation:action { + "none" + | "previous-page" + | "next-page" + | "first-page" + | "last-page" + | "hide" + | "stop" + | "execute" + | "show" + | "verb" + | "fade-out" + | "sound" + } +presentation-event-listener-attlist &= + [ a:defaultValue = "none" ] + attribute presentation:effect { presentationEffects }? +presentation-event-listener-attlist &= + [ a:defaultValue = "none" ] + attribute presentation:direction { presentationEffectDirections }? +presentation-event-listener-attlist &= + [ a:defaultValue = "medium" ] + attribute presentation:speed { presentationSpeeds }? +presentation-event-listener-attlist &= + [ a:defaultValue = "100%" ] + attribute presentation:start-scale { percent }? +presentation-event-listener-attlist &= + attribute xlink:href { anyURI }?, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?, + [ a:defaultValue = "onRequest" ] + attribute xlink:actuate { "onRequest" }? +presentation-event-listener-attlist &= + attribute presentation:verb { nonNegativeInteger }? +paragraph-content |= element presentation:header { empty } +paragraph-content |= element presentation:footer { empty } +paragraph-content |= element presentation:date-time { empty } +presentation-decls = presentation-decl* +presentation-decl |= + element presentation:header-decl { + presentation-header-decl-attlist, text + } +presentation-header-decl-attlist &= + attribute presentation:name { \string } +presentation-decl |= + element presentation:footer-decl { + presentation-footer-decl-attlist, text + } +presentation-footer-decl-attlist &= + attribute presentation:name { \string } +presentation-decl |= + element presentation:date-time-decl { + presentation-date-time-decl-attlist, text + } +presentation-date-time-decl-attlist &= + attribute presentation:name { \string } +presentation-date-time-decl-attlist &= + attribute presentation:source { "fixed" | "current-date" } +presentation-date-time-decl-attlist &= + attribute style:data-style-name { styleNameRef }? +presentation-settings = + element presentation:settings { + presentation-settings-attlist, presentation-show* + }? +presentation-settings-attlist &= + attribute presentation:start-page { \string }? +presentation-settings-attlist &= + attribute presentation:show { \string }? +presentation-settings-attlist &= + [ a:defaultValue = "true" ] + attribute presentation:full-screen { boolean }? +presentation-settings-attlist &= + [ a:defaultValue = "false" ] + attribute presentation:endless { boolean }? +presentation-settings-attlist &= + attribute presentation:pause { duration }? +presentation-settings-attlist &= + [ a:defaultValue = "false" ] + attribute presentation:show-logo { boolean }? +presentation-settings-attlist &= + [ a:defaultValue = "false" ] + attribute presentation:force-manual { boolean }? +presentation-settings-attlist &= + [ a:defaultValue = "true" ] + attribute presentation:mouse-visible { boolean }? +presentation-settings-attlist &= + [ a:defaultValue = "false" ] + attribute presentation:mouse-as-pen { boolean }? +presentation-settings-attlist &= + [ a:defaultValue = "false" ] + attribute presentation:start-with-navigator { boolean }? +presentation-settings-attlist &= + [ a:defaultValue = "enabled" ] + attribute presentation:animations { "enabled" | "disabled" }? +presentation-settings-attlist &= + [ a:defaultValue = "enabled" ] + attribute presentation:transition-on-click { "enabled" | "disabled" }? +presentation-settings-attlist &= + [ a:defaultValue = "false" ] + attribute presentation:stay-on-top { boolean }? +presentation-settings-attlist &= + [ a:defaultValue = "true" ] + attribute presentation:show-end-of-presentation-slide { boolean }? +presentation-show = + element presentation:show { presentation-show-attlist, empty } +presentation-show-attlist &= attribute presentation:name { \string } +presentation-show-attlist &= attribute presentation:pages { text } +chart-chart = + element chart:chart { + chart-chart-attlist, + chart-title?, + chart-subtitle?, + chart-footer?, + chart-legend?, + chart-plot-area, + table-table? + } +chart-chart-attlist &= attribute chart:class { namespacedToken } +chart-chart-attlist &= common-draw-size-attlist +chart-chart-attlist &= attribute chart:column-mapping { \string }? +chart-chart-attlist &= attribute chart:row-mapping { \string }? +chart-chart-attlist &= attribute chart:style-name { styleNameRef }? +chart-title = element chart:title { chart-title-attlist, text-p? } +chart-title-attlist &= attribute table:cell-range { cellAddress }? +chart-title-attlist &= common-draw-position-attlist +chart-title-attlist &= attribute chart:style-name { styleNameRef }? +chart-subtitle = element chart:subtitle { chart-title-attlist, text-p? } +chart-footer = element chart:footer { chart-title-attlist, text-p? } +chart-legend = element chart:legend { chart-legend-attlist, empty } +chart-legend-attlist &= + (attribute chart:legend-position { + "start" | "end" | "top" | "bottom" + }, + attribute chart:legend-align { "start" | "center" | "end" }?) + | attribute chart:legend-position { + "top-start" | "bottom-start" | "top-end" | "bottom-end" + } + | empty +chart-legend-attlist &= common-draw-position-attlist +chart-legend-attlist &= + attribute style:legend-expansion { "wide" | "high" | "balanced" } + | (attribute style:legend-expansion { "custom" }, + attribute style:legend-expansion-aspect-ratio { double }) + | empty +chart-legend-attlist &= attribute chart:style-name { styleNameRef }? +chart-plot-area = + element chart:plot-area { + chart-plot-area-attlist, + dr3d-light*, + chart-axis*, + chart-series*, + chart-stock-gain-marker?, + chart-stock-loss-marker?, + chart-stock-range-line?, + chart-wall?, + chart-floor? + } +chart-plot-area-attlist &= + common-draw-position-attlist, common-draw-size-attlist +chart-plot-area-attlist &= attribute chart:style-name { styleNameRef }? +chart-plot-area-attlist &= + attribute table:cell-range-address { cellRangeAddress }? +chart-plot-area-attlist &= + [ a:defaultValue = "none" ] + attribute chart:data-source-has-labels { + "none" | "row" | "column" | "both" + }? +chart-plot-area-attlist &= + dr3d-scene-attlist, common-dr3d-transform-attlist +chart-wall = element chart:wall { chart-wall-attlist, empty } +chart-wall-attlist &= attribute svg:width { length }? +chart-wall-attlist &= attribute chart:style-name { styleNameRef }? +chart-floor = element chart:floor { chart-floor-attlist, empty } +chart-floor-attlist &= attribute svg:width { length }? +chart-floor-attlist &= attribute chart:style-name { styleNameRef }? +chart-axis = + element chart:axis { + chart-axis-attlist, chart-title?, chart-categories?, chart-grid* + } +chart-axis-attlist &= attribute chart:dimension { "x" | "y" | "z" } +chart-axis-attlist &= attribute chart:name { \string }? +chart-axis-attlist &= attribute chart:style-name { styleNameRef }? +chart-grid = element chart:grid { chart-grid-attlist } +chart-grid-attlist &= + [ a:defaultValue = "major" ] + attribute chart:class { "major" | "minor" }? +chart-grid-attlist &= attribute chart:style-name { styleNameRef }? +chart-series = + element chart:series { + chart-series-attlist, + chart-domain*, + chart-mean-value?, + chart-regression-curve?, + chart-error-indicator?, + chart-data-point* + } +chart-series-attlist &= + attribute chart:values-cell-range-address { cellRangeAddress }? +chart-series-attlist &= + attribute chart:label-cell-address { cellAddress }? +chart-series-attlist &= attribute chart:class { namespacedToken }? +chart-series-attlist &= attribute chart:attached-axis { \string }? +chart-series-attlist &= attribute chart:style-name { styleNameRef }? +chart-domain = + element chart:domain { + attribute table:cell-range-address { cellRangeAddress }? + } +chart-categories = + element chart:categories { + attribute table:cell-range-address { cellRangeAddress }? + } +chart-data-point = + element chart:data-point { chart-data-point-attlist, empty } +chart-data-point-attlist &= + attribute chart:repeated { nonNegativeInteger }? +chart-data-point-attlist &= attribute chart:style-name { styleNameRef }? +chart-mean-value = + element chart:mean-value { chart-mean-value-attlist, empty } +chart-mean-value-attlist &= attribute chart:style-name { styleNameRef }? +chart-error-indicator = + element chart:error-indicator { chart-error-indicator-attlist, empty } +chart-error-indicator-attlist &= + attribute chart:style-name { styleNameRef }? +chart-regression-curve = + element chart:regression-curve { + chart-regression-curve-attlist, empty + } +chart-regression-curve-attlist &= + attribute chart:style-name { styleNameRef }? +chart-stock-gain-marker = + element chart:stock-gain-marker { common-stock-marker-attlist } +chart-stock-loss-marker = + element chart:stock-loss-marker { common-stock-marker-attlist } +chart-stock-range-line = + element chart:stock-range-line { common-stock-marker-attlist } +common-stock-marker-attlist = + attribute chart:style-name { styleNameRef }? +office-forms = + element office:forms { + office-forms-attlist, (form-form | xforms-model)* + }? +office-forms-attlist &= + [ a:defaultValue = "false" ] + attribute form:automatic-focus { boolean }? +office-forms-attlist &= + [ a:defaultValue = "true" ] + attribute form:apply-design-mode { boolean }? +form-form = + element form:form { + common-form-control-attlist, + form-form-attlist, + form-properties?, + office-event-listeners?, + (controls | form-form)*, + form-connection-resource? + } +form-form-attlist &= + (attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "onRequest" ] + attribute xlink:actuate { "onRequest" }?)? +form-form-attlist &= + [ a:defaultValue = "_blank" ] + attribute office:target-frame { targetFrameName }? +form-form-attlist &= + [ a:defaultValue = "get" ] + attribute form:method { "get" | "post" | \string }? +form-form-attlist &= + [ a:defaultValue = "application/x-www-form-urlencoded" ] + attribute form:enctype { \string }? +form-form-attlist &= + [ a:defaultValue = "true" ] attribute form:allow-deletes { boolean }? +form-form-attlist &= + [ a:defaultValue = "true" ] attribute form:allow-inserts { boolean }? +form-form-attlist &= + [ a:defaultValue = "true" ] attribute form:allow-updates { boolean }? +form-form-attlist &= + [ a:defaultValue = "false" ] attribute form:apply-filter { boolean }? +form-form-attlist &= + [ a:defaultValue = "command" ] + attribute form:command-type { "table" | "query" | "command" }? +form-form-attlist &= attribute form:command { text }? +form-form-attlist &= attribute form:datasource { anyURI | \string }? +form-form-attlist &= attribute form:master-fields { \string }? +form-form-attlist &= attribute form:detail-fields { \string }? +form-form-attlist &= + [ a:defaultValue = "true" ] + attribute form:escape-processing { boolean }? +form-form-attlist &= attribute form:filter { \string }? +form-form-attlist &= + [ a:defaultValue = "false" ] attribute form:ignore-result { boolean }? +form-form-attlist &= attribute form:navigation-mode { navigation }? +navigation = "none" | "current" | "parent" +form-form-attlist &= attribute form:order { \string }? +form-form-attlist &= attribute form:tab-cycle { tab-cycles }? +tab-cycles = "records" | "current" | "page" +form-connection-resource = + element form:connection-resource { + attribute xlink:href { anyURI }, + empty + } +xforms-model = element xforms:model { anyAttListOrElements } +column-controls |= + element form:text { form-text-attlist, common-form-control-content } +controls |= column-controls +form-text-attlist = + form-control-attlist, + common-current-value-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-convert-empty-attlist, + common-data-field-attlist +form-control-attlist = + common-form-control-attlist, + common-control-id-attlist, + xforms-bind-attlist +common-form-control-content = form-properties?, office-event-listeners? +column-controls |= + element form:textarea { + form-textarea-attlist, common-form-control-content, text-p* + } +form-textarea-attlist = + form-control-attlist, + common-current-value-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-convert-empty-attlist, + common-data-field-attlist +controls |= + element form:password { + form-password-attlist, common-form-control-content + } +form-password-attlist &= + form-control-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-convert-empty-attlist +form-password-attlist &= + [ a:defaultValue = "*" ] attribute form:echo-char { character }? +controls |= + element form:file { form-file-attlist, common-form-control-content } +form-file-attlist &= + form-control-attlist, + common-current-value-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist +column-controls |= + element form:formatted-text { + form-formatted-text-attlist, common-form-control-content + } +form-formatted-text-attlist &= + form-control-attlist, + common-current-value-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-convert-empty-attlist, + common-data-field-attlist +form-formatted-text-attlist &= attribute form:max-value { \string }? +form-formatted-text-attlist &= attribute form:min-value { \string }? +form-formatted-text-attlist &= + [ a:defaultValue = "false" ] attribute form:validation { boolean }? +column-controls |= + element form:number { + form-number-attlist, + common-numeric-control-attlist, + common-form-control-content + } +common-numeric-control-attlist = + form-control-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + common-tab-attlist, + common-title-attlist, + common-convert-empty-attlist, + common-data-field-attlist +form-number-attlist &= attribute form:value { double }? +form-number-attlist &= attribute form:current-value { double }? +form-number-attlist &= attribute form:min-value { double }? +form-number-attlist &= attribute form:max-value { double }? +column-controls |= + element form:date { + form-date-attlist, + common-numeric-control-attlist, + common-form-control-content + } +controls |= + element form:time { + form-time-attlist, + common-numeric-control-attlist, + common-form-control-content + } +form-date-attlist &= attribute form:value { date }? +form-time-attlist &= attribute form:value { time }? +form-date-attlist &= attribute form:current-value { date }? +form-time-attlist &= attribute form:current-value { time }? +form-date-attlist &= attribute form:min-value { date }? +form-time-attlist &= attribute form:min-value { time }? +form-date-attlist &= attribute form:max-value { date }? +form-time-attlist &= attribute form:max-value { time }? +controls |= + element form:fixed-text { + form-fixed-text-attlist, common-form-control-content + } +form-fixed-text-attlist &= + form-control-attlist, + for, + common-disabled-attlist, + label, + common-printable-attlist, + common-title-attlist +form-fixed-text-attlist &= + [ a:defaultValue = "false" ] attribute form:multi-line { boolean }? +column-controls |= + element form:combobox { + form-combobox-attlist, common-form-control-content, form-item* + } +form-combobox-attlist &= + form-control-attlist, + common-current-value-attlist, + common-disabled-attlist, + dropdown, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + size, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-convert-empty-attlist, + common-data-field-attlist, + list-source, + list-source-type +form-combobox-attlist &= attribute form:auto-complete { boolean }? +form-item = element form:item { form-item-attlist, text } +form-item-attlist &= label +column-controls |= + element form:listbox { + form-listbox-attlist, common-form-control-content, form-option* + } +form-listbox-attlist &= + form-control-attlist, + common-disabled-attlist, + dropdown, + common-printable-attlist, + size, + common-tab-attlist, + common-title-attlist, + bound-column, + common-data-field-attlist, + list-source, + list-source-type +form-listbox-attlist &= + [ a:defaultValue = "false" ] attribute form:multiple { boolean }? +form-listbox-attlist &= attribute form:xforms-list-source { \string }? +form-option = element form:option { form-option-attlist, text } +form-option-attlist &= + current-selected, selected, label, common-value-attlist +controls |= + element form:button { + form-button-attlist, common-form-control-content + } +form-button-attlist &= + form-control-attlist, + button-type, + common-disabled-attlist, + label, + image-data, + common-printable-attlist, + common-tab-attlist, + target-frame, + target-location, + common-title-attlist, + common-value-attlist, + common-form-relative-image-position-attlist +form-button-attlist &= + [ a:defaultValue = "false" ] + attribute form:default-button { boolean }? +form-button-attlist &= + [ a:default-value = "false" ] attribute form:toggle { boolean }? +form-button-attlist &= attribute form:focus-on-click { boolean }? +form-button-attlist &= attribute form:xforms-submission { \string }? +controls |= + element form:image { form-image-attlist, common-form-control-content } +form-image-attlist &= + form-control-attlist, + button-type, + common-disabled-attlist, + image-data, + common-printable-attlist, + common-tab-attlist, + target-frame, + target-location, + common-title-attlist, + common-value-attlist +column-controls |= + element form:checkbox { + form-checkbox-attlist, common-form-control-content + } +form-checkbox-attlist &= + form-control-attlist, + common-disabled-attlist, + label, + common-printable-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-data-field-attlist, + common-form-visual-effect-attlist, + common-form-relative-image-position-attlist +states = "unchecked" | "checked" | "unknown" +form-checkbox-attlist &= attribute form:current-state { states }? +form-checkbox-attlist &= + [ a:defaultValue = "false" ] attribute form:is-tristate { boolean }? +form-checkbox-attlist &= + [ a:defaultValue = "unchecked" ] attribute form:state { states }? +controls |= + element form:radio { form-radio-attlist, common-form-control-content } +form-radio-attlist &= + form-control-attlist, + current-selected, + common-disabled-attlist, + label, + common-printable-attlist, + selected, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-data-field-attlist, + common-form-visual-effect-attlist, + common-form-relative-image-position-attlist +controls |= + element form:frame { form-frame-attlist, common-form-control-content } +form-frame-attlist &= + form-control-attlist, + common-disabled-attlist, + for, + label, + common-printable-attlist, + common-title-attlist +controls |= + element form:image-frame { + form-image-frame-attlist, common-form-control-content + } +form-image-frame-attlist &= + form-control-attlist, + common-disabled-attlist, + image-data, + common-printable-attlist, + common-readonly-attlist, + common-title-attlist, + common-data-field-attlist +controls |= + element form:hidden { + form-hidden-attlist, common-form-control-content + } +form-hidden-attlist &= form-control-attlist, common-value-attlist +controls |= + element form:grid { + form-grid-attlist, common-form-control-content, form-column* + } +form-grid-attlist &= + form-control-attlist, + common-disabled-attlist, + common-printable-attlist, + common-tab-attlist, + common-title-attlist +form-column = + element form:column { form-column-attlist, column-controls+ } +form-column-attlist &= + common-form-control-attlist, label, text-style-name +text-style-name = attribute form:text-style-name { styleNameRef }? +controls |= + element form:value-range { + form-value-range-attlist, common-form-control-content + } +form-value-range-attlist &= + form-control-attlist, + common-disabled-attlist, + common-printable-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist +form-value-range-attlist &= attribute form:max-value { \string }? +form-value-range-attlist &= attribute form:min-value { \string }? +form-value-range-attlist &= + [ a:defaultName = "1" ] attribute form:step-size { positiveInteger }? +form-value-range-attlist &= + attribute form:page-step-size { positiveInteger }? +form-value-range-attlist &= + attribute form:delay-for-repeat { duration }? +form-value-range-attlist &= + attribute form:orientation { "horizontal" | "vertical" }? +controls |= + element form:generic-control { + form-generic-control-attlist, common-form-control-content + } +form-generic-control-attlist &= form-control-attlist +common-form-control-attlist &= attribute form:name { \string }? +common-form-control-attlist &= + attribute form:control-implementation { namespacedToken }? +xforms-bind-attlist = attribute xforms:bind { \string }? +types = "submit" | "reset" | "push" | "url" +button-type = + [ a:defaultValue = "push" ] attribute form:button-type { types }? +common-control-id-attlist = attribute form:id { ID } +current-selected = + [ a:defaultValue = "false" ] + attribute form:current-selected { boolean }? +common-value-attlist = attribute form:value { \string }? +common-current-value-attlist = attribute form:current-value { \string }? +common-disabled-attlist = + [ a:defaultValue = "false" ] attribute form:disabled { boolean }? +dropdown = + [ a:defaultValue = "false" ] attribute form:dropdown { boolean }? +for = attribute form:for { \string }? +image-data = attribute form:image-data { anyURI }? +label = attribute form:label { \string }? +common-maxlength-attlist = + attribute form:max-length { nonNegativeInteger }? +common-printable-attlist = + [ a:defaultValue = "true" ] attribute form:printable { boolean }? +common-readonly-attlist = + [ a:defaultValue = "false" ] attribute form:readonly { boolean }? +selected = + [ a:defaultValue = "false" ] attribute form:selected { boolean }? +size = attribute form:size { nonNegativeInteger }? +common-tab-attlist &= + [ a:defaultValue = "0" ] + attribute form:tab-index { nonNegativeInteger }? +common-tab-attlist &= + [ a:defaultValue = "true" ] attribute form:tab-stop { boolean }? +target-frame = + [ a:defaultValue = "_blank" ] + attribute office:target-frame { targetFrameName }? +target-location = attribute xlink:href { anyURI }? +common-title-attlist = attribute form:title { text }? +common-form-visual-effect-attlist &= + attribute form:visual-effect { "flat" | "3d" }? +common-form-relative-image-position-attlist &= + [ a:defaultValue = "center" ] + attribute form:image-position { "center" }? + | (attribute form:image-position { + "start" | "end" | "top" | "bottom" + }, + [ a:defaultValue = "center" ] + attribute form:image-align { "start" | "center" | "end" }?) +bound-column = attribute form:bound-column { \string }? +common-convert-empty-attlist = + [ a:defaultValue = "false" ] + attribute form:convert-empty-to-null { boolean }? +common-data-field-attlist = attribute form:data-field { \string }? +list-source = attribute form:list-source { \string }? +list-source-type = + attribute form:list-source-type { + "table" + | "query" + | "sql" + | "sql-pass-through" + | "value-list" + | "table-fields" + }? +form-properties = element form:properties { form-property+ } +form-property |= + element form:property { + form-property-name, form-property-value-and-type-attlist + } +form-property-name &= attribute form:property-name { \string } +form-property-value-and-type-attlist &= + common-value-and-type-attlist + | attribute office:value-type { "void" } +form-property |= + element form:list-property { + form-property-name, form-property-type-and-value-list + } +form-property-type-and-value-list = + (attribute office:value-type { "float" }, + element form:list-value { + attribute office:value { double } + }*) + | (attribute office:value-type { "percentage" }, + element form:list-value { + attribute office:value { double } + }*) + | (attribute office:value-type { "currency" }, + element form:list-value { + attribute office:value { double }, + attribute office:currency { \string }? + }*) + | (attribute office:value-type { "date" }, + element form:list-value { + attribute office:date-value { dateOrDateTime } + }*) + | (attribute office:value-type { "time" }, + element form:list-value { + attribute office:time-value { duration } + }*) + | (attribute office:value-type { "boolean" }, + element form:list-value { + attribute office:boolean-value { boolean } + }*) + | (attribute office:value-type { "string" }, + element form:list-value { + attribute office:string-value { \string } + }*) + | attribute office:value-type { "void" } +office-annotation = + element office:annotation { + office-annotation-attlist, + draw-caption-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + dc-creator?, + dc-date?, + meta-date-string?, + (text-p | text-list)* + } +office-annotation-attlist &= attribute office:display { boolean }? +meta-date-string = element meta:date-string { \string } +common-num-format-prefix-suffix-attlist &= + attribute style:num-prefix { \string }?, + attribute style:num-suffix { \string }? +common-num-format-attlist &= + attribute style:num-format { "1" | "i" | "I" | \string | empty } + | (attribute style:num-format { "a" | "A" }, + style-num-letter-sync-attlist) + | empty +style-num-letter-sync-attlist &= + attribute style:num-letter-sync { boolean }? +office-change-info = + element office:change-info { dc-creator, dc-date, text-p* } +office-event-listeners = + element office:event-listeners { + (script-event-listener | presentation-event-listener)* + } +script-event-listener &= + element script:event-listener { script-event-listener-attlist, empty } +script-event-listener-attlist &= attribute script:event-name { \string } +script-event-listener-attlist &= attribute script:language { \string } +script-event-listener-attlist &= + attribute script:macro-name { \string } + | (attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "onRequest" ] + attribute xlink:actuate { "onRequest" }?) +math-math = element math:math { mathMarkup } +# To avoid inclusion of the complete MathML schema, anything + +# is allowed within a math:math top-level element +mathMarkup = + (attribute * { text } + | text + | element * { mathMarkup })* +text-dde-connection-decl = + element text:dde-connection-decl { + text-dde-connection-decl-attlist, common-dde-connection-decl-attlist + } +text-dde-connection-decl-attlist &= attribute office:name { \string } +common-dde-connection-decl-attlist &= + attribute office:dde-application { \string } +common-dde-connection-decl-attlist &= + attribute office:dde-topic { \string } +common-dde-connection-decl-attlist &= + attribute office:dde-item { \string } +common-dde-connection-decl-attlist &= + [ a:defaultValue = "true" ] + attribute office:automatic-update { boolean }? +table-dde-link = + element table:dde-link { office-dde-source, table-table } +office-dde-source = + element office:dde-source { + office-dde-source-attlist, common-dde-connection-decl-attlist + } +office-dde-source-attlist &= attribute office:name { \string }? +office-dde-source-attlist &= + [ a:defaultValue = "into-default-style-data-style" ] + attribute office:conversion-mode { + "into-default-style-data-style" + | "into-english-number" + | "keep-text" + }? +animation-element |= + element anim:animate { + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-values-attlist, + common-anim-spline-mode-attlist, + common-spline-anim-value-attlist, + common-timing-attlist, + common-anim-add-accum-attlist + } +animation-element |= + element anim:set { + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-set-values-attlist, + common-timing-attlist, + common-anim-add-accum-attlist + } +animation-element |= + element anim:animateMotion { + anim-animate-motion-attlist, + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-add-accum-attlist, + common-anim-values-attlist, + common-timing-attlist, + common-spline-anim-value-attlist + } +anim-animate-motion-attlist &= attribute svg:path { pathData }? +anim-animate-motion-attlist &= attribute svg:origin { \string }? +anim-animate-motion-attlist &= + [ a:defaultValue = "paced" ] + attribute smil:calcMode { + "discrete" | "linear" | "paced" | "spline" + }? +animation-element |= + element anim:animateColor { + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-add-accum-attlist, + common-anim-values-attlist, + common-anim-spline-mode-attlist, + common-spline-anim-value-attlist, + anim-animate-color-attlist, + common-timing-attlist + } +anim-animate-color-attlist &= + [ a:defaultValue = "rgb" ] + attribute anim:color-interpolation { "rgb" | "hsl" }? +anim-animate-color-attlist &= + [ a:defaultValue = "clockwise" ] + attribute anim:color-interpolation-direction { + "clockwise" | "counter-clockwise" + }? +animation-element |= + element anim:animateTransform { + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-add-accum-attlist, + common-anim-values-attlist, + anim-animate-transform-attlist, + common-timing-attlist + } +anim-animate-transform-attlist &= + attribute svg:type { + "translate" | "scale" | "rotate" | "skewX" | "skewY" + } +animation-element |= + element anim:transitionFilter { + common-anim-target-attlist, + common-anim-add-accum-attlist, + common-anim-values-attlist, + common-anim-spline-mode-attlist, + anim-transition-filter-attlist, + common-timing-attlist + } +anim-transition-filter-attlist &= attribute smil:type { \string } +anim-transition-filter-attlist &= attribute smil:subtype { \string }? +anim-transition-filter-attlist &= + [ a:defaultValue = "forward" ] + attribute smil:direction { "forward" | "reverse" }? +anim-transition-filter-attlist &= + attribute smil:fadeColor { "forward" | "reverse" }? +anim-transition-filter-attlist &= + [ a:defaultValue = "in" ] attribute smil:mode { "in" | "out" }? +common-anim-attlist &= attribute anim:id { ID }? +common-anim-target-attlist &= attribute smil:targetElement { IDREF }? +common-anim-named-target-attlist &= + attribute smil:attributeName { \string } +common-anim-target-attlist &= attribute anim:sub-item { \string }? +common-anim-values-attlist &= attribute smil:values { \string }? +common-anim-spline-mode-attlist &= + [ a:defaultValue = "discrete" ] + attribute smil:calcMode { + "discrete" | "linear" | "paced" | "spline" + }? +common-spline-anim-value-attlist &= attribute smil:keyTimes { \string }? +common-spline-anim-value-attlist &= + attribute smil:keySplines { \string }? +common-anim-add-accum-attlist &= + attribute smil:accumulate { "none" | "sum" }? +common-anim-add-accum-attlist &= + attribute smil:additive { "replace" | "sum" }? +common-anim-values-attlist &= attribute anim:formula { \string }? +common-anim-set-values-attlist &= attribute smil:to { \string }? +common-anim-values-attlist &= + common-anim-set-values-attlist, + attribute smil:from { \string }?, + attribute smil:by { \string }? +common-begin-end-timing-attlist &= attribute smil:begin { \string }? +common-begin-end-timing-attlist &= attribute smil:end { \string }? +common-dur-timing-attlist &= attribute smil:dur { \string }? +common-endsync-timing-attlist &= + attribute smil:endsync { "first" | "last" | "all" | "media" }? +common-repeat-timing-attlist &= + attribute smil:repeatDur { \string }?, + attribute smil:repeatCount { nonNegativeInteger | "indefinite" }? +common-fill-timing-attlist &= + attribute smil:fill { + "remove" | "freeze" | "hold" | "auto" | "default" | "transition" + }? +common-fill-default-attlist &= + attribute smil:fillDefault { + "remove" | "freeze" | "hold" | "transition" | "auto" | "inherit" + }? +common-restart-timing-attlist &= + [ a:defaultValue = "default" ] + attribute smil:restart { + "never" | "always" | "whenNotActive" | "default" + }? +common-restart-default-attlist &= + [ a:defaultValue = "inherit" ] + attribute smil:restartDefault { + "never" | "always" | "whenNotActive" | "inherit" + }? +common-time-manip-attlist &= + [ a:defaultValue = "0.0" ] attribute smil:accelerate { double }? +common-time-manip-attlist &= + [ a:defaultValue = "0.0" ] attribute smil:decelerate { double }? +common-time-manip-attlist &= + [ a:defaultValue = "false" ] attribute smil:autoReverse { boolean }? +animation-element |= + element anim:par { + common-anim-attlist, + common-timing-attlist, + common-endsync-timing-attlist, + animation-element* + } +common-basic-timing-attlist &= + common-begin-end-timing-attlist, + common-dur-timing-attlist, + common-repeat-timing-attlist +common-timing-attlist &= + common-basic-timing-attlist, + common-restart-timing-attlist, + common-restart-default-attlist, + common-fill-timing-attlist, + common-fill-default-attlist, + common-time-manip-attlist +animation-element |= + element anim:seq { + common-anim-attlist, + common-endsync-timing-attlist, + common-timing-attlist, + animation-element* + } +animation-element |= + element anim:iterate { + common-anim-attlist, + anim-iterate-attlist, + common-timing-attlist, + common-endsync-timing-attlist, + animation-element* + } +anim-iterate-attlist &= common-anim-target-attlist +anim-iterate-attlist &= attribute anim:iterate-type { \string }? +anim-iterate-attlist &= attribute anim:iterate-interval { duration }? +animation-element |= + element anim:audio { + common-anim-attlist, anim-audio-attlist, common-basic-timing-attlist + } +anim-audio-attlist &= attribute xlink:href { anyURI }? +anim-audio-attlist &= attribute anim:audio-level { double }? +animation-element |= + element anim:command { + common-anim-attlist, + anim-command-attlist, + common-begin-end-timing-attlist, + common-anim-target-attlist, + element anim:param { + attribute anim:name { text }, + attribute anim:value { text } + }* + } +anim-command-attlist &= attribute anim:command { \string } +style-style = + element style:style { + style-style-attlist, style-style-content, style-map* + } +style-style-attlist &= attribute style:name { styleName } +style-style-attlist &= attribute style:display-name { \string }? +style-style-attlist &= + attribute style:parent-style-name { styleNameRef }? +style-style-attlist &= attribute style:next-style-name { styleNameRef }? +style-style-attlist &= + attribute style:list-style-name { styleName | empty }? +style-style-attlist &= + attribute style:master-page-name { styleNameRef }? +style-style-attlist &= + [ a:defaultValue = "false" ] attribute style:auto-update { boolean }? +style-style-attlist &= attribute style:data-style-name { styleNameRef }? +style-style-attlist &= attribute style:class { \string }? +style-style-attlist &= + attribute style:default-outline-level { positiveInteger }? +style-map = element style:map { style-map-attlist, empty } +style-map-attlist &= attribute style:condition { \string } +style-map-attlist &= attribute style:apply-style-name { styleNameRef } +style-map-attlist &= attribute style:base-cell-address { cellAddress }? +style-default-style = + element style:default-style { style-style-content } +style-page-layout = + element style:page-layout { + style-page-layout-attlist, + style-page-layout-properties?, + style-header-style?, + style-footer-style? + } +style-page-layout-attlist &= attribute style:name { styleName } +style-page-layout-attlist &= + [ a:defaultValue = "all" ] + attribute style:page-usage { "all" | "left" | "right" | "mirrored" }? +style-header-style = + element style:header-style { style-header-footer-properties? } +style-footer-style = + element style:footer-style { style-header-footer-properties? } +style-master-page = + element style:master-page { + style-master-page-attlist, + (style-header, style-header-left?)?, + (style-footer, style-footer-left?)?, + office-forms?, + style-style*, + shape*, + presentation-notes? + } +style-master-page-attlist &= attribute style:name { styleName } +style-master-page-attlist &= attribute style:display-name { \string }? +style-master-page-attlist &= + attribute style:page-layout-name { styleNameRef } +style-master-page-attlist &= attribute draw:style-name { styleNameRef }? +style-master-page-attlist &= + attribute style:next-style-name { styleNameRef }? +style-header = + element style:header { + common-style-header-footer-attlist, header-footer-content + } +style-footer = + element style:footer { + common-style-header-footer-attlist, header-footer-content + } +style-header-left = + element style:header-left { + common-style-header-footer-attlist, header-footer-content + } +style-footer-left = + element style:footer-left { + common-style-header-footer-attlist, header-footer-content + } +header-footer-content = + (text-tracked-changes, + text-decls, + (text-h + | text-p + | text-list + | table-table + | text-section + | text-table-of-content + | text-illustration-index + | text-table-index + | text-object-index + | text-user-index + | text-alphabetical-index + | text-bibliography + | text-index-title + | change-marks)*) + | (style-region-left?, style-region-center?, style-region-right?) +common-style-header-footer-attlist &= + [ a:defaultValue = "true" ] attribute style:display { boolean }? +style-region-left = element style:region-left { region-content } +style-region-center = element style:region-center { region-content } +style-region-right = element style:region-right { region-content } +region-content = text-p* +presentation-notes = + element presentation:notes { + common-presentation-header-footer-attlist, + presentation-notes-attlist, + office-forms, + shape* + } +presentation-notes-attlist &= + attribute style:page-layout-name { styleNameRef }? +presentation-notes-attlist &= + attribute draw:style-name { styleNameRef }? +table-table-template = + element table:table-template { + table-table-template-attlist, + table-first-row?, + table-last-row?, + table-first-column?, + table-last-column?, + (table-body + | (table-even-rows, table-odd-rows) + | (table-even-columns, table-odd-columns)) + } +table-table-template-attlist &= attribute text:name { \string } +table-table-template-attlist &= + attribute text:first-row-start-column { rowOrCol } +table-table-template-attlist &= + attribute text:first-row-end-column { rowOrCol } +table-table-template-attlist &= + attribute text:last-row-start-column { rowOrCol } +table-table-template-attlist &= + attribute text:last-row-end-column { rowOrCol } +rowOrCol = "row" | "column" +table-first-row = + element table:first-row { common-table-template-attlist, empty } +table-last-row = + element table:last-row { common-table-template-attlist, empty } +table-first-column = + element table:first-column { common-table-template-attlist, empty } +table-last-column = + element table:last-column { common-table-template-attlist, empty } +table-body = element table:body { common-table-template-attlist, empty } +table-even-rows = + element table:even-rows { common-table-template-attlist, empty } +table-odd-rows = + element table:odd-rows { common-table-template-attlist, empty } +table-even-columns = + element table:even-columns { common-table-template-attlist, empty } +table-odd-columns = + element table:odd-columns { common-table-template-attlist, empty } +common-table-template-attlist &= + attribute text:style-name { styleNameRef }, + attribute text:paragraph-style-name { styleNameRef? } +style-font-face = + element style:font-face { + style-font-face-attlist, svg-font-face-src?, svg-definition-src? + } +style-font-face-attlist &= + attribute svg:font-family { \string }?, + attribute svg:font-style { fontStyle }?, + attribute svg:font-variant { fontVariant }?, + attribute svg:font-weight { fontWeight }?, + attribute svg:font-stretch { + "normal" + | "ultra-condensed" + | "extra-condensed" + | "condensed" + | "semi-condensed" + | "semi-expanded" + | "expanded" + | "extra-expanded" + | "ultra-expanded" + }?, + attribute svg:font-size { positiveLength }?, + attribute svg:unicode-range { text }?, + attribute svg:units-per-em { integer }?, + attribute svg:panose-1 { text }?, + attribute svg:stemv { integer }?, + attribute svg:stemh { integer }?, + attribute svg:slope { integer }?, + attribute svg:cap-height { integer }?, + attribute svg:x-height { integer }?, + attribute svg:accent-height { integer }?, + attribute svg:ascent { integer }?, + attribute svg:descent { integer }?, + attribute svg:widths { text }?, + attribute svg:bbox { text }?, + attribute svg:ideographic { integer }?, + attribute svg:alphabetic { integer }?, + attribute svg:mathematical { integer }?, + attribute svg:hanging { integer }?, + attribute svg:v-ideographic { integer }?, + attribute svg:v-alphabetic { integer }?, + attribute svg:v-mathematical { integer }?, + attribute svg:v-hanging { integer }?, + attribute svg:underline-position { integer }?, + attribute svg:underline-thickness { integer }?, + attribute svg:strikethrough-position { integer }?, + attribute svg:strikethrough-thickness { integer }?, + attribute svg:overline-position { integer }?, + attribute svg:overline-thickness { integer }? +svg-font-face-src = + element svg:font-face-src { + (svg-font-face-uri | svg-font-face-name)+ + } +svg-font-face-uri = + element svg:font-face-uri { + common-svg-font-face-xlink-attlist, svg-font-face-format* + } +svg-font-face-format = + element svg:font-face-format { + attribute svg:string { text }?, + empty + } +svg-font-face-name = + element svg:font-face-name { + attribute svg:name { text }?, + empty + } +svg-definition-src = + element svg:definition-src { + common-svg-font-face-xlink-attlist, empty + } +common-svg-font-face-xlink-attlist &= + attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "onRequest" ] + attribute xlink:actuate { "onRequest" }? +style-font-face-attlist &= attribute style:name { \string } +style-font-face-attlist &= attribute style:font-adornments { \string }? +style-font-face-attlist &= + attribute style:font-family-generic { fontFamilyGeneric }? +style-font-face-attlist &= attribute style:font-pitch { fontPitch }? +style-font-face-attlist &= + attribute style:font-charset { textEncoding }? +number-number-style = + element number:number-style { + common-data-style-attlist, + style-text-properties?, + number-text?, + (any-number, number-text?)?, + style-map* + } +any-number = number-number | number-scientific-number | number-fraction +number-number = + element number:number { + number-number-attlist, + common-decimal-places-attlist, + common-number-attlist, + number-embedded-text* + } +number-number-attlist &= attribute number:decimal-replacement { text }? +number-number-attlist &= + [ a:defaultValue = "1" ] attribute number:display-factor { double }? +number-embedded-text = + element number:embedded-text { number-embedded-text-attlist, text } +number-embedded-text-attlist &= attribute number:position { integer } +number-scientific-number = + element number:scientific-number { + number-scientific-number-attlist, + common-decimal-places-attlist, + common-number-attlist, + empty + } +number-scientific-number-attlist &= + attribute number:min-exponent-digits { integer }? +number-fraction = + element number:fraction { + number-fraction-attlist, common-number-attlist, empty + } +number-fraction-attlist &= + attribute number:min-numerator-digits { integer }? +number-fraction-attlist &= + attribute number:min-denominator-digits { integer }? +number-fraction-attlist &= + attribute number:denominator-value { integer }? +number-currency-style = + element number:currency-style { + common-data-style-attlist, + common-auto-reorder-attlist, + style-text-properties?, + number-text?, + ((number-and-text, currency-symbol-and-text?) + | (currency-symbol-and-text, number-and-text?))?, + style-map* + } +currency-symbol-and-text = number-currency-symbol, number-text? +number-and-text = number-number, number-text? +number-currency-symbol = + element number:currency-symbol { + number-currency-symbol-attlist, text + } +number-currency-symbol-attlist &= + attribute number:language { languageCode }?, + attribute number:country { countryCode }? +number-percentage-style = + element number:percentage-style { + common-data-style-attlist, + style-text-properties?, + number-text?, + number-and-text?, + style-map* + } +number-date-style = + element number:date-style { + common-data-style-attlist, + common-auto-reorder-attlist, + common-format-source-attlist, + style-text-properties?, + # This DTD does not reflect the fact that some elements must not + + # occur more than once. + number-text?, + (any-date, number-text?)+, + style-map* + } +any-date = + number-day + | number-month + | number-year + | number-era + | number-day-of-week + | number-week-of-year + | number-quarter + | number-hours + | number-am-pm + | number-minutes + | number-seconds +number-day = + element number:day { + number-day-attlist, common-calendar-attlist, empty + } +number-day-attlist &= + [ a:defaultValue = "short" ] + attribute number:style { "short" | "long" }? +number-month = + element number:month { + number-month-attlist, common-calendar-attlist, empty + } +number-month-attlist &= + [ a:defaultValue = "false" ] attribute number:textual { boolean }? +number-month-attlist &= + [ a:defaultValue = "false" ] + attribute number:possessive-form { boolean }? +number-month-attlist &= + [ a:defaultValue = "short" ] + attribute number:style { "short" | "long" }? +number-year = + element number:year { + number-year-attlist, common-calendar-attlist, empty + } +number-year-attlist &= + [ a:defaultValue = "short" ] + attribute number:style { "short" | "long" }? +number-era = + element number:era { + number-era-attlist, common-calendar-attlist, empty + } +number-era-attlist &= + [ a:defaultValue = "short" ] + attribute number:style { "short" | "long" }? +number-day-of-week = + element number:day-of-week { + number-day-of-week-attlist, common-calendar-attlist, empty + } +number-day-of-week-attlist &= + [ a:defaultValue = "short" ] + attribute number:style { "short" | "long" }? +number-week-of-year = + element number:week-of-year { common-calendar-attlist, empty } +number-quarter = + element number:quarter { + number-quarter-attlist, common-calendar-attlist, empty + } +number-quarter-attlist &= + [ a:defaultValue = "short" ] + attribute number:style { "short" | "long" }? +number-time-style = + element number:time-style { + number-time-style-attlist, + common-data-style-attlist, + common-format-source-attlist, + style-text-properties?, + # This DTD does not reflect the fact that some elements must not + + # occur more than once. + number-text?, + (any-time, number-text?)+, + style-map* + } +any-time = number-hours | number-am-pm | number-minutes | number-seconds +number-time-style-attlist &= + [ a:defaultValue = "true" ] + attribute number:truncate-on-overflow { boolean }? +number-hours = element number:hours { number-hours-attlist, empty } +number-hours-attlist &= + [ a:defaultValue = "short" ] + attribute number:style { "short" | "long" }? +number-minutes = + element number:minutes { number-minutes-attlist, empty } +number-minutes-attlist &= + [ a:defaultValue = "short" ] + attribute number:style { "short" | "long" }? +number-seconds = + element number:seconds { number-seconds-attlist, empty } +number-seconds-attlist &= + [ a:defaultValue = "short" ] + attribute number:style { "short" | "long" }? +number-seconds-attlist &= + [ a:defaultValue = "0" ] attribute number:decimal-places { integer }? +number-am-pm = element number:am-pm { empty } +number-boolean-style = + element number:boolean-style { + common-data-style-attlist, + style-text-properties?, + number-text?, + (number-boolean, number-text?)?, + style-map* + } +number-boolean = element number:boolean { empty } +number-text-style = + element number:text-style { + common-data-style-attlist, + style-text-properties?, + number-text?, + (number-text-content, number-text?)*, + style-map* + } +number-text = element number:text { text } +number-text-content = element number:text-content { empty } +common-data-style-attlist &= attribute style:name { styleName } +style-data-style-attlist &= attribute style:display-name { \string }? +common-data-style-attlist &= attribute number:language { languageCode }? +common-data-style-attlist &= attribute number:country { countryCode }? +common-data-style-attlist &= attribute number:title { text }? +common-data-style-attlist &= attribute style:volatile { boolean }? +common-auto-reorder-attlist &= + [ a:defaultValue = "false" ] + attribute number:automatic-order { boolean }? +common-format-source-attlist = + [ a:defaultValue = "fixed" ] + attribute number:format-source { "fixed" | "language" }? +common-data-style-attlist &= + [ a:defaultValue = "1" ] + attribute number:transliteration-format { \string }? +common-data-style-attlist &= + attribute number:transliteration-language { countryCode }? +common-data-style-attlist &= + attribute number:transliteration-country { countryCode }? +common-data-style-attlist &= + [ a:defaultValue = "short" ] + attribute number:transliteration-style { + "short" | "medium" | "long" + }? +common-decimal-places-attlist = + attribute number:decimal-places { integer }? +common-number-attlist &= + attribute number:min-integer-digits { integer }? +common-number-attlist &= + [ a:defaultValue = "false" ] attribute number:grouping { boolean }? +common-calendar-attlist &= + attribute number:calendar { + "gregorian" + | "gengou" + | "ROC" + | "hanja_yoil" + | "hanja" + | "hijri" + | "jewish" + | "buddhist" + | \string + }? +style-style-content |= + attribute style:family { "text" }, + style-text-properties? +style-style-content |= + attribute style:family { "paragraph" }, + style-paragraph-properties?, + style-text-properties? +style-style-content |= + attribute style:family { "section" }, + style-section-properties? +style-style-content |= + attribute style:family { "ruby" }, + style-ruby-properties? +text-linenumbering-configuration = + element text:linenumbering-configuration { + text-linenumbering-configuration-attlist, + text-linenumbering-separator? + } +text-linenumbering-configuration-attlist &= + [ a:defaultValue = "true" ] attribute text:number-lines { boolean }? +text-linenumbering-configuration-attlist &= common-num-format-attlist? +text-linenumbering-configuration-attlist &= + attribute text:style-name { styleNameRef }? +text-linenumbering-configuration-attlist &= + attribute text:increment { nonNegativeInteger }? +text-linenumbering-configuration-attlist &= + [ a:defaultValue = "left" ] + attribute text:number-position { + "left" | "right" | "inner" | "outer" + }? +text-linenumbering-configuration-attlist &= + attribute text:offset { nonNegativeLength }? +text-linenumbering-configuration-attlist &= + [ a:defaultValue = "true" ] + attribute text:count-empty-lines { boolean }? +text-linenumbering-configuration-attlist &= + [ a:defaultValue = "false" ] + attribute text:count-in-text-boxes { boolean }? +text-linenumbering-configuration-attlist &= + [ a:defaultValue = "false" ] + attribute text:restart-on-page { boolean }? +text-linenumbering-separator = + element text:linenumbering-separator { + attribute text:increment { nonNegativeInteger }?, + text + } +text-notes-configuration = + element text:notes-configuration { text-notes-configuration-content } +text-notes-configuration-content &= text-note-class +text-notes-configuration-content &= + attribute text:citation-style-name { styleNameRef }? +text-notes-configuration-content &= + attribute text:citation-body-style-name { styleNameRef }? +text-notes-configuration-content &= + attribute text:default-style-name { styleNameRef }? +text-notes-configuration-content &= + attribute text:master-page-name { styleNameRef }? +text-notes-configuration-content &= + attribute text:start-value { nonNegativeInteger }? +text-notes-configuration-content &= + common-num-format-prefix-suffix-attlist, common-num-format-attlist? +text-notes-configuration-content &= + attribute text:start-numbering-at { "document" | "chapter" | "page" }? +text-notes-configuration-content &= + attribute text:footnotes-position { + "text" | "page" | "section" | "document" + }? +text-notes-configuration-content &= + element text:note-continuation-notice-forward { text }? +text-notes-configuration-content &= + element text:note-continuation-notice-backward { text }? +text-bibliography-configuration = + element text:bibliography-configuration { + text-bibliography-configuration-attlist, text-sort-key* + } +text-bibliography-configuration-attlist &= + attribute text:prefix { \string }?, + attribute text:suffix { \string }? +text-bibliography-configuration-attlist &= + [ a:defaultValue = "false" ] + attribute text:numbered-entries { boolean }? +text-bibliography-configuration-attlist &= + [ a:defaultValue = "true" ] + attribute text:sort-by-position { boolean }?, + attribute fo:language { languageCode }?, + attribute fo:country { countryCode }?, + attribute text:sort-algorithm { \string }? +text-sort-key = element text:sort-key { text-sort-key-attlist, empty } +text-sort-key-attlist &= + attribute text:key { + "address" + | "annote" + | "author" + | "bibliography-type" + | "booktitle" + | "chapter" + | "custom1" + | "custom2" + | "custom3" + | "custom4" + | "custom5" + | "edition" + | "editor" + | "howpublished" + | "identifier" + | "institution" + | "isbn" + | "issn" + | "journal" + | "month" + | "note" + | "number" + | "organizations" + | "pages" + | "publisher" + | "report-type" + | "school" + | "series" + | "title" + | "url" + | "volume" + | "year" + }, + [ a:defaultValue = "true" ] attribute text:sort-ascending { boolean }? +text-list-style = + element text:list-style { + text-list-style-attr, text-list-style-content* + } +text-list-style-attr &= attribute style:name { styleName } +text-list-style-attr &= attribute style:display-name { \string }? +text-list-style-attr &= + [ a:defaultValue = "false" ] + attribute text:consecutive-numbering { boolean }? +text-list-level-style-attr = attribute text:level { positiveInteger } +text-list-style-content |= + element text:list-level-style-number { + text-list-level-style-attr, + text-list-level-style-number-attr, + style-list-level-properties?, + style-text-properties? + } +text-list-level-style-number-attr &= + attribute text:style-name { styleNameRef }? +text-list-level-style-number-attr &= + common-num-format-attlist, common-num-format-prefix-suffix-attlist +text-list-level-style-number-attr &= + [ a:defaultValue = "1" ] + attribute text:display-levels { positiveInteger }? +text-list-level-style-number-attr &= + [ a:defaultValue = "1" ] + attribute text:start-value { positiveInteger }? +text-list-style-content |= + element text:list-level-style-bullet { + text-list-level-style-attr, + text-list-level-style-bullet-attr, + style-list-level-properties?, + style-text-properties? + } +text-list-level-style-bullet-attr &= + attribute text:style-name { styleNameRef }? +text-list-level-style-bullet-attr &= + attribute text:bullet-char { character } +text-list-level-style-bullet-attr &= + common-num-format-prefix-suffix-attlist +text-list-level-style-bullet-attr &= + attribute text:bullet-relative-size { percent }? +text-list-style-content |= + element text:list-level-style-image { + text-list-level-style-attr, + text-list-level-style-image-attr, + style-list-level-properties? + } +text-list-level-style-image-attr &= + common-draw-data-attlist | office-binary-data +text-outline-style = + element text:outline-style { text-outline-level-style+ } +text-outline-level-style = + element text:outline-level-style { + text-outline-level-style-attlist, + style-list-level-properties?, + style-text-properties? + } +text-outline-level-style-attlist &= + attribute text:level { positiveInteger } +text-outline-level-style-attlist &= + attribute text:style-name { styleNameRef }? +text-outline-level-style-attlist &= + common-num-format-attlist, common-num-format-prefix-suffix-attlist +text-outline-level-style-attlist &= + [ a:defaultValue = "1" ] + attribute text:display-levels { positiveInteger }? +text-outline-level-style-attlist &= + [ a:defaultValue = "1" ] + attribute text:start-value { positiveInteger }? +style-style-content |= + attribute style:family { "table" }, + style-table-properties? +style-style-content |= + attribute style:family { "table-column" }, + style-table-column-properties? +style-style-content |= + attribute style:family { "table-row" }, + style-table-row-properties? +style-style-content |= + attribute style:family { "table-cell" }, + style-table-cell-properties?, + style-paragraph-properties?, + style-text-properties? +style-style-content |= + attribute style:family { "graphic" | "presentation" }, + style-graphic-properties?, + style-paragraph-properties?, + style-text-properties? +style-graphic-properties = + element style:graphic-properties { style-graphic-properties-content } +style-graphic-properties-content = style-properties-content +style-graphic-properties-content-strict = + style-graphic-properties-attlist, + style-graphic-fill-properties-attlist, + style-graphic-properties-elements +style-graphic-properties-elements = empty +style-style-content |= + attribute style:family { "drawing-page" }, + style-drawing-page-properties? +style-drawing-page-properties = + element style:drawing-page-properties { + style-drawing-page-properties-content + } +style-drawing-page-properties-content = style-properties-content +style-drawing-page-properties-content-strict = + style-graphic-fill-properties-attlist, + style-drawing-page-properties-attlist, + style-drawing-page-properties-elements +draw-gradient = + element draw:gradient { + common-draw-gradient-attlist, draw-gradient-attlist, empty + } +common-draw-gradient-attlist &= attribute draw:name { styleName }? +common-draw-gradient-attlist &= attribute draw:display-name { \string }? +common-draw-gradient-attlist &= attribute draw:style { gradient-style } +gradient-style = + "linear" | "axial" | "radial" | "ellipsoid" | "square" | "rectangular" +common-draw-gradient-attlist &= + attribute draw:cx { percent }?, + attribute draw:cy { percent }? +draw-gradient-attlist &= + attribute draw:start-color { color }?, + attribute draw:end-color { color }? +draw-gradient-attlist &= + attribute draw:start-intensity { percent }?, + attribute draw:end-intensity { percent }? +common-draw-gradient-attlist &= attribute draw:angle { integer }? +common-draw-gradient-attlist &= attribute draw:border { percent }? +svg-linearGradient = + element svg:linearGradient { + common-svg-gradient-attlist, + [ a:defaultValue = "0%" ] + attribute svg:x1 { coordinate | percent }?, + [ a:defaultValue = "0%" ] + attribute svg:y1 { coordinate | percent }?, + [ a:defaultValue = "100%" ] + attribute svg:x2 { coordinate | percent }?, + [ a:defaultValue = "100%" ] + attribute svg:y2 { coordinate | percent }?, + svg-stop* + } +svg-radialGradient = + element svg:radialGradient { + common-svg-gradient-attlist, + [ a:defaultValue = "50%" ] + attribute svg:cx { coordinate | percent }?, + [ a:defaultValue = "50%" ] + attribute svg:cy { coordinate | percent }?, + [ a:defaultValue = "50%" ] + attribute svg:r { coordinate | percent }?, + attribute svg:fx { coordinate | percent }?, + attribute svg:fy { coordinate | percent }?, + svg-stop* + } +svg-stop = + element svg:stop { + attribute svg:offset { double | percent }, + attribute svg:stop-color { color }?, + attribute svg:stop-opacity { double }? + } +common-svg-gradient-attlist &= + [ a:defaultValue = "objectBoundingBox" ] + attribute svg:gradientUnits { "objectBoundingBox" }?, + attribute svg:gradientTransform { \string }?, + [ a:defaultValue = "pad" ] + attribute svg:spreadMethod { "pad" | "reflect" | "repeat" }? +common-svg-gradient-attlist &= attribute draw:name { styleName } +common-svg-gradient-attlist &= attribute draw:display-name { \string }? +draw-hatch = element draw:hatch { draw-hatch-attlist, empty } +draw-hatch-attlist &= attribute draw:name { styleName } +draw-hatch-attlist &= attribute draw:display-name { \string }? +draw-hatch-attlist &= + attribute draw:style { "single" | "double" | "triple" } +draw-hatch-attlist &= attribute draw:color { color }? +draw-hatch-attlist &= attribute draw:distance { length }? +draw-hatch-attlist &= attribute draw:rotation { integer }? +draw-fill-image = + element draw:fill-image { + draw-fill-image-attlist, + attribute xlink:href { anyURI }, + [ a:defaultValue = "simple" ] attribute xlink:type { "simple" }?, + [ a:defaultValue = "embed" ] attribute xlink:show { "embed" }?, + [ a:defaultValue = "onLoad" ] attribute xlink:actuate { "onLoad" }?, + empty + } +draw-fill-image-attlist &= attribute draw:name { styleName } +draw-fill-image-attlist &= attribute draw:display-name { \string }? +draw-fill-image-attlist &= + attribute svg:width { length }?, + attribute svg:height { length }? +draw-opacity = + element draw:opacity { + common-draw-gradient-attlist, draw-opacity-attlist, empty + } +draw-opacity-attlist &= + attribute draw:start { percent }?, + attribute draw:end { percent }? +draw-marker = + element draw:marker { + draw-marker-attlist, + common-draw-viewbox-attlist, + common-draw-path-data-attlist, + empty + } +draw-marker-attlist &= attribute draw:name { styleName } +draw-marker-attlist &= attribute draw:display-name { \string }? +draw-stroke-dash = + element draw:stroke-dash { draw-stroke-dash-attlist, empty } +draw-stroke-dash-attlist &= attribute draw:name { styleName } +draw-stroke-dash-attlist &= attribute draw:display-name { \string }? +draw-stroke-dash-attlist &= attribute draw:style { "rect" | "round" }? +draw-stroke-dash-attlist &= + attribute draw:dots1 { integer }?, + attribute draw:dots1-length { length }?, + attribute draw:dots2 { integer }?, + attribute draw:dots2-length { length }? +draw-stroke-dash-attlist &= attribute draw:distance { length }? +style-presentation-page-layout = + element style:presentation-page-layout { + attribute style:name { styleName }, + attribute style:display-name { \string }?, + presentation-placeholder* + } +presentation-placeholder = + element presentation:placeholder { + attribute presentation:object { presentation-classes }, + attribute svg:x { coordinate | percent }, + attribute svg:y { coordinate | percent }, + attribute svg:width { length | percent }, + attribute svg:height { length | percent }, + empty + } +style-style-content |= + attribute style:family { "chart" }, + style-chart-properties?, + style-graphic-properties?, + style-paragraph-properties?, + style-text-properties? +style-properties-content = anyAttListOrElements +style-page-layout-properties = + element style:page-layout-properties { + style-page-layout-properties-content + } +style-page-layout-properties-content = style-properties-content +style-page-layout-properties-content-strict = + style-page-layout-properties-attlist, + style-page-layout-properties-elements +style-page-layout-properties-attlist &= + attribute fo:page-width { length }?, + attribute fo:page-height { length }? +style-page-layout-properties-attlist &= + common-num-format-attlist?, common-num-format-prefix-suffix-attlist +style-page-layout-properties-attlist &= + attribute style:paper-tray-name { "default" | \string }? +style-page-layout-properties-attlist &= + attribute style:print-orientation { "portrait" | "landscape" }? +style-page-layout-properties-attlist &= + common-horizontal-margin-attlist, + common-vertical-margin-attlist, + common-margin-attlist +style-page-layout-properties-attlist &= common-border-attlist +style-page-layout-properties-attlist &= common-border-line-width-attlist +style-page-layout-properties-attlist &= common-padding-attlist +style-page-layout-properties-attlist &= common-shadow-attlist +style-page-layout-properties-attlist &= common-background-color-attlist +style-page-layout-properties-elements &= style-background-image +style-page-layout-properties-elements &= style-columns +style-page-layout-properties-attlist &= + attribute style:register-truth-ref-style-name { styleNameRef }? +style-page-layout-properties-attlist &= + attribute style:print { + list { + ("headers" + | "grid" + | "annotations" + | "objects" + | "charts" + | "drawings" + | "formulas" + | "zero-values")* + } + }? +style-page-layout-properties-attlist &= + attribute style:print-page-order { "ttb" | "ltr" }? +style-page-layout-properties-attlist &= + attribute style:first-page-number { positiveInteger | "continue" }? +style-page-layout-properties-attlist &= + attribute style:scale-to { percent }?, + attribute style:scale-to-pages { positiveInteger }? +style-page-layout-properties-attlist &= + attribute style:table-centering { + "horizontal" | "vertical" | "both" | "none" + }? +style-page-layout-properties-attlist &= + attribute style:footnote-max-height { length }? +style-page-layout-properties-attlist &= common-writing-mode-attlist +style-page-layout-properties-elements &= style-footnote-sep +style-footnote-sep = + element style:footnote-sep { style-footnote-sep-attlist, empty }? +style-footnote-sep-attlist &= + attribute style:width { length }?, + attribute style:rel-width { percent }?, + attribute style:color { color }?, + attribute style:line-style { lineStyle }?, + [ a:defaultValue = "left" ] + attribute style:adjustment { "left" | "center" | "right" }?, + attribute style:distance-before-sep { length }?, + attribute style:distance-after-sep { length }? +style-page-layout-properties-attlist &= + attribute style:layout-grid-mode { "none" | "line" | "both" }? +style-page-layout-properties-attlist &= + attribute style:layout-grid-base-height { length }? +style-page-layout-properties-attlist &= + attribute style:layout-grid-ruby-height { length }? +style-page-layout-properties-attlist &= + attribute style:layout-grid-lines { positiveInteger }? +style-page-layout-properties-attlist &= + attribute style:layout-grid-color { color }? +style-page-layout-properties-attlist &= + attribute style:layout-grid-ruby-below { boolean }? +style-page-layout-properties-attlist &= + attribute style:layout-grid-print { boolean }? +style-page-layout-properties-attlist &= + attribute style:layout-grid-display { boolean }? +style-header-footer-properties = + element style:header-footer-properties { + style-header-footer-properties-content + } +style-header-footer-properties-content = style-properties-content +style-header-footer-properties-content-strict = + style-header-footer-properties-attlist, + style-header-footer-properties-elements +style-header-footer-properties-attlist &= + attribute svg:height { length }?, + attribute fo:min-height { length }? +style-header-footer-properties-attlist &= + common-horizontal-margin-attlist, + common-vertical-margin-attlist, + common-margin-attlist +style-header-footer-properties-attlist &= common-border-attlist +style-header-footer-properties-attlist &= + common-border-line-width-attlist +style-header-footer-properties-attlist &= common-padding-attlist +style-header-footer-properties-attlist &= + common-background-color-attlist +style-header-footer-properties-elements &= style-background-image +style-header-footer-properties-attlist &= common-shadow-attlist +style-header-footer-properties-attlist &= + attribute style:dynamic-spacing { boolean }? +style-text-properties = + element style:text-properties { style-text-properties-content } +style-text-properties-content = style-properties-content +style-text-properties-content-strict = + style-text-properties-attlist, style-text-properties-elements +style-text-properties-elements = empty +style-text-properties-attlist &= + attribute fo:font-variant { fontVariant }? +fontVariant = "normal" | "small-caps" +style-text-properties-attlist &= + attribute fo:text-transform { + "none" | "lowercase" | "uppercase" | "capitalize" + }? +style-text-properties-attlist &= attribute fo:color { color }? +style-text-properties-attlist &= + attribute style:use-window-font-color { boolean }? +style-text-properties-attlist &= + attribute style:text-outline { boolean }? +style-text-properties-attlist &= + attribute style:text-line-through-type { lineType }? +style-text-properties-attlist &= + attribute style:text-line-through-style { lineStyle }? +style-text-properties-attlist &= + attribute style:text-line-through-width { lineWidth }? +style-text-properties-attlist &= + attribute style:text-line-through-color { "font-color" | color }? +style-text-properties-attlist &= + attribute style:text-line-through-text { \string }? +style-text-properties-attlist &= + attribute style:text-line-through-text-style { styleNameRef }? +style-text-properties-attlist &= + attribute style:text-position { + list { (percent | "super" | "sub"), percent? } + }? +style-text-properties-attlist &= + attribute style:font-name { \string }?, + attribute style:font-name-asian { \string }?, + attribute style:font-name-complex { \string }? +style-text-properties-attlist &= + attribute fo:font-family { \string }?, + attribute style:font-family-asian { \string }?, + attribute style:font-family-complex { \string }? +style-text-properties-attlist &= + attribute style:font-family-generic { fontFamilyGeneric }?, + attribute style:font-family-generic-asian { fontFamilyGeneric }?, + attribute style:font-family-generic-complex { fontFamilyGeneric }? +fontFamilyGeneric = + "roman" | "swiss" | "modern" | "decorative" | "script" | "system" +style-text-properties-attlist &= + attribute style:font-style-name { \string }?, + attribute style:font-style-name-asian { \string }?, + attribute style:font-style-name-complex { \string }? +style-text-properties-attlist &= + attribute style:font-pitch { fontPitch }?, + attribute style:font-pitch-asian { fontPitch }?, + attribute style:font-pitch-complex { fontPitch }? +fontPitch = "fixed" | "variable" +style-text-properties-attlist &= + attribute style:font-charset { textEncoding }?, + attribute style:font-charset-asian { textEncoding }?, + attribute style:font-charset-complex { textEncoding }? +textEncoding = xsd:string { pattern = "[A-Za-z][A-Za-z0-9._\-]*" } +style-text-properties-attlist &= + attribute fo:font-size { positiveLength | percent }?, + attribute style:font-size-asian { positiveLength | percent }?, + attribute style:font-size-complex { positiveLength | percent }? +style-text-properties-attlist &= + attribute style:font-size-rel { length }?, + attribute style:font-size-rel-asian { length }?, + attribute style:font-size-rel-complex { length }? +style-text-properties-attlist &= + attribute style:script-type { + "latin" | "asian" | "complex" | "ignore" + }? +style-text-properties-attlist &= + attribute fo:letter-spacing { length | "normal" }? +style-text-properties-attlist &= + attribute fo:language { languageCode }?, + attribute style:language-asian { languageCode }?, + attribute style:language-complex { languageCode }? +style-text-properties-attlist &= + attribute fo:country { countryCode }?, + attribute style:country-asian { countryCode }?, + attribute style:country-complex { countryCode }? +style-text-properties-attlist &= + attribute fo:font-style { fontStyle }?, + attribute style:font-style-asian { fontStyle }?, + attribute style:font-style-complex { fontStyle }? +fontStyle = "normal" | "italic" | "oblique" +style-text-properties-attlist &= + attribute style:font-relief { "none" | "embossed" | "engraved" }? +style-text-properties-attlist &= + attribute fo:text-shadow { shadowType }? +shadowType = + "none" + | # The following string must match an XSL shadow decl + \string +style-text-properties-attlist &= + attribute style:text-underline-type { lineType }? +lineType = "none" | "single" | "double" +style-text-properties-attlist &= + attribute style:text-underline-style { lineStyle }? +lineStyle = + "none" + | "solid" + | "dotted" + | "dash" + | "long-dash" + | "dot-dash" + | "dot-dot-dash" + | "wave" +style-text-properties-attlist &= + attribute style:text-underline-width { lineWidth }? +lineWidth = + "auto" + | "normal" + | "bold" + | "thin" + | "dash" + | "medium" + | "thick" + | positiveInteger + | percent + | positiveLength +style-text-properties-attlist &= + attribute style:text-underline-color { "font-color" | color }? +style-text-properties-attlist &= + attribute fo:font-weight { fontWeight }?, + attribute style:font-weight-asian { fontWeight }?, + attribute style:font-weight-complex { fontWeight }? +fontWeight = + "normal" + | "bold" + | "100" + | "200" + | "300" + | "400" + | "500" + | "600" + | "700" + | "800" + | "900" +style-text-properties-attlist &= + attribute style:text-underline-mode { lineMode }? +lineMode = "continuous" | "skip-white-space" +style-text-properties-attlist &= + attribute style:text-line-through-mode { lineMode }? +style-text-properties-attlist &= + attribute style:letter-kerning { boolean }? +style-text-properties-attlist &= + attribute style:text-blinking { boolean }? +style-text-properties-attlist &= common-background-color-attlist +style-text-properties-attlist &= + attribute style:text-combine { "none" | "letters" | "lines" }? +style-text-properties-attlist &= + attribute style:text-combine-start-char { character }?, + attribute style:text-combine-end-char { character }? +style-text-properties-attlist &= + attribute style:text-emphasize { + "none" + | list { + ("none" | "accent" | "dot" | "circle" | "disc"), + ("above" | "below") + } + }? +style-text-properties-attlist &= attribute style:text-scale { percent }? +style-text-properties-attlist &= + attribute style:text-rotation-angle { integer }? +style-text-properties-attlist &= + attribute style:text-rotation-scale { "fixed" | "line-height" }? +style-text-properties-attlist &= attribute fo:hyphenate { boolean }? +style-text-properties-attlist &= + attribute fo:hyphenation-remain-char-count { positiveInteger }? +style-text-properties-attlist &= + attribute fo:hyphenation-push-char-count { positiveInteger }? +style-text-properties-attlist &= + attribute text:display { "true" } + | attribute text:display { "none" } + | (attribute text:display { "condition" }, + attribute text:condition { "none" }) + | empty +style-paragraph-properties = + element style:paragraph-properties { + style-paragraph-properties-content + } +style-paragraph-properties-content = style-properties-content +style-paragraph-properties-content-strict = + style-paragraph-properties-attlist, + style-paragraph-properties-elements +style-paragraph-properties-attlist &= + attribute fo:line-height { "normal" | nonNegativeLength | percent }? +style-paragraph-properties-attlist &= + attribute style:line-height-at-least { nonNegativeLength }? +style-paragraph-properties-attlist &= + attribute style:line-spacing { length }? +style-paragraph-properties-attlist &= + attribute style:font-independent-line-spacing { boolean }? +style-paragraph-properties-attlist &= common-text-align +common-text-align = + attribute fo:text-align { + "start" | "end" | "left" | "right" | "center" | "justify" + }? +style-paragraph-properties-attlist &= + attribute fo:text-align-last { "start" | "center" | "justify" }? +style-paragraph-properties-attlist &= + attribute style:justify-single-word { boolean }? +style-paragraph-properties-attlist &= + attribute fo:keep-together { "auto" | "always" }? +style-paragraph-properties-attlist &= + attribute fo:widows { nonNegativeInteger }? +style-paragraph-properties-attlist &= + attribute fo:orphans { nonNegativeInteger }? +style-paragraph-properties-elements &= style-tab-stops +style-tab-stops = element style:tab-stops { style-tab-stop* }? +style-tab-stop = + element style:tab-stop { style-tab-stop-attlist, empty } +style-tab-stop-attlist &= attribute style:position { nonNegativeLength } +style-tab-stop-attlist &= + [ a:defaultValue = "left" ] + attribute style:type { "left" | "center" | "right" }? + | (attribute style:type { "char" }, + style-tab-stop-char-attlist) +style-tab-stop-char-attlist &= attribute style:char { character } +style-tab-stop-attlist &= attribute style:leader-type { lineType }? +style-tab-stop-attlist &= attribute style:leader-style { lineStyle }? +style-tab-stop-attlist &= attribute style:leader-width { lineWidth }? +style-tab-stop-attlist &= + attribute style:leader-color { "font-color" | color }? +style-tab-stop-attlist &= + [ a:defaultValue = " " ] attribute style:leader-text { \string }? +style-tab-stop-attlist &= + attribute style:leader-text-style { styleNameRef }? +style-paragraph-properties-attlist &= + attribute style:tab-stop-distance { nonNegativeLength }? +style-paragraph-properties-attlist &= + attribute fo:hyphenation-keep { "auto" | "page" }? +style-paragraph-properties-attlist &= + attribute fo:hyphenation-ladder-count { + "no-limit" | positiveInteger + }? +style-paragraph-properties-elements &= style-drop-cap +style-drop-cap = + element style:drop-cap { style-drop-cap-attlist, empty }? +style-drop-cap-attlist &= + [ a:defaultValue = "1" ] + attribute style:length { "word" | positiveInteger }? +style-drop-cap-attlist &= + [ a:defaultValue = "1" ] attribute style:lines { positiveInteger }? +style-drop-cap-attlist &= + [ a:defaultValue = "0cm" ] attribute style:distance { length }? +style-drop-cap-attlist &= attribute style:style-name { styleNameRef }? +style-paragraph-properties-attlist &= + attribute style:register-true { boolean }? +style-paragraph-properties-attlist &= common-horizontal-margin-attlist +common-horizontal-margin-attlist = + attribute fo:margin-left { length | percent }?, + attribute fo:margin-right { length | percent }? +style-paragraph-properties-attlist &= + attribute fo:text-indent { length | percent }? +style-paragraph-properties-attlist &= + attribute style:auto-text-indent { boolean }? +style-paragraph-properties-attlist &= common-vertical-margin-attlist +common-vertical-margin-attlist = + attribute fo:margin-top { nonNegativeLength | percent }?, + attribute fo:margin-bottom { nonNegativeLength | percent }? +style-paragraph-properties-attlist &= common-margin-attlist +common-margin-attlist = + attribute fo:margin { nonNegativeLength | percent }? +style-paragraph-properties-attlist &= common-break-attlist +common-break-attlist = + attribute fo:break-before { "auto" | "column" | "page" }?, + attribute fo:break-after { "auto" | "column" | "page" }? +style-paragraph-properties-attlist &= common-background-color-attlist +common-background-color-attlist = + attribute fo:background-color { "transparent" | color }? +style-paragraph-properties-elements &= style-background-image +style-background-image = + element style:background-image { + style-background-image-attlist, + (common-draw-data-attlist | office-binary-data | empty) + }? +style-background-image-attlist &= + [ a:defaultValue = "repeat" ] + attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? +style-background-image-attlist &= + [ a:defaultValue = "center" ] + attribute style:position { + "left" + | "center" + | "right" + | "top" + | "bottom" + | list { horiBackPos, vertBackPos } + | list { vertBackPos, horiBackPos } + }? +horiBackPos = "left" | "center" | "right" +vertBackPos = "top" | "center" | "bottom" +style-background-image-attlist &= + attribute style:filter-name { \string }? +style-background-image-attlist &= attribute draw:opacity { percent }? +style-paragraph-properties-attlist &= common-border-attlist +common-border-attlist = + attribute fo:border { \string }?, + attribute fo:border-top { \string }?, + attribute fo:border-bottom { \string }?, + attribute fo:border-left { \string }?, + attribute fo:border-right { \string }? +style-paragraph-properties-attlist &= common-border-line-width-attlist +common-border-line-width-attlist = + attribute style:border-line-width { borderWidths }?, + attribute style:border-line-width-top { borderWidths }?, + attribute style:border-line-width-bottom { borderWidths }?, + attribute style:border-line-width-left { borderWidths }?, + attribute style:border-line-width-right { borderWidths }? +borderWidths = list { positiveLength, positiveLength, positiveLength } +style-paragraph-properties-attlist &= common-padding-attlist +common-padding-attlist = + attribute fo:padding { nonNegativeLength }?, + attribute fo:padding-top { nonNegativeLength }?, + attribute fo:padding-bottom { nonNegativeLength }?, + attribute fo:padding-left { nonNegativeLength }?, + attribute fo:padding-right { nonNegativeLength }? +style-paragraph-properties-attlist &= common-shadow-attlist +common-shadow-attlist = attribute style:shadow { shadowType }? +style-paragraph-properties-attlist &= common-keep-with-next-attlist +common-keep-with-next-attlist = + attribute fo:keep-with-next { "auto" | "always" }? +style-paragraph-properties-attlist &= + [ a:defaultValue = "false" ] attribute text:number-lines { boolean }? +style-paragraph-properties-attlist &= + attribute text:line-number { nonNegativeInteger }? +style-paragraph-properties-attlist &= + attribute style:text-autospace { "none" | "ideograph-alpha" }? +style-paragraph-properties-attlist &= + attribute style:punctuation-wrap { "simple" | "hanging" }? +style-paragraph-properties-attlist &= + attribute style:line-break { "normal" | "strict" }? +style-paragraph-properties-attlist &= + [ a:defaultValue = "auto" ] + attribute style:vertical-align { + "top" | "middle" | "bottom" | "auto" | "baseline" + }? +style-paragraph-properties-attlist &= common-writing-mode-attlist +common-writing-mode-attlist = + attribute style:writing-mode { + "lr-tb" | "rl-tb" | "tb-rl" | "tb-lr" | "lr" | "rl" | "tb" | "page" + }? +style-paragraph-properties-attlist &= + attribute style:writing-mode-automatic { boolean }? +style-paragraph-properties-attlist &= + attribute style:snap-to-layout-grid { boolean }? +style-paragraph-properties-attlist &= common-page-number-attlist +common-page-number-attlist = + attribute style:page-number { positiveInteger | "auto" }? +style-paragraph-properties-attlist &= + attribute style:background-transparency { percent }? +style-ruby-properties = + element style:ruby-properties { style-ruby-properties-content } +style-ruby-properties-content = style-properties-content +style-ruby-properties-content-strict = + style-ruby-properties-attlist, style-ruby-properties-elements +style-ruby-properties-elements = empty +style-ruby-properties-attlist &= + attribute style:ruby-position { "above" | "below" }? +style-ruby-properties-attlist &= + attribute style:ruby-align { + "left" + | "center" + | "right" + | "distribute-letter" + | "distribute-space" + }? +style-section-properties = + element style:section-properties { style-section-properties-content } +style-section-properties-content = style-properties-content +style-section-properties-content-strict = + style-section-properties-attlist, style-section-properties-elements +style-section-properties-attlist &= common-background-color-attlist +style-section-properties-elements &= style-background-image +style-section-properties-attlist &= common-horizontal-margin-attlist +style-section-properties-elements &= style-columns +style-columns = + element style:columns { + style-columns-attlist, style-column-sep?, style-column* + }? +style-columns-attlist &= attribute fo:column-count { positiveInteger } +style-columns-attlist &= attribute fo:column-gap { length }? +style-column = element style:column { style-column-attlist } +style-column-attlist &= attribute style:rel-width { relativeLength } +style-column-attlist &= + [ a:defaultValue = "0cm" ] attribute fo:start-indent { length }? +style-column-attlist &= + [ a:defaultValue = "0cm" ] attribute fo:end-indent { length }? +style-column-attlist &= + [ a:defaultValue = "0cm" ] attribute fo:space-before { length }? +style-column-attlist &= + [ a:defaultValue = "0cm" ] attribute fo:space-after { length }? +style-column-sep = element style:column-sep { style-column-sep-attlist } +style-column-sep-attlist &= + [ a:defaultValue = "solid" ] + attribute style:style { + "none" | "solid" | "dotted" | "dashed" | "dot-dashed" + }? +style-column-sep-attlist &= attribute style:width { length } +style-column-sep-attlist &= + [ a:defaultValue = "100%" ] attribute style:height { percent }? +style-column-sep-attlist &= + [ a:defaultValue = "top" ] + attribute style:vertical-align { "top" | "middle" | "bottom" }? +style-column-sep-attlist &= + [ a:defaultValue = "#000000" ] attribute style:color { color }? +style-section-properties-attlist &= + [ a:defaultValue = "false" ] attribute style:protect { boolean }? +style-section-properties-attlist &= + attribute text:dont-balance-text-columns { boolean }? +style-section-properties-attlist &= common-writing-mode-attlist +style-section-properties-elements &= text-notes-configuration* +style-table-properties = + element style:table-properties { style-table-properties-content } +style-table-properties-content = style-properties-content +style-table-properties-content-strict = + style-table-properties-attlist, style-table-properties-elements +style-table-properties-attlist &= + attribute style:width { positiveLength }?, + attribute style:rel-width { percent }? +style-table-properties-attlist &= + attribute table:align { "left" | "center" | "right" | "margins" }? +style-table-properties-attlist &= common-horizontal-margin-attlist +style-table-properties-attlist &= common-vertical-margin-attlist +style-table-properties-attlist &= common-margin-attlist +style-table-properties-attlist &= common-page-number-attlist +style-table-properties-attlist &= common-break-attlist +style-table-properties-attlist &= common-background-color-attlist +style-table-properties-elements &= style-background-image +style-table-properties-attlist &= common-shadow-attlist +style-table-properties-attlist &= common-keep-with-next-attlist +style-table-properties-attlist &= + attribute style:may-break-between-rows { boolean }? +style-table-properties-attlist &= + attribute table:border-model { "collapsing" | "separating" }? +style-table-properties-attlist &= common-writing-mode-attlist +style-table-properties-attlist &= attribute table:display { boolean }? +style-table-column-properties = + element style:table-column-properties { + style-table-column-properties-content + } +style-table-column-properties-content = style-properties-content +style-table-column-properties-content-strict = + style-table-column-properties-attlist, + style-table-column-properties-elements +style-table-column-properties-elements = empty +style-table-column-properties-attlist &= + attribute style:column-width { positiveLength }?, + attribute style:rel-column-width { relativeLength }? +style-table-column-properties-attlist &= + attribute style:use-optimal-column-width { boolean }? +style-table-column-properties-attlist &= common-break-attlist +style-table-row-properties = + element style:table-row-properties { + style-table-row-properties-content + } +style-table-row-properties-content = style-properties-content +style-table-row-properties-content-strict = + style-table-row-properties-attlist, + style-table-row-properties-elements +style-table-row-properties-attlist &= + attribute style:row-height { positiveLength }?, + attribute style:min-row-height { nonNegativeLength }? +style-table-row-properties-attlist &= + attribute style:use-optimal-row-height { boolean }? +style-table-row-properties-attlist &= common-background-color-attlist +style-table-row-properties-elements &= style-background-image +style-table-row-properties-attlist &= common-break-attlist +style-table-row-properties-attlist &= + attribute fo:keep-together { "auto" | "always" }? +style-table-cell-properties = + element style:table-cell-properties { + style-table-cell-properties-content + } +style-table-cell-properties-content = style-properties-content +style-table-cell-properties-content-strict = + style-table-cell-properties-attlist, + style-table-cell-properties-elements +style-table-cell-properties-attlist &= + attribute style:vertical-align { + "top" | "middle" | "bottom" | "automatic" + }? +style-table-cell-properties-attlist &= + attribute style:text-align-source { "fix" | "value-type" }? +style-table-cell-properties-attlist &= common-style-direction-attlist +common-style-direction-attlist = + attribute style:direction { "ltr" | "ttb" }? +style-table-cell-properties-attlist &= + attribute style:glyph-orientation-vertical { "auto" | "0" }? +style-table-cell-properties-attlist &= common-shadow-attlist +style-table-cell-properties-attlist &= common-background-color-attlist +style-table-cell-properties-elements &= style-background-image +style-table-cell-properties-attlist &= common-border-attlist +style-table-cell-properties-attlist &= + attribute style:diagonal-tl-br { \string }?, + attribute style:diagonal-tl-br-widths { borderWidths }?, + attribute style:diagonal-bl-tr { \string }?, + attribute style:diagonal-bl-tr-widths { borderWidths }? +style-table-cell-properties-attlist &= common-border-line-width-attlist +style-table-cell-properties-attlist &= common-padding-attlist +style-table-cell-properties-attlist &= + attribute fo:wrap-option { "no-wrap" | "wrap" }? +style-table-cell-properties-attlist &= common-rotation-angle-attlist +common-rotation-angle-attlist = + attribute style:rotation-angle { nonNegativeInteger }? +style-table-cell-properties-attlist &= + attribute style:rotation-align { + "none" | "bottom" | "top" | "center" + }? +style-table-cell-properties-attlist &= + attribute style:cell-protect { + "none" + | "hidden-and-protected" + | list { ("protected" | "formula-hidden")+ } + }? +style-table-cell-properties-attlist &= + attribute style:print-content { boolean }? +style-table-cell-properties-attlist &= + attribute style:decimal-places { nonNegativeInteger }? +style-table-cell-properties-attlist &= + attribute style:repeat-content { boolean }? +style-table-cell-properties-attlist &= + attribute style:shrink-to-fit { boolean }? +style-list-level-properties = + element style:list-level-properties { + style-list-level-properties-content + } +style-list-level-properties-content = style-properties-content +style-list-level-properties-content-strict = + style-list-level-properties-attlist, + style-list-level-properties-elements +style-list-level-properties-elements = empty +style-list-level-properties-attlist &= common-text-align +style-list-level-properties-attlist &= + attribute text:space-before { nonNegativeLength }? +style-list-level-properties-attlist &= + attribute text:min-label-width { nonNegativeLength }? +style-list-level-properties-attlist &= + attribute text:min-label-distance { nonNegativeLength }? +style-list-level-properties-attlist &= + attribute style:font-name { \string }? +style-list-level-properties-attlist &= + attribute fo:width { positiveLength }?, + attribute fo:height { positiveLength }? +style-list-level-properties-attlist &= + common-vertical-rel-attlist, common-vertical-pos-attlist +style-graphic-properties-attlist &= + attribute draw:stroke { "none" | "dash" | "solid" }? +style-graphic-properties-attlist &= + attribute draw:stroke-dash { styleNameRef }? +style-graphic-properties-attlist &= + attribute draw:stroke-dash-names { styleNameRefs }? +style-graphic-properties-attlist &= + attribute svg:stroke-width { length }? +style-graphic-properties-attlist &= + attribute svg:stroke-color { color }? +style-graphic-properties-attlist &= + attribute draw:marker-start { styleNameRef }? +style-graphic-properties-attlist &= + attribute draw:marker-end { styleNameRef }? +style-graphic-properties-attlist &= + attribute draw:marker-start-width { length }? +style-graphic-properties-attlist &= + attribute draw:marker-end-width { length }? +style-graphic-properties-attlist &= + attribute draw:marker-start-center { boolean }? +style-graphic-properties-attlist &= + attribute draw:marker-end-center { boolean }? +style-graphic-properties-attlist &= + attribute svg:stroke-opacity { + xsd:double { minInclusive = "0" maxInclusive = "1" } + | percent + }? +style-graphic-properties-attlist &= + attribute draw:stroke-linejoin { + "miter" | "round" | "bevel" | "middle" | "none" | "inherit" + }? +style-graphic-fill-properties-attlist &= + attribute draw:fill { + "none" | "solid" | "bitmap" | "gradient" | "hatch" + }? +style-graphic-fill-properties-attlist &= + attribute draw:fill-color { color }? +style-graphic-fill-properties-attlist &= + attribute draw:secondary-fill-color { color }? +style-graphic-fill-properties-attlist &= + attribute draw:fill-gradient-name { styleNameRef }? +style-graphic-fill-properties-attlist &= + attribute draw:gradient-step-count { nonNegativeInteger }? +style-graphic-fill-properties-attlist &= + attribute draw:fill-hatch-name { styleNameRef }? +style-graphic-fill-properties-attlist &= + attribute draw:fill-hatch-solid { boolean }? +style-graphic-fill-properties-attlist &= + attribute draw:fill-image-name { styleNameRef }? +style-graphic-fill-properties-attlist &= + attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? +style-graphic-fill-properties-attlist &= + attribute draw:fill-image-width { length | percent }?, + attribute draw:fill-image-height { length | percent }? +style-graphic-fill-properties-attlist &= + attribute draw:fill-image-ref-point-x { percent }?, + attribute draw:fill-image-ref-point-y { percent }?, + attribute draw:fill-image-ref-point { + "top-left" + | "top" + | "top-right" + | "left" + | "center" + | "right" + | "bottom-left" + | "bottom" + | "bottom-right" + }? +style-graphic-fill-properties-attlist &= + attribute draw:tile-repeat-offset { text }? +style-graphic-fill-properties-attlist &= + attribute draw:opacity { percent }? +style-graphic-fill-properties-attlist &= + attribute draw:opacity-name { styleNameRef }? +style-graphic-fill-properties-attlist &= + attribute svg:fill-rule { "nonzero" | "evenodd" }? +style-graphic-properties-attlist &= + attribute draw:symbol-color { color }? +style-graphic-properties-attlist &= + attribute text:animation { + "none" | "scroll" | "alternate" | "slide" + }? +style-graphic-properties-attlist &= + attribute text:animation-direction { + "left" | "right" | "up" | "down" + }? +style-graphic-properties-attlist &= + attribute text:animation-start-inside { boolean }? +style-graphic-properties-attlist &= + attribute text:animation-stop-inside { boolean }? +style-graphic-properties-attlist &= + attribute text:animation-repeat { nonNegativeInteger }? +style-graphic-properties-attlist &= + attribute text:animation-delay { duration }? +style-graphic-properties-attlist &= + attribute text:animation-steps { length }? +style-graphic-properties-attlist &= + attribute draw:auto-grow-width { boolean }?, + attribute draw:auto-grow-height { boolean }? +style-graphic-properties-attlist &= + attribute draw:fit-to-size { boolean }? +style-graphic-properties-attlist &= + attribute draw:fit-to-contour { boolean }? +style-graphic-properties-attlist &= + attribute draw:textarea-vertical-align { + "top" | "middle" | "bottom" | "justify" + }? +style-graphic-properties-attlist &= + attribute draw:textarea-horizontal-align { + "left" | "center" | "right" | "justify" + }? +style-graphic-properties-attlist &= + attribute fo:wrap-option { "no-wrap" | "wrap" }? +style-graphic-properties-elements &= text-list-style? +style-graphic-properties-attlist &= + attribute draw:color-mode { + "greyscale" | "mono" | "watermark" | "standard" + }? +style-graphic-properties-attlist &= + attribute draw:color-inversion { boolean }? +style-graphic-properties-attlist &= + attribute draw:luminance { percent }? +style-graphic-properties-attlist &= attribute draw:contrast { percent }? +style-graphic-properties-attlist &= attribute draw:gamma { percent }? +style-graphic-properties-attlist &= attribute draw:red { percent }? +style-graphic-properties-attlist &= attribute draw:green { percent }? +style-graphic-properties-attlist &= attribute draw:blue { percent }? +style-graphic-properties-attlist &= + attribute draw:image-opacity { percent }? +style-graphic-properties-attlist &= + attribute draw:shadow { "visible" | "hidden" }? +style-graphic-properties-attlist &= + attribute draw:shadow-offset-x { length }?, + attribute draw:shadow-offset-y { length }? +style-graphic-properties-attlist &= + attribute draw:shadow-color { color }? +style-graphic-properties-attlist &= + attribute draw:shadow-opacity { percent }? +style-graphic-properties-attlist &= + attribute draw:start-line-spacing-horizontal { distance }?, + attribute draw:start-line-spacing-vertical { distance }? +style-graphic-properties-attlist &= + attribute draw:end-line-spacing-horizontal { distance }?, + attribute draw:end-line-spacing-vertical { distance }? +style-graphic-properties-attlist &= + attribute draw:line-distance { distance }? +style-graphic-properties-attlist &= + attribute draw:guide-overhang { length }? +style-graphic-properties-attlist &= + attribute draw:guide-distance { distance }? +style-graphic-properties-attlist &= + attribute draw:start-guide { length }? +style-graphic-properties-attlist &= attribute draw:end-guide { length }? +style-graphic-properties-attlist &= + attribute draw:placing { "below" | "above" }? +style-graphic-properties-attlist &= attribute draw:parallel { boolean }? +style-graphic-properties-attlist &= + attribute draw:measure-align { + "automatic" | "left-outside" | "inside" | "right-outside" + }?, + attribute draw:measure-vertical-align { + "automatic" | "above" | "below" | "center" + }? +style-graphic-properties-attlist &= + attribute draw:unit { + "automatic" + | "mm" + | "cm" + | "m" + | "km" + | "pt" + | "pc" + | "inch" + | "ft" + | "mi" + }? +style-graphic-properties-attlist &= + attribute draw:show-unit { boolean }? +style-graphic-properties-attlist &= + attribute draw:decimal-places { nonNegativeInteger }? +style-graphic-properties-attlist &= + attribute draw:caption-type { + "straight-line" | "angled-line" | "angled-connector-line" + }? +style-graphic-properties-attlist &= + attribute draw:caption-angle-type { "fixed" | "free" }? +style-graphic-properties-attlist &= + attribute draw:caption-angle { nonNegativeInteger }? +style-graphic-properties-attlist &= + attribute draw:caption-gap { distance }? +style-graphic-properties-attlist &= + attribute draw:caption-escape-direction { + "horizontal" | "vertical" | "auto" + }? +style-graphic-properties-attlist &= + attribute draw:caption-escape { length | percent }? +style-graphic-properties-attlist &= + attribute draw:caption-line-length { length }? +style-graphic-properties-attlist &= + attribute draw:caption-fit-line-length { boolean }? +style-graphic-properties-attlist &= + attribute dr3d:horizontal-segments { nonNegativeInteger }? +style-graphic-properties-attlist &= + attribute dr3d:vertical-segments { nonNegativeInteger }? +style-graphic-properties-attlist &= + attribute dr3d:edge-rounding { percent }? +style-graphic-properties-attlist &= + attribute dr3d:edge-rounding-mode { "correct" | "attractive" }? +style-graphic-properties-attlist &= + attribute dr3d:back-scale { percent }? +style-graphic-properties-attlist &= attribute dr3d:depth { length }? +style-graphic-properties-attlist &= + attribute dr3d:backface-culling { "enabled" | "disabled" }? +style-graphic-properties-attlist &= + attribute dr3d:end-angle { nonNegativeInteger }? +style-graphic-properties-attlist &= + attribute dr3d:close-front { boolean }? +style-graphic-properties-attlist &= + attribute dr3d:close-back { boolean }? +style-graphic-properties-attlist &= + attribute dr3d:lighting-mode { "standard" | "double-sided" }? +style-graphic-properties-attlist &= + attribute dr3d:normals-kind { "object" | "flat" | "sphere" }? +style-graphic-properties-attlist &= + attribute dr3d:normals-direction { "normal" | "inverse" }? +style-graphic-properties-attlist &= + attribute dr3d:texture-generation-mode-x { + "object" | "parallel" | "sphere" + }?, + attribute dr3d:texture-generation-mode-y { + "object" | "parallel" | "sphere" + }? +style-graphic-properties-attlist &= + attribute dr3d:texture-kind { "luminance" | "intensity" | "color" }? +style-graphic-properties-attlist &= + attribute dr3d:texture-filter { "enabled" | "disabled" }? +style-graphic-properties-attlist &= + attribute dr3d:texture-mode { "replace" | "modulate" | "blend" }? +style-graphic-properties-attlist &= + attribute dr3d:ambient-color { color }?, + attribute dr3d:emissive-color { color }?, + attribute dr3d:specular-color { color }?, + attribute dr3d:diffuse-color { color }? +style-graphic-properties-attlist &= + attribute dr3d:shininess { percent }? +style-graphic-properties-attlist &= + attribute dr3d:shadow { "visible" | "hidden" }? +style-graphic-properties-attlist &= + common-draw-rel-size-attlist, + attribute fo:min-width { length | percent }? +style-graphic-properties-attlist &= + attribute fo:min-height { length | percent }? +style-graphic-properties-attlist &= + attribute fo:max-height { length | percent }?, + attribute fo:max-width { length | percent }? +style-graphic-properties-attlist &= common-horizontal-margin-attlist +style-graphic-properties-attlist &= common-vertical-margin-attlist +style-graphic-properties-attlist &= common-margin-attlist +style-graphic-properties-attlist &= + attribute style:print-content { boolean }? +style-graphic-properties-attlist &= + attribute style:protect { + "none" + | list { ("content" | "position" | "size")+ } + }? +style-graphic-properties-attlist &= + attribute style:horizontal-pos { + "left" + | "center" + | "right" + | "from-left" + | "inside" + | "outside" + | "from-inside" + }?, + attribute svg:x { coordinate }? +style-graphic-properties-attlist &= + attribute style:horizontal-rel { + "page" + | "page-content" + | "page-start-margin" + | "page-end-margin" + | "frame" + | "frame-content" + | "frame-start-margin" + | "frame-end-margin" + | "paragraph" + | "paragraph-content" + | "paragraph-start-margin" + | "paragraph-end-margin" + | "char" + }? +style-graphic-properties-attlist &= common-vertical-pos-attlist +common-vertical-pos-attlist = + attribute style:vertical-pos { + "top" | "middle" | "bottom" | "from-top" | "below" + }?, + attribute svg:y { coordinate }? +style-graphic-properties-attlist &= common-vertical-rel-attlist +common-vertical-rel-attlist = + attribute style:vertical-rel { + "page" + | "page-content" + | "frame" + | "frame-content" + | "paragraph" + | "paragraph-content" + | "char" + | "line" + | "baseline" + | "text" + }? +style-graphic-properties-attlist &= common-text-anchor-attlist +style-graphic-properties-attlist &= common-border-attlist +style-graphic-properties-attlist &= common-border-line-width-attlist +style-graphic-properties-attlist &= common-padding-attlist +style-graphic-properties-attlist &= common-shadow-attlist +style-graphic-properties-attlist &= common-background-color-attlist +style-graphic-properties-elements &= style-background-image +style-graphic-properties-elements &= style-columns +style-graphic-properties-attlist &= + attribute style:editable { boolean }? +style-graphic-properties-attlist &= + attribute style:wrap { + "none" + | "left" + | "right" + | "parallel" + | "dynamic" + | "run-through" + | "biggest" + }? +style-graphic-properties-attlist &= + attribute style:wrap-dynamic-threshold { nonNegativeLength }? +style-graphic-properties-attlist &= + attribute style:number-wrapped-paragraphs { + "no-limit" | positiveInteger + }? +style-graphic-properties-attlist &= + attribute style:wrap-contour { boolean }? +style-graphic-properties-attlist &= + attribute style:wrap-contour-mode { "full" | "outside" }? +style-graphic-properties-attlist &= + attribute style:run-through { "foreground" | "background" }? +style-graphic-properties-attlist &= + attribute style:flow-with-text { boolean }? +style-graphic-properties-attlist &= + attribute style:overflow-behavior { + "clip" | "auto-create-new-frame" + }? +style-graphic-properties-attlist &= + attribute style:mirror { + "none" + | "vertical" + | horizontal-mirror + | list { "vertical", horizontal-mirror } + | list { horizontal-mirror, "vertical" } + }? +horizontal-mirror = + "horizontal" | "horizontal-on-odd" | "horizontal-on-even" +style-graphic-properties-attlist &= + attribute fo:clip { + # The attribute value must match the one XSL's clip + \string + }? +style-graphic-properties-attlist &= + [ a:defaultValue = "iterative" ] + attribute draw:wrap-influence-on-position { + "iterative" | "once-concurrent" | "once-successive" + }? +style-graphic-properties-attlist &= common-writing-mode-attlist +style-graphic-properties-attlist &= + attribute draw:frame-display-scrollbar { boolean }? +style-graphic-properties-attlist &= + attribute draw:frame-display-border { boolean }? +style-graphic-properties-attlist &= + attribute draw:frame-margin-horizontal { nonNegativePixelLength }?, + attribute draw:frame-margin-vertical { nonNegativePixelLength }? +nonNegativePixelLength = + xsd:string { pattern = "([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)" } +style-graphic-properties-attlist &= + attribute draw:visible-area-left { nonNegativeLength }?, + attribute draw:visible-area-top { nonNegativeLength }?, + attribute draw:visible-area-width { positiveLength }?, + attribute draw:visible-area-height { positiveLength }? +style-graphic-properties-attlist &= + attribute draw:ole-draw-aspect { nonNegativeInteger }? +style-chart-properties = + element style:chart-properties { style-chart-properties-content } +style-chart-properties-content = style-properties-content +style-chart-properties-content-strict = + style-chart-properties-attlist, style-chart-properties-elements +style-chart-properties-elements = empty +style-chart-properties-attlist &= + [ a:defaultValue = "true" ] attribute chart:scale-text { boolean }? +style-chart-properties-attlist &= + attribute chart:three-dimensional { boolean }? +style-chart-properties-attlist &= attribute chart:deep { boolean }? +style-chart-properties-attlist &= + attribute chart:symbol-type { "none" } + | attribute chart:symbol-type { "automatic" } + | (attribute chart:symbol-type { "named-symbol" }, + attribute chart:symbol-name { + "square" + | "diamond" + | "arrow-down" + | "arrow-up" + | "arrow-right" + | "arrow-left" + | "bow-tie" + | "hourglass" + | "circle" + | "star" + | "x" + | "plus" + | "asterisk" + | "horizontal-bar" + | "vertical-bar" + }) + | (attribute chart:symbol-type { "image" }, + element chart:symbol-image { + attribute xlink:href { anyURI } + }) + | empty +style-chart-properties-attlist &= + attribute chart:symbol-width { nonNegativeLength }?, + attribute chart:symbol-height { nonNegativeLength }? +style-chart-properties-attlist &= + [ a:defaultValue = "false" ] attribute chart:vertical { boolean }? +style-chart-properties-attlist &= + [ a:defaultValue = "false" ] attribute chart:connect-bars { boolean }? +style-chart-properties-attlist &= + attribute chart:gap-width { integer }?, + attribute chart:overlap { integer }? +style-chart-properties-attlist &= + [ a:defaultValue = "false" ] + attribute chart:japanese-candle-stick { boolean }? +style-chart-properties-attlist &= + [ a:defaultValue = "none" ] + attribute chart:interpolation { + "none" | "cubic-spline" | "b-spline" + }?, + [ a:defaultValue = "2" ] + attribute chart:spline-order { positiveInteger }?, + [ a:defaultValue = "20" ] + attribute chart:spline-resolution { positiveInteger }? +style-chart-properties-attlist &= + [ a:defaultValue = "0" ] + attribute chart:pie-offset { nonNegativeInteger }? +style-chart-properties-attlist &= + [ a:defaultValue = "false" ] attribute chart:lines { boolean }? +style-chart-properties-attlist &= + [ a:defaultValue = "cuboid" ] + attribute chart:solid-type { + "cuboid" | "cylinder" | "cone" | "pyramid" + }? +style-chart-properties-attlist &= + [ a:defaultValue = "false" ] attribute chart:stacked { boolean }?, + [ a:defaultValue = "false" ] attribute chart:percentage { boolean }? +style-chart-properties-attlist &= + attribute chart:link-data-style-to-source { boolean }? +style-chart-properties-attlist &= attribute chart:visible { boolean }? +style-chart-properties-attlist &= + attribute chart:logarithmic { boolean }? +style-chart-properties-attlist &= + attribute chart:maximum { double }?, + attribute chart:minimum { double }?, + attribute chart:origin { double }?, + attribute chart:interval-major { double }?, + attribute chart:interval-minor-divisor { positiveInteger }? +style-chart-properties-attlist &= + attribute chart:tick-marks-major-inner { boolean }?, + attribute chart:tick-marks-major-outer { boolean }?, + attribute chart:tick-marks-minor-inner { boolean }?, + attribute chart:tick-marks-minor-outer { boolean }? +style-chart-properties-attlist &= + attribute chart:display-label { boolean }?, + attribute chart:text-overlap { boolean }?, + attribute text:line-break { boolean }?, + [ a:defaultValue = "side-by-side" ] + attribute chart:label-arrangement { + "side-by-side" | "stagger-even" | "stagger-odd" + }? +style-chart-properties-attlist &= common-style-direction-attlist +style-chart-properties-attlist &= common-rotation-angle-attlist +style-chart-properties-attlist &= + attribute chart:data-label-number { "none" | "value" | "percentage" }? +style-chart-properties-attlist &= + attribute chart:data-label-text { boolean }? +style-chart-properties-attlist &= + attribute chart:data-label-symbol { boolean }? +style-chart-properties-attlist &= + attribute chart:mean-value { boolean }? +style-chart-properties-attlist &= + [ a:defaultValue = "none" ] + attribute chart:error-category { + "none" + | "variance" + | "standard-deviation" + | "percentage" + | "error-margin" + | "constant" + }? +style-chart-properties-attlist &= + attribute chart:error-percentage { double }? +style-chart-properties-attlist &= + attribute chart:error-margin { double }? +style-chart-properties-attlist &= + attribute chart:error-lower-limit { double }?, + attribute chart:error-upper-limit { double }? +style-chart-properties-attlist &= + attribute chart:error-upper-indicator { boolean }?, + attribute chart:error-lower-indicator { boolean }? +style-chart-properties-attlist &= + [ a:defaultValue = "columns" ] + attribute chart:series-source { "columns" | "rows" }? +style-chart-properties-attlist &= + [ a:defaultValue = "none" ] + attribute chart:regression-type { + "none" | "linear" | "logarithmic" | "exponential" | "power" + }? +style-drawing-page-properties-attlist &= + attribute presentation:transition-type { + "manual" | "automatic" | "semi-automatic" + }? +style-drawing-page-properties-attlist &= + attribute presentation:transition-style { + "none" + | "fade-from-left" + | "fade-from-top" + | "fade-from-right" + | "fade-from-bottom" + | "fade-from-upperleft" + | "fade-from-upperright" + | "fade-from-lowerleft" + | "fade-from-lowerright" + | "move-from-left" + | "move-from-top" + | "move-from-right" + | "move-from-bottom" + | "move-from-upperleft" + | "move-from-upperright" + | "move-from-lowerleft" + | "move-from-lowerright" + | "uncover-to-left" + | "uncover-to-top" + | "uncover-to-right" + | "uncover-to-bottom" + | "uncover-to-upperleft" + | "uncover-to-upperright" + | "uncover-to-lowerleft" + | "uncover-to-lowerright" + | "fade-to-center" + | "fade-from-center" + | "vertical-stripes" + | "horizontal-stripes" + | "clockwise" + | "counterclockwise" + | "open-vertical" + | "open-horizontal" + | "close-vertical" + | "close-horizontal" + | "wavyline-from-left" + | "wavyline-from-top" + | "wavyline-from-right" + | "wavyline-from-bottom" + | "spiralin-left" + | "spiralin-right" + | "spiralout-left" + | "spiralout-right" + | "roll-from-top" + | "roll-from-left" + | "roll-from-right" + | "roll-from-bottom" + | "stretch-from-left" + | "stretch-from-top" + | "stretch-from-right" + | "stretch-from-bottom" + | "vertical-lines" + | "horizontal-lines" + | "dissolve" + | "random" + | "vertical-checkerboard" + | "horizontal-checkerboard" + | "interlocking-horizontal-left" + | "interlocking-horizontal-right" + | "interlocking-vertical-top" + | "interlocking-vertical-bottom" + | "fly-away" + | "open" + | "close" + | "melt" + }? +style-drawing-page-properties-attlist &= + attribute presentation:transition-speed { presentationSpeeds }? +style-drawing-page-properties-attlist &= + attribute smil:type { \string }? +style-drawing-page-properties-attlist &= + attribute smil:subtype { \string }? +style-drawing-page-properties-attlist &= + [ a:defaultValue = "forward" ] + attribute smil:direction { "forward" | "reverse" }? +style-drawing-page-properties-attlist &= + attribute smil:fadeColor { color }? +style-drawing-page-properties-attlist &= + attribute presentation:duration { duration }? +style-drawing-page-properties-attlist &= + attribute presentation:visibility { "visible" | "hidden" }? +style-drawing-page-properties-elements &= presentation-sound? +style-drawing-page-properties-attlist &= + attribute draw:background-size { "full" | "border" }? +style-drawing-page-properties-attlist &= + attribute presentation:background-objects-visible { boolean }? +style-drawing-page-properties-attlist &= + attribute presentation:background-visible { boolean }? +style-drawing-page-properties-attlist &= + attribute presentation:display-header { boolean }? +style-drawing-page-properties-attlist &= + attribute presentation:display-footer { boolean }? +style-drawing-page-properties-attlist &= + attribute presentation:display-page-number { boolean }? +style-drawing-page-properties-attlist &= + attribute presentation:display-date-time { boolean }? +\string = xsd:string +date = xsd:date +time = xsd:time +dateTime = xsd:dateTime +duration = xsd:duration +integer = xsd:integer +nonNegativeInteger = xsd:nonNegativeInteger +positiveInteger = xsd:positiveInteger +double = xsd:double +anyURI = xsd:anyURI +base64Binary = xsd:base64Binary +ID = xsd:ID +IDREF = xsd:IDREF +IDREFS = xsd:IDREFS +boolean = "true" | "false" +dateOrDateTime = xsd:date | xsd:dateTime +timeOrDateTime = xsd:time | xsd:dateTime +language = xsd:language +countryCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" } +languageCode = xsd:token { pattern = "[A-Za-z]{1,8}" } +character = xsd:string { length = "1" } +length = + xsd:string { + pattern = + "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))" + } +nonNegativeLength = + xsd:string { + pattern = + "([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))" + } +positiveLength = + xsd:string { + pattern = + "([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))" + } +percent = xsd:string { pattern = "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%" } +relativeLength = xsd:string { pattern = "[0-9]+\*" } +coordinate = length +distance = length +color = xsd:string { pattern = "#[0-9a-fA-F]{6}" } +styleName = xsd:NCName +styleNameRef = xsd:NCName | empty +styleNameRefs = list { xsd:NCName* } +variableName = xsd:string +formula = + # A formula should start with a namespace prefix, + + # but has no restrictions + xsd:string +targetFrameName = "_self" | "_blank" | "_parent" | "_top" | \string +valueType = + "float" + | "time" + | "date" + | "percentage" + | "currency" + | "boolean" + | "string" +points = + xsd:string { pattern = "-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*" } +pathData = xsd:string +vector3D = + xsd:string { + pattern = + "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)" + } +namespacedToken = + xsd:string { pattern = "[0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+" } +anyAttListOrElements = + attribute * { text }*, + anyElements +anyElements = + element * { + mixed { anyAttListOrElements } + }* diff --git a/contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc b/contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc new file mode 100644 index 0000000..83ad017 --- /dev/null +++ b/contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc @@ -0,0 +1,6280 @@ +# Open Document Format for Office Applications (OpenDocument) Version 1.2 +# Committee Specification (CS) 01, 17 March 2011 +# Relax-NG Schema +# +# Copyright (c) OASIS Open 2002-2011. All Rights Reserved. +# +# All capitalized terms in the following text have the meanings assigned to them +# in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The +# full Policy may be found at the OASIS website. +# +# This document and translations of it may be copied and furnished to others, and +# derivative works that comment on or otherwise explain it or assist in its +# implementation may be prepared, copied, published, and distributed, in whole or +# in part, without restriction of any kind, provided that the above copyright +# notice and this section are included on all such copies and derivative works. +# However, this document itself may not be modified in any way, including by +# removing the copyright notice or references to OASIS, except as needed for the +# purpose of developing any document or deliverable produced by an OASIS +# Technical Committee (in which case the rules applicable to copyrights, as set +# forth in the OASIS IPR Policy, must be followed) or as required to translate it +# into languages other than English. +# +# The limited permissions granted above are perpetual and will not be revoked by +# OASIS or its successors or assigns. +# +# This document and the information contained herein is provided on an "AS IS" +# basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT +# LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT +# INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR +# FITNESS FOR A PARTICULAR PURPOSE. + +namespace anim = "urn:oasis:names:tc:opendocument:xmlns:animation:1.0" +namespace chart = "urn:oasis:names:tc:opendocument:xmlns:chart:1.0" +namespace config = "urn:oasis:names:tc:opendocument:xmlns:config:1.0" +namespace db = "urn:oasis:names:tc:opendocument:xmlns:database:1.0" +namespace dc = "http://purl.org/dc/elements/1.1/" +namespace dr3d = "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" +namespace draw = "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" +namespace fo = + "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" +namespace form = "urn:oasis:names:tc:opendocument:xmlns:form:1.0" +namespace grddl = "http://www.w3.org/2003/g/data-view#" +namespace math = "http://www.w3.org/1998/Math/MathML" +namespace meta = "urn:oasis:names:tc:opendocument:xmlns:meta:1.0" +namespace number = "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" +namespace office = "urn:oasis:names:tc:opendocument:xmlns:office:1.0" +namespace presentation = + "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" +namespace script = "urn:oasis:names:tc:opendocument:xmlns:script:1.0" +namespace smil = + "urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" +namespace style = "urn:oasis:names:tc:opendocument:xmlns:style:1.0" +namespace svg = + "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" +namespace table = "urn:oasis:names:tc:opendocument:xmlns:table:1.0" +namespace text = "urn:oasis:names:tc:opendocument:xmlns:text:1.0" +namespace xforms = "http://www.w3.org/2002/xforms" +namespace xhtml = "http://www.w3.org/1999/xhtml" +namespace xlink = "http://www.w3.org/1999/xlink" + +office-process-content = attribute office:process-content { boolean }? +start = + office-document + | office-document-content + | office-document-styles + | office-document-meta + | office-document-settings +office-document = + element office:document { + office-document-attrs, + office-document-common-attrs, + office-meta, + office-settings, + office-scripts, + office-font-face-decls, + office-styles, + office-automatic-styles, + office-master-styles, + office-body + } +office-document-content = + element office:document-content { + office-document-common-attrs, + office-scripts, + office-font-face-decls, + office-automatic-styles, + office-body + } +office-document-styles = + element office:document-styles { + office-document-common-attrs, + office-font-face-decls, + office-styles, + office-automatic-styles, + office-master-styles + } +office-document-meta = + element office:document-meta { + office-document-common-attrs, office-meta + } +office-document-settings = + element office:document-settings { + office-document-common-attrs, office-settings + } +office-document-common-attrs = + attribute office:version { "1.2" } + & attribute grddl:transformation { + list { anyIRI* } + }? +office-document-attrs = attribute office:mimetype { \string } +office-meta = element office:meta { office-meta-content-strict }? +office-meta-content-strict = office-meta-data* +office-body = element office:body { office-body-content } +office-body-content = + element office:text { + office-text-attlist, + office-text-content-prelude, + office-text-content-main, + office-text-content-epilogue + } + | element office:drawing { + office-drawing-attlist, + office-drawing-content-prelude, + office-drawing-content-main, + office-drawing-content-epilogue + } + | element office:presentation { + office-presentation-attlist, + office-presentation-content-prelude, + office-presentation-content-main, + office-presentation-content-epilogue + } + | element office:spreadsheet { + office-spreadsheet-attlist, + office-spreadsheet-content-prelude, + office-spreadsheet-content-main, + office-spreadsheet-content-epilogue + } + | element office:chart { + office-chart-attlist, + office-chart-content-prelude, + office-chart-content-main, + office-chart-content-epilogue + } + | element office:image { + office-image-attlist, + office-image-content-prelude, + office-image-content-main, + office-image-content-epilogue + } + | office-database +office-text-content-prelude = + office-forms, text-tracked-changes, text-decls, table-decls +office-text-content-main = + text-content* + | (text-page-sequence, (shape)*) +text-content = + text-h + | text-p + | text-list + | text-numbered-paragraph + | table-table + | text-section + | text-soft-page-break + | text-table-of-content + | text-illustration-index + | text-table-index + | text-object-index + | text-user-index + | text-alphabetical-index + | text-bibliography + | shape + | change-marks +office-text-content-epilogue = table-functions +office-text-attlist = + attribute text:global { boolean }? + & attribute text:use-soft-page-breaks { boolean }? +office-drawing-attlist = empty +office-drawing-content-prelude = text-decls, table-decls +office-drawing-content-main = draw-page* +office-drawing-content-epilogue = table-functions +office-presentation-attlist = empty +office-presentation-content-prelude = + text-decls, table-decls, presentation-decls +office-presentation-content-main = draw-page* +office-presentation-content-epilogue = + presentation-settings, table-functions +office-spreadsheet-content-prelude = + table-tracked-changes?, text-decls, table-decls +table-decls = + table-calculation-settings?, + table-content-validations?, + table-label-ranges? +office-spreadsheet-content-main = table-table* +office-spreadsheet-content-epilogue = table-functions +table-functions = + table-named-expressions?, + table-database-ranges?, + table-data-pilot-tables?, + table-consolidation?, + table-dde-links? +office-chart-attlist = empty +office-chart-content-prelude = text-decls, table-decls +office-chart-content-main = chart-chart +office-chart-content-epilogue = table-functions +office-image-attlist = empty +office-image-content-prelude = empty +office-image-content-main = draw-frame +office-image-content-epilogue = empty +office-settings = element office:settings { config-config-item-set+ }? +config-config-item-set = + element config:config-item-set { + config-config-item-set-attlist, config-items + } +config-items = + (config-config-item + | config-config-item-set + | config-config-item-map-named + | config-config-item-map-indexed)+ +config-config-item-set-attlist = attribute config:name { \string } +config-config-item = + element config:config-item { config-config-item-attlist, text } +config-config-item-attlist = + attribute config:name { \string } + & attribute config:type { + "boolean" + | "short" + | "int" + | "long" + | "double" + | "string" + | "datetime" + | "base64Binary" + } +config-config-item-map-indexed = + element config:config-item-map-indexed { + config-config-item-map-indexed-attlist, + config-config-item-map-entry+ + } +config-config-item-map-indexed-attlist = + attribute config:name { \string } +config-config-item-map-entry = + element config:config-item-map-entry { + config-config-item-map-entry-attlist, config-items + } +config-config-item-map-entry-attlist = + attribute config:name { \string }? +config-config-item-map-named = + element config:config-item-map-named { + config-config-item-map-named-attlist, config-config-item-map-entry+ + } +config-config-item-map-named-attlist = attribute config:name { \string } +office-scripts = + element office:scripts { office-script*, office-event-listeners? }? +office-script = + element office:script { + office-script-attlist, + mixed { anyElements } + } +office-script-attlist = attribute script:language { \string } +office-font-face-decls = + element office:font-face-decls { style-font-face* }? +office-styles = + element office:styles { + styles + & style-default-style* + & style-default-page-layout? + & text-outline-style? + & text-notes-configuration* + & text-bibliography-configuration? + & text-linenumbering-configuration? + & draw-gradient* + & svg-linearGradient* + & svg-radialGradient* + & draw-hatch* + & draw-fill-image* + & draw-marker* + & draw-stroke-dash* + & draw-opacity* + & style-presentation-page-layout* + & table-table-template* + }? +office-automatic-styles = + element office:automatic-styles { styles & style-page-layout* }? +office-master-styles = + element office:master-styles { + style-master-page* & style-handout-master? & draw-layer-set? + }? +styles = + style-style* + & text-list-style* + & number-number-style* + & number-currency-style* + & number-percentage-style* + & number-date-style* + & number-time-style* + & number-boolean-style* + & number-text-style* +office-meta-data = + element meta:generator { \string } + | element dc:title { \string } + | element dc:description { \string } + | element dc:subject { \string } + | element meta:keyword { \string } + | element meta:initial-creator { \string } + | dc-creator + | element meta:printed-by { \string } + | element meta:creation-date { dateTime } + | dc-date + | element meta:print-date { dateTime } + | element meta:template { + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:actuate { "onRequest" }?, + attribute xlink:title { \string }?, + attribute meta:date { dateTime }? + } + | element meta:auto-reload { + (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "replace" }?, + attribute xlink:actuate { "onLoad" }?)?, + attribute meta:delay { duration }? + } + | element meta:hyperlink-behaviour { + attribute office:target-frame-name { targetFrameName }?, + attribute xlink:show { "new" | "replace" }? + } + | element dc:language { language } + | element meta:editing-cycles { nonNegativeInteger } + | element meta:editing-duration { duration } + | element meta:document-statistic { + attribute meta:page-count { nonNegativeInteger }?, + attribute meta:table-count { nonNegativeInteger }?, + attribute meta:draw-count { nonNegativeInteger }?, + attribute meta:image-count { nonNegativeInteger }?, + attribute meta:ole-object-count { nonNegativeInteger }?, + attribute meta:object-count { nonNegativeInteger }?, + attribute meta:paragraph-count { nonNegativeInteger }?, + attribute meta:word-count { nonNegativeInteger }?, + attribute meta:character-count { nonNegativeInteger }?, + attribute meta:frame-count { nonNegativeInteger }?, + attribute meta:sentence-count { nonNegativeInteger }?, + attribute meta:syllable-count { nonNegativeInteger }?, + attribute meta:non-whitespace-character-count { + nonNegativeInteger + }?, + attribute meta:row-count { nonNegativeInteger }?, + attribute meta:cell-count { nonNegativeInteger }? + } + | element meta:user-defined { + attribute meta:name { \string }, + ((attribute meta:value-type { "float" }, + double) + | (attribute meta:value-type { "date" }, + dateOrDateTime) + | (attribute meta:value-type { "time" }, + duration) + | (attribute meta:value-type { "boolean" }, + boolean) + | (attribute meta:value-type { "string" }, + \string) + | text) + } +dc-creator = element dc:creator { \string } +dc-date = element dc:date { dateTime } +text-h = + element text:h { + heading-attrs, + paragraph-attrs, + text-number?, + paragraph-content-or-hyperlink* + } +heading-attrs = + attribute text:outline-level { positiveInteger } + & attribute text:restart-numbering { boolean }? + & attribute text:start-value { nonNegativeInteger }? + & attribute text:is-list-header { boolean }? +text-number = element text:number { \string } +text-p = + element text:p { paragraph-attrs, paragraph-content-or-hyperlink* } +paragraph-attrs = + attribute text:style-name { styleNameRef }? + & attribute text:class-names { styleNameRefs }? + & attribute text:cond-style-name { styleNameRef }? + & (xml-id, + attribute text:id { NCName }?)? + & common-in-content-meta-attlist? +text-page-sequence = element text:page-sequence { text-page+ } +text-page = element text:page { text-page-attlist, empty } +text-page-attlist = attribute text:master-page-name { styleNameRef } +text-list = + element text:list { + text-list-attr, text-list-header?, text-list-item* + } +text-list-attr = + attribute text:style-name { styleNameRef }? + & attribute text:continue-numbering { boolean }? + & attribute text:continue-list { IDREF }? + & xml-id? +text-list-item = + element text:list-item { text-list-item-attr, text-list-item-content } +text-list-item-content = + text-number?, (text-p | text-h | text-list | text-soft-page-break)* +text-list-item-attr = + attribute text:start-value { nonNegativeInteger }? + & attribute text:style-override { styleNameRef }? + & xml-id? +text-list-header = + element text:list-header { + text-list-header-attr, text-list-item-content + } +text-list-header-attr = xml-id? +text-numbered-paragraph = + element text:numbered-paragraph { + text-numbered-paragraph-attr, text-number?, (text-p | text-h) + } +text-numbered-paragraph-attr = + attribute text:list-id { NCName } + & attribute text:level { positiveInteger }? + & (attribute text:style-name { styleNameRef }, + attribute text:continue-numbering { boolean }, + attribute text:start-value { nonNegativeInteger })? + & xml-id? +text-section = + element text:section { + text-section-attlist, + (text-section-source | text-section-source-dde | empty), + text-content* + } +text-section-attlist = + common-section-attlist + & (attribute text:display { "true" | "none" } + | (attribute text:display { "condition" }, + attribute text:condition { \string }) + | empty) +common-section-attlist = + attribute text:style-name { styleNameRef }? + & attribute text:name { \string } + & attribute text:protected { boolean }? + & attribute text:protection-key { \string }? + & attribute text:protection-key-digest-algorithm { anyIRI }? + & xml-id? +text-section-source = + element text:section-source { text-section-source-attr } +text-section-source-attr = + (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "embed" }?)? + & attribute text:section-name { \string }? + & attribute text:filter-name { \string }? +text-section-source-dde = office-dde-source +text-tracked-changes = + element text:tracked-changes { + text-tracked-changes-attr, text-changed-region* + }? +text-tracked-changes-attr = attribute text:track-changes { boolean }? +text-changed-region = + element text:changed-region { + text-changed-region-attr, text-changed-region-content + } +text-changed-region-attr = + xml-id, + attribute text:id { NCName }? +text-changed-region-content = + element text:insertion { office-change-info } + | element text:deletion { office-change-info, text-content* } + | element text:format-change { office-change-info } +change-marks = + element text:change { change-mark-attr } + | element text:change-start { change-mark-attr } + | element text:change-end { change-mark-attr } +change-mark-attr = attribute text:change-id { IDREF } +text-soft-page-break = element text:soft-page-break { empty } +text-decls = + element text:variable-decls { text-variable-decl* }?, + element text:sequence-decls { text-sequence-decl* }?, + element text:user-field-decls { text-user-field-decl* }?, + element text:dde-connection-decls { text-dde-connection-decl* }?, + text-alphabetical-index-auto-mark-file? +paragraph-content-or-hyperlink = paragraph-content | text-a +paragraph-content = + text + | element text:s { + attribute text:c { nonNegativeInteger }? + } + | element text:tab { text-tab-attr } + | element text:line-break { empty } + | text-soft-page-break + | element text:span { + attribute text:style-name { styleNameRef }?, + attribute text:class-names { styleNameRefs }?, + paragraph-content-or-hyperlink* + } + | element text:meta { + text-meta-attlist, paragraph-content-or-hyperlink* + } + | (text-bookmark | text-bookmark-start | text-bookmark-end) + | element text:reference-mark { + attribute text:name { \string } + } + | (element text:reference-mark-start { + attribute text:name { \string } + } + | element text:reference-mark-end { + attribute text:name { \string } + }) + | element text:note { + text-note-class, + attribute text:id { \string }?, + element text:note-citation { + attribute text:label { \string }?, + text + }, + element text:note-body { text-content* } + } + | element text:ruby { + attribute text:style-name { styleNameRef }?, + element text:ruby-base { paragraph-content-or-hyperlink* }, + element text:ruby-text { + attribute text:style-name { styleNameRef }?, + text + } + } + | (office-annotation | office-annotation-end) + | change-marks + | shape + | element text:date { text-date-attlist, text } + | element text:time { text-time-attlist, text } + | element text:page-number { text-page-number-attlist, text } + | element text:page-continuation { + text-page-continuation-attlist, text + } + | element text:sender-firstname { common-field-fixed-attlist, text } + | element text:sender-lastname { common-field-fixed-attlist, text } + | element text:sender-initials { common-field-fixed-attlist, text } + | element text:sender-title { common-field-fixed-attlist, text } + | element text:sender-position { common-field-fixed-attlist, text } + | element text:sender-email { common-field-fixed-attlist, text } + | element text:sender-phone-private { + common-field-fixed-attlist, text + } + | element text:sender-fax { common-field-fixed-attlist, text } + | element text:sender-company { common-field-fixed-attlist, text } + | element text:sender-phone-work { common-field-fixed-attlist, text } + | element text:sender-street { common-field-fixed-attlist, text } + | element text:sender-city { common-field-fixed-attlist, text } + | element text:sender-postal-code { common-field-fixed-attlist, text } + | element text:sender-country { common-field-fixed-attlist, text } + | element text:sender-state-or-province { + common-field-fixed-attlist, text + } + | element text:author-name { common-field-fixed-attlist, text } + | element text:author-initials { common-field-fixed-attlist, text } + | element text:chapter { text-chapter-attlist, text } + | element text:file-name { text-file-name-attlist, text } + | element text:template-name { text-template-name-attlist, text } + | element text:sheet-name { text } + | element text:variable-set { + (common-field-name-attlist + & common-field-formula-attlist + & common-value-and-type-attlist + & common-field-display-value-none-attlist + & common-field-data-style-name-attlist), + text + } + | element text:variable-get { + (common-field-name-attlist + & common-field-display-value-formula-attlist + & common-field-data-style-name-attlist), + text + } + | element text:variable-input { + (common-field-name-attlist + & common-field-description-attlist + & common-value-type-attlist + & common-field-display-value-none-attlist + & common-field-data-style-name-attlist), + text + } + | element text:user-field-get { + (common-field-name-attlist + & common-field-display-value-formula-none-attlist + & common-field-data-style-name-attlist), + text + } + | element text:user-field-input { + (common-field-name-attlist + & common-field-description-attlist + & common-field-data-style-name-attlist), + text + } + | element text:sequence { + (common-field-name-attlist + & common-field-formula-attlist + & common-field-num-format-attlist + & text-sequence-ref-name), + text + } + | element text:expression { + (common-field-formula-attlist + & common-value-and-type-attlist? + & common-field-display-value-formula-attlist + & common-field-data-style-name-attlist), + text + } + | element text:text-input { common-field-description-attlist, text } + | element text:initial-creator { common-field-fixed-attlist, text } + | element text:creation-date { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:date-value { dateOrDateTime }?), + text + } + | element text:creation-time { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:time-value { timeOrDateTime }?), + text + } + | element text:description { common-field-fixed-attlist, text } + | element text:user-defined { + (common-field-fixed-attlist + & attribute text:name { \string } + & common-field-data-style-name-attlist + & attribute office:value { double }? + & attribute office:date-value { dateOrDateTime }? + & attribute office:time-value { duration }? + & attribute office:boolean-value { boolean }? + & attribute office:string-value { \string }?), + text + } + | element text:print-time { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:time-value { time }?), + text + } + | element text:print-date { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:date-value { date }?), + text + } + | element text:printed-by { common-field-fixed-attlist, text } + | element text:title { common-field-fixed-attlist, text } + | element text:subject { common-field-fixed-attlist, text } + | element text:keywords { common-field-fixed-attlist, text } + | element text:editing-cycles { common-field-fixed-attlist, text } + | element text:editing-duration { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:duration { duration }?), + text + } + | element text:modification-time { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:time-value { time }?), + text + } + | element text:modification-date { + (common-field-fixed-attlist + & common-field-data-style-name-attlist + & attribute text:date-value { date }?), + text + } + | element text:creator { common-field-fixed-attlist, text } + | element text:page-count + | text:paragraph-count + | text:word-count + | text:character-count + | text:table-count + | text:image-count + | text:object-count { + common-field-num-format-attlist, text + } + | element text:database-display { + text-database-display-attlist, text + } + | element text:database-next { text-database-next-attlist } + | element text:database-row-select { + text-database-row-select-attlist + } + | element text:database-row-number { + (common-field-database-table + & common-field-num-format-attlist + & attribute text:value { nonNegativeInteger }?), + text + } + | element text:database-name { common-field-database-table, text } + | element text:page-variable-set { + text-set-page-variable-attlist, text + } + | element text:page-variable-get { + text-get-page-variable-attlist, text + } + | element text:placeholder { text-placeholder-attlist, text } + | element text:conditional-text { + text-conditional-text-attlist, text + } + | element text:hidden-text { text-hidden-text-attlist, text } + | element text:reference-ref | text:bookmark-ref { + text-common-ref-content & text-bookmark-ref-content + } + | element text:note-ref { + text-common-ref-content & text-note-ref-content + } + | element text:sequence-ref { + text-common-ref-content & text-sequence-ref-content + } + | element text:script { + ((attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }) + | text) + & attribute script:language { \string }? + } + | element text:execute-macro { + attribute text:name { \string }?, + office-event-listeners?, + text + } + | element text:hidden-paragraph { + text-hidden-paragraph-attlist, text + } + | element text:dde-connection { + attribute text:connection-name { \string }, + text + } + | element text:measure { + attribute text:kind { "value" | "unit" | "gap" }, + text + } + | element text:table-formula { + (common-field-formula-attlist + & common-field-display-value-formula-attlist + & common-field-data-style-name-attlist), + text + } + | element text:meta-field { + text-meta-field-attlist, paragraph-content-or-hyperlink* + } + | element text:toc-mark-start { text-toc-mark-start-attrs } + | element text:toc-mark-end { text-id } + | element text:toc-mark { + attribute text:string-value { \string }, + text-outline-level + } + | element text:user-index-mark-start { + text-id, text-outline-level, text-index-name + } + | element text:user-index-mark-end { text-id } + | element text:user-index-mark { + attribute text:string-value { \string }, + text-outline-level, + text-index-name + } + | element text:alphabetical-index-mark-start { + text-id, text-alphabetical-index-mark-attrs + } + | element text:alphabetical-index-mark-end { text-id } + | element text:alphabetical-index-mark { + attribute text:string-value { \string }, + text-alphabetical-index-mark-attrs + } + | element text:bibliography-mark { + attribute text:bibliography-type { text-bibliography-types }, + attribute text:identifier + | text:address + | text:annote + | text:author + | text:booktitle + | text:chapter + | text:edition + | text:editor + | text:howpublished + | text:institution + | text:journal + | text:month + | text:note + | text:number + | text:organizations + | text:pages + | text:publisher + | text:school + | text:series + | text:title + | text:report-type + | text:volume + | text:year + | text:url + | text:custom1 + | text:custom2 + | text:custom3 + | text:custom4 + | text:custom5 + | text:isbn + | text:issn { \string }*, + text + } + | element presentation:header { empty } + | element presentation:footer { empty } + | element presentation:date-time { empty } +text-tab-attr = attribute text:tab-ref { nonNegativeInteger }? +text-a = + element text:a { + text-a-attlist, office-event-listeners?, paragraph-content* + } +text-a-attlist = + attribute office:name { \string }? + & attribute office:title { \string }? + & attribute xlink:type { "simple" } + & attribute xlink:href { anyIRI } + & attribute xlink:actuate { "onRequest" }? + & attribute office:target-frame-name { targetFrameName }? + & attribute xlink:show { "new" | "replace" }? + & attribute text:style-name { styleNameRef }? + & attribute text:visited-style-name { styleNameRef }? +text-meta-attlist = common-in-content-meta-attlist? & xml-id? +text-bookmark = element text:bookmark { text-bookmark-attlist, empty } +text-bookmark-start = + element text:bookmark-start { text-bookmark-start-attlist, empty } +text-bookmark-end = + element text:bookmark-end { text-bookmark-end-attlist, empty } +text-bookmark-attlist = + attribute text:name { \string } + & xml-id? +text-bookmark-start-attlist = + attribute text:name { \string } + & xml-id? + & common-in-content-meta-attlist? +text-bookmark-end-attlist = attribute text:name { \string } +text-note-class = attribute text:note-class { "footnote" | "endnote" } +text-date-attlist = + (common-field-fixed-attlist & common-field-data-style-name-attlist) + & attribute text:date-value { dateOrDateTime }? + & attribute text:date-adjust { duration }? +text-time-attlist = + (common-field-fixed-attlist & common-field-data-style-name-attlist) + & attribute text:time-value { timeOrDateTime }? + & attribute text:time-adjust { duration }? +text-page-number-attlist = + (common-field-num-format-attlist & common-field-fixed-attlist) + & attribute text:page-adjust { integer }? + & attribute text:select-page { "previous" | "current" | "next" }? +text-page-continuation-attlist = + attribute text:select-page { "previous" | "next" } + & attribute text:string-value { \string }? +text-chapter-attlist = + attribute text:display { + "name" + | "number" + | "number-and-name" + | "plain-number-and-name" + | "plain-number" + } + & attribute text:outline-level { nonNegativeInteger } +text-file-name-attlist = + attribute text:display { + "full" | "path" | "name" | "name-and-extension" + }? + & common-field-fixed-attlist +text-template-name-attlist = + attribute text:display { + "full" | "path" | "name" | "name-and-extension" | "area" | "title" + }? +text-variable-decl = + element text:variable-decl { + common-field-name-attlist, common-value-type-attlist + } +text-user-field-decl = + element text:user-field-decl { + common-field-name-attlist, + common-field-formula-attlist?, + common-value-and-type-attlist + } +text-sequence-decl = + element text:sequence-decl { text-sequence-decl-attlist } +text-sequence-decl-attlist = + common-field-name-attlist + & attribute text:display-outline-level { nonNegativeInteger } + & attribute text:separation-character { character }? +text-sequence-ref-name = attribute text:ref-name { \string }? +common-field-database-table = + common-field-database-table-attlist, common-field-database-name +common-field-database-name = + attribute text:database-name { \string }? + | form-connection-resource +common-field-database-table-attlist = + attribute text:table-name { \string } + & attribute text:table-type { "table" | "query" | "command" }? +text-database-display-attlist = + common-field-database-table + & common-field-data-style-name-attlist + & attribute text:column-name { \string } +text-database-next-attlist = + common-field-database-table + & attribute text:condition { \string }? +text-database-row-select-attlist = + common-field-database-table + & attribute text:condition { \string }? + & attribute text:row-number { nonNegativeInteger }? +text-set-page-variable-attlist = + attribute text:active { boolean }? + & attribute text:page-adjust { integer }? +text-get-page-variable-attlist = common-field-num-format-attlist +text-placeholder-attlist = + attribute text:placeholder-type { + "text" | "table" | "text-box" | "image" | "object" + } + & common-field-description-attlist +text-conditional-text-attlist = + attribute text:condition { \string } + & attribute text:string-value-if-true { \string } + & attribute text:string-value-if-false { \string } + & attribute text:current-value { boolean }? +text-hidden-text-attlist = + attribute text:condition { \string } + & attribute text:string-value { \string } + & attribute text:is-hidden { boolean }? +text-common-ref-content = + text + & attribute text:ref-name { \string }? +text-bookmark-ref-content = + attribute text:reference-format { + common-ref-format-values + | "number-no-superior" + | "number-all-superior" + | "number" + }? +text-note-ref-content = + attribute text:reference-format { common-ref-format-values }? + & text-note-class +text-sequence-ref-content = + attribute text:reference-format { + common-ref-format-values + | "category-and-value" + | "caption" + | "value" + }? +common-ref-format-values = "page" | "chapter" | "direction" | "text" +text-hidden-paragraph-attlist = + attribute text:condition { \string } + & attribute text:is-hidden { boolean }? +text-meta-field-attlist = xml-id & common-field-data-style-name-attlist +common-value-type-attlist = attribute office:value-type { valueType } +common-value-and-type-attlist = + (attribute office:value-type { "float" }, + attribute office:value { double }) + | (attribute office:value-type { "percentage" }, + attribute office:value { double }) + | (attribute office:value-type { "currency" }, + attribute office:value { double }, + attribute office:currency { \string }?) + | (attribute office:value-type { "date" }, + attribute office:date-value { dateOrDateTime }) + | (attribute office:value-type { "time" }, + attribute office:time-value { duration }) + | (attribute office:value-type { "boolean" }, + attribute office:boolean-value { boolean }) + | (attribute office:value-type { "string" }, + attribute office:string-value { \string }?) +common-field-fixed-attlist = attribute text:fixed { boolean }? +common-field-name-attlist = attribute text:name { variableName } +common-field-description-attlist = + attribute text:description { \string }? +common-field-display-value-none-attlist = + attribute text:display { "value" | "none" }? +common-field-display-value-formula-none-attlist = + attribute text:display { "value" | "formula" | "none" }? +common-field-display-value-formula-attlist = + attribute text:display { "value" | "formula" }? +common-field-formula-attlist = attribute text:formula { \string }? +common-field-data-style-name-attlist = + attribute style:data-style-name { styleNameRef }? +common-field-num-format-attlist = common-num-format-attlist? +text-toc-mark-start-attrs = text-id, text-outline-level +text-outline-level = attribute text:outline-level { positiveInteger }? +text-id = attribute text:id { \string } +text-index-name = attribute text:index-name { \string } +text-alphabetical-index-mark-attrs = + attribute text:key1 { \string }? + & attribute text:key2 { \string }? + & attribute text:string-value-phonetic { \string }? + & attribute text:key1-phonetic { \string }? + & attribute text:key2-phonetic { \string }? + & attribute text:main-entry { boolean }? +text-bibliography-types = + "article" + | "book" + | "booklet" + | "conference" + | "custom1" + | "custom2" + | "custom3" + | "custom4" + | "custom5" + | "email" + | "inbook" + | "incollection" + | "inproceedings" + | "journal" + | "manual" + | "mastersthesis" + | "misc" + | "phdthesis" + | "proceedings" + | "techreport" + | "unpublished" + | "www" +text-index-body = element text:index-body { index-content-main* } +index-content-main = text-content | text-index-title +text-index-title = + element text:index-title { + common-section-attlist, index-content-main* + } +text-table-of-content = + element text:table-of-content { + common-section-attlist, + text-table-of-content-source, + text-index-body + } +text-table-of-content-source = + element text:table-of-content-source { + text-table-of-content-source-attlist, + text-index-title-template?, + text-table-of-content-entry-template*, + text-index-source-styles* + } +text-table-of-content-source-attlist = + attribute text:outline-level { positiveInteger }? + & attribute text:use-outline-level { boolean }? + & attribute text:use-index-marks { boolean }? + & attribute text:use-index-source-styles { boolean }? + & attribute text:index-scope { "document" | "chapter" }? + & attribute text:relative-tab-stop-position { boolean }? +text-table-of-content-entry-template = + element text:table-of-content-entry-template { + text-table-of-content-entry-template-attlist, + text-table-of-content-children* + } +text-table-of-content-children = + text-index-entry-chapter + | text-index-entry-page-number + | text-index-entry-text + | text-index-entry-span + | text-index-entry-tab-stop + | text-index-entry-link-start + | text-index-entry-link-end +text-table-of-content-entry-template-attlist = + attribute text:outline-level { positiveInteger } + & attribute text:style-name { styleNameRef } +text-illustration-index = + element text:illustration-index { + common-section-attlist, + text-illustration-index-source, + text-index-body + } +text-illustration-index-source = + element text:illustration-index-source { + text-illustration-index-source-attrs, + text-index-title-template?, + text-illustration-index-entry-template? + } +text-illustration-index-source-attrs = + text-index-scope-attr + & text-relative-tab-stop-position-attr + & attribute text:use-caption { boolean }? + & attribute text:caption-sequence-name { \string }? + & attribute text:caption-sequence-format { + "text" | "category-and-value" | "caption" + }? +text-index-scope-attr = + attribute text:index-scope { "document" | "chapter" }? +text-relative-tab-stop-position-attr = + attribute text:relative-tab-stop-position { boolean }? +text-illustration-index-entry-template = + element text:illustration-index-entry-template { + text-illustration-index-entry-content + } +text-illustration-index-entry-content = + text-illustration-index-entry-template-attrs, + (text-index-entry-chapter + | text-index-entry-page-number + | text-index-entry-text + | text-index-entry-span + | text-index-entry-tab-stop)* +text-illustration-index-entry-template-attrs = + attribute text:style-name { styleNameRef } +text-table-index = + element text:table-index { + common-section-attlist, text-table-index-source, text-index-body + } +text-table-index-source = + element text:table-index-source { + text-illustration-index-source-attrs, + text-index-title-template?, + text-table-index-entry-template? + } +text-table-index-entry-template = + element text:table-index-entry-template { + text-illustration-index-entry-content + } +text-object-index = + element text:object-index { + common-section-attlist, text-object-index-source, text-index-body + } +text-object-index-source = + element text:object-index-source { + text-object-index-source-attrs, + text-index-title-template?, + text-object-index-entry-template? + } +text-object-index-source-attrs = + text-index-scope-attr + & text-relative-tab-stop-position-attr + & attribute text:use-spreadsheet-objects { boolean }? + & attribute text:use-math-objects { boolean }? + & attribute text:use-draw-objects { boolean }? + & attribute text:use-chart-objects { boolean }? + & attribute text:use-other-objects { boolean }? +text-object-index-entry-template = + element text:object-index-entry-template { + text-illustration-index-entry-content + } +text-user-index = + element text:user-index { + common-section-attlist, text-user-index-source, text-index-body + } +text-user-index-source = + element text:user-index-source { + text-user-index-source-attr, + text-index-title-template?, + text-user-index-entry-template*, + text-index-source-styles* + } +text-user-index-source-attr = + text-index-scope-attr + & text-relative-tab-stop-position-attr + & attribute text:use-index-marks { boolean }? + & attribute text:use-index-source-styles { boolean }? + & attribute text:use-graphics { boolean }? + & attribute text:use-tables { boolean }? + & attribute text:use-floating-frames { boolean }? + & attribute text:use-objects { boolean }? + & attribute text:copy-outline-levels { boolean }? + & attribute text:index-name { \string } +text-user-index-entry-template = + element text:user-index-entry-template { + text-user-index-entry-template-attrs, + (text-index-entry-chapter + | text-index-entry-page-number + | text-index-entry-text + | text-index-entry-span + | text-index-entry-tab-stop)* + } +text-user-index-entry-template-attrs = + attribute text:outline-level { positiveInteger } + & attribute text:style-name { styleNameRef } +text-alphabetical-index = + element text:alphabetical-index { + common-section-attlist, + text-alphabetical-index-source, + text-index-body + } +text-alphabetical-index-source = + element text:alphabetical-index-source { + text-alphabetical-index-source-attrs, + text-index-title-template?, + text-alphabetical-index-entry-template* + } +text-alphabetical-index-source-attrs = + text-index-scope-attr + & text-relative-tab-stop-position-attr + & attribute text:ignore-case { boolean }? + & attribute text:main-entry-style-name { styleNameRef }? + & attribute text:alphabetical-separators { boolean }? + & attribute text:combine-entries { boolean }? + & attribute text:combine-entries-with-dash { boolean }? + & attribute text:combine-entries-with-pp { boolean }? + & attribute text:use-keys-as-entries { boolean }? + & attribute text:capitalize-entries { boolean }? + & attribute text:comma-separated { boolean }? + & attribute fo:language { languageCode }? + & attribute fo:country { countryCode }? + & attribute fo:script { scriptCode }? + & attribute style:rfc-language-tag { language }? + & attribute text:sort-algorithm { \string }? +text-alphabetical-index-auto-mark-file = + element text:alphabetical-index-auto-mark-file { + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI } + } +text-alphabetical-index-entry-template = + element text:alphabetical-index-entry-template { + text-alphabetical-index-entry-template-attrs, + (text-index-entry-chapter + | text-index-entry-page-number + | text-index-entry-text + | text-index-entry-span + | text-index-entry-tab-stop)* + } +text-alphabetical-index-entry-template-attrs = + attribute text:outline-level { "1" | "2" | "3" | "separator" } + & attribute text:style-name { styleNameRef } +text-bibliography = + element text:bibliography { + common-section-attlist, text-bibliography-source, text-index-body + } +text-bibliography-source = + element text:bibliography-source { + text-index-title-template?, text-bibliography-entry-template* + } +text-bibliography-entry-template = + element text:bibliography-entry-template { + text-bibliography-entry-template-attrs, + (text-index-entry-span + | text-index-entry-tab-stop + | text-index-entry-bibliography)* + } +text-bibliography-entry-template-attrs = + attribute text:bibliography-type { text-bibliography-types } + & attribute text:style-name { styleNameRef } +text-index-source-styles = + element text:index-source-styles { + attribute text:outline-level { positiveInteger }, + text-index-source-style* + } +text-index-source-style = + element text:index-source-style { + attribute text:style-name { styleName }, + empty + } +text-index-title-template = + element text:index-title-template { + attribute text:style-name { styleNameRef }?, + text + } +text-index-entry-chapter = + element text:index-entry-chapter { + attribute text:style-name { styleNameRef }?, + text-index-entry-chapter-attrs + } +text-index-entry-chapter-attrs = + attribute text:display { + "name" + | "number" + | "number-and-name" + | "plain-number" + | "plain-number-and-name" + }? + & attribute text:outline-level { positiveInteger }? +text-index-entry-text = + element text:index-entry-text { + attribute text:style-name { styleNameRef }? + } +text-index-entry-page-number = + element text:index-entry-page-number { + attribute text:style-name { styleNameRef }? + } +text-index-entry-span = + element text:index-entry-span { + attribute text:style-name { styleNameRef }?, + text + } +text-index-entry-bibliography = + element text:index-entry-bibliography { + text-index-entry-bibliography-attrs + } +text-index-entry-bibliography-attrs = + attribute text:style-name { styleNameRef }? + & attribute text:bibliography-data-field { + "address" + | "annote" + | "author" + | "bibliography-type" + | "booktitle" + | "chapter" + | "custom1" + | "custom2" + | "custom3" + | "custom4" + | "custom5" + | "edition" + | "editor" + | "howpublished" + | "identifier" + | "institution" + | "isbn" + | "issn" + | "journal" + | "month" + | "note" + | "number" + | "organizations" + | "pages" + | "publisher" + | "report-type" + | "school" + | "series" + | "title" + | "url" + | "volume" + | "year" + } +text-index-entry-tab-stop = + element text:index-entry-tab-stop { + attribute text:style-name { styleNameRef }?, + text-index-entry-tab-stop-attrs + } +text-index-entry-tab-stop-attrs = + attribute style:leader-char { character }? + & (attribute style:type { "right" } + | (attribute style:type { "left" }, + attribute style:position { length })) +text-index-entry-link-start = + element text:index-entry-link-start { + attribute text:style-name { styleNameRef }? + } +text-index-entry-link-end = + element text:index-entry-link-end { + attribute text:style-name { styleNameRef }? + } +table-table = + element table:table { + table-table-attlist, + table-title?, + table-desc?, + table-table-source?, + office-dde-source?, + table-scenario?, + office-forms?, + table-shapes?, + table-columns-and-groups, + table-rows-and-groups, + table-named-expressions? + } +table-columns-and-groups = + (table-table-column-group | table-columns-no-group)+ +table-columns-no-group = + (table-columns, (table-table-header-columns, table-columns?)?) + | (table-table-header-columns, table-columns?) +table-columns = table-table-columns | table-table-column+ +table-rows-and-groups = (table-table-row-group | table-rows-no-group)+ +table-rows-no-group = + (table-rows, (table-table-header-rows, table-rows?)?) + | (table-table-header-rows, table-rows?) +table-rows = + table-table-rows | (text-soft-page-break?, table-table-row)+ +table-table-attlist = + attribute table:name { \string }? + & attribute table:style-name { styleNameRef }? + & attribute table:template-name { \string }? + & attribute table:use-first-row-styles { boolean }? + & attribute table:use-last-row-styles { boolean }? + & attribute table:use-first-column-styles { boolean }? + & attribute table:use-last-column-styles { boolean }? + & attribute table:use-banding-rows-styles { boolean }? + & attribute table:use-banding-columns-styles { boolean }? + & attribute table:protected { boolean }? + & attribute table:protection-key { \string }? + & attribute table:protection-key-digest-algorithm { anyIRI }? + & attribute table:print { boolean }? + & attribute table:print-ranges { cellRangeAddressList }? + & xml-id? + & attribute table:is-sub-table { boolean }? +table-title = element table:title { text } +table-desc = element table:desc { text } +table-table-row = + element table:table-row { + table-table-row-attlist, + (table-table-cell | table-covered-table-cell)+ + } +table-table-row-attlist = + attribute table:number-rows-repeated { positiveInteger }? + & attribute table:style-name { styleNameRef }? + & attribute table:default-cell-style-name { styleNameRef }? + & attribute table:visibility { table-visibility-value }? + & xml-id? +table-visibility-value = "visible" | "collapse" | "filter" +table-table-cell = + element table:table-cell { + table-table-cell-attlist, + table-table-cell-attlist-extra, + table-table-cell-content + } +table-covered-table-cell = + element table:covered-table-cell { + table-table-cell-attlist, table-table-cell-content + } +table-table-cell-content = + table-cell-range-source?, + office-annotation?, + table-detective?, + text-content* +table-table-cell-attlist = + attribute table:number-columns-repeated { positiveInteger }? + & attribute table:style-name { styleNameRef }? + & attribute table:content-validation-name { \string }? + & attribute table:formula { \string }? + & common-value-and-type-attlist? + & attribute table:protect { boolean }? + & attribute table:protected { boolean }? + & xml-id? + & common-in-content-meta-attlist? +table-table-cell-attlist-extra = + attribute table:number-columns-spanned { positiveInteger }? + & attribute table:number-rows-spanned { positiveInteger }? + & attribute table:number-matrix-columns-spanned { positiveInteger }? + & attribute table:number-matrix-rows-spanned { positiveInteger }? +table-table-column = + element table:table-column { table-table-column-attlist, empty } +table-table-column-attlist = + attribute table:number-columns-repeated { positiveInteger }? + & attribute table:style-name { styleNameRef }? + & attribute table:visibility { table-visibility-value }? + & attribute table:default-cell-style-name { styleNameRef }? + & xml-id? +table-table-header-columns = + element table:table-header-columns { table-table-column+ } +table-table-columns = + element table:table-columns { table-table-column+ } +table-table-column-group = + element table:table-column-group { + table-table-column-group-attlist, table-columns-and-groups + } +table-table-column-group-attlist = attribute table:display { boolean }? +table-table-header-rows = + element table:table-header-rows { + (text-soft-page-break?, table-table-row)+ + } +table-table-rows = + element table:table-rows { (text-soft-page-break?, table-table-row)+ } +table-table-row-group = + element table:table-row-group { + table-table-row-group-attlist, table-rows-and-groups + } +table-table-row-group-attlist = attribute table:display { boolean }? +cellAddress = + xsd:string { + pattern = "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+" + } +cellRangeAddress = + xsd:string { + pattern = + "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)?" + } + | xsd:string { + pattern = + "($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+" + } + | xsd:string { + pattern = + "($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+" + } +cellRangeAddressList = + xsd:string + >> dc:description [ + 'Value is a space separated list of "cellRangeAddress" patterns' + ] +table-table-source = + element table:table-source { + table-table-source-attlist, table-linked-source-attlist, empty + } +table-table-source-attlist = + attribute table:mode { "copy-all" | "copy-results-only" }? + & attribute table:table-name { \string }? +table-linked-source-attlist = + attribute xlink:type { "simple" } + & attribute xlink:href { anyIRI } + & attribute xlink:actuate { "onRequest" }? + & attribute table:filter-name { \string }? + & attribute table:filter-options { \string }? + & attribute table:refresh-delay { duration }? +table-scenario = + element table:scenario { table-scenario-attlist, empty } +table-scenario-attlist = + attribute table:scenario-ranges { cellRangeAddressList } + & attribute table:is-active { boolean } + & attribute table:display-border { boolean }? + & attribute table:border-color { color }? + & attribute table:copy-back { boolean }? + & attribute table:copy-styles { boolean }? + & attribute table:copy-formulas { boolean }? + & attribute table:comment { \string }? + & attribute table:protected { boolean }? +table-shapes = element table:shapes { shape+ } +table-cell-range-source = + element table:cell-range-source { + table-table-cell-range-source-attlist, + table-linked-source-attlist, + empty + } +table-table-cell-range-source-attlist = + attribute table:name { \string } + & attribute table:last-column-spanned { positiveInteger } + & attribute table:last-row-spanned { positiveInteger } +table-detective = + element table:detective { table-highlighted-range*, table-operation* } +table-operation = + element table:operation { table-operation-attlist, empty } +table-operation-attlist = + attribute table:name { + "trace-dependents" + | "remove-dependents" + | "trace-precedents" + | "remove-precedents" + | "trace-errors" + } + & attribute table:index { nonNegativeInteger } +table-highlighted-range = + element table:highlighted-range { + (table-highlighted-range-attlist + | table-highlighted-range-attlist-invalid), + empty + } +table-highlighted-range-attlist = + attribute table:cell-range-address { cellRangeAddress }? + & attribute table:direction { + "from-another-table" | "to-another-table" | "from-same-table" + } + & attribute table:contains-error { boolean }? +table-highlighted-range-attlist-invalid = + attribute table:marked-invalid { boolean } +office-spreadsheet-attlist = + attribute table:structure-protected { boolean }?, + attribute table:protection-key { \string }?, + attribute table:protection-key-digest-algorithm { anyIRI }? +table-calculation-settings = + element table:calculation-settings { + table-calculation-setting-attlist, + table-null-date?, + table-iteration? + } +table-calculation-setting-attlist = + attribute table:case-sensitive { boolean }? + & attribute table:precision-as-shown { boolean }? + & attribute table:search-criteria-must-apply-to-whole-cell { + boolean + }? + & attribute table:automatic-find-labels { boolean }? + & attribute table:use-regular-expressions { boolean }? + & attribute table:use-wildcards { boolean }? + & attribute table:null-year { positiveInteger }? +table-null-date = + element table:null-date { + attribute table:value-type { "date" }?, + attribute table:date-value { date }?, + empty + } +table-iteration = + element table:iteration { + attribute table:status { "enable" | "disable" }?, + attribute table:steps { positiveInteger }?, + attribute table:maximum-difference { double }?, + empty + } +table-content-validations = + element table:content-validations { table-content-validation+ } +table-content-validation = + element table:content-validation { + table-validation-attlist, + table-help-message?, + (table-error-message | (table-error-macro, office-event-listeners))? + } +table-validation-attlist = + attribute table:name { \string } + & attribute table:condition { \string }? + & attribute table:base-cell-address { cellAddress }? + & attribute table:allow-empty-cell { boolean }? + & attribute table:display-list { + "none" | "unsorted" | "sort-ascending" + }? +table-help-message = + element table:help-message { + attribute table:title { \string }?, + attribute table:display { boolean }?, + text-p* + } +table-error-message = + element table:error-message { + attribute table:title { \string }?, + attribute table:display { boolean }?, + attribute table:message-type { + "stop" | "warning" | "information" + }?, + text-p* + } +table-error-macro = + element table:error-macro { + attribute table:execute { boolean }? + } +table-label-ranges = element table:label-ranges { table-label-range* } +table-label-range = + element table:label-range { table-label-range-attlist, empty } +table-label-range-attlist = + attribute table:label-cell-range-address { cellRangeAddress } + & attribute table:data-cell-range-address { cellRangeAddress } + & attribute table:orientation { "column" | "row" } +table-named-expressions = + element table:named-expressions { + (table-named-range | table-named-expression)* + } +table-named-range = + element table:named-range { table-named-range-attlist, empty } +table-named-range-attlist = + attribute table:name { \string }, + attribute table:cell-range-address { cellRangeAddress }, + attribute table:base-cell-address { cellAddress }?, + attribute table:range-usable-as { + "none" + | list { + ("print-range" | "filter" | "repeat-row" | "repeat-column")+ + } + }? +table-named-expression = + element table:named-expression { + table-named-expression-attlist, empty + } +table-named-expression-attlist = + attribute table:name { \string }, + attribute table:expression { \string }, + attribute table:base-cell-address { cellAddress }? +table-database-ranges = + element table:database-ranges { table-database-range* } +table-database-range = + element table:database-range { + table-database-range-attlist, + (table-database-source-sql + | table-database-source-table + | table-database-source-query)?, + table-filter?, + table-sort?, + table-subtotal-rules? + } +table-database-range-attlist = + attribute table:name { \string }? + & attribute table:is-selection { boolean }? + & attribute table:on-update-keep-styles { boolean }? + & attribute table:on-update-keep-size { boolean }? + & attribute table:has-persistent-data { boolean }? + & attribute table:orientation { "column" | "row" }? + & attribute table:contains-header { boolean }? + & attribute table:display-filter-buttons { boolean }? + & attribute table:target-range-address { cellRangeAddress } + & attribute table:refresh-delay { boolean }? +table-database-source-sql = + element table:database-source-sql { + table-database-source-sql-attlist, empty + } +table-database-source-sql-attlist = + attribute table:database-name { \string } + & attribute table:sql-statement { \string } + & attribute table:parse-sql-statement { boolean }? +table-database-source-query = + element table:database-source-table { + table-database-source-table-attlist, empty + } +table-database-source-table-attlist = + attribute table:database-name { \string } + & attribute table:database-table-name { \string } +table-database-source-table = + element table:database-source-query { + table-database-source-query-attlist, empty + } +table-database-source-query-attlist = + attribute table:database-name { \string } + & attribute table:query-name { \string } +table-sort = element table:sort { table-sort-attlist, table-sort-by+ } +table-sort-attlist = + attribute table:bind-styles-to-content { boolean }? + & attribute table:target-range-address { cellRangeAddress }? + & attribute table:case-sensitive { boolean }? + & attribute table:language { languageCode }? + & attribute table:country { countryCode }? + & attribute table:script { scriptCode }? + & attribute table:rfc-language-tag { language }? + & attribute table:algorithm { \string }? + & attribute table:embedded-number-behavior { + "alpha-numeric" | "integer" | "double" + }? +table-sort-by = element table:sort-by { table-sort-by-attlist, empty } +table-sort-by-attlist = + attribute table:field-number { nonNegativeInteger } + & attribute table:data-type { + "text" | "number" | "automatic" | \string + }? + & attribute table:order { "ascending" | "descending" }? +table-subtotal-rules = + element table:subtotal-rules { + table-subtotal-rules-attlist, + table-sort-groups?, + table-subtotal-rule* + } +table-subtotal-rules-attlist = + attribute table:bind-styles-to-content { boolean }? + & attribute table:case-sensitive { boolean }? + & attribute table:page-breaks-on-group-change { boolean }? +table-sort-groups = + element table:sort-groups { table-sort-groups-attlist, empty } +table-sort-groups-attlist = + attribute table:data-type { + "text" | "number" | "automatic" | \string + }? + & attribute table:order { "ascending" | "descending" }? +table-subtotal-rule = + element table:subtotal-rule { + table-subtotal-rule-attlist, table-subtotal-field* + } +table-subtotal-rule-attlist = + attribute table:group-by-field-number { nonNegativeInteger } +table-subtotal-field = + element table:subtotal-field { table-subtotal-field-attlist, empty } +table-subtotal-field-attlist = + attribute table:field-number { nonNegativeInteger } + & attribute table:function { + "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + } +table-filter = + element table:filter { + table-filter-attlist, + (table-filter-condition | table-filter-and | table-filter-or) + } +table-filter-attlist = + attribute table:target-range-address { cellRangeAddress }? + & attribute table:condition-source { "self" | "cell-range" }? + & attribute table:condition-source-range-address { cellRangeAddress }? + & attribute table:display-duplicates { boolean }? +table-filter-and = + element table:filter-and { + (table-filter-or | table-filter-condition)+ + } +table-filter-or = + element table:filter-or { + (table-filter-and | table-filter-condition)+ + } +table-filter-condition = + element table:filter-condition { + table-filter-condition-attlist, table-filter-set-item* + } +table-filter-condition-attlist = + attribute table:field-number { nonNegativeInteger } + & attribute table:value { \string | double } + & attribute table:operator { \string } + & attribute table:case-sensitive { \string }? + & attribute table:data-type { "text" | "number" }? +table-filter-set-item = + element table:filter-set-item { + attribute table:value { \string }, + empty + } +table-data-pilot-tables = + element table:data-pilot-tables { table-data-pilot-table* } +table-data-pilot-table = + element table:data-pilot-table { + table-data-pilot-table-attlist, + (table-database-source-sql + | table-database-source-table + | table-database-source-query + | table-source-service + | table-source-cell-range)?, + table-data-pilot-field+ + } +table-data-pilot-table-attlist = + attribute table:name { \string } + & attribute table:application-data { \string }? + & attribute table:grand-total { "none" | "row" | "column" | "both" }? + & attribute table:ignore-empty-rows { boolean }? + & attribute table:identify-categories { boolean }? + & attribute table:target-range-address { cellRangeAddress } + & attribute table:buttons { cellRangeAddressList }? + & attribute table:show-filter-button { boolean }? + & attribute table:drill-down-on-double-click { boolean }? +table-source-cell-range = + element table:source-cell-range { + table-source-cell-range-attlist, table-filter? + } +table-source-cell-range-attlist = + attribute table:cell-range-address { cellRangeAddress } +table-source-service = + element table:source-service { table-source-service-attlist, empty } +table-source-service-attlist = + attribute table:name { \string } + & attribute table:source-name { \string } + & attribute table:object-name { \string } + & attribute table:user-name { \string }? + & attribute table:password { \string }? +table-data-pilot-field = + element table:data-pilot-field { + table-data-pilot-field-attlist, + table-data-pilot-level?, + table-data-pilot-field-reference?, + table-data-pilot-groups? + } +table-data-pilot-field-attlist = + attribute table:source-field-name { \string } + & (attribute table:orientation { + "row" | "column" | "data" | "hidden" + } + | (attribute table:orientation { "page" }, + attribute table:selected-page { \string })) + & attribute table:is-data-layout-field { \string }? + & attribute table:function { + "auto" + | "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + }? + & attribute table:used-hierarchy { integer }? +table-data-pilot-level = + element table:data-pilot-level { + table-data-pilot-level-attlist, + table-data-pilot-subtotals?, + table-data-pilot-members?, + table-data-pilot-display-info?, + table-data-pilot-sort-info?, + table-data-pilot-layout-info? + } +table-data-pilot-level-attlist = attribute table:show-empty { boolean }? +table-data-pilot-subtotals = + element table:data-pilot-subtotals { table-data-pilot-subtotal* } +table-data-pilot-subtotal = + element table:data-pilot-subtotal { + table-data-pilot-subtotal-attlist, empty + } +table-data-pilot-subtotal-attlist = + attribute table:function { + "auto" + | "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + } +table-data-pilot-members = + element table:data-pilot-members { table-data-pilot-member* } +table-data-pilot-member = + element table:data-pilot-member { + table-data-pilot-member-attlist, empty + } +table-data-pilot-member-attlist = + attribute table:name { \string } + & attribute table:display { boolean }? + & attribute table:show-details { boolean }? +table-data-pilot-display-info = + element table:data-pilot-display-info { + table-data-pilot-display-info-attlist, empty + } +table-data-pilot-display-info-attlist = + attribute table:enabled { boolean } + & attribute table:data-field { \string } + & attribute table:member-count { nonNegativeInteger } + & attribute table:display-member-mode { "from-top" | "from-bottom" } +table-data-pilot-sort-info = + element table:data-pilot-sort-info { + table-data-pilot-sort-info-attlist, empty + } +table-data-pilot-sort-info-attlist = + ((attribute table:sort-mode { "data" }, + attribute table:data-field { \string }) + | attribute table:sort-mode { "none" | "manual" | "name" }) + & attribute table:order { "ascending" | "descending" } +table-data-pilot-layout-info = + element table:data-pilot-layout-info { + table-data-pilot-layout-info-attlist, empty + } +table-data-pilot-layout-info-attlist = + attribute table:layout-mode { + "tabular-layout" + | "outline-subtotals-top" + | "outline-subtotals-bottom" + } + & attribute table:add-empty-lines { boolean } +table-data-pilot-field-reference = + element table:data-pilot-field-reference { + table-data-pilot-field-reference-attlist + } +table-data-pilot-field-reference-attlist = + attribute table:field-name { \string } + & ((attribute table:member-type { "named" }, + attribute table:member-name { \string }) + | attribute table:member-type { "previous" | "next" }) + & attribute table:type { + "none" + | "member-difference" + | "member-percentage" + | "member-percentage-difference" + | "running-total" + | "row-percentage" + | "column-percentage" + | "total-percentage" + | "index" + } +table-data-pilot-groups = + element table:data-pilot-groups { + table-data-pilot-groups-attlist, table-data-pilot-group+ + } +table-data-pilot-groups-attlist = + attribute table:source-field-name { \string } + & (attribute table:date-start { dateOrDateTime | "auto" } + | attribute table:start { double | "auto" }) + & (attribute table:date-end { dateOrDateTime | "auto" } + | attribute table:end { double | "auto" }) + & attribute table:step { double } + & attribute table:grouped-by { + "seconds" + | "minutes" + | "hours" + | "days" + | "months" + | "quarters" + | "years" + } +table-data-pilot-group = + element table:data-pilot-group { + table-data-pilot-group-attlist, table-data-pilot-group-member+ + } +table-data-pilot-group-attlist = attribute table:name { \string } +table-data-pilot-group-member = + element table:data-pilot-group-member { + table-data-pilot-group-member-attlist + } +table-data-pilot-group-member-attlist = attribute table:name { \string } +table-consolidation = + element table:consolidation { table-consolidation-attlist, empty } +table-consolidation-attlist = + attribute table:function { + "average" + | "count" + | "countnums" + | "max" + | "min" + | "product" + | "stdev" + | "stdevp" + | "sum" + | "var" + | "varp" + | \string + } + & attribute table:source-cell-range-addresses { cellRangeAddressList } + & attribute table:target-cell-address { cellAddress } + & attribute table:use-labels { "none" | "row" | "column" | "both" }? + & attribute table:link-to-source-data { boolean }? +table-dde-links = element table:dde-links { table-dde-link+ } +table-tracked-changes = + element table:tracked-changes { + table-tracked-changes-attlist, + (table-cell-content-change + | table-insertion + | table-deletion + | table-movement)* + } +table-tracked-changes-attlist = + attribute table:track-changes { boolean }? +table-insertion = + element table:insertion { + table-insertion-attlist, + common-table-change-attlist, + office-change-info, + table-dependencies?, + table-deletions? + } +table-insertion-attlist = + attribute table:type { "row" | "column" | "table" } + & attribute table:position { integer } + & attribute table:count { positiveInteger }? + & attribute table:table { integer }? +table-dependencies = element table:dependencies { table-dependency+ } +table-dependency = + element table:dependency { + attribute table:id { \string }, + empty + } +table-deletions = + element table:deletions { + (table-cell-content-deletion | table-change-deletion)+ + } +table-cell-content-deletion = + element table:cell-content-deletion { + attribute table:id { \string }?, + table-cell-address?, + table-change-track-table-cell? + } +table-change-deletion = + element table:change-deletion { + attribute table:id { \string }?, + empty + } +table-deletion = + element table:deletion { + table-deletion-attlist, + common-table-change-attlist, + office-change-info, + table-dependencies?, + table-deletions?, + table-cut-offs? + } +table-deletion-attlist = + attribute table:type { "row" | "column" | "table" } + & attribute table:position { integer } + & attribute table:table { integer }? + & attribute table:multi-deletion-spanned { integer }? +table-cut-offs = + element table:cut-offs { + table-movement-cut-off+ + | (table-insertion-cut-off, table-movement-cut-off*) + } +table-insertion-cut-off = + element table:insertion-cut-off { + table-insertion-cut-off-attlist, empty + } +table-insertion-cut-off-attlist = + attribute table:id { \string } + & attribute table:position { integer } +table-movement-cut-off = + element table:movement-cut-off { + table-movement-cut-off-attlist, empty + } +table-movement-cut-off-attlist = + attribute table:position { integer } + | (attribute table:start-position { integer }, + attribute table:end-position { integer }) +table-movement = + element table:movement { + common-table-change-attlist, + table-source-range-address, + table-target-range-address, + office-change-info, + table-dependencies?, + table-deletions? + } +table-source-range-address = + element table:source-range-address { + common-table-range-attlist, empty + } +table-target-range-address = + element table:target-range-address { + common-table-range-attlist, empty + } +common-table-range-attlist = + common-table-cell-address-attlist + | common-table-cell-range-address-attlist +common-table-cell-address-attlist = + attribute table:column { integer }, + attribute table:row { integer }, + attribute table:table { integer } +common-table-cell-range-address-attlist = + attribute table:start-column { integer }, + attribute table:start-row { integer }, + attribute table:start-table { integer }, + attribute table:end-column { integer }, + attribute table:end-row { integer }, + attribute table:end-table { integer } +table-change-track-table-cell = + element table:change-track-table-cell { + table-change-track-table-cell-attlist, text-p* + } +table-change-track-table-cell-attlist = + attribute table:cell-address { cellAddress }? + & attribute table:matrix-covered { boolean }? + & attribute table:formula { \string }? + & attribute table:number-matrix-columns-spanned { positiveInteger }? + & attribute table:number-matrix-rows-spanned { positiveInteger }? + & common-value-and-type-attlist? +table-cell-content-change = + element table:cell-content-change { + common-table-change-attlist, + table-cell-address, + office-change-info, + table-dependencies?, + table-deletions?, + table-previous + } +table-cell-address = + element table:cell-address { + common-table-cell-address-attlist, empty + } +table-previous = + element table:previous { + attribute table:id { \string }?, + table-change-track-table-cell + } +common-table-change-attlist = + attribute table:id { \string } + & attribute table:acceptance-state { + "accepted" | "rejected" | "pending" + }? + & attribute table:rejecting-change-id { \string }? +style-handout-master = + element style:handout-master { + common-presentation-header-footer-attlist, + style-handout-master-attlist, + shape* + } +style-handout-master-attlist = + attribute presentation:presentation-page-layout-name { styleNameRef }? + & attribute style:page-layout-name { styleNameRef } + & attribute draw:style-name { styleNameRef }? +draw-layer-set = element draw:layer-set { draw-layer* } +draw-layer = + element draw:layer { draw-layer-attlist, svg-title?, svg-desc? } +draw-layer-attlist = + attribute draw:name { \string } + & attribute draw:protected { boolean }? + & attribute draw:display { "always" | "screen" | "printer" | "none" }? +draw-page = + element draw:page { + common-presentation-header-footer-attlist, + draw-page-attlist, + svg-title?, + svg-desc?, + draw-layer-set?, + office-forms?, + shape*, + (presentation-animations | animation-element)?, + presentation-notes? + } +draw-page-attlist = + attribute draw:name { \string }? + & attribute draw:style-name { styleNameRef }? + & attribute draw:master-page-name { styleNameRef } + & attribute presentation:presentation-page-layout-name { + styleNameRef + }? + & (xml-id, + attribute draw:id { NCName }?)? + & attribute draw:nav-order { IDREFS }? +common-presentation-header-footer-attlist = + attribute presentation:use-header-name { \string }? + & attribute presentation:use-footer-name { \string }? + & attribute presentation:use-date-time-name { \string }? +shape = shape-instance | draw-a +shape-instance = + draw-rect + | draw-line + | draw-polyline + | draw-polygon + | draw-regular-polygon + | draw-path + | draw-circle + | draw-ellipse + | draw-g + | draw-page-thumbnail + | draw-frame + | draw-measure + | draw-caption + | draw-connector + | draw-control + | dr3d-scene + | draw-custom-shape +draw-rect = + element draw:rect { + draw-rect-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-rect-attlist = + attribute draw:corner-radius { nonNegativeLength }? + | (attribute svg:rx { nonNegativeLength }?, + attribute svg:ry { nonNegativeLength }?) +draw-line = + element draw:line { + draw-line-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-line-attlist = + attribute svg:x1 { coordinate } + & attribute svg:y1 { coordinate } + & attribute svg:x2 { coordinate } + & attribute svg:y2 { coordinate } +draw-polyline = + element draw:polyline { + common-draw-points-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +common-draw-points-attlist = attribute draw:points { points } +draw-polygon = + element draw:polygon { + common-draw-points-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-regular-polygon = + element draw:regular-polygon { + draw-regular-polygon-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-regular-polygon-attlist = + (attribute draw:concave { "false" } + | (attribute draw:concave { "true" }, + draw-regular-polygon-sharpness-attlist)) + & attribute draw:corners { positiveInteger } +draw-regular-polygon-sharpness-attlist = + attribute draw:sharpness { percent } +draw-path = + element draw:path { + common-draw-path-data-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +common-draw-path-data-attlist = attribute svg:d { pathData } +draw-circle = + element draw:circle { + ((draw-circle-attlist, common-draw-circle-ellipse-pos-attlist) + | (common-draw-position-attlist, common-draw-size-attlist)), + common-draw-circle-ellipse-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +common-draw-circle-ellipse-pos-attlist = + attribute svg:cx { coordinate }, + attribute svg:cy { coordinate } +draw-circle-attlist = attribute svg:r { length } +common-draw-circle-ellipse-attlist = + attribute draw:kind { "full" | "section" | "cut" | "arc" }? + & attribute draw:start-angle { angle }? + & attribute draw:end-angle { angle }? +draw-ellipse = + element draw:ellipse { + ((draw-ellipse-attlist, common-draw-circle-ellipse-pos-attlist) + | (common-draw-position-attlist, common-draw-size-attlist)), + common-draw-circle-ellipse-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-ellipse-attlist = + attribute svg:rx { length }, + attribute svg:ry { length } +draw-connector = + element draw:connector { + draw-connector-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + common-draw-viewbox-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-connector-attlist = + attribute draw:type { "standard" | "lines" | "line" | "curve" }? + & (attribute svg:x1 { coordinate }, + attribute svg:y1 { coordinate })? + & attribute draw:start-shape { IDREF }? + & attribute draw:start-glue-point { nonNegativeInteger }? + & (attribute svg:x2 { coordinate }, + attribute svg:y2 { coordinate })? + & attribute draw:end-shape { IDREF }? + & attribute draw:end-glue-point { nonNegativeInteger }? + & attribute draw:line-skew { + list { length, (length, length?)? } + }? + & attribute svg:d { pathData }? +draw-caption = + element draw:caption { + draw-caption-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-caption-attlist = + (attribute draw:caption-point-x { coordinate }, + attribute draw:caption-point-y { coordinate })? + & attribute draw:corner-radius { nonNegativeLength }? +draw-measure = + element draw:measure { + draw-measure-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text + } +draw-measure-attlist = + attribute svg:x1 { coordinate } + & attribute svg:y1 { coordinate } + & attribute svg:x2 { coordinate } + & attribute svg:y2 { coordinate } +draw-control = + element draw:control { + draw-control-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + draw-glue-point* + } +draw-control-attlist = attribute draw:control { IDREF } +draw-page-thumbnail = + element draw:page-thumbnail { + draw-page-thumbnail-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + presentation-shape-attlist, + common-draw-shape-with-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc? + } +draw-page-thumbnail-attlist = + attribute draw:page-number { positiveInteger }? +draw-g = + element draw:g { + draw-g-attlist, + common-draw-z-index-attlist, + common-draw-name-attlist, + common-draw-id-attlist, + common-draw-style-name-attlist, + common-text-spreadsheet-shape-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + shape* + } +draw-g-attlist = attribute svg:y { coordinate }? +common-draw-name-attlist = attribute draw:name { \string }? +common-draw-caption-id-attlist = attribute draw:caption-id { IDREF }? +common-draw-position-attlist = + attribute svg:x { coordinate }?, + attribute svg:y { coordinate }? +common-draw-size-attlist = + attribute svg:width { length }?, + attribute svg:height { length }? +common-draw-transform-attlist = attribute draw:transform { \string }? +common-draw-viewbox-attlist = + attribute svg:viewBox { + list { integer, integer, integer, integer } + } +common-draw-style-name-attlist = + (attribute draw:style-name { styleNameRef }?, + attribute draw:class-names { styleNameRefs }?) + | (attribute presentation:style-name { styleNameRef }?, + attribute presentation:class-names { styleNameRefs }?) +common-draw-text-style-name-attlist = + attribute draw:text-style-name { styleNameRef }? +common-draw-layer-name-attlist = attribute draw:layer { \string }? +common-draw-id-attlist = + (xml-id, + attribute draw:id { NCName }?)? +common-draw-z-index-attlist = + attribute draw:z-index { nonNegativeInteger }? +common-text-spreadsheet-shape-attlist = + attribute table:end-cell-address { cellAddress }? + & attribute table:end-x { coordinate }? + & attribute table:end-y { coordinate }? + & attribute table:table-background { boolean }? + & common-text-anchor-attlist +common-text-anchor-attlist = + attribute text:anchor-type { + "page" | "frame" | "paragraph" | "char" | "as-char" + }? + & attribute text:anchor-page-number { positiveInteger }? +draw-text = (text-p | text-list)* +common-draw-shape-with-styles-attlist = + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-draw-transform-attlist, + common-draw-name-attlist, + common-text-spreadsheet-shape-attlist +common-draw-shape-with-text-and-styles-attlist = + common-draw-shape-with-styles-attlist, + common-draw-text-style-name-attlist +draw-glue-point = + element draw:glue-point { draw-glue-point-attlist, empty } +draw-glue-point-attlist = + attribute draw:id { nonNegativeInteger } + & attribute svg:x { distance | percent } + & attribute svg:y { distance | percent } + & attribute draw:align { + "top-left" + | "top" + | "top-right" + | "left" + | "center" + | "right" + | "bottom-left" + | "bottom-right" + }? + & attribute draw:escape-direction { + "auto" + | "left" + | "right" + | "up" + | "down" + | "horizontal" + | "vertical" + } +svg-title = element svg:title { text } +svg-desc = element svg:desc { text } +draw-frame = + element draw:frame { + common-draw-shape-with-text-and-styles-attlist, + common-draw-position-attlist, + common-draw-rel-size-attlist, + common-draw-caption-id-attlist, + presentation-shape-attlist, + draw-frame-attlist, + (draw-text-box + | draw-image + | draw-object + | draw-object-ole + | draw-applet + | draw-floating-frame + | draw-plugin + | table-table)*, + office-event-listeners?, + draw-glue-point*, + draw-image-map?, + svg-title?, + svg-desc?, + (draw-contour-polygon | draw-contour-path)? + } +common-draw-rel-size-attlist = + common-draw-size-attlist, + attribute style:rel-width { percent | "scale" | "scale-min" }?, + attribute style:rel-height { percent | "scale" | "scale-min" }? +draw-frame-attlist = attribute draw:copy-of { \string }? +draw-text-box = + element draw:text-box { draw-text-box-attlist, text-content* } +draw-text-box-attlist = + attribute draw:chain-next-name { \string }? + & attribute draw:corner-radius { nonNegativeLength }? + & attribute fo:min-height { length | percent }? + & attribute fo:min-width { length | percent }? + & attribute fo:max-height { length | percent }? + & attribute fo:max-width { length | percent }? + & (xml-id, + attribute text:id { NCName }?)? +draw-image = + element draw:image { + draw-image-attlist, + (common-draw-data-attlist | office-binary-data), + draw-text + } +common-draw-data-attlist = + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "embed" }?, + attribute xlink:actuate { "onLoad" }? +office-binary-data = element office:binary-data { base64Binary } +draw-image-attlist = + attribute draw:filter-name { \string }? + & xml-id? +draw-object = + element draw:object { + draw-object-attlist, + (common-draw-data-attlist | office-document | math-math) + } +draw-object-ole = + element draw:object-ole { + draw-object-ole-attlist, + (common-draw-data-attlist | office-binary-data) + } +draw-object-attlist = + attribute draw:notify-on-update-of-ranges { + cellRangeAddressList | \string + }? + & xml-id? +draw-object-ole-attlist = + attribute draw:class-id { \string }? + & xml-id? +draw-applet = + element draw:applet { + draw-applet-attlist, common-draw-data-attlist?, draw-param* + } +draw-applet-attlist = + attribute draw:code { \string }? + & attribute draw:object { \string }? + & attribute draw:archive { \string }? + & attribute draw:may-script { boolean }? + & xml-id? +draw-plugin = + element draw:plugin { + draw-plugin-attlist, common-draw-data-attlist, draw-param* + } +draw-plugin-attlist = + attribute draw:mime-type { \string }? + & xml-id? +draw-param = element draw:param { draw-param-attlist, empty } +draw-param-attlist = + attribute draw:name { \string }? + & attribute draw:value { \string }? +draw-floating-frame = + element draw:floating-frame { + draw-floating-frame-attlist, common-draw-data-attlist + } +draw-floating-frame-attlist = + attribute draw:frame-name { \string }? + & xml-id? +draw-contour-polygon = + element draw:contour-polygon { + common-contour-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-points-attlist, + empty + } +draw-contour-path = + element draw:contour-path { + common-contour-attlist, + common-draw-size-attlist, + common-draw-viewbox-attlist, + common-draw-path-data-attlist, + empty + } +common-contour-attlist = attribute draw:recreate-on-edit { boolean } +draw-a = element draw:a { draw-a-attlist, shape-instance } +draw-a-attlist = + attribute xlink:type { "simple" } + & attribute xlink:href { anyIRI } + & attribute xlink:actuate { "onRequest" }? + & attribute office:target-frame-name { targetFrameName }? + & attribute xlink:show { "new" | "replace" }? + & attribute office:name { \string }? + & attribute office:title { \string }? + & attribute office:server-map { boolean }? + & xml-id? +draw-image-map = + element draw:image-map { + (draw-area-rectangle | draw-area-circle | draw-area-polygon)* + } +draw-area-rectangle = + element draw:area-rectangle { + common-draw-area-attlist, + attribute svg:x { coordinate }, + attribute svg:y { coordinate }, + attribute svg:width { length }, + attribute svg:height { length }, + svg-title?, + svg-desc?, + office-event-listeners? + } +draw-area-circle = + element draw:area-circle { + common-draw-area-attlist, + attribute svg:cx { coordinate }, + attribute svg:cy { coordinate }, + attribute svg:r { length }, + svg-title?, + svg-desc?, + office-event-listeners? + } +draw-area-polygon = + element draw:area-polygon { + common-draw-area-attlist, + attribute svg:x { coordinate }, + attribute svg:y { coordinate }, + attribute svg:width { length }, + attribute svg:height { length }, + common-draw-viewbox-attlist, + common-draw-points-attlist, + svg-title?, + svg-desc?, + office-event-listeners? + } +common-draw-area-attlist = + (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute office:target-frame-name { targetFrameName }?, + attribute xlink:show { "new" | "replace" }?)? + & attribute office:name { \string }? + & attribute draw:nohref { "nohref" }? +dr3d-scene = + element dr3d:scene { + dr3d-scene-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-style-name-attlist, + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-text-spreadsheet-shape-attlist, + common-dr3d-transform-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + dr3d-light*, + shapes3d*, + draw-glue-point* + } +shapes3d = + dr3d-scene | dr3d-extrude | dr3d-sphere | dr3d-rotate | dr3d-cube +dr3d-scene-attlist = + attribute dr3d:vrp { vector3D }? + & attribute dr3d:vpn { vector3D }? + & attribute dr3d:vup { vector3D }? + & attribute dr3d:projection { "parallel" | "perspective" }? + & attribute dr3d:distance { length }? + & attribute dr3d:focal-length { length }? + & attribute dr3d:shadow-slant { angle }? + & attribute dr3d:shade-mode { + "flat" | "phong" | "gouraud" | "draft" + }? + & attribute dr3d:ambient-color { color }? + & attribute dr3d:lighting-mode { boolean }? +common-dr3d-transform-attlist = attribute dr3d:transform { \string }? +dr3d-light = element dr3d:light { dr3d-light-attlist, empty } +dr3d-light-attlist = + attribute dr3d:diffuse-color { color }? + & attribute dr3d:direction { vector3D } + & attribute dr3d:enabled { boolean }? + & attribute dr3d:specular { boolean }? +dr3d-cube = + element dr3d:cube { + dr3d-cube-attlist, + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-dr3d-transform-attlist, + empty + } +dr3d-cube-attlist = + attribute dr3d:min-edge { vector3D }?, + attribute dr3d:max-edge { vector3D }? +dr3d-sphere = + element dr3d:sphere { + dr3d-sphere-attlist, + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-dr3d-transform-attlist, + empty + } +dr3d-sphere-attlist = + attribute dr3d:center { vector3D }? + & attribute dr3d:size { vector3D }? +dr3d-extrude = + element dr3d:extrude { + common-draw-path-data-attlist, + common-draw-viewbox-attlist, + common-draw-id-attlist, + common-draw-z-index-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-dr3d-transform-attlist, + empty + } +dr3d-rotate = + element dr3d:rotate { + common-draw-viewbox-attlist, + common-draw-path-data-attlist, + common-draw-z-index-attlist, + common-draw-id-attlist, + common-draw-layer-name-attlist, + common-draw-style-name-attlist, + common-dr3d-transform-attlist, + empty + } +draw-custom-shape = + element draw:custom-shape { + draw-custom-shape-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + common-draw-caption-id-attlist, + svg-title?, + svg-desc?, + office-event-listeners?, + draw-glue-point*, + draw-text, + draw-enhanced-geometry? + } +draw-custom-shape-attlist = + attribute draw:engine { namespacedToken }? + & attribute draw:data { \string }? +draw-enhanced-geometry = + element draw:enhanced-geometry { + draw-enhanced-geometry-attlist, draw-equation*, draw-handle* + } +draw-enhanced-geometry-attlist = + attribute draw:type { custom-shape-type }? + & attribute svg:viewBox { + list { integer, integer, integer, integer } + }? + & attribute draw:mirror-vertical { boolean }? + & attribute draw:mirror-horizontal { boolean }? + & attribute draw:text-rotate-angle { angle }? + & attribute draw:extrusion-allowed { boolean }? + & attribute draw:text-path-allowed { boolean }? + & attribute draw:concentric-gradient-fill-allowed { boolean }? + & attribute draw:extrusion { boolean }? + & attribute draw:extrusion-brightness { zeroToHundredPercent }? + & attribute draw:extrusion-depth { + list { length, double } + }? + & attribute draw:extrusion-diffusion { percent }? + & attribute draw:extrusion-number-of-line-segments { integer }? + & attribute draw:extrusion-light-face { boolean }? + & attribute draw:extrusion-first-light-harsh { boolean }? + & attribute draw:extrusion-second-light-harsh { boolean }? + & attribute draw:extrusion-first-light-level { zeroToHundredPercent }? + & attribute draw:extrusion-second-light-level { + zeroToHundredPercent + }? + & attribute draw:extrusion-first-light-direction { vector3D }? + & attribute draw:extrusion-second-light-direction { vector3D }? + & attribute draw:extrusion-metal { boolean }? + & attribute dr3d:shade-mode { + "flat" | "phong" | "gouraud" | "draft" + }? + & attribute draw:extrusion-rotation-angle { + list { angle, angle } + }? + & attribute draw:extrusion-rotation-center { vector3D }? + & attribute draw:extrusion-shininess { zeroToHundredPercent }? + & attribute draw:extrusion-skew { + list { double, angle } + }? + & attribute draw:extrusion-specularity { zeroToHundredPercent }? + & attribute dr3d:projection { "parallel" | "perspective" }? + & attribute draw:extrusion-viewpoint { point3D }? + & attribute draw:extrusion-origin { + list { extrusionOrigin, extrusionOrigin } + }? + & attribute draw:extrusion-color { boolean }? + & attribute draw:enhanced-path { \string }? + & attribute draw:path-stretchpoint-x { double }? + & attribute draw:path-stretchpoint-y { double }? + & attribute draw:text-areas { \string }? + & attribute draw:glue-points { \string }? + & attribute draw:glue-point-type { + "none" | "segments" | "rectangle" + }? + & attribute draw:glue-point-leaving-directions { \string }? + & attribute draw:text-path { boolean }? + & attribute draw:text-path-mode { "normal" | "path" | "shape" }? + & attribute draw:text-path-scale { "path" | "shape" }? + & attribute draw:text-path-same-letter-heights { boolean }? + & attribute draw:modifiers { \string }? +custom-shape-type = "non-primitive" | \string +point3D = + xsd:string { + pattern = + "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\)" + } +extrusionOrigin = + xsd:double { minInclusive = "-0.5" maxInclusive = "0.5" } +draw-equation = element draw:equation { draw-equation-attlist, empty } +draw-equation-attlist = + attribute draw:name { \string }? + & attribute draw:formula { \string }? +draw-handle = element draw:handle { draw-handle-attlist, empty } +draw-handle-attlist = + attribute draw:handle-mirror-vertical { boolean }? + & attribute draw:handle-mirror-horizontal { boolean }? + & attribute draw:handle-switched { boolean }? + & attribute draw:handle-position { \string } + & attribute draw:handle-range-x-minimum { \string }? + & attribute draw:handle-range-x-maximum { \string }? + & attribute draw:handle-range-y-minimum { \string }? + & attribute draw:handle-range-y-maximum { \string }? + & attribute draw:handle-polar { \string }? + & attribute draw:handle-radius-range-minimum { \string }? + & attribute draw:handle-radius-range-maximum { \string }? +presentation-shape-attlist = + attribute presentation:class { presentation-classes }? + & attribute presentation:placeholder { boolean }? + & attribute presentation:user-transformed { boolean }? +presentation-classes = + "title" + | "outline" + | "subtitle" + | "text" + | "graphic" + | "object" + | "chart" + | "table" + | "orgchart" + | "page" + | "notes" + | "handout" + | "header" + | "footer" + | "date-time" + | "page-number" +presentation-animations = + element presentation:animations { + (presentation-animation-elements | presentation-animation-group)* + } +presentation-animation-elements = + presentation-show-shape + | presentation-show-text + | presentation-hide-shape + | presentation-hide-text + | presentation-dim + | presentation-play +presentation-sound = + element presentation:sound { + presentation-sound-attlist, + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:actuate { "onRequest" }?, + attribute xlink:show { "new" | "replace" }?, + empty + } +presentation-sound-attlist = + attribute presentation:play-full { boolean }? + & xml-id? +presentation-show-shape = + element presentation:show-shape { + common-presentation-effect-attlist, presentation-sound? + } +common-presentation-effect-attlist = + attribute draw:shape-id { IDREF } + & attribute presentation:effect { presentationEffects }? + & attribute presentation:direction { presentationEffectDirections }? + & attribute presentation:speed { presentationSpeeds }? + & attribute presentation:delay { duration }? + & attribute presentation:start-scale { percent }? + & attribute presentation:path-id { \string }? +presentationEffects = + "none" + | "fade" + | "move" + | "stripes" + | "open" + | "close" + | "dissolve" + | "wavyline" + | "random" + | "lines" + | "laser" + | "appear" + | "hide" + | "move-short" + | "checkerboard" + | "rotate" + | "stretch" +presentationEffectDirections = + "none" + | "from-left" + | "from-top" + | "from-right" + | "from-bottom" + | "from-center" + | "from-upper-left" + | "from-upper-right" + | "from-lower-left" + | "from-lower-right" + | "to-left" + | "to-top" + | "to-right" + | "to-bottom" + | "to-upper-left" + | "to-upper-right" + | "to-lower-right" + | "to-lower-left" + | "path" + | "spiral-inward-left" + | "spiral-inward-right" + | "spiral-outward-left" + | "spiral-outward-right" + | "vertical" + | "horizontal" + | "to-center" + | "clockwise" + | "counter-clockwise" +presentationSpeeds = "slow" | "medium" | "fast" +presentation-show-text = + element presentation:show-text { + common-presentation-effect-attlist, presentation-sound? + } +presentation-hide-shape = + element presentation:hide-shape { + common-presentation-effect-attlist, presentation-sound? + } +presentation-hide-text = + element presentation:hide-text { + common-presentation-effect-attlist, presentation-sound? + } +presentation-dim = + element presentation:dim { + presentation-dim-attlist, presentation-sound? + } +presentation-dim-attlist = + attribute draw:shape-id { IDREF } + & attribute draw:color { color } +presentation-play = + element presentation:play { presentation-play-attlist, empty } +presentation-play-attlist = + attribute draw:shape-id { IDREF }, + attribute presentation:speed { presentationSpeeds }? +presentation-animation-group = + element presentation:animation-group { + presentation-animation-elements* + } +common-anim-attlist = + attribute presentation:node-type { + "default" + | "on-click" + | "with-previous" + | "after-previous" + | "timing-root" + | "main-sequence" + | "interactive-sequence" + }? + & attribute presentation:preset-id { \string }? + & attribute presentation:preset-sub-type { \string }? + & attribute presentation:preset-class { + "custom" + | "entrance" + | "exit" + | "emphasis" + | "motion-path" + | "ole-action" + | "media-call" + }? + & attribute presentation:master-element { IDREF }? + & attribute presentation:group-id { \string }? + & (xml-id, + attribute anim:id { NCName }?)? +presentation-event-listener = + element presentation:event-listener { + presentation-event-listener-attlist, presentation-sound? + } +presentation-event-listener-attlist = + attribute script:event-name { \string } + & attribute presentation:action { + "none" + | "previous-page" + | "next-page" + | "first-page" + | "last-page" + | "hide" + | "stop" + | "execute" + | "show" + | "verb" + | "fade-out" + | "sound" + | "last-visited-page" + } + & attribute presentation:effect { presentationEffects }? + & attribute presentation:direction { presentationEffectDirections }? + & attribute presentation:speed { presentationSpeeds }? + & attribute presentation:start-scale { percent }? + & (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "embed" }?, + attribute xlink:actuate { "onRequest" }?)? + & attribute presentation:verb { nonNegativeInteger }? +presentation-decls = presentation-decl* +presentation-decl = + element presentation:header-decl { + presentation-header-decl-attlist, text + } + | element presentation:footer-decl { + presentation-footer-decl-attlist, text + } + | element presentation:date-time-decl { + presentation-date-time-decl-attlist, text + } +presentation-header-decl-attlist = + attribute presentation:name { \string } +presentation-footer-decl-attlist = + attribute presentation:name { \string } +presentation-date-time-decl-attlist = + attribute presentation:name { \string } + & attribute presentation:source { "fixed" | "current-date" } + & attribute style:data-style-name { styleNameRef }? +presentation-settings = + element presentation:settings { + presentation-settings-attlist, presentation-show* + }? +presentation-settings-attlist = + attribute presentation:start-page { \string }? + & attribute presentation:show { \string }? + & attribute presentation:full-screen { boolean }? + & attribute presentation:endless { boolean }? + & attribute presentation:pause { duration }? + & attribute presentation:show-logo { boolean }? + & attribute presentation:force-manual { boolean }? + & attribute presentation:mouse-visible { boolean }? + & attribute presentation:mouse-as-pen { boolean }? + & attribute presentation:start-with-navigator { boolean }? + & attribute presentation:animations { "enabled" | "disabled" }? + & attribute presentation:transition-on-click { + "enabled" | "disabled" + }? + & attribute presentation:stay-on-top { boolean }? + & attribute presentation:show-end-of-presentation-slide { boolean }? +presentation-show = + element presentation:show { presentation-show-attlist, empty } +presentation-show-attlist = + attribute presentation:name { \string } + & attribute presentation:pages { \string } +chart-chart = + element chart:chart { + chart-chart-attlist, + chart-title?, + chart-subtitle?, + chart-footer?, + chart-legend?, + chart-plot-area, + table-table? + } +chart-chart-attlist = + attribute chart:class { namespacedToken } + & common-draw-size-attlist + & attribute chart:column-mapping { \string }? + & attribute chart:row-mapping { \string }? + & attribute chart:style-name { styleNameRef }? + & (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI })? + & xml-id? +chart-title = element chart:title { chart-title-attlist, text-p? } +chart-title-attlist = + attribute table:cell-range { cellRangeAddressList }? + & common-draw-position-attlist + & attribute chart:style-name { styleNameRef }? +chart-subtitle = element chart:subtitle { chart-title-attlist, text-p? } +chart-footer = element chart:footer { chart-title-attlist, text-p? } +chart-legend = element chart:legend { chart-legend-attlist, text-p? } +chart-legend-attlist = + ((attribute chart:legend-position { + "start" | "end" | "top" | "bottom" + }, + attribute chart:legend-align { "start" | "center" | "end" }?) + | attribute chart:legend-position { + "top-start" | "bottom-start" | "top-end" | "bottom-end" + } + | empty) + & common-draw-position-attlist + & (attribute style:legend-expansion { "wide" | "high" | "balanced" } + | (attribute style:legend-expansion { "custom" }, + attribute style:legend-expansion-aspect-ratio { double }) + | empty) + & attribute chart:style-name { styleNameRef }? +chart-plot-area = + element chart:plot-area { + chart-plot-area-attlist, + dr3d-light*, + chart-axis*, + chart-series*, + chart-stock-gain-marker?, + chart-stock-loss-marker?, + chart-stock-range-line?, + chart-wall?, + chart-floor? + } +chart-plot-area-attlist = + common-draw-position-attlist + & common-draw-size-attlist + & attribute chart:style-name { styleNameRef }? + & attribute table:cell-range-address { cellRangeAddressList }? + & attribute chart:data-source-has-labels { + "none" | "row" | "column" | "both" + }? + & dr3d-scene-attlist + & common-dr3d-transform-attlist + & xml-id? +chart-wall = element chart:wall { chart-wall-attlist, empty } +chart-wall-attlist = + attribute svg:width { length }? + & attribute chart:style-name { styleNameRef }? +chart-floor = element chart:floor { chart-floor-attlist, empty } +chart-floor-attlist = + attribute svg:width { length }? + & attribute chart:style-name { styleNameRef }? +chart-axis = + element chart:axis { + chart-axis-attlist, chart-title?, chart-categories?, chart-grid* + } +chart-axis-attlist = + attribute chart:dimension { chart-dimension } + & attribute chart:name { \string }? + & attribute chart:style-name { styleNameRef }? +chart-dimension = "x" | "y" | "z" +chart-categories = + element chart:categories { + attribute table:cell-range-address { cellRangeAddressList }? + } +chart-grid = element chart:grid { chart-grid-attlist } +chart-grid-attlist = + attribute chart:class { "major" | "minor" }? + & attribute chart:style-name { styleNameRef }? +chart-series = + element chart:series { + chart-series-attlist, + chart-domain*, + chart-mean-value?, + chart-regression-curve*, + chart-error-indicator*, + chart-data-point*, + chart-data-label? + } +chart-series-attlist = + attribute chart:values-cell-range-address { cellRangeAddressList }? + & attribute chart:label-cell-address { cellRangeAddressList }? + & attribute chart:class { namespacedToken }? + & attribute chart:attached-axis { \string }? + & attribute chart:style-name { styleNameRef }? + & xml-id? +chart-domain = + element chart:domain { + attribute table:cell-range-address { cellRangeAddressList }? + } +chart-data-point = + element chart:data-point { + chart-data-point-attlist, chart-data-label? + } +chart-data-point-attlist = + attribute chart:repeated { positiveInteger }? + & attribute chart:style-name { styleNameRef }? + & xml-id? +chart-data-label = + element chart:data-label { chart-data-label-attlist, text-p? } +chart-data-label-attlist = + common-draw-position-attlist + & attribute chart:style-name { styleNameRef }? +chart-mean-value = + element chart:mean-value { chart-mean-value-attlist, empty } +chart-mean-value-attlist = attribute chart:style-name { styleNameRef }? +chart-error-indicator = + element chart:error-indicator { chart-error-indicator-attlist, empty } +chart-error-indicator-attlist = + attribute chart:style-name { styleNameRef }? + & attribute chart:dimension { chart-dimension } +chart-regression-curve = + element chart:regression-curve { + chart-regression-curve-attlist, chart-equation? + } +chart-regression-curve-attlist = + attribute chart:style-name { styleNameRef }? +chart-equation = + element chart:equation { chart-equation-attlist, text-p? } +chart-equation-attlist = + attribute chart:automatic-content { boolean }? + & attribute chart:display-r-square { boolean }? + & attribute chart:display-equation { boolean }? + & common-draw-position-attlist + & attribute chart:style-name { styleNameRef }? +chart-stock-gain-marker = + element chart:stock-gain-marker { common-stock-marker-attlist } +chart-stock-loss-marker = + element chart:stock-loss-marker { common-stock-marker-attlist } +chart-stock-range-line = + element chart:stock-range-line { common-stock-marker-attlist } +common-stock-marker-attlist = + attribute chart:style-name { styleNameRef }? +office-database = + element office:database { + db-data-source, + db-forms?, + db-reports?, + db-queries?, + db-table-presentations?, + db-schema-definition? + } +db-data-source = + element db:data-source { + db-data-source-attlist, + db-connection-data, + db-driver-settings?, + db-application-connection-settings? + } +db-data-source-attlist = empty +db-connection-data = + element db:connection-data { + db-connection-data-attlist, + (db-database-description | db-connection-resource), + db-login? + } +db-connection-data-attlist = empty +db-database-description = + element db:database-description { + db-database-description-attlist, + (db-file-based-database | db-server-database) + } +db-database-description-attlist = empty +db-file-based-database = + element db:file-based-database { db-file-based-database-attlist } +db-file-based-database-attlist = + attribute xlink:type { "simple" } + & attribute xlink:href { anyIRI } + & attribute db:media-type { \string } + & attribute db:extension { \string }? +db-server-database = + element db:server-database { db-server-database-attlist, empty } +db-server-database-attlist = + attribute db:type { namespacedToken } + & (db-host-and-port | db-local-socket-name) + & attribute db:database-name { \string }? +db-host-and-port = + attribute db:hostname { \string }, + attribute db:port { positiveInteger }? +db-local-socket-name = attribute db:local-socket { \string }? +db-connection-resource = + element db:connection-resource { + db-connection-resource-attlist, empty + } +db-connection-resource-attlist = + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "none" }?, + attribute xlink:actuate { "onRequest" }? +db-login = element db:login { db-login-attlist, empty } +db-login-attlist = + (attribute db:user-name { \string } + | attribute db:use-system-user { boolean })? + & attribute db:is-password-required { boolean }? + & attribute db:login-timeout { positiveInteger }? +db-driver-settings = + element db:driver-settings { + db-driver-settings-attlist, + db-auto-increment?, + db-delimiter?, + db-character-set?, + db-table-settings? + } +db-driver-settings-attlist = + db-show-deleted + & attribute db:system-driver-settings { \string }? + & attribute db:base-dn { \string }? + & db-is-first-row-header-line + & attribute db:parameter-name-substitution { boolean }? +db-show-deleted = attribute db:show-deleted { boolean }? +db-is-first-row-header-line = + attribute db:is-first-row-header-line { boolean }? +db-auto-increment = + element db:auto-increment { db-auto-increment-attlist, empty } +db-auto-increment-attlist = + attribute db:additional-column-statement { \string }? + & attribute db:row-retrieving-statement { \string }? +db-delimiter = element db:delimiter { db-delimiter-attlist, empty } +db-delimiter-attlist = + attribute db:field { \string }? + & attribute db:string { \string }? + & attribute db:decimal { \string }? + & attribute db:thousand { \string }? +db-character-set = + element db:character-set { db-character-set-attlist, empty } +db-character-set-attlist = attribute db:encoding { textEncoding }? +db-table-settings = element db:table-settings { db-table-setting* } +db-table-setting = + element db:table-setting { + db-table-setting-attlist, db-delimiter?, db-character-set?, empty + } +db-table-setting-attlist = db-is-first-row-header-line, db-show-deleted +db-application-connection-settings = + element db:application-connection-settings { + db-application-connection-settings-attlist, + db-table-filter?, + db-table-type-filter?, + db-data-source-settings? + } +db-application-connection-settings-attlist = + attribute db:is-table-name-length-limited { boolean }? + & attribute db:enable-sql92-check { boolean }? + & attribute db:append-table-alias-name { boolean }? + & attribute db:ignore-driver-privileges { boolean }? + & attribute db:boolean-comparison-mode { + "equal-integer" + | "is-boolean" + | "equal-boolean" + | "equal-use-only-zero" + }? + & attribute db:use-catalog { boolean }? + & attribute db:max-row-count { integer }? + & attribute db:suppress-version-columns { boolean }? +db-table-filter = + element db:table-filter { + db-table-filter-attlist, + db-table-include-filter?, + db-table-exclude-filter? + } +db-table-filter-attlist = empty +db-table-include-filter = + element db:table-include-filter { + db-table-include-filter-attlist, db-table-filter-pattern+ + } +db-table-include-filter-attlist = empty +db-table-exclude-filter = + element db:table-exclude-filter { + db-table-exclude-filter-attlist, db-table-filter-pattern+ + } +db-table-exclude-filter-attlist = empty +db-table-filter-pattern = + element db:table-filter-pattern { + db-table-filter-pattern-attlist, \string + } +db-table-filter-pattern-attlist = empty +db-table-type-filter = + element db:table-type-filter { + db-table-type-filter-attlist, db-table-type* + } +db-table-type-filter-attlist = empty +db-table-type = element db:table-type { db-table-type-attlist, \string } +db-table-type-attlist = empty +db-data-source-settings = + element db:data-source-settings { + db-data-source-settings-attlist, db-data-source-setting+ + } +db-data-source-settings-attlist = empty +db-data-source-setting = + element db:data-source-setting { + db-data-source-setting-attlist, db-data-source-setting-value+ + } +db-data-source-setting-attlist = + attribute db:data-source-setting-is-list { boolean }? + & attribute db:data-source-setting-name { \string } + & attribute db:data-source-setting-type { + db-data-source-setting-types + } +db-data-source-setting-types = + "boolean" | "short" | "int" | "long" | "double" | "string" +db-data-source-setting-value = + element db:data-source-setting-value { + db-data-source-setting-value-attlist, \string + } +db-data-source-setting-value-attlist = empty +db-forms = + element db:forms { + db-forms-attlist, (db-component | db-component-collection)* + } +db-forms-attlist = empty +db-reports = + element db:reports { + db-reports-attlist, (db-component | db-component-collection)* + } +db-reports-attlist = empty +db-component-collection = + element db:component-collection { + db-component-collection-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + (db-component | db-component-collection)* + } +db-component-collection-attlist = empty +db-component = + element db:component { + db-component-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + (office-document | math-math)? + } +db-component-attlist = + (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "none" }?, + attribute xlink:actuate { "onRequest" }?)? + & attribute db:as-template { boolean }? +db-queries = + element db:queries { + db-queries-attlist, (db-query | db-query-collection)* + } +db-queries-attlist = empty +db-query-collection = + element db:query-collection { + db-query-collection-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + (db-query | db-query-collection)* + } +db-query-collection-attlist = empty +db-query = + element db:query { + db-query-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + common-db-table-style-name, + db-order-statement?, + db-filter-statement?, + db-columns?, + db-update-table? + } +db-query-attlist = + attribute db:command { \string } + & attribute db:escape-processing { boolean }? +db-order-statement = + element db:order-statement { db-command, db-apply-command, empty } +db-filter-statement = + element db:filter-statement { db-command, db-apply-command, empty } +db-update-table = + element db:update-table { common-db-table-name-attlist } +db-table-presentations = + element db:table-representations { + db-table-presentations-attlist, db-table-presentation* + } +db-table-presentations-attlist = empty +db-table-presentation = + element db:table-representation { + db-table-presentation-attlist, + common-db-table-name-attlist, + common-db-object-title, + common-db-object-description, + common-db-table-style-name, + db-order-statement?, + db-filter-statement?, + db-columns? + } +db-table-presentation-attlist = empty +db-columns = element db:columns { db-columns-attlist, db-column+ } +db-columns-attlist = empty +db-column = + element db:column { + db-column-attlist, + common-db-object-name, + common-db-object-title, + common-db-object-description, + common-db-default-value + } +db-column-attlist = + attribute db:visible { boolean }? + & attribute db:style-name { styleNameRef }? + & attribute db:default-cell-style-name { styleNameRef }? +db-command = attribute db:command { \string } +db-apply-command = attribute db:apply-command { boolean }? +common-db-table-name-attlist = + attribute db:name { \string } + & attribute db:catalog-name { \string }? + & attribute db:schema-name { \string }? +common-db-object-name = attribute db:name { \string } +common-db-object-title = attribute db:title { \string }? +common-db-object-description = attribute db:description { \string }? +common-db-table-style-name = + attribute db:style-name { styleNameRef }? + & attribute db:default-row-style-name { styleNameRef }? +common-db-default-value = common-value-and-type-attlist? +db-schema-definition = + element db:schema-definition { + db-schema-definition-attlist, db-table-definitions + } +db-schema-definition-attlist = empty +db-table-definitions = + element db:table-definitions { + db-table-definitions-attlist, db-table-definition* + } +db-table-definitions-attlist = empty +db-table-definition = + element db:table-definition { + common-db-table-name-attlist, + db-table-definition-attlist, + db-column-definitions, + db-keys?, + db-indices? + } +db-table-definition-attlist = attribute db:type { \string }? +db-column-definitions = + element db:column-definitions { + db-column-definitions-attlist, db-column-definition+ + } +db-column-definitions-attlist = empty +db-column-definition = + element db:column-definition { + db-column-definition-attlist, common-db-default-value + } +db-column-definition-attlist = + attribute db:name { \string } + & attribute db:data-type { db-data-types }? + & attribute db:type-name { \string }? + & attribute db:precision { positiveInteger }? + & attribute db:scale { positiveInteger }? + & attribute db:is-nullable { "no-nulls" | "nullable" }? + & attribute db:is-empty-allowed { boolean }? + & attribute db:is-autoincrement { boolean }? +db-data-types = + "bit" + | "boolean" + | "tinyint" + | "smallint" + | "integer" + | "bigint" + | "float" + | "real" + | "double" + | "numeric" + | "decimal" + | "char" + | "varchar" + | "longvarchar" + | "date" + | "time" + | "timestmp" + | "binary" + | "varbinary" + | "longvarbinary" + | "sqlnull" + | "other" + | "object" + | "distinct" + | "struct" + | "array" + | "blob" + | "clob" + | "ref" +db-keys = element db:keys { db-keys-attlist, db-key+ } +db-keys-attlist = empty +db-key = element db:key { db-key-attlist, db-key-columns+ } +db-key-attlist = + attribute db:name { \string }? + & attribute db:type { "primary" | "unique" | "foreign" } + & attribute db:referenced-table-name { \string }? + & attribute db:update-rule { + "cascade" | "restrict" | "set-null" | "no-action" | "set-default" + }? + & attribute db:delete-rule { + "cascade" | "restrict" | "set-null" | "no-action" | "set-default" + }? +db-key-columns = + element db:key-columns { db-key-columns-attlist, db-key-column+ } +db-key-columns-attlist = empty +db-key-column = element db:key-column { db-key-column-attlist, empty } +db-key-column-attlist = + attribute db:name { \string }? + & attribute db:related-column-name { \string }? +db-indices = element db:indices { db-indices-attlist, db-index+ } +db-indices-attlist = empty +db-index = element db:index { db-index-attlist, db-index-columns+ } +db-index-attlist = + attribute db:name { \string } + & attribute db:catalog-name { \string }? + & attribute db:is-unique { boolean }? + & attribute db:is-clustered { boolean }? +db-index-columns = element db:index-columns { db-index-column+ } +db-index-column = + element db:index-column { db-index-column-attlist, empty } +db-index-column-attlist = + attribute db:name { \string } + & attribute db:is-ascending { boolean }? +office-forms = + element office:forms { + office-forms-attlist, (form-form | xforms-model)* + }? +office-forms-attlist = + attribute form:automatic-focus { boolean }? + & attribute form:apply-design-mode { boolean }? +form-form = + element form:form { + common-form-control-attlist, + form-form-attlist, + form-properties?, + office-event-listeners?, + (controls | form-form)*, + form-connection-resource? + } +form-form-attlist = + (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:actuate { "onRequest" }?)? + & attribute office:target-frame { targetFrameName }? + & attribute form:method { "get" | "post" | \string }? + & attribute form:enctype { \string }? + & attribute form:allow-deletes { boolean }? + & attribute form:allow-inserts { boolean }? + & attribute form:allow-updates { boolean }? + & attribute form:apply-filter { boolean }? + & attribute form:command-type { "table" | "query" | "command" }? + & attribute form:command { \string }? + & attribute form:datasource { anyIRI | \string }? + & attribute form:master-fields { \string }? + & attribute form:detail-fields { \string }? + & attribute form:escape-processing { boolean }? + & attribute form:filter { \string }? + & attribute form:ignore-result { boolean }? + & attribute form:navigation-mode { navigation }? + & attribute form:order { \string }? + & attribute form:tab-cycle { tab-cycles }? +navigation = "none" | "current" | "parent" +tab-cycles = "records" | "current" | "page" +form-connection-resource = + element form:connection-resource { + attribute xlink:href { anyIRI }, + empty + } +xforms-model = element xforms:model { anyAttListOrElements } +column-controls = + element form:text { form-text-attlist, common-form-control-content } + | element form:textarea { + form-textarea-attlist, common-form-control-content, text-p* + } + | element form:formatted-text { + form-formatted-text-attlist, common-form-control-content + } + | element form:number { + form-number-attlist, + common-numeric-control-attlist, + common-form-control-content, + common-linked-cell, + common-spin-button, + common-repeat, + common-delay-for-repeat + } + | element form:date { + form-date-attlist, + common-numeric-control-attlist, + common-form-control-content, + common-linked-cell, + common-spin-button, + common-repeat, + common-delay-for-repeat + } + | element form:time { + form-time-attlist, + common-numeric-control-attlist, + common-form-control-content, + common-linked-cell, + common-spin-button, + common-repeat, + common-delay-for-repeat + } + | element form:combobox { + form-combobox-attlist, common-form-control-content, form-item* + } + | element form:listbox { + form-listbox-attlist, common-form-control-content, form-option* + } + | element form:checkbox { + form-checkbox-attlist, common-form-control-content + } +controls = + column-controls + | element form:password { + form-password-attlist, common-form-control-content + } + | element form:file { form-file-attlist, common-form-control-content } + | element form:fixed-text { + form-fixed-text-attlist, common-form-control-content + } + | element form:button { + form-button-attlist, common-form-control-content + } + | element form:image { + form-image-attlist, common-form-control-content + } + | element form:radio { + form-radio-attlist, common-form-control-content + } + | element form:frame { + form-frame-attlist, common-form-control-content + } + | element form:image-frame { + form-image-frame-attlist, common-form-control-content + } + | element form:hidden { + form-hidden-attlist, common-form-control-content + } + | element form:grid { + form-grid-attlist, common-form-control-content, form-column* + } + | element form:value-range { + form-value-range-attlist, common-form-control-content + } + | element form:generic-control { + form-generic-control-attlist, common-form-control-content + } +form-text-attlist = + form-control-attlist, + common-current-value-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-convert-empty-attlist, + common-data-field-attlist, + common-linked-cell +form-control-attlist = + common-form-control-attlist, + common-control-id-attlist, + xforms-bind-attlist +common-form-control-content = form-properties?, office-event-listeners? +form-textarea-attlist = + form-control-attlist, + common-current-value-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-convert-empty-attlist, + common-data-field-attlist, + common-linked-cell +form-password-attlist = + form-control-attlist + & common-disabled-attlist + & common-maxlength-attlist + & common-printable-attlist + & common-tab-attlist + & common-title-attlist + & common-value-attlist + & common-convert-empty-attlist + & common-linked-cell + & attribute form:echo-char { character }? +form-file-attlist = + form-control-attlist, + common-current-value-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-linked-cell +form-formatted-text-attlist = + form-control-attlist + & common-current-value-attlist + & common-disabled-attlist + & common-maxlength-attlist + & common-printable-attlist + & common-readonly-attlist + & common-tab-attlist + & common-title-attlist + & common-value-attlist + & common-convert-empty-attlist + & common-data-field-attlist + & common-linked-cell + & common-spin-button + & common-repeat + & common-delay-for-repeat + & attribute form:max-value { \string }? + & attribute form:min-value { \string }? + & attribute form:validation { boolean }? +common-numeric-control-attlist = + form-control-attlist, + common-disabled-attlist, + common-maxlength-attlist, + common-printable-attlist, + common-readonly-attlist, + common-tab-attlist, + common-title-attlist, + common-convert-empty-attlist, + common-data-field-attlist +form-number-attlist = + attribute form:value { double }? + & attribute form:current-value { double }? + & attribute form:min-value { double }? + & attribute form:max-value { double }? +form-date-attlist = + attribute form:value { date }? + & attribute form:current-value { date }? + & attribute form:min-value { date }? + & attribute form:max-value { date }? +form-time-attlist = + attribute form:value { time }? + & attribute form:current-value { time }? + & attribute form:min-value { time }? + & attribute form:max-value { time }? +form-fixed-text-attlist = + form-control-attlist + & for + & common-disabled-attlist + & label + & common-printable-attlist + & common-title-attlist + & attribute form:multi-line { boolean }? +form-combobox-attlist = + form-control-attlist + & common-current-value-attlist + & common-disabled-attlist + & dropdown + & common-maxlength-attlist + & common-printable-attlist + & common-readonly-attlist + & size + & common-tab-attlist + & common-title-attlist + & common-value-attlist + & common-convert-empty-attlist + & common-data-field-attlist + & list-source + & list-source-type + & common-linked-cell + & common-source-cell-range + & attribute form:auto-complete { boolean }? +form-item = element form:item { form-item-attlist, text } +form-item-attlist = label +form-listbox-attlist = + form-control-attlist + & common-disabled-attlist + & dropdown + & common-printable-attlist + & size + & common-tab-attlist + & common-title-attlist + & bound-column + & common-data-field-attlist + & list-source + & list-source-type + & common-linked-cell + & list-linkage-type + & common-source-cell-range + & attribute form:multiple { boolean }? + & attribute form:xforms-list-source { \string }? +list-linkage-type = + attribute form:list-linkage-type { + "selection" | "selection-indices" + }? +form-option = element form:option { form-option-attlist, text } +form-option-attlist = + current-selected, selected, label, common-value-attlist +form-button-attlist = + form-control-attlist + & button-type + & common-disabled-attlist + & label + & image-data + & common-printable-attlist + & common-tab-attlist + & target-frame + & target-location + & common-title-attlist + & common-value-attlist + & common-form-relative-image-position-attlist + & common-repeat + & common-delay-for-repeat + & attribute form:default-button { boolean }? + & attribute form:toggle { boolean }? + & attribute form:focus-on-click { boolean }? + & attribute form:xforms-submission { \string }? +form-image-attlist = + form-control-attlist, + button-type, + common-disabled-attlist, + image-data, + common-printable-attlist, + common-tab-attlist, + target-frame, + target-location, + common-title-attlist, + common-value-attlist +form-checkbox-attlist = + form-control-attlist + & common-disabled-attlist + & label + & common-printable-attlist + & common-tab-attlist + & common-title-attlist + & common-value-attlist + & common-data-field-attlist + & common-form-visual-effect-attlist + & common-form-relative-image-position-attlist + & common-linked-cell + & attribute form:current-state { states }? + & attribute form:is-tristate { boolean }? + & attribute form:state { states }? +states = "unchecked" | "checked" | "unknown" +form-radio-attlist = + form-control-attlist, + current-selected, + common-disabled-attlist, + label, + common-printable-attlist, + selected, + common-tab-attlist, + common-title-attlist, + common-value-attlist, + common-data-field-attlist, + common-form-visual-effect-attlist, + common-form-relative-image-position-attlist, + common-linked-cell +form-frame-attlist = + form-control-attlist, + common-disabled-attlist, + for, + label, + common-printable-attlist, + common-title-attlist +form-image-frame-attlist = + form-control-attlist, + common-disabled-attlist, + image-data, + common-printable-attlist, + common-readonly-attlist, + common-title-attlist, + common-data-field-attlist +form-hidden-attlist = form-control-attlist, common-value-attlist +form-grid-attlist = + form-control-attlist, + common-disabled-attlist, + common-printable-attlist, + common-tab-attlist, + common-title-attlist +form-column = + element form:column { form-column-attlist, column-controls+ } +form-column-attlist = + common-form-control-attlist, label, text-style-name +text-style-name = attribute form:text-style-name { styleNameRef }? +form-value-range-attlist = + form-control-attlist + & common-disabled-attlist + & common-printable-attlist + & common-tab-attlist + & common-title-attlist + & common-value-attlist + & common-linked-cell + & common-repeat + & common-delay-for-repeat + & attribute form:max-value { integer }? + & attribute form:min-value { integer }? + & attribute form:step-size { positiveInteger }? + & attribute form:page-step-size { positiveInteger }? + & attribute form:orientation { "horizontal" | "vertical" }? +form-generic-control-attlist = form-control-attlist +common-form-control-attlist = + attribute form:name { \string }? + & attribute form:control-implementation { namespacedToken }? +xforms-bind-attlist = attribute xforms:bind { \string }? +types = "submit" | "reset" | "push" | "url" +button-type = attribute form:button-type { types }? +common-control-id-attlist = + xml-id, + attribute form:id { NCName }? +current-selected = attribute form:current-selected { boolean }? +common-value-attlist = attribute form:value { \string }? +common-current-value-attlist = attribute form:current-value { \string }? +common-disabled-attlist = attribute form:disabled { boolean }? +dropdown = attribute form:dropdown { boolean }? +for = attribute form:for { \string }? +image-data = attribute form:image-data { anyIRI }? +label = attribute form:label { \string }? +common-maxlength-attlist = + attribute form:max-length { nonNegativeInteger }? +common-printable-attlist = attribute form:printable { boolean }? +common-readonly-attlist = attribute form:readonly { boolean }? +selected = attribute form:selected { boolean }? +size = attribute form:size { nonNegativeInteger }? +common-tab-attlist = + attribute form:tab-index { nonNegativeInteger }? + & attribute form:tab-stop { boolean }? +target-frame = attribute office:target-frame { targetFrameName }? +target-location = attribute xlink:href { anyIRI }? +common-title-attlist = attribute form:title { \string }? +common-form-visual-effect-attlist = + attribute form:visual-effect { "flat" | "3d" }? +common-form-relative-image-position-attlist = + attribute form:image-position { "center" }? + | (attribute form:image-position { + "start" | "end" | "top" | "bottom" + }, + attribute form:image-align { "start" | "center" | "end" }?) +bound-column = attribute form:bound-column { \string }? +common-convert-empty-attlist = + attribute form:convert-empty-to-null { boolean }? +common-data-field-attlist = attribute form:data-field { \string }? +list-source = attribute form:list-source { \string }? +list-source-type = + attribute form:list-source-type { + "table" + | "query" + | "sql" + | "sql-pass-through" + | "value-list" + | "table-fields" + }? +common-linked-cell = + attribute form:linked-cell { cellAddress | \string }? +common-source-cell-range = + attribute form:source-cell-range { cellRangeAddress | \string }? +common-spin-button = attribute form:spin-button { boolean }? +common-repeat = attribute form:repeat { boolean }? +common-delay-for-repeat = attribute form:delay-for-repeat { duration }? +form-properties = element form:properties { form-property+ } +form-property = + element form:property { + form-property-name, form-property-value-and-type-attlist + } + | element form:list-property { + form-property-name, form-property-type-and-value-list + } +form-property-name = attribute form:property-name { \string } +form-property-value-and-type-attlist = + common-value-and-type-attlist + | attribute office:value-type { "void" } +form-property-type-and-value-list = + (attribute office:value-type { "float" }, + element form:list-value { + attribute office:value { double } + }*) + | (attribute office:value-type { "percentage" }, + element form:list-value { + attribute office:value { double } + }*) + | (attribute office:value-type { "currency" }, + element form:list-value { + attribute office:value { double }, + attribute office:currency { \string }? + }*) + | (attribute office:value-type { "date" }, + element form:list-value { + attribute office:date-value { dateOrDateTime } + }*) + | (attribute office:value-type { "time" }, + element form:list-value { + attribute office:time-value { duration } + }*) + | (attribute office:value-type { "boolean" }, + element form:list-value { + attribute office:boolean-value { boolean } + }*) + | (attribute office:value-type { "string" }, + element form:list-value { + attribute office:string-value { \string } + }*) + | attribute office:value-type { "void" } +office-annotation = + element office:annotation { + office-annotation-attlist, + draw-caption-attlist, + common-draw-position-attlist, + common-draw-size-attlist, + common-draw-shape-with-text-and-styles-attlist, + dc-creator?, + dc-date?, + meta-date-string?, + (text-p | text-list)* + } +office-annotation-end = + element office:annotation-end { office-annotation-end-attlist } +office-annotation-attlist = + attribute office:display { boolean }? + & common-office-annotation-name-attlist? +office-annotation-end-attlist = common-office-annotation-name-attlist +common-office-annotation-name-attlist = + attribute office:name { \string } +meta-date-string = element meta:date-string { \string } +common-num-format-prefix-suffix-attlist = + attribute style:num-prefix { \string }?, + attribute style:num-suffix { \string }? +common-num-format-attlist = + attribute style:num-format { "1" | "i" | "I" | \string | empty } + | (attribute style:num-format { "a" | "A" }, + style-num-letter-sync-attlist) + | empty +style-num-letter-sync-attlist = + attribute style:num-letter-sync { boolean }? +office-change-info = + element office:change-info { dc-creator, dc-date, text-p* } +office-event-listeners = + element office:event-listeners { + (script-event-listener | presentation-event-listener)* + } +script-event-listener = + element script:event-listener { script-event-listener-attlist, empty } +script-event-listener-attlist = + attribute script:event-name { \string } + & attribute script:language { \string } + & (attribute script:macro-name { \string } + | (attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:actuate { "onRequest" }?)) +math-math = element math:math { mathMarkup } +[ + dc:description [ + "To avoid inclusion of the complete MathML schema, anything is allowed within a math:math top-level element" + ] +] +mathMarkup = + (attribute * { text } + | text + | element * { mathMarkup })* +text-dde-connection-decl = + element text:dde-connection-decl { + text-dde-connection-decl-attlist, common-dde-connection-decl-attlist + } +text-dde-connection-decl-attlist = attribute office:name { \string } +common-dde-connection-decl-attlist = + attribute office:dde-application { \string } + & attribute office:dde-topic { \string } + & attribute office:dde-item { \string } + & attribute office:automatic-update { boolean }? +table-dde-link = + element table:dde-link { office-dde-source, table-table } +office-dde-source = + element office:dde-source { + office-dde-source-attlist, common-dde-connection-decl-attlist + } +office-dde-source-attlist = + attribute office:name { \string }? + & attribute office:conversion-mode { + "into-default-style-data-style" + | "into-english-number" + | "keep-text" + }? +animation-element = + element anim:animate { + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-values-attlist, + common-anim-spline-mode-attlist, + common-spline-anim-value-attlist, + common-timing-attlist, + common-anim-add-accum-attlist + } + | element anim:set { + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-set-values-attlist, + common-timing-attlist, + common-anim-add-accum-attlist + } + | element anim:animateMotion { + anim-animate-motion-attlist, + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-add-accum-attlist, + common-anim-values-attlist, + common-timing-attlist, + common-spline-anim-value-attlist + } + | element anim:animateColor { + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-add-accum-attlist, + common-anim-values-attlist, + common-anim-spline-mode-attlist, + common-spline-anim-value-attlist, + anim-animate-color-attlist, + common-timing-attlist + } + | element anim:animateTransform { + common-anim-target-attlist, + common-anim-named-target-attlist, + common-anim-add-accum-attlist, + common-anim-values-attlist, + anim-animate-transform-attlist, + common-timing-attlist + } + | element anim:transitionFilter { + common-anim-target-attlist, + common-anim-add-accum-attlist, + common-anim-values-attlist, + common-anim-spline-mode-attlist, + anim-transition-filter-attlist, + common-timing-attlist + } + | element anim:par { + common-anim-attlist, + common-timing-attlist, + common-endsync-timing-attlist, + animation-element* + } + | element anim:seq { + common-anim-attlist, + common-endsync-timing-attlist, + common-timing-attlist, + animation-element* + } + | element anim:iterate { + common-anim-attlist, + anim-iterate-attlist, + common-timing-attlist, + common-endsync-timing-attlist, + animation-element* + } + | element anim:audio { + common-anim-attlist, + anim-audio-attlist, + common-basic-timing-attlist + } + | element anim:command { + common-anim-attlist, + anim-command-attlist, + common-begin-end-timing-attlist, + common-anim-target-attlist, + element anim:param { + attribute anim:name { \string }, + attribute anim:value { \string } + }* + } +anim-animate-motion-attlist = + attribute svg:path { pathData }? + & attribute svg:origin { \string }? + & attribute smil:calcMode { + "discrete" | "linear" | "paced" | "spline" + }? +anim-animate-color-attlist = + attribute anim:color-interpolation { "rgb" | "hsl" }? + & attribute anim:color-interpolation-direction { + "clockwise" | "counter-clockwise" + }? +anim-animate-transform-attlist = + attribute svg:type { + "translate" | "scale" | "rotate" | "skewX" | "skewY" + } +anim-transition-filter-attlist = + attribute smil:type { \string } + & attribute smil:subtype { \string }? + & attribute smil:direction { "forward" | "reverse" }? + & attribute smil:fadeColor { color }? + & attribute smil:mode { "in" | "out" }? +common-anim-target-attlist = + attribute smil:targetElement { IDREF }? + & attribute anim:sub-item { \string }? +common-anim-named-target-attlist = + attribute smil:attributeName { \string } +common-anim-values-attlist = + attribute smil:values { \string }? + & attribute anim:formula { \string }? + & common-anim-set-values-attlist + & attribute smil:from { \string }? + & attribute smil:by { \string }? +common-anim-spline-mode-attlist = + attribute smil:calcMode { + "discrete" | "linear" | "paced" | "spline" + }? +common-spline-anim-value-attlist = + attribute smil:keyTimes { \string }? + & attribute smil:keySplines { \string }? +common-anim-add-accum-attlist = + attribute smil:accumulate { "none" | "sum" }? + & attribute smil:additive { "replace" | "sum" }? +common-anim-set-values-attlist = attribute smil:to { \string }? +common-begin-end-timing-attlist = + attribute smil:begin { \string }? + & attribute smil:end { \string }? +common-dur-timing-attlist = attribute smil:dur { \string }? +common-endsync-timing-attlist = + attribute smil:endsync { "first" | "last" | "all" | "media" | IDREF }? +common-repeat-timing-attlist = + attribute smil:repeatDur { \string }?, + attribute smil:repeatCount { nonNegativeDecimal | "indefinite" }? +nonNegativeDecimal = xsd:decimal { minInclusive = "0.0" } +common-fill-timing-attlist = + attribute smil:fill { + "remove" | "freeze" | "hold" | "auto" | "default" | "transition" + }? +common-fill-default-attlist = + attribute smil:fillDefault { + "remove" | "freeze" | "hold" | "transition" | "auto" | "inherit" + }? +common-restart-timing-attlist = + attribute smil:restart { + "never" | "always" | "whenNotActive" | "default" + }? +common-restart-default-attlist = + attribute smil:restartDefault { + "never" | "always" | "whenNotActive" | "inherit" + }? +common-time-manip-attlist = + attribute smil:accelerate { zeroToOneDecimal }? + & attribute smil:decelerate { zeroToOneDecimal }? + & attribute smil:autoReverse { boolean }? +zeroToOneDecimal = xsd:decimal { minInclusive = "0" maxInclusive = "1" } +common-basic-timing-attlist = + common-begin-end-timing-attlist, + common-dur-timing-attlist, + common-repeat-timing-attlist, + common-restart-timing-attlist, + common-restart-default-attlist, + common-fill-timing-attlist, + common-fill-default-attlist +common-timing-attlist = + common-basic-timing-attlist, common-time-manip-attlist +anim-iterate-attlist = + common-anim-target-attlist + & attribute anim:iterate-type { \string }? + & attribute anim:iterate-interval { duration }? +anim-audio-attlist = + attribute xlink:href { anyIRI }? + & attribute anim:audio-level { double }? +anim-command-attlist = attribute anim:command { \string } +style-style = + element style:style { + style-style-attlist, style-style-content, style-map* + } +common-in-content-meta-attlist = + attribute xhtml:about { URIorSafeCURIE }, + attribute xhtml:property { CURIEs }, + common-meta-literal-attlist +common-meta-literal-attlist = + attribute xhtml:datatype { CURIE }?, + attribute xhtml:content { \string }? +xml-id = attribute xml:id { ID } +style-style-attlist = + attribute style:name { styleName } + & attribute style:display-name { \string }? + & attribute style:parent-style-name { styleNameRef }? + & attribute style:next-style-name { styleNameRef }? + & attribute style:list-level { positiveInteger | empty }? + & attribute style:list-style-name { styleName | empty }? + & attribute style:master-page-name { styleNameRef }? + & attribute style:auto-update { boolean }? + & attribute style:data-style-name { styleNameRef }? + & attribute style:percentage-data-style-name { styleNameRef }? + & attribute style:class { \string }? + & attribute style:default-outline-level { positiveInteger | empty }? +style-map = element style:map { style-map-attlist, empty } +style-map-attlist = + attribute style:condition { \string } + & attribute style:apply-style-name { styleNameRef } + & attribute style:base-cell-address { cellAddress }? +style-default-style = + element style:default-style { style-style-content } +style-page-layout = + element style:page-layout { + style-page-layout-attlist, style-page-layout-content + } +style-page-layout-content = + style-page-layout-properties?, + style-header-style?, + style-footer-style? +style-page-layout-attlist = + attribute style:name { styleName } + & attribute style:page-usage { + "all" | "left" | "right" | "mirrored" + }? +style-header-style = + element style:header-style { style-header-footer-properties? } +style-footer-style = + element style:footer-style { style-header-footer-properties? } +style-default-page-layout = + element style:default-page-layout { style-page-layout-content } +style-master-page = + element style:master-page { + style-master-page-attlist, + (style-header, style-header-left?)?, + (style-footer, style-footer-left?)?, + draw-layer-set?, + office-forms?, + shape*, + animation-element?, + presentation-notes? + } +style-master-page-attlist = + attribute style:name { styleName } + & attribute style:display-name { \string }? + & attribute style:page-layout-name { styleNameRef } + & attribute draw:style-name { styleNameRef }? + & attribute style:next-style-name { styleNameRef }? +style-header = + element style:header { + common-style-header-footer-attlist, header-footer-content + } +style-footer = + element style:footer { + common-style-header-footer-attlist, header-footer-content + } +style-header-left = + element style:header-left { + common-style-header-footer-attlist, header-footer-content + } +style-footer-left = + element style:footer-left { + common-style-header-footer-attlist, header-footer-content + } +header-footer-content = + (text-tracked-changes, + text-decls, + (text-h + | text-p + | text-list + | table-table + | text-section + | text-table-of-content + | text-illustration-index + | text-table-index + | text-object-index + | text-user-index + | text-alphabetical-index + | text-bibliography + | text-index-title + | change-marks)*) + | (style-region-left?, style-region-center?, style-region-right?) +common-style-header-footer-attlist = + attribute style:display { boolean }? +style-region-left = element style:region-left { region-content } +style-region-center = element style:region-center { region-content } +style-region-right = element style:region-right { region-content } +region-content = text-p* +presentation-notes = + element presentation:notes { + common-presentation-header-footer-attlist, + presentation-notes-attlist, + office-forms, + shape* + } +presentation-notes-attlist = + attribute style:page-layout-name { styleNameRef }? + & attribute draw:style-name { styleNameRef }? +table-table-template = + element table:table-template { + table-table-template-attlist, + table-first-row?, + table-last-row?, + table-first-column?, + table-last-column?, + table-body, + table-even-rows?, + table-odd-rows?, + table-even-columns?, + table-odd-columns?, + table-background? + } +table-table-template-attlist = + attribute table:name { \string } + & attribute table:first-row-start-column { rowOrCol } + & attribute table:first-row-end-column { rowOrCol } + & attribute table:last-row-start-column { rowOrCol } + & attribute table:last-row-end-column { rowOrCol } +rowOrCol = "row" | "column" +table-first-row = + element table:first-row { common-table-template-attlist, empty } +table-last-row = + element table:last-row { common-table-template-attlist, empty } +table-first-column = + element table:first-column { common-table-template-attlist, empty } +table-last-column = + element table:last-column { common-table-template-attlist, empty } +table-body = element table:body { common-table-template-attlist, empty } +table-even-rows = + element table:even-rows { common-table-template-attlist, empty } +table-odd-rows = + element table:odd-rows { common-table-template-attlist, empty } +table-even-columns = + element table:even-columns { common-table-template-attlist, empty } +table-odd-columns = + element table:odd-columns { common-table-template-attlist, empty } +common-table-template-attlist = + attribute table:style-name { styleNameRef }, + attribute table:paragraph-style-name { styleNameRef }? +table-background = + element table:background { table-background-attlist, empty } +table-background-attlist = attribute table:style-name { styleNameRef } +style-font-face = + element style:font-face { + style-font-face-attlist, svg-font-face-src?, svg-definition-src? + } +style-font-face-attlist = + attribute svg:font-family { \string }? + & attribute svg:font-style { fontStyle }? + & attribute svg:font-variant { fontVariant }? + & attribute svg:font-weight { fontWeight }? + & attribute svg:font-stretch { + "normal" + | "ultra-condensed" + | "extra-condensed" + | "condensed" + | "semi-condensed" + | "semi-expanded" + | "expanded" + | "extra-expanded" + | "ultra-expanded" + }? + & attribute svg:font-size { positiveLength }? + & attribute svg:unicode-range { \string }? + & attribute svg:units-per-em { integer }? + & attribute svg:panose-1 { \string }? + & attribute svg:stemv { integer }? + & attribute svg:stemh { integer }? + & attribute svg:slope { integer }? + & attribute svg:cap-height { integer }? + & attribute svg:x-height { integer }? + & attribute svg:accent-height { integer }? + & attribute svg:ascent { integer }? + & attribute svg:descent { integer }? + & attribute svg:widths { \string }? + & attribute svg:bbox { \string }? + & attribute svg:ideographic { integer }? + & attribute svg:alphabetic { integer }? + & attribute svg:mathematical { integer }? + & attribute svg:hanging { integer }? + & attribute svg:v-ideographic { integer }? + & attribute svg:v-alphabetic { integer }? + & attribute svg:v-mathematical { integer }? + & attribute svg:v-hanging { integer }? + & attribute svg:underline-position { integer }? + & attribute svg:underline-thickness { integer }? + & attribute svg:strikethrough-position { integer }? + & attribute svg:strikethrough-thickness { integer }? + & attribute svg:overline-position { integer }? + & attribute svg:overline-thickness { integer }? + & attribute style:name { \string } + & attribute style:font-adornments { \string }? + & attribute style:font-family-generic { fontFamilyGeneric }? + & attribute style:font-pitch { fontPitch }? + & attribute style:font-charset { textEncoding }? +svg-font-face-src = + element svg:font-face-src { + (svg-font-face-uri | svg-font-face-name)+ + } +svg-font-face-uri = + element svg:font-face-uri { + common-svg-font-face-xlink-attlist, svg-font-face-format* + } +svg-font-face-format = + element svg:font-face-format { + attribute svg:string { \string }?, + empty + } +svg-font-face-name = + element svg:font-face-name { + attribute svg:name { \string }?, + empty + } +svg-definition-src = + element svg:definition-src { + common-svg-font-face-xlink-attlist, empty + } +common-svg-font-face-xlink-attlist = + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:actuate { "onRequest" }? +number-number-style = + element number:number-style { + common-data-style-attlist, + style-text-properties?, + number-text?, + (any-number, number-text?)?, + style-map* + } +any-number = number-number | number-scientific-number | number-fraction +number-number = + element number:number { + number-number-attlist, + common-decimal-places-attlist, + common-number-attlist, + number-embedded-text* + } +number-number-attlist = + attribute number:decimal-replacement { \string }? + & attribute number:display-factor { double }? +number-embedded-text = + element number:embedded-text { number-embedded-text-attlist, text } +number-embedded-text-attlist = attribute number:position { integer } +number-scientific-number = + element number:scientific-number { + number-scientific-number-attlist, + common-decimal-places-attlist, + common-number-attlist, + empty + } +number-scientific-number-attlist = + attribute number:min-exponent-digits { integer }? +number-fraction = + element number:fraction { + number-fraction-attlist, common-number-attlist, empty + } +number-fraction-attlist = + attribute number:min-numerator-digits { integer }? + & attribute number:min-denominator-digits { integer }? + & attribute number:denominator-value { integer }? +number-currency-style = + element number:currency-style { + common-data-style-attlist, + common-auto-reorder-attlist, + style-text-properties?, + number-text?, + ((number-and-text, currency-symbol-and-text?) + | (currency-symbol-and-text, number-and-text?))?, + style-map* + } +currency-symbol-and-text = number-currency-symbol, number-text? +number-and-text = number-number, number-text? +number-currency-symbol = + element number:currency-symbol { + number-currency-symbol-attlist, text + } +number-currency-symbol-attlist = + attribute number:language { languageCode }?, + attribute number:country { countryCode }?, + attribute number:script { scriptCode }?, + attribute number:rfc-language-tag { language }? +number-percentage-style = + element number:percentage-style { + common-data-style-attlist, + style-text-properties?, + number-text?, + number-and-text?, + style-map* + } +number-date-style = + element number:date-style { + common-data-style-attlist, + common-auto-reorder-attlist, + common-format-source-attlist, + style-text-properties?, + number-text?, + (any-date, number-text?)+, + style-map* + } +any-date = + number-day + | number-month + | number-year + | number-era + | number-day-of-week + | number-week-of-year + | number-quarter + | number-hours + | number-am-pm + | number-minutes + | number-seconds +number-day = + element number:day { + number-day-attlist, common-calendar-attlist, empty + } +number-day-attlist = attribute number:style { "short" | "long" }? +number-month = + element number:month { + number-month-attlist, common-calendar-attlist, empty + } +number-month-attlist = + attribute number:textual { boolean }? + & attribute number:possessive-form { boolean }? + & attribute number:style { "short" | "long" }? +number-year = + element number:year { + number-year-attlist, common-calendar-attlist, empty + } +number-year-attlist = attribute number:style { "short" | "long" }? +number-era = + element number:era { + number-era-attlist, common-calendar-attlist, empty + } +number-era-attlist = attribute number:style { "short" | "long" }? +number-day-of-week = + element number:day-of-week { + number-day-of-week-attlist, common-calendar-attlist, empty + } +number-day-of-week-attlist = + attribute number:style { "short" | "long" }? +number-week-of-year = + element number:week-of-year { common-calendar-attlist, empty } +number-quarter = + element number:quarter { + number-quarter-attlist, common-calendar-attlist, empty + } +number-quarter-attlist = attribute number:style { "short" | "long" }? +number-time-style = + element number:time-style { + number-time-style-attlist, + common-data-style-attlist, + common-format-source-attlist, + style-text-properties?, + number-text?, + (any-time, number-text?)+, + style-map* + } +any-time = number-hours | number-am-pm | number-minutes | number-seconds +number-time-style-attlist = + attribute number:truncate-on-overflow { boolean }? +number-hours = element number:hours { number-hours-attlist, empty } +number-hours-attlist = attribute number:style { "short" | "long" }? +number-minutes = + element number:minutes { number-minutes-attlist, empty } +number-minutes-attlist = attribute number:style { "short" | "long" }? +number-seconds = + element number:seconds { number-seconds-attlist, empty } +number-seconds-attlist = + attribute number:style { "short" | "long" }? + & attribute number:decimal-places { integer }? +number-am-pm = element number:am-pm { empty } +number-boolean-style = + element number:boolean-style { + common-data-style-attlist, + style-text-properties?, + number-text?, + (number-boolean, number-text?)?, + style-map* + } +number-boolean = element number:boolean { empty } +number-text-style = + element number:text-style { + common-data-style-attlist, + style-text-properties?, + number-text?, + (number-text-content, number-text?)*, + style-map* + } +number-text = element number:text { text } +number-text-content = element number:text-content { empty } +common-data-style-attlist = + attribute style:name { styleName } + & attribute style:display-name { \string }? + & attribute number:language { languageCode }? + & attribute number:country { countryCode }? + & attribute number:script { scriptCode }? + & attribute number:rfc-language-tag { language }? + & attribute number:title { \string }? + & attribute style:volatile { boolean }? + & attribute number:transliteration-format { \string }? + & attribute number:transliteration-language { countryCode }? + & attribute number:transliteration-country { countryCode }? + & attribute number:transliteration-style { + "short" | "medium" | "long" + }? +common-auto-reorder-attlist = + attribute number:automatic-order { boolean }? +common-format-source-attlist = + attribute number:format-source { "fixed" | "language" }? +common-decimal-places-attlist = + attribute number:decimal-places { integer }? +common-number-attlist = + attribute number:min-integer-digits { integer }? + & attribute number:grouping { boolean }? +common-calendar-attlist = + attribute number:calendar { + "gregorian" + | "gengou" + | "ROC" + | "hanja_yoil" + | "hanja" + | "hijri" + | "jewish" + | "buddhist" + | \string + }? +style-style-content = + (attribute style:family { "text" }, + style-text-properties?) + | (attribute style:family { "paragraph" }, + style-paragraph-properties?, + style-text-properties?) + | (attribute style:family { "section" }, + style-section-properties?) + | (attribute style:family { "ruby" }, + style-ruby-properties?) + | (attribute style:family { "table" }, + style-table-properties?) + | (attribute style:family { "table-column" }, + style-table-column-properties?) + | (attribute style:family { "table-row" }, + style-table-row-properties?) + | (attribute style:family { "table-cell" }, + style-table-cell-properties?, + style-paragraph-properties?, + style-text-properties?) + | (attribute style:family { "graphic" | "presentation" }, + style-graphic-properties?, + style-paragraph-properties?, + style-text-properties?) + | (attribute style:family { "drawing-page" }, + style-drawing-page-properties?) + | (attribute style:family { "chart" }, + style-chart-properties?, + style-graphic-properties?, + style-paragraph-properties?, + style-text-properties?) +text-linenumbering-configuration = + element text:linenumbering-configuration { + text-linenumbering-configuration-attlist, + text-linenumbering-separator? + } +text-linenumbering-configuration-attlist = + attribute text:number-lines { boolean }? + & common-num-format-attlist? + & attribute text:style-name { styleNameRef }? + & attribute text:increment { nonNegativeInteger }? + & attribute text:number-position { + "left" | "right" | "inner" | "outer" + }? + & attribute text:offset { nonNegativeLength }? + & attribute text:count-empty-lines { boolean }? + & attribute text:count-in-text-boxes { boolean }? + & attribute text:restart-on-page { boolean }? +text-linenumbering-separator = + element text:linenumbering-separator { + attribute text:increment { nonNegativeInteger }?, + text + } +text-notes-configuration = + element text:notes-configuration { text-notes-configuration-content } +text-notes-configuration-content = + text-note-class + & attribute text:citation-style-name { styleNameRef }? + & attribute text:citation-body-style-name { styleNameRef }? + & attribute text:default-style-name { styleNameRef }? + & attribute text:master-page-name { styleNameRef }? + & attribute text:start-value { nonNegativeInteger }? + & common-num-format-prefix-suffix-attlist + & common-num-format-attlist? + & attribute text:start-numbering-at { + "document" | "chapter" | "page" + }? + & attribute text:footnotes-position { + "text" | "page" | "section" | "document" + }? + & element text:note-continuation-notice-forward { text }? + & element text:note-continuation-notice-backward { text }? +text-bibliography-configuration = + element text:bibliography-configuration { + text-bibliography-configuration-attlist, text-sort-key* + } +text-bibliography-configuration-attlist = + attribute text:prefix { \string }? + & attribute text:suffix { \string }? + & attribute text:numbered-entries { boolean }? + & attribute text:sort-by-position { boolean }? + & attribute fo:language { languageCode }? + & attribute fo:country { countryCode }? + & attribute fo:script { scriptCode }? + & attribute style:rfc-language-tag { language }? + & attribute text:sort-algorithm { \string }? +text-sort-key = element text:sort-key { text-sort-key-attlist, empty } +text-sort-key-attlist = + attribute text:key { + "address" + | "annote" + | "author" + | "bibliography-type" + | "booktitle" + | "chapter" + | "custom1" + | "custom2" + | "custom3" + | "custom4" + | "custom5" + | "edition" + | "editor" + | "howpublished" + | "identifier" + | "institution" + | "isbn" + | "issn" + | "journal" + | "month" + | "note" + | "number" + | "organizations" + | "pages" + | "publisher" + | "report-type" + | "school" + | "series" + | "title" + | "url" + | "volume" + | "year" + }, + attribute text:sort-ascending { boolean }? +text-list-style = + element text:list-style { + text-list-style-attr, text-list-style-content* + } +text-list-style-attr = + attribute style:name { styleName } + & attribute style:display-name { \string }? + & attribute text:consecutive-numbering { boolean }? +text-list-style-content = + element text:list-level-style-number { + text-list-level-style-attr, + text-list-level-style-number-attr, + style-list-level-properties?, + style-text-properties? + } + | element text:list-level-style-bullet { + text-list-level-style-attr, + text-list-level-style-bullet-attr, + style-list-level-properties?, + style-text-properties? + } + | element text:list-level-style-image { + text-list-level-style-attr, + text-list-level-style-image-attr, + style-list-level-properties? + } +text-list-level-style-number-attr = + attribute text:style-name { styleNameRef }? + & common-num-format-attlist + & common-num-format-prefix-suffix-attlist + & attribute text:display-levels { positiveInteger }? + & attribute text:start-value { positiveInteger }? +text-list-level-style-bullet-attr = + attribute text:style-name { styleNameRef }? + & attribute text:bullet-char { character } + & common-num-format-prefix-suffix-attlist + & attribute text:bullet-relative-size { percent }? +text-list-level-style-image-attr = + common-draw-data-attlist | office-binary-data +text-list-level-style-attr = attribute text:level { positiveInteger } +text-outline-style = + element text:outline-style { + text-outline-style-attr, text-outline-level-style+ + } +text-outline-style-attr = attribute style:name { styleName } +text-outline-level-style = + element text:outline-level-style { + text-outline-level-style-attlist, + style-list-level-properties?, + style-text-properties? + } +text-outline-level-style-attlist = + attribute text:level { positiveInteger } + & attribute text:style-name { styleNameRef }? + & common-num-format-attlist + & common-num-format-prefix-suffix-attlist + & attribute text:display-levels { positiveInteger }? + & attribute text:start-value { positiveInteger }? +style-graphic-properties = + element style:graphic-properties { + style-graphic-properties-content-strict + } +style-graphic-properties-content-strict = + style-graphic-properties-attlist, + style-graphic-fill-properties-attlist, + style-graphic-properties-elements +style-drawing-page-properties = + element style:drawing-page-properties { + style-drawing-page-properties-content-strict + } +style-drawing-page-properties-content-strict = + style-graphic-fill-properties-attlist, + style-drawing-page-properties-attlist, + style-drawing-page-properties-elements +draw-gradient = + element draw:gradient { + common-draw-gradient-attlist, draw-gradient-attlist, empty + } +common-draw-gradient-attlist = + attribute draw:name { styleName }? + & attribute draw:display-name { \string }? + & attribute draw:style { gradient-style } + & attribute draw:cx { percent }? + & attribute draw:cy { percent }? + & attribute draw:angle { angle }? + & attribute draw:border { percent }? +gradient-style = + "linear" | "axial" | "radial" | "ellipsoid" | "square" | "rectangular" +draw-gradient-attlist = + attribute draw:start-color { color }? + & attribute draw:end-color { color }? + & attribute draw:start-intensity { zeroToHundredPercent }? + & attribute draw:end-intensity { zeroToHundredPercent }? +svg-linearGradient = + element svg:linearGradient { + common-svg-gradient-attlist, + attribute svg:x1 { coordinate | percent }?, + attribute svg:y1 { coordinate | percent }?, + attribute svg:x2 { coordinate | percent }?, + attribute svg:y2 { coordinate | percent }?, + svg-stop* + } +svg-radialGradient = + element svg:radialGradient { + common-svg-gradient-attlist, + attribute svg:cx { coordinate | percent }?, + attribute svg:cy { coordinate | percent }?, + attribute svg:r { coordinate | percent }?, + attribute svg:fx { coordinate | percent }?, + attribute svg:fy { coordinate | percent }?, + svg-stop* + } +svg-stop = + element svg:stop { + attribute svg:offset { double | percent }, + attribute svg:stop-color { color }?, + attribute svg:stop-opacity { double }? + } +common-svg-gradient-attlist = + attribute svg:gradientUnits { "objectBoundingBox" }? + & attribute svg:gradientTransform { \string }? + & attribute svg:spreadMethod { "pad" | "reflect" | "repeat" }? + & attribute draw:name { styleName } + & attribute draw:display-name { \string }? +draw-hatch = element draw:hatch { draw-hatch-attlist, empty } +draw-hatch-attlist = + attribute draw:name { styleName } + & attribute draw:display-name { \string }? + & attribute draw:style { "single" | "double" | "triple" } + & attribute draw:color { color }? + & attribute draw:distance { length }? + & attribute draw:rotation { angle }? +draw-fill-image = + element draw:fill-image { + draw-fill-image-attlist, + attribute xlink:type { "simple" }, + attribute xlink:href { anyIRI }, + attribute xlink:show { "embed" }?, + attribute xlink:actuate { "onLoad" }?, + empty + } +draw-fill-image-attlist = + attribute draw:name { styleName } + & attribute draw:display-name { \string }? + & attribute svg:width { length }? + & attribute svg:height { length }? +draw-opacity = + element draw:opacity { + common-draw-gradient-attlist, draw-opacity-attlist, empty + } +draw-opacity-attlist = + attribute draw:start { zeroToHundredPercent }?, + attribute draw:end { zeroToHundredPercent }? +draw-marker = + element draw:marker { + draw-marker-attlist, + common-draw-viewbox-attlist, + common-draw-path-data-attlist, + empty + } +draw-marker-attlist = + attribute draw:name { styleName } + & attribute draw:display-name { \string }? +draw-stroke-dash = + element draw:stroke-dash { draw-stroke-dash-attlist, empty } +draw-stroke-dash-attlist = + attribute draw:name { styleName } + & attribute draw:display-name { \string }? + & attribute draw:style { "rect" | "round" }? + & attribute draw:dots1 { integer }? + & attribute draw:dots1-length { length | percent }? + & attribute draw:dots2 { integer }? + & attribute draw:dots2-length { length | percent }? + & attribute draw:distance { length | percent }? +style-presentation-page-layout = + element style:presentation-page-layout { + attribute style:name { styleName }, + attribute style:display-name { \string }?, + presentation-placeholder* + } +presentation-placeholder = + element presentation:placeholder { + attribute presentation:object { presentation-classes }, + attribute svg:x { coordinate | percent }, + attribute svg:y { coordinate | percent }, + attribute svg:width { length | percent }, + attribute svg:height { length | percent }, + empty + } +style-page-layout-properties = + element style:page-layout-properties { + style-page-layout-properties-content-strict + } +style-page-layout-properties-content-strict = + style-page-layout-properties-attlist, + style-page-layout-properties-elements +style-page-layout-properties-attlist = + attribute fo:page-width { length }? + & attribute fo:page-height { length }? + & common-num-format-attlist? + & common-num-format-prefix-suffix-attlist + & attribute style:paper-tray-name { "default" | \string }? + & attribute style:print-orientation { "portrait" | "landscape" }? + & common-horizontal-margin-attlist + & common-vertical-margin-attlist + & common-margin-attlist + & common-border-attlist + & common-border-line-width-attlist + & common-padding-attlist + & common-shadow-attlist + & common-background-color-attlist + & attribute style:register-truth-ref-style-name { styleNameRef }? + & attribute style:print { + list { + ("headers" + | "grid" + | "annotations" + | "objects" + | "charts" + | "drawings" + | "formulas" + | "zero-values")* + } + }? + & attribute style:print-page-order { "ttb" | "ltr" }? + & attribute style:first-page-number { positiveInteger | "continue" }? + & attribute style:scale-to { percent }? + & attribute style:scale-to-pages { positiveInteger }? + & attribute style:table-centering { + "horizontal" | "vertical" | "both" | "none" + }? + & attribute style:footnote-max-height { length }? + & common-writing-mode-attlist + & attribute style:layout-grid-mode { "none" | "line" | "both" }? + & attribute style:layout-grid-standard-mode { boolean }? + & attribute style:layout-grid-base-height { length }? + & attribute style:layout-grid-ruby-height { length }? + & attribute style:layout-grid-lines { positiveInteger }? + & attribute style:layout-grid-base-width { length }? + & attribute style:layout-grid-color { color }? + & attribute style:layout-grid-ruby-below { boolean }? + & attribute style:layout-grid-print { boolean }? + & attribute style:layout-grid-display { boolean }? + & attribute style:layout-grid-snap-to { boolean }? +style-page-layout-properties-elements = + style-background-image & style-columns & style-footnote-sep +style-footnote-sep = + element style:footnote-sep { style-footnote-sep-attlist, empty }? +style-footnote-sep-attlist = + attribute style:width { length }?, + attribute style:rel-width { percent }?, + attribute style:color { color }?, + attribute style:line-style { lineStyle }?, + attribute style:adjustment { "left" | "center" | "right" }?, + attribute style:distance-before-sep { length }?, + attribute style:distance-after-sep { length }? +style-header-footer-properties = + element style:header-footer-properties { + style-header-footer-properties-content-strict + } +style-header-footer-properties-content-strict = + style-header-footer-properties-attlist, + style-header-footer-properties-elements +style-header-footer-properties-attlist = + attribute svg:height { length }? + & attribute fo:min-height { length }? + & common-horizontal-margin-attlist + & common-vertical-margin-attlist + & common-margin-attlist + & common-border-attlist + & common-border-line-width-attlist + & common-padding-attlist + & common-background-color-attlist + & common-shadow-attlist + & attribute style:dynamic-spacing { boolean }? +style-header-footer-properties-elements = style-background-image +style-text-properties = + element style:text-properties { style-text-properties-content-strict } +style-text-properties-content-strict = + style-text-properties-attlist, style-text-properties-elements +style-text-properties-elements = empty +style-text-properties-attlist = + attribute fo:font-variant { fontVariant }? + & attribute fo:text-transform { + "none" | "lowercase" | "uppercase" | "capitalize" + }? + & attribute fo:color { color }? + & attribute style:use-window-font-color { boolean }? + & attribute style:text-outline { boolean }? + & attribute style:text-line-through-type { lineType }? + & attribute style:text-line-through-style { lineStyle }? + & attribute style:text-line-through-width { lineWidth }? + & attribute style:text-line-through-color { "font-color" | color }? + & attribute style:text-line-through-text { \string }? + & attribute style:text-line-through-text-style { styleNameRef }? + & attribute style:text-position { + list { (percent | "super" | "sub"), percent? } + }? + & attribute style:font-name { \string }? + & attribute style:font-name-asian { \string }? + & attribute style:font-name-complex { \string }? + & attribute fo:font-family { \string }? + & attribute style:font-family-asian { \string }? + & attribute style:font-family-complex { \string }? + & attribute style:font-family-generic { fontFamilyGeneric }? + & attribute style:font-family-generic-asian { fontFamilyGeneric }? + & attribute style:font-family-generic-complex { fontFamilyGeneric }? + & attribute style:font-style-name { \string }? + & attribute style:font-style-name-asian { \string }? + & attribute style:font-style-name-complex { \string }? + & attribute style:font-pitch { fontPitch }? + & attribute style:font-pitch-asian { fontPitch }? + & attribute style:font-pitch-complex { fontPitch }? + & attribute style:font-charset { textEncoding }? + & attribute style:font-charset-asian { textEncoding }? + & attribute style:font-charset-complex { textEncoding }? + & attribute fo:font-size { positiveLength | percent }? + & attribute style:font-size-asian { positiveLength | percent }? + & attribute style:font-size-complex { positiveLength | percent }? + & attribute style:font-size-rel { length }? + & attribute style:font-size-rel-asian { length }? + & attribute style:font-size-rel-complex { length }? + & attribute style:script-type { + "latin" | "asian" | "complex" | "ignore" + }? + & attribute fo:letter-spacing { length | "normal" }? + & attribute fo:language { languageCode }? + & attribute style:language-asian { languageCode }? + & attribute style:language-complex { languageCode }? + & attribute fo:country { countryCode }? + & attribute style:country-asian { countryCode }? + & attribute style:country-complex { countryCode }? + & attribute fo:script { scriptCode }? + & attribute style:script-asian { scriptCode }? + & attribute style:script-complex { scriptCode }? + & attribute style:rfc-language-tag { language }? + & attribute style:rfc-language-tag-asian { language }? + & attribute style:rfc-language-tag-complex { language }? + & attribute fo:font-style { fontStyle }? + & attribute style:font-style-asian { fontStyle }? + & attribute style:font-style-complex { fontStyle }? + & attribute style:font-relief { "none" | "embossed" | "engraved" }? + & attribute fo:text-shadow { shadowType }? + & attribute style:text-underline-type { lineType }? + & attribute style:text-underline-style { lineStyle }? + & attribute style:text-underline-width { lineWidth }? + & attribute style:text-underline-color { "font-color" | color }? + & attribute style:text-overline-type { lineType }? + & attribute style:text-overline-style { lineStyle }? + & attribute style:text-overline-width { lineWidth }? + & attribute style:text-overline-color { "font-color" | color }? + & attribute style:text-overline-mode { lineMode }? + & attribute fo:font-weight { fontWeight }? + & attribute style:font-weight-asian { fontWeight }? + & attribute style:font-weight-complex { fontWeight }? + & attribute style:text-underline-mode { lineMode }? + & attribute style:text-line-through-mode { lineMode }? + & attribute style:letter-kerning { boolean }? + & attribute style:text-blinking { boolean }? + & common-background-color-attlist + & attribute style:text-combine { "none" | "letters" | "lines" }? + & attribute style:text-combine-start-char { character }? + & attribute style:text-combine-end-char { character }? + & attribute style:text-emphasize { + "none" + | list { + ("none" | "accent" | "dot" | "circle" | "disc"), + ("above" | "below") + } + }? + & attribute style:text-scale { percent }? + & attribute style:text-rotation-angle { angle }? + & attribute style:text-rotation-scale { "fixed" | "line-height" }? + & attribute fo:hyphenate { boolean }? + & attribute fo:hyphenation-remain-char-count { positiveInteger }? + & attribute fo:hyphenation-push-char-count { positiveInteger }? + & (attribute text:display { "true" } + | attribute text:display { "none" } + | (attribute text:display { "condition" }, + attribute text:condition { "none" }) + | empty) +fontVariant = "normal" | "small-caps" +fontFamilyGeneric = + "roman" | "swiss" | "modern" | "decorative" | "script" | "system" +fontPitch = "fixed" | "variable" +textEncoding = xsd:string { pattern = "[A-Za-z][A-Za-z0-9._\-]*" } +fontStyle = "normal" | "italic" | "oblique" +shadowType = "none" | \string +lineType = "none" | "single" | "double" +lineStyle = + "none" + | "solid" + | "dotted" + | "dash" + | "long-dash" + | "dot-dash" + | "dot-dot-dash" + | "wave" +lineWidth = + "auto" + | "normal" + | "bold" + | "thin" + | "medium" + | "thick" + | positiveInteger + | percent + | positiveLength +fontWeight = + "normal" + | "bold" + | "100" + | "200" + | "300" + | "400" + | "500" + | "600" + | "700" + | "800" + | "900" +lineMode = "continuous" | "skip-white-space" +style-paragraph-properties = + element style:paragraph-properties { + style-paragraph-properties-content-strict + } +style-paragraph-properties-content-strict = + style-paragraph-properties-attlist, + style-paragraph-properties-elements +style-paragraph-properties-attlist = + attribute fo:line-height { "normal" | nonNegativeLength | percent }? + & attribute style:line-height-at-least { nonNegativeLength }? + & attribute style:line-spacing { length }? + & attribute style:font-independent-line-spacing { boolean }? + & common-text-align + & attribute fo:text-align-last { "start" | "center" | "justify" }? + & attribute style:justify-single-word { boolean }? + & attribute fo:keep-together { "auto" | "always" }? + & attribute fo:widows { nonNegativeInteger }? + & attribute fo:orphans { nonNegativeInteger }? + & attribute style:tab-stop-distance { nonNegativeLength }? + & attribute fo:hyphenation-keep { "auto" | "page" }? + & attribute fo:hyphenation-ladder-count { + "no-limit" | positiveInteger + }? + & attribute style:register-true { boolean }? + & common-horizontal-margin-attlist + & attribute fo:text-indent { length | percent }? + & attribute style:auto-text-indent { boolean }? + & common-vertical-margin-attlist + & common-margin-attlist + & common-break-attlist + & common-background-color-attlist + & common-border-attlist + & common-border-line-width-attlist + & attribute style:join-border { boolean }? + & common-padding-attlist + & common-shadow-attlist + & common-keep-with-next-attlist + & attribute text:number-lines { boolean }? + & attribute text:line-number { nonNegativeInteger }? + & attribute style:text-autospace { "none" | "ideograph-alpha" }? + & attribute style:punctuation-wrap { "simple" | "hanging" }? + & attribute style:line-break { "normal" | "strict" }? + & attribute style:vertical-align { + "top" | "middle" | "bottom" | "auto" | "baseline" + }? + & common-writing-mode-attlist + & attribute style:writing-mode-automatic { boolean }? + & attribute style:snap-to-layout-grid { boolean }? + & common-page-number-attlist + & common-background-transparency-attlist +common-text-align = + attribute fo:text-align { + "start" | "end" | "left" | "right" | "center" | "justify" + }? +style-paragraph-properties-elements = + style-tab-stops & style-drop-cap & style-background-image +style-tab-stops = element style:tab-stops { style-tab-stop* }? +style-tab-stop = + element style:tab-stop { style-tab-stop-attlist, empty } +style-tab-stop-attlist = + attribute style:position { length } + & (attribute style:type { "left" | "center" | "right" }? + | (attribute style:type { "char" }, + style-tab-stop-char-attlist)) + & attribute style:leader-type { lineType }? + & attribute style:leader-style { lineStyle }? + & attribute style:leader-width { lineWidth }? + & attribute style:leader-color { "font-color" | color }? + & attribute style:leader-text { character }? + & attribute style:leader-text-style { styleNameRef }? +style-tab-stop-char-attlist = attribute style:char { character } +style-drop-cap = + element style:drop-cap { style-drop-cap-attlist, empty }? +style-drop-cap-attlist = + attribute style:length { "word" | positiveInteger }? + & attribute style:lines { positiveInteger }? + & attribute style:distance { length }? + & attribute style:style-name { styleNameRef }? +common-horizontal-margin-attlist = + attribute fo:margin-left { length | percent }?, + attribute fo:margin-right { length | percent }? +common-vertical-margin-attlist = + attribute fo:margin-top { nonNegativeLength | percent }?, + attribute fo:margin-bottom { nonNegativeLength | percent }? +common-margin-attlist = + attribute fo:margin { nonNegativeLength | percent }? +common-break-attlist = + attribute fo:break-before { "auto" | "column" | "page" }?, + attribute fo:break-after { "auto" | "column" | "page" }? +common-background-color-attlist = + attribute fo:background-color { "transparent" | color }? +style-background-image = + element style:background-image { + style-background-image-attlist, + (common-draw-data-attlist | office-binary-data | empty) + }? +style-background-image-attlist = + attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? + & attribute style:position { + "left" + | "center" + | "right" + | "top" + | "bottom" + | list { horiBackPos, vertBackPos } + | list { vertBackPos, horiBackPos } + }? + & attribute style:filter-name { \string }? + & attribute draw:opacity { zeroToHundredPercent }? +horiBackPos = "left" | "center" | "right" +vertBackPos = "top" | "center" | "bottom" +common-border-attlist = + attribute fo:border { \string }?, + attribute fo:border-top { \string }?, + attribute fo:border-bottom { \string }?, + attribute fo:border-left { \string }?, + attribute fo:border-right { \string }? +common-border-line-width-attlist = + attribute style:border-line-width { borderWidths }?, + attribute style:border-line-width-top { borderWidths }?, + attribute style:border-line-width-bottom { borderWidths }?, + attribute style:border-line-width-left { borderWidths }?, + attribute style:border-line-width-right { borderWidths }? +borderWidths = list { positiveLength, positiveLength, positiveLength } +common-padding-attlist = + attribute fo:padding { nonNegativeLength }?, + attribute fo:padding-top { nonNegativeLength }?, + attribute fo:padding-bottom { nonNegativeLength }?, + attribute fo:padding-left { nonNegativeLength }?, + attribute fo:padding-right { nonNegativeLength }? +common-shadow-attlist = attribute style:shadow { shadowType }? +common-keep-with-next-attlist = + attribute fo:keep-with-next { "auto" | "always" }? +common-writing-mode-attlist = + attribute style:writing-mode { + "lr-tb" | "rl-tb" | "tb-rl" | "tb-lr" | "lr" | "rl" | "tb" | "page" + }? +common-page-number-attlist = + attribute style:page-number { positiveInteger | "auto" }? +common-background-transparency-attlist = + attribute style:background-transparency { zeroToHundredPercent }? +style-ruby-properties = + element style:ruby-properties { style-ruby-properties-content-strict } +style-ruby-properties-content-strict = + style-ruby-properties-attlist, style-ruby-properties-elements +style-ruby-properties-elements = empty +style-ruby-properties-attlist = + attribute style:ruby-position { "above" | "below" }? + & attribute style:ruby-align { + "left" + | "center" + | "right" + | "distribute-letter" + | "distribute-space" + }? +style-section-properties = + element style:section-properties { + style-section-properties-content-strict + } +style-section-properties-content-strict = + style-section-properties-attlist, style-section-properties-elements +style-section-properties-attlist = + common-background-color-attlist + & common-horizontal-margin-attlist + & attribute style:protect { boolean }? + & common-editable-attlist + & attribute text:dont-balance-text-columns { boolean }? + & common-writing-mode-attlist +style-section-properties-elements = + style-background-image & style-columns & text-notes-configuration* +style-columns = + element style:columns { + style-columns-attlist, style-column-sep?, style-column* + }? +style-columns-attlist = + attribute fo:column-count { positiveInteger } + & attribute fo:column-gap { length }? +style-column = element style:column { style-column-attlist } +style-column-attlist = + attribute style:rel-width { relativeLength } + & attribute fo:start-indent { length }? + & attribute fo:end-indent { length }? + & attribute fo:space-before { length }? + & attribute fo:space-after { length }? +style-column-sep = element style:column-sep { style-column-sep-attlist } +style-column-sep-attlist = + attribute style:style { + "none" | "solid" | "dotted" | "dashed" | "dot-dashed" + }? + & attribute style:width { length } + & attribute style:height { zeroToHundredPercent }? + & attribute style:vertical-align { "top" | "middle" | "bottom" }? + & attribute style:color { color }? +style-table-properties = + element style:table-properties { + style-table-properties-content-strict + } +style-table-properties-content-strict = + style-table-properties-attlist, style-table-properties-elements +style-table-properties-attlist = + attribute style:width { positiveLength }? + & attribute style:rel-width { percent }? + & attribute table:align { "left" | "center" | "right" | "margins" }? + & common-horizontal-margin-attlist + & common-vertical-margin-attlist + & common-margin-attlist + & common-page-number-attlist + & common-break-attlist + & common-background-color-attlist + & common-shadow-attlist + & common-keep-with-next-attlist + & attribute style:may-break-between-rows { boolean }? + & attribute table:border-model { "collapsing" | "separating" }? + & common-writing-mode-attlist + & attribute table:display { boolean }? +style-table-properties-elements = style-background-image +style-table-column-properties = + element style:table-column-properties { + style-table-column-properties-content-strict + } +style-table-column-properties-content-strict = + style-table-column-properties-attlist, + style-table-column-properties-elements +style-table-column-properties-elements = empty +style-table-column-properties-attlist = + attribute style:column-width { positiveLength }? + & attribute style:rel-column-width { relativeLength }? + & attribute style:use-optimal-column-width { boolean }? + & common-break-attlist +style-table-row-properties = + element style:table-row-properties { + style-table-row-properties-content-strict + } +style-table-row-properties-content-strict = + style-table-row-properties-attlist, + style-table-row-properties-elements +style-table-row-properties-attlist = + attribute style:row-height { positiveLength }? + & attribute style:min-row-height { nonNegativeLength }? + & attribute style:use-optimal-row-height { boolean }? + & common-background-color-attlist + & common-break-attlist + & attribute fo:keep-together { "auto" | "always" }? +style-table-row-properties-elements = style-background-image +style-table-cell-properties = + element style:table-cell-properties { + style-table-cell-properties-content-strict + } +style-table-cell-properties-content-strict = + style-table-cell-properties-attlist, + style-table-cell-properties-elements +style-table-cell-properties-attlist = + attribute style:vertical-align { + "top" | "middle" | "bottom" | "automatic" + }? + & attribute style:text-align-source { "fix" | "value-type" }? + & common-style-direction-attlist + & attribute style:glyph-orientation-vertical { + "auto" | "0" | "0deg" | "0rad" | "0grad" + }? + & common-writing-mode-attlist + & common-shadow-attlist + & common-background-color-attlist + & common-border-attlist + & attribute style:diagonal-tl-br { \string }? + & attribute style:diagonal-tl-br-widths { borderWidths }? + & attribute style:diagonal-bl-tr { \string }? + & attribute style:diagonal-bl-tr-widths { borderWidths }? + & common-border-line-width-attlist + & common-padding-attlist + & attribute fo:wrap-option { "no-wrap" | "wrap" }? + & common-rotation-angle-attlist + & attribute style:rotation-align { + "none" | "bottom" | "top" | "center" + }? + & attribute style:cell-protect { + "none" + | "hidden-and-protected" + | list { ("protected" | "formula-hidden")+ } + }? + & attribute style:print-content { boolean }? + & attribute style:decimal-places { nonNegativeInteger }? + & attribute style:repeat-content { boolean }? + & attribute style:shrink-to-fit { boolean }? +common-style-direction-attlist = + attribute style:direction { "ltr" | "ttb" }? +style-table-cell-properties-elements = style-background-image +common-rotation-angle-attlist = + attribute style:rotation-angle { angle }? +style-list-level-properties = + element style:list-level-properties { + style-list-level-properties-content-strict + } +style-list-level-properties-content-strict = + style-list-level-properties-attlist, + style-list-level-properties-elements +style-list-level-properties-attlist = + common-text-align + & attribute text:space-before { length }? + & attribute text:min-label-width { nonNegativeLength }? + & attribute text:min-label-distance { nonNegativeLength }? + & attribute style:font-name { \string }? + & attribute fo:width { positiveLength }? + & attribute fo:height { positiveLength }? + & common-vertical-rel-attlist + & common-vertical-pos-attlist + & attribute text:list-level-position-and-space-mode { + "label-width-and-position" | "label-alignment" + }? +style-list-level-properties-elements = style-list-level-label-alignment +style-list-level-label-alignment = + element style:list-level-label-alignment { + style-list-level-label-alignment-attlist, empty + }? +style-list-level-label-alignment-attlist = + attribute text:label-followed-by { "listtab" | "space" | "nothing" } + & attribute text:list-tab-stop-position { length }? + & attribute fo:text-indent { length }? + & attribute fo:margin-left { length }? +style-graphic-properties-attlist = + attribute draw:stroke { "none" | "dash" | "solid" }? + & attribute draw:stroke-dash { styleNameRef }? + & attribute draw:stroke-dash-names { styleNameRefs }? + & attribute svg:stroke-width { length }? + & attribute svg:stroke-color { color }? + & attribute draw:marker-start { styleNameRef }? + & attribute draw:marker-end { styleNameRef }? + & attribute draw:marker-start-width { length }? + & attribute draw:marker-end-width { length }? + & attribute draw:marker-start-center { boolean }? + & attribute draw:marker-end-center { boolean }? + & attribute svg:stroke-opacity { + xsd:double { minInclusive = "0" maxInclusive = "1" } + | zeroToHundredPercent + }? + & attribute draw:stroke-linejoin { + "miter" | "round" | "bevel" | "middle" | "none" + }? + & attribute svg:stroke-linecap { "butt" | "square" | "round" }? + & attribute draw:symbol-color { color }? + & attribute text:animation { + "none" | "scroll" | "alternate" | "slide" + }? + & attribute text:animation-direction { + "left" | "right" | "up" | "down" + }? + & attribute text:animation-start-inside { boolean }? + & attribute text:animation-stop-inside { boolean }? + & attribute text:animation-repeat { nonNegativeInteger }? + & attribute text:animation-delay { duration }? + & attribute text:animation-steps { length }? + & attribute draw:auto-grow-width { boolean }? + & attribute draw:auto-grow-height { boolean }? + & attribute draw:fit-to-size { boolean }? + & attribute draw:fit-to-contour { boolean }? + & attribute draw:textarea-vertical-align { + "top" | "middle" | "bottom" | "justify" + }? + & attribute draw:textarea-horizontal-align { + "left" | "center" | "right" | "justify" + }? + & attribute fo:wrap-option { "no-wrap" | "wrap" }? + & attribute style:shrink-to-fit { boolean }? + & attribute draw:color-mode { + "greyscale" | "mono" | "watermark" | "standard" + }? + & attribute draw:color-inversion { boolean }? + & attribute draw:luminance { zeroToHundredPercent }? + & attribute draw:contrast { percent }? + & attribute draw:gamma { percent }? + & attribute draw:red { signedZeroToHundredPercent }? + & attribute draw:green { signedZeroToHundredPercent }? + & attribute draw:blue { signedZeroToHundredPercent }? + & attribute draw:image-opacity { zeroToHundredPercent }? + & attribute draw:shadow { "visible" | "hidden" }? + & attribute draw:shadow-offset-x { length }? + & attribute draw:shadow-offset-y { length }? + & attribute draw:shadow-color { color }? + & attribute draw:shadow-opacity { zeroToHundredPercent }? + & attribute draw:start-line-spacing-horizontal { distance }? + & attribute draw:start-line-spacing-vertical { distance }? + & attribute draw:end-line-spacing-horizontal { distance }? + & attribute draw:end-line-spacing-vertical { distance }? + & attribute draw:line-distance { distance }? + & attribute draw:guide-overhang { length }? + & attribute draw:guide-distance { distance }? + & attribute draw:start-guide { length }? + & attribute draw:end-guide { length }? + & attribute draw:placing { "below" | "above" }? + & attribute draw:parallel { boolean }? + & attribute draw:measure-align { + "automatic" | "left-outside" | "inside" | "right-outside" + }? + & attribute draw:measure-vertical-align { + "automatic" | "above" | "below" | "center" + }? + & attribute draw:unit { + "automatic" + | "mm" + | "cm" + | "m" + | "km" + | "pt" + | "pc" + | "inch" + | "ft" + | "mi" + }? + & attribute draw:show-unit { boolean }? + & attribute draw:decimal-places { nonNegativeInteger }? + & attribute draw:caption-type { + "straight-line" | "angled-line" | "angled-connector-line" + }? + & attribute draw:caption-angle-type { "fixed" | "free" }? + & attribute draw:caption-angle { angle }? + & attribute draw:caption-gap { distance }? + & attribute draw:caption-escape-direction { + "horizontal" | "vertical" | "auto" + }? + & attribute draw:caption-escape { length | percent }? + & attribute draw:caption-line-length { length }? + & attribute draw:caption-fit-line-length { boolean }? + & attribute dr3d:horizontal-segments { nonNegativeInteger }? + & attribute dr3d:vertical-segments { nonNegativeInteger }? + & attribute dr3d:edge-rounding { percent }? + & attribute dr3d:edge-rounding-mode { "correct" | "attractive" }? + & attribute dr3d:back-scale { percent }? + & attribute dr3d:depth { length }? + & attribute dr3d:backface-culling { "enabled" | "disabled" }? + & attribute dr3d:end-angle { angle }? + & attribute dr3d:close-front { boolean }? + & attribute dr3d:close-back { boolean }? + & attribute dr3d:lighting-mode { "standard" | "double-sided" }? + & attribute dr3d:normals-kind { "object" | "flat" | "sphere" }? + & attribute dr3d:normals-direction { "normal" | "inverse" }? + & attribute dr3d:texture-generation-mode-x { + "object" | "parallel" | "sphere" + }? + & attribute dr3d:texture-generation-mode-y { + "object" | "parallel" | "sphere" + }? + & attribute dr3d:texture-kind { "luminance" | "intensity" | "color" }? + & attribute dr3d:texture-filter { "enabled" | "disabled" }? + & attribute dr3d:texture-mode { "replace" | "modulate" | "blend" }? + & attribute dr3d:ambient-color { color }? + & attribute dr3d:emissive-color { color }? + & attribute dr3d:specular-color { color }? + & attribute dr3d:diffuse-color { color }? + & attribute dr3d:shininess { percent }? + & attribute dr3d:shadow { "visible" | "hidden" }? + & common-draw-rel-size-attlist + & attribute fo:min-width { length | percent }? + & attribute fo:min-height { length | percent }? + & attribute fo:max-height { length | percent }? + & attribute fo:max-width { length | percent }? + & common-horizontal-margin-attlist + & common-vertical-margin-attlist + & common-margin-attlist + & attribute style:print-content { boolean }? + & attribute style:protect { + "none" + | list { ("content" | "position" | "size")+ } + }? + & attribute style:horizontal-pos { + "left" + | "center" + | "right" + | "from-left" + | "inside" + | "outside" + | "from-inside" + }? + & attribute svg:x { coordinate }? + & attribute style:horizontal-rel { + "page" + | "page-content" + | "page-start-margin" + | "page-end-margin" + | "frame" + | "frame-content" + | "frame-start-margin" + | "frame-end-margin" + | "paragraph" + | "paragraph-content" + | "paragraph-start-margin" + | "paragraph-end-margin" + | "char" + }? + & common-vertical-pos-attlist + & common-vertical-rel-attlist + & common-text-anchor-attlist + & common-border-attlist + & common-border-line-width-attlist + & common-padding-attlist + & common-shadow-attlist + & common-background-color-attlist + & common-background-transparency-attlist + & common-editable-attlist + & attribute style:wrap { + "none" + | "left" + | "right" + | "parallel" + | "dynamic" + | "run-through" + | "biggest" + }? + & attribute style:wrap-dynamic-threshold { nonNegativeLength }? + & attribute style:number-wrapped-paragraphs { + "no-limit" | positiveInteger + }? + & attribute style:wrap-contour { boolean }? + & attribute style:wrap-contour-mode { "full" | "outside" }? + & attribute style:run-through { "foreground" | "background" }? + & attribute style:flow-with-text { boolean }? + & attribute style:overflow-behavior { + "clip" | "auto-create-new-frame" + }? + & attribute style:mirror { + "none" + | "vertical" + | horizontal-mirror + | list { "vertical", horizontal-mirror } + | list { horizontal-mirror, "vertical" } + }? + & attribute fo:clip { "auto" | clipShape }? + & attribute draw:wrap-influence-on-position { + "iterative" | "once-concurrent" | "once-successive" + }? + & common-writing-mode-attlist + & attribute draw:frame-display-scrollbar { boolean }? + & attribute draw:frame-display-border { boolean }? + & attribute draw:frame-margin-horizontal { nonNegativePixelLength }? + & attribute draw:frame-margin-vertical { nonNegativePixelLength }? + & attribute draw:visible-area-left { nonNegativeLength }? + & attribute draw:visible-area-top { nonNegativeLength }? + & attribute draw:visible-area-width { positiveLength }? + & attribute draw:visible-area-height { positiveLength }? + & attribute draw:draw-aspect { + "content" | "thumbnail" | "icon" | "print-view" + }? + & attribute draw:ole-draw-aspect { nonNegativeInteger }? +style-graphic-fill-properties-attlist = + attribute draw:fill { + "none" | "solid" | "bitmap" | "gradient" | "hatch" + }? + & attribute draw:fill-color { color }? + & attribute draw:secondary-fill-color { color }? + & attribute draw:fill-gradient-name { styleNameRef }? + & attribute draw:gradient-step-count { nonNegativeInteger }? + & attribute draw:fill-hatch-name { styleNameRef }? + & attribute draw:fill-hatch-solid { boolean }? + & attribute draw:fill-image-name { styleNameRef }? + & attribute style:repeat { "no-repeat" | "repeat" | "stretch" }? + & attribute draw:fill-image-width { length | percent }? + & attribute draw:fill-image-height { length | percent }? + & attribute draw:fill-image-ref-point-x { percent }? + & attribute draw:fill-image-ref-point-y { percent }? + & attribute draw:fill-image-ref-point { + "top-left" + | "top" + | "top-right" + | "left" + | "center" + | "right" + | "bottom-left" + | "bottom" + | "bottom-right" + }? + & attribute draw:tile-repeat-offset { + list { zeroToHundredPercent, ("horizontal" | "vertical") } + }? + & attribute draw:opacity { zeroToHundredPercent }? + & attribute draw:opacity-name { styleNameRef }? + & attribute svg:fill-rule { "nonzero" | "evenodd" }? +style-graphic-properties-elements = + text-list-style? & style-background-image & style-columns +common-vertical-pos-attlist = + attribute style:vertical-pos { + "top" | "middle" | "bottom" | "from-top" | "below" + }?, + attribute svg:y { coordinate }? +common-vertical-rel-attlist = + attribute style:vertical-rel { + "page" + | "page-content" + | "frame" + | "frame-content" + | "paragraph" + | "paragraph-content" + | "char" + | "line" + | "baseline" + | "text" + }? +common-editable-attlist = attribute style:editable { boolean }? +horizontal-mirror = + "horizontal" | "horizontal-on-odd" | "horizontal-on-even" +clipShape = + xsd:string { + pattern = + "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}[ ]*\)" + } +nonNegativePixelLength = + xsd:string { pattern = "([0-9]+(\.[0-9]*)?|\.[0-9]+)(px)" } +style-chart-properties = + element style:chart-properties { + style-chart-properties-content-strict + } +style-chart-properties-content-strict = + style-chart-properties-attlist, style-chart-properties-elements +style-chart-properties-elements = empty +style-chart-properties-attlist = + attribute chart:scale-text { boolean }? + & attribute chart:three-dimensional { boolean }? + & attribute chart:deep { boolean }? + & attribute chart:right-angled-axes { boolean }? + & (attribute chart:symbol-type { "none" } + | attribute chart:symbol-type { "automatic" } + | (attribute chart:symbol-type { "named-symbol" }, + attribute chart:symbol-name { + "square" + | "diamond" + | "arrow-down" + | "arrow-up" + | "arrow-right" + | "arrow-left" + | "bow-tie" + | "hourglass" + | "circle" + | "star" + | "x" + | "plus" + | "asterisk" + | "horizontal-bar" + | "vertical-bar" + }) + | (attribute chart:symbol-type { "image" }, + element chart:symbol-image { + attribute xlink:href { anyIRI } + }) + | empty) + & attribute chart:symbol-width { nonNegativeLength }? + & attribute chart:symbol-height { nonNegativeLength }? + & attribute chart:sort-by-x-values { boolean }? + & attribute chart:vertical { boolean }? + & attribute chart:connect-bars { boolean }? + & attribute chart:gap-width { integer }? + & attribute chart:overlap { integer }? + & attribute chart:group-bars-per-axis { boolean }? + & attribute chart:japanese-candle-stick { boolean }? + & attribute chart:interpolation { + "none" | "cubic-spline" | "b-spline" + }? + & attribute chart:spline-order { positiveInteger }? + & attribute chart:spline-resolution { positiveInteger }? + & attribute chart:pie-offset { nonNegativeInteger }? + & attribute chart:angle-offset { angle }? + & attribute chart:hole-size { percent }? + & attribute chart:lines { boolean }? + & attribute chart:solid-type { + "cuboid" | "cylinder" | "cone" | "pyramid" + }? + & attribute chart:stacked { boolean }? + & attribute chart:percentage { boolean }? + & attribute chart:treat-empty-cells { + "use-zero" | "leave-gap" | "ignore" + }? + & attribute chart:link-data-style-to-source { boolean }? + & attribute chart:logarithmic { boolean }? + & attribute chart:maximum { double }? + & attribute chart:minimum { double }? + & attribute chart:origin { double }? + & attribute chart:interval-major { double }? + & attribute chart:interval-minor-divisor { positiveInteger }? + & attribute chart:tick-marks-major-inner { boolean }? + & attribute chart:tick-marks-major-outer { boolean }? + & attribute chart:tick-marks-minor-inner { boolean }? + & attribute chart:tick-marks-minor-outer { boolean }? + & attribute chart:reverse-direction { boolean }? + & attribute chart:display-label { boolean }? + & attribute chart:text-overlap { boolean }? + & attribute text:line-break { boolean }? + & attribute chart:label-arrangement { + "side-by-side" | "stagger-even" | "stagger-odd" + }? + & common-style-direction-attlist + & common-rotation-angle-attlist + & attribute chart:data-label-number { + "none" | "value" | "percentage" | "value-and-percentage" + }? + & attribute chart:data-label-text { boolean }? + & attribute chart:data-label-symbol { boolean }? + & element chart:label-separator { text-p }? + & attribute chart:label-position { labelPositions }? + & attribute chart:label-position-negative { labelPositions }? + & attribute chart:visible { boolean }? + & attribute chart:auto-position { boolean }? + & attribute chart:auto-size { boolean }? + & attribute chart:mean-value { boolean }? + & attribute chart:error-category { + "none" + | "variance" + | "standard-deviation" + | "percentage" + | "error-margin" + | "constant" + | "standard-error" + | "cell-range" + }? + & attribute chart:error-percentage { double }? + & attribute chart:error-margin { double }? + & attribute chart:error-lower-limit { double }? + & attribute chart:error-upper-limit { double }? + & attribute chart:error-upper-indicator { boolean }? + & attribute chart:error-lower-indicator { boolean }? + & attribute chart:error-lower-range { cellRangeAddressList }? + & attribute chart:error-upper-range { cellRangeAddressList }? + & attribute chart:series-source { "columns" | "rows" }? + & attribute chart:regression-type { + "none" | "linear" | "logarithmic" | "exponential" | "power" + }? + & attribute chart:axis-position { "start" | "end" | double }? + & attribute chart:axis-label-position { + "near-axis" + | "near-axis-other-side" + | "outside-start" + | "outside-end" + }? + & attribute chart:tick-mark-position { + "at-labels" | "at-axis" | "at-labels-and-axis" + }? + & attribute chart:include-hidden-cells { boolean }? +labelPositions = + "avoid-overlap" + | "center" + | "top" + | "top-right" + | "right" + | "bottom-right" + | "bottom" + | "bottom-left" + | "left" + | "top-left" + | "inside" + | "outside" + | "near-origin" +style-drawing-page-properties-attlist = + attribute presentation:transition-type { + "manual" | "automatic" | "semi-automatic" + }? + & attribute presentation:transition-style { + "none" + | "fade-from-left" + | "fade-from-top" + | "fade-from-right" + | "fade-from-bottom" + | "fade-from-upperleft" + | "fade-from-upperright" + | "fade-from-lowerleft" + | "fade-from-lowerright" + | "move-from-left" + | "move-from-top" + | "move-from-right" + | "move-from-bottom" + | "move-from-upperleft" + | "move-from-upperright" + | "move-from-lowerleft" + | "move-from-lowerright" + | "uncover-to-left" + | "uncover-to-top" + | "uncover-to-right" + | "uncover-to-bottom" + | "uncover-to-upperleft" + | "uncover-to-upperright" + | "uncover-to-lowerleft" + | "uncover-to-lowerright" + | "fade-to-center" + | "fade-from-center" + | "vertical-stripes" + | "horizontal-stripes" + | "clockwise" + | "counterclockwise" + | "open-vertical" + | "open-horizontal" + | "close-vertical" + | "close-horizontal" + | "wavyline-from-left" + | "wavyline-from-top" + | "wavyline-from-right" + | "wavyline-from-bottom" + | "spiralin-left" + | "spiralin-right" + | "spiralout-left" + | "spiralout-right" + | "roll-from-top" + | "roll-from-left" + | "roll-from-right" + | "roll-from-bottom" + | "stretch-from-left" + | "stretch-from-top" + | "stretch-from-right" + | "stretch-from-bottom" + | "vertical-lines" + | "horizontal-lines" + | "dissolve" + | "random" + | "vertical-checkerboard" + | "horizontal-checkerboard" + | "interlocking-horizontal-left" + | "interlocking-horizontal-right" + | "interlocking-vertical-top" + | "interlocking-vertical-bottom" + | "fly-away" + | "open" + | "close" + | "melt" + }? + & attribute presentation:transition-speed { presentationSpeeds }? + & attribute smil:type { \string }? + & attribute smil:subtype { \string }? + & attribute smil:direction { "forward" | "reverse" }? + & attribute smil:fadeColor { color }? + & attribute presentation:duration { duration }? + & attribute presentation:visibility { "visible" | "hidden" }? + & attribute draw:background-size { "full" | "border" }? + & attribute presentation:background-objects-visible { boolean }? + & attribute presentation:background-visible { boolean }? + & attribute presentation:display-header { boolean }? + & attribute presentation:display-footer { boolean }? + & attribute presentation:display-page-number { boolean }? + & attribute presentation:display-date-time { boolean }? +style-drawing-page-properties-elements = presentation-sound? +\string = xsd:string +date = xsd:date +time = xsd:time +dateTime = xsd:dateTime +duration = xsd:duration +integer = xsd:integer +nonNegativeInteger = xsd:nonNegativeInteger +positiveInteger = xsd:positiveInteger +double = xsd:double +anyURI = xsd:anyURI +base64Binary = xsd:base64Binary +ID = xsd:ID +IDREF = xsd:IDREF +IDREFS = xsd:IDREFS +NCName = xsd:NCName +boolean = "true" | "false" +dateOrDateTime = xsd:date | xsd:dateTime +timeOrDateTime = xsd:time | xsd:dateTime +language = xsd:language +countryCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" } +languageCode = xsd:token { pattern = "[A-Za-z]{1,8}" } +scriptCode = xsd:token { pattern = "[A-Za-z0-9]{1,8}" } +character = xsd:string { length = "1" } +length = + xsd:string { + pattern = + "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))" + } +nonNegativeLength = + xsd:string { + pattern = + "([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px))" + } +positiveLength = + xsd:string { + pattern = + "([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))" + } +percent = xsd:string { pattern = "-?([0-9]+(\.[0-9]*)?|\.[0-9]+)%" } +zeroToHundredPercent = + xsd:string { + pattern = "([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%" + } +signedZeroToHundredPercent = + xsd:string { + pattern = "-?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)%" + } +relativeLength = xsd:string { pattern = "[0-9]+\*" } +coordinate = length +distance = length +color = xsd:string { pattern = "#[0-9a-fA-F]{6}" } +angle = xsd:string +CURIE = + xsd:string { pattern = "(([\i-[:]][\c-[:]]*)?:)?.+" minLength = "1" } +CURIEs = list { CURIE+ } +SafeCURIE = + xsd:string { + pattern = "\[(([\i-[:]][\c-[:]]*)?:)?.+\]" + minLength = "3" + } +URIorSafeCURIE = anyURI | SafeCURIE +styleName = xsd:NCName +styleNameRef = xsd:NCName | empty +styleNameRefs = list { xsd:NCName* } +variableName = xsd:string +targetFrameName = "_self" | "_blank" | "_parent" | "_top" | \string +valueType = + "float" + | "time" + | "date" + | "percentage" + | "currency" + | "boolean" + | "string" +points = + xsd:string { pattern = "-?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)*" } +pathData = xsd:string +vector3D = + xsd:string { + pattern = + "\([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\)" + } +namespacedToken = xsd:QName { pattern = "[^:]+:[^:]+" } +anyIRI = + xsd:anyURI + >> dc:description [ + "An IRI-reference as defined in [RFC3987]. See ODF 1.2 Part 1 section 18.3." + ] +anyAttListOrElements = + attribute * { text }*, + anyElements +anyElements = + element * { + mixed { anyAttListOrElements } + }* diff --git a/contrib/odt/etc/schema/schemas.xml b/contrib/odt/etc/schema/schemas.xml new file mode 100644 index 0000000..a319191 --- /dev/null +++ b/contrib/odt/etc/schema/schemas.xml @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0"> + <documentElement prefix="office" typeId="OpenDocument"/> + <documentElement prefix="manifest" localName="manifest" typeId="OpenDocument Manifest"/> + <typeId id="OpenDocument" uri="od-schema-v1.2-cs01.rnc"/> + <typeId id="OpenDocument Manifest" uri="od-manifest-schema-v1.2-cs01.rnc"/> +</locatingRules> diff --git a/contrib/odt/styles/OrgOdtAutomaticStyles.xml b/contrib/odt/styles/OrgOdtAutomaticStyles.xml new file mode 100644 index 0000000..0cc7b1e --- /dev/null +++ b/contrib/odt/styles/OrgOdtAutomaticStyles.xml @@ -0,0 +1,152 @@ + <!-- scripts --> + <office:scripts/> + + <!-- font face declarations --> + <office:font-face-decls> + <style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/> + <style:font-face style:name="courier" svg:font-family="courier, monospace"/> + <style:font-face style:name="Arial Unicode MS" svg:font-family="'Arial Unicode MS'" style:font-pitch="variable"/> + <style:font-face style:name="HG Mincho Light J" svg:font-family="'HG Mincho Light J'" style:font-pitch="variable"/> + <style:font-face style:name="Thorndale" svg:font-family="Thorndale" style:font-family-generic="roman" style:font-pitch="variable"/> + <style:font-face style:name="Times New Roman" svg:font-family="'Times New Roman'" style:font-family-generic="roman" style:font-pitch="variable"/> + <style:font-face style:name="Albany" svg:font-family="Albany" style:font-family-generic="swiss" style:font-pitch="variable"/> + <style:font-face style:name="SimSun" svg:font-family="SimSun" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable"/> + </office:font-face-decls> + + <!-- automatic styles --> + <office:automatic-styles> + <style:style style:name="OrgTable" style:family="table"> + <style:table-properties style:width="12cm" table:align="center"/> + </style:style> + <style:style style:name="OrgTblCell" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="none" fo:border-bottom="none" fo:border-left="none" fo:border-right="none"/> + </style:style> + <style:style style:name="OrgTblCellL" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="none" fo:border-bottom="none" fo:border-left="0.035cm solid #808080" fo:border-right="none"/> + </style:style> + <style:style style:name="OrgTblCellR" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="none" fo:border-bottom="none" fo:border-left="none" fo:border-right="0.035cm solid #808080"/> + </style:style> + <style:style style:name="OrgTblCellLR" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="none" fo:border-bottom="none" fo:border-left="0.035cm solid #808080" fo:border-right="0.035cm solid #808080"/> + </style:style> + <style:style style:name="OrgTblCellT" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="0.035cm solid #808080" fo:border-bottom="none" fo:border-left="none" fo:border-right="none"/> + </style:style> + <style:style style:name="OrgTblCellTL" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="0.035cm solid #808080" fo:border-bottom="none" fo:border-left="0.035cm solid #808080" fo:border-right="none"/> + </style:style> + <style:style style:name="OrgTblCellTR" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="0.035cm solid #808080" fo:border-bottom="none" fo:border-left="none" fo:border-right="0.035cm solid #808080"/> + </style:style> + <style:style style:name="OrgTblCellTLR" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="0.035cm solid #808080" fo:border-bottom="none" fo:border-left="0.035cm solid #808080" fo:border-right="0.035cm solid #808080"/> + </style:style> + <style:style style:name="OrgTblCellB" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="none" fo:border-bottom="0.035cm solid #808080" fo:border-left="none" fo:border-right="none"/> + </style:style> + <style:style style:name="OrgTblCellBL" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="none" fo:border-bottom="0.035cm solid #808080" fo:border-left="0.035cm solid #808080" fo:border-right="none"/> + </style:style> + <style:style style:name="OrgTblCellBR" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="none" fo:border-bottom="0.035cm solid #808080" fo:border-left="none" fo:border-right="0.035cm solid #808080"/> + </style:style> + <style:style style:name="OrgTblCellBLR" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="none" fo:border-bottom="0.035cm solid #808080" fo:border-left="0.035cm solid #808080" fo:border-right="0.035cm solid #808080"/> + </style:style> + <style:style style:name="OrgTblCellTB" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="0.035cm solid #808080" fo:border-bottom="0.035cm solid #808080" fo:border-left="none" fo:border-right="none"/> + </style:style> + <style:style style:name="OrgTblCellTBL" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="0.035cm solid #808080" fo:border-bottom="0.035cm solid #808080" fo:border-left="0.035cm solid #808080" fo:border-right="none"/> + </style:style> + <style:style style:name="OrgTblCellTBR" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="0.035cm solid #808080" fo:border-bottom="0.035cm solid #808080" fo:border-left="none" fo:border-right="0.035cm solid #808080"/> + </style:style> + <style:style style:name="OrgTblCellTBLR" style:family="table-cell"> + <style:table-cell-properties style:vertical-align="middle" fo:padding="0.159cm" fo:border-top="0.035cm solid #808080" fo:border-bottom="0.035cm solid #808080" fo:border-left="0.035cm solid #808080" fo:border-right="0.035cm solid #808080"/> + </style:style> + <style:style style:name="OrgFrame" + style:family="graphic" + style:parent-style-name="Frame"> + <style:graphic-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0cm" + fo:margin-bottom="0cm" + style:run-through="foreground" + style:wrap="none" + style:vertical-pos="top" + style:vertical-rel="paragraph" + style:horizontal-pos="center" + style:horizontal-rel="paragraph" + fo:padding="0cm" fo:border="none" + style:shadow="none"/> + </style:style> + + <style:style style:name="OrgGraphicsParagraphContent" + style:family="graphic" + style:parent-style-name="Graphics"> + <style:graphic-properties fo:margin-left="0cm" + fo:margin-right="0cm" + fo:margin-top="0cm" + fo:margin-bottom="0cm" + style:run-through="foreground" + style:wrap="none" + style:vertical-pos="from-top" + style:vertical-rel="paragraph-content" + style:horizontal-pos="from-left" + style:horizontal-rel="paragraph-content" + fo:padding="0cm" + fo:border="none" + style:shadow="none" + style:mirror="none" + fo:clip="rect(0cm, 0cm, 0cm, 0cm)" + draw:luminance="0%" + draw:contrast="0%" + draw:red="0%" + draw:green="0%" + draw:blue="0%" + draw:gamma="100%" + draw:color-inversion="false" + draw:image-opacity="100%" + draw:color-mode="standard"/> + </style:style> + + <style:style style:name="OrgGraphicsBaseline" + style:family="graphic" + style:parent-style-name="Graphics"> + <style:graphic-properties style:vertical-pos="top" + style:vertical-rel="baseline" + style:mirror="none" + fo:clip="rect(0cm, 0cm, 0cm, 0cm)" + draw:luminance="0%" + draw:contrast="0%" + draw:red="0%" + draw:green="0%" + draw:blue="0%" + draw:gamma="100%" + draw:color-inversion="false" + draw:image-opacity="100%" + draw:color-mode="standard"/> + </style:style> + + <style:style style:name="OrgGraphicsParagraph" + style:family="graphic" + style:parent-style-name="Graphics"> + <style:graphic-properties style:horizontal-pos="center" + style:horizontal-rel="paragraph" + style:mirror="none" + fo:clip="rect(0cm, 0cm, 0cm, 0cm)" + draw:luminance="0%" + draw:contrast="0%" + draw:red="0%" + draw:green="0%" + draw:blue="0%" + draw:gamma="100%" + draw:color-inversion="false" + draw:image-opacity="100%" + draw:color-mode="standard"/> + </style:style> + + </office:automatic-styles> diff --git a/contrib/odt/styles/OrgOdtStyles.xml b/contrib/odt/styles/OrgOdtStyles.xml new file mode 100644 index 0000000..2fe0001 --- /dev/null +++ b/contrib/odt/styles/OrgOdtStyles.xml @@ -0,0 +1,668 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document-styles xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" office:version="1.2"> + <office:font-face-decls> + <style:font-face style:name="OpenSymbol" svg:font-family="OpenSymbol"/> + <style:font-face style:name="Tahoma1" svg:font-family="Tahoma"/> + <style:font-face style:name="Courier New" svg:font-family="'Courier New'" style:font-family-generic="modern" style:font-pitch="fixed"/> + <style:font-face style:name="NSimSun" svg:font-family="NSimSun" style:font-family-generic="modern" style:font-pitch="fixed"/> + <style:font-face style:name="Times New Roman" svg:font-family="'Times New Roman'" style:font-family-generic="roman" style:font-pitch="variable"/> + <style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss" style:font-pitch="variable"/> + <style:font-face style:name="SimSun" svg:font-family="SimSun" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="graphic"> + <style:graphic-properties draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false"> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties style:use-window-font-color="true" fo:font-size="12pt" fo:language="en" fo:country="GB" style:letter-kerning="true" style:font-size-asian="12pt" style:language-asian="zh" style:country-asian="CN" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/> + </style:default-style> + <style:default-style style:family="paragraph"> + <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/> + <style:text-properties style:use-window-font-color="true" style:font-name="Times New Roman" fo:font-size="12pt" fo:language="en" fo:country="GB" style:letter-kerning="true" style:font-name-asian="SimSun" style:font-size-asian="12pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Tahoma" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/> + </style:default-style> + <style:default-style style:family="table"> + <style:table-properties table:border-model="collapsing"/> + </style:default-style> + <style:default-style style:family="table-row"> + <style:table-row-properties fo:keep-together="auto"/> + </style:default-style> + + <!-- Outline numbering --> + <text:outline-style> + <text:outline-level-style text:level="1" style:num-suffix=". " style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-0.762cm" fo:margin-left="0.762cm"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="2" style:num-suffix=". " style:num-format="1" text:display-levels="2"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-1.016cm" fo:margin-left="1.016cm"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="3" style:num-suffix=". " style:num-format="1" text:display-levels="3"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-1.27cm" fo:margin-left="1.27cm"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="4" style:num-suffix=". " style:num-format="1" text:display-levels="4"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-1.524cm" fo:margin-left="1.524cm"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="5" style:num-suffix=". " style:num-format="1" text:display-levels="5"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-1.778cm" fo:margin-left="1.778cm"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="6" style:num-suffix=". " style:num-format="1" text:display-levels="6"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-2.032cm" fo:margin-left="2.032cm"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="7" style:num-suffix=". " style:num-format="1" text:display-levels="7"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-2.286cm" fo:margin-left="2.286cm"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="8" style:num-suffix=". " style:num-format="1" text:display-levels="8"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-2.54cm" fo:margin-left="2.54cm"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="9" style:num-suffix=". " style:num-format="1" text:display-levels="9"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-2.794cm" fo:margin-left="2.794cm"/> + </style:list-level-properties> + </text:outline-level-style> + <text:outline-level-style text:level="10" style:num-suffix=". " style:num-format="1" text:display-levels="10"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="nothing" fo:text-indent="-3.048cm" fo:margin-left="3.048cm"/> + </style:list-level-properties> + </text:outline-level-style> + </text:outline-style> + + <style:style style:name="Standard" style:family="paragraph" style:class="text"/> + <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text"> + <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" fo:keep-with-next="always"/> + <style:text-properties style:font-name="Arial" fo:font-size="14pt" style:font-name-asian="SimSun" style:font-size-asian="14pt" style:font-name-complex="Tahoma" style:font-size-complex="14pt"/> + </style:style> + <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text"> + <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm"/> + </style:style> + <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list"> + <style:text-properties style:font-name-complex="Tahoma1"/> + </style:style> + <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"> + <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" text:number-lines="false" text:line-number="0"/> + <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Tahoma1" style:font-size-complex="12pt" style:font-style-complex="italic"/> + </style:style> + <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index"> + <style:paragraph-properties text:number-lines="false" text:line-number="0"/> + <style:text-properties style:font-name-complex="Tahoma1"/> + </style:style> + <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"> + <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"/> + </style:style> + <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"> + <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"/> + </style:style> + <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"> + <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"/> + </style:style> + <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"> + <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"/> + </style:style> + <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"> + <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"/> + </style:style> + <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"> + <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"/> + </style:style> + <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"> + <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"/> + </style:style> + <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"> + <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"/> + </style:style> + <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"> + <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"/> + </style:style> + <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"> + <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"/> + </style:style> + <style:style style:name="Heading_20_1.title" style:display-name="Heading 1.title" style:family="paragraph" style:parent-style-name="Heading_20_1"> + <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> + </style:style> + <style:style style:name="Text_20_body_20_indent" style:display-name="Text body indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text"> + <style:paragraph-properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"/> + </style:style> + <style:style style:name="List_20_Indent" style:display-name="List Indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text"> + <style:paragraph-properties fo:margin-left="5.001cm" fo:margin-right="0cm" fo:text-indent="-4.5cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="0cm"/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="First_20_line_20_indent" style:display-name="First line indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0.499cm" style:auto-text-indent="false"/> + </style:style> + <style:style style:name="Hanging_20_indent" style:display-name="Hanging indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text"> + <style:paragraph-properties fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="-0.499cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="0cm"/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Salutation" style:family="paragraph" style:parent-style-name="Standard" style:class="text"> + <style:paragraph-properties text:number-lines="false" text:line-number="0"/> + </style:style> + <style:style style:name="Contents_20_Heading" style:display-name="Contents Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/> + <style:text-properties fo:font-size="16pt" fo:font-weight="bold" style:font-size-asian="16pt" style:font-weight-asian="bold" style:font-size-complex="16pt" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="Contents_20_1" style:display-name="Contents 1" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="17cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Contents_20_2" style:display-name="Contents 2" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="16.501cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Contents_20_3" style:display-name="Contents 3" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="0.998cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="16.002cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Contents_20_4" style:display-name="Contents 4" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="1.498cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="15.503cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Contents_20_5" style:display-name="Contents 5" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="1.997cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="15.004cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Contents_20_6" style:display-name="Contents 6" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="2.496cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="14.504cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Contents_20_7" style:display-name="Contents 7" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="2.995cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="14.005cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Contents_20_8" style:display-name="Contents 8" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="3.494cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="13.506cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Contents_20_9" style:display-name="Contents 9" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="3.993cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="13.007cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Contents_20_10" style:display-name="Contents 10" style:family="paragraph" style:parent-style-name="Index" style:class="index"> + <style:paragraph-properties fo:margin-left="4.493cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false"> + <style:tab-stops> + <style:tab-stop style:position="12.508cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> + </style:tab-stops> + </style:paragraph-properties> + </style:style> + <style:style style:name="Quotations" style:family="paragraph" style:parent-style-name="Standard" style:class="html"> + <style:paragraph-properties fo:margin-left="1cm" fo:margin-right="1cm" fo:margin-top="0cm" fo:margin-bottom="0.499cm" fo:text-indent="0cm" style:auto-text-indent="false"/> + </style:style> + <style:style style:name="Preformatted_20_Text" style:display-name="Preformatted Text" style:family="paragraph" style:parent-style-name="Standard" style:class="html"> + <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm"/> + <style:text-properties style:font-name="Courier New" fo:font-size="10pt" style:font-name-asian="NSimSun" style:font-size-asian="10pt" style:font-name-complex="Courier New" style:font-size-complex="10pt"/> + </style:style> + <style:style style:name="OrgVerse" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> + <style:paragraph-properties fo:background-color="#c0c0c0" fo:padding="0.049cm" fo:border="0.018cm solid #000000" style:shadow="none"> + <style:background-image/> + </style:paragraph-properties> + </style:style> + <style:style style:name="OrgSourceBlock" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> + <style:paragraph-properties fo:background-color="#c0c0c0" fo:padding="0.049cm" fo:border="0.018cm solid #000000" style:shadow="none"> + <style:background-image/> + </style:paragraph-properties> + </style:style> + <style:style style:name="OrgCenter" style:family="paragraph" style:parent-style-name="Text_20_body"> + <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> + </style:style> + <style:style style:name="OrgTableContents" style:family="paragraph" style:parent-style-name="Text_20_body"/> + <style:style style:name="OrgTableHeading" style:family="paragraph" style:parent-style-name="OrgTableContents" style:class="extra"> + <style:paragraph-properties fo:text-align="center" style:justify-single-word="false" text:number-lines="false" text:line-number="0"/> + <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/> + </style:style> + + <style:style style:name="OrgTableHeadingLeft" style:family="paragraph" style:parent-style-name="OrgTableHeading"> + <style:paragraph-properties fo:text-align="left" style:justify-single-word="false"/> + </style:style> + <style:style style:name="OrgTableHeadingRight" style:family="paragraph" style:parent-style-name="OrgTableHeading"> + <style:paragraph-properties fo:text-align="right" style:justify-single-word="false"/> + </style:style> + <style:style style:name="OrgTableHeadingCenter" style:family="paragraph" style:parent-style-name="OrgTableHeading"> + <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> + </style:style> + + <style:style style:name="OrgTableContentsLeft" style:family="paragraph" style:parent-style-name="OrgTableContents"> + <style:paragraph-properties fo:text-align="left" style:justify-single-word="false"/> + </style:style> + <style:style style:name="OrgTableContentsRight" style:family="paragraph" style:parent-style-name="OrgTableContents"> + <style:paragraph-properties fo:text-align="right" style:justify-single-word="false"/> + </style:style> + <style:style style:name="OrgTableContentsCenter" style:family="paragraph" style:parent-style-name="OrgTableContents"> + <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> + </style:style> + <style:style style:name="Text_20_body_20_bold" style:display-name="Text body bold" style:family="paragraph" style:parent-style-name="Text_20_body" style:next-style-name="Text_20_body"> + <style:text-properties fo:font-weight="bold"/> + </style:style> + <style:style style:name="Footnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra"> + <style:paragraph-properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:text-indent="-0.499cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/> + <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/> + </style:style> + <style:style style:name="Figure" style:family="paragraph" style:parent-style-name="Caption"/> + <style:style style:name="Illustration_20_Index_20_Heading" style:display-name="Illustration Index Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index"> + <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/> + <style:text-properties fo:font-size="16pt" fo:font-weight="bold" style:font-size-asian="16pt" style:font-weight-asian="bold" style:font-size-complex="16pt" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="Table" style:family="paragraph" style:parent-style-name="Caption" style:class="extra"> + <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> + </style:style> + <style:style style:name="Horizontal_20_Line" style:display-name="Horizontal Line" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="html"> + <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.499cm" style:border-line-width-bottom="0.002cm 0.035cm 0.002cm" fo:padding="0cm" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.039cm double #808080" text:number-lines="false" text:line-number="0" style:join-border="false"/> + <style:text-properties fo:font-size="6pt" style:font-size-asian="6pt" style:font-size-complex="6pt"/> + </style:style> + <style:style style:name="Emphasis" style:family="text"> + <style:text-properties fo:font-style="italic" style:font-style-asian="italic" style:font-style-complex="italic"/> + </style:style> + <style:style style:name="Underline" style:family="text"> + <style:text-properties style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:background-color="transparent"/> + </style:style> + <style:style style:name="Strikethrough" style:family="text"> + <style:text-properties style:text-line-through-style="solid"/> + </style:style> + <style:style style:name="Source_20_Text" style:display-name="Source Text" style:family="text"> + <style:text-properties style:font-name="Courier New" fo:background-color="transparent" style:font-name-asian="NSimSun" style:font-name-complex="Courier New"/> + </style:style> + <style:style style:name="Citation" style:family="text"> + <style:text-properties fo:font-style="italic" style:font-style-asian="italic" style:font-style-complex="italic"/> + </style:style> + <style:style style:name="Example" style:family="text"> + <style:text-properties style:font-name="Courier New" fo:background-color="transparent" style:font-name-asian="NSimSun" style:font-name-complex="Courier New"/> + </style:style> + <style:style style:name="OrgCode" style:family="text" style:parent-style-name="Source_20_Text"/> + + <!-- BEGIN: Org Agenda Styles --> + <style:style style:name="OrgTodo" style:family="text"> + <style:text-properties fo:color="#ff0000"/> + </style:style> + <style:style style:name="OrgDone" style:family="text"> + <style:text-properties fo:color="#008000"/> + </style:style> + <style:style style:name="OrgTag" style:family="text"> + <style:text-properties fo:background-color="#add8e6"/> + </style:style> + <style:style style:name="OrgTimestamp" style:family="text"> + <style:text-properties fo:color="#bebebe"/> + </style:style> + <style:style style:name="OrgTimestampKeyword" style:family="text"> + <style:text-properties fo:color="#5f9ea0"/> + </style:style> + <style:style style:name="OrgTimestampWrapper" style:family="text"/> + <style:style style:name="OrgTarget" style:family="text"/> + <!-- END: Org Agenda Styles --> + + <style:style style:name="Bold" style:family="text"> + <style:text-properties fo:font-weight="bold"/> + </style:style> + <style:style style:name="Numbering_20_Symbols" style:display-name="Numbering Symbols" style:family="text"/> + <style:style style:name="Footnote_20_Symbol" style:display-name="Footnote Symbol" style:family="text"/> + <style:style style:name="Footnote_20_anchor" style:display-name="Footnote anchor" style:family="text"> + <style:text-properties style:text-position="super 58%"/> + </style:style> + <style:style style:name="OrgSuperscript" style:family="text"> + <style:text-properties style:text-position="super 58%"/> + </style:style> + <style:style style:name="OrgSubscript" style:family="text"> + <style:text-properties style:text-position="sub 58%"/> + </style:style> + <style:style style:name="Internet_20_link" style:display-name="Internet link" style:family="text"> + <style:text-properties fo:color="#000080" fo:language="zxx" fo:country="none" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" style:language-asian="zxx" style:country-asian="none" style:language-complex="zxx" style:country-complex="none"/> + </style:style> + <style:style style:name="Graphics" style:family="graphic"> + <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" style:wrap="none" style:vertical-pos="top" style:vertical-rel="paragraph" style:horizontal-pos="center" style:horizontal-rel="paragraph"/> + </style:style> + <style:style style:name="Frame" style:family="graphic"> + <style:graphic-properties text:anchor-type="paragraph" svg:x="0cm" svg:y="0cm" fo:margin-left="0.201cm" fo:margin-right="0.201cm" fo:margin-top="0.201cm" fo:margin-bottom="0.201cm" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:padding="0.15cm" fo:border="0.002cm solid #000000"/> + </style:style> + <text:list-style style:name="Numbering_20_1" style:display-name="Numbering 1"> + <text:list-level-style-number text:level="1" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.499cm" fo:text-indent="-0.499cm" fo:margin-left="0.499cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="2" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1cm" fo:text-indent="-0.499cm" fo:margin-left="1cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="3" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.499cm" fo:text-indent="-0.499cm" fo:margin-left="1.499cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="4" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2cm" fo:text-indent="-0.499cm" fo:margin-left="2cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="5" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.499cm" fo:text-indent="-0.499cm" fo:margin-left="2.499cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="6" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3cm" fo:text-indent="-0.499cm" fo:margin-left="3cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="7" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.5cm" fo:text-indent="-0.499cm" fo:margin-left="3.5cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="8" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="4.001cm" fo:text-indent="-0.499cm" fo:margin-left="4.001cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="9" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="4.5cm" fo:text-indent="-0.499cm" fo:margin-left="4.5cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="10" text:style-name="Numbering_20_Symbols" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.001cm" fo:text-indent="-0.499cm" fo:margin-left="5.001cm"/> + </style:list-level-properties> + </text:list-level-style-number> + </text:list-style> + <text:list-style style:name="List_20_1" style:display-name="List 1"> + <text:list-level-style-bullet text:level="1" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.4cm" fo:text-indent="-0.4cm" fo:margin-left="0.4cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="2" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.801cm" fo:text-indent="-0.4cm" fo:margin-left="0.801cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="3" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.199cm" fo:text-indent="-0.4cm" fo:margin-left="1.199cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="4" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.6cm" fo:text-indent="-0.4cm" fo:margin-left="1.6cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="5" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2cm" fo:text-indent="-0.4cm" fo:margin-left="2cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="6" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.401cm" fo:text-indent="-0.4cm" fo:margin-left="2.401cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="7" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.799cm" fo:text-indent="-0.4cm" fo:margin-left="2.799cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="8" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.2cm" fo:text-indent="-0.4cm" fo:margin-left="3.2cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="9" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.6cm" fo:text-indent="-0.4cm" fo:margin-left="3.6cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="10" text:style-name="Numbering_20_Symbols" text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="4.001cm" fo:text-indent="-0.4cm" fo:margin-left="4.001cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="OpenSymbol"/> + </text:list-level-style-bullet> + </text:list-style> + <text:list-style style:name="OrgBulletedList"> + <text:list-level-style-bullet text:level="1" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.27cm" fo:text-indent="-0.635cm" fo:margin-left="1.27cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="2" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.905cm" fo:text-indent="-0.635cm" fo:margin-left="1.905cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="3" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.54cm" fo:text-indent="-0.635cm" fo:margin-left="2.54cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="4" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.175cm" fo:text-indent="-0.635cm" fo:margin-left="3.175cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="5" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.81cm" fo:text-indent="-0.635cm" fo:margin-left="3.81cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="6" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="4.445cm" fo:text-indent="-0.635cm" fo:margin-left="4.445cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="7" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.08cm" fo:text-indent="-0.635cm" fo:margin-left="5.08cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="8" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.715cm" fo:text-indent="-0.635cm" fo:margin-left="5.715cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="9" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.35cm" fo:text-indent="-0.635cm" fo:margin-left="6.35cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="10" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char="•"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.985cm" fo:text-indent="-0.635cm" fo:margin-left="6.985cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="StarSymbol"/> + </text:list-level-style-bullet> + </text:list-style> + <text:list-style style:name="OrgNumberedList"> + <text:list-level-style-number text:level="1" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.27cm" fo:text-indent="-0.635cm" fo:margin-left="1.27cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="2" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.905cm" fo:text-indent="-0.635cm" fo:margin-left="1.905cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="3" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.54cm" fo:text-indent="-0.635cm" fo:margin-left="2.54cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="4" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.175cm" fo:text-indent="-0.635cm" fo:margin-left="3.175cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="5" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.81cm" fo:text-indent="-0.635cm" fo:margin-left="3.81cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="6" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="4.445cm" fo:text-indent="-0.635cm" fo:margin-left="4.445cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="7" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.08cm" fo:text-indent="-0.635cm" fo:margin-left="5.08cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="8" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.715cm" fo:text-indent="-0.635cm" fo:margin-left="5.715cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="9" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.35cm" fo:text-indent="-0.635cm" fo:margin-left="6.35cm"/> + </style:list-level-properties> + </text:list-level-style-number> + <text:list-level-style-number text:level="10" style:num-suffix="." style:num-format="1"> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.985cm" fo:text-indent="-0.635cm" fo:margin-left="6.985cm"/> + </style:list-level-properties> + </text:list-level-style-number> + </text:list-style> + <text:list-style style:name="OrgDescriptionList"> + <text:list-level-style-bullet text:level="1" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.27cm" fo:text-indent="-0.635cm" fo:margin-left="1.27cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="2" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.905cm" fo:text-indent="-0.635cm" fo:margin-left="1.905cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="3" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.54cm" fo:text-indent="-0.635cm" fo:margin-left="2.54cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="4" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.175cm" fo:text-indent="-0.635cm" fo:margin-left="3.175cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="5" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.81cm" fo:text-indent="-0.635cm" fo:margin-left="3.81cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="6" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="4.445cm" fo:text-indent="-0.635cm" fo:margin-left="4.445cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="7" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.08cm" fo:text-indent="-0.635cm" fo:margin-left="5.08cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="8" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.715cm" fo:text-indent="-0.635cm" fo:margin-left="5.715cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="9" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.35cm" fo:text-indent="-0.635cm" fo:margin-left="6.35cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + <text:list-level-style-bullet text:level="10" text:style-name="Bullet_20_Symbols" style:num-suffix="." text:bullet-char=" "> + <style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> + <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.985cm" fo:text-indent="-0.635cm" fo:margin-left="6.985cm"/> + </style:list-level-properties> + <style:text-properties style:font-name="Tahoma"/> + </text:list-level-style-bullet> + </text:list-style> + <text:notes-configuration text:note-class="footnote" text:citation-style-name="Footnote_20_Symbol" text:citation-body-style-name="Footnote_20_anchor" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/> + <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/> + <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/> + </office:styles> + <office:automatic-styles> + <style:page-layout style:name="Mpm1"> + <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm"> + <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:adjustment="left" style:rel-width="25%" style:color="#000000"/> + </style:page-layout-properties> + <style:header-style/> + <style:footer-style/> + </style:page-layout> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Standard" style:page-layout-name="Mpm1"/> + </office:master-styles> +</office:document-styles> |