From f87ad650e6cc267a7e1c5df8fabb78c6e4cba4b1 Mon Sep 17 00:00:00 2001 From: Biao Han Date: Mon, 19 Sep 2011 05:43:23 +0000 Subject: [PATCH] changeset: 35:7d3a640c9b8f user: Developer:Svante;Reviewer:Devin date: Mon Sep 19 13:18:53 2011 +0800 Maven & WebApp switch git-svn-id: https://svn.apache.org/repos/asf/incubator/odf/trunk@1172466 13f79535-47bb-0310-9956-ffa450edef68 --- validator/.hgeol | 27 + validator/LICENSE.txt | 201 + validator/README.txt | 49 + validator/ant.properties | 8 - validator/build.xml | 303 - validator/manifest.mf | 3 - validator/nbproject/build-impl.xml | 894 - validator/nbproject/genfiles.properties | 8 - validator/nbproject/project.properties | 77 - validator/nbproject/project.xml | 17 - validator/pom.xml | 460 + validator/schema.properties | 9 - validator/schema.user.properties | 31 - .../odfvalidator/Configuration.java | 0 .../odfvalidator/ContentFilter.java | 0 .../odftoolkit/odfvalidator/DSigFilter.java | 0 .../odfvalidator/ForeignContentFilter.java | 0 .../odfvalidator/ForeignContentListener.java | 0 .../odfvalidator/InternalResources.java | 9 +- .../org/odftoolkit/odfvalidator/Logger.java | 246 + .../org/odftoolkit/odfvalidator/Main.java | 4 +- .../odfvalidator/ManifestEntry.java | 0 .../odfvalidator/ManifestEntryListener.java | 0 .../odfvalidator/ManifestFilter.java | 0 .../odfvalidator/ManifestListener.java | 0 .../odfvalidator/MathML101Filter.java | 0 .../odfvalidator/MathML20Filter.java | 0 .../odftoolkit/odfvalidator/MetaFilter.java | 0 .../odfvalidator/MetaInformation.java | 0 .../odfvalidator/MetaInformationListener.java | 0 .../odfvalidator/NamespaceFilter.java | 0 .../odfvalidator/ODFFileFilter.java | 0 .../odfvalidator/ODFFileValidator.java | 0 .../odfvalidator/ODFMediaTypes.java | 0 .../odfvalidator/ODFPackageErrorHandler.java | 0 .../odfvalidator/ODFPackageValidator.java | 435 + .../odfvalidator/ODFRootPackageValidator.java | 0 .../odfvalidator/ODFStreamValidator.java | 0 .../odfvalidator/ODFSubPackageValidator.java | 0 .../odfvalidator/ODFValidationResult.java | 0 .../odftoolkit/odfvalidator/ODFValidator.java | 372 + .../odfvalidator/ODFValidatorException.java | 0 .../odfvalidator/ODFValidatorProvider.java | 0 .../odfvalidator/OdfPackageExt.java | 0 .../odfvalidator/OdfValidatorMode.java | 27 +- .../odftoolkit/odfvalidator/OdfVersion.java | 0 .../odfvalidator/SAXParseExceptionFilter.java | 0 .../odfvalidator/SAXVersionException.java | 0 .../odfvalidator/SchemaErrorHandler.java | 0 .../odftoolkit/odfvalidator/SchemaFilter.java | 0 .../odfvalidator/SchemaResourceResolver.java | 0 ...ValidationMessageCollectorErrorFilter.java | 0 .../ValidationOOoTaskIdErrorFilter.java | 0 .../odfvalidator/VersionHandler.java | 0 ...g.iso_relax.verifier.VerifierFactoryLoader | 1 + .../main/resources/schema/mathml1.01/math.dtd | 957 + .../mathml1.01/w3c_ipr_software_notice.html | 105 + .../mathml2.0/common/common-attribs.xsd | 41 + .../schema/mathml2.0/common/math.xsd | 126 + .../schema/mathml2.0/common/xlink-href.xsd | 20 + .../schema/mathml2.0/content/arith.xsd | 90 + .../schema/mathml2.0/content/calculus.xsd | 146 + .../mathml2.0/content/common-attrib.xsd | 30 + .../schema/mathml2.0/content/constants.xsd | 83 + .../schema/mathml2.0/content/constructs.xsd | 260 + .../content/elementary-functions.xsd | 117 + .../schema/mathml2.0/content/functions.xsd | 73 + .../mathml2.0/content/linear-algebra.xsd | 173 + .../schema/mathml2.0/content/logic.xsd | 53 + .../schema/mathml2.0/content/relations.xsd | 55 + .../schema/mathml2.0/content/semantics.xsd | 85 + .../schema/mathml2.0/content/sets.xsd | 236 + .../schema/mathml2.0/content/statistics.xsd | 136 + .../schema/mathml2.0/content/tokens.xsd | 120 + .../mathml2.0/content/vector-calculus.xsd | 88 + .../resources/schema/mathml2.0/mathml2.xsd | 59 + .../schema/mathml2.0/presentation/action.xsd | 44 + .../mathml2.0/presentation/characters.xsd | 37 + .../mathml2.0/presentation/common-attribs.xsd | 113 + .../mathml2.0/presentation/common-types.xsd | 103 + .../schema/mathml2.0/presentation/error.xsd | 40 + .../schema/mathml2.0/presentation/layout.xsd | 195 + .../schema/mathml2.0/presentation/scripts.xsd | 186 + .../schema/mathml2.0/presentation/space.xsd | 52 + .../schema/mathml2.0/presentation/style.xsd | 69 + .../schema/mathml2.0/presentation/table.xsd | 216 + .../schema/mathml2.0/presentation/tokens.xsd | 124 + .../schema/mathml3.0/algebra-logic.rnc | 84 + .../schema/mathml3.0/algebra-logic.rng | 425 + .../mathml3.0/basic-content-elements.rnc | 49 + .../mathml3.0/basic-content-elements.rng | 147 + .../schema/mathml3.0/calculus_veccalc.rnc | 49 + .../schema/mathml3.0/calculus_veccalc.rng | 143 + .../resources/schema/mathml3.0/constants.rnc | 54 + .../resources/schema/mathml3.0/constants.rng | 165 + .../resources/schema/mathml3.0/errors.rnc | 30 + .../resources/schema/mathml3.0/errors.rng | 57 + .../schema/mathml3.0/linear_algebra.rnc | 44 + .../schema/mathml3.0/linear_algebra.rng | 138 + .../resources/schema/mathml3.0/mathml-p.rnc | 2 + .../mathml3.0/mathml3-cds-pragmatic.rnc | 425 + .../mathml3.0/mathml3-cds-pragmatic.rng | 2909 +++ .../schema/mathml3.0/mathml3-cds.rnc | 67 + .../schema/mathml3.0/mathml3-cds.rng | 119 + .../schema/mathml3.0/mathml3-common.rnc | 84 + .../schema/mathml3.0/mathml3-common.rng | 257 + .../schema/mathml3.0/mathml3-content.rnc | 373 + .../schema/mathml3.0/mathml3-content.rng | 1543 ++ .../schema/mathml3.0/mathml3-deprecated.rnc | 44 + .../schema/mathml3.0/mathml3-deprecated.rng | 111 + .../schema/mathml3.0/mathml3-pragmatic.rnc | 96 + .../schema/mathml3.0/mathml3-pragmatic.rng | 290 + .../schema/mathml3.0/mathml3-presentation.rnc | 536 + .../schema/mathml3.0/mathml3-presentation.rng | 2265 ++ .../mathml3.0/mathml3-strict-content.rnc | 60 + .../mathml3.0/mathml3-strict-content.rng | 203 + .../schema/mathml3.0/mathml3-strict.rnc | 81 + .../schema/mathml3.0/mathml3-strict.rng | 267 + .../resources/schema/mathml3.0/mathml3.rnc | 21 + .../resources/schema/mathml3.0/mathml3.rng | 23 + .../resources/schema/mathml3.0/relations.rnc | 43 + .../resources/schema/mathml3.0/relations.rng | 125 + .../schema/mathml3.0/sequences_series.rnc | 31 + .../schema/mathml3.0/sequences_series.rng | 63 + .../main/resources/schema/mathml3.0/sets.rnc | 52 + .../main/resources/schema/mathml3.0/sets.rng | 168 + .../resources/schema/mathml3.0/specfun.rnc | 79 + .../resources/schema/mathml3.0/specfun.rng | 275 + .../resources/schema/mathml3.0/statistics.rnc | 39 + .../resources/schema/mathml3.0/statistics.rng | 95 + .../OpenDocument-manifest-schema-v1.0-os.rng | 111 + .../odf1.0/OpenDocument-schema-v1.0-os.rng | 17666 +++++++++++++++ .../OpenDocument-strict-schema-v1.0-os.rng | 61 + .../OpenDocument-manifest-schema-v1.1.rng | 111 + .../odf1.1/OpenDocument-schema-v1.1.rng | 17891 +++++++++++++++ .../OpenDocument-strict-schema-v1.1.rng | 61 + .../OpenDocument-v1.2-cos01-dsig-schema.rng | 84 + ...penDocument-v1.2-cos01-manifest-schema.rng | 224 + .../OpenDocument-v1.2-cos01-metadata.owl | 86 + ...enDocument-v1.2-cos01-package-metadata.owl | 81 + .../odf1.2/OpenDocument-v1.2-cos01-schema.rng | 18127 ++++++++++++++++ .../src/main/resources/schema/odf1.2/odf.htm | 107 + .../src/main/resources/schema/odf1.2/pkg.htm | 110 + .../main/resources/schema/odf1_0.properties | 31 + .../main/resources/schema/odf1_1.properties | 34 + .../main/resources/schema/odf1_2.properties | 34 + .../src/main/webapp/META-INF/context.xml | 2 + validator/src/main/webapp/WEB-INF/web.xml | 58 + .../src/main/webapp/jsp/common/footer.jsp | 42 + .../src/main/webapp/jsp/common/header.jsp | 164 + .../src/main/webapp/jsp/common/supporter.jsp | 29 + validator/src/main/webapp/jsp/index.jsp | 31 + validator/src/main/webapp/jsp/info/index.jsp | 31 + validator/src/main/webapp/jsp/info/info.jsp | 94 + validator/src/main/webapp/jsp/validate.jsp | 183 + .../org/odftoolkit/odfvalidator/Logger.java | 190 - .../odfvalidator/ODFPackageValidator.java | 498 - .../odftoolkit/odfvalidator/ODFValidator.java | 386 - .../odfvalidator/InvalidPackageTest.java | 110 + .../odfvalidator/OdfValidatorTestBase.java | 20 +- .../odftoolkit/odfvalidator/ValidTest.java | 45 +- .../resources}/config_template.properties | 0 validator/src/test/resources/empty.odt | Bin 0 -> 8610 bytes .../test/resources/extract-schema.xsl} | 0 .../{misc => src/test/resources}/filter.rng | 0 .../test/resources}/testInvalidPkg1.odt | Bin .../test/resources}/testInvalidPkg2.odt | Bin .../test/resources}/testInvalidPkg3.odt | Bin .../test/resources}/testValid1.odt | Bin .../odfvalidator/InvalidPackageTest.java | 112 - validator/xslt/create_config.xsl | 52 - 171 files changed, 73808 insertions(+), 2602 deletions(-) create mode 100644 validator/.hgeol create mode 100644 validator/LICENSE.txt create mode 100644 validator/README.txt delete mode 100644 validator/ant.properties delete mode 100644 validator/build.xml delete mode 100644 validator/manifest.mf delete mode 100644 validator/nbproject/build-impl.xml delete mode 100644 validator/nbproject/genfiles.properties delete mode 100644 validator/nbproject/project.properties delete mode 100644 validator/nbproject/project.xml create mode 100644 validator/pom.xml delete mode 100644 validator/schema.properties delete mode 100644 validator/schema.user.properties rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/Configuration.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ContentFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/DSigFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ForeignContentFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ForeignContentListener.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/InternalResources.java (84%) create mode 100644 validator/src/main/java/org/odftoolkit/odfvalidator/Logger.java rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/Main.java (98%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ManifestEntry.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ManifestEntryListener.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ManifestFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ManifestListener.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/MathML101Filter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/MathML20Filter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/MetaFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/MetaInformation.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/MetaInformationListener.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/NamespaceFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFFileFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFFileValidator.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFMediaTypes.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFPackageErrorHandler.java (100%) create mode 100644 validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageValidator.java rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFRootPackageValidator.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFStreamValidator.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFSubPackageValidator.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFValidationResult.java (100%) create mode 100644 validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidator.java rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFValidatorException.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ODFValidatorProvider.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/OdfPackageExt.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/OdfValidatorMode.java (69%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/OdfVersion.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/SAXParseExceptionFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/SAXVersionException.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/SchemaErrorHandler.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/SchemaFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/SchemaResourceResolver.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ValidationMessageCollectorErrorFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/ValidationOOoTaskIdErrorFilter.java (100%) rename validator/src/{ => main/java}/org/odftoolkit/odfvalidator/VersionHandler.java (100%) create mode 100644 validator/src/main/resources/META-INF/services/org.iso_relax.verifier.VerifierFactoryLoader create mode 100644 validator/src/main/resources/schema/mathml1.01/math.dtd create mode 100644 validator/src/main/resources/schema/mathml1.01/w3c_ipr_software_notice.html create mode 100644 validator/src/main/resources/schema/mathml2.0/common/common-attribs.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/common/math.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/common/xlink-href.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/arith.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/calculus.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/common-attrib.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/constants.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/constructs.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/elementary-functions.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/functions.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/linear-algebra.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/logic.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/relations.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/semantics.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/sets.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/statistics.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/tokens.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/content/vector-calculus.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/mathml2.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/action.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/characters.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/common-attribs.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/common-types.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/error.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/layout.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/scripts.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/space.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/style.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/table.xsd create mode 100644 validator/src/main/resources/schema/mathml2.0/presentation/tokens.xsd create mode 100644 validator/src/main/resources/schema/mathml3.0/algebra-logic.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/algebra-logic.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/basic-content-elements.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/basic-content-elements.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/calculus_veccalc.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/calculus_veccalc.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/constants.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/constants.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/errors.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/errors.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/linear_algebra.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/linear_algebra.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml-p.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-cds-pragmatic.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-cds-pragmatic.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-cds.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-cds.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-common.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-common.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-content.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-content.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-deprecated.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-deprecated.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-pragmatic.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-pragmatic.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-presentation.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-presentation.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-strict-content.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-strict-content.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-strict.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3-strict.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/mathml3.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/relations.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/relations.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/sequences_series.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/sequences_series.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/sets.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/sets.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/specfun.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/specfun.rng create mode 100644 validator/src/main/resources/schema/mathml3.0/statistics.rnc create mode 100644 validator/src/main/resources/schema/mathml3.0/statistics.rng create mode 100644 validator/src/main/resources/schema/odf1.0/OpenDocument-manifest-schema-v1.0-os.rng create mode 100644 validator/src/main/resources/schema/odf1.0/OpenDocument-schema-v1.0-os.rng create mode 100644 validator/src/main/resources/schema/odf1.0/OpenDocument-strict-schema-v1.0-os.rng create mode 100644 validator/src/main/resources/schema/odf1.1/OpenDocument-manifest-schema-v1.1.rng create mode 100644 validator/src/main/resources/schema/odf1.1/OpenDocument-schema-v1.1.rng create mode 100644 validator/src/main/resources/schema/odf1.1/OpenDocument-strict-schema-v1.1.rng create mode 100644 validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-dsig-schema.rng create mode 100644 validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-manifest-schema.rng create mode 100644 validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-metadata.owl create mode 100644 validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-package-metadata.owl create mode 100644 validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-schema.rng create mode 100644 validator/src/main/resources/schema/odf1.2/odf.htm create mode 100644 validator/src/main/resources/schema/odf1.2/pkg.htm create mode 100644 validator/src/main/resources/schema/odf1_0.properties create mode 100644 validator/src/main/resources/schema/odf1_1.properties create mode 100644 validator/src/main/resources/schema/odf1_2.properties create mode 100644 validator/src/main/webapp/META-INF/context.xml create mode 100644 validator/src/main/webapp/WEB-INF/web.xml create mode 100644 validator/src/main/webapp/jsp/common/footer.jsp create mode 100644 validator/src/main/webapp/jsp/common/header.jsp create mode 100644 validator/src/main/webapp/jsp/common/supporter.jsp create mode 100644 validator/src/main/webapp/jsp/index.jsp create mode 100644 validator/src/main/webapp/jsp/info/index.jsp create mode 100644 validator/src/main/webapp/jsp/info/info.jsp create mode 100644 validator/src/main/webapp/jsp/validate.jsp delete mode 100644 validator/src/org/odftoolkit/odfvalidator/Logger.java delete mode 100644 validator/src/org/odftoolkit/odfvalidator/ODFPackageValidator.java delete mode 100644 validator/src/org/odftoolkit/odfvalidator/ODFValidator.java create mode 100644 validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java rename validator/{test => src/test/java}/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java (64%) rename validator/{test => src/test/java}/org/odftoolkit/odfvalidator/ValidTest.java (51%) rename validator/{misc => src/test/resources}/config_template.properties (100%) create mode 100644 validator/src/test/resources/empty.odt rename validator/{xslt/extract_schema.xsl => src/test/resources/extract-schema.xsl} (100%) rename validator/{misc => src/test/resources}/filter.rng (100%) rename validator/{test-resources => src/test/resources}/testInvalidPkg1.odt (100%) rename validator/{test-resources => src/test/resources}/testInvalidPkg2.odt (100%) rename validator/{test-resources => src/test/resources}/testInvalidPkg3.odt (100%) rename validator/{test-resources => src/test/resources}/testValid1.odt (100%) delete mode 100644 validator/test/org/odftoolkit/odfvalidator/InvalidPackageTest.java delete mode 100644 validator/xslt/create_config.xsl diff --git a/validator/.hgeol b/validator/.hgeol new file mode 100644 index 0000000000..7ac2517125 --- /dev/null +++ b/validator/.hgeol @@ -0,0 +1,27 @@ +[patterns] +**.html = native +**.java = native +**.rng = native +**.txt = native +**.vm = native +**.xml = native +**.xsl = native +**.jpeg = BIN +**.png = BIN +**.odc = BIN +**.otc = BIN +**.odf = BIN +**.otf = BIN +**.odb = BIN +**.odg = BIN +**.otg = BIN +**.odi = BIN +**.oti = BIN +**.odp = BIN +**.otp = BIN +**.ods = BIN +**.ots = BIN +**.odt = BIN +**.ott = BIN +**.odm = BIN +**.oth = BIN diff --git a/validator/LICENSE.txt b/validator/LICENSE.txt new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/validator/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/validator/README.txt b/validator/README.txt new file mode 100644 index 0000000000..eb74ee0dda --- /dev/null +++ b/validator/README.txt @@ -0,0 +1,49 @@ +************************************************************* +* ODFDOM Java Library * +* * +************************************************************* + + +About ODFDOM +------------- + +ODFDOM is an OpenDocument Format (ODF) framework. Its purpose +is to provide an easy common way to create, access and +manipulate ODF files, without requiring detailed knowledge of +the ODF specification. It is designed to provide the ODF +developer community with an easy lightwork programming API +portable to any object-oriented language. + +The current reference implementation is written in Java. + + +Documentation +-------------- + +The latest release notes and a summary of API changes (if any) are available +online at the project's Wiki page: + http://odftoolkit.org/projects/odfdom/pages/ReleaseNotes + +In general, the Wiki page is a great place to start when looking for online +documentation and other information about the odfdom project. + http://odftoolkit.org/projects/odfdom/pages/Home + +API documentation (Javadoc) can be downloaded from the project's download area: + http://odftoolkit.org/projects/odfdom/downloads + +The Javadoc can also be viewed online and is available for each version, e.g. + http://odfdom.odftoolkit.org/0.8.6/docs/api/ + + +License +-------- + +Apache License, Version 2.0. Please see file LICENSE.txt. + + +Installation +------------- + +Just put the file odfdom.jar in your classpath. You will +need Apache Xerces-J as well. Get it from + http://xml.apache.org/dist/xerces-j/ diff --git a/validator/ant.properties b/validator/ant.properties deleted file mode 100644 index 42ef5c3c7d..0000000000 --- a/validator/ant.properties +++ /dev/null @@ -1,8 +0,0 @@ -# The following properties have to be set only if the ODF 1.0 and 1.1 schema -# shall be extracted from the specification documents. - -# location of the odftoolkit.org odfxsltrunner project -reference.odfxsltrunner.jar=../conformancetools~odf-xslt-runner-src/dist/odfxsltrunner.jar - -# location of the odftoolkit.org odfxsltrunner task project -reference.odfxsltrunner-task.jar=../conformancetools~odf-xslt-runner-task-src/dist/odfxsltrunnertask.jar diff --git a/validator/build.xml b/validator/build.xml deleted file mode 100644 index 09ed301985..0000000000 --- a/validator/build.xml +++ /dev/null @@ -1,303 +0,0 @@ - - - - - Builds, tests, and runs the project ODFValidator. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/validator/manifest.mf b/validator/manifest.mf deleted file mode 100644 index 328e8e5bc3..0000000000 --- a/validator/manifest.mf +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -X-COMMENT: Main-Class will be added automatically by build - diff --git a/validator/nbproject/build-impl.xml b/validator/nbproject/build-impl.xml deleted file mode 100644 index ff27ae6f16..0000000000 --- a/validator/nbproject/build-impl.xml +++ /dev/null @@ -1,894 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set src.dir - Must set test.src.dir - Must set build.dir - Must set dist.dir - Must set build.classes.dir - Must set dist.javadoc.dir - Must set build.test.classes.dir - Must set build.test.results.dir - Must set build.classes.excludes - Must set dist.jar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - To run this application from the command line without Ant, try: - - - - - - - java -cp "${run.classpath.with.dist.jar}" ${main.class} - - - - - - - - - - - - To run this application from the command line without Ant, try: - - java -jar "${dist.jar.resolved}" - - - - - - - - To run this application from the command line without Ant, try: - - java -jar "${dist.jar.resolved}" - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set run.class - - - - Must select one file in the IDE or set run.class - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set debug.class - - - - - Must select one file in the IDE or set debug.class - - - - - Must set fix.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - Some tests failed; see details above. - - - - - - - - - Must select some files in the IDE or set test.includes - - - - Some tests failed; see details above. - - - - - Must select one file in the IDE or set test.class - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/validator/nbproject/genfiles.properties b/validator/nbproject/genfiles.properties deleted file mode 100644 index 804d8952e4..0000000000 --- a/validator/nbproject/genfiles.properties +++ /dev/null @@ -1,8 +0,0 @@ -build.xml.data.CRC32=cec7d023 -build.xml.script.CRC32=729450ca -build.xml.stylesheet.CRC32=be360661 -# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. -# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=6a1772d4 -nbproject/build-impl.xml.script.CRC32=59408c72 -nbproject/build-impl.xml.stylesheet.CRC32=229523de@1.38.3.45 diff --git a/validator/nbproject/project.properties b/validator/nbproject/project.properties deleted file mode 100644 index 6fe205d37e..0000000000 --- a/validator/nbproject/project.properties +++ /dev/null @@ -1,77 +0,0 @@ -annotation.processing.enabled=true -annotation.processing.enabled.in.editor=false -annotation.processing.run.all.processors=true -application.desc=This tools validates ODF documents. -application.homepage=http://odftoolkit.org/projects/conformancetools/pages/ODFValidator -application.title=ODF Validator -application.vendor=Oracle -build.classes.dir=${build.dir}/classes -build.classes.excludes=**/*.java,**/*.form -# This directory is removed when the project is cleaned: -build.dir=build -build.generated.dir=${build.dir}/generated -build.generated.sources.dir=${build.dir}/generated-sources -# Only compile against the classpath explicitly listed here: -build.sysclasspath=ignore -build.test.classes.dir=${build.dir}/test/classes -build.test.results.dir=${build.dir}/test/results -debug.classpath=\ - ${run.classpath} -debug.test.classpath=\ - ${run.test.classpath} -# This directory is removed when the project is cleaned: -dist.dir=dist -dist.jar=${dist.dir}/odfvalidator.jar -dist.javadoc.dir=${dist.dir}/javadoc -endorsed.classpath= -excludes= -file.reference.odfvalidator-test-resources=test-resources -includes=** -jar.compress=false -javac.classpath=\ - ${libs.ODFDOM0.8.7.classpath} -# Space-separated list of extra javac options -javac.compilerargs=-Xlint:unchchecked -javac.deprecation=false -javac.processorpath=\ - ${javac.classpath} -javac.source=1.5 -javac.target=1.5 -javac.test.classpath=\ - ${javac.classpath}:\ - ${build.classes.dir}:\ - ${libs.junit.classpath}:\ - ${libs.junit_4.classpath} -javadoc.additionalparam= -javadoc.author=false -javadoc.encoding=${source.encoding} -javadoc.noindex=false -javadoc.nonavbar=false -javadoc.notree=false -javadoc.private=false -javadoc.splitindex=true -javadoc.use=true -javadoc.version=false -javadoc.windowtitle= -main.class=org.odftoolkit.odfvalidator.Main -manifest.file=manifest.mf -meta.inf.dir=${src.dir}/META-INF -platform.active=default_platform -run.classpath=\ - ${build.classes.dir}:\ - ${javac.classpath}:\ - ${libs.Xerces2.9.1.classpath}:\ - ${libs.MSV.classpath}:\ - ${libs.ISO-Relax-JAXP-Bridge.classpath} -# Space-separated list of JVM arguments used when running the project -# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value -# or test-sys-prop.name=value to set system properties for unit tests): -run.jvmargs=-Djavax.xml.validation.SchemaFactory:http://relaxng.org/ns/structure/1.0=org.iso_relax.verifier.jaxp.validation.RELAXNGSchemaFactoryImpl -Dorg.iso_relax.verifier.VerifierFactoryLoader=com.sun.msv.verifier.jarv.FactoryLoaderImpl -run.test.classpath=\ - ${javac.test.classpath}:\ - ${run.classpath}:\ - ${build.test.classes.dir}:\ - ${file.reference.odfvalidator-test-resources} -source.encoding=UTF-8 -src.dir=src -test.src.dir=test diff --git a/validator/nbproject/project.xml b/validator/nbproject/project.xml deleted file mode 100644 index a02936e6e5..0000000000 --- a/validator/nbproject/project.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - org.netbeans.modules.java.j2seproject - - - odfvalidator - 1.6.5 - - - - - - - - - - diff --git a/validator/pom.xml b/validator/pom.xml new file mode 100644 index 0000000000..f370756204 --- /dev/null +++ b/validator/pom.xml @@ -0,0 +1,460 @@ + + + 4.0.0 + + + org.odftoolkit + odfvalidator + 0.8.7 + war + + org.sonatype.oss + oss-parent + 7 + + + + org.odftoolkit + odfdom-java + 0.8.7 + + + commons-fileupload + commons-fileupload + 1.2.2 + + + net.java.dev.msv + msv-core + 2011.1 + + + org.iso_relax.verifier.jaxp.validation + isorelax-jaxp-bridge + 1.0 + + + xerces + xercesImpl + 2.9.1 + + + junit + junit + 4.8.1 + test + + + + UTF-8 + yyyy-MM-dd'T'HH:mm:ss + Tomcat + + + + + odfvalidator + + + org.apache.maven.wagon + wagon-webdav-jackrabbit + 1.0-beta-7 + + + + + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + 512m + 1024m + true + + + + org.apache.maven.plugins + maven-jar-plugin + 2.3.1 + + + true + + ${project.version} + + + + odfvalidator + + odfdom + ${project.version} + http://odftoolkit.org + ${build.timestamp} + 1.2 + + + + + + + + maven-release-plugin + 2.1 + + + forked-path + + + + org.apache.maven.plugins + maven-surefire-plugin + + 2.6 + + + ${project.version} + ${build.timestamp} + org.odftoolkit.odfdom.pkg.DefaultErrorHandler + + + + + maven-source-plugin + 2.1.2 + + + attach-sources + + jar + + + + + + maven-assembly-plugin + + + jar-with-dependencies + + + + + single + package + + single + + + + + + + + + + + org.codehaus.mojo + cobertura-maven-plugin + 2.4 + + + + org/odftoolkit/**/*Test.class + + + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + 2.5 + + + integration-tests + + report-only + + + failsafe-report + + + + + + + + + ODF Validator + ODF Validator is a tool that validates OpenDocument files and checks them for certain conformance criteria. + + http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html + 2008 + + + Apache 2 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + Apache Project + http://www.apache.org/ + + + + svanteschubert + Svante + svanteschubert AT odftoolkit.org + http://odftoolkit.org/people/7-Svante-Schubert + + architect + developer + + +1 + + http://asset-1.odftoolkit.org/attachments/images/person/SvanteSchubert-2_small.jpg + + + + Devin + Han Biao + devin AT odftoolkit.org + http://odftoolkit.org/people/748-Devin + IBM + http://www.ibm.com/ + + developer + + +8 + + + Daisy + Ying Chun Guo + Daisy AT odftoolkit.org + http://odftoolkit.org/people/274-Ying-Chun-Guo + IBM + http://www.ibm.com/ + + developer + + +8 + + http://asset-2.odftoolkit.org/attachments/images/person/Daisy.jpg + + + + FrankMeies + Frank + FrankMeies AT odftoolkit.org + http://odftoolkit.org/people/332-FrankMeies + + developer + + +1 + + http://asset-1.odftoolkit.org/attachments/images/person/FrankMeies.jpg + + + + lars_behrmann + Lars + lars_behrmann AT odftoolkit.org + http://odftoolkit.org/people/6-Lars-Behrmann + + developer + + +1 + + http://asset-2.odftoolkit.org/attachments/images/person/lars_behrmann_small.png + + + + steffeng + Steffen + steffeng AT odftoolkit.org + http://odftoolkit.org/people/418-steffeng + + developer + + +1 + + + hans-peter + Hans-Peter + hans-peter AT odftoolkit.org + http://odftoolkit.org/people/463-hans-peter + + developer + + +1 + + + bei + Bernd + bei AT odftoolkit.org + http://odftoolkit.org/people/16-Bernd-Eilers + + developer + + +1 + + http://asset-0.odftoolkit.org/attachments/images/person/bei.JPG + + + + mst + Michael + mst AT odftoolkit.org + http://odftoolkit.org/people/768-Michael-Stahl + + developer + + +1 + + + clippka + Christian + clippka AT odftoolkit.org + http://odftoolkit.org/people/259-clippka + + developer + + +1 + + + + + + Bugzilla + https://odftoolkit.org/bugzilla/enter_bug.cgi?product=odfdom + + + + + Dev List + http://odftoolkit.org/projects/odfdom/lists/dev/archive + + + Users List + http://odftoolkit.org/projects/odfdom/lists/users/archive + + + Issues List + http://odftoolkit.org/projects/odfdom/lists/issues/archive + + + Commits List + http://odftoolkit.org/projects/odfdom/lists/commits/archive + + + + scm:hg:https://hg.odftoolkit.org/hg/odfdom~developer + scm:hg:https://hg.odftoolkit.org/hg/odfdom~developer + http://odftoolkit.org/projects/odfdom/sources/developer/show + + + + + integration-test + + + integration-test + + + + verify + + + org.apache.maven.plugins + maven-failsafe-plugin + 2.5 + + + failsafe-it + integration-test + + integration-test + verify + + + ${basedir}/target/odfdom.jar + + performance + 1 + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + 2.6 + + + ${project.version} + ${build.timestamp} + true + + true + + + + + + + + release-sign-artifacts + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.1 + + + sign-artifacts + verify + + sign + + + + + + + + + diff --git a/validator/schema.properties b/validator/schema.properties deleted file mode 100644 index 164c8671d1..0000000000 --- a/validator/schema.properties +++ /dev/null @@ -1,9 +0,0 @@ -# State of the OpenDocument v1.0 specification -opendocument.v10.schema.state=-os - -# State of the OpenDocument v1.1 specification -opendocument.v11.schema.state= - -# State of the OpenDocument v1.2 specification -opendocument.v12.part1.schema.state=-cd05-rev02 -opendocument.v12.part3.schema.state=-cd05-rev02 diff --git a/validator/schema.user.properties b/validator/schema.user.properties deleted file mode 100644 index c76eba34ae..0000000000 --- a/validator/schema.user.properties +++ /dev/null @@ -1,31 +0,0 @@ -#Set these properties either in this file, or in the nbproject/private/private.properties file. - -# Directory where the OpenDocument v1.0 schemas or specification are stored -opendocument.v10.schema.dir= - -# Directory where the OpenDocument v1.1 schemas or specification are stored -opendocument.v11.schema.dir= - -# Directory where the OpenDocument v1.2 schemas are stored -opendocument.v12.schema.dir= - -# Extract OpenDocument v1.0 schemas from specification? -opendocument.v10.schema.extract= - -# Extract OpenDocument v1.1 schemas from specification? -opendocument.v11.schema.extract= - -# Directory where the MathML 1.01 DTD is stored -mathml.schema.dir= - -# Directory where the MathML 2.0 schema is stored -mathml2.schema.dir= - -# Use MathML2 XSD schema (default is to use the MathML 1.01 DTD) -use.mathml2.xsd=true - -# Directory of test documents -testdocs.dir= - -# Warning level for validation (-v or -w) -validator.warning.level=-v \ No newline at end of file diff --git a/validator/src/org/odftoolkit/odfvalidator/Configuration.java b/validator/src/main/java/org/odftoolkit/odfvalidator/Configuration.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/Configuration.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/Configuration.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ContentFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ContentFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ContentFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ContentFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/DSigFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/DSigFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/DSigFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/DSigFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ForeignContentFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ForeignContentFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ForeignContentListener.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentListener.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ForeignContentListener.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ForeignContentListener.java diff --git a/validator/src/org/odftoolkit/odfvalidator/InternalResources.java b/validator/src/main/java/org/odftoolkit/odfvalidator/InternalResources.java similarity index 84% rename from validator/src/org/odftoolkit/odfvalidator/InternalResources.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/InternalResources.java index fff520c41c..28ca646e5a 100644 --- a/validator/src/org/odftoolkit/odfvalidator/InternalResources.java +++ b/validator/src/main/java/org/odftoolkit/odfvalidator/InternalResources.java @@ -33,7 +33,14 @@ static boolean isInternalResourceIdentifer( String aPath ) static String getResourcePath( String aPath ) { - return "/".concat(aPath.substring(INTERNAL_RESOURCE_PREFIX.length())); + String newPath = null; + if(aPath.startsWith("internal:")){ + newPath = aPath.substring(INTERNAL_RESOURCE_PREFIX.length()); + } + if(!newPath.startsWith("/")){ + newPath = "/".concat(aPath.substring(INTERNAL_RESOURCE_PREFIX.length())); + } + return newPath; } static String createInternalResourceIdentifier( String aPath ) diff --git a/validator/src/main/java/org/odftoolkit/odfvalidator/Logger.java b/validator/src/main/java/org/odftoolkit/odfvalidator/Logger.java new file mode 100644 index 0000000000..673864df55 --- /dev/null +++ b/validator/src/main/java/org/odftoolkit/odfvalidator/Logger.java @@ -0,0 +1,246 @@ +/************************************************************************ + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER + * + * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. + * + * Use is subject to license terms. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also + * obtain a copy of the License at http://odftoolkit.org/docs/license.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + * + ************************************************************************/ +package org.odftoolkit.odfvalidator; + +import java.io.PrintStream; + +import org.xml.sax.SAXParseException; + +public class Logger { + + public enum LogLevel { + + ERROR, + WARNING, + INFO + }; + private String m_aFileName; + private String m_aEntryName; + private PrintStream m_aOut; + private int m_nErrors; + private int m_nWarnings; + private LogLevel m_nLevel; + private Logger m_aParentLogger; + private static final String INFO_PREFIX = "Info:"; + private static final String WARNING_PREFIX = "Warning:"; + private static final String ERROR_PREFIX = "Error:"; + private static final String FATAL_PREFIX = "Fatal:"; + private static boolean m_isHTMLEnabled; + + /** Creates a new instance of Logger */ + Logger(String aFileName, String aEntryName, PrintStream aOut, LogLevel nLevel) { + m_aFileName = aFileName; + m_aEntryName = aEntryName; + m_aOut = aOut; + m_nLevel = nLevel; + m_nErrors = 0; + m_nWarnings = 0; + m_aParentLogger = null; + } + + /** Creates a new instance of Logger */ + Logger(String aEntryName, Logger aParentLogger) { + m_aFileName = aParentLogger.m_aFileName; + m_aEntryName = aEntryName; + m_aOut = aParentLogger.m_aOut; + m_nLevel = aParentLogger.m_nLevel; + m_nErrors = 0; + m_nWarnings = 0; + m_aParentLogger = aParentLogger; + } + + static void enableHTML(boolean isHTMLEnabled) { + m_isHTMLEnabled = isHTMLEnabled; + } + + public PrintStream getOutputStream() { + return m_aOut; + } + + public void setOutputStream(PrintStream aOut) { + m_aOut = aOut; + } + + boolean hasError() { + return m_nErrors > 0; + } + + boolean hasWarning() { + return m_nWarnings > 0; + } + + int getErrorCount() { + return m_nErrors; + } + + int getWarningCount() { + return m_nWarnings; + } + + void logWarning(String aMsg) { + if (m_nLevel.compareTo(LogLevel.WARNING) >= 0) { + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + logMessage(WARNING_PREFIX, aMsg); + } + incWarnings(); + } + + void logFatalError(String aMsg) { + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + logMessage(FATAL_PREFIX, aMsg); + incErrors(); + } + + void logError(String aMsg) { + if (m_nLevel.compareTo(LogLevel.ERROR) >= 0) { + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + logMessage(ERROR_PREFIX, aMsg); + } + incErrors(); + } + + void logInfo(String aMsg, boolean bForceOutput) { + if (m_nLevel.compareTo(LogLevel.INFO) >= 0 || bForceOutput) { + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + logMessage(INFO_PREFIX, aMsg); + } + } + + void logWarning(SAXParseException e) { + if (m_nLevel.compareTo(LogLevel.WARNING) >= 0) { + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + logMessage(WARNING_PREFIX, e); + } + incWarnings(); + } + + void logFatalError(SAXParseException e) { + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + logMessage(FATAL_PREFIX, e); + incErrors(); + } + + void logError(SAXParseException e) { + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + if (m_nLevel.compareTo(LogLevel.ERROR) >= 0) { + logMessage(ERROR_PREFIX, e); + } + incErrors(); + } + + void logSummaryInfo() { + logInfo((hasError() ? getErrorCount() : "no") + " errors, " + (hasWarning() ? getWarningCount() : "no") + " warnings", false); + } + + private void printFileEntryPrefix() { + m_aOut.print(m_aFileName); + if (m_aEntryName != null && m_aEntryName.length() > 0) { + m_aOut.print("/"); + m_aOut.print(m_aEntryName); + } + } + + private void logMessage(String aPrefix, SAXParseException e) { + // filepath + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + printFileEntryPrefix(); + m_aOut.print("["); + m_aOut.print(e.getLineNumber()); + m_aOut.print(","); + m_aOut.print(e.getColumnNumber()); + m_aOut.print("]: "); + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + + // prefix, e.g. warning + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + m_aOut.print(aPrefix); + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + + m_aOut.print(" " + e.getMessage()); + if (m_isHTMLEnabled) { + m_aOut.print("
"); + } + m_aOut.println(); + } + + private void logMessage(String aPrefix, String aMsg) { + // filepath + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + printFileEntryPrefix(); + m_aOut.print(": "); + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + + // prefix, e.g. warning + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + m_aOut.print(aPrefix); + if (m_isHTMLEnabled) { + m_aOut.print(""); + } + m_aOut.print(" " + aMsg); + if (m_isHTMLEnabled) { + m_aOut.print("

