* [ELPA Submission] OpenDocumentText exporter for Orgmode @ 2011-06-13 20:25 Jambunathan K 2011-06-14 15:50 ` Chong Yidong 0 siblings, 1 reply; 35+ messages in thread From: Jambunathan K @ 2011-06-13 20:25 UTC (permalink / raw) To: emacs-devel I would like to submit the "OpenDocumentText exporter for Orgmode" - the org-odt-YYYYMMDD.tar for inclusion in http://elpa.gnu.org/packages. The URL for `package-archives' is: http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/ A quick response to the immediately asked questions: 1. The package adds support for exporting Orgmode files to OpenDocumentText format. [1] 2. It is a "friendly fork" (or a "feature branch") of Orgmode and is not part of official Orgmode Repo (yet). 3. I am the sole author of all the changes introduced by this package. I am a signed contributor to Emacs and my copyright assignment number is #618390 [2]. 4. The package bundles rnc files for OpenDocument format [3]. I need help from Emacs developers on what would be the right way to include the copyright notice. I would appreciate if someone could offer me a helping hand here. Jambunathan K. Footnotes: [1] The README can be accessed here: http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/README.html [2] There is one tiny change submitted by Sean O Halpin. [3] http://lists.gnu.org/archive/html/emacs-devel/2011-03/msg00857.html -- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-13 20:25 [ELPA Submission] OpenDocumentText exporter for Orgmode Jambunathan K @ 2011-06-14 15:50 ` Chong Yidong 2011-06-14 20:05 ` Jambunathan K 0 siblings, 1 reply; 35+ messages in thread From: Chong Yidong @ 2011-06-14 15:50 UTC (permalink / raw) To: emacs-devel Jambunathan K <kjambunathan@gmail.com> writes: > I would like to submit the "OpenDocumentText exporter for Orgmode" - the > org-odt-YYYYMMDD.tar for inclusion in http://elpa.gnu.org/packages. > > The URL for `package-archives' is: > http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/ The link is broken. > 2. It is a "friendly fork" (or a "feature branch") of Orgmode and is not > part of official Orgmode Repo (yet). Does it really have to duplicate the entire Org mode tree? Why can't the "OpenDocumentText exporter" functionality be a single Org module? Also, could you explain in more detail whether/when this work is slated to become part of org-mode? I'm not sure it makes sense to include it as a separate package, if it's soon going to be available via the Org daily package (or when Org is synched to the Emacs repository) anyway. > 4. The package bundles rnc files for OpenDocument format [3]. I need > help from Emacs developers on what would be the right way to include > the copyright notice. I would appreciate if someone could offer me a > helping hand here. See etc/schema/README. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-14 15:50 ` Chong Yidong @ 2011-06-14 20:05 ` Jambunathan K 2011-06-14 21:09 ` Jambunathan K ` (2 more replies) 0 siblings, 3 replies; 35+ messages in thread From: Jambunathan K @ 2011-06-14 20:05 UTC (permalink / raw) To: Chong Yidong; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 4393 bytes --] Chong Yidong <cyd@stupidchicken.com> writes: > Jambunathan K <kjambunathan@gmail.com> writes: > >> I would like to submit the "OpenDocumentText exporter for Orgmode" - the >> org-odt-YYYYMMDD.tar for inclusion in http://elpa.gnu.org/packages. >> >> The URL for `package-archives' is: >> http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/ > > The link is broken. No it is not, it only seems so. The server (which is not a webserver, so to speak) is merely refusing to list the contents of the directory. Configure the package-archives with the above URL and the package will be visible. Here is the link to archive-contents and the tar file: http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/archive-contentshttp://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/org-odt-20110613.tar Did you checkout README.html? http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/README.html > >> 2. It is a "friendly fork" (or a "feature branch") of Orgmode and is not >> part of official Orgmode Repo (yet). > > Does it really have to duplicate the entire Org mode tree? Doesn't have to. > Why can't the "OpenDocumentText exporter" functionality be a single > Org module? There are three approaches that I can think of: 1. Roll out my own. 2. I can include *only* the modified and new files as a multi-file package and make org-odt dependent on a base version of org. 3. I can distribute my changes as plain old diff against a well-known revision of the parent module say org-20110613.tar. Case 1 => KISS. Self-contained and guaranteed to be consistent. No need to track dependencies. Case 2 => In this scenario, at the least, the package manager has to assure me that org-odt-YYYYMMDD.tar is overlaid on top of the parent package i.e., at the run time the feature `org-html' is *always* provided by org-odt package and not by org package. Case 3 => This scenario sounds like an ugly hack. In this case, the package server might have to maintain not only the latest org-YYYYMMDD.tar package but also the historical org-20110613.tar in it's archives. Do you see any issues with Case 2? > Also, could you explain in more detail whether/when this work is > slated to become part of org-mode? AFAICS, Bastien is in favor of inclusion (pending a review, ofcourse). I believe that the only thing that is slowing things down is the Life itself with it's non-negotiable demands. It is close to 3 months since I proposed a formal patch. I am simply impatient and restless. > I'm not sure it makes sense to include it as a separate package, if > it's soon going to be available via the Org daily package (or when Org > is synched to the Emacs repository) anyway. There is a strong case for package installers. It attracts more users and thereby eyeballs. Newbie users are averse to using git. Furthermore, even serious users rely on installers or stable released before diving deep. More importantly, I want that my little work to be available for posterity and not be lost in the corridors of frail memories or fickle servers. > > Also, could you explain in more detail whether/when this work is slated > to become part of org-mode? I'm not sure it makes sense to include it > as a separate package, if it's soon going to be available via the Org > daily package (or when Org is synched to the Emacs repository) anyway. > >> 4. The package bundles rnc files for OpenDocument format [3]. I need >> help from Emacs developers on what would be the right way to include >> the copyright notice. I would appreciate if someone could offer me a >> helping hand here. > > See etc/schema/README. I need help on two fronts: 1. There is are different schema files for 1.1 and 1.2 formats. Can I include them both? How should my schema locating file be composed in that case. 2. IANAL and I am anxious to DTRT. Does it suffice if I just include the copyright info from the rng file or do I also need to copy copyright info from the formal spec. (See attachments) If both 1.1 and 1.2 schemas is under included do I need to include for each of the instances. The spec is here: http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html RNG file is here: http://docs.oasis-open.org/office/v1.2/cs01/OpenDocument-v1.2-cs01-schema.rng Is there anything else I need to do? Jambunathan K. [-- Attachment #2: CopyrightNotice-From-RNG-File.txt --] [-- Type: text/plain, Size: 1667 bytes --] 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. [-- Attachment #3: CopyrightNotice-From-TheSpecification.txt --] [-- Type: text/plain, Size: 4047 bytes --] Copyright © 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. OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so. OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims. The names "OASIS", “OpenDocument”, “Open Document Format”, and “ODF” are trademarks of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see http://www.oasis-open.org/who/trademark.php for above guidance. [-- Attachment #4: Type: text/plain, Size: 5 bytes --] -- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-14 20:05 ` Jambunathan K @ 2011-06-14 21:09 ` Jambunathan K 2011-06-18 3:15 ` Stefan Monnier 2011-06-19 14:06 ` [PATCH] OpenDocument schema files Jambunathan K 2011-06-24 16:01 ` [ELPA Submission] OpenDocumentText exporter for Orgmode Bastien 2 siblings, 1 reply; 35+ messages in thread From: Jambunathan K @ 2011-06-14 21:09 UTC (permalink / raw) To: Chong Yidong; +Cc: emacs-devel > [snip] > > 2. I can include *only* the modified and new files as a multi-file > package and make org-odt dependent on a base version of org. > > [snip] > > Case 2 => In this scenario, at the least, the package manager has to > assure me that org-odt-YYYYMMDD.tar is overlaid on top of the parent > package i.e., at the run time the feature `org-html' is *always* > provided by org-odt package and not by org package. > > [snip] > > Do you see any issues with Case 2? I missed setting some context. org-html.el is split in to a generic export driver and a html-specific formatter. The changes are here big and diffused that a simple diff would simply be not that helpful. (Currently both these modules reside within org-html.el) org-odt.el is dependent on the core driver that is part of org-html.el. There are other tiny changes to org.el, org-footnote.el and org-exp.el. Jambunathan K. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-14 21:09 ` Jambunathan K @ 2011-06-18 3:15 ` Stefan Monnier 2011-06-18 5:22 ` Jambunathan K 0 siblings, 1 reply; 35+ messages in thread From: Stefan Monnier @ 2011-06-18 3:15 UTC (permalink / raw) To: Chong Yidong; +Cc: emacs-devel > org-html.el is split in to a generic export driver and a html-specific > formatter. The changes are here big and diffused that a simple diff > would simply be not that helpful. (Currently both these modules reside > within org-html.el) > org-odt.el is dependent on the core driver that is part of org-html.el. > There are other tiny changes to org.el, org-footnote.el and org-exp.el. I suggest you divide your changes into a few patches you can push independently which refactor the existing org code, with the end result that your new org-odt.el doesn't need extra changes elsewhere. Also, in order to speed things up, only submit one small patch at a time, otherwise the maintainers will tend to be overwhelmed reviewing a large patch and will let it linger for a long time. Stefan ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-18 3:15 ` Stefan Monnier @ 2011-06-18 5:22 ` Jambunathan K 2011-06-18 16:11 ` Chong Yidong 2011-06-18 19:55 ` Stefan Monnier 0 siblings, 2 replies; 35+ messages in thread From: Jambunathan K @ 2011-06-18 5:22 UTC (permalink / raw) To: Stefan Monnier; +Cc: Chong Yidong, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> org-html.el is split in to a generic export driver and a html-specific >> formatter. The changes are here big and diffused that a simple diff >> would simply be not that helpful. (Currently both these modules reside >> within org-html.el) > >> org-odt.el is dependent on the core driver that is part of org-html.el. > >> There are other tiny changes to org.el, org-footnote.el and org-exp.el. > > I suggest you divide your changes into a few patches you can push > independently which refactor the existing org code, with the end result > that your new org-odt.el doesn't need extra changes elsewhere. > > Also, in order to speed things up, only submit one small patch at > a time, otherwise the maintainers will tend to be overwhelmed reviewing > a large patch and will let it linger for a long time. Ok. I think we will work out something. I hope you would consider my request of having the org-odt tarball in GNU archives. The advantage would be that more people could discover it and test drive it. Jambunathan K. > > > Stefan > > -- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-18 5:22 ` Jambunathan K @ 2011-06-18 16:11 ` Chong Yidong 2011-06-18 19:55 ` Stefan Monnier 1 sibling, 0 replies; 35+ messages in thread From: Chong Yidong @ 2011-06-18 16:11 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Jambunathan K <kjambunathan@gmail.com> writes: > Ok. I think we will work out something. > > I hope you would consider my request of having the org-odt tarball in > GNU archives. The advantage would be that more people could discover it > and test drive it. I don't think it's a good fit. If you isolate your changes into a small package that depends on the Org mode daily (or just the version of Org mode built into Emacs), I'd consider adding that package to the GNU archive. But I strongly recommend that you instead work with the Org developers to get your code included directly to the Org repository. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-18 5:22 ` Jambunathan K 2011-06-18 16:11 ` Chong Yidong @ 2011-06-18 19:55 ` Stefan Monnier 2011-06-25 22:38 ` Jambunathan K 1 sibling, 1 reply; 35+ messages in thread From: Stefan Monnier @ 2011-06-18 19:55 UTC (permalink / raw) To: Chong Yidong; +Cc: emacs-devel > I hope you would consider my request of having the org-odt tarball in > GNU archives. The advantage would be that more people could discover it > and test drive it. I'm not sure what you mean by "the org-odt tarball" and "GNU archive". I'll assume "GNU archive" doesn't mean the FSF's ftp archive, but the GNU ELPA. If by "org-odt tarball" you mean a tarball including org-odt.el plus a bunch of files that already exist in Org but with some modifications, then this is not going to fly. If it's a bunch of files that do not override Org's own files, then I don't forsee any problem. So I'd urge you to work with the Org guys so as to get the needed changes accepted quickly, and if adding the remaining file doesn't suit them, we can definitely distribute it as a separate GNU ELPA package. Stefan ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-18 19:55 ` Stefan Monnier @ 2011-06-25 22:38 ` Jambunathan K 2011-07-01 18:09 ` Jambunathan K 0 siblings, 1 reply; 35+ messages in thread From: Jambunathan K @ 2011-06-25 22:38 UTC (permalink / raw) To: Stefan Monnier; +Cc: Bastien Guerry, Chong Yidong, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> I hope you would consider my request of having the org-odt tarball in >> GNU archives. The advantage would be that more people could discover it >> and test drive it. > So I'd urge you to work with the Org guys so as to get the needed > changes accepted quickly, and if adding the remaining file doesn't suit > them, we can definitely distribute it as a separate GNU ELPA package. Based on your feedback, I am making available a new org-odt-20110626.tar. This package is dependent on org-20110626.tar or later. Update your package-archives as below --8<---------------cut here---------------start------------->8--- (("gnu" . "http://elpa.gnu.org/packages/") ("jambu" . "http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/"))--8<---------------cut here---------------end--------------->8--- The package has just 3 files: 1. org-lparse.el 2. org-html.el 3. org-odt.el All three files are new files. As Bastien indicated in this thread, all the above files will NOT make it to Emacs proper during the Org-7.6 merge. It may be part of Org-7.7 release which (going by Org's release cycle) is atleast another 3-6 months far away. The intention of this tarball is to make the OpenDocumentExporter available for wider audience. The package will disappear once the above changes get incorporated in to the regular org-YYYYMMDD.tar builds. README is here: http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/README.html Tarball is here: http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/org-odt-20110626.tar Known Issues: http://lists.gnu.org/archive/html/bug-gnu-emacs/2011-06/msg00330.html Let me know what you think. Jambunathan K. -- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-25 22:38 ` Jambunathan K @ 2011-07-01 18:09 ` Jambunathan K 2011-07-04 15:52 ` Stefan Monnier 0 siblings, 1 reply; 35+ messages in thread From: Jambunathan K @ 2011-07-01 18:09 UTC (permalink / raw) To: Stefan Monnier; +Cc: Bastien Guerry, Chong Yidong, emacs-devel Has a decision been made on this? May I know what has been decided? If the odt exporter could be made available on GNU ELPA, I can update the info doc of Orgmode-7.6 to contain a referece to http://elpa.gnu.org/packages/. If there are unanswered questions I would be happy to answer them. Jambunathan K. > > Stefan Monnier <monnier@iro.umontreal.ca> writes: > >>> I hope you would consider my request of having the org-odt tarball in >>> GNU archives. The advantage would be that more people could discover it >>> and test drive it. > >> So I'd urge you to work with the Org guys so as to get the needed >> changes accepted quickly, and if adding the remaining file doesn't suit >> them, we can definitely distribute it as a separate GNU ELPA package. > > Based on your feedback, I am making available a new > org-odt-20110626.tar. This package is dependent on org-20110626.tar or > later. > > Update your package-archives as below > > --8<---------------cut here---------------start------------->8--- > (("gnu" . "http://elpa.gnu.org/packages/") > ("jambu" > . "http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/"))--8<---------------cut > here---------------end--------------->8--- > > > The package has just 3 files: > 1. org-lparse.el > 2. org-html.el > 3. org-odt.el > > All three files are new files. > > As Bastien indicated in this thread, all the above files will NOT make > it to Emacs proper during the Org-7.6 merge. It may be part of Org-7.7 > release which (going by Org's release cycle) is atleast another 3-6 > months far away. > > The intention of this tarball is to make the OpenDocumentExporter > available for wider audience. The package will disappear once the above > changes get incorporated in to the regular org-YYYYMMDD.tar builds. > README is here: > http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/README.html > > Tarball is here: > http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/org-odt-20110626.tar > > Known Issues: > http://lists.gnu.org/archive/html/bug-gnu-emacs/2011-06/msg00330.html > > Let me know what you think. > > Jambunathan K. -- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-01 18:09 ` Jambunathan K @ 2011-07-04 15:52 ` Stefan Monnier 2011-07-05 10:11 ` Bastien 0 siblings, 1 reply; 35+ messages in thread From: Stefan Monnier @ 2011-07-04 15:52 UTC (permalink / raw) To: emacs-devel > Has a decision been made on this? May I know what has been decided? As I had said before, such a tar file is perfectly fine, so feel free to install it in the GNU ELPA (tho it seems you don't have the required access rights, so could someone else do that?). OTOH if it'll be included in Org-7.7 (likely to be released in GNU ELPA before Emacs-24.1 gets released), I don't know how important it is to include it in GNU ELPA now. Stefan ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-04 15:52 ` Stefan Monnier @ 2011-07-05 10:11 ` Bastien 2011-07-05 21:05 ` Richard Stallman 0 siblings, 1 reply; 35+ messages in thread From: Bastien @ 2011-07-05 10:11 UTC (permalink / raw) To: Stefan Monnier, Jambunathan K.; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Has a decision been made on this? May I know what has been decided? > > As I had said before, such a tar file is perfectly fine, so feel free to > install it in the GNU ELPA (tho it seems you don't have the required access > rights, so could someone else do that?). I can take care of this. Jambunathan, can you (privately) send me the relevant files I need to add to ELPA? > OTOH if it'll be included in Org-7.7 (likely to be released in GNU ELPA > before Emacs-24.1 gets released), I don't know how important it is to > include it in GNU ELPA now. IMHO, there is no harm in adding it now to ELPA and removing it later, when Org 7.7 makes its way to Emacs. -- Bastien ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-05 10:11 ` Bastien @ 2011-07-05 21:05 ` Richard Stallman 2011-07-08 9:52 ` Bastien 0 siblings, 1 reply; 35+ messages in thread From: Richard Stallman @ 2011-07-05 21:05 UTC (permalink / raw) To: Bastien; +Cc: emacs-devel, monnier, kjambunathan > > As I had said before, such a tar file is perfectly fine, so feel free to > install it in the GNU ELPA (tho it seems you don't have the required access > rights, so could someone else do that?). I can take care of this. Jambunathan, can you (privately) send me the relevant files I need to add to ELPA? Is this an instance of confusing "GNU ELPA" and "ELPA"? It looks that way to me, but I can't be sure. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-05 21:05 ` Richard Stallman @ 2011-07-08 9:52 ` Bastien 2011-07-08 18:31 ` Richard Stallman 0 siblings, 1 reply; 35+ messages in thread From: Bastien @ 2011-07-08 9:52 UTC (permalink / raw) To: rms; +Cc: emacs-devel, monnier, kjambunathan Richard Stallman <rms@gnu.org> writes: > > > > As I had said before, such a tar file is perfectly fine, so feel free to > > install it in the GNU ELPA (tho it seems you don't have the required access > > rights, so could someone else do that?). > > I can take care of this. > > Jambunathan, can you (privately) send me the relevant files I need to > add to ELPA? > > Is this an instance of confusing "GNU ELPA" and "ELPA"? > It looks that way to me, but I can't be sure. I meant "GNU ELPA". -- Bastien ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-08 9:52 ` Bastien @ 2011-07-08 18:31 ` Richard Stallman 2011-07-08 18:38 ` Bastien 2011-07-08 18:59 ` Stefan Monnier 0 siblings, 2 replies; 35+ messages in thread From: Richard Stallman @ 2011-07-08 18:31 UTC (permalink / raw) To: Bastien; +Cc: kjambunathan, monnier, emacs-devel > Jambunathan, can you (privately) send me the relevant files I need to > add to ELPA? > > Is this an instance of confusing "GNU ELPA" and "ELPA"? > It looks that way to me, but I can't be sure. I meant "GNU ELPA". I thought so. Thus, this is another instance of a person who uses this list and is confused anyway. Stefan, isn't this enough to convince you to take steps to eliminate the confusion? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-08 18:31 ` Richard Stallman @ 2011-07-08 18:38 ` Bastien 2011-07-08 18:59 ` Stefan Monnier 1 sibling, 0 replies; 35+ messages in thread From: Bastien @ 2011-07-08 18:38 UTC (permalink / raw) To: rms; +Cc: kjambunathan, monnier, emacs-devel Richard Stallman <rms@gnu.org> writes: > > Jambunathan, can you (privately) send me the relevant files I need to > > add to ELPA? > > > > Is this an instance of confusing "GNU ELPA" and "ELPA"? > > It looks that way to me, but I can't be sure. > > I meant "GNU ELPA". > > I thought so. Thus, this is another instance of a person > who uses this list and is confused anyway. Well, meaning is always contextual. I used "ELPA" for "GNU ELPA" because "GNU ELPA" was in Stefan's quoted text -- so there was no possible confusion here. But I agree there can be a confusion in other contexts. -- Bastien ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-08 18:31 ` Richard Stallman 2011-07-08 18:38 ` Bastien @ 2011-07-08 18:59 ` Stefan Monnier 2011-07-09 1:02 ` Richard Stallman 1 sibling, 1 reply; 35+ messages in thread From: Stefan Monnier @ 2011-07-08 18:59 UTC (permalink / raw) To: rms; +Cc: Bastien, kjambunathan, emacs-devel >>> Jambunathan, can you (privately) send me the relevant files I need to >>> add to ELPA? >> Is this an instance of confusing "GNU ELPA" and "ELPA"? >> It looks that way to me, but I can't be sure. > I meant "GNU ELPA". > I thought so. Thus, this is another instance of a person > who uses this list and is confused anyway. I don't see any confusion. He clearly knows which ELPA he's talking about, and in this context it was indeed very clear which ELPA was meant. > Stefan, isn't this enough to convince you to take steps > to eliminate the confusion? No. Stefan ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-08 18:59 ` Stefan Monnier @ 2011-07-09 1:02 ` Richard Stallman 2011-07-09 2:41 ` Chong Yidong 2011-07-09 3:05 ` Jambunathan K 0 siblings, 2 replies; 35+ messages in thread From: Richard Stallman @ 2011-07-09 1:02 UTC (permalink / raw) To: Stefan Monnier; +Cc: bzg, kjambunathan, emacs-devel >>> Jambunathan, can you (privately) send me the relevant files I need to >>> add to ELPA? >> Is this an instance of confusing "GNU ELPA" and "ELPA"? >> It looks that way to me, but I can't be sure. > I meant "GNU ELPA". > I thought so. Thus, this is another instance of a person > who uses this list and is confused anyway. I don't see any confusion. He clearly knows which ELPA he's talking about, and in this context it was indeed very clear which ELPA was meant. He meant GNU ELPA but he said the name of Tom's archive. You could tell from the context which one he meant, but if you need to tell from the context, that is proof that the names are not clear. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-09 1:02 ` Richard Stallman @ 2011-07-09 2:41 ` Chong Yidong 2011-07-09 14:37 ` Richard Stallman 2011-07-09 19:57 ` PJ Weisberg 2011-07-09 3:05 ` Jambunathan K 1 sibling, 2 replies; 35+ messages in thread From: Chong Yidong @ 2011-07-09 2:41 UTC (permalink / raw) To: rms; +Cc: bzg, emacs-devel, Stefan Monnier, kjambunathan Richard Stallman <rms@gnu.org> writes: > He meant GNU ELPA but he said the name of Tom's archive. You could > tell from the context which one he meant, but if you need to tell from > the context, that is proof that the names are not clear. All the other alternatives are lousy; that's life. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-09 2:41 ` Chong Yidong @ 2011-07-09 14:37 ` Richard Stallman 2011-07-09 18:31 ` Chong Yidong 2011-07-09 19:57 ` PJ Weisberg 1 sibling, 1 reply; 35+ messages in thread From: Richard Stallman @ 2011-07-09 14:37 UTC (permalink / raw) To: Chong Yidong; +Cc: bzg, emacs-devel, monnier, kjambunathan > He meant GNU ELPA but he said the name of Tom's archive. You could > tell from the context which one he meant, but if you need to tell from > the context, that is proof that the names are not clear. All the other alternatives are lousy; that's life. Several good alternatives have been suggested here, including REL and REEL. Do you have any objective reasons to reject them? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-09 14:37 ` Richard Stallman @ 2011-07-09 18:31 ` Chong Yidong 2011-07-10 0:40 ` Richard Stallman 0 siblings, 1 reply; 35+ messages in thread From: Chong Yidong @ 2011-07-09 18:31 UTC (permalink / raw) To: rms; +Cc: bzg, emacs-devel, monnier, kjambunathan Richard Stallman <rms@gnu.org> writes: > > He meant GNU ELPA but he said the name of Tom's archive. You could > > tell from the context which one he meant, but if you need to tell from > > the context, that is proof that the names are not clear. > > All the other alternatives are lousy; that's life. > > Several good alternatives have been suggested here, > including REL and REEL. > > Do you have any objective reasons to reject them? As I explained in a previous email, "Emacs Lisp Package Archive" is the natural name to use when referring to archives compatible with package.el, which internally refers to `packages' and `archives' in its many functions, variables, and documentation; nor is it reasonable to rename all these functions and variables, because it is good to maintain compatibility with existing users of Tom's original package.el. Given that ELPA is the natural term for archives compatible with package.el, it does not make sense for us to name our archive something completely different---and less descriptive. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-09 18:31 ` Chong Yidong @ 2011-07-10 0:40 ` Richard Stallman 2011-07-11 4:18 ` Stefan Monnier 0 siblings, 1 reply; 35+ messages in thread From: Richard Stallman @ 2011-07-10 0:40 UTC (permalink / raw) To: Chong Yidong; +Cc: bzg, emacs-devel, monnier, kjambunathan Given that ELPA is the natural term for archives compatible with package.el, it does not make sense for us to name our archive something completely different---and less descriptive. There are many natural generic terms for such archives. ELPA has the problem of being the name of one of them which is not ours. If Tom were to rename his to TELPA, the problem would go away. Would you like to join me in asking him to do this? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-10 0:40 ` Richard Stallman @ 2011-07-11 4:18 ` Stefan Monnier 2011-07-11 15:19 ` Richard Stallman 0 siblings, 1 reply; 35+ messages in thread From: Stefan Monnier @ 2011-07-11 4:18 UTC (permalink / raw) To: rms; +Cc: bzg, Chong Yidong, kjambunathan, emacs-devel > ELPA has the problem of being the name of one of them > which is not ours. ELPA was the name of the only one there was back when there was only one. Nowadays there are several (beside Tom's and GNU's). Stefan ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-11 4:18 ` Stefan Monnier @ 2011-07-11 15:19 ` Richard Stallman 0 siblings, 0 replies; 35+ messages in thread From: Richard Stallman @ 2011-07-11 15:19 UTC (permalink / raw) To: Stefan Monnier; +Cc: bzg, cyd, kjambunathan, emacs-devel ELPA was the name of the only one there was back when there was only one. Nowadays there are several (beside Tom's and GNU's). ELPA is a fine generic name, as long as it isn't also the name of a specific one of them. Has Tom stopped using just "ELPA" as the name of his? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 35+ messages in thread
* [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-09 2:41 ` Chong Yidong 2011-07-09 14:37 ` Richard Stallman @ 2011-07-09 19:57 ` PJ Weisberg 1 sibling, 0 replies; 35+ messages in thread From: PJ Weisberg @ 2011-07-09 19:57 UTC (permalink / raw) To: Chong Yidong Cc: bzg@altern.org, kjambunathan@gmail.com, rms@gnu.org, Stefan Monnier, emacs-devel@gnu.org On Friday, July 8, 2011, Chong Yidong <cyd@stupidchicken.com> wrote: > Richard Stallman <rms@gnu.org> writes: > >> He meant GNU ELPA but he said the name of Tom's archive. You could >> tell from the context which one he meant, but if you need to tell from >> the context, that is proof that the names are not clear. > > All the other alternatives are lousy; that's life. I have a feeling that not too long after Emacs 24 ships with support for GNU ELPA built in, people will be calling them "elpa" and "Tom's original elpa". GNU ELPA, Tom's ELPA, and Marmalade (http://marmalade-repo.org/) all seem to be instances of the same type of thing. I don't know what you would call that thing, other than an "Emacs-lisp package archive". -- -PJ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-09 1:02 ` Richard Stallman 2011-07-09 2:41 ` Chong Yidong @ 2011-07-09 3:05 ` Jambunathan K 2011-07-09 14:37 ` Richard Stallman 1 sibling, 1 reply; 35+ messages in thread From: Jambunathan K @ 2011-07-09 3:05 UTC (permalink / raw) To: rms; +Cc: bzg, Stefan Monnier, emacs-devel I think it would be a good idea to capture the package admission/purging policies of "GNU ELPA" (GNU/ELPA?) in a publicly accessible manner at http://elpa.gnu.org landing page or http://elpa.gnu.org/packages. Let a note be added in BOLD letters saying that Emacs official archives should always be referred to fully qualfied as "GNU ELPA" in much the same way that GNU/Linux is referred to. Let's not beat Bastien even after he has unequivocally stated his intent. Jambunathan K. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-07-09 3:05 ` Jambunathan K @ 2011-07-09 14:37 ` Richard Stallman 0 siblings, 0 replies; 35+ messages in thread From: Richard Stallman @ 2011-07-09 14:37 UTC (permalink / raw) To: Jambunathan K; +Cc: bzg, monnier, emacs-devel Let's not beat Bastien even after he has unequivocally stated his intent. I don't think anyone means to criticize Bastien. I cited his message to show the general tendency to confusion caused by these similar names. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH] OpenDocument schema files 2011-06-14 20:05 ` Jambunathan K 2011-06-14 21:09 ` Jambunathan K @ 2011-06-19 14:06 ` Jambunathan K 2011-06-19 14:19 ` Jambunathan K ` (2 more replies) 2011-06-24 16:01 ` [ELPA Submission] OpenDocumentText exporter for Orgmode Bastien 2 siblings, 3 replies; 35+ messages in thread From: Jambunathan K @ 2011-06-19 14:06 UTC (permalink / raw) To: Chong Yidong; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1823 bytes --] Jambunathan K <kjambunathan@gmail.com> writes: > Chong Yidong <cyd@stupidchicken.com> writes: > >> Jambunathan K <kjambunathan@gmail.com> writes: >> >>> I would like to submit the "OpenDocumentText exporter for Orgmode" - the >>> org-odt-YYYYMMDD.tar for inclusion in http://elpa.gnu.org/packages. >>> >>> The URL for `package-archives' is: >>> http://repo.or.cz/w/org-mode/org-jambu.git/blob_plain/HEAD:/packages/ >>> >>> [snip] >>> >>> 4. The package bundles rnc files for OpenDocument format [3]. I need >>> help from Emacs developers on what would be the right way to include >>> the copyright notice. I would appreciate if someone could offer me a >>> helping hand here. >> >> See etc/schema/README. > > I need help on two fronts: > > 1. There is are different schema files for 1.1 and 1.2 formats. Can I > include them both? How should my schema locating file be composed in > that case. > The attached patch containst only OpenDocument-v1.2-specific rnc files. > 2. IANAL and I am anxious to DTRT. > > Does it suffice if I just include the copyright info from the rng > file or do I also need to copy copyright info from the formal > spec. (See attachments) If both 1.1 and 1.2 schemas is under included > do I need to include for each of the instances. > > The spec is here: > http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html > > RNG files are here: > http://docs.oasis-open.org/office/v1.2/cs01/OpenDocument-v1.2-cs01-schema.rng > http://docs.oasis-open.org/office/v1.2/cs01/OpenDocument-v1.2-cs01-manifest-schema.rng > > OASIS IPR policy is here: > http://www.oasis-open.org/policies-guidelines/ipr Hope I have DTRT. The attached diffs were created through non-version-controlled copies of latest files. The date is in IST (UTC +5:30). Hope the diffs are in order. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: OpenDocument-v1.2.diff --] [-- Type: text/x-patch, Size: 234922 bytes --] diff -rcN a/etc/ChangeLog b/etc/ChangeLog *** a/etc/ChangeLog 2011-06-19 19:22:48.265625000 +0530 --- b/etc/ChangeLog 2011-06-19 19:29:18.031250000 +0530 *************** *** 1,3 **** --- 1,10 ---- + 2011-06-19 Jambunathan K <kjambunathan@gmail.com> + + * schema/OpenDocument-v1.2-cs01-schema.rnc: Added. + * schema/OpenDocument-v1.2-cs01-manifest-schema.rnc: Added. + * schema/schemas.xml: Modified to use above files. + * schema/README: Include Copyright info for above files. + 2011-06-14 Chong Yidong <cyd@stupidchicken.com> * themes/dichromacy-theme.el: New theme. diff -rcN a/etc/schema/OpenDocument-v1.2-cs01-manifest-schema.rnc b/etc/schema/OpenDocument-v1.2-cs01-manifest-schema.rnc *** a/etc/schema/OpenDocument-v1.2-cs01-manifest-schema.rnc 1970-01-01 05:30:00.000000000 +0530 --- b/etc/schema/OpenDocument-v1.2-cs01-manifest-schema.rnc 2011-06-13 10:36:11.750000000 +0530 *************** *** 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 -rcN a/etc/schema/OpenDocument-v1.2-cs01-schema.rnc b/etc/schema/OpenDocument-v1.2-cs01-schema.rnc *** a/etc/schema/OpenDocument-v1.2-cs01-schema.rnc 1970-01-01 05:30:00.000000000 +0530 --- b/etc/schema/OpenDocument-v1.2-cs01-schema.rnc 2011-06-13 10:36:11.812500000 +0530 *************** *** 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 -rcN a/etc/schema/README b/etc/schema/README *** a/etc/schema/README 2011-06-19 18:49:30.906250000 +0530 --- b/etc/schema/README 2011-06-19 18:23:51.062500000 +0530 *************** *** 113,115 **** --- 113,158 ---- specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders. + + + + The following files are derived from specifications published by OASIS + Open Document Format for Office Applications (OpenDocument) TC: + + 1. OpenDocument-v1.2 specification available online at + http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html + + OpenDocument-v1.2-cs01-schema.rnc + OpenDocument-v1.2-cs01-manifest-schema.rnc + + These files are Copyright (c) OASIS Open 2002-2011. They are + distributed under the terms of the following license: + + 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. diff -rcN a/etc/schema/schemas.xml b/etc/schema/schemas.xml *** a/etc/schema/schemas.xml 2011-06-19 18:49:49.062500000 +0530 --- b/etc/schema/schemas.xml 2011-06-19 18:24:52.640625000 +0530 *************** *** 48,53 **** --- 48,56 ---- <documentElement localName="RDF" typeId="RDF"/> <documentElement prefix="rdf" typeId="RDF"/> + <documentElement prefix="office" typeId="OpenDocument"/> + <documentElement prefix="manifest" localName="manifest" typeId="OpenDocument Manifest"/> + <documentElement localName="locatingRules" uri="locate.rnc"/> <typeId id="XSLT" uri="xslt.rnc"/> *************** *** 55,58 **** --- 58,64 ---- <typeId id="XHTML" uri="xhtml.rnc"/> <typeId id="DocBook" uri="docbook.rnc"/> <typeId id="RDF" uri="rdfxml.rnc"/> + + <typeId id="OpenDocument" uri="OpenDocument-v1.2-cs01-schema.rnc"/> + <typeId id="OpenDocument Manifest" uri="OpenDocument-v1.2-cs01-manifest-schema.rnc"/> </locatingRules> [-- Attachment #3: Type: text/plain, Size: 5 bytes --] -- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH] OpenDocument schema files 2011-06-19 14:06 ` [PATCH] OpenDocument schema files Jambunathan K @ 2011-06-19 14:19 ` Jambunathan K 2011-06-19 16:23 ` Eli Zaretskii 2011-06-19 16:23 ` Eli Zaretskii 2 siblings, 0 replies; 35+ messages in thread From: Jambunathan K @ 2011-06-19 14:19 UTC (permalink / raw) To: Chong Yidong; +Cc: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1975 bytes --] Here comes the unit test instructions. (My bad! I should have attached this with the PATCH) 0. Apply the previous patch 1. Open the attached hand-created test.odt file in archive mode (Note: .odt files are zip files) 2. You are likely to see a bunch of xml file as shown below. --8<---------------cut here---------------start------------->8--- M Filemode Length Date Time File - ---------- -------- ----------- -------- ----------------------- [snip] -rw-rw-rw- 3008 19-Jun-2011 13:07:44 content.xml -rw-rw-rw- 532 19-Jun-2011 13:07:44 manifest.rdf -rw-rw-rw- 11100 19-Jun-2011 13:07:44 styles.xml -rw-rw-rw- 1127 19-Jun-2011 13:07:44 meta.xml [snip] -rwx------ 8855 19-Jun-2011 18:40:04 settings.xml -rw-rw-rw- 1989 19-Jun-2011 13:07:44 META-INF/manifest.xml - ---------- -------- ----------- -------- ----------------------- --8<---------------cut here---------------end--------------->8--- 3. Visit those xml files in nxml-mode 4. Make sure auto-validation is on. --8<---------------cut here---------------start------------->8--- (eval-after-load 'rng-nxml '(setq rng-nxml-auto-validate-flag t)) --8<---------------cut here---------------end--------------->8--- 5. Use C-c C-s C-w or M-x rng-what-schema and ensure that the right schemas are picked up for validation. --8<---------------cut here---------------start------------->8--- Using schema c:/Program Files/emacs-24.0.50/etc/schema/OpenDocument-v1.2-cs01-schema.Using schema c:/Program Files/emacs-24.0.50/etc/schema/OpenDocument-v1.2-cs01-manifest-schema.rnc --8<---------------cut here---------------end--------------->8--- 6. Use C-c C-n or M-x rng-next-error and ensure that things are OK. - Currently manifest.xml reports --8<---------------cut here---------------start------------->8--- Missing attribute "manifest:version" --8<---------------cut here---------------end--------------->8--- [-- Attachment #2: test.odt --] [-- Type: application/zip, Size: 8832 bytes --] [-- Attachment #3: Type: text/plain, Size: 17 bytes --] Jambunathan K. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH] OpenDocument schema files 2011-06-19 14:06 ` [PATCH] OpenDocument schema files Jambunathan K 2011-06-19 14:19 ` Jambunathan K @ 2011-06-19 16:23 ` Eli Zaretskii 2011-06-19 18:53 ` Jambunathan K 2011-06-19 16:23 ` Eli Zaretskii 2 siblings, 1 reply; 35+ messages in thread From: Eli Zaretskii @ 2011-06-19 16:23 UTC (permalink / raw) To: Jambunathan K; +Cc: cyd, emacs-devel > From: Jambunathan K <kjambunathan@gmail.com> > Date: Sun, 19 Jun 2011 19:36:34 +0530 > Cc: emacs-devel@gnu.org > > + * schema/OpenDocument-v1.2-cs01-schema.rnc: Added. > + * schema/OpenDocument-v1.2-cs01-manifest-schema.rnc: Added. The name of these two files will clash on 8+3 filesystems. Please rename one or both. Thanks. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH] OpenDocument schema files 2011-06-19 16:23 ` Eli Zaretskii @ 2011-06-19 18:53 ` Jambunathan K 2011-07-12 12:27 ` Jambunathan K 0 siblings, 1 reply; 35+ messages in thread From: Jambunathan K @ 2011-06-19 18:53 UTC (permalink / raw) To: Eli Zaretskii; +Cc: cyd, emacs-devel [-- Attachment #1: Type: text/plain, Size: 442 bytes --] Eli Zaretskii <eliz@gnu.org> writes: >> From: Jambunathan K <kjambunathan@gmail.com> >> Date: Sun, 19 Jun 2011 19:36:34 +0530 >> Cc: emacs-devel@gnu.org >> >> + * schema/OpenDocument-v1.2-cs01-schema.rnc: Added. >> + * schema/OpenDocument-v1.2-cs01-manifest-schema.rnc: Added. > > The name of these two files will clash on 8+3 filesystems. Please > rename one or both. Thanks. > > Second attempt. See attached patch. Jambunathan K. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: OpenDocument-v1.2-Attempt-2.diff --] [-- Type: text/x-patch, Size: 234774 bytes --] diff -rcN a/etc/ChangeLog b/etc/ChangeLog *** a/etc/ChangeLog 2011-06-19 19:22:48.265625000 +0530 --- b/etc/ChangeLog 2011-06-19 23:46:22.187500000 +0530 *************** *** 1,3 **** --- 1,10 ---- + 2011-06-19 Jambunathan K <kjambunathan@gmail.com> + + * schema/od-schema-v1.2-cs01.rnc: Added. + * schema/od-manifest-schema-v1.2-cs01.rnc: Added. + * schema/schemas.xml: Modified to use above files. + * schema/README: Include Copyright info for above files. + 2011-06-14 Chong Yidong <cyd@stupidchicken.com> * themes/dichromacy-theme.el: New theme. diff -rcN a/etc/schema/README b/etc/schema/README *** a/etc/schema/README 2011-06-19 18:49:30.906250000 +0530 --- b/etc/schema/README 2011-06-19 23:45:00.421875000 +0530 *************** *** 113,115 **** --- 113,157 ---- specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders. + + + + The following files are derived from specifications published by OASIS + Open Document Format for Office Applications (OpenDocument) TC: + + 1. OpenDocument-v1.2 specification available online at + http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html + + od-schema-v1.2-cs01.rnc od-manifest-schema-v1.2-cs01.rnc + + These files are Copyright (c) OASIS Open 2002-2011. They are + distributed under the terms of the following license: + + 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. diff -rcN a/etc/schema/od-manifest-schema-v1.2-cs01.rnc b/etc/schema/od-manifest-schema-v1.2-cs01.rnc *** a/etc/schema/od-manifest-schema-v1.2-cs01.rnc 1970-01-01 05:30:00.000000000 +0530 --- b/etc/schema/od-manifest-schema-v1.2-cs01.rnc 2011-06-19 23:37:24.718750000 +0530 *************** *** 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 -rcN a/etc/schema/od-schema-v1.2-cs01.rnc b/etc/schema/od-schema-v1.2-cs01.rnc *** a/etc/schema/od-schema-v1.2-cs01.rnc 1970-01-01 05:30:00.000000000 +0530 --- b/etc/schema/od-schema-v1.2-cs01.rnc 2011-06-19 23:37:24.750000000 +0530 *************** *** 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 -rcN a/etc/schema/schemas.xml b/etc/schema/schemas.xml *** a/etc/schema/schemas.xml 2011-06-19 18:49:49.062500000 +0530 --- b/etc/schema/schemas.xml 2011-06-19 23:43:21.406250000 +0530 *************** *** 48,53 **** --- 48,56 ---- <documentElement localName="RDF" typeId="RDF"/> <documentElement prefix="rdf" typeId="RDF"/> + <documentElement prefix="office" typeId="OpenDocument"/> + <documentElement prefix="manifest" localName="manifest" typeId="OpenDocument Manifest"/> + <documentElement localName="locatingRules" uri="locate.rnc"/> <typeId id="XSLT" uri="xslt.rnc"/> *************** *** 55,58 **** --- 58,64 ---- <typeId id="XHTML" uri="xhtml.rnc"/> <typeId id="DocBook" uri="docbook.rnc"/> <typeId id="RDF" uri="rdfxml.rnc"/> + + <typeId id="OpenDocument" uri="od-schema-v1.2-cs01.rnc"/> + <typeId id="OpenDocument Manifest" uri="od-manifest-schema-v1.2-cs01.rnc"/> </locatingRules> [-- Attachment #3: Type: text/plain, Size: 7 bytes --] -- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH] OpenDocument schema files 2011-06-19 18:53 ` Jambunathan K @ 2011-07-12 12:27 ` Jambunathan K 2011-07-12 14:54 ` Bastien 0 siblings, 1 reply; 35+ messages in thread From: Jambunathan K @ 2011-07-12 12:27 UTC (permalink / raw) To: emacs-devel Jambunathan K <kjambunathan@gmail.com> writes: > Eli Zaretskii <eliz@gnu.org> writes: > >>> From: Jambunathan K <kjambunathan@gmail.com> >>> Date: Sun, 19 Jun 2011 19:36:34 +0530 >>> Cc: emacs-devel@gnu.org >>> >>> + * schema/OpenDocument-v1.2-cs01-schema.rnc: Added. >>> + * schema/OpenDocument-v1.2-cs01-manifest-schema.rnc: Added. >> >> The name of these two files will clash on 8+3 filesystems. Please >> rename one or both. Thanks. >> >> > > Second attempt. See attached patch. Ping. Did anyone get a chance to review these changes closely? > Jambunathan K. -- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH] OpenDocument schema files 2011-07-12 12:27 ` Jambunathan K @ 2011-07-12 14:54 ` Bastien 0 siblings, 0 replies; 35+ messages in thread From: Bastien @ 2011-07-12 14:54 UTC (permalink / raw) To: emacs-devel Jambunathan K <kjambunathan@gmail.com> writes: > Did anyone get a chance to review these changes closely? Stefan suggested to add this to GNU ELPA, I proposed to do it. Can you send me the relevant files? -- Bastien ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [PATCH] OpenDocument schema files 2011-06-19 14:06 ` [PATCH] OpenDocument schema files Jambunathan K 2011-06-19 14:19 ` Jambunathan K 2011-06-19 16:23 ` Eli Zaretskii @ 2011-06-19 16:23 ` Eli Zaretskii 2 siblings, 0 replies; 35+ messages in thread From: Eli Zaretskii @ 2011-06-19 16:23 UTC (permalink / raw) To: Jambunathan K; +Cc: cyd, emacs-devel > From: Jambunathan K <kjambunathan@gmail.com> > Date: Sun, 19 Jun 2011 19:36:34 +0530 > Cc: emacs-devel@gnu.org > > + * schema/OpenDocument-v1.2-cs01-schema.rnc: Added. > + * schema/OpenDocument-v1.2-cs01-manifest-schema.rnc: Added. The name of these two files will clash on 8+3 filesystems. Please rename one or both. Thanks. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: [ELPA Submission] OpenDocumentText exporter for Orgmode 2011-06-14 20:05 ` Jambunathan K 2011-06-14 21:09 ` Jambunathan K 2011-06-19 14:06 ` [PATCH] OpenDocument schema files Jambunathan K @ 2011-06-24 16:01 ` Bastien 2 siblings, 0 replies; 35+ messages in thread From: Bastien @ 2011-06-24 16:01 UTC (permalink / raw) To: Chong Yidong; +Cc: emacs-devel Hi Chong and Jambunathan, Jambunathan K <kjambunathan@gmail.com> writes: >> Also, could you explain in more detail whether/when this work is >> slated to become part of org-mode? > > AFAICS, Bastien is in favor of inclusion (pending a review, ofcourse). I > believe that the only thing that is slowing things down is the Life > itself with it's non-negotiable demands. Here is the plan I suggest: - For Org 7.6 (planned early next week): include org-odt.el and related files in Org/contrib/ - this directory doesn't go to Emacs trunk, but there go files we want hardcore Orgers to test and improve. - For Org 7.7: work on integrating the ODT exporter to Org's core. Apologies to Jambunathan for the delayed work on this. I will now have more time to make sure this change happens. Also Stefan had a great suggestion: it's always easier to review small patches, especially when life goes a bit crazy. Thanks! -- Bastien ^ permalink raw reply [flat|nested] 35+ messages in thread
end of thread, other threads:[~2011-07-12 14:54 UTC | newest] Thread overview: 35+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-06-13 20:25 [ELPA Submission] OpenDocumentText exporter for Orgmode Jambunathan K 2011-06-14 15:50 ` Chong Yidong 2011-06-14 20:05 ` Jambunathan K 2011-06-14 21:09 ` Jambunathan K 2011-06-18 3:15 ` Stefan Monnier 2011-06-18 5:22 ` Jambunathan K 2011-06-18 16:11 ` Chong Yidong 2011-06-18 19:55 ` Stefan Monnier 2011-06-25 22:38 ` Jambunathan K 2011-07-01 18:09 ` Jambunathan K 2011-07-04 15:52 ` Stefan Monnier 2011-07-05 10:11 ` Bastien 2011-07-05 21:05 ` Richard Stallman 2011-07-08 9:52 ` Bastien 2011-07-08 18:31 ` Richard Stallman 2011-07-08 18:38 ` Bastien 2011-07-08 18:59 ` Stefan Monnier 2011-07-09 1:02 ` Richard Stallman 2011-07-09 2:41 ` Chong Yidong 2011-07-09 14:37 ` Richard Stallman 2011-07-09 18:31 ` Chong Yidong 2011-07-10 0:40 ` Richard Stallman 2011-07-11 4:18 ` Stefan Monnier 2011-07-11 15:19 ` Richard Stallman 2011-07-09 19:57 ` PJ Weisberg 2011-07-09 3:05 ` Jambunathan K 2011-07-09 14:37 ` Richard Stallman 2011-06-19 14:06 ` [PATCH] OpenDocument schema files Jambunathan K 2011-06-19 14:19 ` Jambunathan K 2011-06-19 16:23 ` Eli Zaretskii 2011-06-19 18:53 ` Jambunathan K 2011-07-12 12:27 ` Jambunathan K 2011-07-12 14:54 ` Bastien 2011-06-19 16:23 ` Eli Zaretskii 2011-06-24 16:01 ` [ELPA Submission] OpenDocumentText exporter for Orgmode Bastien
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).