aboutsummaryrefslogtreecommitdiffstats
path: root/poi-ooxml-full
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2021-04-07 21:40:33 +0000
committerAndreas Beeker <kiwiwings@apache.org>2021-04-07 21:40:33 +0000
commitb6aee1ef6d3e92a28ffd4b5c03e677b63b43747f (patch)
treead9c7b312976c4ed113a7f3b5b4757bfe1b3eee6 /poi-ooxml-full
parent6458acb931a0cc17b2d5ed205a1b3fbbb78b9193 (diff)
downloadpoi-b6aee1ef6d3e92a28ffd4b5c03e677b63b43747f.tar.gz
poi-b6aee1ef6d3e92a28ffd4b5c03e677b63b43747f.zip
65206 - Migrate ant / maven to gradle build
compile / jar / test of mrJars don't include ants build.xml anymore rename directories to match project and maven artifact names refactor artifacts - so each project has one artifact replace static references in hssf/dev tests with junit5 constructs, which had problems in parallel tests increase gradle heap to 4gb because of OOM - maybe less would also work git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1888488 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi-ooxml-full')
-rw-r--r--poi-ooxml-full/build.gradle179
-rw-r--r--poi-ooxml-full/src/main/java9/module-info.classbin0 -> 1757 bytes
-rw-r--r--poi-ooxml-full/src/main/java9/module-info.java54
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionCertificate.xsd39
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionCertificate.xsdconfig24
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionInfo.xsd259
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionInfo.xsdconfig25
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionPassword.xsd66
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionPassword.xsdconfig24
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/signatureInfo.xsd103
-rwxr-xr-xpoi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Strict.zipbin0 -> 93849 bytes
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zipbin0 -> 105808 bytes
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zipbin0 -> 3037 bytes
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/XAdES.xsd466
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/XAdESv141.xsd15
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/markup-compatibility.xsd95
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/ooxmlSchemas.xsdconfig50
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/vmlDrawing.xsd36
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/xmldsig-core-schema.xsd318
-rw-r--r--poi-ooxml-full/src/main/xmlschema/org/apache/poi/xdgf/visio.xsd829
20 files changed, 2582 insertions, 0 deletions
diff --git a/poi-ooxml-full/build.gradle b/poi-ooxml-full/build.gradle
new file mode 100644
index 0000000000..cc9fc88b53
--- /dev/null
+++ b/poi-ooxml-full/build.gradle
@@ -0,0 +1,179 @@
+import java.util.regex.Pattern
+
+/* ====================================================================
+ 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.
+==================================================================== */
+
+
+plugins {
+ id 'java'
+ id 'maven-publish'
+ id 'java-library'
+}
+
+final String MODULE_NAME = 'org.apache.poi.ooxml.schemas'
+final String JAVA9_SRC = 'src/main/java9'
+final String JAVA9_OUT = "${buildDir}/classes/java9/main/"
+final String VERSIONS9 = 'META-INF/versions/9'
+final String BEANS_SRC = "${buildDir}/generated-sources"
+final String BEANS_RES = "${buildDir}/generated-resources"
+
+sourceSets {
+ main {
+ // TypeSystemHolder.class is in the resources
+ output.dir(BEANS_RES, builtBy: 'generate_beans')
+ compileClasspath += files(BEANS_RES)
+ if (JavaVersion.current() != JavaVersion.VERSION_1_8) {
+ output.dir(JAVA9_OUT, builtBy: 'cacheJava9')
+ }
+ java {
+ srcDirs = [BEANS_SRC]
+ }
+ }
+}
+
+dependencies {
+ api "org.apache.xmlbeans:xmlbeans:${xmlbeansVersion}"
+// implementation "org.apache.logging.log4j:log4j-api:${log4jVersion}"
+ runtimeOnly "org.apache.logging.log4j:log4j-core:${log4jVersion}"
+}
+
+final Pattern MODULE_REGEX = ~'\\.jar$'
+final List MAIN_MODULE_PATH = sourceSets.main.runtimeClasspath.findAll{ it.path =~ MODULE_REGEX }.collect{ it.parent }.unique()
+
+compileJava {
+ dependsOn 'generate_beans'
+ sourceCompatibility = 8
+ targetCompatibility = 8
+}
+
+task compileJava9(type: JavaCompile) {
+ dependsOn 'compileJava'
+
+ sourceCompatibility = 9
+ targetCompatibility = 9
+ destinationDirectory = file(JAVA9_OUT + VERSIONS9)
+ source = file(JAVA9_SRC)
+ classpath = files()
+ options.compilerArgs = [
+ '--patch-module', "${MODULE_NAME}=${sourceSets.main.output.asPath}",
+ '--module-path', files(MAIN_MODULE_PATH).asPath
+ ]
+}
+
+task cacheJava9(type: Copy) {
+ dependsOn 'compileJava9'
+
+ from(file(JAVA9_OUT + VERSIONS9))
+ into(JAVA9_SRC)
+}
+
+task copy_xsds(type: Copy) {
+ from ('src/main/xmlschema/org/apache/poi/xdgf')
+ from ('src/main/xmlschema/org/apache/poi/schemas') {
+ include 'XAdES*.xsd', '*.xsdconfig', 'xmldsig*.xsd', 'ooxmlSchemas.xsdconfig', 'markup-compatibility.xsd', 'vmlDrawing.xsd'
+ exclude '*.zip'
+ }
+ from ('src/main/xmlschema/org/apache/poi/poifs/crypt') {
+ include 'signatureInfo.xsd'
+ }
+ from (zipTree('src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip'))
+ from (zipTree('src/main/xmlschema/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip')) {
+ include 'opc-digSig.xsd', 'opc-relationships.xsd'
+ }
+ into 'build/xsds'
+}
+
+task generate_beans(dependsOn: copy_xsds) {
+ // incremental feature is not working ...
+ inputs.files fileTree(dir: 'build/xsds', include: '*.xsd')
+ outputs.file 'build/generated-resources/org/apache/poi/schemas/ooxml/system/ooxml/TypeSystemHolder.class'
+
+ doLast {
+ ant.uptodate(
+ property: 'xmlbeans_uptodate',
+ targetfile: 'build/generated-resources/org/apache/poi/schemas/ooxml/system/ooxml/TypeSystemHolder.class'
+ ) {
+ srcFiles(dir: 'build/xsds', includes: '*.xsd')
+ }
+
+ ant.taskdef(
+ name: 'xmlbean',
+ classname: 'org.apache.xmlbeans.impl.tool.XMLBean',
+ classpath: sourceSets.main.runtimeClasspath.asPath
+ )
+
+ if (!ant.properties.xmlbeans_uptodate) {
+ ant.xmlbean(
+ schema: 'build/xsds',
+ srcgendir: 'build/generated-sources',
+ classgendir: 'build/generated-resources',
+ destfile: 'build/xsds.jar',
+ srconly: true,
+ failonerror: true,
+ fork: true,
+ memoryMaximumSize: '1536m',
+ typesystemname: 'ooxml',
+ repackage: 'org.apache.xmlbeans.metadata:org.apache.poi.schemas.ooxml'
+ ) {
+ classpath = sourceSets.main.runtimeClasspath.asPath
+ }
+ }
+ }
+}
+
+tasks.withType(Jar) {
+ destinationDirectory = file("../build/dist/maven/${project.archivesBaseName}")
+}
+
+task sourceJar(type: Jar) {
+ classifier 'sources'
+ from sourceSets.main.allJava
+}
+
+jar {
+ dependsOn 'sourceJar'
+
+ if (JavaVersion.current() == JavaVersion.VERSION_1_8) {
+ into('META-INF/versions/9') {
+ from JAVA9_SRC include '*.class'
+ }
+ }
+
+ manifest {
+ attributes ('Automatic-Module-Name': MODULE_NAME, 'Multi-Release': 'true')
+ }
+}
+
+publishing {
+ publications {
+ POI(MavenPublication) {
+ artifactId "${project.archivesBaseName}"
+
+ from components.java
+ artifact tasks.sourceJar
+
+ pom {
+ name = 'Apache POI - OOXML schemas (full)'
+ description =
+ 'XmlBeans generated from the Ecma supplied xsds (since POI 5.0.0, the 5th edition is used):\n' +
+ ' https://www.ecma-international.org/publications/standards/Ecma-376.htm'
+ }
+ }
+ }
+}
+
+generatePomFileForPOIPublication.destination = "../build/dist/maven/${project.archivesBaseName}/${project.archivesBaseName}-${project.version}.pom"
diff --git a/poi-ooxml-full/src/main/java9/module-info.class b/poi-ooxml-full/src/main/java9/module-info.class
new file mode 100644
index 0000000000..34e3970b88
--- /dev/null
+++ b/poi-ooxml-full/src/main/java9/module-info.class
Binary files differ
diff --git a/poi-ooxml-full/src/main/java9/module-info.java b/poi-ooxml-full/src/main/java9/module-info.java
new file mode 100644
index 0000000000..f8e193e41e
--- /dev/null
+++ b/poi-ooxml-full/src/main/java9/module-info.java
@@ -0,0 +1,54 @@
+/* ====================================================================
+ 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.
+==================================================================== */
+
+
+open module org.apache.poi.ooxml.schemas {
+ // this still throws "requires transitive directive for an automatic module" in JDK 14
+ // see https://bugs.openjdk.java.net/browse/JDK-8240847
+ requires transitive org.apache.xmlbeans;
+ requires java.xml;
+
+
+
+
+ exports com.microsoft.schemas.compatibility;
+ exports com.microsoft.schemas.office.excel;
+ exports com.microsoft.schemas.office.office;
+ exports com.microsoft.schemas.office.visio.x2012.main;
+ exports com.microsoft.schemas.office.word;
+ exports com.microsoft.schemas.office.x2006.digsig;
+ exports com.microsoft.schemas.vml;
+ exports org.apache.poi.schemas.ooxml.system.ooxml;
+ exports org.apache.poi.schemas.vmldrawing;
+ exports org.etsi.uri.x01903.v13;
+ exports org.openxmlformats.schemas.drawingml.x2006.chart;
+ exports org.openxmlformats.schemas.drawingml.x2006.main;
+ exports org.openxmlformats.schemas.drawingml.x2006.picture;
+ exports org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing;
+ exports org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing;
+ exports org.openxmlformats.schemas.officeDocument.x2006.customProperties;
+ exports org.openxmlformats.schemas.officeDocument.x2006.docPropsVTypes;
+ exports org.openxmlformats.schemas.officeDocument.x2006.extendedProperties;
+ exports org.openxmlformats.schemas.officeDocument.x2006.math;
+ exports org.openxmlformats.schemas.officeDocument.x2006.relationships;
+ exports org.openxmlformats.schemas.officeDocument.x2006.sharedTypes;
+ exports org.openxmlformats.schemas.presentationml.x2006.main;
+ exports org.openxmlformats.schemas.spreadsheetml.x2006.main;
+ exports org.openxmlformats.schemas.wordprocessingml.x2006.main;
+ exports org.openxmlformats.schemas.xpackage.x2006.digitalSignature;
+ exports org.w3.x2000.x09.xmldsig;
+} \ No newline at end of file
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionCertificate.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionCertificate.xsd
new file mode 100644
index 0000000000..7423c85de0
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionCertificate.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xs:schema xmlns="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate" xmlns:e="http://schemas.microsoft.com/office/2006/encryption" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://schemas.microsoft.com/office/2006/encryption" schemaLocation="encryptionInfo.xsd"/>
+ <xs:simpleType name="ST_PasswordKeyEncryptorUri">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="CT_CertificateKeyEncryptor">
+ <xs:attribute name="encryptedKeyValue" type="xs:base64Binary" use="required">
+ <xs:annotation><xs:documentation>A base64-encoded value that specifies the encrypted form of the intermediate key, which is encrypted with the public key contained within the X509Certificate attribute.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="X509Certificate" type="xs:base64Binary" use="required">
+ <xs:annotation><xs:documentation>A base64-encoded value that specifies a DER-encoded X.509 certificate (1) used to encrypt the intermediate key. The certificate (1) MUST contain only the public portion of the public-private key pair.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="certVerifier" type="xs:base64Binary" use="required">
+ <xs:annotation><xs:documentation>A base64-encoded value that specifies the HMAC of the binary data obtained by base64-decoding the X509Certificate attribute. The hashing algorithm used to derive the HMAC MUST be the hashing algorithm specified for the Encryption.keyData element. The secret key used to derive the HMAC MUST be the intermediate key. If the intermediate key is reset, any CertificateKeyEncryptor elements are also reset to contain the new intermediate key, except that the certVerifier attribute MUST match the value calculated using the current intermediate key, to verify that the CertificateKeyEncryptor element actually encrypted the current intermediate key. If a CertificateKeyEncryptor element does not have a correct certVerifier attribute, it MUST be discarded.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:element name="encryptedKey" type="CT_CertificateKeyEncryptor"/>
+</xs:schema>
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionCertificate.xsdconfig b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionCertificate.xsdconfig
new file mode 100644
index 0000000000..73a27fa50a
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionCertificate.xsdconfig
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config" xmlns:c="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate">
+
+<xb:qname name="c:encryptedKey" javaname="EncryptedCertificateKey"/>
+
+</xb:config> \ No newline at end of file
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionInfo.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionInfo.xsd
new file mode 100644
index 0000000000..5b08560c3a
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionInfo.xsd
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xs:schema xmlns="http://schemas.microsoft.com/office/2006/encryption" xmlns:p="http://schemas.microsoft.com/office/2006/keyEncryptor/password" xmlns:c="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.microsoft.com/office/2006/encryption" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://schemas.microsoft.com/office/2006/keyEncryptor/password" schemaLocation="encryptionPassword.xsd"/>
+ <xs:import namespace="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate" schemaLocation="encryptionCertificate.xsd"/>
+ <xs:simpleType name="ST_SaltSize">
+ <xs:annotation>
+ <xs:documentation>An unsigned integer that specifies the number of bytes used by a salt. It MUST be at least 1 and no greater than 65,536.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="65536"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ST_BlockSize">
+ <xs:annotation>
+ <xs:documentation>An unsigned integer that specifies the number of bytes used to encrypt one block of data. It MUST be at least 2, no greater than 4096, and a multiple of 2.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:minInclusive value="2"/>
+ <xs:maxInclusive value="4096"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ST_KeyBits">
+ <xs:annotation>
+ <xs:documentation>An unsigned integer that specifies the number of bits used by an encryption algorithm. It MUST be at least 8 and a multiple of 8.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:minInclusive value="8"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ST_HashSize">
+ <xs:annotation>
+ <xs:documentation>An unsigned integer that specifies the number of bytes used by a hash value. It MUST be at least 1, no greater than 65,536, and the same number of bytes as the hash algorithm emits.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="65536"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ST_SpinCount">
+ <xs:annotation>
+ <xs:documentation>An unsigned integer that specifies the number of times to iterate on a hash of a password. It MUST NOT be greater than 10,000,000.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="10000000"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ST_CipherAlgorithm">
+ <xs:annotation>
+ <xs:appinfo>modified for poi - list is restricted to given list in [ms-offcrypto]</xs:appinfo>
+ <xs:documentation>A string that specifies the cipher algorithm. Values that are not defined MAY be used, and a compliant implementation is not required to support all defined values. Any algorithm that can be resolved by name by the underlying operating system can be used for hashing or encryption. Only block algorithms are supported for encryption. AES-128 is the default encryption algorithm, and SHA-1 is the default hashing algorithm if no other algorithms have been configured.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="AES">
+ <xs:annotation>
+ <xs:documentation>MUST conform to the AES algorithm.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="RC2">
+ <xs:annotation>
+ <xs:documentation>MUST conform to the algorithm as specified in [RFC2268] (http://tools.ietf.org/html/rfc2268). The use of RC2 is not recommended. If RC2 is used with a key length of less than 128 bits, documents could interoperate incorrectly across different versions of Windows.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="RC4">
+ <xs:annotation>
+ <xs:documentation>MUST NOT be used.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DES">
+ <xs:annotation>
+ <xs:documentation>MUST conform to the DES algorithm. The use of DES is not recommended. If DES is used, the key length specified in the KeyBits element is required to be set to 64 for 56-bit encryption, and the key decrypted from encryptedKeyValue of KeyEncryptor is required to include the DES parity bits.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DESX">
+ <xs:annotation>
+ <xs:documentation>MUST conform to the algorithm as specified in [DRAFT-DESX] (http://tools.ietf.org/html/draft-ietf-ipsec-ciph-desx-00). The use of DESX is not recommended. If DESX is used, documents could interoperate incorrectly across different versions of Windows.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="3DES">
+ <xs:annotation>
+ <xs:documentation>MUST conform to the algorithm as specified in [RFC1851] (http://tools.ietf.org/html/rfc1851). If 3DES or 3DES_112 is used, the key length specified in the KeyBits element is required to be set to 192 for 168-bit encryption and 128 for 112-bit encryption, and the key decrypted from encryptedKeyValue of KeyEncryptor is required to include the DES parity bits.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="3DES_112">
+ <xs:annotation>
+ <xs:documentation>see 3DES</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ST_CipherChaining">
+ <xs:annotation>
+ <xs:documentation>A string that specifies the chaining mode used by CipherAlgorithm. For more details about chaining modes, see [BCMO800-38A] (http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf).</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="ChainingModeCBC">
+ <xs:annotation>
+ <xs:documentation>block chaining (CBC)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ChainingModeCFB">
+ <xs:annotation>
+ <xs:documentation>Cipher feedback chaining (CFB), with an 8-bit window</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ST_HashAlgorithm">
+ <xs:annotation>
+ <xs:appinfo>modified for poi - list is restricted to given list in [ms-offcrypto]</xs:appinfo>
+ <xs:documentation>A string specifying a hashing algorithm. Values that are not defined MAY be used, and a compliant implementation is not required to support all defined values.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="SHA1">
+ <xs:annotation>
+ <xs:documentation>MUST conform to the algorithm as specified in [RFC4634] (http://tools.ietf.org/html/rfc4634).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SHA256">
+ <xs:annotation>
+ <xs:documentation>see SHA1</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SHA384">
+ <xs:annotation>
+ <xs:documentation>see SHA1</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SHA512">
+ <xs:annotation>
+ <xs:documentation>see SHA1</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MD5">
+ <xs:annotation>
+ <xs:documentation>MUST conform to MD5.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MD4">
+ <xs:annotation>
+ <xs:documentation>MUST conform to the algorithm as specified in [RFC1320] (http://tools.ietf.org/html/rfc1320).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MD2">
+ <xs:annotation>
+ <xs:documentation>MUST conform to the algorithm as specified in [RFC1319] (http://tools.ietf.org/html/rfc1319).</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="RIPEMD-128">
+ <xs:annotation>
+ <xs:documentation>MUST conform to the hash functions specified in [ISO/IEC 10118]. (https://en.wikipedia.org/wiki/RIPEMD)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="RIPEMD-160">
+ <xs:annotation>
+ <xs:documentation>see RIPEMD-128 (https://en.wikipedia.org/wiki/RIPEMD)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="WHIRLPOOL">
+ <xs:annotation>
+ <xs:documentation>see RIPEMD-128 (https://en.wikipedia.org/wiki/ISO/IEC_10118-3)</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="CT_KeyData">
+ <xs:annotation>
+ <xs:documentation>A complex type that specifies the encryption used within this element. The saltValue attribute is a base64-encoded binary value that is randomly generated. The number of bytes required to decode the saltValue attribute MUST be equal to the value of the saltSize attribute.</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="saltSize" type="ST_SaltSize" use="required"/>
+ <xs:attribute name="blockSize" type="ST_BlockSize" use="required"/>
+ <xs:attribute name="keyBits" type="ST_KeyBits" use="required"/>
+ <xs:attribute name="hashSize" type="ST_HashSize" use="required"/>
+ <xs:attribute name="cipherAlgorithm" type="ST_CipherAlgorithm" use="required"/>
+ <xs:attribute name="cipherChaining" type="ST_CipherChaining" use="required"/>
+ <xs:attribute name="hashAlgorithm" type="ST_HashAlgorithm" use="required"/>
+ <xs:attribute name="saltValue" type="xs:base64Binary" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="CT_DataIntegrity">
+ <xs:annotation>
+ <xs:documentation>A complex type that specifies data used to verify whether the encrypted data passes an integrity check. It MUST be generated using the method specified in section 2.3.4.14 (http://msdn.microsoft.com/en-us/library/dd924068(v=office.12).aspx).</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="encryptedHmacKey" type="xs:base64Binary" use="required">
+ <xs:annotation>
+ <xs:documentation>A base64-encoded value that specifies an encrypted key used in calculating the encryptedHmacValue.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="encryptedHmacValue" type="xs:base64Binary" use="required">
+ <xs:annotation>
+ <xs:documentation>A base64-encoded value that specifies an HMAC derived from encryptedHmacKey and the encrypted data.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="CT_KeyEncryptor">
+ <xs:annotation>
+ <xs:appinfo>modified for POI</xs:appinfo>
+ <xs:documentation>A complex type that specifies the parameters used to encrypt an intermediate key, which is used to perform the final encryption of the document. To ensure extensibility, arbitrary elements can be defined to encrypt the intermediate key. The intermediate key MUST be the same for all KeyEncryptor elements.</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="p:encryptedKey"/>
+ <xs:element ref="c:encryptedKey"/>
+ </xs:choice>
+ <xs:attribute name="uri">
+ <xs:annotation>
+ <xs:appinfo>modified for POI</xs:appinfo>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="http://schemas.microsoft.com/office/2006/keyEncryptor/password"/>
+ <xs:enumeration value="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="CT_KeyEncryptors">
+ <xs:annotation>
+ <xs:documentation>A sequence of KeyEncryptor elements. Exactly one KeyEncryptors element MUST be present, and the KeyEncryptors element MUST contain at least one KeyEncryptor.</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="keyEncryptor" type="CT_KeyEncryptor" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CT_Encryption">
+ <xs:sequence>
+ <xs:element name="keyData" type="CT_KeyData"/>
+ <xs:element name="dataIntegrity" type="CT_DataIntegrity">
+ <xs:annotation>
+ <xs:appinfo>modified for POI</xs:appinfo>
+ <xs:documentation>All ECMA-376 documents [ECMA-376] encrypted by Microsoft Office using agile encryption will have a DataIntegrity element present. The schema allows for a DataIntegrity element to not be present because the encryption schema can be used by applications that do not create ECMA-376 documents [ECMA-376].</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="keyEncryptors" type="CT_KeyEncryptors">
+ <xs:annotation>
+ <xs:documentation>The KeyEncryptor element, which MUST be used when encrypting password-protected agile encryption documents, is either a PasswordKeyEncryptor or a CertificateKeyEncryptor. Exactly one PasswordKeyEncryptor MUST be present. Zero or more CertificateKeyEncryptor elements are contained within the KeyEncryptors element.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="encryption" type="CT_Encryption"/>
+</xs:schema>
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionInfo.xsdconfig b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionInfo.xsdconfig
new file mode 100644
index 0000000000..c9474a0f3a
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionInfo.xsdconfig
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config" xmlns:c="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate" xmlns:p="http://schemas.microsoft.com/office/2006/keyEncryptor/password">
+
+<xb:qname name="c:encryptedKey" javaname="EncryptedCertificateKey"/>
+<xb:qname name="p:encryptedKey" javaname="EncryptedPasswordKey"/>
+
+</xb:config> \ No newline at end of file
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionPassword.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionPassword.xsd
new file mode 100644
index 0000000000..79ae888a0e
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionPassword.xsd
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xs:schema xmlns="http://schemas.microsoft.com/office/2006/keyEncryptor/password" xmlns:e="http://schemas.microsoft.com/office/2006/encryption" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.microsoft.com/office/2006/keyEncryptor/password" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://schemas.microsoft.com/office/2006/encryption" schemaLocation="encryptionInfo.xsd"/>
+ <xs:simpleType name="ST_PasswordKeyEncryptorUri">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="http://schemas.microsoft.com/office/2006/keyEncryptor/password"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="CT_PasswordKeyEncryptor">
+ <xs:attribute name="saltSize" type="e:ST_SaltSize" use="required">
+ <xs:annotation><xs:documentation>A SaltSize that specifies the size of the salt for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="blockSize" type="e:ST_BlockSize" use="required">
+ <xs:annotation><xs:documentation>A BlockSize that specifies the block size for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="keyBits" type="e:ST_KeyBits" use="required">
+ <xs:annotation><xs:documentation>A KeyBits that specifies the number of bits for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="hashSize" type="e:ST_HashSize" use="required">
+ <xs:annotation><xs:documentation>A HashSize that specifies the size of the binary form of the hash for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="cipherAlgorithm" type="e:ST_CipherAlgorithm" use="required">
+ <xs:annotation><xs:documentation>A CipherAlgorithm that specifies the cipher algorithm for a PasswordKeyEncryptor. The cipher algorithm specified MUST be the same as the cipher algorithm specified for the Encryption.keyData element.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="cipherChaining" type="e:ST_CipherChaining" use="required">
+ <xs:annotation><xs:documentation>A CipherChaining that specifies the cipher chaining mode for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="hashAlgorithm" type="e:ST_HashAlgorithm" use="required">
+ <xs:annotation><xs:documentation>A HashAlgorithm that specifies the hashing algorithm for a PasswordKeyEncryptor. The hashing algorithm specified MUST be the same as the hashing algorithm specified for the Encryption.keyData element.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="saltValue" type="xs:base64Binary" use="required">
+ <xs:annotation><xs:documentation>A base64-encoded binary byte array that specifies the salt value for a PasswordKeyEncryptor. The number of bytes required by the decoded form of this element MUST be saltSize.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="spinCount" type="e:ST_SpinCount" use="required">
+ <xs:annotation><xs:documentation>A SpinCount that specifies the spin count for a PasswordKeyEncryptor.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="encryptedVerifierHashInput" type="xs:base64Binary" use="required">
+ <xs:annotation><xs:documentation>A base64-encoded value that specifies the encrypted verifier hash input for a PasswordKeyEncryptor used in password verification.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="encryptedVerifierHashValue" type="xs:base64Binary" use="required">
+ <xs:annotation><xs:documentation>A base64-encoded value that specifies the encrypted verifier hash value for a PasswordKeyEncryptor used in password verification.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="encryptedKeyValue" type="xs:base64Binary" use="required">
+ <xs:annotation><xs:documentation>A base64-encoded value that specifies the encrypted form of the intermediate key.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:element name="encryptedKey" type="CT_PasswordKeyEncryptor"/>
+</xs:schema>
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionPassword.xsdconfig b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionPassword.xsdconfig
new file mode 100644
index 0000000000..3a2bb2c8e9
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/encryptionPassword.xsdconfig
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config" xmlns:p="http://schemas.microsoft.com/office/2006/keyEncryptor/password">
+
+<xb:qname name="p:encryptedKey" javaname="EncryptedPasswordKey"/>
+
+</xb:config> \ No newline at end of file
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/signatureInfo.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/signatureInfo.xsd
new file mode 100644
index 0000000000..f7019f13f5
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/poifs/crypt/signatureInfo.xsd
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xsd:schema targetNamespace="http://schemas.microsoft.com/office/2006/digsig" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/office/2006/digsig" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:simpleType name="ST_PositiveInteger">
+ <xsd:restriction base="xsd:int">
+ <xsd:minExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SignatureComments">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="255"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SignatureProviderUrl">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="2083"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SignatureText">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SignatureType">
+ <xsd:restriction base="xsd:int">
+ <xsd:enumeration value="1"/>
+ <xsd:enumeration value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Version">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="64"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_UniqueIdentifierWithBraces">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\{[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}\}|"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:group name="EG_RequiredChildren">
+ <xsd:sequence>
+ <xsd:element name="SetupID" type="ST_UniqueIdentifierWithBraces"/>
+ <xsd:element name="SignatureText" type="ST_SignatureText"/>
+ <xsd:element name="SignatureImage" type="xsd:base64Binary"/>
+ <xsd:element name="SignatureComments" type="ST_SignatureComments"/>
+ <xsd:element name="WindowsVersion" type="ST_Version"/>
+ <xsd:element name="OfficeVersion" type="ST_Version"/>
+ <xsd:element name="ApplicationVersion" type="ST_Version"/>
+ <xsd:element name="Monitors" type="ST_PositiveInteger"/>
+ <xsd:element name="HorizontalResolution" type="ST_PositiveInteger"/>
+ <xsd:element name="VerticalResolution" type="ST_PositiveInteger"/>
+ <xsd:element name="ColorDepth" type="ST_PositiveInteger"/>
+ <xsd:element name="SignatureProviderId" type="ST_UniqueIdentifierWithBraces"/>
+ <xsd:element name="SignatureProviderUrl" type="ST_SignatureProviderUrl"/>
+ <xsd:element name="SignatureProviderDetails" type="xsd:int"/>
+ <xsd:element name="SignatureType" type="ST_SignatureType"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="EG_OptionalChildren">
+ <xsd:sequence>
+ <xsd:element name="DelegateSuggestedSigner" type="xsd:string"/>
+ <xsd:element name="DelegateSuggestedSigner2" type="xsd:string"/>
+ <xsd:element name="DelegateSuggestedSignerEmail" type="xsd:string"/>
+ <xsd:element name="ManifestHashAlgorithm" type="xsd:anyURI" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="EG_OptionalChildrenV2">
+ <xsd:sequence>
+ <xsd:element name="Address1" type="xsd:string"/>
+ <xsd:element name="Address2" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_SignatureInfoV1">
+ <xsd:sequence>
+ <xsd:group ref="EG_RequiredChildren"/>
+ <xsd:group ref="EG_OptionalChildren" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SignatureInfoV2">
+ <xsd:sequence>
+ <xsd:group ref="EG_OptionalChildrenV2" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="SignatureInfoV1" type="CT_SignatureInfoV1"/>
+ <xsd:element name="SignatureInfoV2" type="CT_SignatureInfoV2"/>
+</xsd:schema> \ No newline at end of file
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Strict.zip b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Strict.zip
new file mode 100755
index 0000000000..c416a662fa
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Strict.zip
Binary files differ
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip
new file mode 100644
index 0000000000..d6dcf4fbb9
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip
Binary files differ
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip
new file mode 100644
index 0000000000..5c4f52cea7
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip
Binary files differ
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/XAdES.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/XAdES.xsd
new file mode 100644
index 0000000000..4b74692f85
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/XAdES.xsd
@@ -0,0 +1,466 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://uri.etsi.org/01903/v1.3.2#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://uri.etsi.org/01903/v1.3.2#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified">
+ <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
+ <!-- Start auxiliary types definitions: AnyType, ObjectIdentifierType,
+EncapsulatedPKIDataType and containers for time-stamp tokens -->
+ <!-- Start AnyType -->
+ <xsd:element name="Any" type="AnyType"/>
+ <xsd:complexType name="AnyType" mixed="true">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:any namespace="##any" processContents="lax"/>
+ </xsd:sequence>
+ <xsd:anyAttribute namespace="##any"/>
+ </xsd:complexType>
+ <!-- End AnyType -->
+ <!-- Start ObjectIdentifierType-->
+ <xsd:element name="ObjectIdentifier" type="ObjectIdentifierType"/>
+ <xsd:complexType name="ObjectIdentifierType">
+ <xsd:sequence>
+ <xsd:element name="Identifier" type="IdentifierType"/>
+ <xsd:element name="Description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="DocumentationReferences" type="DocumentationReferencesType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="IdentifierType">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:anyURI">
+ <xsd:attribute name="Qualifier" type="QualifierType" use="optional"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:simpleType name="QualifierType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="OIDAsURI"/>
+ <xsd:enumeration value="OIDAsURN"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="DocumentationReferencesType">
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="DocumentationReference" type="xsd:anyURI"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!-- End ObjectIdentifierType-->
+ <!-- Start EncapsulatedPKIDataType-->
+ <xsd:element name="EncapsulatedPKIData" type="EncapsulatedPKIDataType"/>
+ <xsd:complexType name="EncapsulatedPKIDataType">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:base64Binary">
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ <xsd:attribute name="Encoding" type="xsd:anyURI" use="optional"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <!-- End EncapsulatedPKIDataType -->
+ <!-- Start time-stamp containers types -->
+ <!-- Start GenericTimeStampType -->
+ <xsd:element name="Include" type="IncludeType"/>
+ <xsd:complexType name="IncludeType">
+ <xsd:attribute name="URI" type="xsd:anyURI" use="required"/>
+ <xsd:attribute name="referencedData" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:element name="ReferenceInfo" type="ReferenceInfoType"/>
+ <xsd:complexType name="ReferenceInfoType">
+ <xsd:sequence>
+ <xsd:element ref="ds:DigestMethod"/>
+ <xsd:element ref="ds:DigestValue"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="GenericTimeStampType" abstract="true">
+ <xsd:sequence>
+ <xsd:choice minOccurs="0">
+ <xsd:element ref="Include" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element ref="ReferenceInfo" maxOccurs="unbounded"/>
+ </xsd:choice>
+ <xsd:element ref="ds:CanonicalizationMethod" minOccurs="0"/>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
+ <xsd:element name="XMLTimeStamp" type="AnyType"/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End GenericTimeStampType -->
+ <!-- Start XAdESTimeStampType -->
+ <xsd:element name="XAdESTimeStamp" type="XAdESTimeStampType"/>
+ <xsd:complexType name="XAdESTimeStampType">
+ <xsd:complexContent>
+ <xsd:restriction base="GenericTimeStampType">
+ <xsd:sequence>
+ <xsd:element ref="Include" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element ref="ds:CanonicalizationMethod" minOccurs="0"/>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
+ <xsd:element name="XMLTimeStamp" type="AnyType"/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <!-- End XAdESTimeStampType -->
+ <!-- Start OtherTimeStampType -->
+ <xsd:element name="OtherTimeStamp" type="OtherTimeStampType"/>
+ <xsd:complexType name="OtherTimeStampType">
+ <xsd:complexContent>
+ <xsd:restriction base="GenericTimeStampType">
+ <xsd:sequence>
+ <xsd:element ref="ReferenceInfo" maxOccurs="unbounded"/>
+ <xsd:element ref="ds:CanonicalizationMethod" minOccurs="0"/>
+ <xsd:choice>
+ <xsd:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
+ <xsd:element name="XMLTimeStamp" type="AnyType"/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <!-- End OtherTimeStampType -->
+ <!-- End time-stamp containers types -->
+ <!-- End auxiliary types definitions-->
+ <!-- Start container types -->
+ <!-- Start QualifyingProperties -->
+ <xsd:element name="QualifyingProperties" type="QualifyingPropertiesType"/>
+ <xsd:complexType name="QualifyingPropertiesType">
+ <xsd:sequence>
+ <xsd:element name="SignedProperties" type="SignedPropertiesType" minOccurs="0"/>
+ <xsd:element name="UnsignedProperties" type="UnsignedPropertiesType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End QualifyingProperties -->
+ <!-- Start SignedProperties-->
+ <xsd:element name="SignedProperties" type="SignedPropertiesType"/>
+ <xsd:complexType name="SignedPropertiesType">
+ <xsd:sequence>
+ <xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType" minOccurs="0"/>
+ <xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End SignedProperties-->
+ <!-- Start UnsignedProperties-->
+ <xsd:element name="UnsignedProperties" type="UnsignedPropertiesType"/>
+ <xsd:complexType name="UnsignedPropertiesType">
+ <xsd:sequence>
+ <xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType" minOccurs="0"/>
+ <xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End UnsignedProperties-->
+ <!-- Start SignedSignatureProperties-->
+ <xsd:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
+ <xsd:complexType name="SignedSignaturePropertiesType">
+ <xsd:sequence>
+ <xsd:element name="SigningTime" type="xsd:dateTime" minOccurs="0"/>
+ <xsd:element name="SigningCertificate" type="CertIDListType" minOccurs="0"/>
+ <xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType" minOccurs="0"/>
+ <xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType" minOccurs="0"/>
+ <xsd:element name="SignerRole" type="SignerRoleType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End SignedSignatureProperties-->
+ <!-- Start SignedDataObjectProperties-->
+ <xsd:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType"/>
+ <xsd:complexType name="SignedDataObjectPropertiesType">
+ <xsd:sequence>
+ <xsd:element name="DataObjectFormat" type="DataObjectFormatType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="AllDataObjectsTimeStamp" type="XAdESTimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="IndividualDataObjectsTimeStamp" type="XAdESTimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End SignedDataObjectProperties-->
+ <!-- Start UnsignedSignatureProperties-->
+ <xsd:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType"/>
+ <xsd:complexType name="UnsignedSignaturePropertiesType">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="CounterSignature" type="CounterSignatureType"/>
+ <xsd:element name="SignatureTimeStamp" type="XAdESTimeStampType"/>
+ <xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/>
+ <xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/>
+ <xsd:element name="AttributeCertificateRefs" type="CompleteCertificateRefsType"/>
+ <xsd:element name="AttributeRevocationRefs" type="CompleteRevocationRefsType"/>
+ <xsd:element name="SigAndRefsTimeStamp" type="XAdESTimeStampType"/>
+ <xsd:element name="RefsOnlyTimeStamp" type="XAdESTimeStampType"/>
+ <xsd:element name="CertificateValues" type="CertificateValuesType"/>
+ <xsd:element name="RevocationValues" type="RevocationValuesType"/>
+ <xsd:element name="AttrAuthoritiesCertValues" type="CertificateValuesType"/>
+ <xsd:element name="AttributeRevocationValues" type="RevocationValuesType"/>
+ <xsd:element name="ArchiveTimeStamp" type="XAdESTimeStampType"/>
+ <xsd:any namespace="##other"/>
+ </xsd:choice>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End UnsignedSignatureProperties-->
+ <!-- Start UnsignedDataObjectProperties-->
+ <xsd:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType"/>
+ <xsd:complexType name="UnsignedDataObjectPropertiesType">
+ <xsd:sequence>
+ <xsd:element name="UnsignedDataObjectProperty" type="AnyType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End UnsignedDataObjectProperties-->
+ <!-- Start QualifyingPropertiesReference-->
+ <xsd:element name="QualifyingPropertiesReference" type="QualifyingPropertiesReferenceType"/>
+ <xsd:complexType name="QualifyingPropertiesReferenceType">
+ <xsd:attribute name="URI" type="xsd:anyURI" use="required"/>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End QualifyingPropertiesReference-->
+ <!-- End container types -->
+ <!-- Start SigningTime element -->
+ <xsd:element name="SigningTime" type="xsd:dateTime"/>
+ <!-- End SigningTime element -->
+ <!-- Start SigningCertificate -->
+ <xsd:element name="SigningCertificate" type="CertIDListType"/>
+ <xsd:complexType name="CertIDListType">
+ <xsd:sequence>
+ <xsd:element name="Cert" type="CertIDType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CertIDType">
+ <xsd:sequence>
+ <xsd:element name="CertDigest" type="DigestAlgAndValueType"/>
+ <xsd:element name="IssuerSerial" type="ds:X509IssuerSerialType"/>
+ </xsd:sequence>
+ <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="DigestAlgAndValueType">
+ <xsd:sequence>
+ <xsd:element ref="ds:DigestMethod"/>
+ <xsd:element ref="ds:DigestValue"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!-- End SigningCertificate -->
+ <!-- Start SignaturePolicyIdentifier -->
+ <xsd:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
+ <xsd:complexType name="SignaturePolicyIdentifierType">
+ <xsd:choice>
+ <xsd:element name="SignaturePolicyId" type="SignaturePolicyIdType"/>
+ <xsd:element name="SignaturePolicyImplied"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="SignaturePolicyIdType">
+ <xsd:sequence>
+ <xsd:element name="SigPolicyId" type="ObjectIdentifierType"/>
+ <xsd:element ref="ds:Transforms" minOccurs="0"/>
+ <xsd:element name="SigPolicyHash" type="DigestAlgAndValueType"/>
+ <xsd:element name="SigPolicyQualifiers" type="SigPolicyQualifiersListType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="SigPolicyQualifiersListType">
+ <xsd:sequence>
+ <xsd:element name="SigPolicyQualifier" type="AnyType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="SPURI" type="xsd:anyURI"/>
+ <xsd:element name="SPUserNotice" type="SPUserNoticeType"/>
+ <xsd:complexType name="SPUserNoticeType">
+ <xsd:sequence>
+ <xsd:element name="NoticeRef" type="NoticeReferenceType" minOccurs="0"/>
+ <xsd:element name="ExplicitText" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="NoticeReferenceType">
+ <xsd:sequence>
+ <xsd:element name="Organization" type="xsd:string"/>
+ <xsd:element name="NoticeNumbers" type="IntegerListType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="IntegerListType">
+ <xsd:sequence>
+ <xsd:element name="int" type="xsd:integer" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!-- End SignaturePolicyIdentifier -->
+ <!-- Start CounterSignature -->
+ <xsd:element name="CounterSignature" type="CounterSignatureType"/>
+ <xsd:complexType name="CounterSignatureType">
+ <xsd:sequence>
+ <xsd:element ref="ds:Signature"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!-- End CounterSignature -->
+ <!-- Start DataObjectFormat -->
+ <xsd:element name="DataObjectFormat" type="DataObjectFormatType"/>
+ <xsd:complexType name="DataObjectFormatType">
+ <xsd:sequence>
+ <xsd:element name="Description" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="ObjectIdentifier" type="ObjectIdentifierType" minOccurs="0"/>
+ <xsd:element name="MimeType" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="Encoding" type="xsd:anyURI" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="ObjectReference" type="xsd:anyURI" use="required"/>
+ </xsd:complexType>
+ <!-- End DataObjectFormat -->
+ <!-- Start CommitmentTypeIndication -->
+ <xsd:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType"/>
+ <xsd:complexType name="CommitmentTypeIndicationType">
+ <xsd:sequence>
+ <xsd:element name="CommitmentTypeId" type="ObjectIdentifierType"/>
+ <xsd:choice>
+ <xsd:element name="ObjectReference" type="xsd:anyURI" maxOccurs="unbounded"/>
+ <xsd:element name="AllSignedDataObjects"/>
+ </xsd:choice>
+ <xsd:element name="CommitmentTypeQualifiers" type="CommitmentTypeQualifiersListType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CommitmentTypeQualifiersListType">
+ <xsd:sequence>
+ <xsd:element name="CommitmentTypeQualifier" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!-- End CommitmentTypeIndication -->
+ <!-- Start SignatureProductionPlace -->
+ <xsd:element name="SignatureProductionPlace" type="SignatureProductionPlaceType"/>
+ <xsd:complexType name="SignatureProductionPlaceType">
+ <xsd:sequence>
+ <xsd:element name="City" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="StateOrProvince" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="CountryName" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!-- End SignatureProductionPlace -->
+ <!-- Start SignerRole -->
+ <xsd:element name="SignerRole" type="SignerRoleType"/>
+ <xsd:complexType name="SignerRoleType">
+ <xsd:sequence>
+ <xsd:element name="ClaimedRoles" type="ClaimedRolesListType" minOccurs="0"/>
+ <xsd:element name="CertifiedRoles" type="CertifiedRolesListType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="ClaimedRolesListType">
+ <xsd:sequence>
+ <xsd:element name="ClaimedRole" type="AnyType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CertifiedRolesListType">
+ <xsd:sequence>
+ <xsd:element name="CertifiedRole" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!-- End SignerRole -->
+ <xsd:element name="AllDataObjectsTimeStamp" type="XAdESTimeStampType"/>
+ <xsd:element name="IndividualDataObjectsTimeStamp" type="XAdESTimeStampType"/>
+ <xsd:element name="SignatureTimeStamp" type="XAdESTimeStampType"/>
+ <!-- Start CompleteCertificateRefs -->
+ <xsd:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/>
+ <xsd:complexType name="CompleteCertificateRefsType">
+ <xsd:sequence>
+ <xsd:element name="CertRefs" type="CertIDListType"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End CompleteCertificateRefs -->
+ <!-- Start CompleteRevocationRefs-->
+ <xsd:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/>
+ <xsd:complexType name="CompleteRevocationRefsType">
+ <xsd:sequence>
+ <xsd:element name="CRLRefs" type="CRLRefsType" minOccurs="0"/>
+ <xsd:element name="OCSPRefs" type="OCSPRefsType" minOccurs="0"/>
+ <xsd:element name="OtherRefs" type="OtherCertStatusRefsType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CRLRefsType">
+ <xsd:sequence>
+ <xsd:element name="CRLRef" type="CRLRefType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CRLRefType">
+ <xsd:sequence>
+ <xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType"/>
+ <xsd:element name="CRLIdentifier" type="CRLIdentifierType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CRLIdentifierType">
+ <xsd:sequence>
+ <xsd:element name="Issuer" type="xsd:string"/>
+ <xsd:element name="IssueTime" type="xsd:dateTime"/>
+ <xsd:element name="Number" type="xsd:integer" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="OCSPRefsType">
+ <xsd:sequence>
+ <xsd:element name="OCSPRef" type="OCSPRefType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="OCSPRefType">
+ <xsd:sequence>
+ <xsd:element name="OCSPIdentifier" type="OCSPIdentifierType"/>
+ <xsd:element name="DigestAlgAndValue" type="DigestAlgAndValueType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="ResponderIDType">
+ <xsd:choice>
+ <xsd:element name="ByName" type="xsd:string"/>
+ <xsd:element name="ByKey" type="xsd:base64Binary"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="OCSPIdentifierType">
+ <xsd:sequence>
+ <xsd:element name="ResponderID" type="ResponderIDType"/>
+ <xsd:element name="ProducedAt" type="xsd:dateTime"/>
+ </xsd:sequence>
+ <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="OtherCertStatusRefsType">
+ <xsd:sequence>
+ <xsd:element name="OtherRef" type="AnyType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!-- End CompleteRevocationRefs-->
+ <xsd:element name="AttributeCertificateRefs" type="CompleteCertificateRefsType"/>
+ <xsd:element name="AttributeRevocationRefs" type="CompleteRevocationRefsType"/>
+ <xsd:element name="SigAndRefsTimeStamp" type="XAdESTimeStampType"/>
+ <xsd:element name="RefsOnlyTimeStamp" type="XAdESTimeStampType"/>
+ <!-- Start CertificateValues -->
+ <xsd:element name="CertificateValues" type="CertificateValuesType"/>
+ <xsd:complexType name="CertificateValuesType">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="EncapsulatedX509Certificate" type="EncapsulatedPKIDataType"/>
+ <xsd:element name="OtherCertificate" type="AnyType"/>
+ </xsd:choice>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <!-- End CertificateValues -->
+ <!-- Start RevocationValues-->
+ <xsd:element name="RevocationValues" type="RevocationValuesType"/>
+ <xsd:complexType name="RevocationValuesType">
+ <xsd:sequence>
+ <xsd:element name="CRLValues" type="CRLValuesType" minOccurs="0"/>
+ <xsd:element name="OCSPValues" type="OCSPValuesType" minOccurs="0"/>
+ <xsd:element name="OtherValues" type="OtherCertStatusValuesType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CRLValuesType">
+ <xsd:sequence>
+ <xsd:element name="EncapsulatedCRLValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="OCSPValuesType">
+ <xsd:sequence>
+ <xsd:element name="EncapsulatedOCSPValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="OtherCertStatusValuesType">
+ <xsd:sequence>
+ <xsd:element name="OtherValue" type="AnyType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!-- End RevocationValues-->
+ <xsd:element name="AttrAuthoritiesCertValues" type="CertificateValuesType"/>
+ <xsd:element name="AttributeRevocationValues" type="RevocationValuesType"/>
+ <xsd:element name="ArchiveTimeStamp" type="XAdESTimeStampType"/>
+</xsd:schema>
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/XAdESv141.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/XAdESv141.xsd
new file mode 100644
index 0000000000..8cb527978b
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/XAdESv141.xsd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://uri.etsi.org/01903/v1.4.1#" xmlns="http://uri.etsi.org/01903/v1.4.1#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" elementFormDefault="qualified">
+ <xsd:import namespace="http://uri.etsi.org/01903/v1.3.2#" schemaLocation="http://uri.etsi.org/01903/v1.3.2/XAdES.xsd"/>
+ <!-- Start CertificateValues -->
+ <xsd:element name="TimeStampValidationData" type="ValidationDataType"/>
+ <xsd:complexType name="ValidationDataType">
+ <xsd:sequence>
+ <xsd:element ref="xades:CertificateValues" minOccurs="0"/>
+ <xsd:element ref="xades:RevocationValues" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="Id" type="xsd:ID" use="optional"/>
+ <xsd:attribute name="URI" type="xsd:anyURI" use="optional"/>
+ </xsd:complexType>
+ <xsd:element name="ArchiveTimeStamp" type="xades:XAdESTimeStampType"/>
+</xsd:schema>
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/markup-compatibility.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/markup-compatibility.xsd
new file mode 100644
index 0000000000..6be17c06be
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/markup-compatibility.xsd
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xsd:schema
+ attributeFormDefault="unqualified" elementFormDefault="qualified"
+ targetNamespace="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ >
+ <!-- based on https://github.com/plutext/docx4j/blob/master/xsd/mce/markup-compatibility-2006-MINIMAL.xsd -->
+
+ <!-- This XSD has 2 objectives:
+
+ 1. round tripping @mc:Ignorable <w:document
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+ mc:Ignorable="w14 w15 wp14">
+
+ 2. enabling AlternateContent to be manipulated
+ in certain elements (in the unusual case where the content model is xsd:any,
+ it doesn't have to be explicitly added) See further ECMA-376, 4th Edition,
+ Office Open XML File Formats Part 3 : Markup Compatibility and Extensibility
+ -->
+
+ <!-- Objective 1 -->
+ <xsd:attribute name="Ignorable" type="xsd:string" />
+
+
+ <!-- Objective 2 -->
+
+ <xsd:attribute name="MustUnderstand" type="xsd:string" />
+ <xsd:attribute name="ProcessContent" type="xsd:string" />
+
+
+ <!-- An AlternateContent element shall contain one or more Choice child
+ elements, optionally followed by a Fallback child element. If present, there
+ shall be only one Fallback element, and it shall follow all Choice elements. -->
+ <xsd:element name="AlternateContent">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Choice" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded"
+ processContents="strict">
+ </xsd:any>
+ </xsd:sequence>
+ <xsd:attribute name="Requires" type="xsd:string"
+ use="required" />
+ <xsd:attribute ref="mc:Ignorable" use="optional" />
+ <xsd:attribute ref="mc:MustUnderstand" use="optional" />
+ <xsd:attribute ref="mc:ProcessContent" use="optional" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Fallback" minOccurs="0" maxOccurs="1">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded"
+ processContents="strict">
+ </xsd:any>
+ </xsd:sequence>
+ <xsd:attribute ref="mc:Ignorable" use="optional" />
+ <xsd:attribute ref="mc:MustUnderstand" use="optional" />
+ <xsd:attribute ref="mc:ProcessContent" use="optional" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <!-- AlternateContent elements might include the attributes Ignorable,
+ MustUnderstand and ProcessContent described in this Part of ECMA-376. These
+ attributes’ qualified names shall be prefixed when associated with an AlternateContent
+ element. -->
+ <xsd:attribute ref="mc:Ignorable" use="optional" />
+ <xsd:attribute ref="mc:MustUnderstand" use="optional" />
+ <xsd:attribute ref="mc:ProcessContent" use="optional" />
+ </xsd:complexType>
+ </xsd:element>
+
+
+</xsd:schema> \ No newline at end of file
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/ooxmlSchemas.xsdconfig b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/ooxmlSchemas.xsdconfig
new file mode 100644
index 0000000000..a567df5816
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/ooxmlSchemas.xsdconfig
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
+
+ <xb:namespace uri="urn:schemas-microsoft-com:office:office">
+ <xb:package>com.microsoft.schemas.office.office</xb:package>
+ </xb:namespace>
+
+ <xb:namespace uri="urn:schemas-microsoft-com:office:excel">
+ <xb:package>com.microsoft.schemas.office.excel</xb:package>
+ </xb:namespace>
+
+ <xb:namespace uri="urn:schemas-microsoft-com:office:word">
+ <xb:package>com.microsoft.schemas.office.word</xb:package>
+ </xb:namespace>
+
+ <xb:namespace uri="urn:schemas-microsoft-com:office:powerpoint">
+ <xb:package>com.microsoft.schemas.office.powerpoint</xb:package>
+ </xb:namespace>
+
+ <xb:namespace uri="urn:schemas-microsoft-com:vml">
+ <xb:package>com.microsoft.schemas.vml</xb:package>
+ </xb:namespace>
+
+ <xb:namespace uri="http://schemas.openxmlformats.org/markup-compatibility/2006">
+ <xb:package>com.microsoft.schemas.compatibility</xb:package>
+ </xb:namespace>
+
+ <xb:namespace uri="urn:schemas-poi-apache-org:vmldrawing">
+ <xb:package>org.apache.poi.schemas.vmldrawing</xb:package>
+ </xb:namespace>
+
+</xb:config> \ No newline at end of file
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/vmlDrawing.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/vmlDrawing.xsd
new file mode 100644
index 0000000000..ec37e6eaf6
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/vmlDrawing.xsd
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ====================================================================
+ 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.
+ ====================================================================
+-->
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:schemas-poi-apache-org:vmldrawing"
+ targetNamespace="urn:schemas-poi-apache-org:vmldrawing"
+>
+ <xsd:import namespace="urn:schemas-microsoft-com:vml" schemaLocation="vml-main.xsd"/>
+ <xsd:import namespace="urn:schemas-microsoft-com:office:office" schemaLocation="vml-officeDrawing.xsd"/>
+ <xsd:import namespace="urn:schemas-microsoft-com:office:excel" schemaLocation="vml-spreadsheetDrawing.xsd"/>
+ <xsd:element name="xml" type="CT_XML"/>
+ <xsd:complexType name="CT_XML">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:any namespace="urn:schemas-microsoft-com:office:office"/>
+ <xsd:any namespace="urn:schemas-microsoft-com:vml"/>
+ <xsd:any namespace="urn:schemas-microsoft-com:office:excel"/>
+ </xsd:choice>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/xmldsig-core-schema.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/xmldsig-core-schema.xsd
new file mode 100644
index 0000000000..df126b30e6
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/schemas/xmldsig-core-schema.xsd
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE schema
+ PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "http://www.w3.org/2001/XMLSchema.dtd"
+ [
+ <!ATTLIST schema
+ xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#">
+ <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
+ <!ENTITY % p ''>
+ <!ENTITY % s ''>
+ ]>
+
+<!-- Schema for XML Signatures
+ http://www.w3.org/2000/09/xmldsig#
+ $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $
+
+ Copyright 2001 The Internet Society and W3C (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 document is governed by the W3C Software License [1] as described
+ in the FAQ [2].
+
+ [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
+-->
+
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+ targetNamespace="http://www.w3.org/2000/09/xmldsig#"
+ version="0.1" elementFormDefault="qualified">
+
+<!-- Basic Types Defined for Signatures -->
+
+<simpleType name="CryptoBinary">
+ <restriction base="base64Binary">
+ </restriction>
+</simpleType>
+
+<!-- Start Signature -->
+
+<element name="Signature" type="ds:SignatureType"/>
+<complexType name="SignatureType">
+ <sequence>
+ <element ref="ds:SignedInfo"/>
+ <element ref="ds:SignatureValue"/>
+ <element ref="ds:KeyInfo" minOccurs="0"/>
+ <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+ <element name="SignatureValue" type="ds:SignatureValueType"/>
+ <complexType name="SignatureValueType">
+ <simpleContent>
+ <extension base="base64Binary">
+ <attribute name="Id" type="ID" use="optional"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+
+<!-- Start SignedInfo -->
+
+<element name="SignedInfo" type="ds:SignedInfoType"/>
+<complexType name="SignedInfoType">
+ <sequence>
+ <element ref="ds:CanonicalizationMethod"/>
+ <element ref="ds:SignatureMethod"/>
+ <element ref="ds:Reference" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+ <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
+ <complexType name="CanonicalizationMethodType" mixed="true">
+ <sequence>
+ <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- (0,unbounded) elements from (1,1) namespace -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+
+ <element name="SignatureMethod" type="ds:SignatureMethodType"/>
+ <complexType name="SignatureMethodType" mixed="true">
+ <sequence>
+ <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- (0,unbounded) elements from (1,1) external namespace -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+
+<!-- Start Reference -->
+
+<element name="Reference" type="ds:ReferenceType"/>
+<complexType name="ReferenceType">
+ <sequence>
+ <element ref="ds:Transforms" minOccurs="0"/>
+ <element ref="ds:DigestMethod"/>
+ <element ref="ds:DigestValue"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="URI" type="anyURI" use="optional"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+</complexType>
+
+ <element name="Transforms" type="ds:TransformsType"/>
+ <complexType name="TransformsType">
+ <sequence>
+ <element ref="ds:Transform" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <element name="Transform" type="ds:TransformType"/>
+ <complexType name="TransformType" mixed="true">
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ <!-- (1,1) elements from (0,unbounded) namespaces -->
+ <element name="XPath" type="string"/>
+ </choice>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+
+<!-- End Reference -->
+
+<element name="DigestMethod" type="ds:DigestMethodType"/>
+<complexType name="DigestMethodType" mixed="true">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+</complexType>
+
+<element name="DigestValue" type="ds:DigestValueType"/>
+<simpleType name="DigestValueType">
+ <restriction base="base64Binary"/>
+</simpleType>
+
+<!-- End SignedInfo -->
+
+<!-- Start KeyInfo -->
+
+<element name="KeyInfo" type="ds:KeyInfoType"/>
+<complexType name="KeyInfoType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <element ref="ds:KeyName"/>
+ <element ref="ds:KeyValue"/>
+ <element ref="ds:RetrievalMethod"/>
+ <element ref="ds:X509Data"/>
+ <element ref="ds:PGPData"/>
+ <element ref="ds:SPKIData"/>
+ <element ref="ds:MgmtData"/>
+ <any processContents="lax" namespace="##other"/>
+ <!-- (1,1) elements from (0,unbounded) namespaces -->
+ </choice>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+ <element name="KeyName" type="string"/>
+ <element name="MgmtData" type="string"/>
+
+ <element name="KeyValue" type="ds:KeyValueType"/>
+ <complexType name="KeyValueType" mixed="true">
+ <choice>
+ <element ref="ds:DSAKeyValue"/>
+ <element ref="ds:RSAKeyValue"/>
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ </complexType>
+
+ <element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
+ <complexType name="RetrievalMethodType">
+ <sequence>
+ <element ref="ds:Transforms" minOccurs="0"/>
+ </sequence>
+ <attribute name="URI" type="anyURI"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+ </complexType>
+
+<!-- Start X509Data -->
+
+<element name="X509Data" type="ds:X509DataType"/>
+<complexType name="X509DataType">
+ <sequence maxOccurs="unbounded">
+ <choice>
+ <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
+ <element name="X509SKI" type="base64Binary"/>
+ <element name="X509SubjectName" type="string"/>
+ <element name="X509Certificate" type="base64Binary"/>
+ <element name="X509CRL" type="base64Binary"/>
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ </sequence>
+</complexType>
+
+<complexType name="X509IssuerSerialType">
+ <sequence>
+ <element name="X509IssuerName" type="string"/>
+ <element name="X509SerialNumber" type="integer"/>
+ </sequence>
+</complexType>
+
+<!-- End X509Data -->
+
+<!-- Begin PGPData -->
+
+<element name="PGPData" type="ds:PGPDataType"/>
+<complexType name="PGPDataType">
+ <choice>
+ <sequence>
+ <element name="PGPKeyID" type="base64Binary"/>
+ <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </sequence>
+ <sequence>
+ <element name="PGPKeyPacket" type="base64Binary"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </sequence>
+ </choice>
+</complexType>
+
+<!-- End PGPData -->
+
+<!-- Begin SPKIData -->
+
+<element name="SPKIData" type="ds:SPKIDataType"/>
+<complexType name="SPKIDataType">
+ <sequence maxOccurs="unbounded">
+ <element name="SPKISexp" type="base64Binary"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"/>
+ </sequence>
+</complexType>
+
+<!-- End SPKIData -->
+
+<!-- End KeyInfo -->
+
+<!-- Start Object (Manifest, SignatureProperty) -->
+
+<element name="Object" type="ds:ObjectType"/>
+<complexType name="ObjectType" mixed="true">
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <any namespace="##any" processContents="lax"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet -->
+ <attribute name="Encoding" type="anyURI" use="optional"/>
+</complexType>
+
+<element name="Manifest" type="ds:ManifestType"/>
+<complexType name="ManifestType">
+ <sequence>
+ <element ref="ds:Reference" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+<element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
+<complexType name="SignaturePropertiesType">
+ <sequence>
+ <element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+ <element name="SignatureProperty" type="ds:SignaturePropertyType"/>
+ <complexType name="SignaturePropertyType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ <!-- (1,1) elements from (1,unbounded) namespaces -->
+ </choice>
+ <attribute name="Target" type="anyURI" use="required"/>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+
+<!-- End Object (Manifest, SignatureProperty) -->
+
+<!-- Start Algorithm Parameters -->
+
+<simpleType name="HMACOutputLengthType">
+ <restriction base="integer"/>
+</simpleType>
+
+<!-- Start KeyValue Element-types -->
+
+<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
+<complexType name="DSAKeyValueType">
+ <sequence>
+ <sequence minOccurs="0">
+ <element name="P" type="ds:CryptoBinary"/>
+ <element name="Q" type="ds:CryptoBinary"/>
+ </sequence>
+ <element name="G" type="ds:CryptoBinary" minOccurs="0"/>
+ <element name="Y" type="ds:CryptoBinary"/>
+ <element name="J" type="ds:CryptoBinary" minOccurs="0"/>
+ <sequence minOccurs="0">
+ <element name="Seed" type="ds:CryptoBinary"/>
+ <element name="PgenCounter" type="ds:CryptoBinary"/>
+ </sequence>
+ </sequence>
+</complexType>
+
+<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
+<complexType name="RSAKeyValueType">
+ <sequence>
+ <element name="Modulus" type="ds:CryptoBinary"/>
+ <element name="Exponent" type="ds:CryptoBinary"/>
+ </sequence>
+</complexType>
+
+<!-- End KeyValue Element-types -->
+
+<!-- End Signature -->
+
+</schema>
diff --git a/poi-ooxml-full/src/main/xmlschema/org/apache/poi/xdgf/visio.xsd b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/xdgf/visio.xsd
new file mode 100644
index 0000000000..eec0b68c09
--- /dev/null
+++ b/poi-ooxml-full/src/main/xmlschema/org/apache/poi/xdgf/visio.xsd
@@ -0,0 +1,829 @@
+<!--
+ XML for Visio Schema
+ http://schemas.microsoft.com/office/visio/2011/1/core
+ Copyright (C) 2000-2002 Microsoft Corporation. All rights reserved.
+-->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://schemas.microsoft.com/office/visio/2012/main"
+ xmlns="http://schemas.microsoft.com/office/visio/2012/main"
+ xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
+
+ <xsd:annotation>
+ <xsd:documentation>
+ Permission to copy, display and distribute the contents of this document (the
+ "Specification"), in any medium for any purpose without fee or royalty is
+ hereby granted, provided that you include the following notice on ALL copies of
+ the Specification, or portions thereof, that you make:
+ Copyright (c) Microsoft Corporation. All rights reserved. Permission to copy,
+ display and distribute this document is available at:
+ http://msdn.microsoft.com/library/en-us/odcXMLRef/html/odcXMLRefLegalNotice.asp?frame=true.
+ No right to create modifications or derivatives of this Specification is
+ granted herein. There is a separate patent license available to parties
+ interested in implementing software programs that can read and write files that
+ conform to the Specification. This patent license is available at this
+ location: http://www.microsoft.com/mscorp/ip/format/xmlpatentlicense.asp.
+ THE SPECIFICATION IS PROVIDED "AS IS" AND MICROSOFT MAKES NO REPRESENTATIONS OR
+ WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE;
+ THAT THE CONTENTS OF THE SPECIFICATION ARE SUITABLE FOR ANY PURPOSE; NOR THAT
+ THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
+ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. MICROSOFT WILL NOT BE LIABLE FOR ANY
+ DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
+ OR RELATING TO ANY USE OR DISTRIBUTION OF THE SPECIFICATION.
+ The name and trademarks of Microsoft may NOT be used in any manner, including
+ advertising or publicity pertaining to the Specification or its contents
+ without specific, written prior permission. Title to copyright in the
+ Specification will at all times remain with Microsoft. No other rights are
+ granted by implication, estoppel or otherwise.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <!--
+ Root-level elements for different parts
+ -->
+ <!--document.xml-->
+ <xsd:element name="VisioDocument" type="VisioDocument_Type" />
+ <!--masters/masters.xml-->
+ <xsd:element name="Masters" type="Masters_Type" />
+ <!--masters/master#.xml-->
+ <xsd:element name="MasterContents" type="PageContents_Type" />
+ <!--pages/pages.xml-->
+ <xsd:element name="Pages" type="Pages_Type" />
+ <!--pages/page#.xml-->
+ <xsd:element name="PageContents" type="PageContents_Type" />
+ <!--data/connections.xml-->
+ <xsd:element name="DataConnections" type="DataConnections_Type" />
+ <!--data/recordsets.xml-->
+ <xsd:element name="DataRecordSets" type="DataRecordSets_Type" />
+ <!--comments.xml-->
+ <xsd:element name="Comments" type="Comments_Type" />
+ <!--extensions.xml-->
+ <xsd:element name="Extensions" type="Extensions_Type" />
+ <!--
+ Complex types
+ -->
+ <xsd:complexType name="VisioDocument_Type">
+ <xsd:sequence>
+ <xsd:element name="DocumentSettings" type="DocumentSettings_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="Colors" type="Colors_Type" minOccurs="0" maxOccurs="1" />
+ <xsd:element name="FaceNames" type="FaceNames_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="StyleSheets" type="StyleSheets_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="DocumentSheet" type="DocumentSheet_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="EventList" type="EventList_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="HeaderFooter" type="HeaderFooter_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="PublishSettings" type="PublishSettings_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+ processContents="lax" />
+ </xsd:sequence>
+ <xsd:anyAttribute namespace="##other" processContents="lax" />
+ </xsd:complexType>
+
+ <!--Sheet abstract base class-->
+ <xsd:complexType name="Sheet_Type" abstract="true">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="Cell" type="Cell_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="Trigger" type="Trigger_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="Section" type="Section_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+
+ <!--Sheets can hold and roundtrip arbitrary, unknown sub-XML-->
+ <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+ processContents="lax" />
+ </xsd:sequence>
+
+ <!--Style sheet IDs for inheritance-->
+ <xsd:attribute name="LineStyle" type="xsd:unsignedInt" />
+ <xsd:attribute name="FillStyle" type="xsd:unsignedInt" />
+ <xsd:attribute name="TextStyle" type="xsd:unsignedInt" />
+
+ <!--Sheets can hold and roundtrip arbitrary, unknown attributes-->
+ <xsd:anyAttribute namespace="##other" processContents="lax" />
+ </xsd:complexType>
+
+ <!--Section base types-->
+ <xsd:complexType name="Section_Type">
+ <xsd:sequence>
+ <!--Cells only show up directly under the Geometry section-->
+ <xsd:element name="Cell" type="Cell_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="Trigger" type="Trigger_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+
+ <!--All Sections have child rows-->
+ <xsd:element name="Row" type="Row_Type" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+
+ <xsd:attribute name="N" type="xsd:string" use="required" />
+ <xsd:attribute name="Del" type="xsd:boolean" />
+
+ <!--Only Geometry sections have indexes as there can be several in a Sheet-->
+ <xsd:attribute name="IX" type="xsd:unsignedInt" />
+ </xsd:complexType>
+
+ <!--Row base types-->
+ <xsd:complexType name="Row_Type">
+ <xsd:sequence>
+ <xsd:element name="Cell" type="Cell_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="Trigger" type="Trigger_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+
+ <!--The name attributes are only used on named rows-->
+ <xsd:attribute name="N" type="xsd:string" />
+ <xsd:attribute name="LocalName" type="xsd:string" />
+
+ <!--The index attribute is only used on indexed rows-->
+ <xsd:attribute name="IX" type="xsd:unsignedInt" />
+
+ <!--The type attribute is only used on Rows in the Geometry section-->
+ <xsd:attribute name="T" type="xsd:string" />
+
+ <!--Any row can be locally deleted-->
+ <xsd:attribute name="Del" type="xsd:boolean" />
+ </xsd:complexType>
+
+ <!--Cell base type-->
+ <xsd:complexType name="Cell_Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="RefBy" type="RefBy_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="N" type="xsd:string" use="required" />
+ <xsd:attribute name="U" type="xsd:string" />
+ <xsd:attribute name="E" type="xsd:string" />
+ <xsd:attribute name="F" type="xsd:string" />
+ <xsd:attribute name="V" type="xsd:string" />
+ </xsd:complexType>
+
+ <!--Trigger base type-->
+ <xsd:complexType name="Trigger_Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="RefBy" type="RefBy_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="N" type="xsd:string" use="required" />
+ </xsd:complexType>
+
+ <xsd:complexType name="DocumentSheet_Type">
+ <xsd:complexContent>
+ <xsd:extension base="Sheet_Type">
+ <xsd:attribute name="Name" type="xsd:string" />
+ <xsd:attribute name="NameU" type="xsd:string" />
+ <xsd:attribute name="IsCustomName" type="xsd:boolean" />
+ <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
+ <xsd:attribute name="UniqueID" type="xsd:string" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="StyleSheet_Type">
+ <xsd:complexContent>
+ <xsd:extension base="Sheet_Type">
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="Name" type="xsd:string" />
+ <xsd:attribute name="NameU" type="xsd:string" />
+ <xsd:attribute name="IsCustomName" type="xsd:boolean" />
+ <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="PageSheet_Type">
+ <xsd:complexContent>
+ <xsd:extension base="Sheet_Type">
+ <xsd:attribute name="UniqueID" type="xsd:string" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="ShapeSheet_Type">
+ <xsd:complexContent>
+ <xsd:extension base="Sheet_Type">
+ <xsd:sequence>
+ <!--Shape Text-->
+ <xsd:element name="Text" type="Text_Type" minOccurs="0" maxOccurs="1" />
+
+ <!--Legacy data fields-->
+ <xsd:element name="Data1" type="Data_Type" minOccurs="0" maxOccurs="1" />
+ <xsd:element name="Data2" type="Data_Type" minOccurs="0" maxOccurs="1" />
+ <xsd:element name="Data3" type="Data_Type" minOccurs="0" maxOccurs="1" />
+
+ <!--Foreign object data for images, OLE, ActiveX, etc.-->
+ <xsd:element name="ForeignData" type="ForeignData_Type" minOccurs="0"
+ maxOccurs="1" />
+
+ <!--Sub-shapes if this is a group-->
+ <xsd:element name="Shapes" type="Shapes_Type" minOccurs="0"
+ maxOccurs="1" />
+ </xsd:sequence>
+
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="OriginalID" type="xsd:unsignedInt" />
+ <xsd:attribute name="Del" type="xsd:boolean" />
+ <xsd:attribute name="MasterShape" type="xsd:unsignedInt" />
+ <xsd:attribute name="UniqueID" type="xsd:string" />
+ <xsd:attribute name="Name" type="xsd:string" />
+ <xsd:attribute name="NameU" type="xsd:string" />
+ <xsd:attribute name="IsCustomName" type="xsd:boolean" />
+ <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
+ <xsd:attribute name="Master" type="xsd:unsignedInt" />
+ <xsd:attribute name="Type" type="xsd:token" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="Text_Type" mixed="true">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="cp" type="cp_Type" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="pp" type="pp_Type" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="tp" type="tp_Type" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="fld" type="fld_Type" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:choice>
+ </xsd:complexType>
+
+ <!--Text fields-->
+ <xsd:complexType name="cp_Type">
+ <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="pp_Type">
+ <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="tp_Type">
+ <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="fld_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="Data_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="ForeignData_Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="Rel" type="Rel_Type" minOccurs="1" maxOccurs="1" />
+ </xsd:sequence>
+ <xsd:attribute name="ForeignType" type="xsd:token" use="required" />
+ <xsd:attribute name="ObjectType" type="xsd:unsignedInt" />
+ <xsd:attribute name="ShowAsIcon" type="xsd:boolean" />
+ <xsd:attribute name="ObjectWidth" type="xsd:double" />
+ <xsd:attribute name="ObjectHeight" type="xsd:double" />
+ <xsd:attribute name="MappingMode" type="xsd:unsignedShort" />
+ <xsd:attribute name="ExtentX" type="xsd:double" />
+ <xsd:attribute name="ExtentY" type="xsd:double" />
+ <xsd:attribute name="CompressionType" type="xsd:token" />
+ <xsd:attribute name="CompressionLevel" type="xsd:double" />
+ </xsd:complexType>
+
+ <xsd:complexType name="DocumentSettings_Type">
+ <xsd:all>
+ <xsd:element name="GlueSettings" type="GlueSettings_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="SnapSettings" type="SnapSettings_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="SnapExtensions" type="SnapExtensions_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="SnapAngles" type="SnapAngles_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="DynamicGridEnabled" type="DynamicGridEnabled_Type"
+ minOccurs="0" maxOccurs="1" />
+ <xsd:element name="ProtectStyles" type="ProtectStyles_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="ProtectShapes" type="ProtectShapes_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="ProtectMasters" type="ProtectMasters_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="ProtectBkgnds" type="ProtectBkgnds_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="CustomMenusFile" type="CustomMenusFile_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="CustomToolbarsFile" type="CustomToolbarsFile_Type"
+ minOccurs="0" maxOccurs="1" />
+ <xsd:element name="AttachedToolbars" type="AttachedToolbars_Type" minOccurs="0"
+ maxOccurs="1" />
+ </xsd:all>
+ <xsd:attribute name="TopPage" type="xsd:unsignedInt" />
+ <xsd:attribute name="DefaultTextStyle" type="xsd:unsignedInt" />
+ <xsd:attribute name="DefaultLineStyle" type="xsd:unsignedInt" />
+ <xsd:attribute name="DefaultFillStyle" type="xsd:unsignedInt" />
+ <xsd:attribute name="DefaultGuideStyle" type="xsd:unsignedInt" />
+ </xsd:complexType>
+ <xsd:complexType name="GlueSettings_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:int" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="SnapSettings_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:int" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="SnapExtensions_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:int" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="SnapAngles_Type">
+ <xsd:sequence>
+ <xsd:element name="SnapAngle" type="SnapAngle_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="SnapAngle_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:double" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="DynamicGridEnabled_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:boolean" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="ProtectStyles_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:boolean" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="ProtectShapes_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:boolean" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="ProtectMasters_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:boolean" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="ProtectBkgnds_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:boolean" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="CustomMenusFile_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="CustomToolbarsFile_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="AttachedToolbars_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:base64Binary" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="Colors_Type">
+ <xsd:sequence>
+ <xsd:element name="ColorEntry" type="ColorEntry_Type" minOccurs="1"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="ColorEntry_Type">
+ <xsd:attribute name="IX" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="RGB" type="xsd:string" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="FaceNames_Type">
+ <xsd:sequence>
+ <xsd:element name="FaceName" type="FaceName_Type" minOccurs="1"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="FaceName_Type">
+ <xsd:attribute name="NameU" type="xsd:string" use="required" />
+ <xsd:attribute name="UnicodeRanges" type="xsd:string" />
+ <xsd:attribute name="CharSets" type="xsd:string" />
+ <xsd:attribute name="Panos" type="xsd:string" />
+ <xsd:attribute name="Panose" type="xsd:string" />
+ <xsd:attribute name="Flags" type="xsd:unsignedInt" />
+ </xsd:complexType>
+ <xsd:complexType name="StyleSheets_Type">
+ <xsd:sequence>
+ <xsd:element name="StyleSheet" type="StyleSheet_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Masters_Type">
+ <xsd:sequence>
+ <xsd:element name="Master" type="Master_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="MasterShortcut" type="MasterShortcut_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Master_Type">
+ <xsd:all>
+ <xsd:element name="PageSheet" type="PageSheet_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="Rel" type="Rel_Type" minOccurs="1" maxOccurs="1" />
+ <xsd:element name="Icon" type="Icon_Type" minOccurs="0" maxOccurs="1" />
+ </xsd:all>
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="BaseID" type="xsd:string" />
+ <xsd:attribute name="UniqueID" type="xsd:string" />
+ <xsd:attribute name="MatchByName" type="xsd:boolean" />
+ <xsd:attribute name="Name" type="xsd:string" />
+ <xsd:attribute name="NameU" type="xsd:string" />
+ <xsd:attribute name="IsCustomName" type="xsd:boolean" />
+ <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
+ <xsd:attribute name="IconSize" type="xsd:unsignedShort" />
+ <xsd:attribute name="PatternFlags" type="xsd:unsignedShort" />
+ <xsd:attribute name="Prompt" type="xsd:string" />
+ <xsd:attribute name="Hidden" type="xsd:boolean" />
+ <xsd:attribute name="IconUpdate" type="xsd:boolean" />
+ <xsd:attribute name="AlignName" type="xsd:unsignedShort" />
+ <xsd:attribute name="MasterType" type="xsd:unsignedShort" />
+ </xsd:complexType>
+ <xsd:complexType name="Icon_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:base64Binary" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="MasterShortcut_Type">
+ <xsd:all>
+ <xsd:element name="Icon" type="Icon_Type" minOccurs="0" maxOccurs="1" />
+ </xsd:all>
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="Name" type="xsd:string" />
+ <xsd:attribute name="NameU" type="xsd:string" />
+ <xsd:attribute name="IsCustomName" type="xsd:boolean" />
+ <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
+ <xsd:attribute name="IconSize" type="xsd:unsignedShort" />
+ <xsd:attribute name="PatternFlags" type="xsd:unsignedShort" />
+ <xsd:attribute name="Prompt" type="xsd:string" />
+ <xsd:attribute name="ShortcutURL" type="xsd:string" />
+ <xsd:attribute name="ShortcutHelp" type="xsd:string" />
+ <xsd:attribute name="AlignName" type="xsd:unsignedShort" />
+ <xsd:attribute name="MasterType" type="xsd:unsignedShort" />
+ </xsd:complexType>
+ <xsd:complexType name="PageContents_Type">
+ <xsd:sequence>
+ <xsd:element name="Shapes" type="Shapes_Type" minOccurs="0" maxOccurs="1" />
+ <xsd:element name="Connects" type="Connects_Type" minOccurs="0"
+ maxOccurs="1" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Shapes_Type">
+ <xsd:sequence>
+ <xsd:element name="Shape" type="ShapeSheet_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Connects_Type">
+ <xsd:sequence>
+ <xsd:element name="Connect" type="Connect_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Connect_Type">
+ <xsd:attribute name="FromSheet" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="FromCell" type="xsd:string" />
+ <xsd:attribute name="FromPart" type="xsd:int" />
+ <xsd:attribute name="ToSheet" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="ToCell" type="xsd:string" />
+ <xsd:attribute name="ToPart" type="xsd:int" />
+ </xsd:complexType>
+ <xsd:complexType name="Pages_Type">
+ <xsd:sequence>
+ <xsd:element name="Page" type="Page_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Page_Type">
+ <xsd:all>
+ <xsd:element name="PageSheet" type="PageSheet_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="Rel" type="Rel_Type" minOccurs="1" maxOccurs="1" />
+ </xsd:all>
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="Name" type="xsd:string" />
+ <xsd:attribute name="NameU" type="xsd:string" />
+ <xsd:attribute name="IsCustomName" type="xsd:boolean" />
+ <xsd:attribute name="IsCustomNameU" type="xsd:boolean" />
+ <xsd:attribute name="Background" type="xsd:boolean" />
+ <xsd:attribute name="BackPage" type="xsd:unsignedInt" />
+ <xsd:attribute name="ViewScale" type="xsd:double" />
+ <xsd:attribute name="ViewCenterX" type="xsd:double" />
+ <xsd:attribute name="ViewCenterY" type="xsd:double" />
+ <xsd:attribute name="ReviewerID" type="xsd:unsignedInt" />
+ <xsd:attribute name="AssociatedPage" type="xsd:unsignedInt" />
+ </xsd:complexType>
+ <xsd:complexType name="EventList_Type">
+ <xsd:sequence>
+ <xsd:element name="EventItem" type="EventItem_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="EventItem_Type">
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="Action" type="xsd:unsignedShort" use="required" />
+ <xsd:attribute name="EventCode" type="xsd:unsignedShort" use="required" />
+ <xsd:attribute name="Enabled" type="xsd:boolean" />
+ <xsd:attribute name="Target" type="xsd:string" use="required" />
+ <xsd:attribute name="TargetArgs" type="xsd:string" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="HeaderFooter_Type">
+ <xsd:all>
+ <xsd:element name="HeaderMargin" type="HeaderMargin_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="FooterMargin" type="FooterMargin_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="HeaderLeft" type="HeaderLeft_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="HeaderCenter" type="HeaderCenter_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="HeaderRight" type="HeaderRight_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="FooterLeft" type="FooterLeft_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="FooterCenter" type="FooterCenter_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="FooterRight" type="FooterRight_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="HeaderFooterFont" type="HeaderFooterFont_Type" minOccurs="0"
+ maxOccurs="1" />
+ </xsd:all>
+ <xsd:attribute name="HeaderFooterColor" type="xsd:string" />
+ </xsd:complexType>
+ <xsd:complexType name="HeaderMargin_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:double">
+ <xsd:attribute name="Unit" type="xsd:string" />
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="FooterMargin_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:double">
+ <xsd:attribute name="Unit" type="xsd:string" />
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="HeaderLeft_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="HeaderCenter_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="HeaderRight_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="FooterLeft_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="FooterCenter_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="FooterRight_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string" />
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="HeaderFooterFont_Type">
+ <xsd:attribute name="Height" type="xsd:int" />
+ <xsd:attribute name="Width" type="xsd:int" />
+ <xsd:attribute name="Escapement" type="xsd:int" />
+ <xsd:attribute name="Orientation" type="xsd:int" />
+ <xsd:attribute name="Weight" type="xsd:int" />
+ <xsd:attribute name="Italic" type="xsd:unsignedByte" />
+ <xsd:attribute name="Underline" type="xsd:unsignedByte" />
+ <xsd:attribute name="StrikeOut" type="xsd:unsignedByte" />
+ <xsd:attribute name="CharSet" type="xsd:unsignedByte" />
+ <xsd:attribute name="OutPrecision" type="xsd:unsignedByte" />
+ <xsd:attribute name="ClipPrecision" type="xsd:unsignedByte" />
+ <xsd:attribute name="Quality" type="xsd:unsignedByte" />
+ <xsd:attribute name="PitchAndFamily" type="xsd:unsignedByte" />
+ <xsd:attribute name="FaceName" type="xsd:string" />
+ </xsd:complexType>
+ <xsd:complexType name="DataConnections_Type">
+ <xsd:sequence>
+ <xsd:element name="DataConnection" type="DataConnection_Type" minOccurs="1"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="NextID" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="DataConnection_Type">
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="FileName" type="xsd:string" use="required" />
+ <xsd:attribute name="ConnectionString" type="xsd:string" />
+ <xsd:attribute name="Command" type="xsd:string" />
+ <xsd:attribute name="FriendlyName" type="xsd:string" />
+ <xsd:attribute name="Timeout" type="xsd:unsignedInt" />
+ <xsd:attribute name="AlwaysUseConnectionFile" type="xsd:boolean" />
+ </xsd:complexType>
+ <xsd:complexType name="DataRecordSets_Type">
+ <xsd:sequence>
+ <xsd:element name="DataRecordSet" type="DataRecordSet_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="NextID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="ActiveRecordsetID" type="xsd:unsignedInt" />
+ <xsd:attribute name="DataWindowOrder" type="xsd:string" />
+ </xsd:complexType>
+ <xsd:complexType name="DataRecordSet_Type">
+ <xsd:sequence>
+ <xsd:element name="Rel" type="Rel_Type" minOccurs="1" maxOccurs="1" />
+ <xsd:element name="DataColumns" type="DataColumns_Type" minOccurs="1"
+ maxOccurs="1" />
+ <xsd:element name="PrimaryKey" type="PrimaryKey_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="RowMap" type="RowMap_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="RefreshConflict" type="RefreshConflict_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="AutoLinkComparison" type="AutoLinkComparison_Type"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="ConnectionID" type="xsd:unsignedInt" />
+ <xsd:attribute name="Command" type="xsd:string" />
+ <xsd:attribute name="Options" type="xsd:unsignedInt" />
+ <xsd:attribute name="TimeRefreshed" type="xsd:dateTime" />
+ <xsd:attribute name="NextRowID" type="xsd:unsignedInt" />
+ <xsd:attribute name="Name" type="xsd:string" />
+ <xsd:attribute name="RowOrder" type="xsd:boolean" />
+ <xsd:attribute name="RefreshOverwriteAll" type="xsd:boolean" />
+ <xsd:attribute name="RefreshNoReconciliationUI" type="xsd:boolean" />
+ <xsd:attribute name="RefreshInterval" type="xsd:unsignedInt" />
+ <xsd:attribute name="ReplaceLinks" type="xsd:unsignedInt" />
+ <xsd:attribute name="Checksum" type="xsd:unsignedInt" />
+ </xsd:complexType>
+ <xsd:complexType name="DataColumns_Type">
+ <xsd:sequence>
+ <xsd:element name="DataColumn" type="DataColumn_Type" minOccurs="1"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="SortColumn" type="xsd:string" />
+ <xsd:attribute name="SortAsc" type="xsd:boolean" />
+ </xsd:complexType>
+ <xsd:complexType name="DataColumn_Type">
+ <xsd:attribute name="ColumnNameID" type="xsd:string" use="required" />
+ <xsd:attribute name="Name" type="xsd:string" use="required" />
+ <xsd:attribute name="Label" type="xsd:string" use="required" />
+ <xsd:attribute name="OrigLabel" type="xsd:string" />
+ <xsd:attribute name="LangID" type="xsd:unsignedInt" />
+ <xsd:attribute name="Calendar" type="xsd:unsignedShort" />
+ <xsd:attribute name="DataType" type="xsd:unsignedShort" />
+ <xsd:attribute name="UnitType" type="xsd:string" />
+ <xsd:attribute name="Currency" type="xsd:unsignedShort" />
+ <xsd:attribute name="Degree" type="xsd:unsignedInt" />
+ <xsd:attribute name="DisplayWidth" type="xsd:unsignedInt" />
+ <xsd:attribute name="DisplayOrder" type="xsd:unsignedInt" />
+ <xsd:attribute name="Mapped" type="xsd:boolean" />
+ <xsd:attribute name="Hyperlink" type="xsd:boolean" />
+ </xsd:complexType>
+ <xsd:complexType name="PrimaryKey_Type">
+ <xsd:sequence>
+ <xsd:element name="RowKeyValue" type="RowKeyValue_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="ColumnNameID" type="xsd:string" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="RowKeyValue_Type">
+ <xsd:attribute name="RowID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="Value" type="xsd:string" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="RowMap_Type">
+ <xsd:attribute name="RowID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="PageID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="ShapeID" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="RefreshConflict_Type">
+ <xsd:attribute name="RowID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="ShapeID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="PageID" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="AutoLinkComparison_Type">
+ <xsd:attribute name="ColumnName" type="xsd:string" use="required" />
+ <xsd:attribute name="ContextType" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="ContextTypeLabel" type="xsd:string" />
+ </xsd:complexType>
+ <xsd:complexType name="PublishSettings_Type">
+ <xsd:sequence>
+ <xsd:element name="PublishedPage" type="PublishedPage_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="RefreshableData" type="RefreshableData_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Comments_Type">
+ <xsd:sequence>
+ <xsd:element name="AuthorList" type="AuthorList_Type" minOccurs="0"
+ maxOccurs="1" />
+ <xsd:element name="CommentList" type="CommentList_Type" minOccurs="0"
+ maxOccurs="1" />
+ </xsd:sequence>
+ <xsd:attribute name="ShowCommentTags" type="xsd:boolean" />
+ </xsd:complexType>
+ <xsd:complexType name="AuthorList_Type">
+ <xsd:sequence>
+ <xsd:element name="AuthorEntry" type="AuthorEntry_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AuthorEntry_Type">
+ <xsd:attribute name="Name" type="xsd:string" />
+ <xsd:attribute name="Initials" type="xsd:string" />
+ <xsd:attribute name="ResolutionID" type="xsd:string" />
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="CommentList_Type">
+ <xsd:sequence>
+ <xsd:element name="CommentEntry" type="CommentEntry_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CommentEntry_Type">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="AuthorID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="PageID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="ShapeID" type="xsd:unsignedInt" />
+ <xsd:attribute name="Date" type="xsd:dateTime" use="required" />
+ <xsd:attribute name="EditDate" type="xsd:dateTime" />
+ <xsd:attribute name="Done" type="xsd:boolean" />
+ <xsd:attribute name="CommentID" type="xsd:unsignedInt" use="required" />
+ <xsd:attribute name="AutoCommentType" type="xsd:unsignedInt" />
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="PublishedPage_Type">
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="RefreshableData_Type">
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="RefBy_Type">
+ <xsd:attribute name="T" type="xsd:string" use="required" />
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="Extensions_Type">
+ <xsd:sequence>
+ <xsd:element name="CellDef" type="CellDef_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="FunctionDef" type="FunctionDef_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="SectionDef" type="SectionDef_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CellDef_Type">
+ <xsd:attribute name="N" type="xsd:string" use="required" />
+ <xsd:attribute name="T" type="xsd:token" use="required" />
+ <xsd:attribute name="F" type="xsd:string" />
+ <xsd:attribute name="IX" type="xsd:unsignedByte" />
+ <xsd:attribute name="S" type="xsd:unsignedByte" />
+ </xsd:complexType>
+ <xsd:complexType name="FunctionDef_Type">
+ <xsd:attribute name="N" type="xsd:string" use="required" />
+ </xsd:complexType>
+ <xsd:complexType name="SectionDef_Type">
+ <xsd:sequence>
+ <xsd:element name="CellDef" type="CellDef_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ <xsd:element name="RowDef" type="RowDef_Type" minOccurs="0" maxOccurs="1" />
+ </xsd:sequence>
+ <xsd:attribute name="N" type="xsd:string" use="required" />
+ <xsd:attribute name="T" type="xsd:string" />
+ <xsd:attribute name="S" type="xsd:unsignedByte" />
+ </xsd:complexType>
+ <xsd:complexType name="RowDef_Type">
+ <xsd:sequence>
+ <xsd:element name="CellDef" type="CellDef_Type" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="Rel_Type">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+</xsd:schema> \ No newline at end of file