"); + } + m_aOut.println(); + } + + private void incErrors() { + ++m_nErrors; + if (m_aParentLogger != null) { + m_aParentLogger.incErrors(); + } + } + + private void incWarnings() { + ++m_nWarnings; + if (m_aParentLogger != null) { + m_aParentLogger.incWarnings(); + } + } +} diff --git a/validator/src/org/odftoolkit/odfvalidator/Main.java b/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java similarity index 98% rename from validator/src/org/odftoolkit/odfvalidator/Main.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/Main.java index 36b541936b..746a31ec8d 100644 --- a/validator/src/org/odftoolkit/odfvalidator/Main.java +++ b/validator/src/main/java/org/odftoolkit/odfvalidator/Main.java @@ -72,7 +72,7 @@ public static void main(String[] aArgs) { String aArg = aArgIter.next(); if( aArg.equals("-c") ) { - eMode = OdfValidatorMode.CHECK_CONFORMANCE; + eMode = OdfValidatorMode.CONFORMANCE; } else if( aArg.equals("-d") ) { @@ -80,7 +80,7 @@ else if( aArg.equals("-d") ) } else if( aArg.equals("-e") ) { - eMode = OdfValidatorMode.CHECK_EXTENDED_CONFORMANCE; + eMode = OdfValidatorMode.EXTENDED_CONFORMANCE; } else if( aArg.equals("-f") ) { diff --git a/validator/src/org/odftoolkit/odfvalidator/ManifestEntry.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntry.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ManifestEntry.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntry.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ManifestEntryListener.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntryListener.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ManifestEntryListener.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ManifestEntryListener.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ManifestFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ManifestFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ManifestFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ManifestListener.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ManifestListener.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ManifestListener.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ManifestListener.java diff --git a/validator/src/org/odftoolkit/odfvalidator/MathML101Filter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/MathML101Filter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/MathML101Filter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/MathML101Filter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/MathML20Filter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/MathML20Filter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/MathML20Filter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/MathML20Filter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/MetaFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/MetaFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/MetaFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/MetaFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/MetaInformation.java b/validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformation.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/MetaInformation.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformation.java diff --git a/validator/src/org/odftoolkit/odfvalidator/MetaInformationListener.java b/validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformationListener.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/MetaInformationListener.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/MetaInformationListener.java diff --git a/validator/src/org/odftoolkit/odfvalidator/NamespaceFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/NamespaceFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/NamespaceFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/NamespaceFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFFileFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFFileFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFFileValidator.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileValidator.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFFileValidator.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFFileValidator.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFMediaTypes.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFMediaTypes.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFMediaTypes.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFMediaTypes.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFPackageErrorHandler.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageErrorHandler.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFPackageErrorHandler.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageErrorHandler.java diff --git a/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageValidator.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageValidator.java new file mode 100644 index 0000000000..03a9694539 --- /dev/null +++ b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFPackageValidator.java @@ -0,0 +1,435 @@ +/************************************************************************ + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER + * + * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. + * + * Use is subject to license terms. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also + * obtain a copy of the License at http://odftoolkit.org/docs/license.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + * + ************************************************************************/ +package org.odftoolkit.odfvalidator; + +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintStream; +import java.util.Iterator; +import java.util.Set; +import java.util.zip.ZipException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import javax.xml.transform.sax.SAXSource; +import javax.xml.validation.Validator; +import org.odftoolkit.odfdom.doc.OdfDocument; +import org.odftoolkit.odfdom.pkg.OdfPackage; +import org.odftoolkit.odfdom.pkg.manifest.EncryptionData; +import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry; +import org.xml.sax.InputSource; +import org.xml.sax.XMLFilter; +import org.xml.sax.XMLReader; + +import org.xml.sax.helpers.DefaultHandler; + +/** + * Validator for Files + */ +abstract class ODFPackageValidator { + + static final String DOCUMENT_SETTINGS = "document-settings"; + static final String DOCUMENT_STYLES = "document-styles"; + static final String DOCUMENT_CONTENT = "document-content"; + protected Logger.LogLevel m_nLogLevel; + protected OdfValidatorMode m_eMode = OdfValidatorMode.CONFORMANCE; + protected SAXParseExceptionFilter m_aFilter = null; + protected ODFValidatorProvider m_aValidatorProvider = null; + protected ODFValidationResult m_aResult = null; + protected OdfVersion m_aConfigVersion = null; + private SAXParserFactory m_aSAXParserFactory = null; + protected OdfVersion mOdfPackageVersion = null; + + protected ODFPackageValidator(Logger.LogLevel nLogLevel, OdfValidatorMode eMode, OdfVersion aVersion, + SAXParseExceptionFilter aFilter, ODFValidatorProvider aValidatorProvider) { + m_nLogLevel = nLogLevel; + m_eMode = eMode; + m_aFilter = aFilter; + m_aValidatorProvider = aValidatorProvider; + m_aConfigVersion = aVersion; + m_aResult = new ODFValidationResult(aVersion, eMode); + } + + protected abstract String getLoggerName(); + + protected abstract String getDocumentPath(); + + protected abstract OdfPackage getPackage(Logger aLogger); + + protected abstract String getStreamName(String aEntry); + + protected boolean validate(PrintStream aOut) throws ODFValidatorException { + Logger aLogger = + new Logger(getLoggerName(), getDocumentPath(), aOut, m_nLogLevel); + return _validate(aLogger); + } + + protected boolean validate(Logger aParentLogger) throws ODFValidatorException { + Logger aLogger = + new Logger(getDocumentPath(), aParentLogger); + return _validate(aLogger); + } + + + OdfVersion getOdfPackageVersion(){ + return mOdfPackageVersion; + } + + private boolean _validate(Logger aLogger) throws ODFValidatorException { + boolean bHasErrors = false; + + OdfPackage aPkg = getPackage(aLogger); + if (aPkg == null) { + return true; + } + + try { + String aDocVersion = getVersion(aLogger); + if (aDocVersion != null) { + aLogger.logInfo("ODF version of root document: " + aDocVersion, false); + mOdfPackageVersion = OdfVersion.valueOf(aDocVersion, true); + } + OdfVersion aVersion = m_aConfigVersion == null ? OdfVersion.valueOf(aDocVersion, true) : m_aConfigVersion; + + bHasErrors |= validatePre(aLogger, aVersion); + aLogger.logInfo("Media Type: " + m_aResult.getMediaType(), false); + + bHasErrors |= validateMeta(aLogger, getStreamName(OdfDocument.OdfXMLFile.META.getFileName()), aVersion, true); + bHasErrors |= validateEntry(aLogger, getStreamName(OdfDocument.OdfXMLFile.SETTINGS.getFileName()), DOCUMENT_SETTINGS, aVersion); + bHasErrors |= validateEntry(aLogger, getStreamName(OdfDocument.OdfXMLFile.STYLES.getFileName()), DOCUMENT_STYLES, aVersion); + if (m_aResult.getMediaType().equals(ODFMediaTypes.FORMULA_MEDIA_TYPE)) { + bHasErrors |= validateMathML(aLogger, getStreamName(OdfDocument.OdfXMLFile.CONTENT.getFileName()), aVersion); + } else { + bHasErrors |= validateEntry(aLogger, getStreamName(OdfDocument.OdfXMLFile.CONTENT.getFileName()), DOCUMENT_CONTENT, aVersion); + } + bHasErrors |= validatePost(aLogger, aVersion); + } catch (ZipException e) { + aLogger.logFatalError(e.getMessage()); + } catch (IOException e) { + aLogger.logFatalError(e.getMessage()); + } + + logSummary(bHasErrors, aLogger); + + return bHasErrors || aLogger.hasError(); + } + + protected boolean validatePre(Logger aLogger, OdfVersion aVersion) throws ODFValidatorException, IOException { + return false; + } + + protected boolean validatePost(Logger aLogger, OdfVersion aVersion) throws ODFValidatorException, IOException { + return false; + } + + protected void logSummary(boolean bHasErrors, Logger aLogger) { + } + + protected boolean validateEntry(Logger aParentLogger, String aEntryName, String aLocalElementName, OdfVersion aVersion) throws IOException, ZipException, IllegalStateException, ODFValidatorException { + Logger aLogger = new Logger(aEntryName, aParentLogger); + XMLFilter aFilter = new ContentFilter(aLogger, aLocalElementName); + if ((m_eMode == OdfValidatorMode.CONFORMANCE && aVersion.compareTo(OdfVersion.V1_1) <= 0) + || m_eMode == OdfValidatorMode.EXTENDED_CONFORMANCE) { + XMLFilter aAlienFilter = new ForeignContentFilter(aLogger, aVersion, m_aResult); + aAlienFilter.setParent(aFilter); + aFilter = aAlienFilter; + } + Validator aValidator = null; + if (m_eMode == OdfValidatorMode.VALIDATE_STRICT) { + aValidator = m_aValidatorProvider.getStrictValidator(aParentLogger.getOutputStream(), aVersion); + } else { + aValidator = m_aValidatorProvider.getValidator(aParentLogger.getOutputStream(), aVersion); + } +// Validator aValidator = m_eMode == OdfValidatorMode.VALIDATE_STRICT ? m_aValidatorProvider.getStrictValidator(aParentLogger.getOutputStream(), aVersion) +// : m_aValidatorProvider.getValidator(aParentLogger.getOutputStream(), aVersion); + return validateEntry(aFilter, aValidator, aLogger, aEntryName); + } + + private boolean validateMeta(Logger aParentLogger, String aEntryName, OdfVersion aVersion, boolean bIsRoot) throws IOException, ZipException, IllegalStateException, ODFValidatorException { + Logger aLogger = new Logger(aEntryName, aParentLogger); + XMLFilter aFilter = new MetaFilter(aLogger, m_aResult); + if ((m_eMode == OdfValidatorMode.CONFORMANCE && aVersion.compareTo(OdfVersion.V1_1) <= 0) + || m_eMode == OdfValidatorMode.EXTENDED_CONFORMANCE) { + XMLFilter aAlienFilter = new ForeignContentFilter(aLogger, aVersion, m_aResult); + aAlienFilter.setParent(aFilter); + aFilter = aAlienFilter; + } + + Validator aValidator = null; + if (m_eMode == OdfValidatorMode.VALIDATE_STRICT) { + aValidator = m_aValidatorProvider.getStrictValidator(aParentLogger.getOutputStream(), aVersion); + } else { + aValidator = m_aValidatorProvider.getValidator(aParentLogger.getOutputStream(), aVersion); + } + return validateEntry(aFilter, aValidator, aLogger, aEntryName); + } + + private boolean validateMathML(Logger aParentLogger, String aEntryName, OdfVersion aVersion) throws IOException, ZipException, IllegalStateException, ODFValidatorException { + Logger aLogger = new Logger(aEntryName, aParentLogger); + String aMathMLDTDSystemId = m_aValidatorProvider.getMathMLDTDSystemId(aVersion); + if (aMathMLDTDSystemId != null) { + // validate using DTD + return parseEntry(new MathML101Filter(aMathMLDTDSystemId, aLogger), aLogger, aEntryName, true); + } else { + Validator aMathMLValidator = m_aValidatorProvider.getMathMLValidator(aParentLogger.getOutputStream(), null); + if (aMathMLValidator == null) { + aLogger.logInfo("MathML schema is not available. Validation has been skipped.", false); + return false; + } + return validateEntry(new MathML20Filter(aLogger), aMathMLValidator, aLogger, aEntryName); + } + } + + protected boolean validateDSig(Logger aParentLogger, String aEntryName, OdfVersion aVersion) throws IOException, ZipException, IllegalStateException, ODFValidatorException { + Validator aValidator = m_aValidatorProvider.getDSigValidator(aParentLogger.getOutputStream(), aVersion); + Logger aLogger = new Logger(aEntryName, aParentLogger); + if (aValidator == null) { + aLogger.logWarning("Signature not validated because there is no Signature Validator configured for the selected Configuration"); + return false; + } + + return validateEntry(new DSigFilter(aLogger), aValidator, aLogger, aEntryName); + } + + protected boolean validateEntry(XMLFilter aFilter, + Validator aValidator, Logger aLogger, + String aEntryName) throws IOException, ZipException, IllegalStateException, ODFValidatorException { + OdfPackage aPkg = getPackage(aLogger); + + if (!aEntryName.equals(OdfPackage.OdfFile.MANIFEST.getPath()) && isEncrypted(aEntryName, aLogger)) { + return false; + } + + InputStream aInStream = null; + try { + aInStream = aPkg.getInputStream(aEntryName, true); + } catch (Exception e) { + throw new ODFValidatorException(e); + } + + + if (aValidator == null) { + + aLogger.logWarning("no Validator configured in selected Configuration for this file type"); + return false; + } + + + + return aInStream != null ? validate(aInStream, aFilter, aValidator, aLogger) : false; + } + + private boolean validate(InputStream aInStream, + XMLFilter aFilter, + javax.xml.validation.Validator aValidator, + Logger aLogger) throws ODFValidatorException { + SAXParser aParser = getSAXParser(false); + SchemaErrorHandler aErrorHandler = new SchemaErrorHandler(aLogger, m_aFilter); + + try { + XMLReader aReader; + if (aFilter != null) { + XMLReader aParent = aFilter.getParent(); + if (aParent != null) { + ((XMLFilter) aParent).setParent(aParser.getXMLReader()); + } else { + aFilter.setParent(aParser.getXMLReader()); + } + aReader = aFilter; + } else { + aReader = aParser.getXMLReader(); + } + + if (m_aFilter != null) { + m_aFilter.startSubFile(); + } + aValidator.setErrorHandler(aErrorHandler); + try { + aValidator.validate(new SAXSource(aReader, + new InputSource(aInStream))); + } catch (RuntimeException e) { + aLogger.logFatalError(e.getMessage()); + m_aValidatorProvider.resetValidatorProvider(); + } + } catch (org.xml.sax.SAXParseException e) { + aErrorHandler.fatalErrorNoException(e); + } catch (org.xml.sax.SAXException e) { + aLogger.logFatalError(e.getMessage()); + } catch (IOException e) { + aLogger.logFatalError(e.getMessage()); + } + + aLogger.logSummaryInfo(); + if (m_aResult.hasForeignElements()) { + Set aForeignElementURISet = m_aResult.getForeignElements().keySet(); + StringBuilder aBuffer = new StringBuilder(); + Iterator aIter = aForeignElementURISet.iterator(); + boolean bFirst = true; + while (aIter.hasNext()) { + String aURI = aIter.next(); + aBuffer.setLength(0); + aBuffer.append(m_aResult.getForeignElements().get(aURI)); + aBuffer.append(" extension elements from the following namespace were found: "); + aBuffer.append(aURI); + aLogger.logInfo(aBuffer.toString(), false); + } + } + if (m_aResult.hasForeignAttributes()) { + Set aForeignAttributeURISet = m_aResult.getForeignAttributes().keySet(); + Iterator aIter = aForeignAttributeURISet.iterator(); + StringBuilder aBuffer = new StringBuilder(); + while (aIter.hasNext()) { + String aURI = aIter.next(); + aBuffer.setLength(0); + aBuffer.append(m_aResult.getForeignAttributes().get(aURI)); + aBuffer.append(" extension attributes from the following namespace were found: "); + aBuffer.append(aURI); + aLogger.logInfo(aBuffer.toString(), false); + } + } + return aLogger.hasError(); + } + + protected boolean parseEntry(XMLFilter aFilter, + Logger aLogger, + String aEntryName, boolean bValidating) throws IOException, ZipException, IllegalStateException, ODFValidatorException { + OdfPackage aPkg = getPackage(aLogger); + + if (isEncrypted(aEntryName, aLogger)) { + return false; + } + + InputStream aInStream = null; + try { + aInStream = getPackage(aLogger).getInputStream(aEntryName, true); + } catch (Exception e) { + throw new ODFValidatorException(e); + } + + return aInStream != null ? parse(aInStream, aFilter, bValidating, aLogger) : false; + } + + private boolean parse(InputStream aInStream, XMLFilter aFilter, boolean bValidating, Logger aLogger) throws ODFValidatorException { + SAXParser aParser = getSAXParser(bValidating); + SchemaErrorHandler aErrorHandler = new SchemaErrorHandler(aLogger, m_aFilter); + + try { + XMLReader aReader; + if (aFilter != null) { + aFilter.setParent(aParser.getXMLReader()); + aReader = aFilter; + } else { + aReader = aParser.getXMLReader(); + } + if (m_aFilter != null) { + m_aFilter.startSubFile(); + } + aReader.setErrorHandler(aErrorHandler); + aReader.parse(new InputSource(aInStream)); + } catch (org.xml.sax.SAXParseException e) { + aErrorHandler.fatalErrorNoException(e); + } catch (org.xml.sax.SAXException e) { + aLogger.logFatalError(e.getMessage()); + } catch (IOException e) { + aLogger.logFatalError(e.getMessage()); + } + + if (bValidating) { + aLogger.logSummaryInfo(); + } + return aLogger.hasError(); + } + + private boolean isEncrypted(String aEntryName, Logger aLogger) { + OdfFileEntry aFileEntry = getPackage(aLogger).getFileEntry(aEntryName); + if (aFileEntry != null) { + EncryptionData aEncData = aFileEntry.getEncryptionData(); + if (aEncData != null) { + aLogger.logFatalError("stream content is encrypted. Validataion of encrypted content is not supported."); + return true; + } + } + return false; + } + + private SAXParser getSAXParser(boolean bValidating) throws ODFValidatorException { + SAXParser aParser = null; + if (m_aSAXParserFactory == null) { + m_aSAXParserFactory = SAXParserFactory.newInstance(); + m_aSAXParserFactory.setNamespaceAware(true); + } + + try { + m_aSAXParserFactory.setValidating(bValidating); + aParser = m_aSAXParserFactory.newSAXParser(); + } catch (javax.xml.parsers.ParserConfigurationException e) { + throw new ODFValidatorException(e); + } catch (org.xml.sax.SAXException e) { + throw new ODFValidatorException(e); + } + + return aParser; + } + + /** + * get the generator + */ + public String getGenerator() { + return m_aResult.getGenerator(); + } + + private String getVersion(Logger aLogger) throws ODFValidatorException { + String aVersion = null; + + InputStream aInStream = null; + try { + OdfPackage aPkg = getPackage(aLogger); + aInStream = aPkg.getInputStream(getStreamName(OdfDocument.OdfXMLFile.META.getFileName()), true); + if (aInStream == null) { + aInStream = aPkg.getInputStream(getStreamName(OdfDocument.OdfXMLFile.SETTINGS.getFileName()), true); + } + if (aInStream == null) { + aInStream = aPkg.getInputStream(getStreamName(OdfDocument.OdfXMLFile.CONTENT.getFileName()), true); + } + if (aInStream == null) { + return null; + } + } catch (Exception e) { + aLogger.logFatalError(e.getMessage()); + } + + SAXParser aParser = getSAXParser(false); + + DefaultHandler aHandler = new VersionHandler(); + + try { + aParser.parse(aInStream, aHandler); + } catch (SAXVersionException e) { + aVersion = e.getVersion(); + } catch (org.xml.sax.SAXException e) { + aLogger.logFatalError(e.getMessage()); + } catch (IOException e) { + aLogger.logFatalError(e.getMessage()); + } + + return aVersion; + } +} diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFRootPackageValidator.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFRootPackageValidator.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFRootPackageValidator.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFRootPackageValidator.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFStreamValidator.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFStreamValidator.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFStreamValidator.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFStreamValidator.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFSubPackageValidator.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFSubPackageValidator.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFSubPackageValidator.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFSubPackageValidator.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFValidationResult.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidationResult.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFValidationResult.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidationResult.java diff --git a/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidator.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidator.java new file mode 100644 index 0000000000..0d7ddcdb84 --- /dev/null +++ b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidator.java @@ -0,0 +1,372 @@ +/************************************************************************ + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER + * + * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. + * + * Use is subject to license terms. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also + * obtain a copy of the License at http://odftoolkit.org/docs/license.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + * + ************************************************************************/ +package org.odftoolkit.odfvalidator; + +import javax.xml.XMLConstants; + +import javax.xml.validation.Schema; +import javax.xml.validation.SchemaFactory; + +import java.io.File; +import java.io.FileFilter; +import java.io.IOException; +import java.io.PrintStream; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import javax.xml.transform.stream.StreamSource; +import javax.xml.validation.Validator; + +public class ODFValidator implements ODFValidatorProvider { + + // Prefix used to distinguish internal resources from external ones + // Loglevel + private Logger.LogLevel m_nLogLevel; + // Validator provider + private SchemaFactory m_aRNGSchemaFactory = null; + private SchemaFactory m_aXSDSchemaFactory = null; + // User provided Configuration + protected Configuration m_aConfig = null; + // User provided ODF version + protected OdfVersion m_aVersion = null; + protected OdfVersion mOdfPackageVersion = null; + // User provided preference for using Math DTD + protected boolean m_bUseMathDTD = false; + // Validatore and configuration cache + private HashMap m_aSchemaMap = null; + private HashMap m_aConfigurationMap = null; + // Generator from last validateFile or validateStream call + private String m_aGenerator = ""; + + /** Creates a new instance of Validator */ + public ODFValidator(Configuration aConfig, + Logger.LogLevel nLogLevel, + OdfVersion aVersion, + boolean bUseMathDTD) throws ODFValidatorException { + + m_nLogLevel = nLogLevel; + m_aConfig = aConfig; + m_aVersion = aVersion; + m_bUseMathDTD = bUseMathDTD; + Logger.enableHTML(false); + } + + /** Creates a new instance of Validator */ + public ODFValidator(Configuration aConfig, + Logger.LogLevel nLogLevel, + boolean logAsHTML, + OdfVersion aVersion, + boolean bUseMathDTD) throws ODFValidatorException { + + m_nLogLevel = nLogLevel; + m_aConfig = aConfig; + m_aVersion = aVersion; + m_bUseMathDTD = bUseMathDTD; + Logger.enableHTML(logAsHTML); + + } + + /** Returns either the ODF version request to validate or the ODF version of the root document as fall-back */ + public String getOdfVersion() { + String version = null; + if (m_aVersion != null) { + version = m_aVersion.toString(); + } else { + version = mOdfPackageVersion.toString(); + } + return version; + } + + public boolean validate(PrintStream aOut, Configuration aConfig, OdfValidatorMode eMode) throws ODFValidatorException { + List aFileNames = aConfig.getListPropety(Configuration.PATH); + String aExcludeRegExp = aConfig.getProperty(Configuration.EXCLUDE); + String aRecursive = aConfig.getProperty(Configuration.RECURSIVE); + boolean bRecursive = aRecursive != null ? Boolean.valueOf(aRecursive) : false; + String aFilterFileName = aConfig.getProperty(Configuration.FILTER); + + return validate(aOut, aFileNames, aExcludeRegExp, eMode, bRecursive, aFilterFileName); + } + + public boolean validate(PrintStream aOut, List aFileNames, String aExcludeRegExp, + OdfValidatorMode eMode, boolean bRecursive, + String aFilterFileName) throws ODFValidatorException { + boolean bRet = false; + + SAXParseExceptionFilter aFilter = null; + if (aFilterFileName != null && aFilterFileName.length() != 0) { + aFilter = new ValidationOOoTaskIdErrorFilter(new File(aFilterFileName), aOut); + } + + FileFilter aFileFilter = new ODFFileFilter(aExcludeRegExp, bRecursive); + + Iterator aIter = aFileNames.iterator(); + while (aIter.hasNext()) { + File aFile = new File(aIter.next()); + bRet |= aFile.isDirectory() ? validateDir(aOut, aFile, aFileFilter, eMode, aFilter) + : validateFile(aOut, aFile, eMode, aFilter); + } + + return bRet; + } + + public boolean validate(PrintStream aOut, InputStream aInputStream, String aBaseURI, + OdfValidatorMode eMode, + SAXParseExceptionFilter aFilter) throws ODFValidatorException { + return validateStream(aOut, aInputStream, aBaseURI, eMode, aFilter); + } + + private boolean validateDir(PrintStream aOut, final File aDir, FileFilter aFileFilter, OdfValidatorMode eMode, SAXParseExceptionFilter aFilter) throws ODFValidatorException { + boolean bRet = true; + File[] aFiles = aDir.listFiles(aFileFilter); + + if (aFiles != null) { + for (int i = 0; i < aFiles.length; ++i) { + File aFile = aFiles[i]; + if (aFile.isDirectory()) { + bRet |= validateDir(aOut, aFile, aFileFilter, eMode, aFilter); + } else { + bRet |= validateFile(aOut, aFile, eMode, aFilter); + } + } + } + return bRet; + } + + /** + * validate the input File + * + *

After validation the getGenerator method can be called to get the generator of the validated file

+ */ + public boolean validateFile(PrintStream aOut, File aDocFile, OdfValidatorMode eMode, SAXParseExceptionFilter aFilter) throws ODFValidatorException { + ODFFileValidator aFileValidator = + new ODFFileValidator(aDocFile, m_nLogLevel, eMode, m_aVersion, aFilter, this); + + boolean result = aFileValidator.validate(aOut); + mOdfPackageVersion = aFileValidator.mOdfPackageVersion; + m_aGenerator = aFileValidator.getGenerator(); + return result; + } + + /** + * validate the input Stream + * + *

After validation the getGenerator method can be called to get the generator of the validated file

+ */ + public boolean validateStream(PrintStream aOut, InputStream aInputStream, String aBaseURI, + OdfValidatorMode eMode, + SAXParseExceptionFilter aFilter) throws ODFValidatorException { + ODFStreamValidator aStreamValidator = + new ODFStreamValidator(aInputStream, aBaseURI, m_nLogLevel, eMode, m_aVersion, aFilter, this); + boolean result = aStreamValidator.validate(aOut); + m_aGenerator = aStreamValidator.getGenerator(); + mOdfPackageVersion = aStreamValidator.mOdfPackageVersion; + return result; + } + + public Validator getManifestValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException { + return getValidatorForSchema(aOut, getSchemaFileName(Configuration.MANIFEST_SCHEMA, aVersion)); + } + + public Validator getValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException { + return getValidatorForSchema(aOut, getSchemaFileName(Configuration.SCHEMA, aVersion)); + } + + public Validator getStrictValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException { + return getValidatorForSchema(aOut, getSchemaFileName(Configuration.STRICT_SCHEMA, aVersion)); + } + + public Validator getMathMLValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException { + return getValidatorForSchema(aOut, getSchemaFileName(Configuration.MATHML2_SCHEMA, aVersion)); + } + + public String getMathMLDTDSystemId(OdfVersion aVersion) throws ODFValidatorException { + String aDTD = null; + if (m_bUseMathDTD) { + Configuration aConfig = + m_aConfig != null ? m_aConfig : getConfiguration(aVersion); + + aDTD = aConfig.getProperty(Configuration.MATHML_SCHEMA); + if (m_aConfig == null && aDTD != null && aDTD.length() > 0) { + aDTD = InternalResources.createInternalResourceIdentifier(aDTD); + } + } + + return aDTD; + } + + public Validator getDSigValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException { + return getValidatorForSchema(aOut, getSchemaFileName(Configuration.DSIG_SCHEMA, aVersion)); + } + + public void resetValidatorProvider() { + m_aRNGSchemaFactory = null; + m_aXSDSchemaFactory = null; + m_aSchemaMap = null; + } + + private String getSchemaFileName(String aConfigName, OdfVersion aVersion) throws ODFValidatorException { + Configuration aConfig = + m_aConfig != null ? m_aConfig : getConfiguration(aVersion); + + String aFileName = aConfig.getProperty(aConfigName); + if (m_aConfig == null && aFileName != null && aFileName.length() > 0) { + aFileName = InternalResources.createInternalResourceIdentifier(aFileName); + } + + return aFileName; + } + + private Configuration getConfiguration(OdfVersion aVersion) throws ODFValidatorException { + if (m_aConfigurationMap == null) { + m_aConfigurationMap = new HashMap(); + } + + Configuration aConfig = m_aConfigurationMap.get(aVersion); + if (aConfig == null) { + String aConfigName = null; + if (aVersion == null || aVersion == OdfVersion.V1_2) { + aConfigName = "/schema/odf1_2.properties"; + } else if (aVersion == OdfVersion.V1_1) { + aConfigName = "/schema/odf1_1.properties"; + } else if (aVersion == OdfVersion.V1_0) { + aConfigName = "/schema/odf1_0.properties"; + } else { + throw new ODFValidatorException("unsupported ODF version: ".concat(aVersion.toString())); + } + + InputStream aInStream = getClass().getResourceAsStream(aConfigName); + if (aInStream == null) { + throw new ODFValidatorException("Internal configuration file is missing: ".concat(aConfigName)); + } + + aConfig = new Configuration(); + try { + aConfig.loadFromXML(aInStream); + aInStream.close(); + } catch (IOException e) { + throw new ODFValidatorException(e); + } + + m_aConfigurationMap.put(aVersion, aConfig); + } + + return aConfig; + } + + private Validator getValidatorForSchema(PrintStream aOut, String aSchemaFileName) throws ODFValidatorException { + if (m_aSchemaMap == null) { + m_aSchemaMap = new HashMap(); + } + + Schema aSchema = m_aSchemaMap.get(aSchemaFileName); + if (aSchema == null) { + aSchema = createSchema(aOut, aSchemaFileName); + m_aSchemaMap.put(aSchemaFileName, aSchema); + } + + return aSchema.newValidator(); + } + + private Schema createSchema(PrintStream aOut, String aSchemaFileName) throws ODFValidatorException { + Logger aLogger = new Logger(aSchemaFileName, "", aOut, m_nLogLevel); + + if (aSchemaFileName == null || aSchemaFileName.length() == 0) { + return null; + } + + String aSchemaLanguage = + aSchemaFileName.endsWith("xsd") ? XMLConstants.W3C_XML_SCHEMA_NS_URI + : XMLConstants.RELAXNG_NS_URI; + + + SchemaFactory aSchemaFactory = getSchemaFactory(aSchemaLanguage); + SchemaErrorHandler aErrorHandler = new SchemaErrorHandler(aLogger, null); + aSchemaFactory.setErrorHandler(aErrorHandler); + aSchemaFactory.setResourceResolver(new SchemaResourceResolver(aLogger, aSchemaFileName)); + Schema aSchema = null; + + StreamSource aSource = null; + if (InternalResources.isInternalResourceIdentifer(aSchemaFileName)) { + String aPath = InternalResources.getResourcePath(aSchemaFileName); + InputStream aInStream = getClass().getResourceAsStream(aPath); + if (aInStream == null) { + throw new ODFValidatorException("Internal schema file is missing: ".concat(aPath)); + } + + aSource = new StreamSource(aInStream, aSchemaFileName); + } else { + File aFile = new File(aSchemaFileName); + if (!aFile.exists()) { + aLogger.logFatalError(aSchemaFileName + ": file does not exist"); + return null; + } + aSource = new StreamSource(aFile); + } + + // Workaround: MSV seems not to call error handler + try { + aSchema = aSchemaFactory.newSchema(aSource); + } catch (org.xml.sax.SAXParseException e) { + aLogger.logFatalError(e); + } catch (org.xml.sax.SAXException e) { + aLogger.logFatalError(e.getMessage()); + } + + if (aLogger.hasError()) { + throw new ODFValidatorException(aSchemaFileName, "", "Schema has validation errors."); + } + + aLogger.logInfo("parsed.", false); + return aSchema; + } + + private SchemaFactory getSchemaFactory(String aSchemaLanguage) throws ODFValidatorException { + boolean isRNG = aSchemaLanguage.equals(XMLConstants.RELAXNG_NS_URI); + SchemaFactory aSchemaFactory = isRNG ? m_aRNGSchemaFactory + : m_aXSDSchemaFactory; + if (aSchemaFactory == null) { + try { + if (isRNG) { + System.setProperty("javax.xml.validation.SchemaFactory:" + aSchemaLanguage, "org.iso_relax.verifier.jaxp.validation.RELAXNGSchemaFactoryImpl"); + SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.RELAXNG_NS_URI); + m_aRNGSchemaFactory = SchemaFactory.newInstance(aSchemaLanguage); + aSchemaFactory = m_aRNGSchemaFactory; + } else { + System.setProperty("javax.xml.validation.SchemaFactory:" + aSchemaLanguage, "org.apache.xerces.jaxp.validation.XMLSchemaFactory"); + m_aXSDSchemaFactory = SchemaFactory.newInstance(aSchemaLanguage); + aSchemaFactory = m_aXSDSchemaFactory; + } + } catch (IllegalArgumentException e) { + throw new ODFValidatorException(aSchemaLanguage + " support is not installed: " + e.getMessage()); + } + } + return aSchemaFactory; + } + + /** + * get Generator from last validateFile or validateStream call + */ + public String getGenerator() { + return m_aGenerator; + } +} diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFValidatorException.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorException.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFValidatorException.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorException.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFValidatorProvider.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorProvider.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ODFValidatorProvider.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ODFValidatorProvider.java diff --git a/validator/src/org/odftoolkit/odfvalidator/OdfPackageExt.java b/validator/src/main/java/org/odftoolkit/odfvalidator/OdfPackageExt.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/OdfPackageExt.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/OdfPackageExt.java diff --git a/validator/src/org/odftoolkit/odfvalidator/OdfValidatorMode.java b/validator/src/main/java/org/odftoolkit/odfvalidator/OdfValidatorMode.java similarity index 69% rename from validator/src/org/odftoolkit/odfvalidator/OdfValidatorMode.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/OdfValidatorMode.java index 9f0287dfb4..0b59e33167 100644 --- a/validator/src/org/odftoolkit/odfvalidator/OdfValidatorMode.java +++ b/validator/src/main/java/org/odftoolkit/odfvalidator/OdfValidatorMode.java @@ -26,20 +26,33 @@ public enum OdfValidatorMode { /*** * all versions */ - CHECK_CONFORMANCE, // + CONFORMANCE ("conformant"), // /*** - * ODF 1.0 and 1.1 only, equals CHECK_CONFORMANCE for ODF 1.2 + * ODF 1.0 and 1.1 only, equals CONFORMANCE for ODF 1.2 */ - VALIDATE, + VALIDATE ("valid"), /*** - * ODF 1.0 and 1.1 only, equals CHECK_CONFORMANCE for ODF 1.2 + * ODF 1.0 and 1.1 only, equals CONFORMANCE for ODF 1.2 */ - VALIDATE_STRICT, + VALIDATE_STRICT ("strict valid"), /*** - * ODF 1.2 only, equals CHECK_CONFORMANCE for ODF 1.0/1.1 + * ODF 1.2 only, equals CONFORMANCE for ODF 1.0/1.1 */ - CHECK_EXTENDED_CONFORMANCE; + EXTENDED_CONFORMANCE ("extended conformant"); + + private String mValue; + + OdfValidatorMode( String value ) + { + mValue = value; + } + + @Override + public String toString() + { + return mValue; + } } diff --git a/validator/src/org/odftoolkit/odfvalidator/OdfVersion.java b/validator/src/main/java/org/odftoolkit/odfvalidator/OdfVersion.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/OdfVersion.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/OdfVersion.java diff --git a/validator/src/org/odftoolkit/odfvalidator/SAXParseExceptionFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/SAXParseExceptionFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/SAXParseExceptionFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/SAXParseExceptionFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/SAXVersionException.java b/validator/src/main/java/org/odftoolkit/odfvalidator/SAXVersionException.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/SAXVersionException.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/SAXVersionException.java diff --git a/validator/src/org/odftoolkit/odfvalidator/SchemaErrorHandler.java b/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaErrorHandler.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/SchemaErrorHandler.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/SchemaErrorHandler.java diff --git a/validator/src/org/odftoolkit/odfvalidator/SchemaFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/SchemaFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/SchemaFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/SchemaResourceResolver.java b/validator/src/main/java/org/odftoolkit/odfvalidator/SchemaResourceResolver.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/SchemaResourceResolver.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/SchemaResourceResolver.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ValidationMessageCollectorErrorFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ValidationMessageCollectorErrorFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ValidationMessageCollectorErrorFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ValidationMessageCollectorErrorFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/ValidationOOoTaskIdErrorFilter.java b/validator/src/main/java/org/odftoolkit/odfvalidator/ValidationOOoTaskIdErrorFilter.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/ValidationOOoTaskIdErrorFilter.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/ValidationOOoTaskIdErrorFilter.java diff --git a/validator/src/org/odftoolkit/odfvalidator/VersionHandler.java b/validator/src/main/java/org/odftoolkit/odfvalidator/VersionHandler.java similarity index 100% rename from validator/src/org/odftoolkit/odfvalidator/VersionHandler.java rename to validator/src/main/java/org/odftoolkit/odfvalidator/VersionHandler.java diff --git a/validator/src/main/resources/META-INF/services/org.iso_relax.verifier.VerifierFactoryLoader b/validator/src/main/resources/META-INF/services/org.iso_relax.verifier.VerifierFactoryLoader new file mode 100644 index 0000000000..b0d3dc5224 --- /dev/null +++ b/validator/src/main/resources/META-INF/services/org.iso_relax.verifier.VerifierFactoryLoader @@ -0,0 +1 @@ +com.sun.msv.verifier.jarv.FactoryLoaderImpl \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml1.01/math.dtd b/validator/src/main/resources/schema/mathml1.01/math.dtd new file mode 100644 index 0000000000..0349e3031a --- /dev/null +++ b/validator/src/main/resources/schema/mathml1.01/math.dtd @@ -0,0 +1,957 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml1.01/w3c_ipr_software_notice.html b/validator/src/main/resources/schema/mathml1.01/w3c_ipr_software_notice.html new file mode 100644 index 0000000000..3a4ed535c1 --- /dev/null +++ b/validator/src/main/resources/schema/mathml1.01/w3c_ipr_software_notice.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + +W3C IPR SOFTWARE NOTICE + + +

W3C® SOFTWARE NOTICE AND LICENSE

+ +

Copyright © 1994-2001 World +Wide Web Consortium, (Massachusetts Institute of +Technology, Institut National de +Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. +http://www.w3.org/Consortium/Legal/

+ +

This W3C work (including software, documents, or other related +items) is being provided by the copyright holders under the +following license. By obtaining, using and/or copying this work, +you (the licensee) agree that you have read, understood, and will +comply with the following terms and conditions:

+ +

Permission to use, copy, modify, and distribute this software +and its documentation, with or without modification,  for any +purpose and without fee or royalty is hereby granted, provided that +you include the following on ALL copies of the software and +documentation or portions thereof, including modifications, that +you make:

+ +
    +
  1. The full text of this NOTICE in a location viewable to users of +the redistributed or derivative work.
  2. + +
  3. Any pre-existing intellectual property disclaimers, notices, or +terms and conditions. If none exist, a short notice of the +following form (hypertext is preferred, text is permitted) should +be used within the body of any redistributed or derivative code: +"Copyright © [$date-of-software] +World Wide Web Consortium, (Massachusetts Institute of +Technology, Institut National de +Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. +http://www.w3.org/Consortium/Legal/"
  4. + +
  5. Notice of any changes or modifications to the W3C files, +including the date changes were made. (We recommend you provide +URIs to the location from which the code is derived.)
  6. +
+ +

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND +COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF +MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE +USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD +PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

+ +

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, +SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE +SOFTWARE OR DOCUMENTATION.

+ +

The name and trademarks of copyright holders may NOT be used in +advertising or publicity pertaining to the software without +specific, written prior permission. Title to copyright in this +software and any associated documentation will at all times remain +with copyright holders.

+ +

____________________________________

+ +

This formulation of W3C's notice and license became active on +August 14 1998 so as to improve compatibility with GPL. This +version ensures that W3C software licensing terms are no more +restrictive than GPL and consequently W3C software may be +distributed in GPL packages. See the older formulation for the +policy prior to this date. Please see our +Copyright FAQ for common questions about using materials from +our site, including specific terms and conditions for packages like +libwww, Amaya, and Jigsaw. Other questions about this notice can be +directed to +site-policy@w3.org.

+ +

 

+ + + + diff --git a/validator/src/main/resources/schema/mathml2.0/common/common-attribs.xsd b/validator/src/main/resources/schema/mathml2.0/common/common-attribs.xsd new file mode 100644 index 0000000000..33698b8f86 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/common/common-attribs.xsd @@ -0,0 +1,41 @@ + + + + + + + This is the common attributes module for MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/common/math.xsd b/validator/src/main/resources/schema/mathml2.0/common/math.xsd new file mode 100644 index 0000000000..51eb51c87d --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/common/math.xsd @@ -0,0 +1,126 @@ + + + + + + + This is an XML Schema module defining the "math" element of MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/common/xlink-href.xsd b/validator/src/main/resources/schema/mathml2.0/common/xlink-href.xsd new file mode 100644 index 0000000000..a386bc9fba --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/common/xlink-href.xsd @@ -0,0 +1,20 @@ + + + + This schema provides the XLink href attribute for use in the MathML2 + schema. Written by Max Froumentin, W3C. + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/arith.xsd b/validator/src/main/resources/schema/mathml2.0/content/arith.xsd new file mode 100644 index 0000000000..fdb508f7e4 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/arith.xsd @@ -0,0 +1,90 @@ + + + + + + + This is an XML Schema module for the "arithmetic" operators of content + MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/calculus.xsd b/validator/src/main/resources/schema/mathml2.0/content/calculus.xsd new file mode 100644 index 0000000000..1b8fdb0e03 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/calculus.xsd @@ -0,0 +1,146 @@ + + + + + + + This is an XML Schema module for the calculs operators of content + MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/common-attrib.xsd b/validator/src/main/resources/schema/mathml2.0/content/common-attrib.xsd new file mode 100644 index 0000000000..b0d599f4a3 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/common-attrib.xsd @@ -0,0 +1,30 @@ + + + + + + + This is the XML schema module defining common attributes for the + content part of MathML. + Authors: Stéphane Dalmas, INRIA. + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/constants.xsd b/validator/src/main/resources/schema/mathml2.0/content/constants.xsd new file mode 100644 index 0000000000..a22548e269 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/constants.xsd @@ -0,0 +1,83 @@ + + + + + This is the XML Schema module for the basic constants of MathML content. + Author: Stéphane Dalmas. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/constructs.xsd b/validator/src/main/resources/schema/mathml2.0/content/constructs.xsd new file mode 100644 index 0000000000..4cfc21af8a --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/constructs.xsd @@ -0,0 +1,260 @@ + + + + + + + + This is an XML Schema module for the basic constructs of content MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/elementary-functions.xsd b/validator/src/main/resources/schema/mathml2.0/content/elementary-functions.xsd new file mode 100644 index 0000000000..b106f0d170 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/elementary-functions.xsd @@ -0,0 +1,117 @@ + + + + + + This is an XML Schema module for the elementary functions in content + MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/functions.xsd b/validator/src/main/resources/schema/mathml2.0/content/functions.xsd new file mode 100644 index 0000000000..11a5768dcc --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/functions.xsd @@ -0,0 +1,73 @@ + + + + + + This is an XML Schema module for operators dealing with functions in content + MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/linear-algebra.xsd b/validator/src/main/resources/schema/mathml2.0/content/linear-algebra.xsd new file mode 100644 index 0000000000..eb62bcb6f2 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/linear-algebra.xsd @@ -0,0 +1,173 @@ + + + + + + + This is an XML Schema module for the linear algebra part of content MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/logic.xsd b/validator/src/main/resources/schema/mathml2.0/content/logic.xsd new file mode 100644 index 0000000000..6dac2abe4a --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/logic.xsd @@ -0,0 +1,53 @@ + + + + + This is an XML Schema module for the logic operators of content MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/relations.xsd b/validator/src/main/resources/schema/mathml2.0/content/relations.xsd new file mode 100644 index 0000000000..87496e5c3a --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/relations.xsd @@ -0,0 +1,55 @@ + + + + + This is an XML Schema module for the relational operators of content MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/semantics.xsd b/validator/src/main/resources/schema/mathml2.0/content/semantics.xsd new file mode 100644 index 0000000000..d337ee76f1 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/semantics.xsd @@ -0,0 +1,85 @@ + + + + + + + This is an XML Schema module for the "sematics" element of content MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/sets.xsd b/validator/src/main/resources/schema/mathml2.0/content/sets.xsd new file mode 100644 index 0000000000..7a7f7f6851 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/sets.xsd @@ -0,0 +1,236 @@ + + + + + + + This is an XML Schema module for the part of content MathML dealing with + sets and lists. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/statistics.xsd b/validator/src/main/resources/schema/mathml2.0/content/statistics.xsd new file mode 100644 index 0000000000..cf0f20e329 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/statistics.xsd @@ -0,0 +1,136 @@ + + + + + + + This is an XML Schema module for the statistical operators of content MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/tokens.xsd b/validator/src/main/resources/schema/mathml2.0/content/tokens.xsd new file mode 100644 index 0000000000..7e7f9b81d4 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/tokens.xsd @@ -0,0 +1,120 @@ + + + + + + + This is the XML schema module for the token elements of the + content part of MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/content/vector-calculus.xsd b/validator/src/main/resources/schema/mathml2.0/content/vector-calculus.xsd new file mode 100644 index 0000000000..3e5dd9ce22 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/content/vector-calculus.xsd @@ -0,0 +1,88 @@ + + + + + + + This is an XML Schema module for the vector calculs operators of content + MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/mathml2.xsd b/validator/src/main/resources/schema/mathml2.0/mathml2.xsd new file mode 100644 index 0000000000..2bd76bfb67 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/mathml2.xsd @@ -0,0 +1,59 @@ + + + + + + This is an XML Schema for MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/action.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/action.xsd new file mode 100644 index 0000000000..9633698509 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/action.xsd @@ -0,0 +1,44 @@ + + + + + + + This is the XML Schema module for the MathML "maction" element. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/characters.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/characters.xsd new file mode 100644 index 0000000000..32b4d3f78c --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/characters.xsd @@ -0,0 +1,37 @@ + + + + + + + This is the XML Schema module for the MathML "mglyph" element. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/common-attribs.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/common-attribs.xsd new file mode 100644 index 0000000000..2dff7e33a0 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/common-attribs.xsd @@ -0,0 +1,113 @@ + + + + + + + This schema module defines sets of attributes common to several elements + of presentation MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/common-types.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/common-types.xsd new file mode 100644 index 0000000000..a44c3bfc8c --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/common-types.xsd @@ -0,0 +1,103 @@ + + + + + + + This is an XML Schema module containing some type definitions for MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/error.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/error.xsd new file mode 100644 index 0000000000..01b5b96006 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/error.xsd @@ -0,0 +1,40 @@ + + + + + + + This is the XML Schema module for the MathML "merror" element. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/layout.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/layout.xsd new file mode 100644 index 0000000000..80b005efd7 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/layout.xsd @@ -0,0 +1,195 @@ + + + + + + This is the XML schema module for the layout elements of the + presentation part of MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/scripts.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/scripts.xsd new file mode 100644 index 0000000000..cf7eea1543 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/scripts.xsd @@ -0,0 +1,186 @@ + + + + + + + This is an XML Schema module for the presentation elements of MathML + dealing with subscripts and superscripts. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/space.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/space.xsd new file mode 100644 index 0000000000..243735385d --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/space.xsd @@ -0,0 +1,52 @@ + + + + + + + This is the XML Schema module for the MathML "mspace" element. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/style.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/style.xsd new file mode 100644 index 0000000000..a0181218b3 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/style.xsd @@ -0,0 +1,69 @@ + + + + + + + This is an XML Schema for the "mstyle" element of MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/table.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/table.xsd new file mode 100644 index 0000000000..968f7bc82e --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/table.xsd @@ -0,0 +1,216 @@ + + + + + + + This is an XML Schema module for tables in MathML presentation. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml2.0/presentation/tokens.xsd b/validator/src/main/resources/schema/mathml2.0/presentation/tokens.xsd new file mode 100644 index 0000000000..56d156c659 --- /dev/null +++ b/validator/src/main/resources/schema/mathml2.0/presentation/tokens.xsd @@ -0,0 +1,124 @@ + + + + + + + This is the XML schema module for the token elements of the + presentation part of MathML. + Author: Stéphane Dalmas, INRIA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/algebra-logic.rnc b/validator/src/main/resources/schema/mathml3.0/algebra-logic.rnc new file mode 100644 index 0000000000..b79f720202 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/algebra-logic.rnc @@ -0,0 +1,84 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary algebra-logic +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: algebra-logic.rnc,v 1.1 2007/12/11 15:38:51 dcarlis Exp $ + +cd.token.unary.class |= factorial.token | unary_minus.token | not.token | abs.token | conjugate.token | arg.token | real.token | imaginary.token | floor.token | ceiling.token +cd.token.binary.class |= quotient.token | divide.token | minus.token | power.token | rem.token | root.token | implies.token +cd.token.nary.class |= max.token | min.token | plus.token | times.token | gcd.token | and.token | or.token | xor.token | lcm.token +cd.binder.class |= forall.token | exists.token + +# the element definitions for the token elements +quotient.content = Token.type, attribute type {MathMLtype}? +quotient.token = element quotient {quotient.content} +factorial.content = Token.type +factorial.token = element factorial {factorial.content} +divide.content = Token.type, attribute type {MathMLtype}? +divide.token = element divide {divide.content} +max.content = Token.type, attribute type {MathMLtype}? +max.token = element max {max.content} +min.content = Token.type, attribute type {MathMLtype}? +min.token = element min {min.content} +minus.content = Token.type, attribute type {MathMLtype}? +minus.token = element minus {minus.content} +unary_minus.content = Token.type, attribute type {MathMLtype}? +unary_minus.token = element minus {unary_minus.content} +#ednote(rnc:unary_minus) rename minus to unary_minus +plus.content = Token.type, attribute type {MathMLtype}? +plus.token = element plus {plus.content} +power.content = Token.type, attribute type {MathMLtype}? +power.token = element power {power.content} +rem.content = Token.type, attribute type {MathMLtype}? +rem.token = element rem {rem.content} +times.content = Token.type, attribute type {MathMLtype}? +times.token = element times {times.content} +root.content = Token.type, attribute type {MathMLtype}? +root.token = element root {root.content} +gcd.content = Token.type, attribute type {MathMLtype}? +gcd.token = element gcd {gcd.content} +and.content = Token.type, attribute type {MathMLtype}? +and.token = element and {and.content} +or.content = Token.type, attribute type {MathMLtype}? +or.token = element or {or.content} +xor.content = Token.type, attribute type {MathMLtype}? +xor.token = element xor {xor.content} +not.content = Token.type, attribute type {MathMLtype}? +not.token = element not {not.content} +implies.content = Token.type, attribute type {MathMLtype}? +implies.token = element implies {implies.content} +forall.content = Token.type, attribute type {MathMLtype}? +forall.token = element forall {forall.content} +exists.content = Token.type, attribute type {MathMLtype}? +exists.token = element exists {exists.content} +abs.content = Token.type, attribute type {MathMLtype}? +abs.token = element abs {abs.content} +conjugate.content = Token.type +conjugate.token = element conjugate {conjugate.content} +arg.content = Token.type, attribute type {MathMLtype}? +arg.token = element arg {arg.content} +real.content = Token.type, attribute type {MathMLtype}? +real.token = element real {real.content} +imaginary.content = Token.type, attribute type {MathMLtype}? +imaginary.token = element imaginary {imaginary.content} +lcm.content = Token.type, attribute type {MathMLtype}? +lcm.token = element lcm {lcm.content} +floor.content = Token.type, attribute type {MathMLtype}? +floor.token = element floor {floor.content} +ceiling.content = Token.type, attribute type {MathMLtype}? +ceiling.token = element ceiling {ceiling.content} diff --git a/validator/src/main/resources/schema/mathml3.0/algebra-logic.rng b/validator/src/main/resources/schema/mathml3.0/algebra-logic.rng new file mode 100644 index 0000000000..535835b174 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/algebra-logic.rng @@ -0,0 +1,425 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/basic-content-elements.rnc b/validator/src/main/resources/schema/mathml3.0/basic-content-elements.rnc new file mode 100644 index 0000000000..b047d89fb8 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/basic-content-elements.rnc @@ -0,0 +1,49 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: basic-content-elements.rnc,v 1.1 2007/12/11 15:38:51 dcarlis Exp $ + +cd.token.unary.class |= inverse.token | ident.token | domain.token | codomain.token | image.token | otherwise.token +cd.token.binary.class |= interval.token | piece.token +cd.token.nary.class |= compose.token | piecewise.token +cd.binder.class |= lambda.token + +# the element definitions for the token elements +interval.content = Token.type, attribute closure {MathMLtype}? +interval.token = element interval {interval.content} +inverse.content = Token.type +inverse.token = element inverse {inverse.content} +lambda.content = Token.type +lambda.token = element lambda {lambda.content} +compose.content = Token.type +compose.token = element compose {compose.content} +ident.content = Token.type +ident.token = element ident {ident.content} +domain.content = Token.type +domain.token = element domain {domain.content} +codomain.content = Token.type +codomain.token = element codomain {codomain.content} +image.content = Token.type +image.token = element image {image.content} +piecewise.content = Token.type,ContExp* +piecewise.token = element piecewise {piecewise.content} +piece.content = Token.type +piece.token = element piece {piece.content} +otherwise.content = Token.type +otherwise.token = element otherwise {otherwise.content} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/basic-content-elements.rng b/validator/src/main/resources/schema/mathml3.0/basic-content-elements.rng new file mode 100644 index 0000000000..bcff3ce149 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/basic-content-elements.rng @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/calculus_veccalc.rnc b/validator/src/main/resources/schema/mathml3.0/calculus_veccalc.rnc new file mode 100644 index 0000000000..f77284996a --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/calculus_veccalc.rnc @@ -0,0 +1,49 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: calculus_veccalc.rnc,v 1.1 2007/12/11 15:38:51 dcarlis Exp $ + +cd.token.unary.class |= int.token | diff.token | grad.token | curl.token | laplacian.token +cd.token.binary.class |= defint.token | defintset.token +cd.token.nary.class |= partialdiff.token +cd.binder.class |= intalg.token | Diff.token + +# the element definitions for the token elements +int.content = Token.type +int.token = element int {int.content} +defint.content = Token.type +defint.token = element defint {defint.content} +defintset.content = Token.type +defintset.token = element defintset {defintset.content} +intalg.content = Token.type +intalg.token = element intalg {intalg.content} +diff.content = Token.type +diff.token = element diff {diff.content} +Diff.content = Token.type +Diff.token = element Diff {Diff.content} +partialdiff.content = Token.type, attribute type {MathMLtype}? +partialdiff.token = element partialdiff {partialdiff.content} +divergence.content = Token.type +divergence.token = element divergence {divergence.content} +grad.content = Token.type +grad.token = element grad {grad.content} +curl.content = Token.type +curl.token = element curl {curl.content} +laplacian.content = Token.type +laplacian.token = element laplacian {laplacian.content} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/calculus_veccalc.rng b/validator/src/main/resources/schema/mathml3.0/calculus_veccalc.rng new file mode 100644 index 0000000000..99c3cd9209 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/calculus_veccalc.rng @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/constants.rnc b/validator/src/main/resources/schema/mathml3.0/constants.rnc new file mode 100644 index 0000000000..bdb705bbbe --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/constants.rnc @@ -0,0 +1,54 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: constants.rnc,v 1.1 2007/12/11 15:38:51 dcarlis Exp $ + +cd.token.class |= integers.token | reals.token | rationals.token | naturalnumbers.token | complexes.token | primes.token | exponentiale.token | imaginaryi.token | notanumber.token | true.token | false.token | emptyset.token | pi.token | eulergamma.token | infinity.token + +# the element definitions for the token elements +integers.content = Token.type +integers.token = element integers {integers.content} +reals.content = Token.type +reals.token = element reals {reals.content} +rationals.content = Token.type +rationals.token = element rationals {rationals.content} +naturalnumbers.content = Token.type +naturalnumbers.token = element naturalnumbers {naturalnumbers.content} +complexes.content = Token.type +complexes.token = element complexes {complexes.content} +primes.content = Token.type +primes.token = element primes {primes.content} +exponentiale.content = Token.type +exponentiale.token = element exponentiale {exponentiale.content} +imaginaryi.content = Token.type +imaginaryi.token = element imaginaryi {imaginaryi.content} +notanumber.content = Token.type +notanumber.token = element notanumber {notanumber.content} +true.content = Token.type +true.token = element true {true.content} +false.content = Token.type +false.token = element false {false.content} +emptyset.content = Token.type +emptyset.token = element emptyset {emptyset.content} +pi.content = Token.type +pi.token = element pi {pi.content} +eulergamma.content = Token.type +eulergamma.token = element eulergamma {eulergamma.content} +infinity.content = Token.type +infinity.token = element infinity {infinity.content} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/constants.rng b/validator/src/main/resources/schema/mathml3.0/constants.rng new file mode 100644 index 0000000000..dfc9385a12 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/constants.rng @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/errors.rnc b/validator/src/main/resources/schema/mathml3.0/errors.rnc new file mode 100644 index 0000000000..fd6c121d7f --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/errors.rnc @@ -0,0 +1,30 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: errors.rnc,v 1.1 2007/12/11 15:38:51 dcarlis Exp $ + +cd.error.class |= unhandled_symbol.token | unexpected_symbol.token | unsupported_CD.token + +# the element definitions for the token elements +unhandled_symbol.content = Token.type +unhandled_symbol.token = element unhandled_symbol {unhandled_symbol.content} +unexpected_symbol.content = Token.type +unexpected_symbol.token = element unexpected_symbol {unexpected_symbol.content} +unsupported_CD.content = Token.type +unsupported_CD.token = element unsupported_CD {unsupported_CD.content} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/errors.rng b/validator/src/main/resources/schema/mathml3.0/errors.rng new file mode 100644 index 0000000000..bf6d888207 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/errors.rng @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/linear_algebra.rnc b/validator/src/main/resources/schema/mathml3.0/linear_algebra.rnc new file mode 100644 index 0000000000..aea9937dc0 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/linear_algebra.rnc @@ -0,0 +1,44 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: linear_algebra.rnc,v 1.1 2007/12/11 15:38:52 dcarlis Exp $ + +cd.token.unary.class |= determinant.token | transpose.token +cd.token.binary.class |= selector.token | vectorproduct.token | outerproduct.token +cd.token.nary.class |= vector.token | matrix.token | matrixrow.token | scalarproduct.token + +# the element definitions for the token elements +vector.content = Token.type, attribute type {MathMLtype}?,ContExp* +vector.token = element vector {vector.content} +matrix.content = Token.type, attribute type {MathMLtype}?,ContExp* +matrix.token = element matrix {matrix.content} +matrixrow.content = Token.type,ContExp* +matrixrow.token = element matrixrow {matrixrow.content} +determinant.content = Token.type +determinant.token = element determinant {determinant.content} +transpose.content = Token.type +transpose.token = element transpose {transpose.content} +selector.content = Token.type +selector.token = element selector {selector.content} +vectorproduct.content = Token.type +vectorproduct.token = element vectorproduct {vectorproduct.content} +scalarproduct.content = Token.type +scalarproduct.token = element scalarproduct {scalarproduct.content} +outerproduct.content = Token.type +outerproduct.token = element outerproduct {outerproduct.content} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/linear_algebra.rng b/validator/src/main/resources/schema/mathml3.0/linear_algebra.rng new file mode 100644 index 0000000000..e35744a28f --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/linear_algebra.rng @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml-p.rnc b/validator/src/main/resources/schema/mathml3.0/mathml-p.rnc new file mode 100644 index 0000000000..18c269d786 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml-p.rnc @@ -0,0 +1,2 @@ +include "mathml3-common.rnc" +include mathml3-presentation.rnc" diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-cds-pragmatic.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3-cds-pragmatic.rnc new file mode 100644 index 0000000000..74c61f6fca --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-cds-pragmatic.rnc @@ -0,0 +1,425 @@ +default namespace m = 'http://www.w3.org/1998/Math/MathML' +opel.application |= lcm_arith1_elt +lcm_arith1_elt |= element m:lcm {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.binder |= lcm_arith1_elt +opel.application |= gcd_arith1_elt +gcd_arith1_elt |= element m:gcd {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.binder |= gcd_arith1_elt +opel.application |= plus_arith1_elt +plus_arith1_elt |= element m:plus {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} + +opel.application |= minus_arith1_elt +minus_arith1_elt |= element m:minus {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= times_arith1_elt +times_arith1_elt |= element m:times {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= divide_arith1_elt +divide_arith1_elt |= element m:divide {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= power_arith1_elt +power_arith1_elt |= element m:power {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= abs_arith1_elt +abs_arith1_elt |= element m:abs {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= root_arith1_elt +root_arith1_elt |= element m:root {MathML.Common.attrib,Definition.attrib?,attribute type {"real" | "complex" | "principal_branch" | MathMLType}?} +opel.application |= sum_arith1_elt +sum_arith1_elt |= element m:sum {MathML.Common.attrib,Definition.attrib?} +opel.binder |= sum_arith1_elt +opel.application |= product_arith1_elt +product_arith1_elt |= element m:product {MathML.Common.attrib,Definition.attrib?} +opel.binder |= product_arith1_elt +opel.application |= diff_calculus1_elt +diff_calculus1_elt |= element m:diff {MathML.Common.attrib,Definition.attrib?,attribute type {"function" | "algebraic"}?} +opel.binder |= diff_calculus1_elt +opel.application |= partialdiff_calculus1_elt +partialdiff_calculus1_elt |= element m:partialdiff {MathML.Common.attrib,Definition.attrib?,attribute type {"function" | "algebraic"}?} +opel.application |= int_calculus1_elt +int_calculus1_elt |= element m:int {MathML.Common.attrib,Definition.attrib?} +opel.application |= defint_calculus1_elt +defint_calculus1_elt |= element m:defint {MathML.Common.attrib,Definition.attrib?} +opel.binder |= diff_calculus3_elt +diff_calculus3_elt |= element m:diff {MathML.Common.attrib,Definition.attrib?,attribute type {"function" | "algebraic"}?} +opel.binder |= diff_calculus3_elt +opel.binder |= partialdiff_calculus3_elt +partialdiff_calculus3_elt |= element m:partialdiff {MathML.Common.attrib,Definition.attrib?,attribute type {"function" | "algebraic"}?} +opel.binder |= int_calculus3_elt +int_calculus3_elt |= element m:int {MathML.Common.attrib,Definition.attrib?} +opel.binder |= defint_calculus3_elt +defint_calculus3_elt |= element m:defint {MathML.Common.attrib,Definition.attrib?} + +opel.application |= real_complex1_elt +real_complex1_elt |= element m:real {MathML.Common.attrib,Definition.attrib?} +opel.application |= imaginary_complex1_elt +imaginary_complex1_elt |= element m:imaginary {MathML.Common.attrib,Definition.attrib?} + +opel.application |= argument_complex1_elt +argument_complex1_elt |= element m:arg {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= conjugate_complex1_elt +conjugate_complex1_elt |= element m:conjugate {MathML.Common.attrib,Definition.attrib?} +opel.application |= domain_fns1_elt +domain_fns1_elt |= element m:domain {MathML.Common.attrib,Definition.attrib?} +opel.application |= range_fns1_elt +range_fns1_elt |= element m:codomain {MathML.Common.attrib,Definition.attrib?} +opel.application |= image_fns1_elt +image_fns1_elt |= element m:image {MathML.Common.attrib,Definition.attrib?} +opel.application |= identity_fns1_elt +identity_fns1_elt |= element m:ident {MathML.Common.attrib,Definition.attrib?} +opel.application |= inverse_fns1_elt +inverse_fns1_elt |= element m:inverse {MathML.Common.attrib,Definition.attrib?} +opel.application |= left_compose_fns1_elt +left_compose_fns1_elt |= element m:compose {MathML.Common.attrib,Definition.attrib?} +opel.application |= compose_fns1_elt +compose_fns1_elt |= element m:compose {MathML.Common.attrib,Definition.attrib?} +opel.binder |= lambda_fns1_elt +lambda_fns1_elt |= element m:lambda {MathML.Common.attrib,Definition.attrib?,ContExp*} +lambda_fns1_elt |= element m:lambda {MathML.Common.attrib,Definition.attrib?,bvar*,qualifier?,ContExp*} +container |= lambda_fns1_elt +opel.application |= condition_fns1_elt +condition_fns1_elt |= element m:lambda {MathML.Common.attrib,Definition.attrib?,ContExp*} +condition_fns1_elt |= element m:lambda {MathML.Common.attrib,Definition.attrib?,bvar*,qualifier?,ContExp*} +container |= condition_fns1_elt +opel.application |= factorof_integer1_elt +factorof_integer1_elt |= element m:factorof {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= factorial_integer1_elt +factorial_integer1_elt |= element m:factorial {MathML.Common.attrib,Definition.attrib?} +opel.application |= quotient_integer1_elt +quotient_integer1_elt |= element m:quotient {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= remainder_integer1_elt +remainder_integer1_elt |= element m:rem {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= interval_interval1_elt +interval_interval1_elt |= element m:interval {MathML.Common.attrib,Definition.attrib?,attribute type {"closed" | "open" | "open-closed" | "closed-open" | "integer"}?,attribute type {MathMLType}?,ContExp*} +interval_interval1_elt |= element m:interval {MathML.Common.attrib,Definition.attrib?,attribute type {"closed" | "open" | "open-closed" | "closed-open" | "integer"}?,attribute type {MathMLType}?,bvar*,qualifier?,ContExp*} +container |= interval_interval1_elt +opel.application |= interval_oo_interval1_elt +interval_oo_interval1_elt |= element m:interval {MathML.Common.attrib,Definition.attrib?,attribute closure {"open"},ContExp*} +opel.application |= interval_cc_interval1_elt +interval_cc_interval1_elt |= element m:interval {MathML.Common.attrib,Definition.attrib?,attribute closure {"closed"},ContExp*} +opel.application |= interval_oc_interval1_elt +interval_oc_interval1_elt |= element m:interval {MathML.Common.attrib,Definition.attrib?,attribute closure {"open-closed"},ContExp,ContExp} +opel.application |= interval_co_interval1_elt +interval_co_interval1_elt |= element m:interval {MathML.Common.attrib,Definition.attrib?,attribute closure {"closed-open"},ContExp,ContExp} +opel.application |= limit_limit1_elt +limit_limit1_elt |= element m:limit {MathML.Common.attrib,Definition.attrib?} +opel.binder |= limit_limit1_elt + +opel.constant |= above_limit1_elt +above_limit1_elt |= element m:above {MathML.Common.attrib,Definition.attrib?} +opel.constant |= below_limit1_elt +below_limit1_elt |= element m:below {MathML.Common.attrib,Definition.attrib?} +opel.constant |= null_limit1_elt +null_limit1_elt |= element m:null {MathML.Common.attrib,Definition.attrib?} +opel.application |= tendsto_limit1_elt +tendsto_limit1_elt |= element m:tendsto {MathML.Common.attrib,Definition.attrib?,attribute type {"above" | "below" | "two-sided" | MathMLType}?} +opel.application |= vectorproduct_linalg1_elt +vectorproduct_linalg1_elt |= element m:vectorproduct {MathML.Common.attrib,Definition.attrib?} +opel.application |= scalarproduct_linalg1_elt +scalarproduct_linalg1_elt |= element m:scalarproduct {MathML.Common.attrib,Definition.attrib?} +opel.binder |= scalarproduct_linalg1_elt +opel.application |= outerproduct_linalg1_elt +outerproduct_linalg1_elt |= element m:outerproduct {MathML.Common.attrib,Definition.attrib?} +opel.binder |= outerproduct_linalg1_elt +opel.application |= transpose_linalg1_elt +transpose_linalg1_elt |= element m:transpose {MathML.Common.attrib,Definition.attrib?} +opel.application |= determinant_linalg1_elt +determinant_linalg1_elt |= element m:determinant {MathML.Common.attrib,Definition.attrib?} +opel.application |= vector_selector_linalg1_elt +vector_selector_linalg1_elt |= element m:selector {MathML.Common.attrib,Definition.attrib?} + +opel.application |= vector_linalg2_elt +vector_linalg2_elt |= element m:vector {MathML.Common.attrib,Definition.attrib?,attribute type {"row"|MathMLType}?,ContExp*} +vector_linalg2_elt |= element m:vector {MathML.Common.attrib,Definition.attrib?,attribute type {"row"|MathMLType}?,bvar*,qualifier?,ContExp*} +container |= vector_linalg2_elt +opel.application |= matrixrow_linalg2_elt +matrixrow_linalg2_elt |= element m:matrixrow {MathML.Common.attrib,Definition.attrib?,ContExp*} +matrixrow_linalg2_elt |= element m:matrixrow {MathML.Common.attrib,Definition.attrib?,bvar*,qualifier?,ContExp*} +container |= matrixrow_linalg2_elt +opel.application |= matrix_linalg2_elt +matrix_linalg2_elt |= element m:matrix {MathML.Common.attrib,Definition.attrib?,attribute type {"real" | "complex" | "integer" | "symbolic" | MathMLType}?,ContExp*} +matrix_linalg2_elt |= element m:matrix {MathML.Common.attrib,Definition.attrib?,attribute type {"real" | "complex" | "integer" | "symbolic" | MathMLType}?,bvar*,qualifier?,ContExp*} +container |= matrix_linalg2_elt +opel.application |= vector_linalg3_elt +vector_linalg3_elt |= element m:vector {MathML.Common.attrib,Definition.attrib?,attribute type {"column" | MathMLType}?,ContExp*} +vector_linalg3_elt |= element m:vector {MathML.Common.attrib,Definition.attrib?,attribute type {"column" | MathMLType}?,bvar*,qualifier?,ContExp*} +container |= vector_linalg3_elt +opel.application |= matrixcolumn_linalg3_elt +matrixcolumn_linalg3_elt |= element m:matrixcolumn {MathML.Common.attrib,Definition.attrib?} +opel.application |= matrix_linalg3_elt +matrix_linalg3_elt |= element m:matrix {MathML.Common.attrib,Definition.attrib?} +opel.application |= vector_linalg6_elt +vector_linalg6_elt |= element m:vector {MathML.Common.attrib,Definition.attrib?,attribute type {"row"|MathMLType}?,ContExp*} +vector_linalg6_elt |= element m:vector {MathML.Common.attrib,Definition.attrib?,attribute type {"row"|MathMLType}?,bvar*,qualifier?,ContExp*} +container |= vector_linalg6_elt +opel.application |= matrix_linalg6_elt +matrix_linalg6_elt |= element m:matrix {MathML.Common.attrib,Definition.attrib?,attribute type {"real" | "complex" | "integer" | "symbolic" | MathMLType}?,ContExp*} +matrix_linalg6_elt |= element m:matrix {MathML.Common.attrib,Definition.attrib?,attribute type {"real" | "complex" | "integer" | "symbolic" | MathMLType}?,bvar*,qualifier?,ContExp*} +container |= matrix_linalg6_elt +opel.application |= list_list1_elt +list_list1_elt |= element m:list {MathML.Common.attrib,Definition.attrib?,attribute order {"lexicographic" | "numeric"}?,ContExp*} +list_list1_elt |= element m:list {MathML.Common.attrib,Definition.attrib?,attribute order {"lexicographic" | "numeric"}?,bvar*,qualifier?,ContExp*} +container |= list_list1_elt +opel.application |= list_selector_list2_elt +list_selector_list2_elt |= element m:selector {MathML.Common.attrib,Definition.attrib?} +opel.application |= equivalent_logic1_elt +equivalent_logic1_elt |= element m:equivalent {MathML.Common.attrib,Definition.attrib?} +opel.binder |= equivalent_logic1_elt +opel.application |= not_logic1_elt +not_logic1_elt |= element m:not {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= and_logic1_elt +and_logic1_elt |= element m:and {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.binder |= and_logic1_elt +opel.application |= xor_logic1_elt +xor_logic1_elt |= element m:xor {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.binder |= xor_logic1_elt +opel.application |= or_logic1_elt +or_logic1_elt |= element m:or {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.binder |= or_logic1_elt +opel.application |= implies_logic1_elt +implies_logic1_elt |= element m:implies {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.constant |= true_logic1_elt +true_logic1_elt |= element m:true {MathML.Common.attrib,Definition.attrib?} +opel.constant |= false_logic1_elt +false_logic1_elt |= element m:false {MathML.Common.attrib,Definition.attrib?} +opel.semantic-attribution |= type_mathmltypes_elt +type_mathmltypes_elt |= element m:type {MathML.Common.attrib,Definition.attrib?} + +opel.application |= min_minmax1_elt +min_minmax1_elt |= element m:min {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.binder |= min_minmax1_elt +opel.application |= max_minmax1_elt +max_minmax1_elt |= element m:max {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.binder |= max_minmax1_elt +opel.application |= cartesian_product_multiset1_elt +cartesian_product_multiset1_elt |= element m:cartesianproduct {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.binder |= cartesian_product_multiset1_elt +opel.constant |= emptyset_multiset1_elt +emptyset_multiset1_elt |= element m:emptyset {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.application |= map_multiset1_elt +map_multiset1_elt |= element m:map {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.application |= size_multiset1_elt +size_multiset1_elt |= element m:card {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.application |= suchthat_multiset1_elt +suchthat_multiset1_elt |= element m:suchthat {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.application |= multiset_multiset1_elt +multiset_multiset1_elt |= element m:multiset {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"},ContExp*} +multiset_multiset1_elt |= element m:multiset {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"},bvar*,qualifier?,ContExp*} +container |= multiset_multiset1_elt +opel.application |= intersect_multiset1_elt +intersect_multiset1_elt |= element m:intersect {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.binder |= intersect_multiset1_elt +opel.application |= union_multiset1_elt +union_multiset1_elt |= element m:union {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.binder |= union_multiset1_elt +opel.application |= setdiff_multiset1_elt +setdiff_multiset1_elt |= element m:setdiff {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.application |= subset_multiset1_elt +subset_multiset1_elt |= element m:subset {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.binder |= subset_multiset1_elt +opel.application |= in_multiset1_elt +in_multiset1_elt |= element m:in {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.application |= notin_multiset1_elt +notin_multiset1_elt |= element m:notin {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.application |= prsubset_multiset1_elt +prsubset_multiset1_elt |= element m:prsubset {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.binder |= prsubset_multiset1_elt +opel.application |= notsubset_multiset1_elt +notsubset_multiset1_elt |= element m:notsubset {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} +opel.application |= notprsubset_multiset1_elt +notprsubset_multiset1_elt |= element m:notprsubset {MathML.Common.attrib,Definition.attrib?,attribute type {"multiset"}} + +opel.application |= rational_nums1_elt +rational_nums1_elt |= element m:rational {MathML.Common.attrib,Definition.attrib?} +opel.constant |= infinity_nums1_elt +infinity_nums1_elt |= element m:infinity {MathML.Common.attrib,Definition.attrib?} +opel.constant |= e_nums1_elt +e_nums1_elt |= element m:exponentiale {MathML.Common.attrib,Definition.attrib?} +opel.constant |= i_nums1_elt +i_nums1_elt |= element m:imaginaryi {MathML.Common.attrib,Definition.attrib?} +opel.constant |= pi_nums1_elt +pi_nums1_elt |= element m:pi {MathML.Common.attrib,Definition.attrib?} +opel.constant |= gamma_nums1_elt +gamma_nums1_elt |= element m:eulergamma {MathML.Common.attrib,Definition.attrib?} +opel.constant |= NaN_nums1_elt +NaN_nums1_elt |= element m:notanumber {MathML.Common.attrib,Definition.attrib?} +opel.constant |= omtype_omtypes_elt +omtype_omtypes_elt |= element m:omtype {MathML.Common.attrib,Definition.attrib?} +opel.constant |= integer_omtypes_elt +integer_omtypes_elt |= element m:integer {MathML.Common.attrib,Definition.attrib?} +opel.constant |= float_omtypes_elt +float_omtypes_elt |= element m:float {MathML.Common.attrib,Definition.attrib?} +opel.constant |= string_omtypes_elt +string_omtypes_elt |= element m:string {MathML.Common.attrib,Definition.attrib?} +opel.constant |= bytearray_omtypes_elt +bytearray_omtypes_elt |= element m:bytearray {MathML.Common.attrib,Definition.attrib?} +opel.application |= piecewise_piece1_elt +piecewise_piece1_elt |= element m:piecewise {MathML.Common.attrib,Definition.attrib?,ContExp*} +piecewise_piece1_elt |= element m:piecewise {MathML.Common.attrib,Definition.attrib?,bvar*,qualifier?,ContExp*} +container |= piecewise_piece1_elt +opel.application |= piece_piece1_elt +piece_piece1_elt |= element m:piece {MathML.Common.attrib,Definition.attrib?,ContExp*} +piece_piece1_elt |= element m:piece {MathML.Common.attrib,Definition.attrib?,bvar*,qualifier?,ContExp*} +container |= piece_piece1_elt +opel.application |= otherwise_piece1_elt +otherwise_piece1_elt |= element m:otherwise {MathML.Common.attrib,Definition.attrib?,ContExp*} +otherwise_piece1_elt |= element m:otherwise {MathML.Common.attrib,Definition.attrib?,bvar*,qualifier?,ContExp*} +container |= otherwise_piece1_elt +opel.binder |= forall_quant1_elt +forall_quant1_elt |= element m:forall {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.binder |= exists_quant1_elt +exists_quant1_elt |= element m:exists {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= eq_relation1_elt +eq_relation1_elt |= element m:eq {MathML.Common.attrib,Definition.attrib?} +opel.binder |= eq_relation1_elt +opel.application |= lt_relation1_elt +lt_relation1_elt |= element m:lt {MathML.Common.attrib,Definition.attrib?} +opel.binder |= lt_relation1_elt +opel.application |= gt_relation1_elt +gt_relation1_elt |= element m:gt {MathML.Common.attrib,Definition.attrib?} +opel.binder |= gt_relation1_elt +opel.application |= neq_relation1_elt +neq_relation1_elt |= element m:neq {MathML.Common.attrib,Definition.attrib?} +opel.application |= leq_relation1_elt +leq_relation1_elt |= element m:leq {MathML.Common.attrib,Definition.attrib?} +opel.binder |= leq_relation1_elt +opel.application |= geq_relation1_elt +geq_relation1_elt |= element m:geq {MathML.Common.attrib,Definition.attrib?} +opel.binder |= geq_relation1_elt +opel.application |= approx_relation1_elt +approx_relation1_elt |= element m:approx {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.binder |= approx_relation1_elt +opel.application |= ceiling_rounding1_elt +ceiling_rounding1_elt |= element m:ceiling {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= floor_rounding1_elt +floor_rounding1_elt |= element m:floor {MathML.Common.attrib,Definition.attrib?,attribute type {MathMLType}?} +opel.application |= trunc_rounding1_elt +trunc_rounding1_elt |= element m:trunc {MathML.Common.attrib,Definition.attrib?} +opel.application |= round_rounding1_elt +round_rounding1_elt |= element m:round {MathML.Common.attrib,Definition.attrib?} +opel.application |= mean_s_data1_elt +mean_s_data1_elt |= element m:mean {MathML.Common.attrib,Definition.attrib?} +opel.application |= sdev_s_data1_elt +sdev_s_data1_elt |= element m:sdev {MathML.Common.attrib,Definition.attrib?} +opel.application |= variance_s_data1_elt +variance_s_data1_elt |= element m:variance {MathML.Common.attrib,Definition.attrib?} +opel.application |= mode_s_data1_elt +mode_s_data1_elt |= element m:mode {MathML.Common.attrib,Definition.attrib?} +opel.application |= median_s_data1_elt +median_s_data1_elt |= element m:median {MathML.Common.attrib,Definition.attrib?} +opel.application |= moment_s_data1_elt +moment_s_data1_elt |= element m:moment {MathML.Common.attrib,Definition.attrib?} +opel.application |= mean_s_dist1_elt +mean_s_dist1_elt |= element m:mean {MathML.Common.attrib,Definition.attrib?} +opel.application |= sdev_s_dist1_elt +sdev_s_dist1_elt |= element m:sdev {MathML.Common.attrib,Definition.attrib?} +opel.application |= variance_s_dist1_elt +variance_s_dist1_elt |= element m:variance {MathML.Common.attrib,Definition.attrib?} +opel.application |= moment_s_dist1_elt +moment_s_dist1_elt |= element m:moment {MathML.Common.attrib,Definition.attrib?} +opel.application |= cartesian_product_set1_elt +cartesian_product_set1_elt |= element m:cartesianproduct {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.binder |= cartesian_product_set1_elt +opel.constant |= emptyset_set1_elt +emptyset_set1_elt |= element m:emptyset {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.application |= map_set1_elt +map_set1_elt |= element m:map {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.application |= size_set1_elt +size_set1_elt |= element m:card {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.application |= suchthat_set1_elt +suchthat_set1_elt |= element m:suchthat {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.application |= set_set1_elt +set_set1_elt |= element m:set {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?,ContExp*} +set_set1_elt |= element m:set {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?,bvar*,qualifier?,ContExp*} +container |= set_set1_elt +opel.application |= intersect_set1_elt +intersect_set1_elt |= element m:intersect {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.binder |= intersect_set1_elt +opel.application |= union_set1_elt +union_set1_elt |= element m:union {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.binder |= union_set1_elt +opel.application |= setdiff_set1_elt +setdiff_set1_elt |= element m:setdiff {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.application |= subset_set1_elt +subset_set1_elt |= element m:subset {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.binder |= subset_set1_elt +opel.application |= in_set1_elt +in_set1_elt |= element m:in {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.application |= notin_set1_elt +notin_set1_elt |= element m:notin {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.application |= prsubset_set1_elt +prsubset_set1_elt |= element m:prsubset {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.binder |= prsubset_set1_elt +opel.application |= notsubset_set1_elt +notsubset_set1_elt |= element m:notsubset {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.application |= notprsubset_set1_elt +notprsubset_set1_elt |= element m:notprsubset {MathML.Common.attrib,Definition.attrib?,attribute type {"normal" | "multiset"}?} +opel.constant |= P_setname1_elt +P_setname1_elt |= element m:primes {MathML.Common.attrib,Definition.attrib?} +opel.constant |= N_setname1_elt +N_setname1_elt |= element m:naturalnumbers {MathML.Common.attrib,Definition.attrib?} +opel.constant |= Z_setname1_elt +Z_setname1_elt |= element m:integers {MathML.Common.attrib,Definition.attrib?} +opel.constant |= rationials_setname1_elt +rationials_setname1_elt |= element m:rationals {MathML.Common.attrib,Definition.attrib?} +opel.constant |= R_setname1_elt +R_setname1_elt |= element m:reals {MathML.Common.attrib,Definition.attrib?} +opel.constant |= complexes_setname1_elt +complexes_setname1_elt |= element m:complexes {MathML.Common.attrib,Definition.attrib?} +opel.application |= log_transc1_elt +log_transc1_elt |= element m:log {MathML.Common.attrib,Definition.attrib?} +opel.application |= ln_transc1_elt +ln_transc1_elt |= element m:ln {MathML.Common.attrib,Definition.attrib?} +opel.application |= exp_transc1_elt +exp_transc1_elt |= element m:exp {MathML.Common.attrib,Definition.attrib?} +opel.application |= sin_transc1_elt +sin_transc1_elt |= element m:sin {MathML.Common.attrib,Definition.attrib?} +opel.application |= cos_transc1_elt +cos_transc1_elt |= element m:cos {MathML.Common.attrib,Definition.attrib?} +opel.application |= tan_transc1_elt +tan_transc1_elt |= element m:tan {MathML.Common.attrib,Definition.attrib?} +opel.application |= sec_transc1_elt +sec_transc1_elt |= element m:sec {MathML.Common.attrib,Definition.attrib?} +opel.application |= csc_transc1_elt +csc_transc1_elt |= element m:csc {MathML.Common.attrib,Definition.attrib?} +opel.application |= cot_transc1_elt +cot_transc1_elt |= element m:cot {MathML.Common.attrib,Definition.attrib?} +opel.application |= sinh_transc1_elt +sinh_transc1_elt |= element m:sinh {MathML.Common.attrib,Definition.attrib?} +opel.application |= cosh_transc1_elt +cosh_transc1_elt |= element m:cosh {MathML.Common.attrib,Definition.attrib?} +opel.application |= tanh_transc1_elt +tanh_transc1_elt |= element m:tanh {MathML.Common.attrib,Definition.attrib?} +opel.application |= sech_transc1_elt +sech_transc1_elt |= element m:sech {MathML.Common.attrib,Definition.attrib?} +opel.application |= csch_transc1_elt +csch_transc1_elt |= element m:csch {MathML.Common.attrib,Definition.attrib?} +opel.application |= coth_transc1_elt +coth_transc1_elt |= element m:coth {MathML.Common.attrib,Definition.attrib?} +opel.application |= arcsin_transc1_elt +arcsin_transc1_elt |= element m:arcsin {MathML.Common.attrib,Definition.attrib?} +opel.application |= arccos_transc1_elt +arccos_transc1_elt |= element m:arccos {MathML.Common.attrib,Definition.attrib?} +opel.application |= arctan_transc1_elt +arctan_transc1_elt |= element m:arctan {MathML.Common.attrib,Definition.attrib?} +opel.application |= arcsec_transc1_elt +arcsec_transc1_elt |= element m:arcsec {MathML.Common.attrib,Definition.attrib?} +opel.application |= arccsc_transc1_elt +arccsc_transc1_elt |= element m:arccsc {MathML.Common.attrib,Definition.attrib?} +opel.application |= arccot_transc1_elt +arccot_transc1_elt |= element m:arccot {MathML.Common.attrib,Definition.attrib?} +opel.application |= arcsinh_transc1_elt +arcsinh_transc1_elt |= element m:arcsinh {MathML.Common.attrib,Definition.attrib?} +opel.application |= arccosh_transc1_elt +arccosh_transc1_elt |= element m:arccosh {MathML.Common.attrib,Definition.attrib?} +opel.application |= arctanh_transc1_elt +arctanh_transc1_elt |= element m:arctanh {MathML.Common.attrib,Definition.attrib?} +opel.application |= arcsech_transc1_elt +arcsech_transc1_elt |= element m:arcsech {MathML.Common.attrib,Definition.attrib?} +opel.application |= arccsch_transc1_elt +arccsch_transc1_elt |= element m:arccsch {MathML.Common.attrib,Definition.attrib?} +opel.application |= arccoth_transc1_elt +arccoth_transc1_elt |= element m:arccoth {MathML.Common.attrib,Definition.attrib?} +opel.application |= divergence_veccalc1_elt +divergence_veccalc1_elt |= element m:divergence {MathML.Common.attrib,Definition.attrib?} +opel.application |= grad_veccalc1_elt +grad_veccalc1_elt |= element m:grad {MathML.Common.attrib,Definition.attrib?} +opel.application |= curl_veccalc1_elt +curl_veccalc1_elt |= element m:curl {MathML.Common.attrib,Definition.attrib?} +opel.application |= Laplacian_veccalc1_elt +Laplacian_veccalc1_elt |= element m:laplacian {MathML.Common.attrib,Definition.attrib?} diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-cds-pragmatic.rng b/validator/src/main/resources/schema/mathml3.0/mathml3-cds-pragmatic.rng new file mode 100644 index 0000000000..551a2f75a0 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-cds-pragmatic.rng @@ -0,0 +1,2909 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + real + complex + principal_branch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function + algebraic + + + + + + + + + + + + + + + + + + + + + function + algebraic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + function + algebraic + + + + + + + + + + + + + + + + + + + + + function + algebraic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + closed + open + open-closed + closed-open + integer + + + + + + + + + + + + + + + + + + + + + + + closed + open + open-closed + closed-open + integer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + open + + + + + + + + + + + + + + + + + closed + + + + + + + + + + + + + + + + + open-closed + + + + + + + + + + + + + + + + closed-open + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + above + below + two-sided + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + + + + + + + + + + + + + + + + + + + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + real + complex + integer + symbolic + + + + + + + + + + + + + + + + + + + real + complex + integer + symbolic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + + + + + + + + + + + + + + + + + + + column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + + + + + + + + + + + + + + + + + + + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + real + complex + integer + symbolic + + + + + + + + + + + + + + + + + + + real + complex + integer + symbolic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lexicographic + numeric + + + + + + + + + + + + + + + + + + lexicographic + numeric + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + multiset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + normal + multiset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-cds.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3-cds.rnc new file mode 100644 index 0000000000..4d92467306 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-cds.rnc @@ -0,0 +1,67 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2008 W3C (MIT, ERCIM, Keio) +# +# Use and distribution of this code are permitted under the terms +# W3C Software Notice and License +# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +# +# +# Revision: $Id: mathml3-cds.rnc,v 1.2 2008/11/15 22:00:48 dcarlis Exp $ +# +# Update to MathML3 and Relax NG: David Carlisle and Michael Kohlhase + +default namespace m = "http://www.w3.org/1998/Math/MathML" + +# some elements were containers in MathML2, so they get a separate treatment, +# that can be extended in mathml3-pragmatic.rnc + +# we augment the content of an apply element +apply.content |= (cd.token.unary.class,ContExp)| + (cd.token.binary.class,ContExp,ContExp)| + (cd.token.nary.class,ContExp+)| + cd.container.class + +# of the bind element +binder.class |= cd.token.binder.class + +# now we allow all tokens (except the binding symbols) to appear on their own +ContExp |= cd.token.unary.class|cd.token.binary.class|cd.token.nary.class|cd.token.class + +#now we allow the containers as well. +ContExp |= cd.container.class + +# we set the default content type for tokens +Token.type = Definition.attrib, MathML.Common.attrib + +# also set up MathMLtype, which is used in the CDs +#ednote(rnc:mathmltype) fudge it for now +MathMLtype = xsd:string + +# simple arity checking for Tokens from the MathML3 CDs. +# we set up the categories to be extended by the CD-generated grammars +cd.token.class = notAllowed +cd.token.unary.class = notAllowed +cd.token.binary.class = notAllowed +cd.token.nary.class = notAllowed +cd.token.binder.class = notAllowed +cd.token.key.class = notAllowed +cd.token.error.class = notAllowed +cd.container.class = notAllowed + +# then we include the generated ones + +include "algebra-logic.rnc" +include "basic-content-elements.rnc" +include "calculus_veccalc.rnc" +include "constants.rnc" +include "errors.rnc" +include "linear_algebra.rnc" +include "relations.rnc" +include "sequences_series.rnc" +include "sets.rnc" +include "specfun.rnc" +include "statistics.rnc" + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-cds.rng b/validator/src/main/resources/schema/mathml3.0/mathml3-cds.rng new file mode 100644 index 0000000000..1a1b709ef5 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-cds.rng @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-common.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3-common.rnc new file mode 100644 index 0000000000..21ca8338e9 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-common.rnc @@ -0,0 +1,84 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2010 W3C (MIT, ERCIM, Keio) +# +# Use and distribution of this code are permitted under the terms +# W3C Software Notice and License +# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 + + +default namespace m = "http://www.w3.org/1998/Math/MathML" +namespace local = "" + +start = math + +math = element math {math.attributes,MathExpression*} +MathExpression = semantics + +NonMathMLAtt = attribute (* - (local:*|m:*)) {xsd:string} + +CommonDeprecatedAtt = attribute other {text}? + +CommonAtt = attribute id {xsd:ID}?, + attribute xref {text}?, + attribute class {xsd:NMTOKENS}?, + attribute style {xsd:string}?, + attribute href {xsd:anyURI}?, + CommonDeprecatedAtt, + NonMathMLAtt* + + +math.attributes = CommonAtt, + attribute display {"block" | "inline"}?, + attribute maxwidth {length}?, + attribute overflow {"linebreak" | "scroll" | "elide" | "truncate" | "scale"}?, + attribute altimg {xsd:anyURI}?, + attribute altimg-width {length}?, + attribute altimg-height {length}?, + attribute altimg-valign {length | "top" | "middle" | "bottom"}?, + attribute alttext {text}?, + attribute cdgroup {xsd:anyURI}?, + math.deprecatedattributes + +# the mathml3-presentation schema adds additional attributes +# to the math element, all those valid on mstyle + +math.deprecatedattributes = attribute mode {xsd:string}?, + attribute macros {xsd:string}? + + +name = attribute name {xsd:NCName} +cd = attribute cd {xsd:NCName} + +src = attribute src {xsd:anyURI}? + +annotation = element annotation {annotation.attributes,text} + +annotation-xml.model = (MathExpression|anyElement)* + +anyElement = element (* - m:*) {(attribute * {text}|text| anyElement)*} + +annotation-xml = element annotation-xml {annotation.attributes, + annotation-xml.model} +annotation.attributes = CommonAtt, + cd?, + name?, + DefEncAtt, + src? + +DefEncAtt = attribute encoding {xsd:string}?, + attribute definitionURL {xsd:anyURI}? + +semantics = element semantics {semantics.attributes, + MathExpression, + (annotation|annotation-xml)*} +semantics.attributes = CommonAtt,DefEncAtt,cd?,name? + + + +length = xsd:string { + pattern = '\s*((-?[0-9]*(\.[0-9]*)?(e[mx]|in|cm|mm|p[xtc]|%)?)|(negative)?((very){0,2}thi(n|ck)|medium)mathspace)\s*' +} + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-common.rng b/validator/src/main/resources/schema/mathml3.0/mathml3-common.rng new file mode 100644 index 0000000000..d22b0d881b --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-common.rng @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + block + inline + + + + + + + + + + + + linebreak + scroll + elide + truncate + scale + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \s*((-?[0-9]*(\.[0-9]*)?(e[mx]|in|cm|mm|p[xtc]|%)?)|(negative)?((very){0,2}thi(n|ck)|medium)mathspace)\s* + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-content.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3-content.rnc new file mode 100644 index 0000000000..3facbfd556 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-content.rnc @@ -0,0 +1,373 @@ + +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2010 W3C (MIT, ERCIM, Keio) +# +# Use and distribution of this code are permitted under the terms +# W3C Software Notice and License +# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 + +include "mathml3-strict-content.rnc"{ + cn.content = (text | mglyph | sep | PresentationExpression)* + cn.attributes = CommonAtt, DefEncAtt, attribute type {text}?, base? + + ci.attributes = CommonAtt, DefEncAtt, ci.type? + ci.type = attribute type {text} + ci.content = (text | mglyph | PresentationExpression)* + + csymbol.attributes = CommonAtt, DefEncAtt, attribute type {text}?,cd? + csymbol.content = (text | mglyph | PresentationExpression)* + + bvar = element bvar { (ci | semantics-ci) & degree?} + + cbytes.attributes = CommonAtt, DefEncAtt + + cs.attributes = CommonAtt, DefEncAtt + + apply.content = ContExp+ | (ContExp, BvarQ, Qualifier*, ContExp*) + + bind.content = apply.content +} + +base = attribute base {text} + + +sep = element sep {empty} +PresentationExpression |= notAllowed + + +DomainQ = (domainofapplication|condition|interval|(lowlimit,uplimit?))* +domainofapplication = element domainofapplication {ContExp} +condition = element condition {ContExp} +uplimit = element uplimit {ContExp} +lowlimit = element lowlimit {ContExp} + +Qualifier = DomainQ|degree|momentabout|logbase +degree = element degree {ContExp} +momentabout = element momentabout {ContExp} +logbase = element logbase {ContExp} + +type = attribute type {text} +order = attribute order {"numeric" | "lexicographic"} +closure = attribute closure {text} + + +ContExp |= piecewise + + +piecewise = element piecewise {CommonAtt, DefEncAtt,(piece* & otherwise?)} + +piece = element piece {CommonAtt, DefEncAtt, ContExp, ContExp} + +otherwise = element otherwise {CommonAtt, DefEncAtt, ContExp} + + +DeprecatedContExp = reln | fn | declare +ContExp |= DeprecatedContExp + +reln = element reln {ContExp*} +fn = element fn {ContExp} +declare = element declare {attribute type {xsd:string}?, + attribute scope {xsd:string}?, + attribute nargs {xsd:nonNegativeInteger}?, + attribute occurrence {"prefix"|"infix"|"function-model"}?, + DefEncAtt, + ContExp+} + + +interval.class = interval +ContExp |= interval.class + + +interval = element interval { CommonAtt, DefEncAtt,closure?, ContExp,ContExp} + +unary-functional.class = inverse | ident | domain | codomain | image | ln | log | moment +ContExp |= unary-functional.class + + +inverse = element inverse { CommonAtt, DefEncAtt, empty} +ident = element ident { CommonAtt, DefEncAtt, empty} +domain = element domain { CommonAtt, DefEncAtt, empty} +codomain = element codomain { CommonAtt, DefEncAtt, empty} +image = element image { CommonAtt, DefEncAtt, empty} +ln = element ln { CommonAtt, DefEncAtt, empty} +log = element log { CommonAtt, DefEncAtt, empty} +moment = element moment { CommonAtt, DefEncAtt, empty} + +lambda.class = lambda +ContExp |= lambda.class + + +lambda = element lambda { CommonAtt, DefEncAtt, BvarQ, DomainQ, ContExp} + +nary-functional.class = compose +ContExp |= nary-functional.class + + +compose = element compose { CommonAtt, DefEncAtt, empty} + +binary-arith.class = quotient | divide | minus | power | rem | root +ContExp |= binary-arith.class + + +quotient = element quotient { CommonAtt, DefEncAtt, empty} +divide = element divide { CommonAtt, DefEncAtt, empty} +minus = element minus { CommonAtt, DefEncAtt, empty} +power = element power { CommonAtt, DefEncAtt, empty} +rem = element rem { CommonAtt, DefEncAtt, empty} +root = element root { CommonAtt, DefEncAtt, empty} + +unary-arith.class = factorial | minus | root | abs | conjugate | arg | real | imaginary | floor | ceiling | exp +ContExp |= unary-arith.class + + +factorial = element factorial { CommonAtt, DefEncAtt, empty} +abs = element abs { CommonAtt, DefEncAtt, empty} +conjugate = element conjugate { CommonAtt, DefEncAtt, empty} +arg = element arg { CommonAtt, DefEncAtt, empty} +real = element real { CommonAtt, DefEncAtt, empty} +imaginary = element imaginary { CommonAtt, DefEncAtt, empty} +floor = element floor { CommonAtt, DefEncAtt, empty} +ceiling = element ceiling { CommonAtt, DefEncAtt, empty} +exp = element exp { CommonAtt, DefEncAtt, empty} + +nary-minmax.class = max | min +ContExp |= nary-minmax.class + + +max = element max { CommonAtt, DefEncAtt, empty} +min = element min { CommonAtt, DefEncAtt, empty} + +nary-arith.class = plus | times | gcd | lcm +ContExp |= nary-arith.class + + +plus = element plus { CommonAtt, DefEncAtt, empty} +times = element times { CommonAtt, DefEncAtt, empty} +gcd = element gcd { CommonAtt, DefEncAtt, empty} +lcm = element lcm { CommonAtt, DefEncAtt, empty} + +nary-logical.class = and | or | xor +ContExp |= nary-logical.class + + +and = element and { CommonAtt, DefEncAtt, empty} +or = element or { CommonAtt, DefEncAtt, empty} +xor = element xor { CommonAtt, DefEncAtt, empty} + +unary-logical.class = not +ContExp |= unary-logical.class + + +not = element not { CommonAtt, DefEncAtt, empty} + +binary-logical.class = implies | equivalent +ContExp |= binary-logical.class + + +implies = element implies { CommonAtt, DefEncAtt, empty} +equivalent = element equivalent { CommonAtt, DefEncAtt, empty} + +quantifier.class = forall | exists +ContExp |= quantifier.class + + +forall = element forall { CommonAtt, DefEncAtt, empty} +exists = element exists { CommonAtt, DefEncAtt, empty} + +nary-reln.class = eq | gt | lt | geq | leq +ContExp |= nary-reln.class + + +eq = element eq { CommonAtt, DefEncAtt, empty} +gt = element gt { CommonAtt, DefEncAtt, empty} +lt = element lt { CommonAtt, DefEncAtt, empty} +geq = element geq { CommonAtt, DefEncAtt, empty} +leq = element leq { CommonAtt, DefEncAtt, empty} + +binary-reln.class = neq | approx | factorof | tendsto +ContExp |= binary-reln.class + + +neq = element neq { CommonAtt, DefEncAtt, empty} +approx = element approx { CommonAtt, DefEncAtt, empty} +factorof = element factorof { CommonAtt, DefEncAtt, empty} +tendsto = element tendsto { CommonAtt, DefEncAtt, type?, empty} + +int.class = int +ContExp |= int.class + + +int = element int { CommonAtt, DefEncAtt, empty} + +Differential-Operator.class = diff +ContExp |= Differential-Operator.class + + +diff = element diff { CommonAtt, DefEncAtt, empty} + +partialdiff.class = partialdiff +ContExp |= partialdiff.class + + +partialdiff = element partialdiff { CommonAtt, DefEncAtt, empty} + +unary-veccalc.class = divergence | grad | curl | laplacian +ContExp |= unary-veccalc.class + + +divergence = element divergence { CommonAtt, DefEncAtt, empty} +grad = element grad { CommonAtt, DefEncAtt, empty} +curl = element curl { CommonAtt, DefEncAtt, empty} +laplacian = element laplacian { CommonAtt, DefEncAtt, empty} + +nary-setlist-constructor.class = set | \list +ContExp |= nary-setlist-constructor.class + + +set = element set { CommonAtt, DefEncAtt, type?, BvarQ*, DomainQ*, ContExp*} +\list = element \list { CommonAtt, DefEncAtt, order?, BvarQ*, DomainQ*, ContExp*} + +nary-set.class = union | intersect | cartesianproduct +ContExp |= nary-set.class + + +union = element union { CommonAtt, DefEncAtt, empty} +intersect = element intersect { CommonAtt, DefEncAtt, empty} +cartesianproduct = element cartesianproduct { CommonAtt, DefEncAtt, empty} + +binary-set.class = in | notin | notsubset | notprsubset | setdiff +ContExp |= binary-set.class + + +in = element in { CommonAtt, DefEncAtt, empty} +notin = element notin { CommonAtt, DefEncAtt, empty} +notsubset = element notsubset { CommonAtt, DefEncAtt, empty} +notprsubset = element notprsubset { CommonAtt, DefEncAtt, empty} +setdiff = element setdiff { CommonAtt, DefEncAtt, empty} + +nary-set-reln.class = subset | prsubset +ContExp |= nary-set-reln.class + + +subset = element subset { CommonAtt, DefEncAtt, empty} +prsubset = element prsubset { CommonAtt, DefEncAtt, empty} + +unary-set.class = card +ContExp |= unary-set.class + + +card = element card { CommonAtt, DefEncAtt, empty} + +sum.class = sum +ContExp |= sum.class + + +sum = element sum { CommonAtt, DefEncAtt, empty} + +product.class = product +ContExp |= product.class + + +product = element product { CommonAtt, DefEncAtt, empty} + +limit.class = limit +ContExp |= limit.class + + +limit = element limit { CommonAtt, DefEncAtt, empty} + +unary-elementary.class = sin | cos | tan | sec | csc | cot | sinh | cosh | tanh | sech | csch | coth | arcsin | arccos | arctan | arccosh | arccot | arccoth | arccsc | arccsch | arcsec | arcsech | arcsinh | arctanh +ContExp |= unary-elementary.class + + +sin = element sin { CommonAtt, DefEncAtt, empty} +cos = element cos { CommonAtt, DefEncAtt, empty} +tan = element tan { CommonAtt, DefEncAtt, empty} +sec = element sec { CommonAtt, DefEncAtt, empty} +csc = element csc { CommonAtt, DefEncAtt, empty} +cot = element cot { CommonAtt, DefEncAtt, empty} +sinh = element sinh { CommonAtt, DefEncAtt, empty} +cosh = element cosh { CommonAtt, DefEncAtt, empty} +tanh = element tanh { CommonAtt, DefEncAtt, empty} +sech = element sech { CommonAtt, DefEncAtt, empty} +csch = element csch { CommonAtt, DefEncAtt, empty} +coth = element coth { CommonAtt, DefEncAtt, empty} +arcsin = element arcsin { CommonAtt, DefEncAtt, empty} +arccos = element arccos { CommonAtt, DefEncAtt, empty} +arctan = element arctan { CommonAtt, DefEncAtt, empty} +arccosh = element arccosh { CommonAtt, DefEncAtt, empty} +arccot = element arccot { CommonAtt, DefEncAtt, empty} +arccoth = element arccoth { CommonAtt, DefEncAtt, empty} +arccsc = element arccsc { CommonAtt, DefEncAtt, empty} +arccsch = element arccsch { CommonAtt, DefEncAtt, empty} +arcsec = element arcsec { CommonAtt, DefEncAtt, empty} +arcsech = element arcsech { CommonAtt, DefEncAtt, empty} +arcsinh = element arcsinh { CommonAtt, DefEncAtt, empty} +arctanh = element arctanh { CommonAtt, DefEncAtt, empty} + +nary-stats.class = mean | sdev | variance | median | mode +ContExp |= nary-stats.class + + +mean = element mean { CommonAtt, DefEncAtt, empty} +sdev = element sdev { CommonAtt, DefEncAtt, empty} +variance = element variance { CommonAtt, DefEncAtt, empty} +median = element median { CommonAtt, DefEncAtt, empty} +mode = element mode { CommonAtt, DefEncAtt, empty} + +nary-constructor.class = vector | matrix | matrixrow +ContExp |= nary-constructor.class + + +vector = element vector { CommonAtt, DefEncAtt, BvarQ, DomainQ, ContExp*} +matrix = element matrix { CommonAtt, DefEncAtt, BvarQ, DomainQ, ContExp*} +matrixrow = element matrixrow { CommonAtt, DefEncAtt, BvarQ, DomainQ, ContExp*} + +unary-linalg.class = determinant | transpose +ContExp |= unary-linalg.class + + +determinant = element determinant { CommonAtt, DefEncAtt, empty} +transpose = element transpose { CommonAtt, DefEncAtt, empty} + +nary-linalg.class = selector +ContExp |= nary-linalg.class + + +selector = element selector { CommonAtt, DefEncAtt, empty} + +binary-linalg.class = vectorproduct | scalarproduct | outerproduct +ContExp |= binary-linalg.class + + +vectorproduct = element vectorproduct { CommonAtt, DefEncAtt, empty} +scalarproduct = element scalarproduct { CommonAtt, DefEncAtt, empty} +outerproduct = element outerproduct { CommonAtt, DefEncAtt, empty} + +constant-set.class = integers | reals | rationals | naturalnumbers | complexes | primes | emptyset +ContExp |= constant-set.class + + +integers = element integers { CommonAtt, DefEncAtt, empty} +reals = element reals { CommonAtt, DefEncAtt, empty} +rationals = element rationals { CommonAtt, DefEncAtt, empty} +naturalnumbers = element naturalnumbers { CommonAtt, DefEncAtt, empty} +complexes = element complexes { CommonAtt, DefEncAtt, empty} +primes = element primes { CommonAtt, DefEncAtt, empty} +emptyset = element emptyset { CommonAtt, DefEncAtt, empty} + +constant-arith.class = exponentiale | imaginaryi | notanumber | true | false | pi | eulergamma | infinity +ContExp |= constant-arith.class + + +exponentiale = element exponentiale { CommonAtt, DefEncAtt, empty} +imaginaryi = element imaginaryi { CommonAtt, DefEncAtt, empty} +notanumber = element notanumber { CommonAtt, DefEncAtt, empty} +true = element true { CommonAtt, DefEncAtt, empty} +false = element false { CommonAtt, DefEncAtt, empty} +pi = element pi { CommonAtt, DefEncAtt, empty} +eulergamma = element eulergamma { CommonAtt, DefEncAtt, empty} +infinity = element infinity { CommonAtt, DefEncAtt, empty} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-content.rng b/validator/src/main/resources/schema/mathml3.0/mathml3-content.rng new file mode 100644 index 0000000000..f32cf7b023 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-content.rng @@ -0,0 +1,1543 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + numeric + lexicographic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + prefix + infix + function-model + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-deprecated.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3-deprecated.rnc new file mode 100644 index 0000000000..2718d9b3f0 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-deprecated.rnc @@ -0,0 +1,44 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2008 W3C (MIT, ERCIM, Keio) +# +# Use and distribution of this code are permitted under the terms +# W3C Software Notice and License +# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +# +# +# Revision: $Id: mathml3-deprecated.rnc,v 1.3 2008/11/15 22:00:48 dcarlis Exp $ +# +# Update to MathML3 and Relax NG: David Carlisle and Michael Kohlhase + +default namespace m = "http://www.w3.org/1998/Math/MathML" + + +Token-style.attrib &= + attribute fontsize {xsd:string}? , + attribute fontstyle {xsd:string}? , + attribute fontweight {xsd:string}? , + attribute color {xsd:string}? , + attribute fontfamily {xsd:string}? , + attribute fontweight {xsd:string}? + +#Deprecated Content Elements +dep-content = + element reln {ContExp*}| + element fn {ContExp} + +ContExp |= dep-content + +apply-head |= dep-content + +declare = element declare {attribute type {xsd:string}?, + attribute scope {xsd:string}?, + attribute nargs {xsd:nonNegativeInteger}?, + attribute occurrence {"prefix"|"infix"|"function-model"}?, + Definition.attrib,cdbase.attrib?, + ContExp+} +ContExp |= declare + +mtr.content |= ContInPres \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-deprecated.rng b/validator/src/main/resources/schema/mathml3.0/mathml3-deprecated.rng new file mode 100644 index 0000000000..d9159d3bd8 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-deprecated.rng @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + prefix + infix + function-model + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-pragmatic.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3-pragmatic.rnc new file mode 100644 index 0000000000..86856ed6d6 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-pragmatic.rnc @@ -0,0 +1,96 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2008 W3C (MIT, ERCIM, Keio) +# +# Use and distribution of this code are permitted under the terms +# W3C Software Notice and License +# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +# +# +# Revision: $Id: mathml3-pragmatic.rnc,v 1.4 2009/01/14 13:13:58 dcarlis Exp $ +# +# Update to MathML3 and Relax NG: David Carlisle and Michael Kohlhase +# +# This is the RelaxNG schema module for the pragmatic content part of +# MathML (but without the presentation in token elements). + +default namespace m = "http://www.w3.org/1998/Math/MathML" + + +## the content of "cn" may have elements in it +sep = element sep {empty} +cn.content |= (sep|text|Glyph-alignmark)* +cn.type.vals |= "e-notation"|"rational"| + "complex-cartesian"|"complex-polar"|"constant" + +## allow degree in bvar +degree = element degree {MathML.Common.attrib,ContExp} +logbase = element logbase {MathML.Common.attrib,ContExp} +momentabout = element momentabout {MathML.Common.attrib,ContExp} +bvar-head |= (degree?,ci)|(ci,degree?) + +## allow degree to modify +apply.content |= root_arith1_elt,degree,ContExp* +apply.content |= moment_s_data1_elt,(degree? & momentabout?),ContInPres* +apply.content |= log_transc1_elt,logbase,ContExp* + +##allow apply to act as a binder +apply.content |= bind.content + +domainofapplication = element domainofapplication { + Definition.attrib,MathML.Common.attrib,cdbase.attrib?,ContExp} + +lowlimit = element lowlimit { + Definition.attrib,MathML.Common.attrib,cdbase.attrib?,ContExp+} +uplimit = element uplimit { + Definition.attrib,MathML.Common.attrib,cdbase.attrib?,ContExp+} + +condition = element condition {Definition.attrib,cdbase.attrib?,ContExp} + +## allow the non-strict qualifiers +qualifier |= domainofapplication|(uplimit,lowlimit?)| + (lowlimit,uplimit?)|degree|condition + +## we collect the operator elements by role +opel.constant = notAllowed +opel.binder = notAllowed +opel.application = notAllowed +opel.semantic-attribution = notAllowed +opel.attribution = notAllowed +opel.error = notAllowed + +opels = opel.constant | opel.binder | opel.application | + opel.semantic-attribution | opel.attribution | + opel.error +container = notAllowed + +## the values of the MathML type attributes; +MathMLType |= "real" | "complex" | "function" | "algebraic" | "integer" + + +## we instantiate the strict content model by structure checking +apply-binder-head = semantics-apply-binder|opel.binder +apply.content |= apply-binder-head,bvar*,qualifier?,ContExp* +semantics-apply-binder = element semantics { + semantics.attribs,apply-binder-head, semantics-annotation*} + +apply-head |= opel.application +bind-head |= opel.binder +cerror-head |= opel.error + +## allow all functions, constants, and containers +## to be content expressions on their own +ContExp |= opel.constant|opel.application|container + + +# allow no body +bind.content |= bind-head,bvar*,qualifier? + +# not sure what a sequence of things is supposed to map to in strict/OM +# but is definitely allowed in pragmatic +# see Content/SequencesAndSeries/product/rec-product3 +math.content |= ContExp* + +opel.content |= PresExp|Glyph-alignmark diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-pragmatic.rng b/validator/src/main/resources/schema/mathml3.0/mathml3-pragmatic.rng new file mode 100644 index 0000000000..e45821aa6c --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-pragmatic.rng @@ -0,0 +1,290 @@ + + + + + the content of "cn" may have <sep> elements in it + + + + + + + + + + + + + + + + e-notation + rational + complex-cartesian + complex-polar + constant + + + + allow degree in bvar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allow degree to modify <root/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allow apply to act as a binder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allow the non-strict qualifiers + + + + + + + + + + + + + + + + + + + + we collect the operator elements by role + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + the values of the MathML type attributes; + + real + complex + function + algebraic + integer + + + + we instantiate the strict content model by structure checking + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allow all functions, constants, and containers to be content expressions on their own + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-presentation.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3-presentation.rnc new file mode 100644 index 0000000000..5fa56e7b3d --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-presentation.rnc @@ -0,0 +1,536 @@ + +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2010 W3C (MIT, ERCIM, Keio) +# +# Use and distribution of this code are permitted under the terms +# W3C Software Notice and License +# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 + +default namespace m = "http://www.w3.org/1998/Math/MathML" + +MathExpression |= PresentationExpression + +ImpliedMrow = MathExpression* + +TableRowExpression = mtr|mlabeledtr + +TableCellExpression = mtd + +MstackExpression = MathExpression|mscarries|msline|msrow|msgroup + +MsrowExpression = MathExpression|none + +MultiScriptExpression = (MathExpression|none),(MathExpression|none) + +mpadded-length = xsd:string { + pattern = '\s*([\+\-]?[0-9]*(\.[0-9]*)?\s*((%?\s*(height|depth|width)?)|e[mx]|in|cm|mm|p[xtc]|((negative)?((very){0,2}thi(n|ck)|medium)mathspace)))\s*' } + +linestyle = "none" | "solid" | "dashed" + +verticalalign = + "top" | + "bottom" | + "center" | + "baseline" | + "axis" + +columnalignstyle = "left" | "center" | "right" + +notationstyle = + "longdiv" | + "actuarial" | + "radical" | + "box" | + "roundedbox" | + "circle" | + "left" | + "right" | + "top" | + "bottom" | + "updiagonalstrike" | + "downdiagonalstrike" | + "verticalstrike" | + "horizontalstrike" | + "madruwb" + +idref = text +unsigned-integer = xsd:unsignedLong +integer = xsd:integer +number = xsd:decimal + +character = xsd:string { + pattern = '\s*\S\s*'} + +color = xsd:string { + pattern = '\s*((#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?)|[aA][qQ][uU][aA]|[bB][lL][aA][cC][kK]|[bB][lL][uU][eE]|[fF][uU][cC][hH][sS][iI][aA]|[gG][rR][aA][yY]|[gG][rR][eE][eE][nN]|[lL][iI][mM][eE]|[mM][aA][rR][oO][oO][nN]|[nN][aA][vV][yY]|[oO][lL][iI][vV][eE]|[pP][uU][rR][pP][lL][eE]|[rR][eE][dD]|[sS][iI][lL][vV][eE][rR]|[tT][eE][aA][lL]|[wW][hH][iI][tT][eE]|[yY][eE][lL][lL][oO][wW])\s*'} + + +group-alignment = "left" | "center" | "right" | "decimalpoint" +group-alignment-list = list {group-alignment+} +group-alignment-list-list = xsd:string { + pattern = '(\s*\{\s*(left|center|right|decimalpoint)(\s+(left|center|right|decimalpoint))*\})*\s*' } +positive-integer = xsd:positiveInteger + + +TokenExpression = mi|mn|mo|mtext|mspace|ms + +token.content = mglyph|malignmark|text + +mi = element mi {mi.attributes, token.content*} +mi.attributes = + CommonAtt, + CommonPresAtt, + TokenAtt + + +mn = element mn {mn.attributes, token.content*} +mn.attributes = + CommonAtt, + CommonPresAtt, + TokenAtt + + +mo = element mo {mo.attributes, token.content*} +mo.attributes = + CommonAtt, + CommonPresAtt, + TokenAtt, + attribute form {"prefix" | "infix" | "postfix"}?, + attribute fence {"true" | "false"}?, + attribute separator {"true" | "false"}?, + attribute lspace {length}?, + attribute rspace {length}?, + attribute stretchy {"true" | "false"}?, + attribute symmetric {"true" | "false"}?, + attribute maxsize {length | "infinity"}?, + attribute minsize {length}?, + attribute largeop {"true" | "false"}?, + attribute movablelimits {"true" | "false"}?, + attribute accent {"true" | "false"}?, + attribute linebreak {"auto" | "newline" | "nobreak" | "goodbreak" | "badbreak"}?, + attribute lineleading {length}?, + attribute linebreakstyle {"before" | "after" | "duplicate" | "infixlinebreakstyle"}?, + attribute linebreakmultchar {text}?, + attribute indentalign {"left" | "center" | "right" | "auto" | "id"}?, + attribute indentshift {length}?, + attribute indenttarget {idref}?, + attribute indentalignfirst {"left" | "center" | "right" | "auto" | "id" | "indentalign"}?, + attribute indentshiftfirst {length | "indentshift"}?, + attribute indentalignlast {"left" | "center" | "right" | "auto" | "id" | "indentalign"}?, + attribute indentshiftlast {length | "indentshift"}? + + +mtext = element mtext {mtext.attributes, token.content*} +mtext.attributes = + CommonAtt, + CommonPresAtt, + TokenAtt + + +mspace = element mspace {mspace.attributes, empty} +mspace.attributes = + CommonAtt, + CommonPresAtt, + TokenAtt, + attribute width {length}?, + attribute height {length}?, + attribute depth {length}?, + attribute linebreak {"auto" | "newline" | "nobreak" | "goodbreak" | "badbreak" | "indentingnewline"}? + + +ms = element ms {ms.attributes, token.content*} +ms.attributes = + CommonAtt, + CommonPresAtt, + TokenAtt, + attribute lquote {text}?, + attribute rquote {text}? + + +mglyph = element mglyph {mglyph.attributes,mglyph.deprecatedattributes,empty} +mglyph.attributes = + CommonAtt, CommonPresAtt, + attribute src {xsd:anyURI}?, + attribute width {length}?, + attribute height {length}?, + attribute valign {length}?, + attribute alt {text}? +mglyph.deprecatedattributes = + attribute index {integer}?, + attribute mathvariant {"normal" | "bold" | "italic" | "bold-italic" | "double-struck" | "bold-fraktur" | "script" | "bold-script" | "fraktur" | "sans-serif" | "bold-sans-serif" | "sans-serif-italic" | "sans-serif-bold-italic" | "monospace" | "initial" | "tailed" | "looped" | "stretched"}?, + attribute mathsize {"small" | "normal" | "big" | length}?, + DeprecatedTokenAtt + +msline = element msline {msline.attributes,empty} +msline.attributes = + CommonAtt, CommonPresAtt, + attribute position {integer}?, + attribute length {unsigned-integer}?, + attribute leftoverhang {length}?, + attribute rightoverhang {length}?, + attribute mslinethickness {length | "thin" | "medium" | "thick"}? + +none = element none {none.attributes,empty} +none.attributes = + CommonAtt, + CommonPresAtt + +mprescripts = element mprescripts {mprescripts.attributes,empty} +mprescripts.attributes = + CommonAtt, + CommonPresAtt + + +CommonPresAtt = + attribute mathcolor {color}?, + attribute mathbackground {color | "transparent"}? + +TokenAtt = + attribute mathvariant {"normal" | "bold" | "italic" | "bold-italic" | "double-struck" | "bold-fraktur" | "script" | "bold-script" | "fraktur" | "sans-serif" | "bold-sans-serif" | "sans-serif-italic" | "sans-serif-bold-italic" | "monospace" | "initial" | "tailed" | "looped" | "stretched"}?, + attribute mathsize {"small" | "normal" | "big" | length}?, + attribute dir {"ltr" | "rtl"}?, + DeprecatedTokenAtt + +DeprecatedTokenAtt = + attribute fontfamily {text}?, + attribute fontweight {"normal" | "bold"}?, + attribute fontstyle {"normal" | "italic"}?, + attribute fontsize {length}?, + attribute color {color}?, + attribute background {color | "transparent"}? + +MalignExpression = maligngroup|malignmark + +malignmark = element malignmark {malignmark.attributes, empty} +malignmark.attributes = + CommonAtt, CommonPresAtt, + attribute edge {"left" | "right"}? + + +maligngroup = element maligngroup {maligngroup.attributes, empty} +maligngroup.attributes = + CommonAtt, CommonPresAtt, + attribute groupalign {"left" | "center" | "right" | "decimalpoint"}? + + +PresentationExpression = TokenExpression|MalignExpression| + mrow|mfrac|msqrt|mroot|mstyle|merror|mpadded|mphantom| + mfenced|menclose|msub|msup|msubsup|munder|mover|munderover| + mmultiscripts|mtable|mstack|mlongdiv|maction + + + +mrow = element mrow {mrow.attributes, MathExpression*} +mrow.attributes = + CommonAtt, CommonPresAtt, + attribute dir {"ltr" | "rtl"}? + + +mfrac = element mfrac {mfrac.attributes, MathExpression, MathExpression} +mfrac.attributes = + CommonAtt, CommonPresAtt, + attribute linethickness {length | "thin" | "medium" | "thick"}?, + attribute numalign {"left" | "center" | "right"}?, + attribute denomalign {"left" | "center" | "right"}?, + attribute bevelled {"true" | "false"}? + + +msqrt = element msqrt {msqrt.attributes, ImpliedMrow} +msqrt.attributes = + CommonAtt, CommonPresAtt + + +mroot = element mroot {mroot.attributes, MathExpression, MathExpression} +mroot.attributes = + CommonAtt, CommonPresAtt + + +mstyle = element mstyle {mstyle.attributes, ImpliedMrow} +mstyle.attributes = + CommonAtt, CommonPresAtt, + mstyle.specificattributes, + mstyle.generalattributes, + mstyle.deprecatedattributes + +mstyle.specificattributes = + attribute scriptlevel {integer}?, + attribute displaystyle {"true" | "false"}?, + attribute scriptsizemultiplier {number}?, + attribute scriptminsize {length}?, + attribute infixlinebreakstyle {"before" | "after" | "duplicate"}?, + attribute decimalpoint {character}? + +mstyle.generalattributes = + attribute accent {"true" | "false"}?, + attribute accentunder {"true" | "false"}?, + attribute align {"left" | "right" | "center"}?, + attribute alignmentscope {list {("true" | "false") +}}?, + attribute bevelled {"true" | "false"}?, + attribute charalign {"left" | "center" | "right"}?, + attribute charspacing {length | "loose" | "medium" | "tight"}?, + attribute close {text}?, + attribute columnalign {list {columnalignstyle+} }?, + attribute columnlines {list {linestyle +}}?, + attribute columnspacing {list {(length) +}}?, + attribute columnspan {positive-integer}?, + attribute columnwidth {list {("auto" | length | "fit") +}}?, + attribute crossout {list {("none" | "updiagonalstrike" | "downdiagonalstrike" | "verticalstrike" | "horizontalstrike")*}}?, + attribute denomalign {"left" | "center" | "right"}?, + attribute depth {length}?, + attribute dir {"ltr" | "rtl"}?, + attribute edge {"left" | "right"}?, + attribute equalcolumns {"true" | "false"}?, + attribute equalrows {"true" | "false"}?, + attribute fence {"true" | "false"}?, + attribute form {"prefix" | "infix" | "postfix"}?, + attribute frame {linestyle}?, + attribute framespacing {list {length, length}}?, + attribute groupalign {group-alignment-list-list}?, + attribute height {length}?, + attribute indentalign {"left" | "center" | "right" | "auto" | "id"}?, + attribute indentalignfirst {"left" | "center" | "right" | "auto" | "id" | "indentalign"}?, + attribute indentalignlast {"left" | "center" | "right" | "auto" | "id" | "indentalign"}?, + attribute indentshift {length}?, + attribute indentshiftfirst {length | "indentshift"}?, + attribute indentshiftlast {length | "indentshift"}?, + attribute indenttarget {idref}?, + attribute largeop {"true" | "false"}?, + attribute leftoverhang {length}?, + attribute length {unsigned-integer}?, + attribute linebreak {"auto" | "newline" | "nobreak" | "goodbreak" | "badbreak"}?, + attribute linebreakmultchar {text}?, + attribute linebreakstyle {"before" | "after" | "duplicate" | "infixlinebreakstyle"}?, + attribute lineleading {length}?, + attribute linethickness {length | "thin" | "medium" | "thick"}?, + attribute location {"w" | "nw" | "n" | "ne" | "e" | "se" | "s" | "sw"}?, + attribute longdivstyle {"lefttop" | "stackedrightright" | "mediumstackedrightright" | "shortstackedrightright" | "righttop" | "left/\right" | "left)(right" | ":right=right" | "stackedleftleft" | "stackedleftlinetop"}?, + attribute lquote {text}?, + attribute lspace {length}?, + attribute mathsize {"small" | "normal" | "big" | length}?, + attribute mathvariant {"normal" | "bold" | "italic" | "bold-italic" | "double-struck" | "bold-fraktur" | "script" | "bold-script" | "fraktur" | "sans-serif" | "bold-sans-serif" | "sans-serif-italic" | "sans-serif-bold-italic" | "monospace" | "initial" | "tailed" | "looped" | "stretched"}?, + attribute maxsize {length | "infinity"}?, + attribute minlabelspacing {length}?, + attribute minsize {length}?, + attribute movablelimits {"true" | "false"}?, + attribute mslinethickness {length | "thin" | "medium" | "thick"}?, + attribute notation {text}?, + attribute numalign {"left" | "center" | "right"}?, + attribute open {text}?, + attribute position {integer}?, + attribute rightoverhang {length}?, + attribute rowalign {list {verticalalign+} }?, + attribute rowlines {list {linestyle +}}?, + attribute rowspacing {list {(length) +}}?, + attribute rowspan {positive-integer}?, + attribute rquote {text}?, + attribute rspace {length}?, + attribute selection {positive-integer}?, + attribute separator {"true" | "false"}?, + attribute separators {text}?, + attribute shift {integer}?, + attribute side {"left" | "right" | "leftoverlap" | "rightoverlap"}?, + attribute stackalign {"left" | "center" | "right" | "decimalpoint"}?, + attribute stretchy {"true" | "false"}?, + attribute subscriptshift {length}?, + attribute superscriptshift {length}?, + attribute symmetric {"true" | "false"}?, + attribute valign {length}?, + attribute width {length}? + +mstyle.deprecatedattributes = + DeprecatedTokenAtt, + attribute veryverythinmathspace {length}?, + attribute verythinmathspace {length}?, + attribute thinmathspace {length}?, + attribute mediummathspace {length}?, + attribute thickmathspace {length}?, + attribute verythickmathspace {length}?, + attribute veryverythickmathspace {length}? + +math.attributes &= CommonPresAtt +math.attributes &= mstyle.specificattributes +math.attributes &= mstyle.generalattributes + + + + +merror = element merror {merror.attributes, ImpliedMrow} +merror.attributes = + CommonAtt, CommonPresAtt + + +mpadded = element mpadded {mpadded.attributes, ImpliedMrow} +mpadded.attributes = + CommonAtt, CommonPresAtt, + attribute height {mpadded-length}?, + attribute depth {mpadded-length}?, + attribute width {mpadded-length}?, + attribute lspace {mpadded-length}?, + attribute voffset {mpadded-length}? + + +mphantom = element mphantom {mphantom.attributes, ImpliedMrow} +mphantom.attributes = + CommonAtt, CommonPresAtt + + +mfenced = element mfenced {mfenced.attributes, MathExpression*} +mfenced.attributes = + CommonAtt, CommonPresAtt, + attribute open {text}?, + attribute close {text}?, + attribute separators {text}? + + +menclose = element menclose {menclose.attributes, ImpliedMrow} +menclose.attributes = + CommonAtt, CommonPresAtt, + attribute notation {text}? + + +msub = element msub {msub.attributes, MathExpression, MathExpression} +msub.attributes = + CommonAtt, CommonPresAtt, + attribute subscriptshift {length}? + + +msup = element msup {msup.attributes, MathExpression, MathExpression} +msup.attributes = + CommonAtt, CommonPresAtt, + attribute superscriptshift {length}? + + +msubsup = element msubsup {msubsup.attributes, MathExpression, MathExpression, MathExpression} +msubsup.attributes = + CommonAtt, CommonPresAtt, + attribute subscriptshift {length}?, + attribute superscriptshift {length}? + + +munder = element munder {munder.attributes, MathExpression, MathExpression} +munder.attributes = + CommonAtt, CommonPresAtt, + attribute accentunder {"true" | "false"}?, + attribute align {"left" | "right" | "center"}? + + +mover = element mover {mover.attributes, MathExpression, MathExpression} +mover.attributes = + CommonAtt, CommonPresAtt, + attribute accent {"true" | "false"}?, + attribute align {"left" | "right" | "center"}? + + +munderover = element munderover {munderover.attributes, MathExpression, MathExpression, MathExpression} +munderover.attributes = + CommonAtt, CommonPresAtt, + attribute accent {"true" | "false"}?, + attribute accentunder {"true" | "false"}?, + attribute align {"left" | "right" | "center"}? + + +mmultiscripts = element mmultiscripts {mmultiscripts.attributes, MathExpression,MultiScriptExpression*,(mprescripts,MultiScriptExpression*)?} +mmultiscripts.attributes = + msubsup.attributes + + +mtable = element mtable {mtable.attributes, TableRowExpression*} +mtable.attributes = + CommonAtt, CommonPresAtt, + attribute align {xsd:string { + pattern ='\s*(top|bottom|center|baseline|axis)\s*[0-9]*'}}?, + attribute rowalign {list {verticalalign+} }?, + attribute columnalign {list {columnalignstyle+} }?, + attribute groupalign {group-alignment-list-list}?, + attribute alignmentscope {list {("true" | "false") +}}?, + attribute columnwidth {list {("auto" | length | "fit") +}}?, + attribute width {"auto" | length}?, + attribute rowspacing {list {(length) +}}?, + attribute columnspacing {list {(length) +}}?, + attribute rowlines {list {linestyle +}}?, + attribute columnlines {list {linestyle +}}?, + attribute frame {linestyle}?, + attribute framespacing {list {length, length}}?, + attribute equalrows {"true" | "false"}?, + attribute equalcolumns {"true" | "false"}?, + attribute displaystyle {"true" | "false"}?, + attribute side {"left" | "right" | "leftoverlap" | "rightoverlap"}?, + attribute minlabelspacing {length}? + + +mlabeledtr = element mlabeledtr {mlabeledtr.attributes, TableCellExpression+} +mlabeledtr.attributes = + mtr.attributes + + +mtr = element mtr {mtr.attributes, TableCellExpression*} +mtr.attributes = + CommonAtt, CommonPresAtt, + attribute rowalign {"top" | "bottom" | "center" | "baseline" | "axis"}?, + attribute columnalign {list {columnalignstyle+} }?, + attribute groupalign {group-alignment-list-list}? + + +mtd = element mtd {mtd.attributes, ImpliedMrow} +mtd.attributes = + CommonAtt, CommonPresAtt, + attribute rowspan {positive-integer}?, + attribute columnspan {positive-integer}?, + attribute rowalign {"top" | "bottom" | "center" | "baseline" | "axis"}?, + attribute columnalign {columnalignstyle}?, + attribute groupalign {group-alignment-list}? + + +mstack = element mstack {mstack.attributes, MstackExpression*} +mstack.attributes = + CommonAtt, CommonPresAtt, + attribute align {xsd:string { + pattern ='\s*(top|bottom|center|baseline|axis)\s*[0-9]*'}}?, + attribute stackalign {"left" | "center" | "right" | "decimalpoint"}?, + attribute charalign {"left" | "center" | "right"}?, + attribute charspacing {length | "loose" | "medium" | "tight"}? + + +mlongdiv = element mlongdiv {mlongdiv.attributes, MstackExpression,MstackExpression,MstackExpression+} +mlongdiv.attributes = + msgroup.attributes, + attribute longdivstyle {"lefttop" | "stackedrightright" | "mediumstackedrightright" | "shortstackedrightright" | "righttop" | "left/\right" | "left)(right" | ":right=right" | "stackedleftleft" | "stackedleftlinetop"}? + + +msgroup = element msgroup {msgroup.attributes, MstackExpression*} +msgroup.attributes = + CommonAtt, CommonPresAtt, + attribute position {integer}?, + attribute shift {integer}? + + +msrow = element msrow {msrow.attributes, MsrowExpression*} +msrow.attributes = + CommonAtt, CommonPresAtt, + attribute position {integer}? + + +mscarries = element mscarries {mscarries.attributes, (MsrowExpression|mscarry)*} +mscarries.attributes = + CommonAtt, CommonPresAtt, + attribute position {integer}?, + attribute location {"w" | "nw" | "n" | "ne" | "e" | "se" | "s" | "sw"}?, + attribute crossout {list {("none" | "updiagonalstrike" | "downdiagonalstrike" | "verticalstrike" | "horizontalstrike")*}}?, + attribute scriptsizemultiplier {number}? + + +mscarry = element mscarry {mscarry.attributes, MsrowExpression*} +mscarry.attributes = + CommonAtt, CommonPresAtt, + attribute location {"w" | "nw" | "n" | "ne" | "e" | "se" | "s" | "sw"}?, + attribute crossout {list {("none" | "updiagonalstrike" | "downdiagonalstrike" | "verticalstrike" | "horizontalstrike")*}}? + + +maction = element maction {maction.attributes, MathExpression+} +maction.attributes = + CommonAtt, CommonPresAtt, + attribute actiontype {text}?, + attribute selection {positive-integer}? diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-presentation.rng b/validator/src/main/resources/schema/mathml3.0/mathml3-presentation.rng new file mode 100644 index 0000000000..047524afda --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-presentation.rng @@ -0,0 +1,2265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \s*([\+\-]?[0-9]*(\.[0-9]*)?\s*((%?\s*(height|depth|width)?)|e[mx]|in|cm|mm|p[xtc]|((negative)?((very){0,2}thi(n|ck)|medium)mathspace)))\s* + + + + + none + solid + dashed + + + + + top + bottom + center + baseline + axis + + + + + left + center + right + + + + + longdiv + actuarial + radical + box + roundedbox + circle + left + right + top + bottom + updiagonalstrike + downdiagonalstrike + verticalstrike + horizontalstrike + madruwb + + + + + + + + + + + + + + + + + \s*\S\s* + + + + + \s*((#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?)|[aA][qQ][uU][aA]|[bB][lL][aA][cC][kK]|[bB][lL][uU][eE]|[fF][uU][cC][hH][sS][iI][aA]|[gG][rR][aA][yY]|[gG][rR][eE][eE][nN]|[lL][iI][mM][eE]|[mM][aA][rR][oO][oO][nN]|[nN][aA][vV][yY]|[oO][lL][iI][vV][eE]|[pP][uU][rR][pP][lL][eE]|[rR][eE][dD]|[sS][iI][lL][vV][eE][rR]|[tT][eE][aA][lL]|[wW][hH][iI][tT][eE]|[yY][eE][lL][lL][oO][wW])\s* + + + + + left + center + right + decimalpoint + + + + + + + + + + + + (\s*\{\s*(left|center|right|decimalpoint)(\s+(left|center|right|decimalpoint))*\})*\s* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + prefix + infix + postfix + + + + + + + true + false + + + + + + + true + false + + + + + + + + + + + + + + + + + true + false + + + + + + + true + false + + + + + + + + infinity + + + + + + + + + + + + true + false + + + + + + + true + false + + + + + + + true + false + + + + + + + auto + newline + nobreak + goodbreak + badbreak + + + + + + + + + + + + before + after + duplicate + infixlinebreakstyle + + + + + + + + + + left + center + right + auto + id + + + + + + + + + + + + + + + + + left + center + right + auto + id + indentalign + + + + + + + + indentshift + + + + + + + left + center + right + auto + id + indentalign + + + + + + + + indentshift + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + newline + nobreak + goodbreak + badbreak + indentingnewline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + bold + italic + bold-italic + double-struck + bold-fraktur + script + bold-script + fraktur + sans-serif + bold-sans-serif + sans-serif-italic + sans-serif-bold-italic + monospace + initial + tailed + looped + stretched + + + + + + + small + normal + big + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + thin + medium + thick + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transparent + + + + + + + + + normal + bold + italic + bold-italic + double-struck + bold-fraktur + script + bold-script + fraktur + sans-serif + bold-sans-serif + sans-serif-italic + sans-serif-bold-italic + monospace + initial + tailed + looped + stretched + + + + + + + small + normal + big + + + + + + + + ltr + rtl + + + + + + + + + + + + + normal + bold + + + + + + + normal + italic + + + + + + + + + + + + + + + + + + transparent + + + + + + + + + + + + + + + + + + + + + + + left + right + + + + + + + + + + + + + + + + + left + center + right + decimalpoint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ltr + rtl + + + + + + + + + + + + + + + + + + + thin + medium + thick + + + + + + + left + center + right + + + + + + + left + center + right + + + + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + before + after + duplicate + + + + + + + + + + + + + + true + false + + + + + + + true + false + + + + + + + left + right + center + + + + + + + + + true + false + + + + + + + + + true + false + + + + + + + left + center + right + + + + + + + + loose + medium + tight + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + + fit + + + + + + + + + + + none + updiagonalstrike + downdiagonalstrike + verticalstrike + horizontalstrike + + + + + + + + + left + center + right + + + + + + + + + + + + ltr + rtl + + + + + + + left + right + + + + + + + true + false + + + + + + + true + false + + + + + + + true + false + + + + + + + prefix + infix + postfix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + auto + id + + + + + + + left + center + right + auto + id + indentalign + + + + + + + left + center + right + auto + id + indentalign + + + + + + + + + + + + + indentshift + + + + + + + + indentshift + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + auto + newline + nobreak + goodbreak + badbreak + + + + + + + + + + before + after + duplicate + infixlinebreakstyle + + + + + + + + + + + + + thin + medium + thick + + + + + + + w + nw + n + ne + e + se + s + sw + + + + + + + lefttop + stackedrightright + mediumstackedrightright + shortstackedrightright + righttop + left/\right + left)(right + :right=right + stackedleftleft + stackedleftlinetop + + + + + + + + + + + + + + + small + normal + big + + + + + + + + normal + bold + italic + bold-italic + double-struck + bold-fraktur + script + bold-script + fraktur + sans-serif + bold-sans-serif + sans-serif-italic + sans-serif-bold-italic + monospace + initial + tailed + looped + stretched + + + + + + + + infinity + + + + + + + + + + + + + + + + + true + false + + + + + + + + thin + medium + thick + + + + + + + + + + left + center + right + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + left + right + leftoverlap + rightoverlap + + + + + + + left + center + right + decimalpoint + + + + + + + true + false + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + left + right + center + + + + + + + + + + + + + + + + + + true + false + + + + + + + left + right + center + + + + + + + + + + + + + + + + + + + true + false + + + + + + + true + false + + + + + + + left + right + center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \s*(top|bottom|center|baseline|axis)\s*[0-9]* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + auto + + fit + + + + + + + + + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + true + false + + + + + + + true + false + + + + + + + left + right + leftoverlap + rightoverlap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + bottom + center + baseline + axis + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + bottom + center + baseline + axis + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \s*(top|bottom|center|baseline|axis)\s*[0-9]* + + + + + + + left + center + right + decimalpoint + + + + + + + left + center + right + + + + + + + + loose + medium + tight + + + + + + + + + + + + + + + + + + + + lefttop + stackedrightright + mediumstackedrightright + shortstackedrightright + righttop + left/\right + left)(right + :right=right + stackedleftleft + stackedleftlinetop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + w + nw + n + ne + e + se + s + sw + + + + + + + + + none + updiagonalstrike + downdiagonalstrike + verticalstrike + horizontalstrike + + + + + + + + + + + + + + + + + + + + + + + + + + w + nw + n + ne + e + se + s + sw + + + + + + + + + none + updiagonalstrike + downdiagonalstrike + verticalstrike + horizontalstrike + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-strict-content.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3-strict-content.rnc new file mode 100644 index 0000000000..39b9e519e7 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-strict-content.rnc @@ -0,0 +1,60 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2010 W3C (MIT, ERCIM, Keio) +# +# Use and distribution of this code are permitted under the terms +# W3C Software Notice and License +# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 + + +default namespace m = "http://www.w3.org/1998/Math/MathML" + +ContExp = semantics-contexp | cn | ci | csymbol | apply | bind | share | cerror | cbytes | cs + +cn = element cn {cn.attributes,cn.content} +cn.content = text +cn.attributes = attribute type {"integer" | "real" | "double" | "hexdouble"} + +semantics-ci = element semantics {semantics.attributes,(ci|semantics-ci), + (annotation|annotation-xml)*} + +semantics-contexp = element semantics {semantics.attributes,ContExp, + (annotation|annotation-xml)*} + +ci = element ci {ci.attributes, ci.content} +ci.attributes = CommonAtt, ci.type? +ci.type = attribute type {"integer" | "rational" | "real" | "complex" | "complex-polar" | "complex-cartesian" | "constant" | "function" | "vector" | "list" | "set" | "matrix"} +ci.content = text + + +csymbol = element csymbol {csymbol.attributes,csymbol.content} + +SymbolName = xsd:NCName +csymbol.attributes = CommonAtt, cd +csymbol.content = SymbolName + +BvarQ = bvar* +bvar = element bvar { ci | semantics-ci} + +apply = element apply {CommonAtt,apply.content} +apply.content = ContExp+ + + +bind = element bind {CommonAtt,bind.content} +bind.content = ContExp,bvar*,ContExp + +share = element share {CommonAtt, src, empty} + +cerror = element cerror {cerror.attributes, csymbol, ContExp*} +cerror.attributes = CommonAtt + +cbytes = element cbytes {cbytes.attributes, base64} +cbytes.attributes = CommonAtt +base64 = xsd:base64Binary + +cs = element cs {cs.attributes, text} +cs.attributes = CommonAtt + +MathExpression |= ContExp diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-strict-content.rng b/validator/src/main/resources/schema/mathml3.0/mathml3-strict-content.rng new file mode 100644 index 0000000000..3d18e26ca1 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-strict-content.rng @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + integer + real + double + hexdouble + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + integer + rational + real + complex + complex-polar + complex-cartesian + constant + function + vector + list + set + matrix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-strict.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3-strict.rnc new file mode 100644 index 0000000000..0f9f0fa7d8 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-strict.rnc @@ -0,0 +1,81 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2008 W3C (MIT, ERCIM, Keio) +# +# Use and distribution of this code are permitted under the terms +# W3C Software Notice and License +# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +# +# +# Revision: $Id: mathml3-strict.rnc,v 1.3 2008/11/15 22:00:48 dcarlis Exp $ +# +# Update to MathML3 and Relax NG: David Carlisle and Michael Kohlhase +# +# This is the RelaxNG schema module for the strict content part of MathML. + +default namespace m = "http://www.w3.org/1998/Math/MathML" + +include "mathml3-common.rnc" + +math.content |= ContExp + +#ednote(rnc:opel-content) What is the content of a operator element, currently all text? +opel.content = text + +# we want to extend this in pragmatic CMathML, so we introduce abbrevs here. +#ednote(rnc:cn-content) What is the content of a cn? +cn.content = text |(cn,cn) +cn.type.vals = "integer"|"real"|"double" + +cn = element cn {attribute base {text}?, + attribute type {cn.type.vals}?, + Definition.attrib, + MathML.Common.attrib, + (cn.content)*} + +ci = element ci {attribute type {xsd:string}?, + attribute nargs {xsd:string}?, + attribute occurrence {xsd:string}?, + Definition.attrib, + MathML.Common.attrib, + opel.content, + name.attrib?} + +cdname.attrib = attribute cd {xsd:NCName} + +csymbol = element csymbol {MathML.Common.attrib, + Definition.attrib,cdname.attrib?,cdbase.attrib?, + opel.content} + +# the content of the apply element, leave it empty and extend it later +apply = element apply {MathML.Common.attrib,cdbase.attrib?,apply.content} +apply-head = apply|bind|ci|csymbol|semantics-apply +apply.content = apply-head,ContExp* +semantics-apply = element semantics {semantics.attribs,apply-head, semantics-annotation*} + +qualifier = notAllowed + +# the content of the bind element, leave it empty and extend it later +bind = element bind {MathML.Common.attrib,cdbase.attrib?,bind.content} +bind-head = apply|csymbol|semantics-bind +bind.content = bind-head,bvar*,qualifier?,ContExp +semantics-bind = element semantics {semantics.attribs,bind-head, semantics-annotation*} + +bvar = element bvar {MathML.Common.attrib,cdbase.attrib?,bvar-head} +bvar-head = ci|semantics-bvar +semantics-bvar = element semantics {semantics.attribs,bvar-head, semantics-annotation*} + +share = element share {MathML.Common.attrib,attribute href {xsd:anyURI}} + +# the content of the cerror element, leave it empty and extend it later +cerror = element cerror {MathML.Common.attrib,cdbase.attrib?,cerror.content} +cerror-head = csymbol|apply|semantics-cerror +cerror.content = cerror-head,ContExp* +semantics-cerror = element semantics {semantics.attribs,cerror-head, semantics-annotation*} + +semantics-cmml = element semantics {semantics.attribs,ContExp, semantics-annotation*} + +ContExp = cn| ci | csymbol | apply | bind | share | cerror | semantics-cmml + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3-strict.rng b/validator/src/main/resources/schema/mathml3.0/mathml3-strict.rng new file mode 100644 index 0000000000..706df24b2a --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3-strict.rng @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + + + + + + integer + real + double + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3.rnc b/validator/src/main/resources/schema/mathml3.0/mathml3.rnc new file mode 100644 index 0000000000..3c68cdb7a9 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3.rnc @@ -0,0 +1,21 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2010 W3C (MIT, ERCIM, Keio) +# +# Use and distribution of this code are permitted under the terms +# W3C Software Notice and License +# http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 + + +default namespace m = "http://www.w3.org/1998/Math/MathML" + +## Content MathML +include "mathml3-content.rnc" + +## Presentation MathML +include "mathml3-presentation.rnc" + +## math and semantics common to both Content and Presentation +include "mathml3-common.rnc" diff --git a/validator/src/main/resources/schema/mathml3.0/mathml3.rng b/validator/src/main/resources/schema/mathml3.0/mathml3.rng new file mode 100644 index 0000000000..f1f75fcc05 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/mathml3.rng @@ -0,0 +1,23 @@ + + + + + Content MathML + + + Presentation MathML + + + math and semantics common to both Content and Presentation + + diff --git a/validator/src/main/resources/schema/mathml3.0/relations.rnc b/validator/src/main/resources/schema/mathml3.0/relations.rnc new file mode 100644 index 0000000000..1493dafdd5 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/relations.rnc @@ -0,0 +1,43 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: relations.rnc,v 1.1 2007/12/11 15:38:52 dcarlis Exp $ + +cd.token.binary.class |= neq.token | factorof.token +cd.token.nary.class |= eq.token | gt.token | lt.token | geq.token | leq.token | equivalent.token | approx.token + +# the element definitions for the token elements +eq.content = Token.type +eq.token = element eq {eq.content} +neq.content = Token.type +neq.token = element neq {neq.content} +gt.content = Token.type +gt.token = element gt {gt.content} +lt.content = Token.type +lt.token = element lt {lt.content} +geq.content = Token.type +geq.token = element geq {geq.content} +leq.content = Token.type +leq.token = element leq {leq.content} +equivalent.content = Token.type +equivalent.token = element equivalent {equivalent.content} +approx.content = Token.type, attribute type {MathMLtype}? +approx.token = element approx {approx.content} +factorof.content = Token.type, attribute type {MathMLtype}? +factorof.token = element factorof {factorof.content} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/relations.rng b/validator/src/main/resources/schema/mathml3.0/relations.rng new file mode 100644 index 0000000000..cf4322b74b --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/relations.rng @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/sequences_series.rnc b/validator/src/main/resources/schema/mathml3.0/sequences_series.rnc new file mode 100644 index 0000000000..3e151567c5 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/sequences_series.rnc @@ -0,0 +1,31 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: sequences_series.rnc,v 1.1 2007/12/11 15:38:52 dcarlis Exp $ + + +# the element definitions for the token elements +sum.content = Token.type +sum.token = element sum {sum.content} +product.content = Token.type +product.token = element product {product.content} +limit.content = Token.type +limit.token = element limit {limit.content} +tendsto.content = Token.type, attribute type {MathMLtype}? +tendsto.token = element tendsto {tendsto.content} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/sequences_series.rng b/validator/src/main/resources/schema/mathml3.0/sequences_series.rng new file mode 100644 index 0000000000..bd9329fcd1 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/sequences_series.rng @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/sets.rnc b/validator/src/main/resources/schema/mathml3.0/sets.rnc new file mode 100644 index 0000000000..046d3063d3 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/sets.rnc @@ -0,0 +1,52 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: sets.rnc,v 1.1 2007/12/11 15:38:53 dcarlis Exp $ + +cd.token.unary.class |= card.token +cd.token.binary.class |= in.token | notin.token | notsubset.token | notprsubset.token | setdiff.token +cd.token.nary.class |= set.token | list.token | intersect.token | subset.token | prsubset.token | cartesianproduct.token + +# the element definitions for the token elements +set.content = Token.type, attribute order {MathMLtype}?,ContExp* +set.token = element set {set.content} +list.content = Token.type, attribute order {MathMLtype}?,ContExp* +list.token = element list {list.content} +union.content = Token.type +union.token = element union {union.content} +intersect.content = Token.type +intersect.token = element intersect {intersect.content} +in.content = Token.type +in.token = element in {in.content} +notin.content = Token.type +notin.token = element notin {notin.content} +subset.content = Token.type +subset.token = element subset {subset.content} +prsubset.content = Token.type +prsubset.token = element prsubset {prsubset.content} +notsubset.content = Token.type +notsubset.token = element notsubset {notsubset.content} +notprsubset.content = Token.type +notprsubset.token = element notprsubset {notprsubset.content} +setdiff.content = Token.type +setdiff.token = element setdiff {setdiff.content} +card.content = Token.type +card.token = element card {card.content} +cartesianproduct.content = Token.type +cartesianproduct.token = element cartesianproduct {cartesianproduct.content} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/sets.rng b/validator/src/main/resources/schema/mathml3.0/sets.rng new file mode 100644 index 0000000000..3c0b3684f1 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/sets.rng @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/specfun.rnc b/validator/src/main/resources/schema/mathml3.0/specfun.rnc new file mode 100644 index 0000000000..cf051a722a --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/specfun.rnc @@ -0,0 +1,79 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: specfun.rnc,v 1.1 2007/12/11 15:38:53 dcarlis Exp $ + +cd.token.unary.class |= ln.token | sin.token | cos.token | tan.token | sec.token | csc.token | cot.token | sinh.token | cosh.token | tanh.token | sech.token | csch.token | coth.token | arcsin.token | arccos.token | arctan.token | arccosh.token | arccot.token | arccoth.token | arccsc.token | arccsch.token | arcsec.token | arcsech.token | arcsinh.token | arctanh.token | exp.token +cd.token.binary.class |= log.token + +# the element definitions for the token elements +exp.content = Token.type +exp.token = element exp {exp.content} +ln.content = Token.type +ln.token = element ln {ln.content} +log.content = Token.type +log.token = element log {log.content} +sin.content = Token.type +sin.token = element sin {sin.content} +cos.content = Token.type +cos.token = element cos {cos.content} +tan.content = Token.type +tan.token = element tan {tan.content} +sec.content = Token.type +sec.token = element sec {sec.content} +csc.content = Token.type +csc.token = element csc {csc.content} +cot.content = Token.type +cot.token = element cot {cot.content} +sinh.content = Token.type +sinh.token = element sinh {sinh.content} +cosh.content = Token.type +cosh.token = element cosh {cosh.content} +tanh.content = Token.type +tanh.token = element tanh {tanh.content} +sech.content = Token.type +sech.token = element sech {sech.content} +csch.content = Token.type +csch.token = element csch {csch.content} +coth.content = Token.type +coth.token = element coth {coth.content} +arcsin.content = Token.type +arcsin.token = element arcsin {arcsin.content} +arccos.content = Token.type +arccos.token = element arccos {arccos.content} +arctan.content = Token.type +arctan.token = element arctan {arctan.content} +arccosh.content = Token.type +arccosh.token = element arccosh {arccosh.content} +arccot.content = Token.type +arccot.token = element arccot {arccot.content} +arccoth.content = Token.type +arccoth.token = element arccoth {arccoth.content} +arccsc.content = Token.type +arccsc.token = element arccsc {arccsc.content} +arccsch.content = Token.type +arccsch.token = element arccsch {arccsch.content} +arcsec.content = Token.type +arcsec.token = element arcsec {arcsec.content} +arcsech.content = Token.type +arcsech.token = element arcsech {arcsech.content} +arcsinh.content = Token.type +arcsinh.token = element arcsinh {arcsinh.content} +arctanh.content = Token.type +arctanh.token = element arctanh {arctanh.content} diff --git a/validator/src/main/resources/schema/mathml3.0/specfun.rng b/validator/src/main/resources/schema/mathml3.0/specfun.rng new file mode 100644 index 0000000000..2ace29b25c --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/specfun.rng @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/mathml3.0/statistics.rnc b/validator/src/main/resources/schema/mathml3.0/statistics.rnc new file mode 100644 index 0000000000..fda8e71bd7 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/statistics.rnc @@ -0,0 +1,39 @@ +# This is the Mathematical Markup Language (MathML) 3.0, an XML +# application for describing mathematical notation and capturing +# both its structure and content. +# +# Copyright 1998-2007 World Wide Web Consortium +# (Massachusetts Institute of Technology, Institut National de +# Recherche en Informatique et en Automatique, Keio University). +# All Rights Reserved. +# +# Permission to use, copy, modify and distribute the RelaxNG schema for MathML3 +# and its accompanying documentation for any purpose and without fee is +# hereby granted in perpetuity, provided that the above copyright notice +# and this paragraph appear in all copies. The copyright holders make +# no representation about the suitability of the Schema for any purpose. +# +# This file contains the arity checking rules for the symbols +# from the content dictionary +# It is provided "as is" without expressed or implied warranty. +# +# Revision: $Id: statistics.rnc,v 1.1 2007/12/11 15:38:53 dcarlis Exp $ + +cd.token.unary.class |= momentabout.token +cd.token.nary.class |= mean.token | sdev.token | variance.token | median.token | mode.token | moment.token + +# the element definitions for the token elements +mean.content = Token.type +mean.token = element mean {mean.content} +sdev.content = Token.type +sdev.token = element sdev {sdev.content} +variance.content = Token.type +variance.token = element variance {variance.content} +median.content = Token.type +median.token = element median {median.content} +mode.content = Token.type +mode.token = element mode {mode.content} +moment.content = Token.type +moment.token = element moment {moment.content} +momentabout.content = Token.type +momentabout.token = element momentabout {momentabout.content} \ No newline at end of file diff --git a/validator/src/main/resources/schema/mathml3.0/statistics.rng b/validator/src/main/resources/schema/mathml3.0/statistics.rng new file mode 100644 index 0000000000..f93c0c4fa2 --- /dev/null +++ b/validator/src/main/resources/schema/mathml3.0/statistics.rng @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.0/OpenDocument-manifest-schema-v1.0-os.rng b/validator/src/main/resources/schema/odf1.0/OpenDocument-manifest-schema-v1.0-os.rng new file mode 100644 index 0000000000..97fe580eab --- /dev/null +++ b/validator/src/main/resources/schema/odf1.0/OpenDocument-manifest-schema-v1.0-os.rng @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.0/OpenDocument-schema-v1.0-os.rng b/validator/src/main/resources/schema/odf1.0/OpenDocument-schema-v1.0-os.rng new file mode 100644 index 0000000000..cf4ee51741 --- /dev/null +++ b/validator/src/main/resources/schema/odf1.0/OpenDocument-schema-v1.0-os.rng @@ -0,0 +1,17666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + boolean + short + int + long + double + string + datetime + base64Binary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + simple + + + + + replace + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + date + + + + + + time + + + + + + boolean + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + none + + + + + condition + + + + + + + + + + + + + + + + + + + + + simple + + + + + embed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + footnote + endnote + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + current + next + + + + + + + + + + + + + + previous + next + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + plain-number-and-name + plain-number + + + + + + + + + + + + + + + + + + + full + path + name + name-and-extension + + + + + + + + + + + + + + + + + + full + path + name + name-and-extension + area + title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:page-count + text:paragraph-count + text:word-count + text:character-count + text:table-count + text:image-count + text:object-count + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + table + text-box + image + object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:reference-ref + text:bookmark-ref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + chapter + direction + text + + + + + + + + + page + chapter + direction + text + category-and-value + caption + value + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + unit + gap + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + + + percentage + + + + + + + + currency + + + + + + + + + + + + + date + + + + + + + + time + + + + + + + + boolean + + + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + none + + + + + + + + + value + formula + none + + + + + + + + + value + formula + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + article + book + booklet + conference + custom1 + custom2 + custom3 + custom4 + custom5 + email + inbook + incollection + inproceedings + journal + manual + mastersthesis + misc + phdthesis + proceedings + techreport + unpublished + www + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + category-and-value + caption + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + separator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + right + + + + left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + collapse + filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ($?([^\. ']+|'[^']+'))?\.$?[A-Z]+$?[0-9]+ + + + + + ($?([^\. ']+|'[^']+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'[^']+'))?\.$?[A-Z]+$?[0-9]+)? + + + + + + + + + + + + + + + + + + + copy-all + copy-results-only + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trace-dependents + remove-dependents + trace-precedents + remove-precedents + trace-errors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-another-table + to-another-table + from-same-table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enable + disable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + unsorted + sort-ascending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + stop + warning + information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + print-range + filter + repeat-row + repeat-column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + self + cell-range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + data + hidden + + + + + page + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-top + from-bottom + + + + + + + + + + + + + + data + + + + + + + + none + manual + name + + + + + + + + ascending + descending + + + + + + + + + + + + + tabular-layout + outline-subtotals-top + outline-subtotals-bottom + + + + + + + + + + + + + + + + + + + + + + + named + + + + + + + + previous + next + + + + + + + + none + member-difference + member-percentage + member-percentage-difference + running-total + row-percentage + column-percentage + total-percentage + index + + + + + + + + + + + + + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + + + + seconds + minutes + hours + days + months + quarters + years + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + accepted + rejected + pending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + always + screen + printer + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + full + section + cut + arc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + lines + line + curve + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + frame + paragraph + char + as-char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom-right + + + + + + + auto + left + right + up + down + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale + scale-min + + + + + + + + scale + scale-min + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + onRequest + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + nohref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + non-primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + segments + rectangle + + + + + + + + + + + + + + + + + + + + + normal + path + shape + + + + + + + + + path + shape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + title + outline + subtitle + text + graphic + object + chart + table + orgchart + page + notes + handout + header + footer + date-time + page-number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + fade + move + stripes + open + close + dissolve + wavyline + random + lines + laser + appear + hide + move-short + checkerboard + rotate + stretch + + + + + + + + + + + + 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 + + + + + + + + + + + + slow + medium + fast + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + on-click + with-previous + after-previous + timing-root + main-sequence + interactive-sequence + + + + + + + + + + + + + + + + + + + + + + + custom + entrance + exit + emphasis + motion-path + ole-action + media-call + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + previous-page + next-page + first-page + last-page + hide + stop + execute + show + verb + fade-out + sound + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + current-date + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + top-start + bottom-start + top-end + bottom-end + + + + + + + + + + + + + wide + high + balanced + + + + + custom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + y + z + + + + + + + + + + + + + + + + + + + + + + + + + + + major + minor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + get + post + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + current + parent + + + + + + + + + + + + + + + + + + + records + current + page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + unchecked + checked + unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + submit + reset + push + url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + 3d + + + + + + + + + center + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + sql + sql-pass-through + value-list + table-fields + + + + + + + + + + + + + + + + + + + + + + + + + + + void + + + + + + + + + + + + + + float + + + + + + + + + + + + percentage + + + + + + + + + + + + currency + + + + + + + + + + + + + + + + + date + + + + + + + + + + + + time + + + + + + + + + + + + boolean + + + + + + + + + + + + string + + + + + + + + + + + void + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + i + I + + + + + + + + a + A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + into-default-style-data-style + into-english-number + keep-text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + rgb + hsl + + + + + + + + + clockwise + counter-clockwise + + + + + + + + + + + + + + + + + + translate + scale + rotate + skewX + skewY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + forward + reverse + + + + + + + + + in + out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + + + none + sum + + + + + + + + + replace + sum + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + first + last + all + media + + + + + + + + + + + + + + + + + + + remove + freeze + hold + auto + default + transition + + + + + + + + + remove + freeze + hold + transition + auto + inherit + + + + + + + + + never + always + whenNotActive + default + + + + + + + + + never + always + whenNotActive + inherit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + left + right + mirrored + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + ultra-condensed + extra-condensed + condensed + semi-condensed + semi-expanded + expanded + extra-expanded + ultra-expanded + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + medium + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gregorian + gengou + ROC + hanja_yoil + hanja + hijri + jewish + buddhist + + + + + + + + + text + + + + + + + + + + paragraph + + + + + + + + + + + + + section + + + + + + + + + + ruby + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + rigth + inner + outer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + page + + + + + + + + + text + page + section + document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + + + + + + + + + + table-column + + + + + + + + + + table-row + + + + + + + + + + table-cell + + + + + + + + + + + + + + + + + graphic + presentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + drawing-page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + linear + axial + radial + ellipsoid + square + rectangular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + objectBoundingBox + + + + + + + + + + + pad + reflect + repeat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + single + double + triple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rect + round + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + portrait + landscape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + headers + grid + annotations + objects + charts + drawings + formulas + zero-values + + + + + + + + + + + ttb + ltr + + + + + + + + + + continue + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + both + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + + + + + + + + + + + + + + none + line + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + small-caps + + + + + + + none + lowercase + uppercase + capitalize + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + super + sub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + roman + swiss + modern + decorative + script + system + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + variable + + + + + + + + + + + + + [A-Za-z][A-Za-z0-9._\-]* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + latin + asian + complex + ignore + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + italic + oblique + + + + + + + none + embossed + engraved + + + + + + + + + + + + + + + none + + + + + + + + + + + + + + + none + single + double + + + + + + + + + + + + + none + solid + dotted + dash + long-dash + dot-dash + dot-dot-dash + wave + + + + + + + + + + + + + auto + normal + bold + thin + dash + medium + thick + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + normal + bold + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + + + + + + + + + + + + + continuous + skip-white-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + letters + lines + + + + + + + + + + + + + + + + + + + + + none + + + none + accent + dot + circle + disc + + + above + below + + + + + + + + + + + + + + + + + + + + + + + + + fixed + line-height + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + none + + + + condition + + + none + + + + + + + + + + + + + + + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + left + right + center + justify + + + + + + + + + start + center + justify + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + page + + + + + + + + + no-limit + + + + + + + + + + + + + + + + + + + + + + word + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + column + page + + + + + + + auto + column + page + + + + + + + + + + + + + transparent + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + left + center + right + top + bottom + + + + + + + + + + + + + + + + left + center + right + + + + + top + center + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + none + ideograph-alpha + + + + + + + + + simple + hanging + + + + + + + + + normal + strict + + + + + + + + + top + middle + bottom + auto + + + + + + + + + + + + + lr-tb + rl-tb + tb-rl + tb-lr + lr + rl + tb + page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + above + below + + + + + + + + + left + center + right + distribute-letter + distribute-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + solid + dotted + dashed + dot-dashed + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + margins + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + collapsing + separating + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + automatic + + + + + + + + + fix + value-type + + + + + + + + + + + + + ltr + ttb + + + + + + + + + auto + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-wrap + wrap + + + + + + + + + + + + + + + + + + + + none + bottom + top + center + + + + + + + + + none + hidden-and-protected + + + + protected + formula-hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + dash + solid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + + miter + round + bevel + middle + none + inherit + + + + + + + + + none + solid + bitmap + gradient + hatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom + bottom-right + + + + + + + + + + + + + + + + + + + + + + + + + + + + nonzero + evenodd + + + + + + + + + + + + + + + + none + scroll + alternate + slide + + + + + + + + + left + right + up + down + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + justify + + + + + + + + + left + center + right + justify + + + + + + + + + no-wrap + wrap + + + + + + + + + + + + + + greyscale + mono + watermark + standard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + below + above + + + + + + + + + + + + + + + + automatic + left-outside + inside + right-outside + + + + + + + automatic + above + below + center + + + + + + + + + automatic + mm + cm + m + km + pt + pc + inch + ft + mi + + + + + + + + + + + + + + + + + + + + + + + straight-line + angled-line + angled-connector-line + + + + + + + + + fixed + free + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + correct + attractive + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + double-sided + + + + + + + + + object + flat + sphere + + + + + + + + + normal + inverse + + + + + + + + + object + parallel + sphere + + + + + + + object + parallel + sphere + + + + + + + + + luminance + intesity + color + + + + + + + + + enabled + disabled + + + + + + + + + replace + modulate + blend + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + content + position + size + + + + + + + + + + + + left + center + right + from-left + inside + outside + from-inside + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + top + middle + bottom + from-top + below + + + + + + + + + + + + + + + + + + page + page-content + frame + frame-content + paragraph + paragraph-content + char + line + baseline + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + left + right + parallel + dynamic + run-through + biggest + + + + + + + + + + + + + + + + no-limit + + + + + + + + + + + + + + + + + full + outside + + + + + + + + + foreground + background + + + + + + + + + + + + + + + + clip + auto-create-new-frame + + + + + + + + + none + vertical + + + vertical + + + + + vertical + + + + + + + + + horizontal + horizontal-on-odd + horizontal-on-even + + + + + + + + + + + + + + + iterative + once-concurrent + once-successive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)(px) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + automatic + + + + named-symbol + + + + square + diamond + arrow-down + arrow-up + arrow-right + arrow-left + bow-tie + hourglass + circle + star + x + plus + asterisk + horizontal-bar + vertical-bar + + + + + + image + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + cubic-spline + b-spline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cuboid + cylinder + cone + pyramid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + side-by-side + stagger-even + stagger-odd + + + + + + + + + + + + + + + none + value + percentage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + variance + standard-deviation + percentage + error-margin + constant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + columns + rows + + + + + + + + + none + linear + logarithmic + exponential + power + + + + + + + + + manual + automatic + semi-automatic + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + forward + reverse + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + full + border + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + [A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})* + + + + + [A-Za-z0-9]{1,8} + + + + + [A-Za-z]{1,8} + + + + + 1 + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)% + + + + + [0-9]+\* + + + + + + + + + + + #[0-9a-fA-F]{6} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _self + _blank + _parent + _top + + + + + + + float + time + date + percentage + currency + boolean + string + + + + + + -?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)* + + + + + + + + + \([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\) + + + + + + + [0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.0/OpenDocument-strict-schema-v1.0-os.rng b/validator/src/main/resources/schema/odf1.0/OpenDocument-strict-schema-v1.0-os.rng new file mode 100644 index 0000000000..aa761dc880 --- /dev/null +++ b/validator/src/main/resources/schema/odf1.0/OpenDocument-strict-schema-v1.0-os.rng @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.1/OpenDocument-manifest-schema-v1.1.rng b/validator/src/main/resources/schema/odf1.1/OpenDocument-manifest-schema-v1.1.rng new file mode 100644 index 0000000000..4082d4ba95 --- /dev/null +++ b/validator/src/main/resources/schema/odf1.1/OpenDocument-manifest-schema-v1.1.rng @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.1/OpenDocument-schema-v1.1.rng b/validator/src/main/resources/schema/odf1.1/OpenDocument-schema-v1.1.rng new file mode 100644 index 0000000000..3ba6a687c4 --- /dev/null +++ b/validator/src/main/resources/schema/odf1.1/OpenDocument-schema-v1.1.rng @@ -0,0 +1,17891 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + boolean + short + int + long + double + string + datetime + base64Binary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + simple + + + + + replace + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + date + + + + + + time + + + + + + boolean + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + none + + + + + condition + + + + + + + + + + + + + + + + + + + + + simple + + + + + embed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + footnote + endnote + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + current + next + + + + + + + + + + + + + + previous + next + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + plain-number-and-name + plain-number + + + + + + + + + + + + + + + + + + + full + path + name + name-and-extension + + + + + + + + + + + + + + + + + + full + path + name + name-and-extension + area + title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:page-count + text:paragraph-count + text:word-count + text:character-count + text:table-count + text:image-count + text:object-count + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + table + text-box + image + object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:reference-ref + text:bookmark-ref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + chapter + direction + text + + + + + + + + + page + chapter + direction + text + category-and-value + caption + value + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + unit + gap + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + + + percentage + + + + + + + + currency + + + + + + + + + + + + + date + + + + + + + + time + + + + + + + + boolean + + + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + none + + + + + + + + + value + formula + none + + + + + + + + + value + formula + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + article + book + booklet + conference + custom1 + custom2 + custom3 + custom4 + custom5 + email + inbook + incollection + inproceedings + journal + manual + mastersthesis + misc + phdthesis + proceedings + techreport + unpublished + www + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + category-and-value + caption + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + separator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + right + + + + left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + collapse + filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+ + + + + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)? + + + + + + + + + + + + + + + + + + + copy-all + copy-results-only + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trace-dependents + remove-dependents + trace-precedents + remove-precedents + trace-errors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-another-table + to-another-table + from-same-table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enable + disable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + unsorted + sort-ascending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + stop + warning + information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + print-range + filter + repeat-row + repeat-column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + self + cell-range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + data + hidden + + + + + page + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-top + from-bottom + + + + + + + + + + + + + + data + + + + + + + + none + manual + name + + + + + + + + ascending + descending + + + + + + + + + + + + + tabular-layout + outline-subtotals-top + outline-subtotals-bottom + + + + + + + + + + + + + + + + + + + + + + + named + + + + + + + + previous + next + + + + + + + + none + member-difference + member-percentage + member-percentage-difference + running-total + row-percentage + column-percentage + total-percentage + index + + + + + + + + + + + + + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + + + + seconds + minutes + hours + days + months + quarters + years + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + accepted + rejected + pending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + always + screen + printer + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + full + section + cut + arc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + lines + line + curve + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + frame + paragraph + char + as-char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom-right + + + + + + + + auto + left + right + up + down + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale + scale-min + + + + + + + + scale + scale-min + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + onRequest + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + nohref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + non-primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + segments + rectangle + + + + + + + + + + + + + + + + + + + + + normal + path + shape + + + + + + + + + path + shape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + title + outline + subtitle + text + graphic + object + chart + table + orgchart + page + notes + handout + header + footer + date-time + page-number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + fade + move + stripes + open + close + dissolve + wavyline + random + lines + laser + appear + hide + move-short + checkerboard + rotate + stretch + + + + + + + + + + + + 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 + + + + + + + + + + + + slow + medium + fast + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + on-click + with-previous + after-previous + timing-root + main-sequence + interactive-sequence + + + + + + + + + + + + + + + + + + + + + + + custom + entrance + exit + emphasis + motion-path + ole-action + media-call + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + previous-page + next-page + first-page + last-page + hide + stop + execute + show + verb + fade-out + sound + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + current-date + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + top-start + bottom-start + top-end + bottom-end + + + + + + + + + + + + + wide + high + balanced + + + + + custom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + y + z + + + + + + + + + + + + + + + + + + + + + + + + + + + major + minor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + get + post + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + current + parent + + + + + + + + + + + + + + + + + + + records + current + page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + unchecked + checked + unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + submit + reset + push + url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + 3d + + + + + + + + + center + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + sql + sql-pass-through + value-list + table-fields + + + + + + + + + + + + + + + + + + + + + + + + + + + void + + + + + + + + + + + + + + float + + + + + + + + + + + + percentage + + + + + + + + + + + + currency + + + + + + + + + + + + + + + + + date + + + + + + + + + + + + time + + + + + + + + + + + + boolean + + + + + + + + + + + + string + + + + + + + + + + + void + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + i + I + + + + + + + + a + A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + into-default-style-data-style + into-english-number + keep-text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + rgb + hsl + + + + + + + + + clockwise + counter-clockwise + + + + + + + + + + + + + + + + + + translate + scale + rotate + skewX + skewY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + forward + reverse + + + + + + + + + in + out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + + + none + sum + + + + + + + + + replace + sum + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + first + last + all + media + + + + + + + + + + + + + + + indefinite + + + + + + + + + remove + freeze + hold + auto + default + transition + + + + + + + + + remove + freeze + hold + transition + auto + inherit + + + + + + + + + never + always + whenNotActive + default + + + + + + + + + never + always + whenNotActive + inherit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + left + right + mirrored + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + ultra-condensed + extra-condensed + condensed + semi-condensed + semi-expanded + expanded + extra-expanded + ultra-expanded + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + medium + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gregorian + gengou + ROC + hanja_yoil + hanja + hijri + jewish + buddhist + + + + + + + + + text + + + + + + + + + + paragraph + + + + + + + + + + + + + section + + + + + + + + + + ruby + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + right + inner + outer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + page + + + + + + + + + text + page + section + document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + + + + + + + + + + table-column + + + + + + + + + + table-row + + + + + + + + + + table-cell + + + + + + + + + + + + + + + + + graphic + presentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + drawing-page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + linear + axial + radial + ellipsoid + square + rectangular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + objectBoundingBox + + + + + + + + + + + pad + reflect + repeat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + single + double + triple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rect + round + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + portrait + landscape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + headers + grid + annotations + objects + charts + drawings + formulas + zero-values + + + + + + + + + + + ttb + ltr + + + + + + + + + + continue + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + both + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + + + + + + + + + + + + + + none + line + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + small-caps + + + + + + + none + lowercase + uppercase + capitalize + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + super + sub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + roman + swiss + modern + decorative + script + system + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + variable + + + + + + + + + + + + + + + + + + + + + + + [A-Za-z][A-Za-z0-9._\-]* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + latin + asian + complex + ignore + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + italic + oblique + + + + + + + none + embossed + engraved + + + + + + + + + + + + + + + none + + + + + + + + + + + + + + + none + single + double + + + + + + + + + + + + + none + solid + dotted + dash + long-dash + dot-dash + dot-dot-dash + wave + + + + + + + + + + + + + auto + normal + bold + thin + dash + medium + thick + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + normal + bold + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + + + + + + + + + + + + + continuous + skip-white-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + letters + lines + + + + + + + + + + + + + + + + + + + + + none + + + none + accent + dot + circle + disc + + + above + below + + + + + + + + + + + + + + + + + + + + + + + + + fixed + line-height + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + none + + + + condition + + + none + + + + + + + + + + + + + + + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + left + right + center + justify + + + + + + + + + start + center + justify + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + page + + + + + + + + + no-limit + + + + + + + + + + + + + + + + + + + + + + word + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + column + page + + + + + + + auto + column + page + + + + + + + + + + + + + transparent + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + left + center + right + top + bottom + + + + + + + + + + + + + + + + left + center + right + + + + + top + center + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + none + ideograph-alpha + + + + + + + + + simple + hanging + + + + + + + + + normal + strict + + + + + + + + + top + middle + bottom + auto + baseline + + + + + + + + + + + + + lr-tb + rl-tb + tb-rl + tb-lr + lr + rl + tb + page + + + + + + + + + + + + + + + + + + + + + + + + + + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + above + below + + + + + + + + + left + center + right + distribute-letter + distribute-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + solid + dotted + dashed + dot-dashed + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + margins + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + collapsing + separating + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + automatic + + + + + + + + + fix + value-type + + + + + + + + + + + + + ltr + ttb + + + + + + + + + auto + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-wrap + wrap + + + + + + + + + + + + + + + + + + + + none + bottom + top + center + + + + + + + + + none + hidden-and-protected + + + + protected + formula-hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + dash + solid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + + miter + round + bevel + middle + none + inherit + + + + + + + + + none + solid + bitmap + gradient + hatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom + bottom-right + + + + + + + + + + + + + + + + + + + + + + + + + + + + nonzero + evenodd + + + + + + + + + + + + + + + + none + scroll + alternate + slide + + + + + + + + + left + right + up + down + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + justify + + + + + + + + + left + center + right + justify + + + + + + + + + no-wrap + wrap + + + + + + + + + + + + + + greyscale + mono + watermark + standard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + below + above + + + + + + + + + + + + + + + + automatic + left-outside + inside + right-outside + + + + + + + automatic + above + below + center + + + + + + + + + automatic + mm + cm + m + km + pt + pc + inch + ft + mi + + + + + + + + + + + + + + + + + + + + + + + straight-line + angled-line + angled-connector-line + + + + + + + + + fixed + free + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + correct + attractive + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + double-sided + + + + + + + + + object + flat + sphere + + + + + + + + + normal + inverse + + + + + + + + + object + parallel + sphere + + + + + + + object + parallel + sphere + + + + + + + + + luminance + intensity + color + + + + + + + + + enabled + disabled + + + + + + + + + replace + modulate + blend + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + content + position + size + + + + + + + + + + + + left + center + right + from-left + inside + outside + from-inside + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + top + middle + bottom + from-top + below + + + + + + + + + + + + + + + + + + page + page-content + frame + frame-content + paragraph + paragraph-content + char + line + baseline + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + left + right + parallel + dynamic + run-through + biggest + + + + + + + + + + + + + + + + no-limit + + + + + + + + + + + + + + + + + full + outside + + + + + + + + + foreground + background + + + + + + + + + + + + + + + + clip + auto-create-new-frame + + + + + + + + + none + vertical + + + vertical + + + + + vertical + + + + + + + + + horizontal + horizontal-on-odd + horizontal-on-even + + + + + + + + + + + + + + + iterative + once-concurrent + once-successive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)(px) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + automatic + + + + named-symbol + + + + square + diamond + arrow-down + arrow-up + arrow-right + arrow-left + bow-tie + hourglass + circle + star + x + plus + asterisk + horizontal-bar + vertical-bar + + + + + + image + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + cubic-spline + b-spline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cuboid + cylinder + cone + pyramid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + side-by-side + stagger-even + stagger-odd + + + + + + + + + + + + + + + none + value + percentage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + variance + standard-deviation + percentage + error-margin + constant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + columns + rows + + + + + + + + + none + linear + logarithmic + exponential + power + + + + + + + + + manual + automatic + semi-automatic + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + full + border + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + + + + [A-Za-z0-9]{1,8} + + + + + [A-Za-z]{1,8} + + + + + 1 + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + ([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)) + + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)% + + + + + [0-9]+\* + + + + + + + + + + + #[0-9a-fA-F]{6} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _self + _blank + _parent + _top + + + + + + + float + time + date + percentage + currency + boolean + string + + + + + + -?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)* + + + + + + + + + \([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\) + + + + + + + [0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.1/OpenDocument-strict-schema-v1.1.rng b/validator/src/main/resources/schema/odf1.1/OpenDocument-strict-schema-v1.1.rng new file mode 100644 index 0000000000..e77fe4ba6e --- /dev/null +++ b/validator/src/main/resources/schema/odf1.1/OpenDocument-strict-schema-v1.1.rng @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-dsig-schema.rng b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-dsig-schema.rng new file mode 100644 index 0000000000..bb2e591d86 --- /dev/null +++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-dsig-schema.rng @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + 1.2 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-manifest-schema.rng b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-manifest-schema.rng new file mode 100644 index 0000000000..8902970eec --- /dev/null +++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-manifest-schema.rng @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + 1.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + edit + presentation-slide-show + read-only + + + + + + + + + + + + + + + + + + + + + + + + + + + SHA1/1K + + + + + + + + + + + + + + + + + + + Blowfish CFB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PBKDF2 + + + + + + + + + + + + + + + + + + + + + + + + + + + SHA1 + + + + + + + + + + + + + + + + [^:]+:[^:]+ + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-metadata.owl b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-metadata.owl new file mode 100644 index 0000000000..a7a359211e --- /dev/null +++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-metadata.owl @@ -0,0 +1,86 @@ + + + + + + + + + Open Document Schema Metadata Manifest Ontology + + + + + + The unique content.xml from the root path of the document + + + + + + The unique styles.xml from the root path of the document + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-package-metadata.owl b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-package-metadata.owl new file mode 100644 index 0000000000..d4d861dccf --- /dev/null +++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-package-metadata.owl @@ -0,0 +1,81 @@ + + + + + + + + Open Document Package Metadata Manifest Ontology + + + + + + + + + + + + + + + + Related to dcterms:hasPart of the Dublin Core Metadata Initiative + + + + + Used for any metadata file in the document + + + + + + + + + A string representing the MIME media type of a file (see RFC4288). + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-schema.rng b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-schema.rng new file mode 100644 index 0000000000..bd57af13f7 --- /dev/null +++ b/validator/src/main/resources/schema/odf1.2/OpenDocument-v1.2-cos01-schema.rng @@ -0,0 +1,18127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + boolean + short + int + long + double + string + datetime + base64Binary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + + + + + + simple + + + + + + + replace + + + + + onLoad + + + + + + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + date + + + + + + time + + + + + + boolean + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + none + + + + + condition + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:page-count + text:paragraph-count + text:word-count + text:character-count + text:table-count + text:image-count + text:object-count + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:reference-ref + text:bookmark-ref + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + unit + gap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + footnote + endnote + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + current + next + + + + + + + + + + previous + next + + + + + + + + + + + + + + name + number + number-and-name + plain-number-and-name + plain-number + + + + + + + + + + + + + full + path + name + name-and-extension + + + + + + + + + + + full + path + name + name-and-extension + area + title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + table + text-box + image + object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + number-no-superior + number-all-superior + number + + + + + + + + + + + + + + + + + + + + + + category-and-value + caption + value + + + + + + + page + chapter + direction + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + + + percentage + + + + + + + + currency + + + + + + + + + + + + + date + + + + + + + + time + + + + + + + + boolean + + + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + none + + + + + + + + + value + formula + none + + + + + + + + + value + formula + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + article + book + booklet + conference + custom1 + custom2 + custom3 + custom4 + custom5 + email + inbook + incollection + inproceedings + journal + manual + mastersthesis + misc + phdthesis + proceedings + techreport + unpublished + www + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + category-and-value + caption + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + separator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + plain-number + plain-number-and-name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + right + + + + left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + collapse + filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+ + + + + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)? + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+ + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+ + + + + + + Value is a space separated list of "cellRangeAddress" patterns + + + + + + + + + + + + + + copy-all + copy-results-only + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trace-dependents + remove-dependents + trace-precedents + remove-precedents + trace-errors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-another-table + to-another-table + from-same-table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + date + + + + + + + + + + + + + + + + enable + disable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + unsorted + sort-ascending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + stop + warning + information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + print-range + filter + repeat-row + repeat-column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + alpha-numeric + integer + double + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + self + cell-range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + data + hidden + + + + + page + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-top + from-bottom + + + + + + + + + + + + + + + + data + + + + + + + + none + manual + name + + + + + + ascending + descending + + + + + + + + + + + + + + + tabular-layout + outline-subtotals-top + outline-subtotals-bottom + + + + + + + + + + + + + + + + + + + + + named + + + + + + + + previous + next + + + + + + none + member-difference + member-percentage + member-percentage-difference + running-total + row-percentage + column-percentage + total-percentage + index + + + + + + + + + + + + + + + + + + + + + + auto + + + + + + auto + + + + + + + + auto + + + + + + auto + + + + + + + + + seconds + minutes + hours + days + months + quarters + years + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + accepted + rejected + pending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + always + screen + printer + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + full + section + cut + arc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + lines + line + curve + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + frame + paragraph + char + as-char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom-right + + + + + + auto + left + right + up + down + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale + scale-min + + + + + + + + scale + scale-min + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + new + replace + + + + + + + + + + + + nohref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + segments + rectangle + + + + + + + + + + + + + + + + + normal + path + shape + + + + + + + path + shape + + + + + + + + + + + + + + + + + + non-primitive + + + + + + \([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\) + + + + + -0.5 + 0.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + title + outline + subtitle + text + graphic + object + chart + table + orgchart + page + notes + handout + header + footer + date-time + page-number + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + fade + move + stripes + open + close + dissolve + wavyline + random + lines + laser + appear + hide + move-short + checkerboard + rotate + stretch + + + + + 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 + + + + + slow + medium + fast + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + on-click + with-previous + after-previous + timing-root + main-sequence + interactive-sequence + + + + + + + + + + + + + + + + + custom + entrance + exit + emphasis + motion-path + ole-action + media-call + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + previous-page + next-page + first-page + last-page + hide + stop + execute + show + verb + fade-out + sound + last-visited-page + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + current-date + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + top-start + bottom-start + top-end + bottom-end + + + + + + + + + wide + high + balanced + + + + + custom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + y + z + + + + + + + + + + + + + + + + + + + + + + major + minor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + none + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + equal-integer + is-boolean + equal-boolean + equal-use-only-zero + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + boolean + short + int + long + double + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + none + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-nulls + nullable + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + primary + unique + foreign + + + + + + + + + + + + + cascade + restrict + set-null + no-action + set-default + + + + + + + + cascade + restrict + set-null + no-action + set-default + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + get + post + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + current + parent + + + + + records + current + page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + selection + selection-indices + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + unchecked + checked + unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + submit + reset + push + url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + 3d + + + + + + + + + center + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + sql + sql-pass-through + value-list + table-fields + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + void + + + + + + + + float + + + + + + + + + + + + percentage + + + + + + + + + + + + currency + + + + + + + + + + + + + + + + + date + + + + + + + + + + + + time + + + + + + + + + + + + boolean + + + + + + + + + + + + string + + + + + + + + + + + void + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + i + I + + + + + + + + a + A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + + To avoid inclusion of the complete MathML schema, anything is allowed within a math:math top-level element + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + into-default-style-data-style + into-english-number + keep-text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + rgb + hsl + + + + + + + clockwise + counter-clockwise + + + + + + + + + translate + scale + rotate + skewX + skewY + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + + + + in + out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + + + + none + sum + + + + + + + replace + sum + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + first + last + all + media + + + + + + + + + + + + + + + + indefinite + + + + + + + 0.0 + + + + + + + remove + freeze + hold + auto + default + transition + + + + + + + + + remove + freeze + hold + transition + auto + inherit + + + + + + + + + never + always + whenNotActive + default + + + + + + + + + never + always + whenNotActive + inherit + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + left + right + mirrored + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + ultra-condensed + extra-condensed + condensed + semi-condensed + semi-expanded + expanded + extra-expanded + ultra-expanded + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + medium + long + + + + + + + + + + + + + + + + + fixed + language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gregorian + gengou + ROC + hanja_yoil + hanja + hijri + jewish + buddhist + + + + + + + + + + text + + + + + + + + paragraph + + + + + + + + + + + section + + + + + + + + ruby + + + + + + + + table + + + + + + + + table-column + + + + + + + + table-row + + + + + + + + table-cell + + + + + + + + + + + + + + + graphic + presentation + + + + + + + + + + + + + + + drawing-page + + + + + + + + chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + right + inner + outer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + page + + + + + + + text + page + section + document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + linear + axial + radial + ellipsoid + square + rectangular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + objectBoundingBox + + + + + + + + + + + pad + reflect + repeat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + single + double + triple + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rect + round + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + portrait + landscape + + + + + + + + + + + + + + + + + + + + + + headers + grid + annotations + objects + charts + drawings + formulas + zero-values + + + + + + + + + ttb + ltr + + + + + + + + continue + + + + + + + + + + + + + + + + + horizontal + vertical + both + none + + + + + + + + + + + + + none + line + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + lowercase + uppercase + capitalize + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + super + sub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + latin + asian + complex + ignore + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + embossed + engraved + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + letters + lines + + + + + + + + + + + + + + + + + none + + + none + accent + dot + circle + disc + + + above + below + + + + + + + + + + + + + + + + + + + fixed + line-height + + + + + + + + + + + + + + + + + + + + + true + + + none + + + + condition + + + none + + + + + + + + + normal + small-caps + + + + + roman + swiss + modern + decorative + script + system + + + + + fixed + variable + + + + + [A-Za-z][A-Za-z0-9._\-]* + + + + + normal + italic + oblique + + + + + none + + + + + + none + single + double + + + + + none + solid + dotted + dash + long-dash + dot-dash + dot-dot-dash + wave + + + + + auto + normal + bold + thin + medium + thick + + + + + + + + normal + bold + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + + + + + continuous + skip-white-space + + + + + + + + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + start + center + justify + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + auto + page + + + + + + + no-limit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + ideograph-alpha + + + + + + + simple + hanging + + + + + + + normal + strict + + + + + + + top + middle + bottom + auto + baseline + + + + + + + + + + + + + + + + + + + + + + + start + end + left + right + center + justify + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + char + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + word + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + column + page + + + + + + + auto + column + page + + + + + + + + + transparent + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + left + center + right + top + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + top + center + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + lr-tb + rl-tb + tb-rl + tb-lr + lr + rl + tb + page + + + + + + + + + + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + above + below + + + + + + + left + center + right + distribute-letter + distribute-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + solid + dotted + dashed + dot-dashed + + + + + + + + + + + + + + + top + middle + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + margins + + + + + + + + + + + + + + + + + + + + collapsing + separating + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + automatic + + + + + + + fix + value-type + + + + + + + + auto + 0 + 0deg + 0rad + 0grad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-wrap + wrap + + + + + + + + none + bottom + top + center + + + + + + + none + hidden-and-protected + + + + protected + formula-hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ltr + ttb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + label-width-and-position + label-alignment + + + + + + + + + + + + + + + + + + + + + listtab + space + nothing + + + + + + + + + + + + + + + + + + + + + + + + + none + dash + solid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + miter + round + bevel + middle + none + + + + + + + butt + square + round + + + + + + + + + + + + none + scroll + alternate + slide + + + + + + + left + right + up + down + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + justify + + + + + + + left + center + right + justify + + + + + + + no-wrap + wrap + + + + + + + + + + + + greyscale + mono + watermark + standard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + below + above + + + + + + + + + + + + automatic + left-outside + inside + right-outside + + + + + + + automatic + above + below + center + + + + + + + automatic + mm + cm + m + km + pt + pc + inch + ft + mi + + + + + + + + + + + + + + + + + straight-line + angled-line + angled-connector-line + + + + + + + fixed + free + + + + + + + + + + + + + + + + + horizontal + vertical + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + correct + attractive + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + standard + double-sided + + + + + + + object + flat + sphere + + + + + + + normal + inverse + + + + + + + object + parallel + sphere + + + + + + + object + parallel + sphere + + + + + + + luminance + intensity + color + + + + + + + enabled + disabled + + + + + + + replace + modulate + blend + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + content + position + size + + + + + + + + + + left + center + right + from-left + inside + outside + from-inside + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + none + left + right + parallel + dynamic + run-through + biggest + + + + + + + + + + + + no-limit + + + + + + + + + + + + + full + outside + + + + + + + foreground + background + + + + + + + + + + + + clip + auto-create-new-frame + + + + + + + none + vertical + + + vertical + + + + + vertical + + + + + + + + auto + + + + + + + + iterative + once-concurrent + once-successive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + content + thumbnail + icon + print-view + + + + + + + + + + + + + + + + none + solid + bitmap + gradient + hatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom + bottom-right + + + + + + + + + horizontal + vertical + + + + + + + + + + + + + + + + + + nonzero + evenodd + + + + + + + + + + + + + + + + + + + top + middle + bottom + from-top + below + + + + + + + + + + + + + + page + page-content + frame + frame-content + paragraph + paragraph-content + char + line + baseline + text + + + + + + + + + + + + + + horizontal + horizontal-on-odd + horizontal-on-even + + + + + 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}[ ]*\) + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)(px) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + automatic + + + + named-symbol + + + + square + diamond + arrow-down + arrow-up + arrow-right + arrow-left + bow-tie + hourglass + circle + star + x + plus + asterisk + horizontal-bar + vertical-bar + + + + + + image + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + cubic-spline + b-spline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cuboid + cylinder + cone + pyramid + + + + + + + + + + + + + + + + + use-zero + leave-gap + ignore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + side-by-side + stagger-even + stagger-odd + + + + + + + + + none + value + percentage + value-and-percentage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + variance + standard-deviation + percentage + error-margin + constant + standard-error + cell-range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + columns + rows + + + + + + + none + linear + logarithmic + exponential + power + + + + + + + start + end + + + + + + + + near-axis + near-axis-other-side + outside-start + outside-end + + + + + + + at-labels + at-axis + at-labels-and-axis + + + + + + + + + + + + + avoid-overlap + center + top + top-right + right + bottom-right + bottom + bottom-left + left + top-left + inside + outside + near-origin + + + + + + + + manual + automatic + semi-automatic + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + full + border + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + + + + [A-Za-z0-9]{1,8} + + + + + [A-Za-z]{1,8} + + + + + [A-Za-z0-9]{1,8} + + + + + 1 + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + ([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)) + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)% + + + + + ([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)% + + + + + -?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)% + + + + + [0-9]+\* + + + + + + + + + + + #[0-9a-fA-F]{6} + + + + + + + + (([\i-[:]][\c-[:]]*)?:)?.+ + 1 + + + + + + + + + + + + \[(([\i-[:]][\c-[:]]*)?:)?.+\] + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _self + _blank + _parent + _top + + + + + + float + time + date + percentage + currency + boolean + string + + + + + -?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)* + + + + + + + + \([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\) + + + + + [^:]+:[^:]+ + + + + + An IRI-reference as defined in [RFC3987]. See ODF 1.2 Part 1 section 18.3. + + + + + + + + + + + + + + + + + + + + + diff --git a/validator/src/main/resources/schema/odf1.2/odf.htm b/validator/src/main/resources/schema/odf1.2/odf.htm new file mode 100644 index 0000000000..e1fcb4523b --- /dev/null +++ b/validator/src/main/resources/schema/odf1.2/odf.htm @@ -0,0 +1,107 @@ + + + + +Open Document Format for Office Applications (OpenDocument) Version 1.2 + + + + +

OASIS logo

+

OpenDocument Metadata Manifest Ontology

+

10 May 2011

+

Introduction

+

This document describes version 1.2 of the OpenDocument Metadata Manifest Ontology namespace. It also contains a directory of links to related resources.

+ +

Namespace URI Versioning Policy

+

It is the intent of the OASIS OpenDocument Technical Committee that the OpenDocument Package Metadata Manifest Ontology namespace URI will not change arbitrarily with each subsequent revision of the corresponding WSDL or XML Schema documents but rather change only when a subsequent revision, published in conjunction with a Committee Draft, results in non-backwardly compatible changes from a previously published Committee Draft.

+ +

Under this policy, the following are examples of backwards compatible changes that would not result in assignment of a new namespace URI: +

+
    +
  • addition of new global element, attribute, complexType and simpleType definitions
  • +
  • addition of new operations within a WSDL portType or binding (along with the corresponding schema, message and part definitions)
  • +
  • addition of new elements or attributes in locations covered by a previously specified wildcard
  • +
  • modifications to the pattern facet of a type definition for which the value-space of the previous definition remains valid or for which the value-space of the preponderance of instance would remain valid
  • +
  • modifications to the cardinality of elements for which the value-space of possible instance documents conformant to the previous revision of the schema would still be valid with regards to the revised cardinality rule
  • +
+

Related Resources for OpenDocument Package Metadata Manifest Ontology

+

Normative Reference:

+
+

+Open Document Format for Office Applications (OpenDocument) Version 1.2 (Part 1: OpenDocument Schema)

+

Title:

+

Open Document Format for Office Applications (OpenDocument) Version 1.2 (Part 1: OpenDocument Schema)

+

Stage:

+

Candidate OASIS Standard 01

+

Date:

+

10 May 2011

+

This version:

+

http://docs.oasis-open.org/office/v1.2/cos01/OpenDocument-v1.2-cos01.odt

+

Previous version:

+

http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.odt

+

Technical Committee

+

OASIS Open Document Format for Office Applications (OpenDocument) TC

+

Chairs:

+

Rob Weir, IBM

+

Michael Brauer, Oracle Corporation

+

Editors:

+

Patrick Durusau <patrick@durusau.net>

+

Michael Brauer, Oracle Corporation <michael.brauer@sun.com>

+

Additional Formats:

+

HTML

+

PDF

+

Comments list:

+

Submit comments

+

Comments Archive:

+

http://lists.oasis-open.org/archives/office-comment/

+

+ +

+
+ +

OWL Ontology:

+ + + + diff --git a/validator/src/main/resources/schema/odf1.2/pkg.htm b/validator/src/main/resources/schema/odf1.2/pkg.htm new file mode 100644 index 0000000000..46c4d47ed8 --- /dev/null +++ b/validator/src/main/resources/schema/odf1.2/pkg.htm @@ -0,0 +1,110 @@ + + + + +Open Document Format for Office Applications (OpenDocument) Version 1.2 + + + + +

OASIS logo

+

OpenDocument Package Metadata Manifest Ontology

+

10 May 2011

+

Introduction

+

This document describes version 1.2 of the OpenDocument Package Metadata Manifest Ontology namespace. It also contains a directory of links to related resources.

+ +

Namespace URI Versioning Policy

+

It is the intent of the OASIS OpenDocument Technical Committee that the OpenDocument Package Metadata Manifest Ontology namespace URI will not change arbitrarily with each subsequent revision of the corresponding WSDL or XML Schema documents but rather change only when a subsequent revision, published in conjunction with a Committee Draft, results in non-backwardly compatible changes from a previously published Committee Draft.

+ +

Under this policy, the following are examples of backwards compatible changes that would not result in assignment of a new namespace URI: +

+
    +
  • addition of new global element, attribute, complexType and simpleType definitions
  • +
  • addition of new operations within a WSDL portType or binding (along with the corresponding schema, message and part definitions)
  • +
  • addition of new elements or attributes in locations covered by a previously specified wildcard
  • +
  • modifications to the pattern facet of a type definition for which the value-space of the previous definition remains valid or for which the value-space of the preponderance of instance would remain valid
  • +
  • modifications to the cardinality of elements for which the value-space of possible instance documents conformant to the previous revision of the schema would still be valid with regards to the revised cardinality rule
  • +
+

Related Resources for OpenDocument Package Metadata Manifest Ontology

+

Normative Reference:

+
+

+Open Document Format for Office Applications (OpenDocument) Version 1.2 (Part 3: Packages)

+

Title:

+

Open Document Format for Office Applications (OpenDocument) Version 1.2 (Part 3: Packages)

+

Stage:

+

Candidate OASIS Standard 01

+

Date:

+

10 May 2011

+

This version:

+

http://docs.oasis-open.org/office/v1.2/cos01/OpenDocument-v1.2-cos01.odt

+

Previous version:

+

http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.odt

+ +

Technical Committee

+

OASIS Open Document Format for Office Applications (OpenDocument) TC

+

Chairs:

+

Rob Weir, IBM

+

Michael Brauer, Oracle Corporation

+

Editors:

+

Patrick Durusau <patrick@durusau.net>

+

Dennis Hamilton <dennis.hamilton@acm.org>

+

Michael Brauer, Oracle Corporation <michael.brauer@sun.com>

+

Additional Formats:

+

HTML

+

PDF

+

Comments list:

+

Submit comments

+

Comments Archive:

+

http://lists.oasis-open.org/archives/office-comment/

+

+ +

+
+ +

OWL Ontology:

+ + + + diff --git a/validator/src/main/resources/schema/odf1_0.properties b/validator/src/main/resources/schema/odf1_0.properties new file mode 100644 index 0000000000..1349525ef3 --- /dev/null +++ b/validator/src/main/resources/schema/odf1_0.properties @@ -0,0 +1,31 @@ + + + + +/schema/odf1.0/OpenDocument-manifest-schema-v1.0-os.rng +/schema/odf1.0/OpenDocument-schema-v1.0-os.rng +/schema/odf1.0/OpenDocument-strict-schema-v1.0-os.rng +/schema/mathml1.01/math.dtd + + + diff --git a/validator/src/main/resources/schema/odf1_1.properties b/validator/src/main/resources/schema/odf1_1.properties new file mode 100644 index 0000000000..ed0e7c2d21 --- /dev/null +++ b/validator/src/main/resources/schema/odf1_1.properties @@ -0,0 +1,34 @@ + + + + +/schema/odf1.1/OpenDocument-manifest-schema-v1.1.rng +/schema/odf1.1/OpenDocument-strict-schema-v1.1.rng +/schema/odf1.1/OpenDocument-schema-v1.1.rng +/schema/mathml1.01/math.dtd + + + + + + diff --git a/validator/src/main/resources/schema/odf1_2.properties b/validator/src/main/resources/schema/odf1_2.properties new file mode 100644 index 0000000000..e017a6a31e --- /dev/null +++ b/validator/src/main/resources/schema/odf1_2.properties @@ -0,0 +1,34 @@ + + + + +/schema/odf1.2/OpenDocument-v1.2-cos01-manifest-schema.rng + +/schema/odf1.2/OpenDocument-v1.2-cos01-schema.rng + +/schema/mathml2.0/mathml2.xsd +/schema/odf1.2/OpenDocument-v1.2-cos01-dsig-schema.rng + + + + diff --git a/validator/src/main/webapp/META-INF/context.xml b/validator/src/main/webapp/META-INF/context.xml new file mode 100644 index 0000000000..9df7cd5bdd --- /dev/null +++ b/validator/src/main/webapp/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/validator/src/main/webapp/WEB-INF/web.xml b/validator/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..53aedf27da --- /dev/null +++ b/validator/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,58 @@ + + + + ODF Validator Application + + + + APPLICATION_TITLE + ODF Validator 1.2 + + + + PROPERTY_APPLICATION_NAME + odfvalidator + + + + DEVELOPER_EMAIL + odf-dev AT incubator.apache.org + + + + CONTACT_EMAIL + odf-dev AT incubator.apache.org + + + + SUPPORTER_ICON_URL + http://opendocsociety.org/organisation/logo/png/opendocsociety_logo_normal_color-on-trans-200x42/;download + + + + SUPPORTER_URL + http://www.opendocsociety.org/ + + + + SUPPORTER_TITLE + OpenDoc Society + + + + SUPPORTER_FAVICON_URL + http://www.opendocsociety.org/favicon/;download + + + InfoPage + /jsp/info/index.jsp + + + InfoPage + /info.html + + + + /jsp/index.jsp + + \ No newline at end of file diff --git a/validator/src/main/webapp/jsp/common/footer.jsp b/validator/src/main/webapp/jsp/common/footer.jsp new file mode 100644 index 0000000000..5ed59654e0 --- /dev/null +++ b/validator/src/main/webapp/jsp/common/footer.jsp @@ -0,0 +1,42 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> + +<% + String _supporterTitle = getServletContext().getInitParameter( "SUPPORTER_TITLE" ); + if ( null == _supporterTitle ) { + _supporterTitle = "OpenDoc Society"; + } + String _supporterURL = getServletContext().getInitParameter( "SUPPORTER_URL" ); + if ( null == _supporterURL) { + _supporterURL = "http://opendocsociety.org/"; + } + String _supporterIconURL = getServletContext().getInitParameter( "SUPPORTER_ICON_URL" ); + if ( null == _supporterIconURL ) { + _supporterIconURL = "http://opendocsociety.org/organisation/logo/png/opendocsociety_logo_normal_color-on-trans-200x42/;download"; + } +%> + diff --git a/validator/src/main/webapp/jsp/common/header.jsp b/validator/src/main/webapp/jsp/common/header.jsp new file mode 100644 index 0000000000..151d49e254 --- /dev/null +++ b/validator/src/main/webapp/jsp/common/header.jsp @@ -0,0 +1,164 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> + +<% + String appName = getServletContext().getInitParameter( "APPLICATION_TITLE" ); + if ( null == appName ) { + appName = "ODFToolkit"; + } + String favIconURL = getServletContext().getInitParameter( "SUPPORTER_FAVICON_URL" ); + if ( null == favIconURL ) { + favIconURL = "http://www.opendocsociety.org/favicon/;download"; + } +%> + + <% out.println( appName ); %> + + + + + + + diff --git a/validator/src/main/webapp/jsp/common/supporter.jsp b/validator/src/main/webapp/jsp/common/supporter.jsp new file mode 100644 index 0000000000..66e6816199 --- /dev/null +++ b/validator/src/main/webapp/jsp/common/supporter.jsp @@ -0,0 +1,29 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> +<% + String supporterTitle = getServletContext().getInitParameter( "SUPPORTER_TITLE" ); + if ( null == supporterTitle ) { + supporterTitle = "OpenDoc Society"; + } + String supporterURL = getServletContext().getInitParameter( "SUPPORTER_URL" ); + if ( null == supporterURL) { + supporterURL = "http://opendocsociety.org/"; + } +%> +

This service is provided to you by <% out.println( supporterTitle ); %>

+ + diff --git a/validator/src/main/webapp/jsp/index.jsp b/validator/src/main/webapp/jsp/index.jsp new file mode 100644 index 0000000000..6ff4c88ad5 --- /dev/null +++ b/validator/src/main/webapp/jsp/index.jsp @@ -0,0 +1,31 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> +<%@page language="Java" %> +<%@page contentType="text/html" %> + + + + +
+
+ + +
+
+ + + diff --git a/validator/src/main/webapp/jsp/info/index.jsp b/validator/src/main/webapp/jsp/info/index.jsp new file mode 100644 index 0000000000..b0db5fd0c8 --- /dev/null +++ b/validator/src/main/webapp/jsp/info/index.jsp @@ -0,0 +1,31 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> +<%@page language="Java" %> +<%@page contentType="text/html" %> + + + + +
+
+ + +
+
+ + + diff --git a/validator/src/main/webapp/jsp/info/info.jsp b/validator/src/main/webapp/jsp/info/info.jsp new file mode 100644 index 0000000000..3a7cb6fc17 --- /dev/null +++ b/validator/src/main/webapp/jsp/info/info.jsp @@ -0,0 +1,94 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> +

The ODF Validator

+


+

Options

+

ODF Version

+
    +
  • autodetect : Detects the ODF version of the root document from the given ODF package. ODF documents with version 1.2 will be validated against conformance, version 1.0/1.1 against none strict. + In all other choices the document is validated with respect to the selected OpenDocument version regardless of the version information that is included in the file

  • +
  • conformant : Checks the basic requirements conforming OpenDocument documents must meet. + This modes considers the version of the checked documents. This means that for OpenDocument v1.2 documents (or if OpenDocument v1.2 has been selected) the + conformance definitions of the OpenDocument v1.2 specification are taken as basis, while those of the OpenDocument v1.1/v1.0 specification are taken as basis + for OpenDocument v1.1/v1.0 documents. Please note that not all provisions for conforming documents are checked.

  • +
  • extended conformance test: For OpenDocument v1.2 documents (or if OpenDocument v1.2 has been selected), the basic requirements of extended conforming ODF documents are checked. + For OpenDocument v1.0/v1.1 documents (or if OpenDocument v1.0/v1.1 has been selected) this mode equals the conformance test mode.

  • +
  • validation: For OpenDocument v1.1/v1.0 documents (or if OpenDocument v1.1/v1.0 has been selected) the selected document is validated in regard of the OpenDocument v1.1/v1.0 schema. + For OpenDocument v1.2 documents (or if OpenDocument v1.2 has been selected) this mode equals the conformance test mode.

  • +
  • strict validation: For OpenDocument v1.1/v1.0 documents (or if OpenDocument v1.1/v1.0 has been selected) the selected document is validated in regard of the strict OpenDocument v1.1/v1.0 schema. + For OpenDocument v1.2 documents (or if OpenDocument v1.2 has been selected) this mode equals the conformance test mode.

  • +
+

For OpenDocument v1.1/v1.0 documents, the validation and strict validation tests are more restrictive than a conformance test. Please note that this means that errors may be reported for documents that are actually conforming to the ODF specification.

+

The strict validation test is recommended for developers that want to make sure that an OpenDocument v1.0/v1.1 document does not only validate in regards to the ODF schema, but also does not use any extensions. The recommended mode + for OpenDocument v1.2 documents is conformance test.

+

The following items are checked by the validation service:

+
    +
  • OpenDocument v1.2 documents

    +
      +
    • If the test type is conformance test, and if the file is not a formula file, then the sub files content.xml, styles.xml, meta.xml and settings.xml are validated with respect to the OpenDocument v1.2 schema.

    • +
    • If the test type is extended conformance test, and if the file is not a formula file, then the sub files content.xml, styles.xml, meta.xml and settings.xml are pre-processed as described in section 1.4.2.1 of the OpenDocument v1.2 specification (that is foreign elements and attributes are removed), and are then validated with respect to the OpenDocument v1.2 schema.

    • +
    +
  • +
  • OpenDocument v1.1/1.0 documents

    +
      +
    • If the test type is conformance test, and if the file is not a formula file, then the sub files content.xml, styles.xml, meta.xml and settings.xml are pre-processed as described in section 1.5 of the OpenDocument specification (that is foreign elements and attributes are removed), and are then validated with respect to the schema of the selected OpenDocument version.

    • +
    • If the test type is validation, and if the file is not a formula file, then the sub files content.xml, styles.xml, meta.xml and settings.xml are validated with respect to the schema of the selected OpenDocument version. Pre-processing of foreign elements and attributes is not applied.

    • +
    • If the test type is strict validation, and if the file is not a formula file, then the sub files content.xml, styles.xml, meta.xml and settings.xml are validated with respect to the strict schema of the selected OpenDocument version. Pre-processing of foreign elements and attributes is not applied.

    • +
    +
  • +
  • All versions

    +
      +
    • If the file is a formula file, then the sub file content.xml is validated with respect to the MathML 2.0 W3C XSD schema. The sub files styles.xml, meta.xml and settings.xml are checked as described for other document types.

    • +
    • The file META-INF/manifest.xml is validated with respect to the manifest schema of the selected ODF specification.

    • +
    • If the file is an ODF 1.2 file, then the META-INF/documentsignatures.xml and META-INF/macrosignatures.xml sub files are validated with respect to the digital signatures schema of the ODF 1.2 specification.

    • +
    • For all embedded objects in ODF format, the content.xml, styles.xml, meta.xml and settings.xml are validated as described for the main document above

    • +
    • It is checked whether the file itself ans all embedded objects in ODF format contain at least a content.xml or styles.xml sub file.

    • +
    +
  • +
+

Logging

+
    +
  • verbose : Gives out all kind of messages.
  • +
  • only warnings and errors: Logs all error and warning without info messages.
  • +
  • only errors: Logs only error messages.
  • +
+

Implementation Details

+

This services is based on the Apache ODF Validator and Sun's Multi-Schema XML Validator (MSV) is used for all validation tasks. +

The following actions take place before or during the validation:

+
    +
  • A DTD document declaration within a manifest.xml file is ignored. For the logging level verbose, an information is displayed if this happens

    + Note: Very early ODF implementations in OpenOffice.org wrongly included a document type declaration. Ignoring the document type enables the validation of the manifest despite of this error. +

  • +
  • A namespace "http://openoffice.org/2001/manifest" within a manifest.xml file is changed to "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0". For the logging level verbose, an information is displayed if this happens.

    + Note: Early ODF implementations in OpenOffice.org used the wrong namespace. Changing it to the correct one enables the validation of the manifest despite the wrong namespace.

  • +
  • Namespaces defined in the ODF v1.0 Committee Draft 2 are replaced with those of the ODF v1.0 OASIS Standard. For the logging level verbose, an information is displayed if this happens.

    + Note: Changing the namespaces enables the validation of documents that conform to the ODF v1.0 CD2. Such documents have been saved by OpenOffice.org 1.0 beta versions.

  • +
  • The value of draw:points attributes is truncated to 2048 characters. For the logging level verbose, an information is displayed if this happens.

    + Note: The truncation of this attribute value avoids a stack overflow in MSV while validating the attribute value against a regular expression.

  • +
  • A namespace "http://openoffice.org/2004/database" within a content.xml file is changed to "urn:oasis:names:tc:opendocument:xmlns:database:1.0", and a namespace "http://openoffice.org/2004/office" within a content.xml file is changed to "urn:oasis:names:tc:opendocument:xmlns:office:1.0". For the logging level verbose, an information is displayed if this happens.

    + Note: These namespaces were used in OpenOffice.org 2.x database documents, because database documents are included in OpenDocument since version 1.2 only. Changing them enables the validation of OpenOffice.org 2.x database documents.

  • +
+ +

The following schemas are being used:

+ + +




+ diff --git a/validator/src/main/webapp/jsp/validate.jsp b/validator/src/main/webapp/jsp/validate.jsp new file mode 100644 index 0000000000..f9ce1241df --- /dev/null +++ b/validator/src/main/webapp/jsp/validate.jsp @@ -0,0 +1,183 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> +<%@ page import=" + java.io.UnsupportedEncodingException, + java.io.PrintStream, + java.io.InputStream, + java.io.ByteArrayOutputStream, + java.io.File, + org.apache.commons.fileupload.servlet.ServletFileUpload, + org.apache.commons.fileupload.FileItemIterator, + org.apache.commons.fileupload.FileItemStream, + org.apache.commons.fileupload.util.Streams, + org.odftoolkit.odfvalidator.ODFValidator, + org.odftoolkit.odfvalidator.Logger, + org.odftoolkit.odfvalidator.Configuration, + org.odftoolkit.odfvalidator.OdfValidatorMode, + org.odftoolkit.odfvalidator.ValidationMessageCollectorErrorFilter, + org.odftoolkit.odfvalidator.OdfVersion" %> + +<% +int loggingSelection = 0; +int modeSelection = 0; +if(ServletFileUpload.isMultipartContent(request)) { +%>

ODF Validator Result Page

<% + ServletFileUpload upload = new ServletFileUpload(); + FileItemIterator iter = upload.getItemIterator(request); + ODFValidator validator = null; + boolean result = false; + while (iter.hasNext()) { + FileItemStream item = iter.next(); + InputStream stream = item.openStream(); + /* The file item contains a simple name-value pair of a form field */ + if(item.isFormField()) { + if("loggingSelection".equals(item.getFieldName())) { + loggingSelection = Integer.parseInt(Streams.asString(stream)); + } else if("modeSelection".equals(item.getFieldName())) { + modeSelection = Integer.parseInt(Streams.asString(stream)); + } + } else { + /* The file item contains an uploaded file */ + if((stream != null) && (item.getName() != null) && (!item.getName().equals(""))) { + Logger.LogLevel aLogLevel = null; + switch (loggingSelection) { + case 2: + aLogLevel = Logger.LogLevel.ERROR; + break; + case 1: + aLogLevel = Logger.LogLevel.WARNING; + break; + default: + aLogLevel = Logger.LogLevel.INFO; + break; + } + OdfVersion aOdfVersion = null; + OdfValidatorMode odfValidatorMode = null; + switch (modeSelection) { + case 6: + aOdfVersion = OdfVersion.V1_0; + odfValidatorMode = OdfValidatorMode.VALIDATE; + break; + case 4: + aOdfVersion = OdfVersion.V1_1; + odfValidatorMode = OdfValidatorMode.VALIDATE; + break; + case 5: + aOdfVersion = OdfVersion.V1_0; + odfValidatorMode = OdfValidatorMode.VALIDATE_STRICT; + break; + case 3: + aOdfVersion = OdfVersion.V1_1; + odfValidatorMode = OdfValidatorMode.VALIDATE_STRICT; + break; + case 2: + odfValidatorMode = OdfValidatorMode.EXTENDED_CONFORMANCE; + aOdfVersion = OdfVersion.V1_2; + break; + case 1: + aOdfVersion = OdfVersion.V1_2; + default: + odfValidatorMode = OdfValidatorMode.CONFORMANCE; + break; + } + validator = new ODFValidator(null, aLogLevel, true, aOdfVersion, true); + ByteArrayOutputStream bout = null; + if(validator != null) { + out.println("

Result for " + item.getName() + "

"); + bout = new ByteArrayOutputStream(); + PrintStream pout = new PrintStream(bout, true, "UTF-8"); + ValidationMessageCollectorErrorFilter filter = new ValidationMessageCollectorErrorFilter(); + try { + result = !validator.validateStream(pout, stream, item.getName() , odfValidatorMode, filter); + } catch (Exception e) { + e.printStackTrace(pout); + result = false; + } + } + if(result) { + out.println("

The document is " + odfValidatorMode.toString()+ " ODF" + validator.getOdfVersion() + "!"); + } else { + out.println("

The document is NOT " + odfValidatorMode.toString()+ " ODF" + validator.getOdfVersion() + "!"); + } + String s = null; + try { + s = new String(bout.toByteArray(), "UTF-8"); + s = s.replaceAll("&", "&"); + s = s.replaceAll("<", "<"); + s = s.replaceAll(">", ">"); + s = s.replaceAll("<span class='info'>", ""); + s = s.replaceAll("<span class='warning'>", ""); + s = s.replaceAll("<span class='error'>", ""); + s = s.replaceAll("<span class='fatalError'>", ""); + s = s.replaceAll("<span class='filePath'>", ""); + s = s.replaceAll("<span class='messageType'>", ""); + s = s.replaceAll("</span></br>", "
"); + s = s.replaceAll("</span>", "
"); + } catch (UnsupportedEncodingException use) { + out.println(use); + } + if(s != null && (s.length() > 0)) { + out.println("

Details:

" + s + "
"); + } else { + out.println("

"); + } + } + } + } +%>


<% +} else { + %>

ODF Validator

This service checks conformance of ODF documents based on their OpenDocument Format specification. It does not cover all conformance criteria, yet (see implementation details).

+
+

ODF Version:
+ +
+

+

Logging: +
+
+
+ Choose ODF documents for validation: +
+ + +
+
+
+ + + + +

+
+<% +} +%> diff --git a/validator/src/org/odftoolkit/odfvalidator/Logger.java b/validator/src/org/odftoolkit/odfvalidator/Logger.java deleted file mode 100644 index 792edae7d2..0000000000 --- a/validator/src/org/odftoolkit/odfvalidator/Logger.java +++ /dev/null @@ -1,190 +0,0 @@ -/************************************************************************ - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER - * - * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also - * obtain a copy of the License at http://odftoolkit.org/docs/license.txt - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************/ - -package org.odftoolkit.odfvalidator; - -import java.io.PrintStream; - -import org.xml.sax.SAXParseException; - -public class Logger { - - public enum LogLevel - { - ERROR, - WARNING, - INFO - }; - - private String m_aFileName; - private String m_aEntryName; - private PrintStream m_aOut; - private int m_nErrors; - private int m_nWarnings; - private LogLevel m_nLevel; - private Logger m_aParentLogger; - - private static final String INFO_PREFIX = "Info:"; - private static final String WARNING_PREFIX = "Warning:"; - private static final String ERROR_PREFIX = "Error:"; - private static final String FATAL_PREFIX = "Fatal:"; - - /** Creates a new instance of Logger */ - Logger( String aFileName, String aEntryName, PrintStream aOut , LogLevel nLevel) { - m_aFileName = aFileName; - m_aEntryName = aEntryName; - m_aOut = aOut; - m_nLevel = nLevel; - m_nErrors = 0; - m_nWarnings = 0; - m_aParentLogger = null; - } - - /** Creates a new instance of Logger */ - Logger( String aEntryName, Logger aParentLogger ) { - m_aFileName = aParentLogger.m_aFileName; - m_aEntryName = aEntryName; - m_aOut = aParentLogger.m_aOut; - m_nLevel = aParentLogger.m_nLevel; - m_nErrors = 0; - m_nWarnings = 0; - m_aParentLogger = aParentLogger; - } - - public PrintStream getOutputStream() - { - return m_aOut; - } - - public void setOutputStream(PrintStream aOut) { - m_aOut = aOut; - } - - boolean hasError() - { - return m_nErrors>0; - } - - boolean hasWarning() - { - return m_nWarnings>0; - } - - int getErrorCount() - { - return m_nErrors; - } - - int getWarningCount() - { - return m_nWarnings; - } - - void logWarning(String aMsg) { - if( m_nLevel.compareTo(LogLevel.WARNING) >= 0 ) - logMessage( WARNING_PREFIX, aMsg ); - incWarnings(); - } - - void logFatalError(String aMsg) { - logMessage( FATAL_PREFIX, aMsg ); - incErrors(); - } - - void logError(String aMsg) { - if( m_nLevel.compareTo(LogLevel.ERROR) >= 0 ) - logMessage( ERROR_PREFIX, aMsg ); - incErrors(); - } - - void logInfo(String aMsg, boolean bForceOutput) { - if( m_nLevel.compareTo(LogLevel.INFO) >= 0 || bForceOutput ) - logMessage( INFO_PREFIX, aMsg ); - } - - void logWarning(SAXParseException e) { - if( m_nLevel.compareTo(LogLevel.WARNING) >= 0 ) - logMessage( WARNING_PREFIX, e ); - incWarnings(); - } - - void logFatalError(SAXParseException e) { - logMessage( FATAL_PREFIX, e ); - incErrors(); - } - - void logError(SAXParseException e) { - if( m_nLevel.compareTo(LogLevel.ERROR) >= 0 ) - logMessage( ERROR_PREFIX, e ); - incErrors(); - } - - void logSummaryInfo() - { - logInfo( (hasError() ? getErrorCount() : "no") + " errors, " + (hasWarning() ? getWarningCount() : "no") + " warnings", false ); - } - - private void printFileEntryPrefix() - { - m_aOut.print( m_aFileName ); - if( m_aEntryName != null && m_aEntryName.length() > 0 ) - { - m_aOut.print( "/" ); - m_aOut.print( m_aEntryName ); - } - } - - private void logMessage( String aPrefix, SAXParseException e ) - { - printFileEntryPrefix(); - m_aOut.print( "[" ); - m_aOut.print( e.getLineNumber() ); - m_aOut.print( "," ); - m_aOut.print( e.getColumnNumber() ); - m_aOut.print( "]:" ); - m_aOut.print( aPrefix ); - m_aOut.println( e.getMessage() ); - } - - private void logMessage( String aPrefix, String aMsg ) - { - printFileEntryPrefix(); - m_aOut.print( ":" ); - m_aOut.print( aPrefix ); - m_aOut.println( aMsg); - } - - private void incErrors() - { - ++m_nErrors; - if( m_aParentLogger != null ) - m_aParentLogger.incErrors(); - } - - private void incWarnings() - { - ++m_nWarnings; - if( m_aParentLogger != null ) - m_aParentLogger.incWarnings(); - } - -} diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFPackageValidator.java b/validator/src/org/odftoolkit/odfvalidator/ODFPackageValidator.java deleted file mode 100644 index 0a07d1a94d..0000000000 --- a/validator/src/org/odftoolkit/odfvalidator/ODFPackageValidator.java +++ /dev/null @@ -1,498 +0,0 @@ -/************************************************************************ - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER - * - * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also - * obtain a copy of the License at http://odftoolkit.org/docs/license.txt - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************/ - -package org.odftoolkit.odfvalidator; - -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintStream; -import java.util.Iterator; -import java.util.Set; -import java.util.zip.ZipException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import javax.xml.transform.sax.SAXSource; -import javax.xml.validation.Validator; -import org.odftoolkit.odfdom.doc.OdfDocument; -import org.odftoolkit.odfdom.pkg.OdfPackage; -import org.odftoolkit.odfdom.pkg.manifest.EncryptionData; -import org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry; -import org.xml.sax.InputSource; -import org.xml.sax.XMLFilter; -import org.xml.sax.XMLReader; - -import org.xml.sax.helpers.DefaultHandler; - -/** - * Validator for Files - */ -abstract class ODFPackageValidator { - - static final String DOCUMENT_SETTINGS = "document-settings"; - static final String DOCUMENT_STYLES = "document-styles"; - static final String DOCUMENT_CONTENT = "document-content"; - - protected Logger.LogLevel m_nLogLevel; - protected OdfValidatorMode m_eMode = OdfValidatorMode.CHECK_CONFORMANCE; - protected SAXParseExceptionFilter m_aFilter = null; - protected ODFValidatorProvider m_aValidatorProvider = null; - - protected ODFValidationResult m_aResult = null; - protected OdfVersion m_aConfigVersion = null; - - private SAXParserFactory m_aSAXParserFactory = null; - - - protected ODFPackageValidator( Logger.LogLevel nLogLevel, OdfValidatorMode eMode, OdfVersion aVersion, - SAXParseExceptionFilter aFilter,ODFValidatorProvider aValidatorProvider) { - m_nLogLevel = nLogLevel; - m_eMode = eMode; - m_aFilter = aFilter; - m_aValidatorProvider = aValidatorProvider; - m_aConfigVersion = aVersion; - m_aResult = new ODFValidationResult( aVersion, eMode ); - } - - - protected abstract String getLoggerName(); - - protected abstract String getDocumentPath(); - - protected abstract OdfPackage getPackage( Logger aLogger ); - - protected abstract String getStreamName( String aEntry ); - - - protected boolean validate(PrintStream aOut) throws ODFValidatorException - { - Logger aLogger = - new Logger( getLoggerName(), getDocumentPath(), aOut, m_nLogLevel); - return _validate( aLogger ); - } - - protected boolean validate(Logger aParentLogger) throws ODFValidatorException - { - Logger aLogger = - new Logger( getDocumentPath(), aParentLogger); - return _validate( aLogger ); - } - - - private boolean _validate(Logger aLogger) throws ODFValidatorException - { - boolean bHasErrors = false; - - OdfPackage aPkg = getPackage( aLogger ); - if( aPkg == null ) - return true; - - try - { - String aDocVersion = getVersion( aLogger ); - if( aDocVersion != null ) - aLogger.logInfo( "ODF Version: " + aDocVersion, false ); - OdfVersion aVersion = m_aConfigVersion == null ? OdfVersion.valueOf(aDocVersion,true) : m_aConfigVersion; - - bHasErrors |= validatePre(aLogger, aVersion); - aLogger.logInfo( "Media Type: " + m_aResult.getMediaType(), false); - - bHasErrors |= validateMeta(aLogger, getStreamName( OdfDocument.OdfXMLFile.META.getFileName()), aVersion, true ); - bHasErrors |= validateEntry(aLogger, getStreamName(OdfDocument.OdfXMLFile.SETTINGS.getFileName()), DOCUMENT_SETTINGS, aVersion); - bHasErrors |= validateEntry(aLogger, getStreamName( OdfDocument.OdfXMLFile.STYLES.getFileName()), DOCUMENT_STYLES, aVersion ); - if( m_aResult.getMediaType().equals(ODFMediaTypes.FORMULA_MEDIA_TYPE)) - bHasErrors |= validateMathML(aLogger, getStreamName( OdfDocument.OdfXMLFile.CONTENT.getFileName()), aVersion ); - else - bHasErrors |= validateEntry(aLogger, getStreamName( OdfDocument.OdfXMLFile.CONTENT.getFileName()), DOCUMENT_CONTENT, aVersion ); - bHasErrors |= validatePost(aLogger, aVersion); - } - catch( ZipException e ) - { - aLogger.logFatalError( e.getMessage() ); - } - catch( IOException e ) - { - aLogger.logFatalError( e.getMessage() ); - } - - logSummary( bHasErrors, aLogger ); - - return bHasErrors || aLogger.hasError(); - } - - protected boolean validatePre(Logger aLogger, OdfVersion aVersion ) throws ODFValidatorException, IOException - { - return false; - } - - protected boolean validatePost(Logger aLogger, OdfVersion aVersion ) throws ODFValidatorException, IOException - { - return false; - } - - protected void logSummary( boolean bHasErrors, Logger aLogger ) - { - } - - protected boolean validateEntry(Logger aParentLogger, String aEntryName, String aLocalElementName, OdfVersion aVersion ) throws IOException, ZipException, IllegalStateException, ODFValidatorException - { - Logger aLogger = new Logger(aEntryName,aParentLogger); - XMLFilter aFilter = new ContentFilter(aLogger, aLocalElementName ); - if( (m_eMode == OdfValidatorMode.CHECK_CONFORMANCE && aVersion.compareTo(OdfVersion.V1_1) <= 0) || - m_eMode == OdfValidatorMode.CHECK_EXTENDED_CONFORMANCE ) - { - XMLFilter aAlienFilter = new ForeignContentFilter(aLogger,aVersion,m_aResult); - aAlienFilter.setParent(aFilter); - aFilter = aAlienFilter; - } - Validator aValidator = m_eMode == OdfValidatorMode.VALIDATE_STRICT ? m_aValidatorProvider.getStrictValidator(aParentLogger.getOutputStream(), aVersion) - : m_aValidatorProvider.getValidator(aParentLogger.getOutputStream(),aVersion); - return validateEntry(aFilter, aValidator, aLogger, aEntryName ); - } - - private boolean validateMeta(Logger aParentLogger, String aEntryName, OdfVersion aVersion, boolean bIsRoot) throws IOException, ZipException, IllegalStateException, ODFValidatorException - { - Logger aLogger = new Logger(aEntryName,aParentLogger); - XMLFilter aFilter = new MetaFilter(aLogger, m_aResult ); - if( (m_eMode == OdfValidatorMode.CHECK_CONFORMANCE && aVersion.compareTo(OdfVersion.V1_1) <= 0) || - m_eMode == OdfValidatorMode.CHECK_EXTENDED_CONFORMANCE ) - { - XMLFilter aAlienFilter = new ForeignContentFilter(aLogger,aVersion,m_aResult); - aAlienFilter.setParent(aFilter); - aFilter = aAlienFilter; - } - - Validator aValidator = m_eMode == OdfValidatorMode.VALIDATE_STRICT ? m_aValidatorProvider.getStrictValidator(aParentLogger.getOutputStream(),aVersion) - : m_aValidatorProvider.getValidator(aParentLogger.getOutputStream(),aVersion); - return validateEntry(aFilter, aValidator, aLogger, aEntryName ); - } - - private boolean validateMathML(Logger aParentLogger, String aEntryName, OdfVersion aVersion ) throws IOException, ZipException, IllegalStateException, ODFValidatorException - { - Logger aLogger = new Logger(aEntryName,aParentLogger); - String aMathMLDTDSystemId = m_aValidatorProvider.getMathMLDTDSystemId(aVersion); - if( aMathMLDTDSystemId != null ) - { - // validate using DTD - return parseEntry(new MathML101Filter(aMathMLDTDSystemId, aLogger), aLogger, aEntryName, true); - } - else - { - Validator aMathMLValidator = m_aValidatorProvider.getMathMLValidator(aParentLogger.getOutputStream(),null); - if( aMathMLValidator == null ) - { - aLogger.logInfo( "MathML schema is not available. Validation has been skipped.", false); - return false; - } - return validateEntry( new MathML20Filter(aLogger), aMathMLValidator, aLogger, aEntryName ); - } - } - - - protected boolean validateDSig(Logger aParentLogger, String aEntryName, OdfVersion aVersion ) throws IOException, ZipException, IllegalStateException, ODFValidatorException - { - Validator aValidator=m_aValidatorProvider.getDSigValidator(aParentLogger.getOutputStream(),aVersion); - Logger aLogger = new Logger(aEntryName,aParentLogger); - if ( aValidator == null ) { - aLogger.logWarning("Signature not validated because there is no Signature Validator configured for the selected Configuration"); - return false; - } - - return validateEntry(new DSigFilter(aLogger), aValidator, aLogger, aEntryName ); - } - - protected boolean validateEntry(XMLFilter aFilter, - Validator aValidator, Logger aLogger, - String aEntryName ) throws IOException, ZipException, IllegalStateException, ODFValidatorException - { - OdfPackage aPkg = getPackage(aLogger); - - if( !aEntryName.equals(OdfPackage.OdfFile.MANIFEST.getPath()) && isEncrypted(aEntryName,aLogger) ) - return false; - - InputStream aInStream = null; - try - { - aInStream = aPkg.getInputStream(aEntryName, true); - } - catch( Exception e ) - { - throw new ODFValidatorException( e ); - } - - - if ( aValidator == null ) { - - aLogger.logWarning("no Validator configured in selected Configuration for this file type"); - return false; - } - - - - return aInStream != null ? validate(aInStream, aFilter, aValidator, aLogger ) : false; - } - - private boolean validate(InputStream aInStream, - XMLFilter aFilter, - javax.xml.validation.Validator aValidator, - Logger aLogger ) throws ODFValidatorException - { - SAXParser aParser = getSAXParser(false); - SchemaErrorHandler aErrorHandler = new SchemaErrorHandler(aLogger, m_aFilter ); - - try - { - XMLReader aReader; - if( aFilter != null ) - { - XMLReader aParent = aFilter.getParent(); - if( aParent != null ) - ((XMLFilter)aParent).setParent( aParser.getXMLReader() ) ; - else - aFilter.setParent( aParser.getXMLReader() ) ; - aReader = aFilter; - } - else - { - aReader = aParser.getXMLReader(); - } - - if( m_aFilter != null ) - { - m_aFilter.startSubFile(); - } - aValidator.setErrorHandler(aErrorHandler); - try - { - aValidator.validate( new SAXSource(aReader, - new InputSource( aInStream ) )); - } - catch( RuntimeException e ) - { - aLogger.logFatalError(e.getMessage()); - m_aValidatorProvider.resetValidatorProvider(); - } - } - catch( org.xml.sax.SAXParseException e ) - { - aErrorHandler.fatalErrorNoException(e); - } - catch( org.xml.sax.SAXException e ) - { - aLogger.logFatalError(e.getMessage()); - } - catch( IOException e ) - { - aLogger.logFatalError(e.getMessage()); - } - - aLogger.logSummaryInfo(); - if( m_aResult.hasForeignElements()) - { - Set aForeignElementURISet = m_aResult.getForeignElements().keySet(); - StringBuilder aBuffer = new StringBuilder(); - Iterator aIter = aForeignElementURISet.iterator(); - boolean bFirst = true; - while( aIter.hasNext() ) - { - String aURI = aIter.next(); - aBuffer.setLength(0); - aBuffer.append( m_aResult.getForeignElements().get(aURI) ); - aBuffer.append( " extension elements from the following namespace were found: " ); - aBuffer.append( aURI ); - aLogger.logInfo(aBuffer.toString(), false); - } - } - if( m_aResult.hasForeignAttributes()) - { - Set aForeignAttributeURISet = m_aResult.getForeignAttributes().keySet(); - Iterator aIter = aForeignAttributeURISet.iterator(); - StringBuilder aBuffer = new StringBuilder(); - while( aIter.hasNext() ) - { - String aURI = aIter.next(); - aBuffer.setLength(0); - aBuffer.append( m_aResult.getForeignAttributes().get(aURI) ); - aBuffer.append( " extension attributes from the following namespace were found: " ); - aBuffer.append( aURI ); - aLogger.logInfo(aBuffer.toString(), false); - } - } - return aLogger.hasError(); - } - - protected boolean parseEntry(XMLFilter aFilter, - Logger aLogger, - String aEntryName , boolean bValidating) throws IOException, ZipException, IllegalStateException, ODFValidatorException - { - OdfPackage aPkg = getPackage(aLogger); - - if( isEncrypted(aEntryName,aLogger) ) - return false; - - InputStream aInStream = null; - try - { - aInStream = getPackage(aLogger).getInputStream(aEntryName, true); - } - catch( Exception e ) - { - throw new ODFValidatorException( e ); - } - - return aInStream != null ? parse(aInStream, aFilter, bValidating, aLogger ) : false; - } - - private boolean parse(InputStream aInStream, XMLFilter aFilter, boolean bValidating, Logger aLogger ) throws ODFValidatorException - { - SAXParser aParser = getSAXParser(bValidating); - SchemaErrorHandler aErrorHandler = new SchemaErrorHandler( aLogger, m_aFilter ); - - try - { - XMLReader aReader; - if( aFilter != null ) - { - aFilter.setParent( aParser.getXMLReader() ); - aReader = aFilter; - } - else - { - aReader = aParser.getXMLReader(); - } - if( m_aFilter != null ) - { - m_aFilter.startSubFile(); - } - aReader.setErrorHandler(aErrorHandler); - aReader.parse(new InputSource(aInStream)); - } - catch( org.xml.sax.SAXParseException e ) - { - aErrorHandler.fatalErrorNoException(e); - } - catch( org.xml.sax.SAXException e ) - { - aLogger.logFatalError(e.getMessage()); - } - catch( IOException e ) - { - aLogger.logFatalError(e.getMessage()); - } - - if( bValidating ) - aLogger.logSummaryInfo(); - return aLogger.hasError(); - } - - private boolean isEncrypted( String aEntryName, Logger aLogger ) - { - OdfFileEntry aFileEntry = getPackage(aLogger).getFileEntry(aEntryName); - if ( aFileEntry != null ) - { - EncryptionData aEncData=aFileEntry.getEncryptionData(); - if ( aEncData != null ) { - aLogger.logFatalError( "stream content is encrypted. Validataion of encrypted content is not supported."); - return true; - } - } - return false; - } - - - private SAXParser getSAXParser(boolean bValidating) throws ODFValidatorException - { - SAXParser aParser = null; - if( m_aSAXParserFactory == null ) - { - m_aSAXParserFactory = SAXParserFactory.newInstance(); - m_aSAXParserFactory.setNamespaceAware(true); - } - - try - { - m_aSAXParserFactory.setValidating(bValidating); - aParser = m_aSAXParserFactory.newSAXParser(); - } - catch( javax.xml.parsers.ParserConfigurationException e ) - { - throw new ODFValidatorException( e ); - } - catch( org.xml.sax.SAXException e ) - { - throw new ODFValidatorException( e ); - } - - return aParser; - } - - /** - * get the generator - */ - public String getGenerator() { - return m_aResult.getGenerator(); - } - - private String getVersion(Logger aLogger) throws ODFValidatorException - { - String aVersion = null; - - InputStream aInStream = null; - try - { - OdfPackage aPkg = getPackage(aLogger); - aInStream = aPkg.getInputStream(getStreamName(OdfDocument.OdfXMLFile.META.getFileName()), true); - if( aInStream == null ) - aInStream = aPkg.getInputStream(getStreamName(OdfDocument.OdfXMLFile.SETTINGS.getFileName()), true); - if( aInStream == null ) - aInStream = aPkg.getInputStream(getStreamName(OdfDocument.OdfXMLFile.CONTENT.getFileName()), true); - if (aInStream == null) { return null; } - } - catch( Exception e ) - { - aLogger.logFatalError(e.getMessage()); - } - - SAXParser aParser = getSAXParser(false); - - DefaultHandler aHandler = new VersionHandler(); - - try - { - aParser.parse(aInStream, aHandler); - } - catch( SAXVersionException e ) - { - aVersion = e.getVersion(); - } - catch( org.xml.sax.SAXException e ) - { - aLogger.logFatalError(e.getMessage()); - } - catch( IOException e ) - { - aLogger.logFatalError(e.getMessage()); - } - - return aVersion; - } - -} diff --git a/validator/src/org/odftoolkit/odfvalidator/ODFValidator.java b/validator/src/org/odftoolkit/odfvalidator/ODFValidator.java deleted file mode 100644 index 873c5c4f0b..0000000000 --- a/validator/src/org/odftoolkit/odfvalidator/ODFValidator.java +++ /dev/null @@ -1,386 +0,0 @@ -/************************************************************************ - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER - * - * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also - * obtain a copy of the License at http://odftoolkit.org/docs/license.txt - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************/ - -package org.odftoolkit.odfvalidator; - -import javax.xml.XMLConstants; - -import javax.xml.validation.Schema; -import javax.xml.validation.SchemaFactory; - -import java.io.File; -import java.io.FileFilter; -import java.io.IOException; -import java.io.PrintStream; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import javax.xml.transform.stream.StreamSource; -import javax.xml.validation.Validator; - -public class ODFValidator implements ODFValidatorProvider { - - // Prefix used to distinguish internal resources from external ones - - // Loglevel - private Logger.LogLevel m_nLogLevel; - - // Validator provider - private SchemaFactory m_aRNGSchemaFactory = null; - private SchemaFactory m_aXSDSchemaFactory = null; - - // User provided Configuration - protected Configuration m_aConfig = null; - - // User provided ODF version - protected OdfVersion m_aVersion = null; - - // User provided preference for using Math DTD - protected boolean m_bUseMathDTD = false; - - // Validatore and configuration cache - private HashMap m_aSchemaMap = null; - private HashMap m_aConfigurationMap = null; - - // Generator from last validateFile or validateStream call - private String m_aGenerator = ""; - - /** Creates a new instance of Validator */ - public ODFValidator( Configuration aConfig, - Logger.LogLevel nLogLevel, - OdfVersion aVersion, - boolean bUseMathDTD ) throws ODFValidatorException { - - m_nLogLevel = nLogLevel; - m_aConfig = aConfig; - m_aVersion = aVersion; - m_bUseMathDTD = bUseMathDTD; - } - - public boolean validate(PrintStream aOut, Configuration aConfig, OdfValidatorMode eMode ) throws ODFValidatorException - { - List aFileNames = aConfig.getListPropety(Configuration.PATH); - String aExcludeRegExp = aConfig.getProperty(Configuration.EXCLUDE); - String aRecursive = aConfig.getProperty(Configuration.RECURSIVE); - boolean bRecursive = aRecursive != null ? Boolean.valueOf(aRecursive) : false; - String aFilterFileName = aConfig.getProperty(Configuration.FILTER); - - return validate(aOut, aFileNames, aExcludeRegExp, eMode, bRecursive, aFilterFileName ); - } - - - public boolean validate(PrintStream aOut, List aFileNames, String aExcludeRegExp, - OdfValidatorMode eMode, boolean bRecursive, - String aFilterFileName ) throws ODFValidatorException - { - boolean bRet = false; - - SAXParseExceptionFilter aFilter = null; - if( aFilterFileName != null && aFilterFileName.length() != 0 ) - aFilter = new ValidationOOoTaskIdErrorFilter( new File(aFilterFileName), aOut ); - - FileFilter aFileFilter = new ODFFileFilter( aExcludeRegExp, bRecursive ); - - Iterator aIter = aFileNames.iterator(); - while( aIter.hasNext() ) - { - File aFile = new File( aIter.next() ); - bRet |= aFile.isDirectory() ? validateDir(aOut, aFile, aFileFilter, eMode, aFilter ) - : validateFile(aOut, aFile, eMode, aFilter ); - } - - return bRet; - } - - public boolean validate(PrintStream aOut, InputStream aInputStream, String aBaseURI, - OdfValidatorMode eMode, - SAXParseExceptionFilter aFilter ) throws ODFValidatorException - { - return validateStream( aOut, aInputStream, aBaseURI, eMode, aFilter ); - } - - - private boolean validateDir(PrintStream aOut, final File aDir, FileFilter aFileFilter, OdfValidatorMode eMode, SAXParseExceptionFilter aFilter ) throws ODFValidatorException - { - boolean bRet = true; - File[] aFiles = aDir.listFiles( aFileFilter ); - - if( aFiles != null ) - { - for( int i=0; iAfter validation the getGenerator method can be called to get the generator of the validated file

- */ - public boolean validateFile(PrintStream aOut, File aDocFile, OdfValidatorMode eMode, SAXParseExceptionFilter aFilter ) throws ODFValidatorException - { - ODFFileValidator aFileValidator = - new ODFFileValidator( aDocFile, m_nLogLevel, eMode, m_aVersion, aFilter, this ); - - boolean result=aFileValidator.validate(aOut); - - m_aGenerator=aFileValidator.getGenerator(); - return result; - } - - /** - * validate the input Stream - * - *

After validation the getGenerator method can be called to get the generator of the validated file

- */ - public boolean validateStream(PrintStream aOut, InputStream aInputStream, String aBaseURI, - OdfValidatorMode eMode, - SAXParseExceptionFilter aFilter ) throws ODFValidatorException - { - ODFStreamValidator aStreamValidator = - new ODFStreamValidator( aInputStream, aBaseURI, m_nLogLevel, eMode, m_aVersion, aFilter, this ); - - boolean result=aStreamValidator.validate(aOut); - m_aGenerator=aStreamValidator.getGenerator(); - - return result; - } - - public Validator getManifestValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException - { - return getValidatorForSchema( aOut, getSchemaFileName(Configuration.MANIFEST_SCHEMA,aVersion)); - } - - public Validator getValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException - { - return getValidatorForSchema( aOut, getSchemaFileName(Configuration.SCHEMA,aVersion)); - } - - public Validator getStrictValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException - { - return getValidatorForSchema( aOut, getSchemaFileName(Configuration.STRICT_SCHEMA,aVersion)); - } - - public Validator getMathMLValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException - { - return getValidatorForSchema( aOut, getSchemaFileName(Configuration.MATHML2_SCHEMA,aVersion)); - } - - public String getMathMLDTDSystemId( OdfVersion aVersion ) throws ODFValidatorException - { - String aDTD = null; - if( m_bUseMathDTD ) - { - Configuration aConfig = - m_aConfig != null ? m_aConfig : getConfiguration( aVersion ); - - aDTD = aConfig.getProperty(Configuration.MATHML_SCHEMA); - if( m_aConfig == null && aDTD != null && aDTD.length() > 0 ) - aDTD = InternalResources.createInternalResourceIdentifier(aDTD); - } - - return aDTD; - } - - public Validator getDSigValidator(PrintStream aOut, OdfVersion aVersion) throws ODFValidatorException - { - return getValidatorForSchema( aOut, getSchemaFileName(Configuration.DSIG_SCHEMA,aVersion)); - } - - public void resetValidatorProvider() - { - m_aRNGSchemaFactory = null; - m_aXSDSchemaFactory = null; - m_aSchemaMap = null; - } - - private String getSchemaFileName( String aConfigName, OdfVersion aVersion) throws ODFValidatorException - { - Configuration aConfig = - m_aConfig != null ? m_aConfig : getConfiguration( aVersion ); - - String aFileName = aConfig.getProperty(aConfigName); - if( m_aConfig == null && aFileName != null && aFileName.length() > 0 ) - aFileName = InternalResources.createInternalResourceIdentifier(aFileName); - - return aFileName; - } - - private Configuration getConfiguration( OdfVersion aVersion ) throws ODFValidatorException - { - if( m_aConfigurationMap == null ) - m_aConfigurationMap = new HashMap(); - - Configuration aConfig = m_aConfigurationMap.get(aVersion); - if( aConfig == null) - { - String aConfigName = null; - if( aVersion == null || aVersion==OdfVersion.V1_2 ) - aConfigName = "/config/v12.properties"; - else if( aVersion==OdfVersion.V1_1 ) - aConfigName = "/config/v11.properties"; - else if( aVersion==OdfVersion.V1_0 ) - aConfigName = "/config/v10.properties"; - else - throw new ODFValidatorException( "unsupported ODF version: ".concat(aVersion.toString()) ); - - InputStream aInStream = getClass().getResourceAsStream(aConfigName); - if( aInStream == null ) - throw new ODFValidatorException( "Internal configuration file is missing: ".concat(aConfigName)); - - aConfig = new Configuration(); - try - { - aConfig.loadFromXML( aInStream ); - aInStream.close(); - } - catch( IOException e ) - { - throw new ODFValidatorException( e ); - } - - m_aConfigurationMap.put( aVersion, aConfig ); - } - - return aConfig; - } - - private Validator getValidatorForSchema( PrintStream aOut, String aSchemaFileName ) throws ODFValidatorException - { - if( m_aSchemaMap == null ) - m_aSchemaMap = new HashMap(); - - Schema aSchema = m_aSchemaMap.get(aSchemaFileName); - if( aSchema == null ) - { - aSchema = createSchema( aOut, aSchemaFileName ); - m_aSchemaMap.put( aSchemaFileName, aSchema); - } - - return aSchema.newValidator(); - } - - private Schema createSchema(PrintStream aOut, String aSchemaFileName ) throws ODFValidatorException - { - Logger aLogger = new Logger(aSchemaFileName, "", aOut, m_nLogLevel); - - if( aSchemaFileName == null || aSchemaFileName.length() == 0 ) - return null; - - String aSchemaLanguage = - aSchemaFileName.endsWith("xsd") ? XMLConstants.W3C_XML_SCHEMA_NS_URI - : XMLConstants.RELAXNG_NS_URI; - SchemaFactory aSchemaFactory = getSchemaFactory( aSchemaLanguage ); - SchemaErrorHandler aErrorHandler = new SchemaErrorHandler( aLogger, null ); - aSchemaFactory.setErrorHandler( aErrorHandler ); - aSchemaFactory.setResourceResolver(new SchemaResourceResolver(aLogger,aSchemaFileName)); - Schema aSchema = null; - - StreamSource aSource = null; - if( InternalResources.isInternalResourceIdentifer(aSchemaFileName) ) - { - String aPath = InternalResources.getResourcePath(aSchemaFileName); - InputStream aInStream = getClass().getResourceAsStream(aPath); - if( aInStream == null ) - throw new ODFValidatorException( "Internal schema file is missing: ".concat(aPath)); - - aSource = new StreamSource(aInStream,aSchemaFileName); - } - else - { - File aFile=new File(aSchemaFileName); - if ( ! aFile.exists() ) { - aLogger.logFatalError( aSchemaFileName+": file does not exist" ); - return null; - } - aSource = new StreamSource(aFile); - } - - boolean bError = false; // Workaround: MSV seems not to call error handler - try - { - aSchema = aSchemaFactory.newSchema( aSource ); - } - catch( org.xml.sax.SAXParseException e ) - { - aLogger.logFatalError( e ); - } - catch( org.xml.sax.SAXException e ) - { - aLogger.logFatalError( e.getMessage() ); - } - - if( aLogger.hasError() ) - { - throw new ODFValidatorException( aSchemaFileName, "", "Schema has validation errors."); - } - - aLogger.logInfo( "parsed." , false); - return aSchema; - } - - private SchemaFactory getSchemaFactory( String aSchemaLanguage ) throws ODFValidatorException - { - boolean bRNG = aSchemaLanguage.equals(XMLConstants.RELAXNG_NS_URI); - SchemaFactory aSchemaFactory = bRNG ? m_aRNGSchemaFactory - : m_aXSDSchemaFactory; - if( aSchemaFactory == null ) - { - - try - { - aSchemaFactory = SchemaFactory.newInstance( aSchemaLanguage ); - } - catch( IllegalArgumentException e ) - { - throw new ODFValidatorException( (bRNG ? "Relax-NG" : "W3C XML Schema") + " support is not installed: " + e.getMessage() ); - } - if( bRNG ) - m_aRNGSchemaFactory = aSchemaFactory; - else - m_aXSDSchemaFactory = aSchemaFactory; - } - - return aSchemaFactory; - } - - /** - * get Generator from last validateFile or validateStream call - */ - public String getGenerator() { - return m_aGenerator; - } - - -} diff --git a/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java b/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java new file mode 100644 index 0000000000..173b6844ad --- /dev/null +++ b/validator/src/test/java/org/odftoolkit/odfvalidator/InvalidPackageTest.java @@ -0,0 +1,110 @@ +/************************************************************************ + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER + * + * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. + * + * Use is subject to license terms. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also + * obtain a copy of the License at http://odftoolkit.org/docs/license.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * + * See the License for the specific language governing permissions and + * limitations under the License. + * + ************************************************************************/ +package org.odftoolkit.odfvalidator; + +import junit.framework.Assert; +import org.junit.Test; + +/** Test some invalid packages. + */ +public class InvalidPackageTest extends OdfValidatorTestBase { + + @Test + public void validatePackage1() { + String output = ""; + try { + String name = "testInvalidPkg1.odt"; + output = doValidation(name, null); + } catch (Throwable t) { + t.printStackTrace(); + Assert.fail(t.toString()); + } + Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: The file 'mimetype' is not the first file in the ODF package")); + Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: The file 'mimetype' shall not be compressed")); + Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: There shall be no extra field for the 'mimetype' file")); + Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml: Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); + Assert.assertTrue(output.contains("testInvalidPkg1.odt: Info: 7 errors, 10 warnings")); + } + + @Test + public void validatePackage1_V1_1() { + String output = ""; + try { + String name = "testInvalidPkg1.odt"; + output = doValidation(name, OdfVersion.V1_1); + } catch (Throwable t) { + t.printStackTrace(); + Assert.fail(t.toString()); + } + Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Warning: The file 'mimetype' is not the first file in the ODF package")); + Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: The file 'mimetype' shall not be compressed")); + Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: There shall be no extra field for the 'mimetype' file")); + Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml: Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); + Assert.assertTrue(output.contains("testInvalidPkg1.odt: Info: 10 errors, 11 warnings")); + } + + @Test + public void validatePackage2() { + String output = ""; + try { + String name = "testInvalidPkg2.odt"; + output = doValidation(name, null); + } catch (Throwable t) { + t.printStackTrace(); + Assert.fail(t.toString()); + } + Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype: Error: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file")); + Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml: Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); + Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml: Error: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package")); + Assert.assertTrue(output.contains("testInvalidPkg2.odt: Info: 5 errors, 10 warnings")); + } + + @Test + public void validatePackage2_V1_1() { + String output = ""; + try { + String name = "testInvalidPkg2.odt"; + output = doValidation(name, OdfVersion.V1_1); + } catch (Throwable t) { + t.printStackTrace(); + Assert.fail(t.toString()); + } + Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype: Warning: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file")); + Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml: Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); + Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml: Warning: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package")); + Assert.assertTrue(output.contains("testInvalidPkg2.odt: Info: 7 errors, 12 warnings")); + } + + @Test + public void validatePackage3() { + String output = ""; + try { + String name = "testInvalidPkg3.odt"; + output = doValidation(name, null); + } catch (Throwable t) { + t.printStackTrace(); + Assert.fail(t.toString()); + } + Assert.assertTrue(output.contains("Error: The ODF package 'testInvalidPkg3.odt' shall contain the 'META-INF/manifest.xml' file")); + Assert.assertTrue(output.contains("testInvalidPkg3.odt: Info: 3 errors, no warnings")); + } +} diff --git a/validator/test/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java b/validator/src/test/java/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java similarity index 64% rename from validator/test/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java rename to validator/src/test/java/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java index 97ae3e8057..d16d4c1cbe 100644 --- a/validator/test/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java +++ b/validator/src/test/java/org/odftoolkit/odfvalidator/OdfValidatorTestBase.java @@ -38,11 +38,25 @@ String doValidation(String aFileName, OdfVersion aVersion) throws Exception { ByteArrayOutputStream aOut = new ByteArrayOutputStream(); PrintStream aPOut = new PrintStream(aOut); InputStream aIn = getClass().getClassLoader().getResourceAsStream(aFileName); -// aValidator.validateFile(aPOut, f, OdfValidatorMode.VALIDATE, null); aValidator.validateStream(aPOut, aIn, aFileName, OdfValidatorMode.VALIDATE, null); - System.out.println(aOut.toString()); return aOut.toString(); } - + String doValidation(String aFileName, OdfVersion aVersion, OdfValidatorMode odfValidatorMode) throws Exception { + return doValidation(aFileName, aVersion, odfValidatorMode, false); + } + + String doValidation(String aFileName, OdfVersion aVersion, OdfValidatorMode odfValidatorMode, boolean htmlOutput) throws Exception { + ODFValidator aValidator = new ODFValidator(null, Logger.LogLevel.INFO, htmlOutput, aVersion, true); + ByteArrayOutputStream aOut = new ByteArrayOutputStream(); + PrintStream aPOut = new PrintStream(aOut); + InputStream aIn = getClass().getClassLoader().getResourceAsStream(aFileName); + ValidationMessageCollectorErrorFilter filter = new ValidationMessageCollectorErrorFilter(); + try { + aValidator.validateStream(aPOut, aIn, aFileName, odfValidatorMode, filter); + } catch (Exception e) { + e.printStackTrace(aPOut); + } + return aOut.toString(); + } } diff --git a/validator/test/org/odftoolkit/odfvalidator/ValidTest.java b/validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java similarity index 51% rename from validator/test/org/odftoolkit/odfvalidator/ValidTest.java rename to validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java index f9887825dc..dc89ee44c6 100644 --- a/validator/test/org/odftoolkit/odfvalidator/ValidTest.java +++ b/validator/src/test/java/org/odftoolkit/odfvalidator/ValidTest.java @@ -23,6 +23,7 @@ package org.odftoolkit.odfvalidator; import junit.framework.Assert; +import org.junit.Ignore; import org.junit.Test; /** Test some invalid packages. @@ -31,6 +32,24 @@ public class ValidTest extends OdfValidatorTestBase { @Test public void validate1() { + String output = ""; + try { + String name = "empty.odt"; + output = doValidation(name, OdfVersion.V1_0, OdfValidatorMode.VALIDATE_STRICT, true); + } catch (Throwable t) { + t.printStackTrace(); + Assert.fail(t.toString()); + } + if(output.contains("Exception")){ + System.out.println("OUTPUT:" + output); + Assert.fail("An exception occured during validation!"); + } + Assert.assertTrue(output.contains("G`6qq{>%>5?2{z=&Ip#wARr(F!UGBhp`dUW&==+efP;`wBmjr00~EWe?cg;B#NukIq2dk|gNBM_5oZ8=V{_(rv>dK71t9%+e@6}7R*?+ZoNfBdo} zHYS&PpC}n3d)9^9Q_58=tIKH66PH&Q0K7%SuR}@QE?@2{mYz)@c)MABa%B*vRTO8? zPMSg>zsvQ|_Zg!NRjq!kgi}<<$6=z6J*%B_-&Q+aQw7UDtWQl5JOYXDT8*>1H@(hj zP*~SE>*%kvnMPaFHgNG-PM}&}Hs{D^|6Mk-aaL3Sl^xS!+UMtQG-aBuK8jt52Sh?|l1=Z{?e}V!IJmMOfQy*P6VR z{#T%#JB*74SHpnUH7-(;MXJw2!)^ND)zdOmK>U{Pu6kn8`a}<_hL8fsNpcul5(Er>t~XvKo(JMEER1=YYPSyw+1Xd zOVeIbwPzA=Rm(`oi`KM<;%R!UUQ2#&AY3K~o@MQ<*xMwv5N>@R0gW|~(!0|B4pLC* zr!h4`m8LH5;jc9;m=lbXCPQslKDIQRGBWILGcdds8TfvyNsjmN_s)p-<}QHkYmK5~ z8Hp}c*s|41m4pEHNF<~iW;4&aR-sxSbLxKZQasP#XNk_lg7Ecb!vE*`i(fsnN7iFa&cEc$n%QWnUt>7vP#vl*!;7r=h4L5H4 zB0kV-l}5J!P2#tFKAO)f)XQ>~zm$UpMVXREJnscvi*R_a*#2TpDUT;T+WDTBr=l`% z&088dZLTi?laKdt4Rr~LrtXVr=0Srge3>ZW26(Cg+J``i1q* zU)JwoJoO+>WH1|h-nnfkh^rs=z6G#Yx?ud8<~-Wj=k1 z;qd7p>lbgBt-Y@SG-h3r?R%61n+GQ5d2ZJnTpkk=-r4AGFcWszn{Znp`0+mY+crdk z_6`yi-~mBm-W;PBbz?tBQ8sK?Fpvy03%Au~*w!u+Xb$IMC(yWds~cbo8__Xq(`dbY zvNA8vqZyHM=JDyrLEqTuL|kOVcV}9{?dr!MpPh88vW4senou+PT5L~l&SWHSY}_Az ze{ExXIov`h2C9`pb*k;w)M?^sgNU@}Q#L|mUen16_F_VXmNPQkjsneR1hrs%!nTX~ z=8$twOUrsB%jK;TGFjxUmf6}{=9kma_wo}}Oz3-@g2mOe=*&85fk;LYD{}{JdGoKv z>7iBu5lJoG8xM=p&81CRr9( zgKR=*9+zwrhh2tps7Rz@#6~#K@Ox&Lc2kuHX~ZjfeifIoJPWRJluSKM-xHWW&DxWz zveHUVwBh06Dr?KjikWc2#&{!xfCw-*J;bcW!%Drr{ z>vbcJ7bFV}($-Iv<|`5mEra@UbJgzLt7(N%_9njFP)qnKv>-91S891-zbTYbZZ460 zoG9xK{KNV5V46?gH$|Ew zd$^j+uSkJAh;NX^$9?pM3KR(nd=R5+T211vRwBYpKd(`NQ&H_h4~~8+r6x*XP_9-e z!zfh?vhZbpR6v90@H*L|;(J^^X{ByLs^KiyS?Khtpe0lLsRyr&U+IOpN(Ai80JZz4ly%9nq>E8!>b4L<1`GAZPnhEd z4XKBdhvLRUzFm}|_zu-eklYO7!zJd>UDs6e9_2BLyhl{pU0Gar=gNTiaGJ8%Sfm&Q z1d3;_a>MLJ4ff7`+-`!?k^Fg(k|Y(AhEu~HvZO;e&pk}0gxK7EFUdSdMZq{shmpk3UPJ3X{Wk{O3 z5B6)4K5O`F&9ll$ciwzCHPsJfGm_fi;viT_5a5Df9le3s>HB)U8KW1xsywM@_#0#W zVsRtJ1gDsvn0LS@rz2!OH?z6H<0tATGb41BUTuso^!ET*>qq?FnK!tw@~KIfah-3~ zABb-9ZyW!pmfY-u!by9(EX`|?p{o8SA4uI{mO3UDS+MCI3ENxe^^m%Qz_lH?^?y*1Onkdz#vGNg7KxxSey|^!k7b zfd$Olhqa%tve~$;|C*==o24e#)3FR=Y};{Uk~Fj3L;L*hJ>3il6SRoJL6D+4N$$Y- zbepeE6mlu|irn>Ct-M)_FqB9pJ}@ZWSAbB<`bA58L$z4m>;|ri^mX#iz}*RvaXZF# zzm*TzcdT^?UDc~(y8SF}tnTeKV|5GXUwg`F!}2-RB5d`NTE~AB=HZ3CGhG3y{oTXiV4tQ(4eyEK&kQn0k@+((HPwc9ebc1#SJca#=hlDV znx`b2-dyHM*Q;7cOq`RUF}>p$s9g2pB0d&B)g+C%ai~tNQqHF|oyS4yQV99}MqOE! zsR~tf1KZ32E9y}G=2~arF9}cgbh4c(^GYX3>BME4l%DE*RcF3PZCO2Iq0l5W_o=BY zu3w5jN3jC_ZKQ8 ztDDq%NX$qVee0aHVj)lFrHfvkzFfV;n=$^42et2C9iR_Fghai9ufWZOSXh2%j}Jya zf*$p;_Ih1BEG*3DFsy~3K$sW5f-?Gx!x!R>LXjT|f?#GZKmyb70?l3BrgMmCDNI4W(?qql@camD} zP|%Mae-9|kU6IQbg+j;yfqs5|06%d6+}i~xDl01sJRIfvDar}_iw@!A?Quxu1O}pG zVN3vy1d0Mgfk(6$4gbGNVQ5dP1c$?a3BuU$!^A^zVj?0Ez#sQVl3cu6a3F%eNwVG&tj5eZXKNjXt*IS~9uQ$L+y{nId#)p2};qQ>JN?Z4C>fecN}K$2+kXas=K%+R(Wi7J(LbnvcK@Jtfxv#GgOm)= zMtMN&4bV%)-r(?|1&Ra2c`TqXaWM`|?~hK*GO|Z!WH7D;ii?YQO7p1sKs}sF#el-VfQ>t%3I~ z?+&^2kdGWJ`|c|jD5o~a*g5$n(?1}4-dyFkwmECDoEm$sIOyQg_X8mNV}rXkmX@12 zZt6)(E8|@Y&2Odb{hlpVShKHh&t?(smmes5-VWWX3G~@nol3vC>-S}S&1dJ!fpW)g zgZol4oLy;YQ&Rrm<$=YM3aR-n*2Z+_ODnLRv3ubwc5M5ri!HC(@7}XVx`moCe8?oT z-dq3FIJuWfHeE@7S2ksJU)!z>w4nE)dTDHU%sS(4$ksya`u#>b#r^NwQ}r3LeOa*^ zr=nPaz|dXJ`^9y6zOQ13GsT`YmNW#fZEsI``Z)!`4aVg6p28I}wkKcFr-nW%OjbPD zUi#9 zD|Ib~WafXJ$&g=vlNqu-1Icf{D;_YDau7-Sy)$*Rvck%5Z@FAzWi&{7=HYDd{#Je- z%-SQm?-BUMvz~@M+owBOBkNNiOde;IBxjY+)cNnME{?{Y5^lJye4&UEr&_zE^{ z@^4GEPdKIVip^r-APGz>Aqm%aNULGb{Wc@cHHvU2|*#g0b8GChQ=><(cca)vA6A= zZ@C^zU&W%TvW%aJpNM=XPf~CbCv7$TT#KRJd4oz?fTV&0RzSCl-rTho3pF~kDpCjh zriRB)t_cpQLv#AW1M29%vY0Vz#?MQ7vSiUVzNvfu(Eg4+3#SyHZl`<23pL3s5`IO4 z(+?oCC@xe|Dx1_sNzCcdb6}Bn?fPLK(II83W@7E(=yLp`$;*XZ{R|o8kupiOpKVfB zr6zQtTXjpRfEBW$ujK>osrX)6v8tEh9CK#_4L{B?QjAaPjLnmoLV(!`{{B?@>@Oo3 z&%OyY(YIC=af*!Qp6Q7pzQ7RXLwFr=c|#pXN8E|3u;c}Tly|ISUF=2P{Uy~mDKmQH z;LjN{%MrMm5whH+3Piq9YK-4^UM}3ty?nbEr#gDeF?Z=3m43J;uQ}rWpts1L0mW2Y zhwaotTK$XIBq4IA^Vz;RJk_^=AgBI*5{oAJ0v4)otoN%)VnlMz-~p&5^Rk=sC~_}} z^N&-yN*E1Xsm(wyM%*2){ z)SGf{cQ;blEiS^nM#VSL7LP z=*_I+gb&6VuVD4!na^02xpEL+3!lTY$ki&&lHd>W<-6&~sF4uQ%w*J%03f8QYQHmP zlY13lF>E**#wIEb4g4-jem`4DDxBWY={2~jNxOr? ziIwRt3>oR_NJQMYL}F4p{hFvYg^?L&@O!Y<8*$1ef<3m&2_t^-g%QHsHeISoza4uC`#>#|Fy+x2}H;oW0{hFw%7eyt{T0-yOjD=rKIe-CwlV-XBny^uH9WM z7r0s5fj2_zH;dHXl9ysIqMc>G@+E$Eo|&T1*fO@7WSYv*-Jz)ha_dRo)glM_%uP@6 z(`o7%TR>#kGF$#x?iBF{*5@SH#XVSFwvxB)d?T5#Z!>?YyBN2vpA%DP?RDlr5HdA! z&Ddi1+*hrS51$JJwQ0+LMf69*SS8a}SquHuMWgmY9iG2Z(W5jh!#i_(Q@uqYaxSmH zP+V<)nCmw4HL0vrDPidc)#3H63-DTk9OW^^%GaS@r^l! z$%SG7NjnmPX0 zzDkSUSM@bbRfV-LoCE&KGT8$mfxeu zA^A!*c|%q~-#R7Ny-p)KI+3oFvu_itWaX?CqW4lX{9N}$j@+q@VUU}mNz+8^`?9l^&#HsBEm*98JV8pBTF++s)04Lue)Vj|3jWQv zRT7dA!eGXL2Q&j)7Lv*#71Y=(Q%@oE;bGg*1xNx=ovcEj%uZUa-AT-!qoSUn?CyT&*J9E zqUe$I<1*UGvgk2R*k5q|Q6&9e%3%(w$E_WG`KNNnCDS9-{##W1-9#L;EB{0}Swj6c z4yK5D+~od-^IJ*v-$=h}g!&88$r9_oaentt@n3L`ORoQ4l!?Ef9G77Kje;q{9ybQ` zy7<$}|0&7-06VINoU9^Yin7Pe3=IZ8F3}#Zn7T@p__#jbN7GFl+p13 literal 0 HcmV?d00001 diff --git a/validator/xslt/extract_schema.xsl b/validator/src/test/resources/extract-schema.xsl similarity index 100% rename from validator/xslt/extract_schema.xsl rename to validator/src/test/resources/extract-schema.xsl diff --git a/validator/misc/filter.rng b/validator/src/test/resources/filter.rng similarity index 100% rename from validator/misc/filter.rng rename to validator/src/test/resources/filter.rng diff --git a/validator/test-resources/testInvalidPkg1.odt b/validator/src/test/resources/testInvalidPkg1.odt similarity index 100% rename from validator/test-resources/testInvalidPkg1.odt rename to validator/src/test/resources/testInvalidPkg1.odt diff --git a/validator/test-resources/testInvalidPkg2.odt b/validator/src/test/resources/testInvalidPkg2.odt similarity index 100% rename from validator/test-resources/testInvalidPkg2.odt rename to validator/src/test/resources/testInvalidPkg2.odt diff --git a/validator/test-resources/testInvalidPkg3.odt b/validator/src/test/resources/testInvalidPkg3.odt similarity index 100% rename from validator/test-resources/testInvalidPkg3.odt rename to validator/src/test/resources/testInvalidPkg3.odt diff --git a/validator/test-resources/testValid1.odt b/validator/src/test/resources/testValid1.odt similarity index 100% rename from validator/test-resources/testValid1.odt rename to validator/src/test/resources/testValid1.odt diff --git a/validator/test/org/odftoolkit/odfvalidator/InvalidPackageTest.java b/validator/test/org/odftoolkit/odfvalidator/InvalidPackageTest.java deleted file mode 100644 index e0f63274d2..0000000000 --- a/validator/test/org/odftoolkit/odfvalidator/InvalidPackageTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/************************************************************************ - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER - * - * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also - * obtain a copy of the License at http://odftoolkit.org/docs/license.txt - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - ************************************************************************/ - -package org.odftoolkit.odfvalidator; - -import junit.framework.Assert; -import org.junit.Test; - -/** Test some invalid packages. - */ -public class InvalidPackageTest extends OdfValidatorTestBase { - - @Test - public void validatePackage1() { - String output = ""; - try { - String name = "testInvalidPkg1.odt"; - output = doValidation(name, null); - } catch (Throwable t) { - t.printStackTrace(); - Assert.fail(t.toString()); - } - Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:Error:The file 'mimetype' is not the first file in the ODF package")); - Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:Error:The file 'mimetype' shall not be compressed")); - Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:Error:There shall be no extra field for the 'mimetype' file")); - Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:Error:The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); - Assert.assertTrue(output.contains("testInvalidPkg1.odt:Info:7 errors, 10 warnings")); - } - - @Test - public void validatePackage1_V1_1() { - String output = ""; - try { - String name = "testInvalidPkg1.odt"; - output = doValidation(name, OdfVersion.V1_1); - } catch (Throwable t) { - t.printStackTrace(); - Assert.fail(t.toString()); - } - Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:Warning:The file 'mimetype' is not the first file in the ODF package")); - Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:Error:The file 'mimetype' shall not be compressed")); - Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype:Error:There shall be no extra field for the 'mimetype' file")); - Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml:Error:The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); - Assert.assertTrue(output.contains("testInvalidPkg1.odt:Info:10 errors, 11 warnings")); - } - - @Test - public void validatePackage2() { - String output = ""; - try { - String name = "testInvalidPkg2.odt"; - output = doValidation(name, null); - } catch (Throwable t) { - t.printStackTrace(); - Assert.fail(t.toString()); - } - Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:Error:The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file")); - Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:Error:The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); - Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:Error:The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package")); - Assert.assertTrue(output.contains("testInvalidPkg2.odt:Info:5 errors, 10 warnings")); - } - - @Test - public void validatePackage2_V1_1() { - String output = ""; - try { - String name = "testInvalidPkg2.odt"; - output = doValidation(name, OdfVersion.V1_1); - } catch (Throwable t) { - t.printStackTrace(); - Assert.fail(t.toString()); - } - Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype:Warning:The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file")); - Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:Error:The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); - Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml:Warning:The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package")); - Assert.assertTrue(output.contains("testInvalidPkg2.odt:Info:7 errors, 12 warnings")); - } - - @Test - public void validatePackage3() { - String output = ""; - try { - String name = "testInvalidPkg3.odt"; - output = doValidation(name, null); - } catch (Throwable t) { - t.printStackTrace(); - Assert.fail(t.toString()); - } - Assert.assertTrue(output.contains("Error:The ODF package 'testInvalidPkg3.odt' shall contain the 'META-INF/manifest.xml' file")); - Assert.assertTrue(output.contains("testInvalidPkg3.odt:Info:3 errors, no warnings")); - } - -} diff --git a/validator/xslt/create_config.xsl b/validator/xslt/create_config.xsl deleted file mode 100644 index 7e9a3294d4..0000000000 --- a/validator/xslt/create_config.xsl +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -