From f8bb0e49436bc8a75eae57fc17806eef97a4c3e1 Mon Sep 17 00:00:00 2001 From: Quentin Machard Date: Wed, 17 May 2017 12:20:59 +0200 Subject: [PATCH 001/139] Fix. Text is subscripted when set superscript to false Reset the subscript to false only when superscript is true Reset the superscript to false only when subscript is true Update Testcases --- src/PhpPresentation/Style/Font.php | 12 +++++-- .../PhpPresentation/Tests/Style/FontTest.php | 34 ++++++++++++++----- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/src/PhpPresentation/Style/Font.php b/src/PhpPresentation/Style/Font.php index 966c7a90fd..45f57ad007 100644 --- a/src/PhpPresentation/Style/Font.php +++ b/src/PhpPresentation/Style/Font.php @@ -290,8 +290,11 @@ public function setSuperScript($pValue = false) if ($pValue == '') { $pValue = false; } + $this->superScript = $pValue; - $this->subScript = !$pValue; + + // Set SubScript at false only if SuperScript is true + if($pValue == true) $this->subScript = false; return $this; } @@ -317,8 +320,11 @@ public function setSubScript($pValue = false) if ($pValue == '') { $pValue = false; } - $this->subScript = $pValue; - $this->superScript = !$pValue; + + $this->subScript = $pValue; + + // Set SuperScript at false only if SubScript is true + if($pValue == true) $this->superScript = false; return $this; } diff --git a/tests/PhpPresentation/Tests/Style/FontTest.php b/tests/PhpPresentation/Tests/Style/FontTest.php index 6f1b1e6a7d..cd3f725feb 100644 --- a/tests/PhpPresentation/Tests/Style/FontTest.php +++ b/tests/PhpPresentation/Tests/Style/FontTest.php @@ -183,16 +183,25 @@ public function testSetIsSubScript() $object = new Font(); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript()); $this->assertFalse($object->isSubScript()); - $this->assertTrue($object->isSuperScript()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript('')); $this->assertFalse($object->isSubScript()); - $this->assertTrue($object->isSuperScript()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); $this->assertFalse($object->isSubScript()); - $this->assertTrue($object->isSuperScript()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); $this->assertTrue($object->isSubScript()); - $this->assertFalse($object->isSuperScript()); + + // Test toggle of SubScript + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); + $this->assertFalse($object->isSubScript()); + + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); + $this->assertFalse($object->isSubScript()); + + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); + $this->assertTrue($object->isSubScript()); } /** @@ -203,16 +212,25 @@ public function testSetIsSuperScript() $object = new Font(); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript()); $this->assertFalse($object->isSuperScript()); - $this->assertTrue($object->isSubScript()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript('')); $this->assertFalse($object->isSuperScript()); - $this->assertTrue($object->isSubScript()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); $this->assertFalse($object->isSuperScript()); - $this->assertTrue($object->isSubScript()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); $this->assertTrue($object->isSuperScript()); - $this->assertFalse($object->isSubScript()); + + // Test toggle of SubScript + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); + $this->assertFalse($object->isSuperScript()); + + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); + $this->assertFalse($object->isSuperScript()); + + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); + $this->assertTrue($object->isSuperScript()); } /** From 962f667a874e4755c4a4e8239b6b876108f0b759 Mon Sep 17 00:00:00 2001 From: Quentin Machard Date: Wed, 17 May 2017 14:23:10 +0200 Subject: [PATCH 002/139] Fix. Some coding style issues --- src/PhpPresentation/Style/Font.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/PhpPresentation/Style/Font.php b/src/PhpPresentation/Style/Font.php index 45f57ad007..ee5ddd0d82 100644 --- a/src/PhpPresentation/Style/Font.php +++ b/src/PhpPresentation/Style/Font.php @@ -294,7 +294,9 @@ public function setSuperScript($pValue = false) $this->superScript = $pValue; // Set SubScript at false only if SuperScript is true - if($pValue == true) $this->subScript = false; + if ($pValue === true) { + $this->subScript = false; + } return $this; } @@ -324,7 +326,9 @@ public function setSubScript($pValue = false) $this->subScript = $pValue; // Set SuperScript at false only if SubScript is true - if($pValue == true) $this->superScript = false; + if ($pValue === true) { + $this->superScript = false; + } return $this; } From 7bed58da0eb38e49a15fc9bb0246b2ec4db075fd Mon Sep 17 00:00:00 2001 From: Quentin Machard Date: Wed, 17 May 2017 14:26:13 +0200 Subject: [PATCH 003/139] Fix. Use space insteadof tab --- src/PhpPresentation/Style/Font.php | 16 +++---- .../PhpPresentation/Tests/Style/FontTest.php | 44 +++++++++---------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/PhpPresentation/Style/Font.php b/src/PhpPresentation/Style/Font.php index ee5ddd0d82..e4b49d0f36 100644 --- a/src/PhpPresentation/Style/Font.php +++ b/src/PhpPresentation/Style/Font.php @@ -293,10 +293,10 @@ public function setSuperScript($pValue = false) $this->superScript = $pValue; - // Set SubScript at false only if SuperScript is true - if ($pValue === true) { - $this->subScript = false; - } + // Set SubScript at false only if SuperScript is true + if ($pValue === true) { + $this->subScript = false; + } return $this; } @@ -325,10 +325,10 @@ public function setSubScript($pValue = false) $this->subScript = $pValue; - // Set SuperScript at false only if SubScript is true - if ($pValue === true) { - $this->superScript = false; - } + // Set SuperScript at false only if SubScript is true + if ($pValue === true) { + $this->superScript = false; + } return $this; } diff --git a/tests/PhpPresentation/Tests/Style/FontTest.php b/tests/PhpPresentation/Tests/Style/FontTest.php index cd3f725feb..844401b374 100644 --- a/tests/PhpPresentation/Tests/Style/FontTest.php +++ b/tests/PhpPresentation/Tests/Style/FontTest.php @@ -190,18 +190,18 @@ public function testSetIsSubScript() $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); $this->assertTrue($object->isSubScript()); - // Test toggle of SubScript - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); - $this->assertFalse($object->isSubScript()); - - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); - $this->assertFalse($object->isSubScript()); - - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); - $this->assertTrue($object->isSubScript()); + // Test toggle of SubScript + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); + $this->assertFalse($object->isSubScript()); + + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); + $this->assertFalse($object->isSubScript()); + + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); + $this->assertTrue($object->isSubScript()); } /** @@ -219,18 +219,18 @@ public function testSetIsSuperScript() $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); $this->assertTrue($object->isSuperScript()); - // Test toggle of SubScript - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); - $this->assertFalse($object->isSuperScript()); + // Test toggle of SubScript + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(false)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); + $this->assertFalse($object->isSuperScript()); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); - $this->assertFalse($object->isSuperScript()); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(true)); + $this->assertFalse($object->isSuperScript()); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); - $this->assertTrue($object->isSuperScript()); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSuperScript(true)); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setSubScript(false)); + $this->assertTrue($object->isSuperScript()); } /** From 200992b19bcc96bb8d41318ed0a8eb7cf4d78b1f Mon Sep 17 00:00:00 2001 From: kw-pr Date: Fri, 21 Jul 2017 16:10:17 +0200 Subject: [PATCH 004/139] Remove temp file tempnam() creates a file that is not removed. Only $pFilename . '.xlsx' is removed by $this->writeSpreadsheet(). --- src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index d8064aec03..6796d3ae23 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -37,6 +37,11 @@ public function render() $this->getZip()->addFromString('ppt/charts/_rels/' . $shape->getIndexedFilename() . '.rels', $this->writeChartRelationships($shape)); $pFilename = tempnam(sys_get_temp_dir(), 'PHPExcel'); $this->getZip()->addFromString('ppt/embeddings/' . $shape->getIndexedFilename() . '.xlsx', $this->writeSpreadsheet($this->getPresentation(), $shape, $pFilename . '.xlsx')); + + // remove temp file + if (@unlink($pFilename) === false) { + throw new \Exception('The file ' . $pFilename . ' could not removed.'); + } } } } From 668c38ab7a391a79574e4598736c148da80c993f Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Sat, 5 Aug 2017 14:30:51 +0200 Subject: [PATCH 005/139] PHP 5.3 is not supported anymore by Travis CI : https://docs.travis-ci.com/user/languages/php/ --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a990503629..59e06d6bca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,6 @@ sudo: false language: php php: - - 5.3 - 5.4 - 5.5 - 5.6 From c076f90b299a2dfd340007b43c7fe12ae03b55d4 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Sat, 5 Aug 2017 22:28:04 +0200 Subject: [PATCH 006/139] #382 : Improve tests for validating the OOXML Schema --- .../PowerPoint2007/CommentAuthorsTest.php | 4 + .../Writer/PowerPoint2007/DocPropsAppTest.php | 2 + .../PowerPoint2007/DocPropsCoreTest.php | 4 + .../PowerPoint2007/DocPropsCustomTest.php | 3 + .../PowerPoint2007/DocPropsThumbnailTest.php | 2 + .../Writer/PowerPoint2007/PptChartsTest.php | 107 +- .../Writer/PowerPoint2007/PptCommentsTest.php | 2 + .../Writer/PowerPoint2007/PptMediaTest.php | 4 + .../PowerPoint2007/PptPresPropsTest.php | 3 + .../PowerPoint2007/PptPresentationTest.php | 1 + .../PowerPoint2007/PptSlideMastersTest.php | 4 +- .../Writer/PowerPoint2007/PptSlidesTest.php | 64 + .../PowerPoint2007/PptTablePropsTest.php | 1 + .../PowerPoint2007/PptViewPropsTest.php | 3 + .../PowerPoint2007/RelationshipsTest.php | 1 + .../Writer/PowerPoint2007/SchemaTest.php | 485 - .../Tests/Writer/PowerPoint2007Test.php | 4 + .../_includes/PhpPresentationTestCase.php | 51 +- tests/resources/schema/ooxml/dml-chart.xsd | 5318 +++-- .../schema/ooxml/dml-chartDrawing.xsd | 480 +- .../schema/ooxml/dml-compatibility.xsd | 20 + tests/resources/schema/ooxml/dml-diagram.xsd | 4689 +++- .../schema/ooxml/dml-lockedCanvas.xsd | 18 +- tests/resources/schema/ooxml/dml-main.xsd | 12698 +++++++--- tests/resources/schema/ooxml/dml-picture.xsd | 63 +- .../schema/ooxml/dml-spreadsheetDrawing.xsd | 609 +- .../ooxml/dml-wordprocessingDrawing.xsd | 844 +- tests/resources/schema/ooxml/pml-mso2010.xsd | 10 + tests/resources/schema/ooxml/pml.xsd | 6498 +++-- .../shared-additionalCharacteristics.xsd | 98 +- .../schema/ooxml/shared-bibliography.xsd | 673 +- .../schema/ooxml/shared-commonSimpleTypes.xsd | 560 +- .../ooxml/shared-customXmlDataProperties.xsd | 65 +- .../shared-customXmlSchemaProperties.xsd | 56 +- .../ooxml/shared-documentPropertiesCustom.xsd | 272 +- .../shared-documentPropertiesExtended.xsd | 234 +- .../shared-documentPropertiesVariantTypes.xsd | 992 +- tests/resources/schema/ooxml/shared-math.xsd | 2045 +- .../ooxml/shared-relationshipReference.xsd | 59 +- tests/resources/schema/ooxml/sml.xsd | 19835 ++++++++++++---- tests/resources/schema/ooxml/vml-main.xsd | 1679 ++ .../schema/ooxml/vml-officeDrawing.xsd | 1614 ++ .../schema/ooxml/vml-presentationDrawing.xsd | 23 + .../schema/ooxml/vml-spreadsheetDrawing.xsd | 465 + .../ooxml/vml-wordprocessingDrawing.xsd | 358 + tests/resources/schema/ooxml/wml.xsd | 15277 +++++++++--- 46 files changed, 58882 insertions(+), 17415 deletions(-) delete mode 100644 tests/PhpPresentation/Tests/Writer/PowerPoint2007/SchemaTest.php create mode 100644 tests/resources/schema/ooxml/dml-compatibility.xsd create mode 100644 tests/resources/schema/ooxml/pml-mso2010.xsd create mode 100644 tests/resources/schema/ooxml/vml-main.xsd create mode 100644 tests/resources/schema/ooxml/vml-officeDrawing.xsd create mode 100644 tests/resources/schema/ooxml/vml-presentationDrawing.xsd create mode 100644 tests/resources/schema/ooxml/vml-spreadsheetDrawing.xsd create mode 100644 tests/resources/schema/ooxml/vml-wordprocessingDrawing.xsd diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/CommentAuthorsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/CommentAuthorsTest.php index 453f0a97af..0c84664496 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/CommentAuthorsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/CommentAuthorsTest.php @@ -27,11 +27,13 @@ public function testComments() $this->assertZipXmlAttributeEquals('ppt/commentAuthors.xml', $expectedElement, 'id', 0); $this->assertZipXmlAttributeEquals('ppt/commentAuthors.xml', $expectedElement, 'name', $expectedName); $this->assertZipXmlAttributeEquals('ppt/commentAuthors.xml', $expectedElement, 'initials', $expectedInitials); + $this->assertIsSchemaOOXMLValid(); } public function testWithoutComment() { $this->assertZipFileNotExists('ppt/commentAuthors.xml'); + $this->assertIsSchemaOOXMLValid(); } public function testWithoutCommentAuthor() @@ -40,6 +42,7 @@ public function testWithoutCommentAuthor() $this->oPresentation->getActiveSlide()->addShape($oComment); $this->assertZipFileNotExists('ppt/commentAuthors.xml'); + $this->assertIsSchemaOOXMLValid(); } public function testWithSameAuthor() @@ -58,5 +61,6 @@ public function testWithSameAuthor() $this->assertZipFileExists('ppt/commentAuthors.xml'); $this->assertZipXmlElementExists('ppt/commentAuthors.xml', $expectedElement); $this->assertZipXmlElementCount('ppt/commentAuthors.xml', $expectedElement, 1); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsAppTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsAppTest.php index e8019c551a..a4212fa690 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsAppTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsAppTest.php @@ -17,6 +17,7 @@ class DocPropsAppTest extends PhpPresentationTestCase public function testRender() { $this->assertZipFileExists('docProps/app.xml'); + $this->assertIsSchemaOOXMLValid(); } public function testCompany() @@ -28,5 +29,6 @@ public function testCompany() $this->assertZipFileExists('docProps/app.xml'); $this->assertZipXmlElementExists('docProps/app.xml', '/Properties/Company'); $this->assertZipXmlElementEquals('docProps/app.xml', '/Properties/Company', $expected); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCoreTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCoreTest.php index 2c3fb61126..9bf83df0ab 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCoreTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCoreTest.php @@ -12,6 +12,7 @@ public function testRender() { $this->assertZipFileExists('docProps/core.xml'); $this->assertZipXmlElementNotExists('docProps/core.xml', '/cp:coreProperties/cp:contentStatus'); + $this->assertIsSchemaOOXMLValid(); } public function testDocumentProperties() @@ -39,6 +40,7 @@ public function testDocumentProperties() $this->assertZipXmlElementEquals('docProps/core.xml', '/cp:coreProperties/cp:keywords', $expected); $this->assertZipXmlElementExists('docProps/core.xml', '/cp:coreProperties/cp:category'); $this->assertZipXmlElementEquals('docProps/core.xml', '/cp:coreProperties/cp:category', $expected); + $this->assertIsSchemaOOXMLValid(); } public function testMarkAsFinalTrue() @@ -47,6 +49,7 @@ public function testMarkAsFinalTrue() $this->assertZipXmlElementExists('docProps/core.xml', '/cp:coreProperties/cp:contentStatus'); $this->assertZipXmlElementEquals('docProps/core.xml', '/cp:coreProperties/cp:contentStatus', 'Final'); + $this->assertIsSchemaOOXMLValid(); } public function testMarkAsFinalFalse() @@ -54,5 +57,6 @@ public function testMarkAsFinalFalse() $this->oPresentation->getPresentationProperties()->markAsFinal(false); $this->assertZipXmlElementNotExists('docProps/core.xml', '/cp:coreProperties/cp:contentStatus'); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCustomTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCustomTest.php index 7e031f1625..3cb1e404d9 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCustomTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCustomTest.php @@ -12,6 +12,7 @@ public function testRender() { $this->assertZipFileExists('docProps/custom.xml'); $this->assertZipXmlElementNotExists('docProps/custom.xml', '/Properties/property[@name="_MarkAsFinal"]'); + $this->assertIsSchemaOOXMLValid(); } public function testMarkAsFinalTrue() @@ -22,6 +23,7 @@ public function testMarkAsFinalTrue() $this->assertZipXmlElementExists('docProps/custom.xml', '/Properties/property'); $this->assertZipXmlElementExists('docProps/custom.xml', '/Properties/property[@pid="2"][@fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}"][@name="_MarkAsFinal"]'); $this->assertZipXmlElementExists('docProps/custom.xml', '/Properties/property[@pid="2"][@fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}"][@name="_MarkAsFinal"]/vt:bool'); + $this->assertIsSchemaOOXMLValid(); } public function testMarkAsFinalFalse() @@ -29,5 +31,6 @@ public function testMarkAsFinalFalse() $this->oPresentation->getPresentationProperties()->markAsFinal(false); $this->assertZipXmlElementNotExists('docProps/custom.xml', '/Properties/property[@name="_MarkAsFinal"]'); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsThumbnailTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsThumbnailTest.php index aa4d46dbe9..0aad767255 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsThumbnailTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsThumbnailTest.php @@ -15,6 +15,7 @@ class DocPropsThumbnailTest extends PhpPresentationTestCase public function testRender() { $this->assertZipFileNotExists('docProps/thumbnail.jpeg'); + $this->assertIsSchemaOOXMLValid(); } public function testFeatureThumbnail() @@ -23,5 +24,6 @@ public function testFeatureThumbnail() $this->oPresentation->getPresentationProperties()->setThumbnailPath($imagePath); $this->assertZipFileExists('docProps/thumbnail.jpeg'); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php index 5f407eec3e..89dc1f58ad 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php @@ -69,6 +69,7 @@ public function testTitleVisibilityTrue() $this->assertTrue($oShape->getTitle()->isVisible()); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '0'); + $this->assertIsSchemaOOXMLValid(); } public function testTitleVisibilityFalse() @@ -85,6 +86,7 @@ public function testTitleVisibilityFalse() $this->assertFalse($oShape->getTitle()->isVisible()); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '1'); + $this->assertIsSchemaOOXMLValid(); } public function testAxisFont() @@ -124,6 +126,8 @@ public function testAxisFont() $this->assertZipXmlAttributeEquals($pathShape, $element, 'sz', 1600); $this->assertZipXmlAttributeEquals($pathShape, $element, 'strike', 'noStrike'); $this->assertZipXmlAttributeEquals($pathShape, $element, 'u', Font::UNDERLINE_DASH); + + $this->assertIsSchemaOOXMLValid(); } public function testAxisOutline() @@ -146,7 +150,6 @@ public function testAxisOutline() $oShape->getPlotArea()->getAxisY()->getOutline()->getFill()->setFillType(Fill::FILL_SOLID); $oShape->getPlotArea()->getAxisY()->getOutline()->getFill()->getStartColor()->setRGB($expectedColorY); - $element = '/c:chartSpace/c:chart/c:plotArea/c:catAx/c:spPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $element = '/c:chartSpace/c:chart/c:plotArea/c:catAx/c:spPr/a:ln'; @@ -163,6 +166,8 @@ public function testAxisOutline() $element = '/c:chartSpace/c:chart/c:plotArea/c:valAx/c:spPr/a:ln/a:solidFill/a:srgbClr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $expectedColorY); + + $this->assertIsSchemaOOXMLValid(); } public function testAxisVisibilityFalse() @@ -179,6 +184,8 @@ public function testAxisVisibilityFalse() $this->assertFalse($oShape->getPlotArea()->getAxisX()->isVisible()); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '1'); + + $this->assertIsSchemaOOXMLValid(); } public function testAxisVisibilityTrue() @@ -195,6 +202,8 @@ public function testAxisVisibilityTrue() $this->assertTrue($oShape->getPlotArea()->getAxisX()->isVisible()); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '0'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeArea() @@ -214,6 +223,8 @@ public function testTypeArea() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $element = '/c:chartSpace/c:chart/c:plotArea/c:areaChart/c:ser'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeAxisBounds() @@ -233,6 +244,8 @@ public function testTypeAxisBounds() $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); + $this->assertIsSchemaOOXMLValid(); + $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $this->resetPresentationFile(); @@ -240,6 +253,8 @@ public function testTypeAxisBounds() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', $value); + $this->assertIsSchemaOOXMLValid(); + $oShape->getPlotArea()->getAxisX()->setMinBounds(null); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); $this->resetPresentationFile(); @@ -248,6 +263,8 @@ public function testTypeAxisBounds() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); + $this->assertIsSchemaOOXMLValid(); + $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); $this->resetPresentationFile(); @@ -256,6 +273,8 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', $value); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeAxisTickMark() @@ -277,6 +296,8 @@ public function testTypeAxisTickMark() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', Axis::TICK_MARK_NONE); + $this->assertIsSchemaOOXMLValid(); + $oShape->getPlotArea()->getAxisY()->setMinorTickMark($value); $this->resetPresentationFile(); @@ -285,6 +306,8 @@ public function testTypeAxisTickMark() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', $value); + $this->assertIsSchemaOOXMLValid(); + $oShape->getPlotArea()->getAxisY()->setMinorTickMark(); $oShape->getPlotArea()->getAxisY()->setMajorTickMark($value); $this->resetPresentationFile(); @@ -294,6 +317,8 @@ public function testTypeAxisTickMark() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); + $this->assertIsSchemaOOXMLValid(); + $oShape->getPlotArea()->getAxisY()->setMinorTickMark($value); $oShape->getPlotArea()->getAxisY()->setMajorTickMark($value); $this->resetPresentationFile(); @@ -302,6 +327,8 @@ public function testTypeAxisTickMark() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', $value); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeAxisUnit() @@ -321,6 +348,8 @@ public function testTypeAxisUnit() $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); + $this->assertIsSchemaOOXMLValid(); + $oShape->getPlotArea()->getAxisY()->setMinorUnit($value); $this->resetPresentationFile(); @@ -328,6 +357,8 @@ public function testTypeAxisUnit() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', $value); + $this->assertIsSchemaOOXMLValid(); + $oShape->getPlotArea()->getAxisY()->setMinorUnit(null); $oShape->getPlotArea()->getAxisY()->setMajorUnit($value); $this->resetPresentationFile(); @@ -336,6 +367,8 @@ public function testTypeAxisUnit() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); + $this->assertIsSchemaOOXMLValid(); + $oShape->getPlotArea()->getAxisY()->setMinorUnit($value); $oShape->getPlotArea()->getAxisY()->setMajorUnit($value); $this->resetPresentationFile(); @@ -344,6 +377,8 @@ public function testTypeAxisUnit() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', $value); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeBar() @@ -375,6 +410,8 @@ public function testTypeBar() $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); $element = '/c:chartSpace/c:chart/c:plotArea/c:barChart/c:gapWidth'; $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $valueGapWidthPercent); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeBar3D() @@ -406,6 +443,8 @@ public function testTypeBar3D() $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:gapWidth'; $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $valueGapWidthPercent); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeBar3DSubScript() @@ -422,6 +461,8 @@ public function testTypeBar3DSubScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-25000'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeBar3DSuperScript() @@ -438,6 +479,8 @@ public function testTypeBar3DSuperScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '30000'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeBar3DBarDirection() @@ -454,6 +497,8 @@ public function testTypeBar3DBarDirection() $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:barDir'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', Bar3D::DIRECTION_HORIZONTAL); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeLine() @@ -474,6 +519,8 @@ public function testTypeLine() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $element = '/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:tx/c:v'; $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeLineGridlines() @@ -533,6 +580,8 @@ public function testTypeLineGridlines() $this->assertZipXmlAttributeExists('ppt/charts/' . $oShape->getIndexedFilename(), $arrayTest['expectedElementColor'], 'val'); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $arrayTest['expectedElementColor'], 'val', $expectedColor->getRGB()); + $this->assertIsSchemaOOXMLValid(); + $this->resetPresentationFile(); } } @@ -559,6 +608,8 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedEltSymbol, 'val', $expectedSymbol); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', $expectedSize); + $this->assertIsSchemaOOXMLValid(); + $oSeries->getMarker()->setSize(1); $oLine->setSeries(array($oSeries)); $this->resetPresentationFile(); @@ -566,6 +617,8 @@ public function testTypeLineMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', 2); + $this->assertIsSchemaOOXMLValid(); + $oSeries->getMarker()->setSize(73); $oLine->setSeries(array($oSeries)); $this->resetPresentationFile(); @@ -573,12 +626,16 @@ public function testTypeLineMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', 72); + $this->assertIsSchemaOOXMLValid(); + $oSeries->getMarker()->setSymbol(Marker::SYMBOL_NONE); $oLine->setSeries(array($oSeries)); $this->resetPresentationFile(); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedEltSymbol); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeLineSeriesOutline() @@ -603,6 +660,8 @@ public function testTypeLineSeriesOutline() $this->assertZipFileExists('ppt/charts/' . $oShape->getIndexedFilename()); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement); + $this->assertIsSchemaOOXMLValid(); + $oSeries->setOutline($oOutline); $oLine->setSeries(array($oSeries)); $this->resetPresentationFile(); @@ -611,6 +670,8 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement, 'w', $expectedWidthEmu); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement . '/a:solidFill'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeLineSubScript() @@ -627,6 +688,8 @@ public function testTypeLineSubScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-25000'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeLineSuperScript() @@ -643,6 +706,8 @@ public function testTypeLineSuperScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '30000'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypePie() @@ -674,12 +739,16 @@ public function testTypePie() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 0); + $this->assertIsSchemaOOXMLValid(); + $oSeries->setShowLegendKey(true); $this->resetPresentationFile(); $element = '/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:showLegendKey'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 1); + + $this->assertIsSchemaOOXMLValid(); } public function testTypePieSeparator() @@ -696,12 +765,16 @@ public function testTypePieSeparator() $element = '/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:separator'; $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $this->assertIsSchemaOOXMLValid(); + $oSeries->setSeparator($value); $this->resetPresentationFile(); $element = '/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:separator'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $value); + + $this->assertIsSchemaOOXMLValid(); } public function testTypePie3D() @@ -729,6 +802,8 @@ public function testTypePie3D() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $element = '/c:chartSpace/c:chart/c:plotArea/c:pie3DChart/c:ser/c:tx/c:v'; $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); + + $this->assertIsSchemaOOXMLValid(); } public function testTypePie3DExplosion() @@ -747,6 +822,8 @@ public function testTypePie3DExplosion() $element = '/c:chartSpace/c:chart/c:plotArea/c:pie3DChart/c:ser/c:explosion'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $value); + + $this->assertIsSchemaOOXMLValid(); } public function testTypePie3DSubScript() @@ -763,6 +840,8 @@ public function testTypePie3DSubScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:pie3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-25000'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypePie3DSuperScript() @@ -779,6 +858,8 @@ public function testTypePie3DSuperScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:pie3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '30000'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeScatter() @@ -803,12 +884,16 @@ public function testTypeScatter() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 0); + $this->assertIsSchemaOOXMLValid(); + $oSeries->setShowLegendKey(true); $this->resetPresentationFile(); $element = '/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:dLbls/c:showLegendKey'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 1); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeScatterMarker() @@ -833,6 +918,8 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedEltSymbol, 'val', $expectedSymbol); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', $expectedSize); + $this->assertIsSchemaOOXMLValid(); + $oSeries->getMarker()->setSize(1); $oScatter->setSeries(array($oSeries)); $this->resetPresentationFile(); @@ -840,6 +927,8 @@ public function testTypeScatterMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', 2); + $this->assertIsSchemaOOXMLValid(); + $oSeries->getMarker()->setSize(73); $oScatter->setSeries(array($oSeries)); $this->resetPresentationFile(); @@ -847,12 +936,16 @@ public function testTypeScatterMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', 72); + $this->assertIsSchemaOOXMLValid(); + $oSeries->getMarker()->setSymbol(Marker::SYMBOL_NONE); $oScatter->setSeries(array($oSeries)); $this->resetPresentationFile(); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedEltSymbol); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeScatterSeriesOutline() @@ -879,6 +972,8 @@ public function testTypeScatterSeriesOutline() $this->assertZipFileExists('ppt/charts/' . $oShape->getIndexedFilename()); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement); + $this->assertIsSchemaOOXMLValid(); + $oSeries->setOutline($oOutline); $oScatter->setSeries(array($oSeries)); $this->resetPresentationFile(); @@ -887,6 +982,8 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement, 'w', $expectedWidthEmu); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement . '/a:solidFill'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeScatterSubScript() @@ -903,6 +1000,8 @@ public function testTypeScatterSubScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-25000'); + + $this->assertIsSchemaOOXMLValid(); } public function testTypeScatterSuperScript() @@ -919,6 +1018,8 @@ public function testTypeScatterSuperScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '30000'); + + $this->assertIsSchemaOOXMLValid(); } public function testView3D() @@ -933,9 +1034,13 @@ public function testView3D() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '100%'); + $this->assertIsSchemaOOXMLValid(); + $oShape->getView3D()->setHeightPercent(null); $this->resetPresentationFile(); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptCommentsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptCommentsTest.php index 1d790770dd..ad5c418216 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptCommentsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptCommentsTest.php @@ -21,9 +21,11 @@ public function testComments() $this->assertZipFileExists('ppt/comments/comment1.xml'); $this->assertZipXmlElementExists('ppt/comments/comment1.xml', $expectedElement); $this->assertZipXmlAttributeEquals('ppt/comments/comment1.xml', $expectedElement, 'authorId', 0); + $this->assertIsSchemaOOXMLValid(); } public function testWithoutComment() { $this->assertZipFileNotExists('ppt/comments/comment1.xml'); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php index 52efb3a9a8..95f31caaef 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php @@ -21,6 +21,7 @@ public function testDrawing() $oShape->setPath(PHPPRESENTATION_TESTS_BASE_DIR.'/resources/images/PhpPresentationLogo.png'); $this->assertZipFileExists('ppt/media/' . $oShape->getIndexedFilename()); + $this->assertIsSchemaOOXMLValid(); } /** @@ -47,6 +48,7 @@ public function testDrawingZip() $oSlide->addShape($oDrawing); $this->assertZipFileExists('ppt/media/' . $oDrawing->getIndexedFilename()); + $this->assertIsSchemaOOXMLValid(); } /** @@ -76,6 +78,7 @@ public function testDrawingBase64() $oSlide->addShape($oShape); $this->assertZipFileExists('ppt/media/' . $oShape->getIndexedFilename()); + $this->assertIsSchemaOOXMLValid(); } public function testMemoryDrawing() @@ -91,5 +94,6 @@ public function testMemoryDrawing() $oSlide->addShape($oShape); $this->assertZipFileExists('ppt/media/' . $oShape->getIndexedFilename()); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresPropsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresPropsTest.php index c482e101ee..e2d348abe3 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresPropsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresPropsTest.php @@ -14,6 +14,7 @@ public function testRender() $element = '/p:presentationPr/p:extLst/p:ext'; $this->assertZipXmlElementExists('ppt/presProps.xml', $element); $this->assertZipXmlAttributeEquals('ppt/presProps.xml', $element, 'uri', '{E76CE94A-603C-4142-B9EB-6D1370010A27}'); + $this->assertIsSchemaOOXMLValid(); } public function testLoopContinuously() @@ -21,6 +22,7 @@ public function testLoopContinuously() $this->assertZipFileExists('ppt/presProps.xml'); $element = '/p:presentationPr/p:showPr'; $this->assertZipXmlElementNotExists('ppt/presProps.xml', $element); + $this->assertIsSchemaOOXMLValid(); $this->oPresentation->getPresentationProperties()->setLoopContinuouslyUntilEsc(true); $this->resetPresentationFile(); @@ -30,5 +32,6 @@ public function testLoopContinuously() $this->assertZipXmlElementExists('ppt/presProps.xml', $element); $this->assertZipXmlAttributeExists('ppt/presProps.xml', $element, 'loop'); $this->assertZipXmlAttributeEquals('ppt/presProps.xml', $element, 'loop', 1); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresentationTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresentationTest.php index 1ca1e94e00..dbd6bf6db9 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresentationTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresentationTest.php @@ -11,5 +11,6 @@ class PptPresentationTest extends PhpPresentationTestCase public function testRender() { $this->assertZipFileExists('ppt/presentation.xml'); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php index d19136d7c8..ed6ee096ac 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php @@ -2,6 +2,7 @@ namespace PhpPresentation\Tests\Writer\PowerPoint2007; +use PhpOffice\PhpPresentation\Tests\PhpPresentationTestCase; use PhpOffice\PhpPresentation\Writer\PowerPoint2007\PptSlideMasters; use PhpOffice\PhpPresentation\Slide\SlideLayout; use PhpOffice\PhpPresentation\Shape\Drawing\File as ShapeDrawingFile; @@ -11,7 +12,7 @@ * * @coversDefaultClass PowerPoint2007 */ -class PptSlideMastersTest extends \PHPUnit_Framework_TestCase +class PptSlideMastersTest extends PhpPresentationTestCase { public function testWriteSlideMasterRelationships() { @@ -51,5 +52,6 @@ public function testWriteSlideMasterRelationships() $this->assertEquals('rId3', $list->item(2)->getAttribute('Id')); $this->assertEquals('rId4', $list->item(3)->getAttribute('Id')); $this->assertEquals('rId5', $list->item(4)->getAttribute('Id')); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php index d4fe82a562..9ad9a73009 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php @@ -38,6 +38,7 @@ public function testAlignmentShapeAuto() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $element, 'anchor'); + $this->assertIsSchemaOOXMLValid(); } /** @@ -53,6 +54,7 @@ public function testAlignmentShapeBase() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $element, 'anchor'); + $this->assertIsSchemaOOXMLValid(); } /** @@ -68,6 +70,7 @@ public function testAlignmentShapeBottom() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'anchor', Alignment::VERTICAL_BOTTOM); + $this->assertIsSchemaOOXMLValid(); } /** @@ -83,6 +86,7 @@ public function testAlignmentShapeCenter() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'anchor', Alignment::VERTICAL_CENTER); + $this->assertIsSchemaOOXMLValid(); } /** @@ -98,6 +102,7 @@ public function testAlignmentShapeTop() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'anchor', Alignment::VERTICAL_TOP); + $this->assertIsSchemaOOXMLValid(); } public function testAnimation() @@ -116,6 +121,7 @@ public function testAnimation() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $element = '/p:sld/p:timing/p:tnLst/p:par/p:cTn/p:childTnLst/p:seq/p:cTn/p:childTnLst/p:par/p:cTn/p:childTnLst/p:par/p:cTn/p:childTnLst/p:par'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); + $this->assertIsSchemaOOXMLValid(); } public function testCommentRelationship() @@ -125,6 +131,7 @@ public function testCommentRelationship() $element = '/Relationships/Relationship[@Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"]'; $this->assertZipXmlElementExists('ppt/slides/_rels/slide1.xml.rels', $element); + $this->assertIsSchemaOOXMLValid(); } public function testCommentInGroupRelationship() @@ -136,6 +143,7 @@ public function testCommentInGroupRelationship() $element = '/Relationships/Relationship[@Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"]'; $this->assertZipXmlElementExists('ppt/slides/_rels/slide1.xml.rels', $element); + $this->assertIsSchemaOOXMLValid(); } public function testDrawingWithHyperlink() @@ -148,6 +156,7 @@ public function testDrawingWithHyperlink() $element = '/p:sld/p:cSld/p:spTree/p:pic/p:nvPicPr/p:cNvPr/a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'r:id', 'rId3'); + $this->assertIsSchemaOOXMLValid(); } public function testDrawingShapeBorder() @@ -160,6 +169,7 @@ public function testDrawingShapeBorder() $element = '/p:sld/p:cSld/p:spTree/p:pic/p:spPr/a:ln'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'cmpd', Border::LINE_DOUBLE); + $this->assertIsSchemaOOXMLValid(); } public function testDrawingShapeShadow() @@ -171,6 +181,7 @@ public function testDrawingShapeShadow() $element = '/p:sld/p:cSld/p:spTree/p:pic/p:spPr/a:effectLst/a:outerShdw'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); + $this->assertIsSchemaOOXMLValid(); } public function testFillGradientLinearTable() @@ -193,6 +204,8 @@ public function testFillGradientLinearTable() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="100%"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); + + $this->assertIsSchemaOOXMLValid(); } /** @@ -215,6 +228,8 @@ public function testFillGradientLinearRichText() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="100%"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); + + $this->assertIsSchemaOOXMLValid(); } public function testFillGradientPathTable() @@ -237,6 +252,8 @@ public function testFillGradientPathTable() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="100%"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); + + $this->assertIsSchemaOOXMLValid(); } /** @@ -259,6 +276,8 @@ public function testFillGradientPathText() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="100%"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); + + $this->assertIsSchemaOOXMLValid(); } public function testFillPatternTable() @@ -281,6 +300,8 @@ public function testFillPatternTable() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:pattFill/a:bgClr/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); + + $this->assertIsSchemaOOXMLValid(); } public function testFillSolidTable() @@ -299,6 +320,7 @@ public function testFillSolidTable() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:solidFill/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected); + $this->assertIsSchemaOOXMLValid(); } /** @@ -317,6 +339,7 @@ public function testFillSolidText() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:solidFill/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected); + $this->assertIsSchemaOOXMLValid(); } public function testHyperlink() @@ -328,6 +351,7 @@ public function testHyperlink() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr/a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); + $this->assertIsSchemaOOXMLValid(); } public function testHyperlinkInternal() @@ -340,6 +364,7 @@ public function testHyperlinkInternal() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr/a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'action', 'ppaction://hlinksldjump'); + $this->assertIsSchemaOOXMLValid(); } public function testListBullet() @@ -369,6 +394,7 @@ public function testListBullet() $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element . '/a:buClr/a:srgbClr', 'val', $oExpectedColor); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:buClr/a:srgbClr/a:alpha'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element . '/a:buClr/a:srgbClr/a:alpha', 'val', $oExpectedAlpha); + $this->assertIsSchemaOOXMLValid(); } public function testListNumeric() @@ -392,6 +418,7 @@ public function testListNumeric() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:buAutoNum'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element . '/a:buAutoNum', 'type', $oExpectedChar); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element . '/a:buAutoNum', 'startAt', $oExpectedStart); + $this->assertIsSchemaOOXMLValid(); } public function testLine() @@ -417,6 +444,8 @@ public function testLine() $element = '/p:sld/p:cSld/p:spTree/p:cxnSp/p:spPr/a:xfrm[@flipV="1"]/a:off[@x="' . $valEmu10 . '"][@y="' . $valEmu10 . '"]'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); + + $this->assertIsSchemaOOXMLValid(); } public function testMedia() @@ -448,6 +477,8 @@ public function testMedia() $element = '/p:sld/p:cSld/p:spTree/p:pic/p:nvPicPr/p:nvPr/p:extLst/p:ext'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'uri', '{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}'); + + $this->assertIsSchemaOOXMLValid(); } public function testNote() @@ -495,6 +526,8 @@ public function testNote() $this->assertZipXmlAttributeEquals('ppt/notesSlides/notesSlide1.xml', $element, 'cy', 3600450); $element = '/p:notes/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:t'; $this->assertZipXmlElementExists('ppt/notesSlides/notesSlide1.xml', $element); + + $this->assertIsSchemaOOXMLValid(); } public function testRichTextAutoFitNormal() @@ -508,6 +541,7 @@ public function testRichTextAutoFitNormal() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'fontScale', 47500); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'lnSpcReduction', 20000); + $this->assertIsSchemaOOXMLValid(); } public function testRichTextBreak() @@ -518,6 +552,7 @@ public function testRichTextBreak() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:br'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); + $this->assertIsSchemaOOXMLValid(); } public function testRichTextHyperlink() @@ -528,6 +563,7 @@ public function testRichTextHyperlink() $element = '/p:sld/p:cSld/p:spTree/p:sp//a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); + $this->assertIsSchemaOOXMLValid(); } public function testRichTextLineSpacing() @@ -542,6 +578,7 @@ public function testRichTextLineSpacing() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:pPr/a:lnSpc/a:spcPct'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expectedLineSpacing . '%'); + $this->assertIsSchemaOOXMLValid(); } public function testRichTextRunLanguage() @@ -555,6 +592,8 @@ public function testRichTextRunLanguage() $this->assertZipXmlAttributeExists('ppt/slides/slide1.xml', $expectedElement, 'lang'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $expectedElement, 'lang', 'en-US'); + $this->assertIsSchemaOOXMLValid(); + $oRun->setLanguage('de_DE'); $this->resetPresentationFile(); @@ -562,6 +601,8 @@ public function testRichTextRunLanguage() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $expectedElement); $this->assertZipXmlAttributeExists('ppt/slides/slide1.xml', $expectedElement, 'lang'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $expectedElement, 'lang', 'de_DE'); + + $this->assertIsSchemaOOXMLValid(); } public function testRichTextShadow() @@ -573,6 +614,7 @@ public function testRichTextShadow() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:effectLst/a:outerShdw'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); + $this->assertIsSchemaOOXMLValid(); } public function testRichTextUpright() @@ -585,6 +627,7 @@ public function testRichTextUpright() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'upright', '1'); + $this->assertIsSchemaOOXMLValid(); } public function testRichTextVertical() @@ -597,11 +640,13 @@ public function testRichTextVertical() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'vert', 'vert'); + $this->assertIsSchemaOOXMLValid(); } public function testSlideLayoutExists() { $this->assertZipFileExists('ppt/slideLayouts/slideLayout1.xml'); + $this->assertIsSchemaOOXMLValid(); } public function testStyleCharacterSpacing() @@ -615,12 +660,14 @@ public function testStyleCharacterSpacing() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spc', '0'); + $this->assertIsSchemaOOXMLValid(); $oRun->getFont()->setCharacterSpacing(42); $this->resetPresentationFile(); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spc', '4200'); + $this->assertIsSchemaOOXMLValid(); } public function testStyleSubScript() @@ -633,6 +680,7 @@ public function testStyleSubScript() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'baseline', '-25000'); + $this->assertIsSchemaOOXMLValid(); } public function testStyleSuperScript() @@ -645,6 +693,7 @@ public function testStyleSuperScript() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'baseline', '30000'); + $this->assertIsSchemaOOXMLValid(); } public function testTableWithAlignment() @@ -660,6 +709,7 @@ public function testTableWithAlignment() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $element, 'anchor'); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $element, 'vert'); + $this->assertIsSchemaOOXMLValid(); $oCell->getActiveParagraph()->getAlignment()->setVertical(Alignment::VERTICAL_BOTTOM); $oCell->getActiveParagraph()->getAlignment()->setTextDirection(Alignment::TEXT_DIRECTION_STACKED); @@ -668,6 +718,7 @@ public function testTableWithAlignment() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'anchor', Alignment::VERTICAL_BOTTOM); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'vert', Alignment::TEXT_DIRECTION_STACKED); + $this->assertIsSchemaOOXMLValid(); } public function testTableWithBorder() @@ -706,6 +757,7 @@ public function testTableWithBorder() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:lnT[@cmpd="' . Border::LINE_SINGLE . '"]/a:prstDash[@val="' . Border::DASH_DASHDOT . '"]'); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:lnB[@cmpd="' . Border::LINE_SINGLE . '"]'); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:lnB[@cmpd="' . Border::LINE_SINGLE . '"]/a:prstDash[@val="' . Border::DASH_SOLID . '"]'); + $this->assertIsSchemaOOXMLValid(); } public function testTableWithCellMargin() @@ -728,6 +780,7 @@ public function testTableWithCellMargin() $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'marL', Drawing::pixelsToEmu(20)); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'marR', Drawing::pixelsToEmu(30)); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'marT', Drawing::pixelsToEmu(40)); + $this->assertIsSchemaOOXMLValid(); } public function testTableWithColspan() @@ -743,6 +796,7 @@ public function testTableWithColspan() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'gridSpan', 2); + $this->assertIsSchemaOOXMLValid(); } public function testTableWithRowspan() @@ -762,6 +816,7 @@ public function testTableWithRowspan() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '[@rowSpan="2"]'); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '[@vMerge="1"]'); + $this->assertIsSchemaOOXMLValid(); } /** @@ -781,6 +836,7 @@ public function testTableWithHyperlink() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:txBody/a:p/a:r/a:rPr/a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'r:id', 'rId2'); + $this->assertIsSchemaOOXMLValid(); } public function testTransition() @@ -799,18 +855,22 @@ public function testTransition() $this->assertZipXmlAttributeExists('ppt/slides/slide1.xml', $element, 'advTm'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'advTm', $value); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'advClick', '0'); + $this->assertIsSchemaOOXMLValid(); $oTransition->setSpeed(Transition::SPEED_FAST); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spd', 'fast'); + $this->assertIsSchemaOOXMLValid(); $oTransition->setSpeed(Transition::SPEED_MEDIUM); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spd', 'med'); + $this->assertIsSchemaOOXMLValid(); $oTransition->setSpeed(Transition::SPEED_SLOW); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spd', 'slow'); + $this->assertIsSchemaOOXMLValid(); $rcTransition = new \ReflectionClass('PhpOffice\PhpPresentation\Slide\Transition'); $arrayConstants = $rcTransition->getConstants(); @@ -968,11 +1028,13 @@ public function testTransition() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/p:zoom[@dir=\'out\']'); break; } + $this->assertIsSchemaOOXMLValid(); } $oTransition->setManualTrigger(true); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'advClick', '1'); + $this->assertIsSchemaOOXMLValid(); } public function testVisibility() @@ -981,6 +1043,7 @@ public function testVisibility() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $expectedElement); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $expectedElement, 'show'); + $this->assertIsSchemaOOXMLValid(); $this->oPresentation->getActiveSlide()->setIsVisible(false); $this->resetPresentationFile(); @@ -988,5 +1051,6 @@ public function testVisibility() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $expectedElement); $this->assertZipXmlAttributeExists('ppt/slides/slide1.xml', $expectedElement, 'show'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $expectedElement, 'show', 0); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptTablePropsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptTablePropsTest.php index 98a5cb59fb..88f9884299 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptTablePropsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptTablePropsTest.php @@ -14,5 +14,6 @@ public function testRender() $element = '/a:tblStyleLst'; $this->assertZipXmlElementExists('ppt/tableStyles.xml', $element); $this->assertZipXmlAttributeEquals('ppt/tableStyles.xml', $element, 'def', '{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}'); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptViewPropsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptViewPropsTest.php index fa4852be85..fb65c43b37 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptViewPropsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptViewPropsTest.php @@ -17,6 +17,7 @@ public function testRender() $this->assertZipXmlElementExists('ppt/viewProps.xml', $expectedElement); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', $expectedElement, 'showComments', 0); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', $expectedElement, 'lastView', PresentationProperties::VIEW_SLIDE); + $this->assertIsSchemaOOXMLValid(); } public function testCommentVisible() @@ -28,6 +29,7 @@ public function testCommentVisible() $this->assertZipFileExists('ppt/viewProps.xml'); $this->assertZipXmlElementExists('ppt/viewProps.xml', $expectedElement); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', $expectedElement, 'showComments', 1); + $this->assertIsSchemaOOXMLValid(); } public function testLastView() @@ -40,5 +42,6 @@ public function testLastView() $this->assertZipFileExists('ppt/viewProps.xml'); $this->assertZipXmlElementExists('ppt/viewProps.xml', $expectedElement); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', $expectedElement, 'lastView', $expectedLastView); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/RelationshipsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/RelationshipsTest.php index 5f359cd12e..ad4492bbdd 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/RelationshipsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/RelationshipsTest.php @@ -17,5 +17,6 @@ public function testCommentsAuthors() $this->oPresentation->getActiveSlide()->addShape($oComment); $this->assertZipXmlElementExists('ppt/_rels/presentation.xml.rels', '/Relationships/Relationship[@Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors"]'); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/SchemaTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/SchemaTest.php deleted file mode 100644 index b7ee6fbb98..0000000000 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/SchemaTest.php +++ /dev/null @@ -1,485 +0,0 @@ -internalErrors = libxml_use_internal_errors(true); - } - - public function tearDown() - { - parent::tearDown(); - - libxml_use_internal_errors($this->internalErrors); - } - - /** - * Test whether the generated XML validates against the Office Open XML File Formats schema - * - * @see http://www.ecma-international.org/publications/standards/Ecma-376.htm - * @dataProvider pptProvider - */ - public function testSchema(PhpPresentation $presentation) - { - $this->writePresentationFile($presentation, 'PowerPoint2007'); - - // validate all XML files - $path = realpath($this->workDirectory . '/ppt'); - $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path)); - - foreach ($iterator as $file) { - /** @var SplFileInfo $file */ - if ($file->getExtension() !== "xml") { - continue; - } - - $fileName = str_replace('\\', '/', substr($file->getRealPath(), strlen($path) + 1)); - $dom = $this->getXmlDom('ppt/' . $fileName); - $xmlSource = $dom->saveXML(); - - // In the ISO/ECMA standard the namespace has changed from - // http://schemas.openxmlformats.org/ to http://purl.oclc.org/ooxml/ - // We need to use the http://purl.oclc.org/ooxml/ namespace to validate - // the xml against the current schema - $xmlSource = str_replace(array( - "http://schemas.openxmlformats.org/drawingml/2006/main", - "http://schemas.openxmlformats.org/drawingml/2006/chart", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships", - "http://schemas.openxmlformats.org/presentationml/2006/main", - ), array( - "http://purl.oclc.org/ooxml/drawingml/main", - "http://purl.oclc.org/ooxml/drawingml/chart", - "http://purl.oclc.org/ooxml/officeDocument/relationships", - "http://purl.oclc.org/ooxml/presentationml/main", - ), $xmlSource); - - $dom->loadXML($xmlSource); - $dom->schemaValidate(__DIR__ . '/../../../../resources/schema/ooxml/pml.xsd'); - - $error = libxml_get_last_error(); - if ($error) { - $this->fail(sprintf("Validation error: %s in file %s on line %s\n%s", $error->message, $file, $error->line, $dom->saveXML())); - } - } - } - - public function pptProvider() - { - return array( - array($this->generatePresentation01()), - array($this->generatePresentation02()), - ); - } - - /** - * Generates a ppt which contains different elements per slide i.e. shape, table, etc. - * - * @return PhpPresentation - */ - private function generatePresentation01() - { - $objPHPPresentation = new PhpPresentation(); - - $objPHPPresentation->getDocumentProperties() - ->setCreator('PHPOffice') - ->setLastModifiedBy('PHPPresentation Team') - ->setTitle('Sample 02 Title') - ->setSubject('Sample 02 Subject') - ->setDescription('Sample 02 Description') - ->setKeywords('office 2007 openxml libreoffice odt php') - ->setCategory('Sample Category'); - - $currentSlide = $objPHPPresentation->getActiveSlide(); - - // text shape - $shape = $currentSlide->createRichTextShape() - ->setHeight(300) - ->setWidth(600) - ->setOffsetX(170) - ->setOffsetY(180); - $shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); - $textRun = $shape->createTextRun('Thank you for using PHPPresentation!'); - $textRun->getFont()->setBold(true) - ->setSize(60) - ->setColor(new Color('FFE06B20')); - - // image - $currentSlide = $objPHPPresentation->createSlide(); - $gdImage = @imagecreatetruecolor(140, 20); - $textColor = imagecolorallocate($gdImage, 255, 255, 255); - imagestring($gdImage, 1, 5, 5, 'Created with PHPPresentation', $textColor); - - $shape = new Drawing\Gd(); - $shape->setName('Sample image') - ->setDescription('Sample image') - ->setImageResource($gdImage) - ->setRenderingFunction(Drawing\Gd::RENDERING_JPEG) - ->setMimeType(Drawing\Gd::MIMETYPE_DEFAULT) - ->setHeight(36) - ->setOffsetX(10) - ->setOffsetY(10); - $currentSlide->addShape($shape); - - // table - $currentSlide = $objPHPPresentation->createSlide(); - $shape = $currentSlide->createTableShape(3); - $shape->setHeight(200); - $shape->setWidth(600); - $shape->setOffsetX(150); - $shape->setOffsetY(300); - - $row = $shape->createRow(); - $row->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR) - ->setRotation(90) - ->setStartColor(new Color('FFE06B20')) - ->setEndColor(new Color('FFFFFFFF')); - $cell = $row->nextCell(); - $cell->setColSpan(3); - $cell->createTextRun('Title row')->getFont()->setBold(true)->setSize(16); - $cell->getBorders()->getBottom()->setLineWidth(4) - ->setLineStyle(Border::LINE_SINGLE) - ->setDashStyle(Border::DASH_DASH); - - $row = $shape->createRow(); - $row->setHeight(20); - $row->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR) - ->setRotation(90) - ->setStartColor(new Color('FFE06B20')) - ->setEndColor(new Color('FFFFFFFF')); - $row->nextCell()->createTextRun('R1C1')->getFont()->setBold(true); - $row->nextCell()->createTextRun('R1C2')->getFont()->setBold(true); - $row->nextCell()->createTextRun('R1C3')->getFont()->setBold(true); - - foreach ($row->getCells() as $cell) { - $cell->getBorders()->getTop()->setLineWidth(4) - ->setLineStyle(Border::LINE_SINGLE) - ->setDashStyle(Border::DASH_DASH); - } - - // chart - $currentSlide = $objPHPPresentation->createSlide(); - - $oFill = new Fill(); - $oFill->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFE06B20')); - - $oShadow = new Shadow(); - $oShadow->setVisible(true)->setDirection(45)->setDistance(10); - - $seriesData = array( - 'Monday' => 12, - 'Tuesday' => 15, - 'Wednesday' => 13, - 'Thursday' => 17, - 'Friday' => 14, - 'Saturday' => 9, - 'Sunday' => 7 - ); - - $lineChart = new Line(); - $series = new Series('Downloads', $seriesData); - $series->setShowSeriesName(true); - $series->setShowValue(true); - $lineChart->addSeries($series); - - $shape = $currentSlide->createChartShape(); - $shape->setName('PHPPresentation Daily Downloads')->setResizeProportional(false)->setHeight(550)->setWidth(700)->setOffsetX(120)->setOffsetY(80); - $shape->setShadow($oShadow); - $shape->setFill($oFill); - $shape->getBorder()->setLineStyle(Border::LINE_SINGLE); - $shape->getTitle()->setText('PHPPresentation Daily Downloads'); - $shape->getTitle()->getFont()->setItalic(true); - $shape->getPlotArea()->setType($lineChart); - $shape->getView3D()->setRotationX(30); - $shape->getView3D()->setPerspective(30); - $shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE); - $shape->getLegend()->getFont()->setItalic(true); - - // fill - $currentSlide = $objPHPPresentation->createSlide(); - - for ($inc = 1; $inc <= 4; $inc++) { - // Create a shape (text) - $shape = $currentSlide->createRichTextShape() - ->setHeight(200) - ->setWidth(300); - if ($inc == 1 || $inc == 3) { - $shape->setOffsetX(10); - } else { - $shape->setOffsetX(320); - } - if ($inc == 1 || $inc == 2) { - $shape->setOffsetY(10); - } else { - $shape->setOffsetY(220); - } - $shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); - - switch ($inc) { - case 1: - $shape->getFill()->setFillType(Fill::FILL_NONE); - break; - case 2: - $shape->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR)->setRotation(90)->setStartColor(new Color('FF4672A8'))->setEndColor(new Color('FF000000')); - break; - case 3: - $shape->getFill()->setFillType(Fill::FILL_GRADIENT_PATH)->setRotation(90)->setStartColor(new Color('FF4672A8'))->setEndColor(new Color('FF000000')); - break; - case 4: - $shape->getFill()->setFillType(Fill::FILL_SOLID)->setRotation(90)->setStartColor(new Color('FF4672A8'))->setEndColor(new Color('FF4672A8')); - break; - } - - $textRun = $shape->createTextRun('Use PHPPresentation!'); - $textRun->getFont()->setBold(true) - ->setSize(30) - ->setColor(new Color('FFE06B20')); - } - - // slide note - $currentSlide = $objPHPPresentation->createSlide(); - - $shape = $currentSlide->createDrawingShape(); - $shape->setName('PHPPresentation logo') - ->setDescription('PHPPresentation logo') - ->setPath(__DIR__ . '/../../../../../samples/resources/phppowerpoint_logo.gif') - ->setHeight(36) - ->setOffsetX(10) - ->setOffsetY(10); - $shape->getShadow()->setVisible(true) - ->setDirection(45) - ->setDistance(10); - $shape->getHyperlink()->setUrl('https://github.com/PHPOffice/PHPPresentation/')->setTooltip('PHPPresentation'); - - $shape = $currentSlide->createRichTextShape() - ->setHeight(300) - ->setWidth(600) - ->setOffsetX(170) - ->setOffsetY(180); - $shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); - $textRun = $shape->createTextRun('Thank you for using PHPPresentation!'); - $textRun->getFont()->setBold(true) - ->setSize(60) - ->setColor(new Color('FFE06B20')); - - $oNote = $currentSlide->getNote(); - $oLayout = $objPHPPresentation->getLayout(); - $oRichText = $oNote->createRichTextShape() - ->setHeight($oLayout->getCY($oLayout::UNIT_PIXEL)) - ->setWidth($oLayout->getCX($oLayout::UNIT_PIXEL)) - ->setOffsetX(170) - ->setOffsetY(180); - $oRichText->createTextRun('A class library'); - $oRichText->createParagraph()->createTextRun('Written in PHP'); - $oRichText->createParagraph()->createTextRun('Representing a presentation'); - $oRichText->createParagraph()->createTextRun('Supports writing to different file formats'); - - // transition - $currentSlide = $objPHPPresentation->createSlide(); - - $shapeDrawing = $currentSlide->createDrawingShape(); - $shapeDrawing->setName('PHPPresentation logo') - ->setDescription('PHPPresentation logo') - ->setPath(__DIR__ . '/../../../../../samples/resources/phppowerpoint_logo.gif') - ->setHeight(36) - ->setOffsetX(10) - ->setOffsetY(10); - $shapeDrawing->getShadow()->setVisible(true) - ->setDirection(45) - ->setDistance(10); - $shapeDrawing->getHyperlink()->setUrl('https://github.com/PHPOffice/PHPPresentation/')->setTooltip('PHPPresentation'); - - $shapeRichText = $currentSlide->createRichTextShape() - ->setHeight(300) - ->setWidth(600) - ->setOffsetX(170) - ->setOffsetY(180); - $shapeRichText->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); - $textRun = $shapeRichText->createTextRun('Thank you for using PHPPresentation!'); - $textRun->getFont()->setBold(true) - ->setSize(60) - ->setColor(new Color('FFE06B20')); - - $oTransition = new Transition(); - $oTransition->setManualTrigger(false); - $oTransition->setTimeTrigger(true, 4000); - $oTransition->setTransitionType(Transition::TRANSITION_SPLIT_IN_VERTICAL); - $currentSlide->setTransition($oTransition); - - // comment - $currentSlide = $objPHPPresentation->createSlide(); - - $oShapeDrawing = new Drawing\File(); - $oShapeDrawing->setName('PHPPresentation logo') - ->setDescription('PHPPresentation logo') - ->setPath(__DIR__ . '/../../../../../samples/resources/phppowerpoint_logo.gif') - ->setHeight(36) - ->setOffsetX(10) - ->setOffsetY(10); - $oShapeDrawing->getShadow()->setVisible(true) - ->setDirection(45) - ->setDistance(10); - $oShapeDrawing->getHyperlink()->setUrl('https://github.com/PHPOffice/PHPPresentation/')->setTooltip('PHPPresentation'); - - $oShapeRichText = new RichText(); - $oShapeRichText->setHeight(300) - ->setWidth(600) - ->setOffsetX(170) - ->setOffsetY(180); - $oShapeRichText->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); - $textRun = $oShapeRichText->createTextRun('Thank you for using PHPPresentation!'); - $textRun->getFont()->setBold(true) - ->setSize(60) - ->setColor(new Color('FFE06B20')); - - $currentSlide->addShape(clone $oShapeDrawing); - $currentSlide->addShape(clone $oShapeRichText); - - $oAuthor = new \PhpOffice\PhpPresentation\Shape\Comment\Author(); - $oAuthor->setName('Progi1984'); - $oAuthor->setInitials('P'); - - $oComment1 = new \PhpOffice\PhpPresentation\Shape\Comment(); - $oComment1->setText('Text A'); - $oComment1->setOffsetX(10); - $oComment1->setOffsetY(55); - $oComment1->setDate(time()); - $oComment1->setAuthor($oAuthor); - $currentSlide->addShape($oComment1); - - $oComment2 = new \PhpOffice\PhpPresentation\Shape\Comment(); - $oComment2->setText('Text B'); - $oComment2->setOffsetX(170); - $oComment2->setOffsetY(180); - $oComment2->setDate(time()); - $oComment2->setAuthor($oAuthor); - $currentSlide->addShape($oComment2); - - // animation - $currentSlide = $objPHPPresentation->createSlide(); - - $oDrawing1 = clone $oShapeDrawing; - $oRichText1 = clone $oShapeRichText; - - $oSlide1 = $objPHPPresentation->getActiveSlide(); - $oSlide1->addShape($oDrawing1); - $oSlide1->addShape($oRichText1); - - $oAnimation1 = new Animation(); - $oAnimation1->addShape($oDrawing1); - $oSlide1->addAnimation($oAnimation1); - - $oAnimation2 = new Animation(); - $oAnimation2->addShape($oRichText1); - $oSlide1->addAnimation($oAnimation2); - - $oDrawing2 = clone $oShapeDrawing; - $oRichText2 = clone $oShapeRichText; - - $oSlide2 = $objPHPPresentation->createSlide(); - $oSlide2->addShape($oDrawing2); - $oSlide2->addShape($oRichText2); - - $oAnimation4 = new Animation(); - $oAnimation4->addShape($oRichText2); - $oSlide2->addAnimation($oAnimation4); - - $oAnimation3 = new Animation(); - $oAnimation3->addShape($oDrawing2); - $oSlide2->addAnimation($oAnimation3); - - $oDrawing3 = clone $oShapeDrawing; - $oRichText3 = clone $oShapeRichText; - - $currentSlide->addShape($oDrawing3); - $currentSlide->addShape($oRichText3); - - $oAnimation5 = new Animation(); - $oAnimation5->addShape($oRichText3); - $oAnimation5->addShape($oDrawing3); - $currentSlide->addAnimation($oAnimation5); - - // @TODO add more complex elements - - return $objPHPPresentation; - } - - /** - * Generates a ppt containing placeholder in the master and the slide - * - * @return PhpPresentation - */ - private function generatePresentation02() - { - $objPHPPresentation = new PhpPresentation(); - - $objPHPPresentation->getDocumentProperties() - ->setCreator('PHPOffice') - ->setLastModifiedBy('PHPPresentation Team') - ->setTitle('Sample 02 Title') - ->setSubject('Sample 02 Subject') - ->setDescription('Sample 02 Description') - ->setKeywords('office 2007 openxml libreoffice odt php') - ->setCategory('Sample Category'); - - // master slide - $masterSlides = $objPHPPresentation->getAllMasterSlides(); - /** @var Slide $objMaster */ - $objMaster = reset($masterSlides); - - $objShape = $objMaster->createRichTextShape(); - $objShape->setWidthAndHeight(270, 30)->setOffsetX(600)->setOffsetY(655); - $objShape->createTextRun("Footer") - ->getFont() - ->setName("Arial") - ->setSize(7); - $objShape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT); - - $objShape = $objMaster->createRichTextShape(); - $objShape->setWidthAndHeight(50, 30)->setOffsetX(870)->setOffsetY(655); - $objShape->createTextRun("") - ->getFont() - ->setName("Arial") - ->setSize(7); - $objShape->setPlaceHolder(new Placeholder(Placeholder::PH_TYPE_SLIDENUM)); - - // slide with placeholder - $currentSlide = $objPHPPresentation->getActiveSlide(); - - $objShape = $currentSlide->createRichTextShape(); - $objShape->setWidthAndHeight(50, 30)->setOffsetX(870)->setOffsetY(655); - $objShape->createTextRun("") - ->getFont() - ->setName("Arial") - ->setSize(7); - $objShape->setPlaceHolder(new Placeholder(Placeholder::PH_TYPE_SLIDENUM)); - - return $objPHPPresentation; - } -} diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php index 903b822ce9..9f6c4386c3 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php @@ -133,6 +133,7 @@ public function testZoom() $this->assertZipXmlElementExists('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy'); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy', 'n', 100); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy', 'd', 100); + $this->assertIsSchemaOOXMLValid(); $value = rand(1, 100); $this->oPresentation->getPresentationProperties()->setZoom($value); @@ -144,6 +145,7 @@ public function testZoom() $this->assertZipXmlElementExists('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy'); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy', 'n', $value * 100); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy', 'd', 100); + $this->assertIsSchemaOOXMLValid(); } public function testFeatureThumbnail() @@ -154,11 +156,13 @@ public function testFeatureThumbnail() $this->assertZipFileExists('_rels/.rels'); $this->assertZipXmlElementNotExists('_rels/.rels', $xPathManifest); + $this->assertIsSchemaOOXMLValid(); $this->oPresentation->getPresentationProperties()->setThumbnailPath($imagePath); $this->resetPresentationFile(); $this->assertZipFileExists('_rels/.rels'); $this->assertZipXmlElementExists('_rels/.rels', $xPathManifest); + $this->assertIsSchemaOOXMLValid(); } } diff --git a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php index 2d5d97a12f..475707a4ed 100644 --- a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php +++ b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php @@ -48,6 +48,11 @@ class PhpPresentationTestCase extends \PHPUnit_Framework_TestCase */ private $xmlFile; + /** + * @var boolean + */ + private $xmlInternalErrors; + /** * Executed before each method of the class */ @@ -55,8 +60,13 @@ public function setUp() { $this->workDirectory = sys_get_temp_dir() . '/PhpPresentation_Unit_Test/'; $this->oPresentation = new PhpPresentation(); - $this->filePath = tempnam(sys_get_temp_dir(), 'PhpPresentation'); + + // Error XML + libxml_clear_errors(); + $this->xmlInternalErrors = libxml_use_internal_errors(true); + + // Reset file $this->resetPresentationFile(); } @@ -65,6 +75,7 @@ public function setUp() */ public function tearDown() { + libxml_use_internal_errors($this->xmlInternalErrors); $this->oPresentation = null; $this->resetPresentationFile(); } @@ -307,4 +318,42 @@ public function assertZipXmlAttributeNotExists($filePath, $xPath, $attribute) $nodeList = $this->getXmlNodeList($filePath, $xPath); self::assertFalse($nodeList->item(0)->hasAttribute($attribute)); } + + public function assertIsSchemaOOXMLValid() + { + // validate all XML files + $path = realpath($this->workDirectory . '/ppt'); + $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path)); + + foreach ($iterator as $file) { + /** @var \SplFileInfo $file */ + if ($file->getExtension() !== "xml") { + continue; + } + + $fileName = str_replace('\\', '/', substr($file->getRealPath(), strlen($path) + 1)); + $dom = $this->getXmlDom('ppt/' . $fileName); + $xmlSource = $dom->saveXML(); + + $dom->loadXML($xmlSource); + $dom->schemaValidate(__DIR__ . '/../../../resources/schema/ooxml/pml.xsd'); + + $error = libxml_get_last_error(); + if ($error instanceof \LibXMLError) { + break; + } + } + unset($iterator); + + if (is_object($error) && $error instanceof \LibXMLError) { + $errorLine = (int)$error->line; + $contents = explode("\n", $xmlSource); + $lines = array(); + $lines[] = '>> ' . $contents[$errorLine - 2]; + $lines[] = '>>> ' . $contents[$errorLine - 1]; + $lines[] = '>> ' . $contents[$errorLine]; + self::fail(sprintf("Validation error:\n - File : %s\n - Line : %s\n - Message : %s - Lines :\n%s", $file, $error->line, $error->message, implode(PHP_EOL, $lines))); + } + + } } diff --git a/tests/resources/schema/ooxml/dml-chart.xsd b/tests/resources/schema/ooxml/dml-chart.xsd index 91559f2ce6..c884009af7 100644 --- a/tests/resources/schema/ooxml/dml-chart.xsd +++ b/tests/resources/schema/ooxml/dml-chart.xsd @@ -1,1455 +1,3863 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + Boolean Value + + + + + + + Floating Point Value + + + + + + + Integer Value + + + + + + + Relationship Reference + + + + + + + + + + Uniform Resource Identifier + + + + + + + + Extension + + + + + + + + + Numeric Value + + + + + + Index + + + + + Number Format + + + + + + + + Format Code + + + + + Point Count + + + + + Numeric Point + + + + + + + + + + Formula + + + + + Number Cache + + + + + + + + + + + Number Reference + + + + + Number Literal + + + + + + + + + + Text Value + + + + + + Index + + + + + + + + + + + + + + + Formula + + + + + String Cache + + + + + + + + + + + String Reference + + + + + Rich Text + + + + + + + + + Language Code + + + + + + + + String Point + + + + + + + + + + Level + + + + + + + + + + Formula + + + + + Multi Level String Cache + + + + + + + + + + + Multi Level String Reference + + + + + Number Reference + + + + + Number Literal + + + + + + String Literal + + + + + + + + + + + + + + + + Layout Target + + + + + Inner + + + + + Outer + + + + + + + + Layout Target Value + + + + + + Layout Mode + + + + + Edge + + + + + Factor + + + + + + + + Layout Mode Value + + + + + + + + Layout Target + + + + + Left Mode + + + + + Top Mode + + + + + Width Mode + + + + + Height Mode + + + + + Left + + + + + Top + + + + + Width + + + + + Height + + + + + Chart Extensibility + + + + + + + + + Manual Layout + + + + + Chart Extensibility + + + + + + + + + Chart Text + + + + + Layout + + + + + Overlay + + + + + + + Chart Extensibility + + + + + + + X Rotation + + + + + + + + + + X Rotation Value + + + + + + Height Percent + + + + + + + + + + Height Percent Value + + + + + + Y Rotation + + + + + + + + + + Y Rotation Value + + + + + + Depth Percent + + + + + + + + + + Depth Percent Value + + + + + + Perspective + + + + + + + + + + Perspective Value + + + + + + + + X Rotation + + + + + Height Percent + + + + + Y Rotation + + + + + Depth Percent + + + + + Right Angle Axes + + + + + Perspective + + + + + Chart Extensibility + + + + + + + + + Thickness + + + + + + Picture Options + + + + + Chart Extensibility + + + + + + + + + Show Horizontal Border + + + + + Show Vertical Border + + + + + Show Outline Border + + + + + Show Legend Keys + + + + + + Text Properties + + + + + Chart Extensibility + + + + + + + Gap Amount + + + + + + + + + + Gap Size Value + + + + + + Overlap + + + + + + + + + + Overlap Value + + + + + + Bubble Scale + + + + + + + + + + Bubble Scale Value + + + + + + Size Represents + + + + + Bubble Size Represents Area + + + + + Bubble Size Represents Width + + + + + + + + Size Represents Value + + + + + + First Slice Angle + + + + + + + + + + First Slice Angle Value + + + + + + Hole Size + + + + + + + + + + Hole Size Value + + + + + + Split Type + + + + + Default Split + + + + + Custom Split + + + + + Split by Percentage + + + + + Split by Position + + + + + Split by Value + + + + + + + + Split Type Value + + + + + + + + Second Pie Point + + + + + + + Second Pie Size + + + + + + + + + + Second Pie Size Value + + + + + + + Number Format Code + + + + + Linked to Source + + + + + + Label Alignment + + + + + Center + + + + + Left + + + + + Right + + + + + + + + Label Alignment Value + + + + + + Data Label Position + + + + + Best Fit + + + + + Bottom + + + + + Center + + + + + Inside Base + + + + + Inside End + + + + + Left + + + + + Outside End + + + + + Right + + + + + Top + + + + + + + + Data Label Position Value + + + + + + + + Number Format + + + + + + + Data Label Position + + + + + Show Legend Key + + + + + Show Value + + + + + Show Category Name + + + + + Show Series Name + + + + + Show Percent + + + + + Show Bubble Size + + + + + Separator + + + + + + + + + Layout + + + + + + + + + + + Index + + + + + + Delete + + + + + + + Chart Extensibility + + + + + + + + + + Show Leader Lines + + + + + Leader Lines + + + + + + + + + Data Label + + + + + + Delete + + + + + + + Chart Extensibility + + + + + + + Marker Style + + + + + Circle + + + + + Dash + + + + + Diamond + + + + + Dot + + + + + None + + + + + Picture + + + + + Plus + + + + + Square + + + + + Star + + + + + Triangle + + + + + X + + + + + + + + Marker Style Value + + + + + + Marker Size + + + + + + + + + + Marker Size Value + + + + + + + + Symbol + + + + + Size + + + + + + Chart Extensibility + + + + + + + + + Index + + + + + Invert if Negative + + + + + Marker + + + + + 3D Bubble + + + + + Explosion + + + + + + + Chart Extensibility + + + + + + + Trendline Type + + + + + Exponential + + + + + Linear + + + + + Logarithmic + + + + + Moving Average + + + + + Polynomial + + + + + Power + + + + + + + + Trendline Type Value + + + + + + Order + + + + + + + + + + Order Value + + + + + + Period + + + + + + + + + + Period Value + + + + + + + + Layout + + + + + + Number Format + + + + + + + Chart Extensibility + + + + + + + + + Trendline Name + + + + + + Trendline Type + + + + + Polynomial Trendline Order + + + + + Period + + + + + Forward + + + + + Backward + + + + + Intercept + + + + + Display R Squared Value + + + + + Display Equation + + + + + Trendline Label + + + + + Chart Extensibility + + + + + + + Error Bar Direction + + + + + X + + + + + Y + + + + + + + + Error Bar Direction Value + + + + + + Error Bar Type + + + + + Both + + + + + Minus + + + + + Plus + + + + + + + + Error Bar Type Value + + + + + + Error Value Type + + + + + Custom Error Bars + + + + + Fixed Value + + + + + Percentage + + + + + Standard Deviation + + + + + Standard Error + + + + + + + + Error Bar Type Value + + + + + + + + Error Bar Direction + + + + + Error Bar Type + + + + + Error Bar Value Type + + + + + No End Cap + + + + + Plus + + + + + Minus + + + + + Error Bar Value + + + + + + Chart Extensibility + + + + + + + + + + + + + + Gap Width + + + + + Up Bars + + + + + Down Bars + + + + + Chart Extensibility + + + + + + + + + Index + + + + + Order + + + + + Series Text + + + + + + + + + + + Marker + + + + + Data Point + + + + + Data Labels + + + + + + Error Bars + + + + + Category Axis Data + + + + + + + Chart Extensibility + + + + + + + + + + Marker + + + + + Data Point + + + + + Data Labels + + + + + + Error Bars + + + + + + + Smoothing + + + + + Chart Extensibility + + + + + + + + + + Marker + + + + + Data Point + + + + + Data Labels + + + + + Category Axis Data + + + + + + Chart Extensibility + + + + + + + + + + Invert if Negative + + + + + + Data Point + + + + + Data Labels + + + + + Trendlines + + + + + Error Bars + + + + + Category Axis Data + + + + + + Shape + + + + + Chart Extensibility + + + + + + + + + + + Data Point + + + + + Data Labels + + + + + + Error Bars + + + + + Category Axis Data + + + + + Values + + + + + Chart Extensibility + + + + + + + + + + Explosion + + + + + Data Point + + + + + Data Labels + + + + + Category Axis Data + + + + + + Chart Extensibility + + + + + + + + + + Invert if Negative + + + + + Data Point + + + + + Data Labels + + + + + + Error Bars + + + + + X Values + + + + + Y Values + + + + + Bubble Size + + + + + 3D Bubble + + + + + Chart Extensibility + + + + + + + + + + Category Axis Data + + + + + + Chart Extensibility + + + + + + + Grouping + + + + + 100% Stacked + + + + + Standard + + + + + Stacked + + + + + + + + Grouping Value + + + + + + + + + + + + + Grouping + + + + + + + Data Labels + + + + + Drop Lines + + + + + + + + + + High Low Lines + + + + + + Show Marker + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Gap Depth + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + Line Chart Series + + + + + Data Labels + + + + + + High Low Lines + + + + + Up/Down Bars + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + Scatter Style + + + + + None + + + + + Line + + + + + Line with Markers + + + + + Marker + + + + + Smooth + + + + + Smooth with Markers + + + + + + + + Scatter Style Value + + + + + + + + Scatter Style + + + + + Vary Colors by Point + + + + + Scatter Chart Series + + + + + Data Labels + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + Radar Style + + + + + Standard + + + + + Marker + + + + + Filled + + + + + + + + Radar Style Value + + + + + + + + Radar Style + + + + + + Radar Chart Series + + + + + Data Labels + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + Bar Grouping + + + + + 100% Stacked + + + + + Clustered + + + + + Standard + + + + + Stacked + + + + + + + + Bar Grouping Value + + + + + + Bar Direction + + + + + Bar + + + + + Column + + + + + + + + Bar Direction Value + + + + + + Shape + + + + + Cone + + + + + Cone to Max + + + + + Box + + + + + Cylinder + + + + + Pyramid + + + + + Pyramid to Maximum + + + + + + + + Shape Value + + + + + + + + Bar Direction + + + + + Bar Grouping + + + + + + Bar Chart Series + + + + + Data Labels + + + + + + + + + + Gap Width + + + + + Overlap + + + + + Series Lines + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Gap Width + + + + + Gap Depth + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + Grouping + + + + + + Area Chart Series + + + + + Data Labels + + + + + Drop Lines + + + + + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Gap Depth + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Pie Chart Series + + + + + Data Labels + + + + + + + + + + First Slice Angle + + + + + Chart Extensibility + + + + + + + + + + Chart Extensibility + + + + + + + + + + First Slice Angle + + + + + Hole Size + + + + + Chart Extensibility + + + + + + + Pie of Pie or Bar of Pie Type + + + + + Pie + + + + + Bar + + + + + + + + Pie of Pie or Bar of Pie Type Value + + + + + + + + Pie of Pie or Bar of Pie Type + + + + + + Gap Width + + + + + Split Type + + + + + Split Position + + + + + Custom Split + + + + + Second Pie Size + + + + + + Chart Extensibility + + + + + + + + + + Bubble Chart Series + + + + + Data Labels + + + + + 3D Bubble + + + + + Bubble Scale + + + + + Show Negative Bubbles + + + + + Size Represents + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + + + + + + Band Format + + + + + + + + + Wireframe + + + + + Surface Chart Series + + + + + Band Formats + + + + + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + Axis Position + + + + + Bottom + + + + + Left + + + + + Right + + + + + Top + + + + + + + + Axis Position Value + + + + + + Crosses + + + + + Axis Crosses at Zero + + + + + Maximum + + + + + Minimum + + + + + + + + Crosses Value + + + + + + Cross Between + + + + + Between + + + + + Midpoint of Category + + + + + + + + Cross Between Value + + + + + + Tick Mark + + + + + Cross + + + + + Inside + + + + + None + + + + + Outside + + + + + + + + Tick Mark Value + + + + + + Tick Label Position + + + + + High + + + + + Low + + + + + Next To + + + + + None + + + + + + + + Tick Label Position Value + + + + + + Skip + + + + + + + + + Tick Skip Value + + + + + + Time Unit + + + + + Days + + + + + Months + + + + + Years + + + + + + + + Time Unit Value + + + + + + Axis Unit + + + + + + + + + Major Unit Value + + + + + + Built-In Unit + + + + + Hundreds + + + + + Thousands + + + + + Ten Thousands + + + + + Hundred Thousands + + + + + Millions + + + + + Ten Millions + + + + + Hundred Millions + + + + + Billions + + + + + Trillions + + + + + + + + Built In Unit Value + + + + + + Picture Format + + + + + Stretch + + + + + Stack + + + + + Stack and Scale + + + + + + + + Picture Format Value + + + + + + Picture Stack Unit + + + + + + + + + Picture Stack Unit + + + + + + + + Apply To Front + + + + + Apply To Sides + + + + + Apply to End + + + + + Picture Format + + + + + Picture Stack Unit + + + + + + + + + Layout + + + + + + + + + + + + + Custom Display Unit + + + + + Built in Display Unit Value + + + + + + Display Units Label + + + + + Chart Extensibility + + + + + + + Orientation + + + + + Maximum to Minimum + + + + + Minimum to Maximum + + + + + + + + Orientation Value + + + + + + Logarithmic Base + + + + + + + + + + Logarithmic Base Value + + + + + + + + Logarithmic Base + + + + + Axis Orientation + + + + + Maximum + + + + + Minimum + + + + + Chart Extensibility + + + + + + + Label Offset + + + + + + + + + + Label Offset Value + + + + + + + + Axis ID + + + + + Scaling + + + + + Delete + + + + + Axis Position + + + + + Major Gridlines + + + + + Minor Gridlines + + + + + Title + + + + + Number Format + + + + + Major Tick Mark + + + + + Minor Tick Mark + + + + + Tick Label Position + + + + + + + Crossing Axis ID + + + + + + Crosses + + + + + Crossing Value + + + + + + + + + + + Automatic Category Axis + + + + + Label Alignment + + + + + Label Offset + + + + + + Tick Mark Skip + + + + + No Multi-level Labels + + + + + Chart Extensibility + + + + + + + + + + Automatic Category Axis + + + + + Label Offset + + + + + Base Time Unit + + + + + Major Unit + + + + + Major Time Unit + + + + + Minor Unit + + + + + Minor Time Unit + + + + + Chart Extensibility + + + + + + + + + + Tick Label Skip + + + + + + Chart Extensibility + + + + + + + + + + Cross Between + + + + + Major Unit + + + + + Minor Unit + + + + + Display Units + + + + + Chart Extensibility + + + + + + + + + Layout + + + + + + Area Charts + + + + + 3D Area Charts + + + + + Line Charts + + + + + 3D Line Charts + + + + + Stock Charts + + + + + Radar Charts + + + + + Scatter Charts + + + + + Pie Charts + + + + + 3D Pie Charts + + + + + Doughnut Charts + + + + + Bar Charts + + + + + 3D Bar Charts + + + + + Pie of Pie or Bar of Pie Charts + + + + + Surface Charts + + + + + 3D Surface Charts + + + + + Bubble Charts + + + + + + + Value Axis + + + + + Category Axis Data + + + + + Date Axis + + + + + Series Axis + + + + + + Data Table + + + + + + Chart Extensibility + + + + + + + + + Index + + + + + + + Marker + + + + + Data Label + + + + + Chart Extensibility + + + + + + + + + Pivot Format + + + + + + + Legend Position + + + + + Bottom + + + + + Top Right + + + + + Left + + + + + Right + + + + + Top + + + + + + + + Legend Position Value + + + + + + + + + + + + + Index + + + + + + Delete + + + + + + + Chart Extensibility + + + + + + + + + Legend Position + + + + + Legend Entry + + + + + Layout + + + + + Overlay + + + + + + + Chart Extensibility + + + + + + + Display Blanks As + + + + + Span + + + + + Gap + + + + + Zero + + + + + + + + Display Blanks As Value + + + + + + + + + Auto Title Is Deleted + + + + + Pivot Formats + + + + + View In 3D + + + + + Floor + + + + + Side Wall + + + + + Back Wall + + + + + Plot Area + + + + + Legend + + + + + Plot Visible Only + + + + + Display Blanks As + + + + + Show Data Labels over Maximum + + + + + Chart Extensibility + + + + + + + Style + + + + + + + + + + Style Type + + + + + + + + Pivot Name + + + + + Format ID + + + + + Chart Extensibility + + + + + + + + + Chart Object + + + + + Data Cannot Be Changed + + + + + Formatting + + + + + Selection + + + + + User Interface + + + + + + + + + Odd Header + + + + + Odd Footer + + + + + Even Header + + + + + Even Footer + + + + + First Header + + + + + First Footer + + + + + + Align With Margins + + + + + Different Odd Even + + + + + Different First + + + + + + + Left + + + + + Right + + + + + Top + + + + + Bottom + + + + + Header + + + + + Footer + + + + + + Printed Page Orientation + + + + + Default Page Orientation + + + + + Portrait Page + + + + + Landscape Page + + + + + + + + + Update Automatically + + + + + + Relationship Reference + + + + + + + Page Size + + + + + Paper Height + + + + + Paper Width + + + + + First Page Number + + + + + Orientation + + + + + Black and White + + + + + Draft + + + + + Use First Page Number + + + + + Horizontal DPI + + + + + Vertical DPI + + + + + Copies + + + + + + + + Header and Footer + + + + + Page Margins + + + + + Page Setup + + + + + Legacy Drawing for Headers and Footers + + + + + + + + + 1904 Date System + + + + + Editing Language + + + + + Rounded Corners + + + + + Style + + + + + Color Map Override + + + + + Pivot Source + + + + + Protection + + + + + Chart + + + + + Shape Properties + + + + + + External Data Relationship + + + + + Print Settings + + + + + Reference to Chart Drawing Part + + + + + Chart Extensibility + + + + + + + Chart Space + + + + + User Shapes + + + + + Reference to Chart Part + + + \ No newline at end of file diff --git a/tests/resources/schema/ooxml/dml-chartDrawing.xsd b/tests/resources/schema/ooxml/dml-chartDrawing.xsd index f4228987a7..dca2c4f53e 100644 --- a/tests/resources/schema/ooxml/dml-chartDrawing.xsd +++ b/tests/resources/schema/ooxml/dml-chartDrawing.xsd @@ -1,144 +1,338 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + Chart Non Visual Properties + + + + + Non-Visual Shape Drawing Properties + + + + + + + + + Non-Visual Shape Properties + + + + + Shape Properties + + + + + Shape Style + + + + + Shape Text Body + + + + + + Reference to Custom Function + + + + + Text Link + + + + + Lock Text + + + + + Publish to Server + + + + + + + + Chart Non Visual Properties + + + + + Non-Visual Connection Shape Drawing Properties + + + + + + + + + Connector Non Visual Properties + + + + + Shape Properties + + + + + Connection Shape Style + + + + + + Reference to Custom Function + + + + + Publish to Server + + + + + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + Non-Visual Picture Properties + + + + + Picture Fill + + + + + + + + Reference to Custom Function + + + + + Publish to Server + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Graphic Frame Drawing Properties + + + + + + + + + Non-Visual Graphic Frame Properties + + + + + Graphic Frame Transform + + + + + Graphical Object + + + + + + Reference to Custom Function + + + + + Publish To Server + + + + + + + + Chart Non Visual Properties + + + + + Non-Visual Group Shape Drawing Properties + + + + + + + + + Non-Visual Group Shape Properties + + + + + Group Shape Properties + + + + + + Shape + + + + + Group Shape + + + + + Graphic Frame + + + + + Connector Shape + + + + + Picture + + + + + + + + + + + Shape Definition + + + + + Group Shape + + + + + Graphic Frame + + + + + Connection Shape + + + + + + + + + Chart Marker Coordinate Value + + + + + + + + + + + Relative X Coordinate + + + + + Relative Y Coordinate + + + + + + + + + Starting Anchor Point + + + + + Ending Anchor Point + + + + + + + + + + + Shape Extent + + + + + + + + + + Relative Anchor Shape Size + + + + + Absolute Anchor Shape Size + + + + + + + + + diff --git a/tests/resources/schema/ooxml/dml-compatibility.xsd b/tests/resources/schema/ooxml/dml-compatibility.xsd new file mode 100644 index 0000000000..625a11df7c --- /dev/null +++ b/tests/resources/schema/ooxml/dml-compatibility.xsd @@ -0,0 +1,20 @@ + + + + + + + Shape ID + + + + + + Legacy Drawing Object + + + diff --git a/tests/resources/schema/ooxml/dml-diagram.xsd b/tests/resources/schema/ooxml/dml-diagram.xsd index 615be6a8a1..e84fc109cc 100644 --- a/tests/resources/schema/ooxml/dml-diagram.xsd +++ b/tests/resources/schema/ooxml/dml-diagram.xsd @@ -1,1084 +1,3609 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns="http://schemas.openxmlformats.org/drawingml/2006/diagram" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/diagram" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + + + + + + + Language + + + + + Description Value + + + + + + + Language + + + + + Description Value + + + + + + + Category Type + + + + + Priority + + + + + + + + Color Transform Category + + + + + + + Color Application Method Type + + + + + Span + + + + + Cycle + + + + + Repeat + + + + + + + Hue Direction + + + + + Clockwise Hue Direction + + + + + Counterclockwise Hue Direction + + + + + + + + + + + Color Application Method Type + + + + + Hue Direction + + + + + + + + Fill Color List + + + + + Line Color List + + + + + Effect Color List + + + + + Text Line Color List + + + + + Text Fill Color List + + + + + Text Effect Color List + + + + + + + Name + + + + + + + + Title + + + + + Description + + + + + Color Transform Category List + + + + + Style Label + + + + + + + Unique ID + + + + + Minimum Version + + + + + + Color Transform Definitions + + + + + + + Title + + + + + Description + + + + + Color Transform Category List + + + + + + + Unique ID + + + + + Minimum Version + + + + + Resource ID + + + + + + Color Transform Header + + + + + + + Color Transform Definition Header + + + + + + + Color Transform Header List + + + + + Point Type + + + + + Node + + + + + Assistant Element + + + + + Document + + + + + Presentation + + + + + Parent Transition + + + + + Sibling Transition + + + + + + + + + Property Set + + + + + Shape Properties + + + + + Text Body + + + + + + + Model Identifier + + + + + Point Type + + + + + Connection Identifier + + + + + + + + Point + + + + + + + Connection Type + + + + + Parent Of + + + + + Presentation Of + + + + + Presentation Parent Of + + + + + Unknown Relationship + + + + + + + + + + + Model Identifier + + + + + Point Type + + + + + Source Identifier + + + + + Destination Identifier + + + + + Source Position + + + + + Destination Position + + + + + Parent Transition Identifier + + + + + Sibling Transition Identifier + + + + + Presentation Identifier + + + + + + + + Connection + + + + + + + + + Point List + + + + + Connection List + + + + + Background Formatting + + + + + Whole E2O Formatting + + + + + + + + Data Model + + + + + + Axis + + + + + Data Point Type + + + + + Hide Last Transition + + + + + Start + + + + + Count + + + + + Step + + + + + + + Constraint Type + + + + + For + + + + + For Name + + + + + Data Point Type + + + + + + + Reference Type + + + + + Reference For + + + + + Reference For Name + + + + + Reference Point Type + + + + + + + + + + + + Operator + + + + + Value + + + + + Factor + + + + + + + + Constraint + + + + + + + + + + + + Value + + + + + Factor + + + + + Max Value + + + + + + + + Rule + + + + + + + + + + + + + Layout Shape Type + + + + + + 1-Based Index + + + + + + + + + Adjust Handle Index + + + + + Value + + + + + + + + Shape Adjust + + + + + + + + + Shape Adjust List + + + + + + + Rotation + + + + + Shape Type + + + + + Relationship to Image Part + + + + + Z-Order Offset + + + + + Hide Geometry + + + + + Prevent Text Editing + + + + + Image Placeholder + + + + + + + Parameter Type + + + + + Value + + + + + + + + Parameter + + + + + + + Algorithm Type + + + + + Revision Number + + + + + + + + Algorithm + + + + + Shape + + + + + Presentation Of + + + + + Constraint List + + + + + Rule List + + + + + Variable List + + + + + For Each + + + + + Layout Node + + + + + Choose Element + + + + + + + Name + + + + + Style Label + + + + + Child Order + + + + + Move With + + + + + + + + Algorithm + + + + + Shape + + + + + Presentation Of + + + + + Constraint List + + + + + Rule List + + + + + For Each + + + + + Layout Node + + + + + Choose Element + + + + + + + Name + + + + + Reference + + + + + + + + + Algorithm + + + + + Shape + + + + + Presentation Of + + + + + Constraint List + + + + + Rule List + + + + + For Each + + + + + Layout Node + + + + + Choose Element + + + + + + + Name + + + + + + Function + + + + + Argument + + + + + Operator + + + + + Value + + + + + + + + Algorithm + + + + + Shape + + + + + Presentation Of + + + + + Constraint List + + + + + Rule List + + + + + For Each + + + + + Layout Node + + + + + Choose Element + + + + + Extension List + + + + + + Name + + + + + + + + If + + + + + Else + + + + + + Name + + + + + + + + Data Model + + + + + + Use Default + + + + + + + Category Type + + + + + Priority + + + + + + + + Category + + + + + + + + Language + + + + + Value + + + + + + + Language + + + + + Value + + + + + + + + Title + + + + + Description + + + + + Category List + + + + + Sample Data + + + + + Style Data + + + + + Color Transform Sample Data + + + + + Layout Node + + + + + + + Unique Identifier + + + + + Minimum Version + + + + + Default Style + + + + + + Layout Definition + + + + + + + Title + + + + + Description + + + + + Category List + + + + + + + Unique Identifier + + + + + Minimum Version + + + + + Default Style + + + + + Resource Identifier + + + + + + Layout Definition Header + + + + + + + Layout Definition Header + + + + + + + Diagram Layout Header List + + + + + + Explicit Relationship to Diagram Data Part + + + + + Explicit Relationship to Diagram Layout Definition Part + + + + + Explicit Relationship to Style Definition Part + + + + + Explicit Relationship to Diagram Colors Part + + + + + + Explicit Relationships to Diagram Parts + + + + + + + + Model Identifier + + + + + + + + Presentation Layout Variables + + + + + Shape Style + + + + + + Presentation Element Identifier + + + + + Presentation Name + + + + + Presentation Style Label + + + + + Presentation Style Index + + + + + Presentation Style Count + + + + + Current Diagram Type + + + + + Current Diagram Category + + + + + Current Style Type + + + + + Current Style Category + + + + + Color Transform Type Identifier + + + + + Color Transform Category + + + + + Coherent 3D Behavior + + + + + Placeholder Text + + + + + Placeholder + + + + + Custom Rotation + + + + + Custom Vertical Flip + + + + + Custom Horizontal Flip + + + + + Fixed Width Override + + + + + Fixed Height Override + + + + + Width Scale + + + + + Height Scale + + + + + Text Changed + + + + + Custom Factor Width + + + + + Custom Factor Height + + + + + Neighbor Offset Width + + + + + Neighbor Offset Height + + + + + Radius Scale + + + + + Include Angle Scale + + + + + + Diagram Direction Definition + + + + + Normal Direction + + + + + Reversed Direction + + + + + + + Hierarchy Branch Style Definition + + + + + Left + + + + + Right + + + + + Hanging + + + + + Standard + + + + + Initial + + + + + + + One by One Animation Value Definition + + + + + Disable One-by-One + + + + + One By One + + + + + By Branch One By One + + + + + + + Animation Level String Definition + + + + + Disable Level At Once + + + + + By Level Animation + + + + + From Center Animation + + + + + + + + Show Organization Chart User Interface Value + + + + + + Number of Nodes Definition + + + + + + + + + Maximum Children Value + + + + + + + Preferred Number of CHildren Value + + + + + + + Show Insert Bullet Value + + + + + + + Diagram Direction Value + + + + + + + Organization Chart Branch Style Value + + + + + + + One By One Animation Value + + + + + + + Level Animation Value + + + + + + Resize Handle + + + + + Exact + + + + + Relative + + + + + + + + Shape Resize Style Type + + + + + + + + Show Organization Chart User Interface + + + + + Maximum Children + + + + + Preferred Number of Children + + + + + Show Insert Bullet + + + + + Diagram Direction + + + + + Organization Chart Branch Style + + + + + One by One Animation String + + + + + Level Animation + + + + + Shape Resize Style + + + + + + + + Natural Language + + + + + Description Value + + + + + + + Natural Language + + + + + Description Value + + + + + + + Category Type + + + + + Priority + + + + + + + + Category + + + + + + + + + + + + + + 3-D Scene + + + + + 3-D Shape Properties + + + + + Text Properties + + + + + Shape Style + + + + + + + Style Name + + + + + + + + Title + + + + + Style Label Description + + + + + Category List + + + + + 3-D Scene + + + + + Style Label + + + + + + + Unique Style ID + + + + + Minimum Version + + + + + + Style Definition + + + + + + + Title + + + + + Style Label Description + + + + + Category List + + + + + + + Unique Style ID + + + + + Minimum Version + + + + + Resource ID + + + + + + Style Definition Header + + + + + + + Style Definition Header + + + + + + + List of Style Definition Headers + + + + + Algorithm Types + + + + + Composite + + + + + Connector Algorithm + + + + + Cycle Algorithm + + + + + Hierarchy Child Algorithm + + + + + Hierarchy Root Algorithm + + + + + Pyramid Algorithm + + + + + Linear Algorithm + + + + + Space Algorithm + + + + + Text Algorithm + + + + + Snake Algorithm + + + + + + + Axis Type + + + + + Self + + + + + Child + + + + + Descendant + + + + + Descendant or Self + + + + + Parent + + + + + Ancestor + + + + + Ancestor or Self + + + + + Follow Sibling + + + + + Preceding Sibling + + + + + Follow + + + + + Preceding + + + + + Root + + + + + None + + + + + + + Axis Type List + + + + + + Boolean Constraint + + + + + None + + + + + Equal + + + + + Greater Than or Equal to + + + + + Less Than or Equal to + + + + + + + Child Order + + + + + Bottom + + + + + Top + + + + + + + Constraint Type + + + + + Unknown + + + + + Alignment Offset + + + + + Beginning Margin + + + + + Bending Distance + + + + + Beginning Padding + + + + + Bottom + + + + + Bottom Margin + + + + + Bottom Offset + + + + + Center Height + + + + + Center X Offset + + + + + Center Width + + + + + Center Y Offset + + + + + Connection Distance + + + + + Diameter + + + + + End Margin + + + + + End Padding + + + + + Height + + + + + Arrowhead Height + + + + + Height Offset + + + + + Left + + + + + Left Margin + + + + + Left Offset + + + + + Right + + + + + Right Margin + + + + + Right Offset + + + + + Primary Font Size + + + + + Pyramid Accent Ratio + + + + + Secondary Font Size + + + + + Sibling Spacing + + + + + Secondary Sibling Spacing + + + + + Spacing + + + + + Stem Thickness + + + + + Top + + + + + Top Margin + + + + + Top Offset + + + + + User Defined A + + + + + User Defined B + + + + + User Defined C + + + + + User Defined D + + + + + User Defined E + + + + + User Defined F + + + + + User Defined G + + + + + User Defined H + + + + + User Defined I + + + + + User Defined J + + + + + User Defined K + + + + + User Defined L + + + + + User Defined M + + + + + User Defined N + + + + + User Defined O + + + + + User Defined P + + + + + User Defined Q + + + + + User Defined R + + + + + User Defined S + + + + + User Defined T + + + + + User Defined U + + + + + User Defined V + + + + + User Defined W + + + + + User Defined X + + + + + User Defined Y + + + + + User Defined Z + + + + + Width + + + + + Arrowhead Width + + + + + Width Offset + + + + + + + Constraint Relationship + + + + + Self + + + + + Child + + + + + Descendant + + + + + + + Data Point Type + + + + + All + + + + + Document + + + + + Node + + + + + Normal + + + + + Non Normal + + + + + Assistant + + + + + Non Assistant + + + + + Parent Transition + + + + + Presentation + + + + + Sibling Transition + + + + + + + Diagream Layout Node Type List + + + + + + Parameter Identifier + + + + + Horizontal Alignment + + + + + Vertical Alignment + + + + + Child Direction + + + + + Child Alignment + + + + + Secondary Child Alignment + + + + + Linear Direction + + + + + Secondary Linear Direction + + + + + Start Element + + + + + Bend Point + + + + + Connection Route + + + + + Beginning Arrowhead Style + + + + + End Style + + + + + Connector Dimension + + + + + Rotation Path + + + + + Center Shape Mapping + + + + + Node Horizontal Alignment + + + + + Node Vertical Alignment + + + + + Fallback Scale + + + + + Text Direction + + + + + Pyramid Accent Position + + + + + Pyramid Accent Text Margin + + + + + Text Block Direction + + + + + Text Anchor Horizontal + + + + + Text Anchor Vertical + + + + + Text Anchor Horizontal With Children + + + + + Text Anchor Vertical With Children + + + + + Parent Text Left-to-Right Alignment + + + + + Parent Text Right-to-Left Alignment + + + + + Shape Text Left-to-Right Alignment + + + + + Shape Text Right-to-Left Alignment + + + + + Auto Text Rotation + + + + + Grow Direction + + + + + Flow Direction + + + + + Continue Direction + + + + + Breakpoint + + + + + Offset + + + + + Hierarchy Alignment + + + + + Breakpoint Fixed Value + + + + + Start Bullets At Level + + + + + Start Angle + + + + + Span Angle + + + + + Aspect Ratio + + + + + Line Spacing Parent + + + + + Line Spacing After Parent Paragraph + + + + + Line Spacing Children + + + + + Line Spacing After Children Paragraph + + + + + Route Shortest Distance + + + + + Text Alignment + + + + + Pyramid Level Node + + + + + Pyramid Accent Background Node + + + + + Pyramid Accent Text Node + + + + + Source Node + + + + + Destination Node + + + + + Beginning Points + + + + + End Points + + + + + + + Integer List + + + + + + Unsigned Integer List + + + + + + Boolean List. + + + + + + Function Type + + + + + Count + + + + + Position + + + + + Reverse Position + + + + + Position Even + + + + + Position Odd + + + + + Variable + + + + + Depth + + + + + Max Depth + + + + + + + Function Operator + + + + + Equal + + + + + Not Equal To + + + + + Greater Than + + + + + Less Than + + + + + Greater Than or Equal to + + + + + Less Than or Equal to + + + + + + + Horizontal Alignment + + + + + Left + + + + + Center + + + + + Right + + + + + None + + + + + + + Vertical Alignment + + + + + Top + + + + + Middle + + + + + Bottom + + + + + None + + + + + + + Child Direction + + + + + Horizontal + + + + + Vertical + + + + + + + Child Alignment + + + + + Top + + + + + Bottom + + + + + Left + + + + + Right + + + + + + + Secondary Child Alignment + + + + + None + + + + + Top + + + + + Bottom + + + + + Left + + + + + Right + + + + + + + Linear Direction + + + + + From Left + + + + + From Right + + + + + From Top + + + + + From Bottom + + + + + + + Secondary Linear Direction + + + + + None + + + + + From Left + + + + + From Right + + + + + From Top + + + + + From Bottom + + + + + + + Starting Element + + + + + Node + + + + + Transition + + + + + + + Rotation Path + + + + + None + + + + + Along Path + + + + + + + Center Shape Mapping + + + + + None + + + + + First Node + + + + + + + Bend Point + + + + + Beginning + + + + + Default + + + + + End + + + + + + + Connector Routing + + + + + Straight + + + + + Bending + + + + + Curve + + + + + Long Curve + + + + + + + Arrowhead Styles + + + + + Auto + + + + + Arrowhead Present + + + + + No Arrowhead + + + + + + + Connector Dimension + + + + + 1 Dimension + + + + + 2 Dimensions + + + + + Custom + + + + + + + Connector Point + + + + + Auto + + + + + Bottom Center + + + + + Center + + + + + Middle Left + + + + + Middle Right + + + + + Top Center + + + + + Bottom Left + + + + + Bottom Right + + + + + Top Left + + + + + Top Right + + + + + Radial + + + + + + + Node Horizontal Alignment + + + + + Left + + + + + Center + + + + + Right + + + + + + + Node Vertical Alignment + + + + + Top + + + + + Middle + + + + + Bottom + + + + + + + Fallback Dimension + + + + + 1 Dimension + + + + + 2 Dimensions + + + + + + + Text Direction + + + + + From Top + + + + + From Bottom + + + + + + + Pyramid Accent Position + + + + + Before + + + + + Pyramid Accent After + + + + + + + Pyramid Accent Text Margin + + + + + Step + + + + + Stack + + + + + + + Text Block Direction + + + + + Horizontal + + + + + Vertical Direction + + + + + + + Text Anchor Horizontal + + + + + None + + + + + Center + + + + + + + Text Anchor Vertical + + + + + Top + + + + + Middle + + + + + Bottom + + + + + + + Text Alignment + + + + + Left + + + + + Center + + + + + Right + + + + + + + Auto Text Rotation + + + + + None + + + + + Upright + + + + + Gravity + + + + + + + Grow Direction + + + + + Top Left + + + + + Top Right + + + + + Bottom Left + + + + + Bottom Right + + + + + + + Flow Direction + + + + + Row + + + + + Column + + + + + + + Continue Direction + + + + + Reverse Direction + + + + + Same Direction + + + + + + + Breakpoint + + + + + End of Canvas + + + + + Balanced + + + + + Fixed + + + + + + + Offset + + + + + Center + + + + + Offset + + + + + + + Hierarchy Alignment + + + + + Top Left + + + + + Top Right + + + + + Top Center Children + + + + + Top Center Descendants + + + + + Bottom Left + + + + + Bottom Right + + + + + Bottom Center Child + + + + + Bottom Center Descendant + + + + + Left Top + + + + + Left Bottom + + + + + Left Center Child + + + + + Left Center Descendant + + + + + Right Top + + + + + Right Bottom + + + + + Right Center Children + + + + + Right Center Descendants + + + + + + + Function Value + + + + + + Variable Type + + + + + Unknown + + + + + Organizational Chart Algorithm + + + + + Child Max + + + + + Child Preference + + + + + Bullets Enabled + + + + + Direction + + + + + Hierarchy Branch + + + + + Animate One + + + + + Animation Level + + + + + Resize Handles + + + + + + + Function Argument + + + + + + Output Shape Type + + + + + None + + + + + Connection + + + + diff --git a/tests/resources/schema/ooxml/dml-lockedCanvas.xsd b/tests/resources/schema/ooxml/dml-lockedCanvas.xsd index 0e264c8db8..be38765f71 100644 --- a/tests/resources/schema/ooxml/dml-lockedCanvas.xsd +++ b/tests/resources/schema/ooxml/dml-lockedCanvas.xsd @@ -1,9 +1,13 @@ - + - - + xmlns="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas"> + + + + Locked Canvas Container + + diff --git a/tests/resources/schema/ooxml/dml-main.xsd b/tests/resources/schema/ooxml/dml-main.xsd index 862f7c1808..c94362c269 100644 --- a/tests/resources/schema/ooxml/dml-main.xsd +++ b/tests/resources/schema/ooxml/dml-main.xsd @@ -1,3041 +1,9661 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/main" elementFormDefault="qualified"> + + + + + + + + + + + + + + Linked Relationship ID + + + + + Content Type of Linked Audio File + + + + + + + + + + Linked Relationship ID + + + + + Content Type of Linked Video File + + + + + + + + + + Linked Relationship ID + + + + + + + Track + + + + + Time + + + + + + + + Audio Start Time + + + + + Audio End Time + + + + + + + + + + Audio from CD + + + + + Audio from WAV File + + + + + Audio from File + + + + + Video from File + + + + + QuickTime from File + + + + + + + + Style Matrix Column Index + + + + + + Font Collection Index + + + + + Major Font + + + + + Minor Font + + + + + None + + + + + + + Theme Color Reference + + + + + Dark 1 + + + + + Light 1 + + + + + Dark 2 + + + + + Light 2 + + + + + Accent 1 + + + + + Accent 2 + + + + + Accent 3 + + + + + Accent 4 + + + + + Accent 5 + + + + + Accent 6 + + + + + Hyperlink + + + + + Followed Hyperlink + + + + + + + + + Dark 1 + + + + + Light 1 + + + + + Dark 2 + + + + + Light 2 + + + + + Accent 1 + + + + + Accent 2 + + + + + Accent 3 + + + + + Accent 4 + + + + + Accent 5 + + + + + Accent 6 + + + + + Hyperlink + + + + + Followed Hyperlink + + + + + + + Name + + + + + + + + + + Name + + + + + + + Script + + + + + Typeface + + + + + + + + Custom color + + + + + + + + + Latin Font + + + + + East Asian Font + + + + + Complex Script Font + + + + + Font + + + + + + + + + + + 3D Scene Properties + + + + + 3D properties + + + + + + + + + Major Font + + + + + Minor fonts + + + + + + + Name + + + + + + + + + + + + + + + + + + Effect Style + + + + + + + + + + + + + + Fill Style List + + + + + Line Style List + + + + + Effect Style List + + + + + Background Fill Style List + + + + + + Name + + + + + + + + + Font Scheme + + + + + Format Scheme + + + + + + + + + + + + Uniform Resource Identifier + + + + + + Coordinate + + + + + + Coordinate + + + + + + + + + Coordinate Point + + + + + + Coordinate Point + + + + + + Positive Coordinate + + + + + + + + + Positive Coordinate Point + + + + + + + + Angle + + + + + + + Value + + + + + + Fixed Angle + + + + + + + + + Positive Fixed Angle + + + + + + + + + + Value + + + + + + Percentage + + + + + + Percentage as Decimal Number + + + + + + + Value + + + + + + Positive Percentage + + + + + + Positive Percentage as Decimal Number + + + + + + + + + Value + + + + + + Fixed Percentage + + + + + + Fixed Percentage + + + + + + + + + + Value + + + + + + Positive Fixed Percentage + + + + + + Positive Fixed Percentage + + + + + + + + + + Value + + + + + + + Numerator + + + + + Denominator + + + + + + + X-Axis Coordinate + + + + + Y-Axis Coordinate + + + + + + + Extent Length + + + + + Extent Width + + + + + + + + + + + + + Tint + + + + + Shade + + + + + Complement + + + + + Inverse + + + + + Gray + + + + + Alpha + + + + + Alpha Offset + + + + + Alpha Modulation + + + + + Hue + + + + + Hue Offset + + + + + Hue Modulate + + + + + Saturation + + + + + Saturation Offset + + + + + Saturation Modulation + + + + + Luminance + + + + + Luminance Offset + + + + + Luminance Modulation + + + + + Red + + + + + Red Offset + + + + + Red Modulation + + + + + Green + + + + + Green Offset + + + + + Green Modification + + + + + Blue + + + + + Blue Offset + + + + + Blue Modification + + + + + Gamma + + + + + Inverse Gamma + + + + + + + + + + + Red + + + + + Green + + + + + Blue + + + + + + + + + + Value + + + + + + + + + + Hue + + + + + Saturation + + + + + Luminance + + + + + + System Color Value + + + + + Scroll Bar System Color + + + + + Background System Color + + + + + Active Caption System Color + + + + + Inactive Caption System Color + + + + + Menu System Color + + + + + Window System Color + + + + + Window Frame System Color + + + + + Menu Text System Color + + + + + Window Text System Color + + + + + Caption Text System Color + + + + + Active Border System Color + + + + + Inactive Border System Color + + + + + Application Workspace System Color + + + + + Highlight System Color + + + + + Highlight Text System Color + + + + + Button Face System Color + + + + + Button Shadow System Color + + + + + Gray Text System Color + + + + + Button Text System Color + + + + + Inactive Caption Text System Color + + + + + Button Highlight System Color + + + + + 3D Dark System Color + + + + + 3D Light System Color + + + + + Info Text System Color + + + + + Info Back System Color + + + + + Hot Light System Color + + + + + Gradient Active Caption System Color + + + + + Gradient Inactive Caption System Color + + + + + Menu Highlight System Color + + + + + Menu Bar System Color + + + + + + + + + + + Value + + + + + Last Color + + + + + + Scheme Color + + + + + Background Color 1 + + + + + Text Color 1 + + + + + Background Color 2 + + + + + Text Color 2 + + + + + Accent Color 1 + + + + + Accent Color 2 + + + + + Accent Color 3 + + + + + Accent Color 4 + + + + + Accent Color 5 + + + + + Accent Color 6 + + + + + Hyperlink Color + + + + + Followed Hyperlink Color + + + + + Style Color + + + + + Dark Color 1 + + + + + Light Color 1 + + + + + Dark Color 2 + + + + + Light Color 2 + + + + + + + + + + + Value + + + + + + Preset Color Value + + + + + Alice Blue Preset Color + + + + + Antique White Preset Color + + + + + Aqua Preset Color + + + + + Aquamarine Preset Color + + + + + Azure Preset Color + + + + + Beige Preset Color + + + + + Bisque Preset Color + + + + + Black Preset Color + + + + + Blanched Almond Preset Color + + + + + Blue Preset Color + + + + + Blue Violet Preset Color + + + + + Brown Preset Color + + + + + Burly Wood Preset Color + + + + + Cadet Blue Preset Color + + + + + Chartreuse Preset Color + + + + + Chocolate Preset Color + + + + + Coral Preset Color + + + + + Cornflower Blue Preset Color + + + + + Cornsilk Preset Color + + + + + Crimson Preset Color + + + + + Cyan Preset Color + + + + + Dark Blue Preset Color + + + + + Dark Cyan Preset Color + + + + + Dark Goldenrod Preset Color + + + + + Dark Gray Preset Color + + + + + Dark Gray Preset Color + + + + + Dark Green Preset Color + + + + + Dark Khaki Preset Color + + + + + Dark Magenta Preset Color + + + + + Dark Olive Green Preset Color + + + + + Dark Orange Preset Color + + + + + Dark Orchid Preset Color + + + + + Dark Red Preset Color + + + + + Dark Salmon Preset Color + + + + + Dark Sea Green Preset Color + + + + + Dark Slate Blue Preset Color + + + + + Dark Slate Gray Preset Color + + + + + Dark Slate Gray Preset Color + + + + + Dark Turquoise Preset Color + + + + + Dark Violet Preset Color + + + + + Dark Blue Preset Color + + + + + Dark Cyan Preset Color + + + + + Dark Goldenrod Preset Color + + + + + Dark Gray Preset Color + + + + + Dark Gray Preset Color + + + + + Dark Green Preset Color + + + + + Dark Khaki Preset Color + + + + + Dark Magenta Preset Color + + + + + Dark Olive Green Preset Color + + + + + Dark Orange Preset Color + + + + + Dark Orchid Preset Color + + + + + Dark Red Preset Color + + + + + Dark Salmon Preset Color + + + + + Dark Sea Green Preset Color + + + + + Dark Slate Blue Preset Color + + + + + Dark Slate Gray Preset Color + + + + + Dark Slate Gray Preset Color + + + + + Dark Turquoise Preset Color + + + + + Dark Violet Preset Color + + + + + Deep Pink Preset Color + + + + + Deep Sky Blue Preset Color + + + + + Dim Gray Preset Color + + + + + Dim Gray Preset Color + + + + + Dodger Blue Preset Color + + + + + Firebrick Preset Color + + + + + Floral White Preset Color + + + + + Forest Green Preset Color + + + + + Fuchsia Preset Color + + + + + Gainsboro Preset Color + + + + + Ghost White Preset Color + + + + + Gold Preset Color + + + + + Goldenrod Preset Color + + + + + Gray Preset Color + + + + + Gray Preset Color + + + + + Green Preset Color + + + + + Green Yellow Preset Color + + + + + Honeydew Preset Color + + + + + Hot Pink Preset Color + + + + + Indian Red Preset Color + + + + + Indigo Preset Color + + + + + Ivory Preset Color + + + + + Khaki Preset Color + + + + + Lavender Preset Color + + + + + Lavender Blush Preset Color + + + + + Lawn Green Preset Color + + + + + Lemon Chiffon Preset Color + + + + + Light Blue Preset Color + + + + + Light Coral Preset Color + + + + + Light Cyan Preset Color + + + + + Light Goldenrod Yellow Preset Color + + + + + Light Gray Preset Color + + + + + Light Gray Preset Color + + + + + Light Green Preset Color + + + + + Light Pink Preset Color + + + + + Light Salmon Preset Color + + + + + Light Sea Green Preset Color + + + + + Light Sky Blue Preset Color + + + + + Light Slate Gray Preset Color + + + + + Light Slate Gray Preset Color + + + + + Light Steel Blue Preset Color + + + + + Light Yellow Preset Color + + + + + Light Blue Preset Color + + + + + Light Coral Preset Color + + + + + Light Cyan Preset Color + + + + + Light Goldenrod Yellow Preset Color + + + + + Light Gray Preset Color + + + + + Light Gray Preset Color + + + + + Light Green Preset Color + + + + + Light Pink Preset Color + + + + + Light Salmon Preset Color + + + + + Light Sea Green Preset Color + + + + + Light Sky Blue Preset Color + + + + + Light Slate Gray Preset Color + + + + + Light Slate Gray Preset Color + + + + + Light Steel Blue Preset Color + + + + + Light Yellow Preset Color + + + + + Lime Preset Color + + + + + Lime Green Preset Color + + + + + Linen Preset Color + + + + + Magenta Preset Color + + + + + Maroon Preset Color + + + + + Medium Aquamarine Preset Color + + + + + Medium Blue Preset Color + + + + + Medium Orchid Preset Color + + + + + Medium Purple Preset Color + + + + + Medium Sea Green Preset Color + + + + + Medium Slate Blue Preset Color + + + + + Medium Spring Green Preset Color + + + + + Medium Turquoise Preset Color + + + + + Medium Violet Red Preset Color + + + + + Medium Aquamarine Preset Color + + + + + Medium Blue Preset Color + + + + + Medium Orchid Preset Color + + + + + Medium Purple Preset Color + + + + + Medium Sea Green Preset Color + + + + + Medium Slate Blue Preset Color + + + + + Medium Spring Green Preset Color + + + + + Medium Turquoise Preset Color + + + + + Medium Violet Red Preset Color + + + + + Midnight Blue Preset Color + + + + + Mint Cream Preset Color + + + + + Misty Rose Preset Color + + + + + Moccasin Preset Color + + + + + Navajo White Preset Color + + + + + Navy Preset Color + + + + + Old Lace Preset Color + + + + + Olive Preset Color + + + + + Olive Drab Preset Color + + + + + Orange Preset Color + + + + + Orange Red Preset Color + + + + + Orchid Preset Color + + + + + Pale Goldenrod Preset Color + + + + + Pale Green Preset Color + + + + + Pale Turquoise Preset Color + + + + + Pale Violet Red Preset Color + + + + + Papaya Whip Preset Color + + + + + Peach Puff Preset Color + + + + + Peru Preset Color + + + + + Pink Preset Color + + + + + Plum Preset Color + + + + + Powder Blue Preset Color + + + + + Purple Preset Color + + + + + Red Preset Color + + + + + Rosy Brown Preset Color + + + + + Royal Blue Preset Color + + + + + Saddle Brown Preset Color + + + + + Salmon Preset Color + + + + + Sandy Brown Preset Color + + + + + Sea Green Preset Color + + + + + Sea Shell Preset Color + + + + + Sienna Preset Color + + + + + Silver Preset Color + + + + + Sky Blue Preset Color + + + + + Slate Blue Preset Color + + + + + Slate Gray Preset Color + + + + + Slate Gray Preset Color + + + + + Snow Preset Color + + + + + Spring Green Preset Color + + + + + Steel Blue Preset Color + + + + + Tan Preset Color + + + + + Teal Preset Color + + + + + Thistle Preset Color + + + + + Tomato Preset Color + + + + + Turquoise Preset Color + + + + + Violet Preset Color + + + + + Wheat Preset Color + + + + + White Preset Color + + + + + White Smoke Preset Color + + + + + Yellow Preset Color + + + + + Yellow Green Preset Color + + + + + + + + + + + Value + + + + + + + + Extension + + + + + + + + + + + + + + Horizontal Ratio + + + + + Vertical Ratio + + + + + + + + + Offset + + + + + Extents + + + + + + Rotation + + + + + Horizontal Flip + + + + + Vertical Flip + + + + + + + + Offset + + + + + Extents + + + + + Child Offset + + + + + Child Extents + + + + + + Rotation + + + + + Horizontal Flip + + + + + Vertical Flip + + + + + + + X-Coordinate in 3D + + + + + Y-Coordinate in 3D + + + + + Z-Coordinate in 3D + + + + + + + Distance along X-axis in 3D + + + + + Distance along Y-axis in 3D + + + + + Distance along Z-axis in 3D + + + + + + + Latitude + + + + + Longitude + + + + + Revolution + + + + + + + Left Offset + + + + + Top Offset + + + + + Right Offset + + + + + Bottom Offset + + + + + + Rectangle Alignments + + + + + Rectangle Alignment Enum ( Top Left ) + + + + + Rectangle Alignment Enum ( Top ) + + + + + Rectangle Alignment Enum ( Top Right ) + + + + + Rectangle Alignment Enum ( Left ) + + + + + Rectangle Alignment Enum ( Center ) + + + + + Rectangle Alignment Enum ( Right ) + + + + + Rectangle Alignment Enum ( Bottom Left ) + + + + + Rectangle Alignment Enum ( Bottom ) + + + + + Rectangle Alignment Enum ( Bottom Right ) + + + + + + + + + RGB Color Model - Percentage Variant + + + + + RGB Color Model - Hex Variant + + + + + Hue, Saturation, Luminance Color Model + + + + + System Color + + + + + Scheme Color + + + + + Preset Color + + + + + + + + + + + + + + + + + Black and White Mode + + + + + Color + + + + + Automatic + + + + + Gray + + + + + Light Gray + + + + + Inverse Gray + + + + + Gray and White + + + + + Black and Gray + + + + + Black and White + + + + + Black + + + + + White + + + + + Hidden + + + + + + + + Embedded Picture Reference + + + + + Linked Picture Reference + + + + + + + Embedded Audio File Relationship ID + + + + + Sound Name + + + + + + + + Hyperlink Sound + + + + + + + Drawing Object Hyperlink Target + + + + + Invalid URL + + + + + Action Setting + + + + + Target Frame + + + + + Hyperlink Tooltip + + + + + Add Hyperlink to Page History + + + + + Highlight Click + + + + + End Sounds + + + + + + Drawing Element ID + + + + + + + Disallow Shape Grouping + + + + + Disallow Shape Selection + + + + + Disallow Shape Rotation + + + + + Disallow Aspect Ratio Change + + + + + Disallow Shape Movement + + + + + Disallow Shape Resize + + + + + Disallow Shape Point Editing + + + + + Disallow Showing Adjust Handles + + + + + Disallow Arrowhead Changes + + + + + Disallow Shape Type Change + + + + + + + + + + + + + + + + + Disallow Shape Text Editing + + + + + + + + + + + Disallow Crop Changes + + + + + + + + + + Disallow Shape Grouping + + + + + Disallow Shape Ungrouping + + + + + Disallow Shape Selection + + + + + Disallow Shape Rotation + + + + + Disallow Aspect Ratio Change + + + + + Disallow Moving Shape + + + + + Disallow Shape Resizing + + + + + + + + + + Disallow Shape Grouping + + + + + Disallow Selection of Child Shapes + + + + + Disallow Shape Selection + + + + + Disallow Aspect Ratio Change + + + + + Disallow Shape Movement + + + + + Disallow Shape Resize + + + + + + + + Drawing Element On Click Hyperlink + + + + + Hyperlink for Hover + + + + + + + Unique Identifier + + + + + Name + + + + + Alternative Text for Object + + + + + Hidden + + + + + Title + + + + + + + + Shape Locks + + + + + + + Text Box + + + + + + + + Connection Shape Locks + + + + + Connection Start + + + + + Connection End + + + + + + + + + + Picture Locks + + + + + + + Relative Resize Preferred + + + + + + + + Group Shape Locks + + + + + + + + + + Graphic Frame Locks + + + + + + + + + + + + Uniform Resource Identifier + + + + + + + + Graphic Object Data + + + + + + + Graphic Object + + + + + Chart Animation Build Step + + + + + Category + + + + + Category Points + + + + + Series + + + + + Series Points + + + + + All Points + + + + + Grid and Legend + + + + + + + Diagram Animation Build Steps + + + + + Shape + + + + + Background + + + + + + + + Identifier + + + + + Animation Build Step + + + + + + + Series Index + + + + + Category Index + + + + + Animation Build Step + + + + + + + + Diagram to Animate + + + + + Chart to Animate + + + + + + + Animation Build Type + + + + + Animate At Once + + + + + + + Diagram only Animation Types + + + + + Elements One-by-One + + + + + Level One-by-One + + + + + Each Level at Once + + + + + + + Diagram Animation Build Type + + + + + + + Build + + + + + Reverse Animation + + + + + + Chart only Animation Types + + + + + Series + + + + + Catefory + + + + + Series Element + + + + + Category Element + + + + + + + Chart Animation Build Type + + + + + + + Build + + + + + Animate Background + + + + + + + + Build Diagram + + + + + Build Chart + + + + + + + + + + + + + + + Outline + + + + + + + + + + + Shape Text Body + + + + + + Use Shape Text Rectangle + + + + + + + + + + + + + Non-Visual Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Shape + + + + + Visual Properties + + + + + Text Shape + + + + + Style + + + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Connector Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Connection Shape + + + + + Visual Properties + + + + + Shape Style + + + + + + + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + Non-Visual Properties for a Picture + + + + + Picture Fill + + + + + Shape Properties + + + + + + + + + + + + Non-Visual Graphic Frame Drawing Properties + + + + + + + + + Non-Visual Properties for a Graphic Frame + + + + + + + + + + + + + Non-Visual Group Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Group Shape + + + + + Visual Group Shape Properties + + + + + + Text shape + + + + + Shape + + + + + Connection Shape + + + + + Picture + + + + + Graphic Frame + + + + + Group shape + + + + + + + + + Preset Camera Type + + + + + Legacy Oblique Top Left + + + + + Legacy Oblique Top + + + + + Legacy Oblique Top Right + + + + + Legacy Oblique Left + + + + + Legacy Oblique Front + + + + + Legacy Oblique Right + + + + + Legacy Oblique Bottom Left + + + + + Legacy Oblique Bottom + + + + + Legacy Oblique Bottom Right + + + + + Legacy Perspective Top Left + + + + + Legacy Perspective Top + + + + + Legacy Perspective Top Right + + + + + Legacy Perspective Left + + + + + Legacy Perspective Front + + + + + Legacy Perspective Right + + + + + Legacy Perspective Bottom Left + + + + + Legacy Perspective Bottom + + + + + Legacy Perspective Bottom Right + + + + + Orthographic Front + + + + + Isometric Top Up + + + + + Isometric Top Down + + + + + Isometric Bottom Up + + + + + Isometric Bottom Down + + + + + Isometric Left Up + + + + + Isometric Left Down + + + + + Isometric Right Up + + + + + Isometric Right Down + + + + + Isometric Off Axis 1 Left + + + + + Isometric Off Axis 1 Right + + + + + Isometric Off Axis 1 Top + + + + + Isometric Off Axis 2 Left + + + + + Isometric Off Axis 2 Right + + + + + Isometric Off Axis 2 Top + + + + + Isometric Off Axis 3 Left + + + + + Isometric Off Axis 3 Right + + + + + Isometric Off Axis 3 Bottom + + + + + Isometric Off Axis 4 Left + + + + + Isometric Off Axis 4 Right + + + + + Isometric Off Axis 4 Bottom + + + + + Oblique Top Left + + + + + Oblique Top + + + + + Oblique Top Right + + + + + Oblique Left + + + + + Oblique Right + + + + + Oblique Bottom Left + + + + + Oblique Bottom + + + + + Oblique Bottom Right + + + + + Perspective Front + + + + + Perspective Left + + + + + Perspective Right + + + + + Orthographic Above + + + + + Perspective Below + + + + + Perspective Above Left Facing + + + + + Perspective Above Right Facing + + + + + Perspective Contrasting Left Facing + + + + + Perspective Contrasting Right Facing + + + + + Perspective Heroic Left Facing + + + + + Perspective Heroic Right Facing + + + + + Perspective Heroic Extreme Left Facing + + + + + Perspective Heroic Extreme Right Facing + + + + + Perspective Relaxed + + + + + Perspective Relaxed Moderately + + + + + + + Field of View Angle + + + + + + + + + + + Rotation + + + + + + Preset Camera Type + + + + + Field of View + + + + + Zoom + + + + + + Light Rig Direction + + + + + Top Left + + + + + Top + + + + + Top Right + + + + + Left + + + + + Right + + + + + Bottom Left + + + + + Bottom + + + + + Bottom Right + + + + + + + Light Rig Type + + + + + Legacy Flat 1 + + + + + Legacy Flat 2 + + + + + Legacy Flat 3 + + + + + Legacy Flat 4 + + + + + Legacy Normal 1 + + + + + Legacy Normal 2 + + + + + Legacy Normal 3 + + + + + Legacy Normal 4 + + + + + Legacy Harsh 1 + + + + + Legacy Harsh 2 + + + + + Legacy Harsh 3 + + + + + Legacy Harsh 4 + + + + + Three Point + + + + + Light Rig Enum ( Balanced ) + + + + + Soft + + + + + Harsh + + + + + Flood + + + + + Contrasting + + + + + Morning + + + + + Sunrise + + + + + Sunset + + + + + Chilly + + + + + Freezing + + + + + Flat + + + + + Two Point + + + + + Glow + + + + + Bright Room + + + + + + + + + Rotation + + + + + + Rig Preset + + + + + Direction + + + + + + + + Camera + + + + + Light Rig + + + + + Backdrop Plane + + + + + + + + + + Anchor Point + + + + + Normal + + + + + Up Vector + + + + + + + + Bevel Presets + + + + + Relaxed Inset + + + + + Circle + + + + + Slope + + + + + Cross + + + + + Angle + + + + + Soft Round + + + + + Convex + + + + + Cool Slant + + + + + Divot + + + + + Riblet + + + + + Hard Edge + + + + + Art Deco + + + + + + + + Width + + + + + Height + + + + + Preset Bevel + + + + + + Preset Material Type + + + + + Legacy Matte + + + + + Legacy Plastic + + + + + Legacy Metal + + + + + Legacy Wireframe + + + + + Matte + + + + + Plastic + + + + + Metal + + + + + Warm Matte + + + + + Translucent Powder + + + + + Powder + + + + + Dark Edge + + + + + Soft Edge + + + + + Clear + + + + + Flat + + + + + Soft Metal + + + + + + + + + Top Bevel + + + + + Bottom Bevel + + + + + Extrusion Color + + + + + Contour Color + + + + + + + Shape Depth + + + + + Extrusion Height + + + + + Contour Width + + + + + Preset Material Type + + + + + + + Z Coordinate + + + + + + + + Apply 3D shape properties + + + + + No text in 3D scene + + + + + + + + Threshold + + + + + + + + + + + + + + Amount + + + + + + + Radius + + + + + + + Alpha + + + + + + + Threshold + + + + + + + Radius + + + + + Grow Bounds + + + + + + + + Change Color From + + + + + Change Color To + + + + + + Consider Alpha Values + + + + + + + + + + + + + + + + + + + + Radius + + + + + + + + Hue + + + + + Saturation + + + + + Luminance + + + + + + + + + + Blur Radius + + + + + Distance + + + + + Direction + + + + + + + Brightness + + + + + Contrast + + + + + + + + + + Blur Radius + + + + + Shadow Offset Distance + + + + + Shadow Direction + + + + + Horizontal Scaling Factor + + + + + Vertical Scaling Factor + + + + + Horizontal Skew + + + + + Vertical Skew + + + + + Shadow Alignment + + + + + Rotate With Shape + + + + + + Preset Shadow Type + + + + + Top Left Drop Shadow + + + + + Top Right Drop Shadow + + + + + Back Left Perspective Shadow + + + + + Back Right Perspective Shadow + + + + + Bottom Left Drop Shadow + + + + + Bottom Right Drop Shadow + + + + + Front Left Perspective Shadow + + + + + Front Right Perspective Shadow + + + + + Top Left Small Drop Shadow + + + + + Top Left Large Drop Shadow + + + + + Back Left Long Perspective Shadow + + + + + Back Right Long Perspective Shadow + + + + + Top Left Double Drop Shadow + + + + + Bottom Right Small Drop Shadow + + + + + Front Left Long Perspective Shadow + + + + + Front Right LongPerspective Shadow + + + + + 3D Outer Box Shadow + + + + + 3D Inner Box Shadow + + + + + Back Center Perspective Shadow + + + + + Front Bottom Shadow + + + + + + + + + + + Preset Shadow + + + + + Distance + + + + + Direction + + + + + + + Blur Radius + + + + + Start Opacity + + + + + Start Position + + + + + End Alpha + + + + + End Position + + + + + Distance + + + + + Direction + + + + + Fade Direction + + + + + Horizontal Ratio + + + + + Vertical Ratio + + + + + Horizontal Skew + + + + + Vertical Skew + + + + + Shadow Alignment + + + + + Rotate With Shape + + + + + + + Offset X + + + + + Offset Y + + + + + + + Radius + + + + + + + Hue + + + + + Amount + + + + + + + Horizontal Ratio + + + + + Vertical Ratio + + + + + Horizontal Skew + + + + + Vertical Skew + + + + + Horizontal Shift + + + + + Vertical Shift + + + + + + + + + + + + + Angle + + + + + Scaled + + + + + + Path Shade Type + + + + + Shape + + + + + Circle + + + + + Rectangle + + + + + + + + + Fill To Rectangle + + + + + + Gradient Fill Path + + + + + + + + Linear Gradient Fill + + + + + Path Gradient + + + + + + + Tile Flip Mode + + + + + None + + + + + Horizontal + + + + + Vertical + + + + + Horizontal and Vertical + + + + + + + + + + + Position + + + + + + + + Gradient stops + + + + + + + + + Gradient Stop List + + + + + + Tile Rectangle + + + + + + Tile Flip + + + + + Rotate With Shape + + + + + + + Horizontal Offset + + + + + Vertical Offset + + + + + Horizontal Ratio + + + + + Vertical Ratio + + + + + Tile Flipping + + + + + Alignment + + + + + + + + Fill Rectangle + + + + + + + + + Tile + + + + + Stretch + + + + + + + Blip Compression Type + + + + + Email Compression + + + + + Screen Viewing Compression + + + + + Printing Compression + + + + + High Quality Printing Compression + + + + + No Compression + + + + + + + + + + Alpha Bi-Level Effect + + + + + + + + + Alpha Modulate Fixed Effect + + + + + + Bi-Level (Black/White) Effect + + + + + + + Solid Color Replacement + + + + + + + + + Luminance Effect + + + + + Tint Effect + + + + + + + + + Compression State + + + + + + + + + Source Rectangle + + + + + + + DPI Setting + + + + + Rotate With Shape + + + + + + Preset Pattern Value + + + + + 5% + + + + + 10% + + + + + 20% + + + + + 25% + + + + + 30% + + + + + 40% + + + + + 50% + + + + + 60% + + + + + 70% + + + + + 75% + + + + + 80% + + + + + 90% + + + + + Horizontal + + + + + Vertical + + + + + Light Horizontal + + + + + Light Vertical + + + + + Dark Horizontal + + + + + Dark Vertical + + + + + Narrow Horizontal + + + + + Narrow Vertical + + + + + Dashed Horizontal + + + + + Dashed Vertical + + + + + Cross + + + + + Downward Diagonal + + + + + Upward Diagonal + + + + + Light Downward Diagonal + + + + + Light Upward Diagonal + + + + + Dark Downward Diagonal + + + + + Dark Upward Diagonal + + + + + Wide Downward Diagonal + + + + + Wide Upward Diagonal + + + + + Dashed Downward Diagonal + + + + + Dashed Upward DIagonal + + + + + Diagonal Cross + + + + + Small Checker Board + + + + + Large Checker Board + + + + + Small Grid + + + + + Large Grid + + + + + Dotted Grid + + + + + Small Confetti + + + + + Large Confetti + + + + + Horizontal Brick + + + + + Diagonal Brick + + + + + Solid Diamond + + + + + Open Diamond + + + + + Dotted Diamond + + + + + Plaid + + + + + Sphere + + + + + Weave + + + + + Divot + + + + + Shingle + + + + + Wave + + + + + Trellis + + + + + Zig Zag + + + + + + + + + Foreground color + + + + + Background color + + + + + + Preset Pattern + + + + + + + + + + + + + Pattern Fill + + + + + Group Fill + + + + + + + + + + + + + + + + + Blend Mode + + + + + Overlay + + + + + Multiply + + + + + Screen + + + + + Darken + + + + + Lighten + + + + + + + + + + + Blend + + + + + + + Reference + + + + + + + + Effect Container + + + + + Effect + + + + + + Alpha Ceiling Effect + + + + + Alpha Floor Effect + + + + + Alpha Inverse Effect + + + + + Alpha Modulate Effect + + + + + + Alpha Inset/Outset Effect + + + + + Alpha Replace Effect + + + + + + Blend Effect + + + + + + Color Change Effect + + + + + + Duotone Effect + + + + + Fill + + + + + Fill Overlay Effect + + + + + Glow Effect + + + + + Gray Scale Effect + + + + + Hue Saturation Luminance Effect + + + + + Inner Shadow Effect + + + + + Luminance + + + + + Outer Shadow Effect + + + + + Preset Shadow + + + + + Reflection Effect + + + + + Relative Offset Effect + + + + + Soft Edge Effect + + + + + + Transform Effect + + + + + + + Effect Container Type + + + + + Sibling + + + + + Tree + + + + + + + + + Effect Container Type + + + + + Name + + + + + + + + + + + + + Effect to blend + + + + + + Blend Mode + + + + + + + + Blur Effect + + + + + + + + + + + + + + + + Effect Container + + + + + Effect Container + + + + + + + + + + + + + Preset Shape Types + + + + + Line Shape + + + + + Line Inverse Shape + + + + + Triangle Shape + + + + + Right Triangle Shape + + + + + Rectangle Shape + + + + + Diamond Shape + + + + + Parallelogram Shape + + + + + Trapezoid Shape + + + + + Non-Isosceles Trapezoid Shape + + + + + Pentagon Shape + + + + + Hexagon Shape + + + + + Heptagon Shape + + + + + Octagon Shape + + + + + Decagon Shape + + + + + Dodecagon Shape + + + + + Four Pointed Star Shape + + + + + Five Pointed Star Shape + + + + + Six Pointed Star Shape + + + + + Seven Pointed Star Shape + + + + + Eight Pointed Star Shape + + + + + Ten Pointed Star Shape + + + + + Twelve Pointed Star Shape + + + + + Sixteen Pointed Star Shape + + + + + Twenty Four Pointed Star Shape + + + + + Thirty Two Pointed Star Shape + + + + + Round Corner Rectangle Shape + + + + + One Round Corner Rectangle Shape + + + + + Two Same-side Round Corner Rectangle Shape + + + + + Two Diagonal Round Corner Rectangle Shape + + + + + One Snip One Round Corner Rectangle Shape + + + + + One Snip Corner Rectangle Shape + + + + + Two Same-side Snip Corner Rectangle Shape + + + + + Two Diagonal Snip Corner Rectangle Shape + + + + + Plaque Shape + + + + + Ellipse Shape + + + + + Teardrop Shape + + + + + Home Plate Shape + + + + + Chevron Shape + + + + + Pie Wedge Shape + + + + + Pie Shape + + + + + Block Arc Shape + + + + + Donut Shape + + + + + No Smoking Shape + + + + + Right Arrow Shape + + + + + Left Arrow Shape + + + + + Up Arrow Shape + + + + + Down Arrow Shape + + + + + Striped Right Arrow Shape + + + + + Notched Right Arrow Shape + + + + + Bent Up Arrow Shape + + + + + Left Right Arrow Shape + + + + + Up Down Arrow Shape + + + + + Left Up Arrow Shape + + + + + Left Right Up Arrow Shape + + + + + Quad-Arrow Shape + + + + + Callout Left Arrow Shape + + + + + Callout Right Arrow Shape + + + + + Callout Up Arrow Shape + + + + + Callout Down Arrow Shape + + + + + Callout Left Right Arrow Shape + + + + + Callout Up Down Arrow Shape + + + + + Callout Quad-Arrow Shape + + + + + Bent Arrow Shape + + + + + U-Turn Arrow Shape + + + + + Circular Arrow Shape + + + + + Left Circular Arrow Shape + + + + + Left Right Circular Arrow Shape + + + + + Curved Right Arrow Shape + + + + + Curved Left Arrow Shape + + + + + Curved Up Arrow Shape + + + + + Curved Down Arrow Shape + + + + + Swoosh Arrow Shape + + + + + Cube Shape + + + + + Can Shape + + + + + Lightning Bolt Shape + + + + + Heart Shape + + + + + Sun Shape + + + + + Moon Shape + + + + + Smiley Face Shape + + + + + Irregular Seal 1 Shape + + + + + Irregular Seal 2 Shape + + + + + Folded Corner Shape + + + + + Bevel Shape + + + + + Frame Shape + + + + + Half Frame Shape + + + + + Corner Shape + + + + + Diagonal Stripe Shape + + + + + Chord Shape + + + + + Curved Arc Shape + + + + + Left Bracket Shape + + + + + Right Bracket Shape + + + + + Left Brace Shape + + + + + Right Brace Shape + + + + + Bracket Pair Shape + + + + + Brace Pair Shape + + + + + Straight Connector 1 Shape + + + + + Bent Connector 2 Shape + + + + + Bent Connector 3 Shape + + + + + Bent Connector 4 Shape + + + + + Bent Connector 5 Shape + + + + + Curved Connector 2 Shape + + + + + Curved Connector 3 Shape + + + + + Curved Connector 4 Shape + + + + + Curved Connector 5 Shape + + + + + Callout 1 Shape + + + + + Callout 2 Shape + + + + + Callout 3 Shape + + + + + Callout 1 Shape + + + + + Callout 2 Shape + + + + + Callout 3 Shape + + + + + Callout 1 with Border Shape + + + + + Callout 2 with Border Shape + + + + + Callout 3 with Border Shape + + + + + Callout 1 with Border and Accent Shape + + + + + Callout 2 with Border and Accent Shape + + + + + Callout 3 with Border and Accent Shape + + + + + Callout Wedge Rectangle Shape + + + + + Callout Wedge Round Rectangle Shape + + + + + Callout Wedge Ellipse Shape + + + + + Callout Cloud Shape + + + + + Cloud Shape + + + + + Ribbon Shape + + + + + Ribbon 2 Shape + + + + + Ellipse Ribbon Shape + + + + + Ellipse Ribbon 2 Shape + + + + + Left Right Ribbon Shape + + + + + Vertical Scroll Shape + + + + + Horizontal Scroll Shape + + + + + Wave Shape + + + + + Double Wave Shape + + + + + Plus Shape + + + + + Process Flow Shape + + + + + Decision Flow Shape + + + + + Input Output Flow Shape + + + + + Predefined Process Flow Shape + + + + + Internal Storage Flow Shape + + + + + Document Flow Shape + + + + + Multi-Document Flow Shape + + + + + Terminator Flow Shape + + + + + Preparation Flow Shape + + + + + Manual Input Flow Shape + + + + + Manual Operation Flow Shape + + + + + Connector Flow Shape + + + + + Punched Card Flow Shape + + + + + Punched Tape Flow Shape + + + + + Summing Junction Flow Shape + + + + + Or Flow Shape + + + + + Collate Flow Shape + + + + + Sort Flow Shape + + + + + Extract Flow Shape + + + + + Merge Flow Shape + + + + + Offline Storage Flow Shape + + + + + Online Storage Flow Shape + + + + + Magnetic Tape Flow Shape + + + + + Magnetic Disk Flow Shape + + + + + Magnetic Drum Flow Shape + + + + + Display Flow Shape + + + + + Delay Flow Shape + + + + + Alternate Process Flow Shape + + + + + Off-Page Connector Flow Shape + + + + + Blank Button Shape + + + + + Home Button Shape + + + + + Help Button Shape + + + + + Information Button Shape + + + + + Forward or Next Button Shape + + + + + Back or Previous Button Shape + + + + + End Button Shape + + + + + Beginning Button Shape + + + + + Return Button Shape + + + + + Document Button Shape + + + + + Sound Button Shape + + + + + Movie Button Shape + + + + + Gear 6 Shape + + + + + Gear 9 Shape + + + + + Funnel Shape + + + + + Plus Math Shape + + + + + Minus Math Shape + + + + + Multiply Math Shape + + + + + Divide Math Shape + + + + + Equal Math Shape + + + + + Not Equal Math Shape + + + + + Corner Tabs Shape + + + + + Square Tabs Shape + + + + + Plaque Tabs Shape + + + + + Chart X Shape + + + + + Chart Star Shape + + + + + Chart Plus Shape + + + + + + + Preset Text Shape Types + + + + + No Text Shape + + + + + Plain Text Shape + + + + + Stop Sign Text Shape + + + + + Triangle Text Shape + + + + + Inverted Triangle Text Shape + + + + + Chevron Text Shape + + + + + Inverted Chevron Text Shape + + + + + Inside Ring Text Shape + + + + + Outside Ring Text Shape + + + + + Upward Arch Text Shape + + + + + Downward Arch Text Shape + + + + + Circle Text Shape + + + + + Button Text Shape + + + + + Upward Pour Arch Text Shape + + + + + Downward Pour Arch Text Shape + + + + + Circle Pour Text Shape + + + + + Button Pour Text Shape + + + + + Upward Curve Text Shape + + + + + Downward Curve Text Shape + + + + + Upward Can Text Shape + + + + + Downward Can Text Shape + + + + + Wave 1 Text Shape + + + + + Wave 2 Text Shape + + + + + Double Wave 1 Text Shape + + + + + Wave 4 Text Shape + + + + + Inflate Text Shape + + + + + Deflate Text Shape + + + + + Bottom Inflate Text Shape + + + + + Bottom Deflate Text Shape + + + + + Top Inflate Text Shape + + + + + Top Deflate Text Shape + + + + + Deflate-Inflate Text Shape + + + + + Deflate-Inflate-Deflate Text Shape + + + + + Right Fade Text Shape + + + + + Left Fade Text Shape + + + + + Upward Fade Text Shape + + + + + Downward Fade Text Shape + + + + + Upward Slant Text Shape + + + + + Downward Slant Text Shape + + + + + Upward Cascade Text Shape + + + + + Downward Cascade Text Shape + + + + + + + Geometry Guide Name Properties + + + + + + Geometry Guide Formula Properties + + + + + + + Shape Guide Name + + + + + Shape Guide Formula + + + + + + + + Shape Guide + + + + + + + Adjustable Coordinate Methods + + + + + + Adjustable Angle Methods + + + + + + + X-Coordinate + + + + + Y-Coordinate + + + + + + + Left + + + + + Top + + + + + Right + + + + + Bottom Position + + + + + + + + Position + + + + + + Horizontal Adjustment Guide + + + + + Minimum Horizontal Adjustment + + + + + Maximum Horizontal Adjustment + + + + + Vertical Adjustment Guide + + + + + Minimum Vertical Adjustment + + + + + Maximum Vertical Adjustment + + + + + + + + Shape Position Coordinate + + + + + + Radial Adjustment Guide + + + + + Minimum Radial Adjustment + + + + + Maximum Radial Adjustment + + + + + Angle Adjustment Guide + + + + + Minimum Angle Adjustment + + + + + Maximum Angle Adjustment + + + + + + + + Position + + + + + + Connection Site Angle + + + + + + + + XY Adjust Handle + + + + + Polar Adjust Handle + + + + + + + + + Shape Connection Site + + + + + + + + Identifier + + + + + Index + + + + + + + + Move end point + + + + + + + + + Line end point + + + + + + + + Shape Arc Width Radius + + + + + Shape Arc Height Radius + + + + + Shape Arc Start Angle + + + + + Shape Arc Swing Angle + + + + + + + + Shape Path Point + + + + + + + + + Control points and end point + + + + + + + + Path Fill Mode + + + + + No Path Fill + + + + + Normal Path Fill + + + + + Lighten Path Fill + + + + + Lighten Path Fill Less + + + + + Darken Path Fill + + + + + Darken Path Fill Less + + + + + + + + + Close Shape Path + + + + + Move Path To + + + + + Draw Line To + + + + + Draw Arc To + + + + + Draw Quadratic Bezier Curve To + + + + + Draw Cubic Bezier Curve To + + + + + + Path Width + + + + + Path Height + + + + + Path Fill + + + + + Path Stroke + + + + + 3D Extrusion Allowed + + + + + + + + Shape Path + + + + + + + + + List of Shape Adjust Values + + + + + + Preset Shape + + + + + + + + Adjust Value List + + + + + + Preset Warp Shape + + + + + + + + Adjust Value List + + + + + List of Shape Guides + + + + + List of Shape Adjust Handles + + + + + List of Shape Connection Sites + + + + + Shape Text Rectangle + + + + + List of Shape Paths + + + + + + + + + Custom geometry + + + + + Preset geometry + + + + + + + + + Custom Geometry + + + + + Preset Text Warp + + + + + + + Line End Type + + + + + None + + + + + Triangle Arrow Head + + + + + Stealth Arrow + + + + + Diamond + + + + + Oval + + + + + Arrow Head + + + + + + + Line End Width + + + + + Small + + + + + Medium + + + + + Large + + + + + + + Line End Length + + + + + Small + + + + + Medium + + + + + Large + + + + + + + + Line Head/End Type + + + + + Width of Head/End + + + + + Length of Head/End + + + + + + + + No Fill + + + + + Solid Fill + + + + + Gradient Fill + + + + + + + + + + + Miter Join Limit + + + + + + + + Round Line Join + + + + + Line Join Bevel + + + + + Miter Line Join + + + + + + + Preset Line Dash Value + + + + + Solid + + + + + Dot + + + + + Dash + + + + + Large Dash + + + + + Dash Dot + + + + + Large Dash Dot + + + + + Large Dash Dot Dot + + + + + System Dash + + + + + System Dot + + + + + System Dash Dot + + + + + System Dash Dot Dot + + + + + + + + Value + + + + + + + Dash Length + + + + + Space Length + + + + + + + + Dash Stop + + + + + + + + + Preset Dash + + + + + Custom Dash + + + + + + + End Line Cap + + + + + Round Line Cap + + + + + Square Line Cap + + + + + Flat Line Cap + + + + + + + Line Width + + + + + + + + + Alignment Type + + + + + Center Alignment + + + + + Inset Alignment + + + + + + + Compound Line Type + + + + + Single Line + + + + + Double Lines + + + + + Thick Thin Double Lines + + + + + Thin Thick Double Lines + + + + + Thin Thick Thin Triple Lines + + + + + + + + + + + + Line Head/End Style + + + + + Tail line end style + + + + + + + Line Width + + + + + Line Ending Cap Type + + + + + Compound Line Type + + + + + Stroke Alignment + + + + + + Shape ID + + + + + + + + 2D Transform for Individual Objects + + + + + + + + + + + + + Black and White Mode + + + + + + + + 2D Transform for Grouped Objects + + + + + + + + + + Black and White Mode + + + + + + + + + + Style Matrix Index + + + + + + + + + + Identifier + + + + + + + + + + + Font Reference + + + + + + + + + Visual Properties + + + + + + + + + + + + + Shape Default + + + + + Line Default + + + + + Text Default + + + + + + + + + + + + + Background 1 + + + + + Text 1 + + + + + Background 2 + + + + + Text 2 + + + + + Accent 1 + + + + + Accent 2 + + + + + Accent 3 + + + + + Accent 4 + + + + + Accent 5 + + + + + Accent 6 + + + + + Hyperlink + + + + + Followed Hyperlink + + + + + + + + + Master Color Mapping + + + + + Override Color Mapping + + + + + + + + + + + + + + + + Extra Color Scheme + + + + + + + + + Theme Elements + + + + + Object Defaults + + + + + Extra Color Scheme List + + + + + Custom Color List + + + + + + + Name + + + + + + + + Color Scheme + + + + + + + + + + + + Color Map + + + + + + + Theme + + + + + Theme Override + + + + + Theme Manager + + + + + + + Left Border Line Properties + + + + + Right Border Line Properties + + + + + Top Border Line Properties + + + + + Bottom Border Line Properties + + + + + Top-Left to Bottom-Right Border Line Properties + + + + + Bottom-Left to Top-Right Border Line Properties + + + + + Cell 3-D + + + + + + Header Cells Associated With Table Cell + + + + + + + Left Margin + + + + + Right Margin + + + + + Top Margin + + + + + Bottom Margin + + + + + Text Direction + + + + + Anchor + + + + + Anchor Center + + + + + Horizontal Overflow + + + + + + + + Header Cell Reference + + + + + + + + + + + Width + + + + + + + + Table Grid Column + + + + + + + + + Text Body + + + + + Table Cell Properties + + + + + + + Row Span + + + + + Grid Span + + + + + Horizontal Merge + + + + + Vertical Merge + + + + + Table Cell Identifier + + + + + + + + Table Cell + + + + + + + Height + + + + + + + + + + + Table Style + + + + + Table Style ID + + + + + + Extension List + + + + + + Right-to-Left + + + + + First Row + + + + + First Column + + + + + Last Row + + + + + Last Column + + + + + Banded Rows + + + + + Banded Columns + + + + + + + + Table Properties + + + + + Table Grid + + + + + Table Row + + + + + + + Table + + + + + + + Bevel + + + + + Light Rig + + + + + + + Preset Material + + + + + + + + Fill + + + + + Fill Reference + + + + + + + + + + Line Reference + + + + + + + + + Effect + + + + + Effect Reference + + + + + + + + + Font + + + + + + + + On/Off Style Type + + + + + On + + + + + Off + + + + + Default + + + + + + + + + + + + + Bold + + + + + Italic + + + + + + + + Left Border + + + + + Right Border + + + + + Top Border + + + + + Bottom Border + + + + + Inside Horizontal Border + + + + + Inside Vertical Border + + + + + Top Left to Bottom Right Border + + + + + Top Right to Bottom Left Border + + + + + + + + + + + + + + + + Table Cell Borders + + + + + + + + + + + Table Cell Text Style + + + + + Table Cell Style + + + + + + + + + Table Background + + + + + Whole Table + + + + + Band 1 Horizontal + + + + + Band 2 Horizontal + + + + + Band 1 Vertical + + + + + Band 2 Vertical + + + + + Last Column + + + + + First Column + + + + + Last Row + + + + + Southeast Cell + + + + + Southwest Cell + + + + + First Row + + + + + Northeast Cell + + + + + Northwest Cell + + + + + + + Style ID + + + + + Name + + + + + + + + Table Style + + + + + + Default + + + + + + Table Style List + + + + + + + Text Paragraph Properties + + + + + + End Paragraph Run Properties + + + + + + + Text Anchoring Types + + + + + Text Anchoring Type Enum ( Top ) + + + + + Text Anchor Enum ( Center ) + + + + + Text Anchor Enum ( Bottom ) + + + + + Text Anchor Enum ( Justified ) + + + + + Text Anchor Enum ( Distributed ) + + + + + + + Text Vertical Overflow + + + + + Text Overflow Enum ( Overflow ) + + + + + Text Overflow Enum ( Ellipsis ) + + + + + Text Overflow Enum ( Clip ) + + + + + + + Text Horizontal Overflow Types + + + + + Text Horizontal Overflow Enum ( Overflow ) + + + + + Text Horizontal Overflow Enum ( Clip ) + + + + + + + Vertical Text Types + + + + + Vertical Text Type Enum ( Horizontal ) + + + + + Vertical Text Type Enum ( Vertical ) + + + + + Vertical Text Type Enum ( Vertical 270 ) + + + + + Vertical Text Type Enum ( WordArt Vertical ) + + + + + Vertical Text Type Enum ( East Asian Vertical ) + + + + + Vertical Text Type Enum ( Mongolian Vertical ) + + + + + Vertical WordArt Right to Left + + + + + + + Text Wrapping Types + + + + + Text Wrapping Type Enum ( None ) + + + + + Text Wrapping Type Enum ( Square ) + + + + + + + Text Column Count + + + + + + + + + + + Default Paragraph Style + + + + + List Level 1 Text Style + + + + + List Level 2 Text Style + + + + + List Level 3 Text Style + + + + + List Level 4 Text Style + + + + + List Level 5 Text Style + + + + + List Level 6 Text Style + + + + + List Level 7 Text Style + + + + + List Level 8 Text Style + + + + + List Level 9 Text Style + + + + + + + + Text Font Scale Percentage + + + + + + Text Font Scale Percentage + + + + + + + + + + Font Scale + + + + + Line Space Reduction + + + + + + + + + + No AutoFit + + + + + Normal AutoFit + + + + + Shape AutoFit + + + + + + + + + Preset Text Shape + + + + + + 3D Scene Properties + + + + + + + + Rotation + + + + + Paragraph Spacing + + + + + Text Vertical Overflow + + + + + Text Horizontal Overflow + + + + + Vertical Text + + + + + Text Wrapping Type + + + + + Left Inset + + + + + Top Inset + + + + + Right Inset + + + + + Bottom Inset + + + + + Number of Columns + + + + + Space Between Columns + + + + + Columns Right-To-Left + + + + + From WordArt + + + + + Anchor + + + + + Anchor Center + + + + + Force Anti-Alias + + + + + Text Upright + + + + + Compatible Line Spacing + + + + + + + + Body Properties + + + + + Text List Styles + + + + + Text Paragraphs + + + + + + + Start Bullet At Number + + + + + + + + + Text Auto-number Schemes + + + + + Autonumber Enum ( alphaLcParenBoth ) + + + + + Autonumbering Enum ( alphaUcParenBoth ) + + + + + Autonumbering Enum ( alphaLcParenR ) + + + + + Autonumbering Enum ( alphaUcParenR ) + + + + + Autonumbering Enum ( alphaLcPeriod ) + + + + + Autonumbering Enum ( alphaUcPeriod ) + + + + + Autonumbering Enum ( arabicParenBoth ) + + + + + Autonumbering Enum ( arabicParenR ) + + + + + Autonumbering Enum ( arabicPeriod ) + + + + + Autonumbering Enum ( arabicPlain ) + + + + + Autonumbering Enum ( romanLcParenBoth ) + + + + + Autonumbering Enum ( romanUcParenBoth ) + + + + + Autonumbering Enum ( romanLcParenR ) + + + + + Autonumbering Enum ( romanUcParenR ) + + + + + Autonumbering Enum ( romanLcPeriod ) + + + + + Autonumbering Enum ( romanUcPeriod ) + + + + + Autonumbering Enum ( circleNumDbPlain ) + + + + + Autonumbering Enum ( circleNumWdBlackPlain ) + + + + + Autonumbering Enum ( circleNumWdWhitePlain ) + + + + + Autonumbering Enum ( arabicDbPeriod ) + + + + + Autonumbering Enum ( arabicDbPlain ) + + + + + Autonumbering Enum ( ea1ChsPeriod ) + + + + + Autonumbering Enum ( ea1ChsPlain ) + + + + + Autonumbering Enum ( ea1ChtPeriod ) + + + + + Autonumbering Enum ( ea1ChtPlain ) + + + + + Autonumbering Enum ( ea1JpnChsDbPeriod ) + + + + + Autonumbering Enum ( ea1JpnKorPlain ) + + + + + Autonumbering Enum ( ea1JpnKorPeriod ) + + + + + Autonumbering Enum ( arabic1Minus ) + + + + + Autonumbering Enum ( arabic2Minus ) + + + + + Autonumbering Enum ( hebrew2Minus ) + + + + + Autonumbering Enum ( thaiAlphaPeriod ) + + + + + Autonumbering Enum ( thaiAlphaParenR ) + + + + + Autonumbering Enum ( thaiAlphaParenBoth ) + + + + + Autonumbering Enum ( thaiNumPeriod ) + + + + + Autonumbering Enum ( thaiNumParenR ) + + + + + Autonumbering Enum ( thaiNumParenBoth ) + + + + + Autonumbering Enum ( hindiAlphaPeriod ) + + + + + Autonumbering Enum ( hindiNumPeriod ) + + + + + Autonumbering Enum ( hindiNumParenR ) + + + + + Autonumbering Enum ( hindiAlpha1Period ) + + + + + + + + + + Follow Text + + + + + Color Specified + + + + + + + Bullet Size Percentage + + + + + + + + + + + Value + + + + + + + Value + + + + + + + + Bullet Size Follows Text + + + + + Bullet Size Percentage + + + + + Bullet Size Points + + + + + + + + + + Follow text + + + + + Specified + + + + + + + + Bullet Autonumbering Type + + + + + Start Numbering At + + + + + + + Bullet Character + + + + + + + + Blip + + + + + + + + + + No Bullet + + + + + Auto-Numbered Bullet + + + + + Character Bullet + + + + + Picture Bullet + + + + + + + Text Point + + + + + + Text Point + + + + + + + + + Text Non-Negative Point + + + + + + + + + Text Font Size + + + + + + + + + Text Typeface + + + + + + + Text Typeface + + + + + Panose Setting + + + + + Similar Font Family + + + + + Similar Character Set + + + + + + Text Underline Types + + + + + Text Underline Enum ( None ) + + + + + Text Underline Enum ( Words ) + + + + + Text Underline Enum ( Single ) + + + + + Text Underline Enum ( Double ) + + + + + Text Underline Enum ( Heavy ) + + + + + Text Underline Enum ( Dotted ) + + + + + Text Underline Enum ( Heavy Dotted ) + + + + + Text Underline Enum ( Dashed ) + + + + + Text Underline Enum ( Heavy Dashed ) + + + + + Text Underline Enum ( Long Dashed ) + + + + + Text Underline Enum ( Heavy Long Dashed ) + + + + + Text Underline Enum ( Dot Dash ) + + + + + Text Underline Enum ( Heavy Dot Dash ) + + + + + Text Underline Enum ( Dot Dot Dash ) + + + + + Text Underline Enum ( Heavy Dot Dot Dash ) + + + + + Text Underline Enum ( Wavy ) + + + + + Text Underline Enum ( Heavy Wavy ) + + + + + Text Underline Enum ( Double Wavy ) + + + + + + + + + + + + + + Underline Follows Text + + + + + Underline Stroke + + + + + + + + + Underline Fill Properties Follow Text + + + + + Underline Fill + + + + + + + Text Strike Type + + + + + Text Strike Enum ( No Strike ) + + + + + Text Strike Enum ( Single Strike ) + + + + + Text Strike Enum ( Double Strike ) + + + + + + + Text Cap Types + + + + + Text Caps Enum ( None ) + + + + + Text Caps Enum ( Small ) + + + + + Text Caps Enum ( All ) + + + + + + + + + Line + + + + + + + Highlight Color + + + + + + + Latin Font + + + + + East Asian Font + + + + + Complex Script Font + + + + + Symbol Font + + + + + Click Hyperlink + + + + + Mouse-Over Hyperlink + + + + + Right to Left Run + + + + + + + Kumimoji + + + + + Language ID + + + + + Alternative Language + + + + + Font Size + + + + + Bold + + + + + Italics + + + + + Underline + + + + + Strikethrough + + + + + Kerning + + + + + Capitalization + + + + + Spacing + + + + + Normalize Heights + + + + + Baseline + + + + + No Proofing + + + + + Dirty + + + + + Spelling Error + + + + + SmartTag Clean + + + + + SmartTag ID + + + + + Bookmark Link Target + + + + + + + On/Off Value + + + + + + Text Spacing Point + + + + + + + + + Text Spacing Percent + + + + + + Text Spacing Percent + + + + + + + + + + Value + + + + + + + Value + + + + + + Text Margin + + + + + + + + + Text Indentation + + + + + + + + + Text Tab Alignment Types + + + + + Text Tab Alignment Enum ( Left) + + + + + Text Tab Alignment Enum ( Center ) + + + + + Text Tab Alignment Enum ( Right ) + + + + + Text Tab Alignment Enum ( Decimal ) + + + + + + + + Tab Position + + + + + Tab Alignment + + + + + + + + Tab Stop + + + + + + + + + Text Run Properties + + + + + + + + + Spacing Percent + + + + + Spacing Points + + + + + + + Text Alignment Types + + + + + Text Alignment Enum ( Left ) + + + + + Text Alignment Enum ( Center ) + + + + + Text Alignment Enum ( Right ) + + + + + Text Alignment Enum ( Justified ) + + + + + Text Alignment Enum ( Justified Low ) + + + + + Text Alignment Enum ( Distributed ) + + + + + Text Alignment Enum ( Thai Distributed ) + + + + + + + Font Alignment Types + + + + + Font Alignment Enum ( Automatic ) + + + + + Font Alignment Enum ( Top ) + + + + + Font Alignment Enum ( Center ) + + + + + Font Alignment Enum ( Baseline ) + + + + + Font Alignment Enum ( Bottom ) + + + + + + + Text Indent Level Type + + + + + + + + + + + Line Spacing + + + + + Space Before + + + + + Space After + + + + + + + + + Tab List + + + + + Default Text Run Properties + + + + + + + Left Margin + + + + + Right Margin + + + + + Level + + + + + Indent + + + + + Alignment + + + + + Default Tab Size + + + + + Right To Left + + + + + East Asian Line Break + + + + + Font Alignment + + + + + Latin Line Break + + + + + Hanging Punctuation + + + + + + + + Text Character Properties + + + + + Text Paragraph Properties + + + + + + + Field ID + + + + + Field Type + + + + + + + + Text Run + + + + + Text Line Break + + + + + Text Field + + + + + + + + + Text Character Properties + + + + + Text String + + + + diff --git a/tests/resources/schema/ooxml/dml-picture.xsd b/tests/resources/schema/ooxml/dml-picture.xsd index 560ce68e6c..6f65af668e 100644 --- a/tests/resources/schema/ooxml/dml-picture.xsd +++ b/tests/resources/schema/ooxml/dml-picture.xsd @@ -1,22 +1,45 @@ - + - - - - - - - - - - - - - - - + xmlns="http://schemas.openxmlformats.org/drawingml/2006/picture" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/picture"> + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + Non-Visual Picture Properties + + + + + Picture Fill + + + + + Shape Properties + + + + + + + Picture + + diff --git a/tests/resources/schema/ooxml/dml-spreadsheetDrawing.xsd b/tests/resources/schema/ooxml/dml-spreadsheetDrawing.xsd index d1ae13ba44..e53e4073b5 100644 --- a/tests/resources/schema/ooxml/dml-spreadsheetDrawing.xsd +++ b/tests/resources/schema/ooxml/dml-spreadsheetDrawing.xsd @@ -1,184 +1,427 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + Locks With Sheet Flag + + + + + Prints With Sheet Flag + + + + + + + + Non-Visual Drawing Properties + + + + + Connection Non-Visual Shape Properties + + + + + + + + + Non-Visual Properties for a Shape + + + + + Shape Properties + + + + + + Shape Text Body + + + + + + Reference to Custom Function + + + + + Text Link + + + + + Lock Text Flag + + + + + Publish to Server Flag + + + + + + + + Connection Non-Visual Properties + + + + + Non-Visual Connector Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Connection Shape + + + + + Connector Shape Properties + + + + + + + Reference to Custom Function + + + + + Publish to Server Flag + + + + + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + Non-Visual Properties for a Picture + + + + + Picture Fill + + + + + + Shape Style + + + + + + Reference To Custom Function + + + + + Publish to Server Flag + + + + + + + + Connection Non-Visual Properties + + + + + Non-Visual Graphic Frame Drawing Properties + + + + + + + + + Non-Visual Properties for a Graphic Frame + + + + + 2D Transform for Graphic Frames + + + + + + + Reference To Custom Function + + + + + Publish to Server Flag + + + + + + + + Connection Non-Visual Properties + + + + + Non-Visual Group Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Group Shape + + + + + Group Shape Properties + + + + + + Shape + + + + + Group Shape + + + + + + Connection Shape + + + + + Picture + + + + + + + + + + + Shape + + + + + Group Shape + + + + + Graphic Frame + + + + + Connection Shape + + + + + + Content Part + + + + + + + + + Relationship to Part + + + + + + Column ID + + + + + + + + Row ID + + + + + + + + + + Column) + + + + + Column Offset + + + + + Row + + + + + Row Offset + + + + + + + Resizing Behaviors + + + + + Move and Resize With Anchor Cells + + + + + Move With Cells but Do Not Resize + + + + + Do Not Move or Resize With Underlying Rows/Columns + + + + + + + + + Starting Anchor Point + + + + + Ending Anchor Point + + + + + + Client Data + + + + + + Positioning and Resizing Behaviors + + + + + + + + + + + + + + + + Position + + + + + Shape Extent + + + + + + + + + + + Two Cell Anchor Shape Size + + + + + One Cell Anchor Shape Size + + + + + Absolute Anchor Shape Size + + + + + + + + + + + + Worksheet Drawing + + diff --git a/tests/resources/schema/ooxml/dml-wordprocessingDrawing.xsd b/tests/resources/schema/ooxml/dml-wordprocessingDrawing.xsd index bf11d9a4cc..0755f5f005 100644 --- a/tests/resources/schema/ooxml/dml-wordprocessingDrawing.xsd +++ b/tests/resources/schema/ooxml/dml-wordprocessingDrawing.xsd @@ -1,283 +1,563 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + Additional Extent on Left Edge + + + + + Additional Extent on Top Edge + + + + + Additional Extent on Right Edge + + + + + Additional Extent on Bottom Edge + + + + + + Distance from Text + + + + + + + + Drawing Object Size + + + + + Inline Wrapping Extent + + + + + Drawing Object Non-Visual Properties + + + + + Common DrawingML Non-Visual Properties + + + + + + + Distance From Text on Top Edge + + + + + Distance From Text on Bottom Edge + + + + + Distance From Text on Left Edge + + + + + Distance From Text on Right Edge + + + + + + Text Wrapping Location + + + + + Both Sides + + + + + Left Side Only + + + + + Right Side Only + + + + + Largest Side Only + + + + + + + + + Wrapping Polygon Start + + + + + Wrapping Polygon Line End Position + + + + + + Wrapping Points Modified + + + + + + + + + Object Extents Including Effects + + + + + + Text Wrapping Location + + + + + Distance From Text (Top) + + + + + Distance From Text on Bottom Edge + + + + + Distance From Text on Left Edge + + + + + Distance From Text on Right Edge + + + + + + + + Tight Wrapping Extents Polygon + + + + + + Text Wrapping Location + + + + + Distance From Test on Left Edge + + + + + Distance From Text on Right Edge + + + + + + + + Wrapping Polygon + + + + + + Text Wrapping Location + + + + + Distance From Text on Left Edge + + + + + Distance From Text on Right Edge + + + + + + + + Wrapping Boundaries + + + + + + Distance From Text on Top Edge + + + + + Distance From Text on Bottom Edge + + + + + + + + + No Text Wrapping + + + + + Square Wrapping + + + + + Tight Wrapping + + + + + Through Wrapping + + + + + Top and Bottom Wrapping + + + + + + + + Absolute Position Offset Value + + + + + + Relative Horizontal Alignment Positions + + + + + Left Alignment + + + + + Right Alignment + + + + + Center Alignment + + + + + Inside + + + + + Outside + + + + + + + Horizontal Relative Positioning + + + + + Page Margin + + + + + Page Edge + + + + + Column + + + + + Character + + + + + Left Margin + + + + + Right Margin + + + + + Inside Margin + + + + + Outside Margin + + + + + + + + + + Relative Horizontal Alignment + + + + + Absolute Position Offset + + + + + + + Horizontal Position Relative Base + + + + + + Vertical Alignment Definition + + + + + Top + + + + + Bottom + + + + + Center Alignment + + + + + Inside + + + + + Outside + + + + + + + Vertical Relative Positioning + + + + + Page Margin + + + + + Page Edge + + + + + Paragraph + + + + + Line + + + + + Top Margin + + + + + Bottom Margin + + + + + Inside Margin + + + + + Outside Margin + + + + + + + + + + Relative Vertical Alignment + + + + + + + + Vertical Position Relative Base + + + + + + + + Simple Positioning Coordinates + + + + + Horizontal Positioning + + + + + Vertical Positioning + + + + + Inline Drawing Object Extents + + + + + + + Drawing Object Non-Visual Properties + + + + + + + + Distance From Text on Top Edge + + + + + Distance From Text on Bottom Edge + + + + + Distance From Text on Left Edge + + + + + Distance From Text on Right Edge + + + + + Page Positioning + + + + + Relative Z-Ordering Position + + + + + Display Behind Document Text + + + + + Lock Anchor + + + + + Layout In Table Cell + + + + + Hidden + + + + + Allow Objects to Overlap + + + + + + Inline DrawingML Object + + + + + Anchor for Floating DrawingML Object + + diff --git a/tests/resources/schema/ooxml/pml-mso2010.xsd b/tests/resources/schema/ooxml/pml-mso2010.xsd new file mode 100644 index 0000000000..1a1cb5b84b --- /dev/null +++ b/tests/resources/schema/ooxml/pml-mso2010.xsd @@ -0,0 +1,10 @@ + + + + + + diff --git a/tests/resources/schema/ooxml/pml.xsd b/tests/resources/schema/ooxml/pml.xsd index 29f8e4c767..9e8e16f7ba 100644 --- a/tests/resources/schema/ooxml/pml.xsd +++ b/tests/resources/schema/ooxml/pml.xsd @@ -1,1617 +1,4885 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns="http://schemas.openxmlformats.org/presentationml/2006/main" + xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/presentationml/2006/main"> + + + + + + + Transition Slide Direction Type + + + + + Transition Slide Direction Enum ( Left ) + + + + + Transition Slide Direction Enum ( Up ) + + + + + Transition Slide Direction ( Right ) + + + + + Transition Slide Direction Enum ( Down ) + + + + + + + Transition Corner Direction Type + + + + + Transition Corner Direction Enum ( Left-Up ) + + + + + Transition Corner Direction Enum ( Right-Up ) + + + + + Transition Corner Direction Enum ( Left-Down ) + + + + + Transition Corner Direction Enum ( Right-Down ) + + + + + + + Transition In/Out Direction Type + + + + + Transition In/Out Direction Enum ( Out ) + + + + + Transition In/Out Direction Enum ( In ) + + + + + + + + Direction + + + + + + + Direction + + + + + + Transition Eight Direction + + + + + + + Direction + + + + + + + Transition Direction + + + + + + + Direction + + + + + + + Transition Through Black + + + + + + + Orientation + + + + + Direction + + + + + + + Spokes + + + + + + + + Sound + + + + + + Loop Sound + + + + + + + + Start Sound Action + + + + + Stop Sound Action + + + + + + + Transition Speed + + + + + low + + + + + Medium + + + + + Fast + + + + + + + + + + Blinds Slide Transition + + + + + Checker Slide Transition + + + + + Circle Slide Transition + + + + + Dissolve Slide Transition + + + + + Comb Slide Transition + + + + + Cover Slide Transition + + + + + Cut Slide Transition + + + + + Diamond Slide Transition + + + + + Fade Slide Transition + + + + + Newsflash Slide Transition + + + + + Plus Slide Transition + + + + + Pull Slide Transition + + + + + Push Slide Transition + + + + + Random Slide Transition + + + + + Random Bar Slide Transition + + + + + Split Slide Transition + + + + + Strips Slide Transition + + + + + Wedge Slide Transition + + + + + Wheel Slide Transition + + + + + Wipe Slide Transition + + + + + Zoom Slide Transition + + + + + + Sound Action + + + + + + + Transition Speed + + + + + Advance on Click + + + + + Advance after time + + + + + + Indefinite Time Declaration + + + + + Indefinite Type Enum + + + + + + + Time + + + + + + Time Node ID + + + + + + + Time + + + + + + + Value + + + + + + Iterate Type + + + + + Element + + + + + Word + + + + + Letter + + + + + + + + + Time Absolute + + + + + Time Percentage + + + + + + Iterate Type + + + + + Backwards + + + + + + + Shape ID + + + + + + + + Character Range + + + + + Paragraph Text Range + + + + + + + Chart Subelement Type + + + + + Grid Legend + + + + + Data Series + + + + + Category Axis + + + + + Single Point in Data Series + + + + + Single Point in Category + + + + + + + + Type + + + + + Level + + + + + + + + Background + + + + + Subshape + + + + + Embedded Chart Element + + + + + Text Element + + + + + Graphic Element + + + + + + Shape ID + + + + + + + + Slide Target + + + + + Sound Target + + + + + Shape Target + + + + + Ink Target + + + + + + + + Value + + + + + + Trigger RunTime Node + + + + + Trigger RunTime Node ( First ) + + + + + Trigger RunTime Node ( Last ) + + + + + Trigger RunTime Node Enum ( All ) + + + + + + + + Value + + + + + + Trigger Event + + + + + Trigger Event Enum ( On Begin ) + + + + + Trigger Event Enum ( On End ) + + + + + Trigger Event Enum ( Begin ) + + + + + Trigger Event Enum ( End ) + + + + + Trigger Event Enum ( On Click ) + + + + + Trigger Event Enum ( On Double Click ) + + + + + Trigger Event Enum ( On Mouse Over ) + + + + + Trigger Event Enum ( On Mouse Out ) + + + + + Trigger Event Enum ( On Next ) + + + + + Trigger Event Enum ( On Previous ) + + + + + Trigger Event Enum ( On Stop Audio ) + + + + + + + + + Target Element Trigger Choice + + + + + Time Node + + + + + Runtime Node Trigger Choice + + + + + + Trigger Event + + + + + Trigger Delay + + + + + + + + Condition + + + + + + + + + Parallel Time Node + + + + + Sequence Time Node + + + + + Exclusive + + + + + Animate + + + + + Animate Color Behavior + + + + + Animate Effect + + + + + Animate Motion + + + + + Animate Rotation + + + + + Animate Scale + + + + + Command + + + + + Set Time Node Behavior + + + + + Audio + + + + + Video + + + + + + + Time Node Preset Class Type + + + + + Preset Type Enum ( Entrance ) + + + + + Exit + + + + + Preset Type Enum ( Emphasis ) + + + + + Preset Type Enum ( Path ) + + + + + Preset Type Enum ( Verb ) + + + + + Preset Type Enum ( Media Call ) + + + + + + + Time Node Restart Type + + + + + Restart Enum ( Always ) + + + + + Restart Enum ( When Not Active ) + + + + + Restart Enum ( Never ) + + + + + + + Time Node Fill Type + + + + + Remove + + + + + Freeze + + + + + TimeNode Fill Type Enum ( Hold ) + + + + + Transition + + + + + + + Time Node Sync Type + + + + + TimeNode Sync Enum ( Can Slip ) + + + + + TimeNode Sync Enum ( Locked ) + + + + + + + Time Node Master Relation + + + + + TimeNode Master Relation Enum ( Same Click ) + + + + + TimeNode Master Relation Enum ( Last Click ) + + + + + TimeNode Master Relation Enum ( Next Click ) + + + + + + + Time Node Type + + + + + Node Type Enum ( Click Effect ) + + + + + Node Type Enum ( With Effect ) + + + + + Node Type Enum ( After Effect ) + + + + + Node Type Enum ( Main Sequence ) + + + + + Node Type Enum ( Interactive Sequence ) + + + + + Node Type Enum ( Click Paragraph ) + + + + + Node Type Enum ( With Group ) + + + + + Node Type Enum ( After Group ) + + + + + Node Type Enum ( Timing Root ) + + + + + + + + + Start Conditions List + + + + + End Conditions List + + + + + EndSync + + + + + Iterate + + + + + Children Time Node List + + + + + Sub-TimeNodes List + + + + + + ID + + + + + Preset ID + + + + + Preset Types + + + + + Preset SubType + + + + + Duration + + + + + Repeat Count + + + + + Repeat Duration + + + + + Speed + + + + + Acceleration + + + + + Deceleration + + + + + Auto Reverse + + + + + Restart + + + + + Fill + + + + + Synchronization Behavior + + + + + Time Filter + + + + + Event Filter + + + + + Display + + + + + Master Relation + + + + + Build level + + + + + Group ID + + + + + After Effect + + + + + Node Type + + + + + Node Placeholder + + + + + + + + Parallel TimeNode + + + + + + + Next Action Type + + + + + Next Action Type Enum ( None ) + + + + + Next Action Type Enum ( Seek ) + + + + + + + Previous Action Type + + + + + Previous Action Type Enum ( None ) + + + + + Previous Action Type Enum ( Skip Timed ) + + + + + + + + + Common TimeNode Properties + + + + + Previous Conditions List + + + + + Next Conditions List + + + + + + Concurrent + + + + + Previous Action + + + + + Next Action + + + + + + + + Common TimeNode Properties + + + + + + + + + Attribute Name + + + + + + + Behavior Additive Type + + + + + Additive Enum ( Base ) + + + + + Additive Enum ( Sum ) + + + + + Additive Enum ( Replace ) + + + + + Additive Enum ( Multiply ) + + + + + None + + + + + + + Behavior Accumulate Type + + + + + Accumulate Enum ( None ) + + + + + Accumulate Enum ( Always ) + + + + + + + Behavior Transform Type + + + + + Point + + + + + Image + + + + + + + Behavior Override Type + + + + + Override Enum ( Normal ) + + + + + Override Enum ( Child Style ) + + + + + + + + + + Target Element + + + + + Attribute Name List + + + + + + Additive + + + + + Accumulate + + + + + Transform Type + + + + + From + + + + + To + + + + + By + + + + + Runtime Context + + + + + Override + + + + + + + Value + + + + + + + Value + + + + + + + Value + + + + + + + Value + + + + + + + + Boolean Variant + + + + + Integer + + + + + Float Value + + + + + String Value + + + + + Color Value + + + + + + + Animation Time + + + + + + + + Value + + + + + + Time + + + + + Formula + + + + + + + + Time Animate Value + + + + + + + Time List Animate Behavior Calculate Mode + + + + + Calc Mode Enum ( Discrete ) + + + + + Calc Mode Enum ( Linear ) + + + + + Calc Mode Enum ( Formula ) + + + + + + + Time List Animate Behavior Value Types + + + + + Value Type Enum ( String ) + + + + + Value Type Enum ( Number ) + + + + + Value Type Enum ( Color ) + + + + + + + + + + Time Animated Value List + + + + + + By + + + + + From + + + + + To + + + + + Calculation Mode + + + + + Value Type + + + + + + + Red + + + + + Green + + + + + Blue + + + + + + + Hue + + + + + Saturation + + + + + Lightness + + + + + + + + RGB + + + + + HSL + + + + + + + Time List Animate Color Space + + + + + Color Space Enum ( RGB ) + + + + + Color Space Enum ( HSL ) + + + + + + + Time List Animate Color Direction + + + + + Direction Enum ( Clockwise ) + + + + + Counter-Clockwise + + + + + + + + + + By + + + + + From + + + + + To + + + + + + Color Space + + + + + Direction + + + + + + Time List Animate Effect Transition + + + + + Transition Enum ( In ) + + + + + Transition Enum ( Out ) + + + + + Transition Enum ( None ) + + + + + + + + + + Progress + + + + + + Transition + + + + + Filter + + + + + Property List + + + + + + Time List Animate Motion Behavior Origin + + + + + Origin Enum ( Parent ) + + + + + Origin Enum ( Layout ) + + + + + + + Time List Animate Motion Path Edit Mode + + + + + Path Edit Mode Enum ( Relative ) + + + + + Path Edit Mode Enum ( Fixed ) + + + + + + + + X coordinate + + + + + Y coordinate + + + + + + + + + + From + + + + + + Rotation Center + + + + + + Origin + + + + + Path + + + + + Path Edit Mode + + + + + Relative Angle + + + + + Points Types + + + + + + + + + + By + + + + + From + + + + + To + + + + + + + + + By + + + + + + To + + + + + + Zoom Content + + + + + + Command Type + + + + + Command Type Enum ( Event ) + + + + + Command Type Enum ( Call ) + + + + + Command Type Enum ( Verb ) + + + + + + + + + + + Command Type + + + + + Command + + + + + + + + Common Behavior + + + + + To + + + + + + + + + Common Time Node Properties + + + + + + + Volume + + + + + Mute + + + + + Number of Slides + + + + + Show When Stopped + + + + + + + + Common Media Node Properties + + + + + + Is Narration + + + + + + + + Common Media Node Properties + + + + + + Full Screen + + + + + + + Shape ID + + + + + Group ID + + + + + Expand UI + + + + + + + + Time Node List + + + + + + Level + + + + + + + + Template Effects + + + + + + + Paragraph Build Type + + + + + All At Once + + + + + Paragraph + + + + + Custom + + + + + Whole + + + + + + + + + Template effects + + + + + + + Build Types + + + + + Build Level + + + + + Animate Background + + + + + Auto Update Animation Background + + + + + Reverse + + + + + Auto Advance Time + + + + + + Diagram Build Types + + + + + Diagram Build Type Enum ( Whole ) + + + + + Diagram Build Type Enum ( Depth By Node ) + + + + + Diagram Build Type Enum ( Depth By Branch ) + + + + + Diagram Build Type Enum ( Breadth By Node ) + + + + + Diagram Build Type Enum ( Breadth By Level ) + + + + + Diagram Build Type Enum ( Clockwise ) + + + + + Diagram Build Type Enum ( Clockwise-In ) + + + + + Diagram Build Type Enum ( Clockwise-Out ) + + + + + Diagram Build Type Enum ( Counter-Clockwise ) + + + + + Diagram Build Type Enum ( Counter-Clockwise-In ) + + + + + Diagram Build Type Enum ( Counter-Clockwise-Out ) + + + + + Diagram Build Type Enum ( In-By-Ring ) + + + + + Diagram Build Type Enum ( Out-By-Ring ) + + + + + Diagram Build Type Enum ( Up ) + + + + + Diagram Build Type Enum ( Down ) + + + + + Diagram Build Type Enum ( All At Once ) + + + + + Diagram Build Type Enum ( Custom ) + + + + + + + + + Diagram Build Types + + + + + + Embedded Chart Build Type + + + + + Chart Build Type Enum ( All At Once ) + + + + + Chart Build Type Enum ( Series ) + + + + + Chart Build Type Enum ( Category ) + + + + + Chart Build Type Enum ( Series Element ) + + + + + Chart Build Type Enum ( Category Element ) + + + + + + + + + Build + + + + + Animate Background + + + + + + + + Build As One + + + + + Build Sub Elements + + + + + + + + + + Build Paragraph + + + + + Build Diagram + + + + + Build Embedded Chart + + + + + Build Graphics + + + + + + + + + + Build List + + + + + + + + + Name string + + + + + + Direction + + + + + Horizontal + + + + + Vertical + + + + + + + Index + + + + + + + Start + + + + + End + + + + + + + Relationship ID + + + + + + + + Presentation Slide + + + + + + + + Custom Show Identifier + + + + + + + + All Slides + + + + + Slide Range + + + + + Custom Show + + + + + + + + Relationship ID + + + + + + + Relationship ID + + + + + + + + Customer Data + + + + + Customer Data Tags + + + + + + + + + + + Uniform Resource Identifier + + + + + + + + Extension + + + + + + + + + + + + + + + + Modify + + + + + + + + + + Comment Author ID + + + + + Comment Author Name + + + + + Comment Author Initials + + + + + Index of Comment Author's last comment + + + + + Comment Author Color Index + + + + + + + + Comment Author + + + + + + + List of Comment Authors + + + + + + + Comment Position + + + + + Comment's Text Content + + + + + + + Comment Author ID + + + + + Comment Date/Time + + + + + Comment Index + + + + + + + + Comment + + + + + + + Comment List + + + + + + Embedded object Shape ID + + + + + Embedded Object Name + + + + + Show Embedded Object As Icon + + + + + Relationship ID + + + + + Image Width + + + + + Image Height + + + + + + Embedded object to Follow Color Scheme + + + + + None + + + + + Full + + + + + Text and Background + + + + + + + + + + + Color Scheme Properties for Embedded object + + + + + + + + + + Update Linked Embedded Objects Automatically + + + + + + + + Embedded Object or Control + + + + + Linked Object or Control + + + + + + + + Embedded Object ProgID + + + + + + Global Element for Embedded objects and Controls + + + + + + + + + + + + + + Embedded Control + + + + + + + Slide Identifier + + + + + + + + + + + + + Slide Identifier + + + + + Relationship Identifier + + + + + + + + Slide ID + + + + + + + Slide Master ID + + + + + + + + + + + + Slide Master Identifier + + + + + Relationship Identifier + + + + + + + + Slide Master ID + + + + + + + + + + + Relationship Identifier + + + + + + + + Notes Master ID + + + + + + + + + + + Relationship Identifier + + + + + + + + Handout Master ID + + + + + + + + Relationship Identifier + + + + + + + + Embedded Font Name + + + + + Regular Embedded Font + + + + + Bold Embedded Font + + + + + Italic Embedded Font + + + + + Bold Italic Embedded Font + + + + + + + + + Embedded Font + + + + + + + + Relationship Identifier + + + + + + + + List of Presentation Slides + + + + + + + Custom Show Name + + + + + Custom Show ID + + + + + + + + Custom Show + + + + + + + Photo Album Layout Definition + + + + + Fit Photos to Slide + + + + + 1 Photo per Slide + + + + + 2 Photos per Slide + + + + + 4 Photos per Slide + + + + + 1 Photo per Slide with Titles + + + + + 2 Photos per Slide with Titles + + + + + 4 Photos per Slide with Titles + + + + + + + Photo Album Shape for Photo Mask + + + + + Rectangle Photo Frame + + + + + Rounded Rectangle Photo Frame + + + + + Simple White Photo Frame + + + + + Simple Black Photo Frame + + + + + Compound Black Photo Frame + + + + + Center Shadow Photo Frame + + + + + Soft Edge Photo Frame + + + + + + + + + + + Black and White + + + + + Show/Hide Captions + + + + + Photo Album Layout + + + + + Frame Type + + + + + + Slide Size Coordinate + + + + + + + + + Slide Size Type + + + + + Screen 4x3 + + + + + Letter + + + + + A4 + + + + + 35mm Film + + + + + Overhead + + + + + Banner + + + + + Custom + + + + + Ledger + + + + + A3 + + + + + B4ISO + + + + + B5ISO + + + + + B4JIS + + + + + B5JIS + + + + + Hagaki Card + + + + + Screen 16x9 + + + + + Screen 16x10 + + + + + + + + Extent Length + + + + + Extent Width + + + + + Type of Size + + + + + + + Language + + + + + Invalid Kinsoku Start Characters + + + + + Invalid Kinsoku End Characters + + + + + + Bookmark ID Seed + + + + + + + + + + Cryptographic Algorithm Name + + + + + Password Hash Value + + + + + Salt Value for Password Verifier + + + + + Iterations to Run Hashing Algorithm + + + + + Cryptographic Provider Type + + + + + Cryptographic Algorithm Class + + + + + Cryptographic Algorithm Type + + + + + Cryptographic Hashing Algorithm + + + + + Iterations to Run Hashing Algorithm + + + + + Salt for Password Verifier + + + + + Password Hash + + + + + Cryptographic Provider + + + + + Cryptographic Algorithm Extensibility + + + + + Algorithm Extensibility Source + + + + + Cryptographic Provider Type Extensibility + + + + + Provider Type Extensibility Source + + + + + + + + List of Slide Master IDs + + + + + List of Notes Master IDs + + + + + List of Handout Master IDs + + + + + List of Slide IDs + + + + + Presentation Slide Size + + + + + Notes Slide Size + + + + + Smart Tags + + + + + Embedded Font List + + + + + List of Custom Shows + + + + + Photo Album Information + + + + + List of Customer Data Buckets + + + + + Kinsoku Settings + + + + + Presentation Default Text Style + + + + + Modification Verifier + + + + + Extension List + + + + + + Server Zoom + + + + + First Slide Number + + + + + Show Header and Footer Placeholders on Titles + + + + + Right-To-Left Views + + + + + Remove Personal Information on Save + + + + + Compatibility Mode + + + + + Strict First and Last Characters + + + + + Embed True Type Fonts + + + + + Save Subset Fonts + + + + + Automatically Compress Pictures + + + + + Bookmark ID Seed + + + + + Document Conformance Class + + + + + + Presentation + + + + + + + + + + Show Speaker Notes + + + + + Target Output Profile + + + + + HTML Output Title + + + + + Publish Path + + + + + + HTML Slide Navigation Control Colors + + + + + Non-specific Colors + + + + + Browser Colors + + + + + Presentation Text Colors + + + + + Presentation Accent Colors + + + + + White Text on Black Colors + + + + + Black Text on White Colors + + + + + + + HTML/Web Screen Size Target + + + + + HTML/Web Size Enumeration 544x376 + + + + + HTML/Web Size Enumeration 640x480 + + + + + HTML/Web Size Enumeration 720x515 + + + + + HTML/Web Size Enumeration 800x600 + + + + + HTML/Web Size Enumeration 1024x768 + + + + + HTML/Web Size Enumeration 1152x882 + + + + + HTML/Web Size Enumeration 1152x900 + + + + + HTML/Web Size Enumeration 1280x1024 + + + + + HTML/Web Size Enumeration 1600x1200 + + + + + HTML/Web Size Enumeration 1800x1400 + + + + + HTML/Web Size Enumeration 1920x1200 + + + + + + + Web Encoding + + + + + + + + + + Show animation in HTML output + + + + + Resize graphics in HTML output + + + + + Allow PNG in HTML output + + + + + Rely on VML for HTML output + + + + + Organize HTML output in folders + + + + + Use long file names in HTML output + + + + + Image size for HTML output + + + + + Encoding for HTML output + + + + + Slide Navigation Colors for HTML output + + + + + + Default print output + + + + + Slides + + + + + 1 Slide / Handout Page + + + + + 2 Slides / Handout Page + + + + + 3 Slides / Handout Page + + + + + 4 Slides / Handout Page + + + + + 6 Slides / Handout Page + + + + + 9 Slides / Handout Page + + + + + Notes + + + + + Outline + + + + + + + Print Color Mode + + + + + Black and White Mode + + + + + Grayscale Mode + + + + + Color Mode + + + + + + + + + + + Print Output + + + + + Print Color Mode + + + + + Print Hidden Slides + + + + + Scale to Fit Paper when printing + + + + + Frame slides when printing + + + + + + + Show Scroll Bar in Window + + + + + + + Restart Show + + + + + + + + Presenter Slide Show Mode + + + + + Browse Slide Show Mode + + + + + Kiosk Slide Show Mode + + + + + + + + + + + Pen Color for Slide Show + + + + + + + Loop Slide Show + + + + + Show Narration in Slide Show + + + + + Show Animation in Slide Show + + + + + Use Timings in Slide Show + + + + + + + + HTML Publishing Properties + + + + + Web Properties + + + + + Printing Properties + + + + + Presentation-wide Show Properties + + + + + Color MRU + + + + + + + + Presentation-wide Properties + + + + + + + + + Slide Number Placeholder + + + + + Header Placeholder + + + + + Footer Placeholder + + + + + Date/Time Placeholder + + + + + + Placeholder IDs + + + + + Title + + + + + Body + + + + + Centered Title + + + + + Subtitle + + + + + Date and Time + + + + + Slide Number + + + + + Footer + + + + + Header + + + + + Object + + + + + Chart + + + + + Table + + + + + Clip Art + + + + + Diagram + + + + + Media + + + + + Slide Image + + + + + Picture + + + + + + + Placeholder Size + + + + + Full + + + + + Half + + + + + Quarter + + + + + + + + + + + Placeholder Type + + + + + Placeholder Orientation + + + + + Placeholder Size + + + + + Placeholder Index + + + + + Placeholder has custom prompt + + + + + + + + Placeholder Shape + + + + + + Customer Data List + + + + + + + Is a Photo Album + + + + + Is User Drawn + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Drawing Properties for a Shape + + + + + Application Non-Visual Drawing Properties + + + + + + + + + Non-Visual Properties for a Shape + + + + + + Shape Style + + + + + Shape Text Body + + + + + + + Use Background Fill + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Connector Shape Drawing Properties + + + + + Application Non-Visual Drawing Properties + + + + + + + + + Non-Visual Properties for a Connection Shape + + + + + Shape Properties + + + + + Connector Shape Style + + + + + + + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + + Non-Visual Properties for a Picture + + + + + Picture Fill + + + + + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Graphic Frame Drawing Properties + + + + + Application Non-Visual Drawing Properties + + + + + + + + + Non-Visual Properties for a Graphic Frame + + + + + 2D Transform for Graphic Frame + + + + + + Extension List with Modification Flag + + + + + + + + + Non-visual Drawing Properties + + + + + Non-Visual Group Shape Drawing Properties + + + + + Non-Visual Properties + + + + + + + + + Non-Visual Properties for a Group Shape + + + + + Group Shape Properties + + + + + + Shape + + + + + Group Shape + + + + + Graphic Frame + + + + + Connection Shape + + + + + Picture + + + + + Content Part + + + + + + + + + + Relationship to Part + + + + + + + + Color Scheme Map + + + + + + + + + Color Scheme Map Override + + + + + + + + Show Master Shapes + + + + + Show Master Placeholder Animations + + + + + + + + + + + + Shade to Title + + + + + + + + Background Properties + + + + + Background Style Reference + + + + + + + + + + + Black and White Mode + + + + + + + + Slide Background + + + + + Shape Tree + + + + + Customer Data List + + + + + List of controls + + + + + + + Name + + + + + + + + Common slide data for slides + + + + + + Slide Transition + + + + + Slide Timing Information for a Slide + + + + + + + + Show Slide in Slide Show + + + + + + Presentation Slide + + + + + Slide Layout Type + + + + + Slide Layout Type Enumeration ( Title ) + + + + + Slide Layout Type Enumeration ( Text ) + + + + + Slide Layout Type Enumeration ( Two Column Text ) + + + + + Slide Layout Type Enumeration ( Table ) + + + + + Slide Layout Type Enumeration ( Text and Chart ) + + + + + Slide Layout Type Enumeration ( Chart and Text ) + + + + + Slide Layout Type Enumeration ( Diagram ) + + + + + Chart + + + + + Text and Clip Art + + + + + Clip Art and Text + + + + + Slide Layout Type Enumeration ( Title Only ) + + + + + Slide Layout Type Enumeration ( Blank ) + + + + + Slide Layout Type Enumeration ( Text and Object ) + + + + + Slide Layout Type Enumeration ( Object and Text ) + + + + + Object + + + + + Title and Object + + + + + Slide Layout Type Enumeration ( Text and Media ) + + + + + Slide Layout Type Enumeration ( Media and Text ) + + + + + Slide Layout Type Enumeration ( Object over Text) + + + + + Slide Layout Type Enumeration ( Text over Object) + + + + + Text and Two Objects + + + + + Two Objects and Text + + + + + Two Objects over Text + + + + + Four Objects + + + + + Vertical Text + + + + + Clip Art and Vertical Text + + + + + Vertical Title and Text + + + + + Vertical Title and Text Over Chart + + + + + Two Objects + + + + + Object and Two Object + + + + + Two Objects and Object + + + + + Slide Layout Type Enumeration ( Custom ) + + + + + Section Header + + + + + Two Text and Two Objects + + + + + Title, Object, and Caption + + + + + Picture and Caption + + + + + + + + + Common slide data for slide layouts + + + + + + Slide Transition for a Slide Layout + + + + + Slide Timing Information for a Slide Layout + + + + + Header/Footer information for a slide layout + + + + + + + + Matching Name + + + + + Slide Layout Type + + + + + Preserve Slide Layout + + + + + Is User Drawn + + + + + + Slide Layout + + + + + + + Slide Master Title Text Style + + + + + Slide Master Body Text Style + + + + + Slide Master Other Text Style + + + + + + + + Slide Layout ID + + + + + + + + + + + + ID Tag + + + + + ID Tag + + + + + + + + Slide Layout Id + + + + + + + + + Common slide data for slide masters + + + + + + List of Slide Layouts + + + + + Slide Transition for a Slide Master + + + + + Slide Timing Information for Slide Masters + + + + + Header/Footer information for a slide master + + + + + Slide Master Text Styles + + + + + + + Preserve Slide Master + + + + + + Slide Master + + + + + + + Common slide data for handout master + + + + + + Header/Footer information for a handout master + + + + + + + + Handout Master + + + + + + + Common Slide Data + + + + + + Header/Footer Information for a Notes Master + + + + + Notes Text Style + + + + + + + + Notes Master + + + + + + + Common slide data for notes slides + + + + + + + + + + Notes Slide + + + + + + + + + Server's Slide File ID + + + + + Server's Slide File's modification date/time + + + + + Client Slide Insertion date/time + + + + + + Slide Synchronization Properties + + + + + + Name + + + + + Value + + + + + + + + Programmable Extensibility Tag + + + + + + + Programmable Tab List + + + + + Splitter Bar State + + + + + Min + + + + + Restored + + + + + Max + + + + + + + List of View Types + + + + + Normal Slide View + + + + + Slide Master View + + + + + Notes View + + + + + Handout View + + + + + Notes Master View + + + + + Outline View + + + + + Slide Sorter View + + + + + Slide Thumbnail View + + + + + + + + Normal View Dimension Size + + + + + Auto Adjust Normal View + + + + + + + + Normal View Restored Left Properties + + + + + Normal View Restored Top Properties + + + + + + + Show Outline Icons in Normal View + + + + + Snap Vertical Splitter + + + + + State of the Vertical Splitter Bar + + + + + State of the Horizontal Splitter Bar + + + + + Prefer Single View + + + + + + + + View Scale + + + + + View Origin + + + + + + Variable Scale + + + + + + + + Base properties for Notes View + + + + + + + + + Relationship Identifier + + + + + Collapsed + + + + + + + + Presentation Slide + + + + + + + + + Common View Properties + + + + + List of Presentation Slides + + + + + + + + + + Base properties for Slide Sorter View + + + + + + + Show Formatting + + + + + + + Guide Orientation + + + + + Guide Position + + + + + + + + A Guide + + + + + + + + + Base properties for Slide View + + + + + List of Guides + + + + + + Snap Objects to Grid + + + + + Snap Objects to Objects + + + + + Show Guides in View + + + + + + + + + + + + + + Common Slide View Properties + + + + + + + + + + Normal View Properties + + + + + Slide View Properties + + + + + Outline View Properties + + + + + Notes Text View Properties + + + + + Slide Sorter View Properties + + + + + Notes View Properties + + + + + Grid Spacing + + + + + + + Last View + + + + + Show Comments + + + + + + Presentation-wide View Properties + + diff --git a/tests/resources/schema/ooxml/shared-additionalCharacteristics.xsd b/tests/resources/schema/ooxml/shared-additionalCharacteristics.xsd index 05c0d69355..f058607ddf 100644 --- a/tests/resources/schema/ooxml/shared-additionalCharacteristics.xsd +++ b/tests/resources/schema/ooxml/shared-additionalCharacteristics.xsd @@ -1,28 +1,74 @@ - + - - - - - - - - - - - - - - - - - - - - - + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/characteristics" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/characteristics" + elementFormDefault="qualified"> + + + + + Single Characteristic + + + + + + + + Name of Characteristic + + + + + Relationship of Value to Name + + + + + Characteristic Value + + + + + Characteristic Grammar + + + + + + Characteristic Relationship Types + + + + + Greater Than or Equal to + + + + + Less Than or Equal To + + + + + Greater Than + + + + + Less Than + + + + + Equal To + + + + + + + Set of Additional Characteristics + + diff --git a/tests/resources/schema/ooxml/shared-bibliography.xsd b/tests/resources/schema/ooxml/shared-bibliography.xsd index 9617535233..bc0ab17727 100644 --- a/tests/resources/schema/ooxml/shared-bibliography.xsd +++ b/tests/resources/schema/ooxml/shared-bibliography.xsd @@ -1,144 +1,531 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Bibliographic Data Source Types + + + + + Article in a Periodical + + + + + Book + + + + + Book Section + + + + + Journal Article + + + + + Conference Proceedings + + + + + Reporter + + + + + Sound Recording + + + + + Performance + + + + + Art + + + + + Document from Internet Site + + + + + Internet Site + + + + + Film + + + + + Interview + + + + + Patent + + + + + Electronic Source + + + + + Case + + + + + Miscellaneous + + + + + + + + + Person + + + + + + + + + Person's Last, or Family, Name + + + + + Person's First, or Given, Name + + + + + Person's Middle, or Other, Name + + + + + + + + + Name List + + + + + + + + + + + Corporate Author + + + + + + + + + + + Artist + + + + + Author + + + + + Book Author + + + + + Compiler + + + + + Composer + + + + + Conductor + + + + + Counsel + + + + + Director + + + + + Editor + + + + + Interviewee + + + + + Interviewer + + + + + Inventor + + + + + Performer + + + + + Producer Name + + + + + Translator + + + + + Writer + + + + + + + + + + + Abbreviated Case Number + + + + + Album Title + + + + + Contributors List + + + + + Book Title + + + + + Broadcaster + + + + + Broadcast Title + + + + + Case Number + + + + + Chapter Number + + + + + City + + + + + Comments + + + + + Conference or Proceedings Name + + + + + Country or Region + + + + + Court + + + + + Day + + + + + Day Accessed + + + + + Department + + + + + Distributor + + + + + Editor + + + + + GUID + + + + + Institution + + + + + Internet Site Title + + + + + Issue + + + + + Journal Name + + + + + Locale ID + + + + + Medium + + + + + Month + + + + + Month Accessed + + + + + Number of Volumes + + + + + Pages + + + + + Patent Number + + + + + Periodical Title + + + + + Production Company + + + + + Publication Title + + + + + Publisher + + + + + Recording Number + + + + + Reference Order + + + + + Reporter + + + + + Source Type + + + + + Short Title + + + + + Standard Number + + + + + State or Province + + + + + Station + + + + + Tag + + + + + Theater + + + + + Thesis Type + + + + + Title + + + + + Patent Type + + + + + URL + + + + + Version + + + + + Volume + + + + + Year + + + + + Year Accessed + + + + + + + + Sources + + + + + + + Source + + + + + + Selected Style + + + + + Documentation Style Name + + + + + Uniform Resource Identifier + + + diff --git a/tests/resources/schema/ooxml/shared-commonSimpleTypes.xsd b/tests/resources/schema/ooxml/shared-commonSimpleTypes.xsd index d34d1a8cb0..dc70724447 100644 --- a/tests/resources/schema/ooxml/shared-commonSimpleTypes.xsd +++ b/tests/resources/schema/ooxml/shared-commonSimpleTypes.xsd @@ -1,125 +1,437 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Language Reference + + + + + + Hexadecimal Color Value + + + + + + + + Panose-1 Number + + + + + + + + Calendar Types + + + + + Gregorian + + + + + Gregorian English Calendar + + + + + Gregorian Middle East French Calendar + + + + + Gregorian Arabic Calendar + + + + + Hijri + + + + + Hebrew + + + + + Taiwan + + + + + Japanese Emperor Era + + + + + Thai + + + + + Korean Tangun Era + + + + + Saka Era + + + + + Gregorian Transliterated English + + + + + Gregorian Transliterated French + + + + + No Calendar Type + + + + + + + Cryptographic Algorithm Classes + + + + + Hashing + + + + + Custom Algorithm + + + + + + + Cryptographic Provider Types + + + + + AES Provider + + + + + Any Provider + + + + + Custom Provider + + + + + + + Cryptographic Algorithm Types + + + + + Any Predefined Type + + + + + Custom Algorithm + + + + + + + Color Type + + + + + + 128-Bit GUID + + + + + + + + On/Off Value + + + + + + + + + + + + + String + + + + + + Boolean Value + + + + + True + + + + + False + + + + + True + + + + + False + + + + + + + Boolean Value with Blank [False] State + + + + + Logical True + + + + + Logical False + + + + + Logical True + + + + + Logical False + + + + + Blank – Logical False + + + + + Logical True + + + + + Logical False + + + + + + + Unsigned Decimal Number Value + + + + + + Measurement in Twentieths of a Point + + + + + + Vertical Positioning Location + + + + + Regular Vertical Positioning + + + + + Superscript + + + + + Subscript + + + + + + + Escaped String + + + + + + Horizontal Alignment Location + + + + + Left Aligned Horizontally + + + + + Centered Horizontally + + + + + Right Aligned Horizontally + + + + + Inside + + + + + Outside + + + + + + + Vertical Alignment Location + + + + + In line With Text + + + + + Top + + + + + Centered Vertically + + + + + Bottom + + + + + Inside Anchor Extents + + + + + Outside Anchor Extents + + + + + + + Document Conformance Class Value + + + + + Office Open XML Strict + + + + + Office Open XML Transitional + + + + + + + Universal Measurement + + + + + + + + Positive Universal Measurement + + + + + + + + Percentage Value with Sign + + + + + + + + Fixed Percentage Value with Sign + + + + + + + + Positive Percentage Value with Sign + + + + + + + + Positive Fixed Percentage Value with Sign + + + + + diff --git a/tests/resources/schema/ooxml/shared-customXmlDataProperties.xsd b/tests/resources/schema/ooxml/shared-customXmlDataProperties.xsd index 70a95139a3..5b757ce78d 100644 --- a/tests/resources/schema/ooxml/shared-customXmlDataProperties.xsd +++ b/tests/resources/schema/ooxml/shared-customXmlDataProperties.xsd @@ -1,25 +1,44 @@ - + - - - - - - - - - - - - - - - - + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/customXml" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/customXml" + elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all"> + + + + + Target Namespace of Associated XML Schema + + + + + + + + Associated XML Schema + + + + + + + + + Set of Associated XML Schemas + + + + + + Custom XML Data ID + + + + + + Custom XML Data Properties + + diff --git a/tests/resources/schema/ooxml/shared-customXmlSchemaProperties.xsd b/tests/resources/schema/ooxml/shared-customXmlSchemaProperties.xsd index fed636b27d..9f7f4e513b 100644 --- a/tests/resources/schema/ooxml/shared-customXmlSchemaProperties.xsd +++ b/tests/resources/schema/ooxml/shared-customXmlSchemaProperties.xsd @@ -1,18 +1,42 @@ - + - - - - - - - - - - - - + xmlns="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + targetNamespace="http://schemas.openxmlformats.org/schemaLibrary/2006/main" attributeFormDefault="qualified" + elementFormDefault="qualified"> + + + + Custom XML Schema Namespace + + + + + Supplementary XML File Location + + + + + Custom XML Schema Location + + + + + Schema Language + + + + + + + + Custom XML Schema Reference + + + + + + + Embedded Custom XML Schema Supplementary Data + + diff --git a/tests/resources/schema/ooxml/shared-documentPropertiesCustom.xsd b/tests/resources/schema/ooxml/shared-documentPropertiesCustom.xsd index 897ccfab8f..2a5789823d 100644 --- a/tests/resources/schema/ooxml/shared-documentPropertiesCustom.xsd +++ b/tests/resources/schema/ooxml/shared-documentPropertiesCustom.xsd @@ -1,59 +1,215 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + Custom File Properties + + + + + + + Custom File Property + + + + + + + + + Vector + + + + + Array + + + + + Binary Blob + + + + + Binary Blob Object + + + + + Empty + + + + + Null + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + 8-Byte Signed Integer + + + + + Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + 8-Byte Unsigned Integer + + + + + Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + Decimal + + + + + LPSTR + + + + + LPWSTR + + + + + Basic String + + + + + Date and Time + + + + + File Time + + + + + Boolean + + + + + Currency + + + + + Error Status Code + + + + + Binary Stream + + + + + Binary Stream Object + + + + + Binary Storage + + + + + Binary Storage Object + + + + + Binary Versioned Stream + + + + + Class ID + + + + + + Format ID + + + + + Property ID + + + + + Custom File Property Name + + + + + Bookmark Link Target + + + diff --git a/tests/resources/schema/ooxml/shared-documentPropertiesExtended.xsd b/tests/resources/schema/ooxml/shared-documentPropertiesExtended.xsd index 4ef88e7ca0..d15b5eb6b6 100644 --- a/tests/resources/schema/ooxml/shared-documentPropertiesExtended.xsd +++ b/tests/resources/schema/ooxml/shared-documentPropertiesExtended.xsd @@ -1,56 +1,180 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Application Specific File Properties + + + + + + + Name of Document Template + + + + + Name of Manager + + + + + Name of Company + + + + + Total Number of Pages + + + + + Word Count + + + + + Total Number of Characters + + + + + Intended Format of Presentation + + + + + Number of Lines + + + + + Total Number of Paragraphs + + + + + Slides Metadata Element + + + + + Number of Slides Containing Notes + + + + + Total Edit Time Metadata Element + + + + + Number of Hidden Slides + + + + + Total Number of Multimedia Clips + + + + + Thumbnail Display Mode + + + + + Heading Pairs + + + + + Part Titles + + + + + Links Up-to-Date + + + + + Number of Characters (With Spaces) + + + + + Shared Document + + + + + Relative Hyperlink Base + + + + + Hyperlink List + + + + + Hyperlinks Changed + + + + + Digital Signature + + + + + Application Name + + + + + Application Version + + + + + Document Security + + + + + + + + + Vector + + + + + + + + + Vector + + + + + + + + + Binary Blob + + + + diff --git a/tests/resources/schema/ooxml/shared-documentPropertiesVariantTypes.xsd b/tests/resources/schema/ooxml/shared-documentPropertiesVariantTypes.xsd index fad1992741..aad02243af 100644 --- a/tests/resources/schema/ooxml/shared-documentPropertiesVariantTypes.xsd +++ b/tests/resources/schema/ooxml/shared-documentPropertiesVariantTypes.xsd @@ -1,195 +1,799 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Vector Base Type Simple Type + + + + + Variant Base Type + + + + + Vector Base Type Enumeration Value + + + + + 2-Byte Signed Integer Base Type + + + + + 4-Byte Signed Integer Base Type + + + + + 8-Byte Signed Integer Base Type + + + + + 1-Byte Unsigned Integer Base Type + + + + + 2-Byte Unisigned Integer Base Type + + + + + 4-Byte Unsigned Integer Base Type + + + + + 8-Byte Unsigned Integer Base Type + + + + + 4-Byte Real Number Base Type + + + + + 8-Byte Real Number Base Type + + + + + LPSTR Base Type + + + + + LPWSTR Base Type + + + + + Basic String Base Type + + + + + Date and Time Base Type + + + + + File Time Base Type + + + + + Boolean Base Type + + + + + Currency Base Type + + + + + Error Status Code Base Type + + + + + Class ID Base Type + + + + + + + Array Base Type Simple Type + + + + + Variant Base Type + + + + + 1-Byte Signed Integer Base Type + + + + + 2-Byte Signed Integer Base Type + + + + + 4-Byte Signed Integer Base Type + + + + + Integer Base Type + + + + + 1-Byte Unsigned Integer Base Type + + + + + 2-Byte Unsigned Integer Base Type + + + + + 4-Byte Unsigned Integer Base Type + + + + + Unsigned Integer Base Type + + + + + 4-Byte Real Number Base Type + + + + + 8-Byte Real Number Base Type + + + + + Decimal Base Type + + + + + Basic String Base Type + + + + + Date and Time Base Type + + + + + Boolean Base Type + + + + + Curency Base Type + + + + + Error Status Code Base Type + + + + + + + Currency Simple Type + + + + + + + + Error Status Code Simple Type + + + + + + + + + + + + Variant + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + 8-Byte Signed Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + 8-Byte Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + LPSTR + + + + + LPWSTR + + + + + Basic String + + + + + Date and Time + + + + + File Time + + + + + Boolean + + + + + Currency + + + + + Error Status Code + + + + + Class ID + + + + + + Vector Base Type + + + + + Vector Size + + + + + + + + Variant + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + Decimal + + + + + Basic String + + + + + Date and Time + + + + + Boolean + + + + + Error Status Code + + + + + Currency + + + + + + Array Lower Bounds Attribute + + + + + Array Upper Bounds Attribute + + + + + Array Base Type + + + + + + + + Variant + + + + + Vector + + + + + Array + + + + + Binary Blob + + + + + Binary Blob Object + + + + + Empty + + + + + Null + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + 8-Byte Signed Integer + + + + + Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + 8-Byte Unsigned Integer + + + + + Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + Decimal + + + + + LPSTR + + + + + LPWSTR + + + + + Basic String + + + + + Date and Time + + + + + File Time + + + + + Boolean + + + + + Currency + + + + + Error Status Code + + + + + Binary Stream + + + + + Binary Stream Object + + + + + Binary Storage + + + + + Binary Storage Object + + + + + Binary Versioned Stream + + + + + Class ID + + + + + + + + + + VSTREAM Version Attribute + + + + + + + + Variant + + + + + Vector + + + + + Array + + + + + Binary Blob + + + + + Binary Blob Object + + + + + Empty + + + + + Null + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + 8-Byte Signed Integer + + + + + Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + 8-Byte Unsigned Integer + + + + + Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + Decimal + + + + + LPSTR + + + + + LPWSTR + + + + + Basic String + + + + + Date and Time + + + + + File Time + + + + + Boolean + + + + + Currency + + + + + Error Status Code + + + + + Binary Stream + + + + + Binary Stream Object + + + + + Binary Storage + + + + + Binary Storage Object + + + + + Binary Versioned Stream + + + + + Class ID + + diff --git a/tests/resources/schema/ooxml/shared-math.xsd b/tests/resources/schema/ooxml/shared-math.xsd index 6f5e6d09aa..bdc6b17673 100644 --- a/tests/resources/schema/ooxml/shared-math.xsd +++ b/tests/resources/schema/ooxml/shared-math.xsd @@ -1,582 +1,1467 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/math" + xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" + xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" elementFormDefault="qualified" + attributeFormDefault="qualified" blockDefault="#all" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/math"> + + + + + + + Integer value (1 to 255) + + + + + + + + + + Value + + + + + + Integer value (-2 to 2) + + + + + + + + + + Value + + + + + + Spacing Rule + + + + + + + + + + Value + + + + + + Unsigned integer. + + + + + + + Value + + + + + + Character + + + + + + + + + value + + + + + + + value + + + + + + + value + + + + + + + Value + + + + + + + Value + + + + + + Shape (Delimiters) + + + + + Centered (Delimiters) + + + + + Match + + + + + + + + Value + + + + + + Fraction Type + + + + + Bar Fraction + + + + + Skewed + + + + + Linear Fraction + + + + + No-Bar Fraction (Stack) + + + + + + + + Value + + + + + + Limit Location + + + + + Under-Over location + + + + + Subscript-Superscript location + + + + + + + + Value + + + + + + Top-Bottom + + + + + Top + + + + + Bottom Alignment + + + + + + + + Value + + + + + + Script + + + + + Roman + + + + + Script + + + + + Fraktur + + + + + double-struck + + + + + Sans-Serif + + + + + Monospace + + + + + + + + Value + + + + + + Style + + + + + Plain + + + + + Bold + + + + + Italic + + + + + Bold-Italic + + + + + + + + Value + + + + + + + Index of Operator to Align To + + + + + + + + Script + + + + + style + + + + + + + + + Literal + + + + + + Normal Text + + + + + + + + + Break + + + + + Align + + + + + + + + + + Content Contains Significant Whitespace + + + + + + + + + + Run Properties + + + + + + + + Text + + + + + + + + + + + + + + + Character + + + + + Control Properties + + + + + + + + + Accent Properties + + + + + Base + + + + + + + + + Position + + + + + + + + + + Bar Properties + + + + + Base + + + + + + + + + Operator Emulator + + + + + No Break + + + + + Differential + + + + + Break + + + + + Alignment + + + + + + + + + + Box Properties + + + + + Base + + + + + + + + + Hide Top Edge + + + + + Hide Bottom Edge + + + + + Hide Left Edge + + + + + Hide Right Edge + + + + + Border Box Strikethrough Horizontal + + + + + Border Box Strikethrough Vertical + + + + + Border Box Strikethrough Bottom-Left to Top-Right + + + + + Border Box Strikethrough Top-Left to Bottom-Right + + + + + + + + + + Border-Box Properties + + + + + Base + + + + + + + + + Delimiter Beginning Character + + + + + Delimiter Separator Character + + + + + Delimiter Ending Character + + + + + Delimiter Grow + + + + + Shape (Delimiters) + + + + + + + + + + Delimiter Properties + + + + + Base + + + + + + + + + Equation Array Base Justification + + + + + Maximum Distribution + + + + + Object Distribution + + + + + Row Spacing Rule + + + + + Row Spacing (Array) + + + + + + + + + + Array Properties + + + + + Element + + + + + + + + + Fraction type + + + + + + + + + + Fraction Properties + + + + + Numerator + + + + + Denominator + + + + + + + + + + + + + + Function Properties + + + + + Function Name + + + + + Element (Argument) + + + + + + + + + Group Character (Grouping Character) + + + + + Position (Group Character) + + + + + Vertical Justification + + + + + + + + + + Group-Character Properties + + + + + Base + + + + + + + + + + + + + + Lower-Limit Properties + + + + + Base + + + + + Limit + + + + + + + + + + + + + + Upper-Limit Properties + + + + + Base + + + + + Limit (Upper) + + + + + + + + + Matrix Column Count + + + + + Matrix Column Justification + + + + + + + + + Matrix Column Properties + + + + + + + + + Matrix Column + + + + + + + + + Matrix Base Justification + + + + + Hide Placeholders (Matrix) + + + + + Row Spacing Rule + + + + + Matrix Column Gap Rule + + + + + Row Spacing (Matrix) + + + + + Minimum Matrix Column Width + + + + + Matrix Column Gap + + + + + Matrix Columns + + + + + + + + + + Element + + + + + + + + + Matrix Properties + + + + + Matrix Row + + + + + + + + + n-ary Operator Character + + + + + n-ary Limit Location + + + + + n-ary Grow + + + + + Hide Subscript (n-ary) + + + + + Hide Superscript (n-ary) + + + + + + + + + + n-ary Properties + + + + + Lower limit (n-ary) + + + + + Upper limit (n-ary) + + + + + Base (Argument) + + + + + + + + + Phantom Show + + + + + Phantom Zero Width + + + + + Phantom Zero Ascent + + + + + Phantom Zero Descent + + + + + Transparent (Phantom) + + + + + + + + + + Phantom Properties + + + + + Base + + + + + + + + + Hide Degree + + + + + + + + + + Radical Properties + + + + + Degree + + + + + Base + + + + + + + + + + + + + + Pre-Sub-Superscript Properties + + + + + Subscript (Pre-Sub-Superscript) + + + + + Superscript(Pre-Sub-Superscript function) + + + + + Base + + + + + + + + + + + + + + Subscript Properties + + + + + Base + + + + + Subscript (Subscript function) + + + + + + + + + Align Scripts + + + + + + + + + + Sub-Superscript Properties + + + + + Base + + + + + Subscript (Sub-Superscript) + + + + + Superscript (Sub-Superscript function) + + + + + + + + + + + + + + Superscript Properties + + + + + Base + + + + + Superscript (Superscript object) + + + + + + + + + Accent + + + + + Bar + + + + + Box Object + + + + + Border-Box Object + + + + + Delimiter Object + + + + + Array Object + + + + + Fraction Object + + + + + Function Apply Object + + + + + Group-Character Object + + + + + Lower-Limit Object + + + + + Upper-Limit Object + + + + + Matrix Object + + + + + n-ary Operator Object + + + + + Phantom Object + + + + + Radical Object + + + + + Pre-Sub-Superscript Object + + + + + Subscript Object + + + + + Sub-Superscript Object + + + + + Superscript Object + + + + + Run + + + + + + + + + + + + + + + Argument Size + + + + + + + + + Argument Properties + + + + + + + + + Justification + + + + + Left Justification + + + + + Right + + + + + Center (Text) + + + + + Centered as Group (Text) + + + + + + + + Value + + + + + + + + Justification + + + + + + + + Value + + + + + + Break Binary Operators + + + + + Before + + + + + After + + + + + Repeat + + + + + + + + Value + + + + + + Break on Binary Subtraction + + + + + Minus Minus + + + + + Minus Plus + + + + + Plus Minus + + + + + + + + Value + + + + + + + + Math Font + + + + + Break on Binary Operators + + + + + Break on Binary Subtraction + + + + + Small Fraction + + + + + Use Display Math Defaults + + + + + Left Margin + + + + + Right Margin + + + + + Default Justification + + + + + Pre-Paragraph Spacing + + + + + Post-Paragraph Spacing + + + + + Inter-Equation Spacing + + + + + Intra-Equation Spacing + + + + + + Wrap Indent + + + + + Wrap Right + + + + + + Integral Limit Locations + + + + + n-ary Limit Location + + + + + + + Math Properties + + + + + + + Office Math Paragraph Properties + + + + + Office Math + + + + + + + + + + + + Office Math Paragraph + + + diff --git a/tests/resources/schema/ooxml/shared-relationshipReference.xsd b/tests/resources/schema/ooxml/shared-relationshipReference.xsd index a6af5ff28b..e05a8b17d8 100644 --- a/tests/resources/schema/ooxml/shared-relationshipReference.xsd +++ b/tests/resources/schema/ooxml/shared-relationshipReference.xsd @@ -1,23 +1,38 @@ - - - - - - - - - - - - - - - - - - - + + + + + Explicit Relationship ID + + + + + + Relationship ID + + + + + Embedded Image Relationship Target + + + + + + + + + + + + Hyperlink Target Relationship ID + + + + + + diff --git a/tests/resources/schema/ooxml/sml.xsd b/tests/resources/schema/ooxml/sml.xsd index 4346d37b9f..a95f9448ad 100644 --- a/tests/resources/schema/ooxml/sml.xsd +++ b/tests/resources/schema/ooxml/sml.xsd @@ -1,4404 +1,15435 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/spreadsheetml/2006/main" elementFormDefault="qualified"> + + + + + + + + AutoFilter Column + + + + + Sort State for Auto Filter + + + + + + + Cell or Range Reference + + + + + + + + Filter Criteria + + + + + Top 10 + + + + + Custom Filters + + + + + Dynamic Filter + + + + + Color Filter Criteria + + + + + Icon Filter + + + + + + + Filter Column Data + + + + + Hidden AutoFilter Button + + + + + Show Filter Button + + + + + + + + Filter + + + + + Date Grouping + + + + + + Filter by Blank + + + + + Calendar Type + + + + + + + Filter Value + + + + + + + + Custom Filter Criteria + + + + + + And + + + + + + + Filter Comparison Operator + + + + + Top or Bottom Value + + + + + + + Top + + + + + Filter by Percent + + + + + Top or Bottom Value + + + + + Filter Value + + + + + + + Differential Format Record Id + + + + + Filter By Cell Color + + + + + + + Icon Set + + + + + Icon Id + + + + + + Filter Operator + + + + + Equal + + + + + Less Than + + + + + Less Than Or Equal + + + + + Not Equal + + + + + Greater Than Or Equal + + + + + Greater Than + + + + + + + + Dynamic filter type + + + + + Value + + + + + ISO Value + + + + + Max Value + + + + + Max ISO Value + + + + + + Dynamic Filter + + + + + Null + + + + + Above Average + + + + + Below Average + + + + + Tomorrow + + + + + Today + + + + + Yesterday + + + + + Next Week + + + + + This Week + + + + + Last Week + + + + + Next Month + + + + + This Month + + + + + Last Month + + + + + Next Quarter + + + + + This Quarter + + + + + Last Quarter + + + + + Next Year + + + + + This Year + + + + + Last Year + + + + + Year To Date + + + + + 1st Quarter + + + + + 2nd Quarter + + + + + 3rd Quarter + + + + + 4th Quarter + + + + + 1st Month + + + + + 2nd Month + + + + + 3rd Month + + + + + 4th Month + + + + + 5th Month + + + + + 6th Month + + + + + 7th Month + + + + + 8th Month + + + + + 9th Month + + + + + 10th Month + + + + + 11th Month + + + + + 12th Month + + + + + + + Icon Set Type + + + + + 3 Arrows + + + + + 3 Arrows (Gray) + + + + + 3 Flags + + + + + 3 Traffic Lights + + + + + 3 Traffic Lights Black + + + + + 3 Signs + + + + + 3 Symbols Circled + + + + + 3 Symbols + + + + + 4 Arrows + + + + + 4 Arrows (Gray) + + + + + 4 Red To Black + + + + + 4 Ratings + + + + + 4 Traffic Lights + + + + + 5 Arrows + + + + + 5 Arrows (Gray) + + + + + 5 Ratings Icon Set + + + + + 5 Quarters + + + + + + + + + Sort Condition + + + + + + + Sort by Columns + + + + + Case Sensitive + + + + + Sort Method + + + + + Sort Range + + + + + + + Descending + + + + + Sort By + + + + + Reference + + + + + Custom List + + + + + Format Id + + + + + Icon Set + + + + + Icon Id + + + + + + Sort By + + + + + Value + + + + + Sort by Cell Color + + + + + Sort by Font Color + + + + + Sort by Icon + + + + + + + Sort Method + + + + + Sort by Stroke + + + + + PinYin Sort + + + + + None + + + + + + + + Year + + + + + Month + + + + + Day + + + + + Hour + + + + + Minute + + + + + Second + + + + + Date Time Grouping + + + + + + Date Time Grouping + + + + + Group by Year + + + + + Month + + + + + Day + + + + + Group by Hour + + + + + Group by Minute + + + + + Second + + + + + + + Cell Reference + + + + + + Cell References + + + + + + Single Cell Reference + + + + + + Reference Sequence + + + + + + Formula + + + + + + Hex Unsigned Integer + + + + + + + + Unsigned Short Hex + + + + + + + + + Value + + + + + + + + + + URI + + + + + + + + + + + Move With Cells + + + + + Size With Cells + + + + + Z-Order + + + + + + + + Extension + + + + + + + + + + + + Calculation Chain Info + + + + + + + Cell + + + + + + + + + Cell Reference + + + + + Sheet Id + + + + + Child Chain + + + + + New Dependency Level + + + + + New Thread + + + + + Array + + + + + + Comments + + + + + + + Authors + + + + + List of Comments + + + + + + + + + + Author + + + + + + + + + Comment + + + + + + + + + Comment Text + + + + + Comment Properties + + + + + + Cell Reference + + + + + Author Id + + + + + Unique Identifier for Comment + + + + + Shape ID + + + + + + + + + + Locked Flag + + + + + Default Size Flag + + + + + Print Flag + + + + + Disabled Flag + + + + + UI Object Flag + + + + + Automatic Fill Flag + + + + + Automatic Line Flag + + + + + Alternative Text + + + + + Text Horizontal Alignment + + + + + ext Vertical Alignment + + + + + Text Lock Flag + + + + + Far East Alignment Flag + + + + + Automatic Text Scaling Flag + + + + + Hidden Row Flag + + + + + Hidden Column Flag + + + + + + Comment Text Horizontal Alignment + + + + + Left Alignment + + + + + Center Alignment + + + + + Right Alignment + + + + + Justify Alignment + + + + + Distributed Alignment + + + + + + + Comment Text Vertical Alignment + + + + + Top Alignment + + + + + Center Alignment + + + + + Bottom Alignment + + + + + Justify Alignment + + + + + Distributed Alignment + + + + + + + XML Mapping + + + + + + + XML Schema + + + + + XML Mapping Properties + + + + + + Prefix Mappings for XPath Expressions + + + + + + + + + + Schema ID + + + + + Schema Reference + + + + + Schema Root Namespace + + + + + Schema Language + + + + + + + + XML Mapping + + + + + + XML Mapping ID + + + + + XML Mapping Name + + + + + Root Element Name + + + + + Schema Name + + + + + Show Validation Errors + + + + + AutoFit Table on Refresh + + + + + Append Data to Table + + + + + Preserve AutoFilter State + + + + + Preserve Cell Formatting + + + + + + + + + + Unique Identifer + + + + + Binding to External File + + + + + Reference to Connection ID + + + + + File Binding Name + + + + + XML Data Loading Behavior + + + + + + Connections + + + + + + + Connection + + + + + + + + + Database Properties + + + + + OLAP Properties + + + + + Web Query Properties + + + + + Text Import Settings + + + + + Query Parameters + + + + + Future Feature Data Storage + + + + + + Connection Id + + + + + Source Database File + + + + + Connection File + + + + + Keep Connection Open + + + + + Automatic Refresh Interval + + + + + Connection Name + + + + + Connection Description + + + + + Database Source Type + + + + + Reconnection Method + + + + + Last Refresh Version + + + + + Minimum Version Required for Refresh + + + + + Save Password + + + + + New Connection + + + + + Deleted Connection + + + + + Only Use Connection File + + + + + Background Refresh + + + + + Refresh on Open + + + + + Save Data + + + + + Reconnection Method + + + + + SSO Id + + + + + + Credentials Method + + + + + Integrated Authentication + + + + + No Credentials + + + + + Stored Credentials + + + + + Prompt Credentials + + + + + + + + Connection String + + + + + Command Text + + + + + Command Text + + + + + OLE DB Command Type + + + + + + + Local Cube + + + + + Local Cube Connection + + + + + Local Refresh + + + + + Send Locale to OLAP + + + + + Drill Through Count + + + + + OLAP Fill Formatting + + + + + OLAP Number Format + + + + + OLAP Server Font + + + + + OLAP Font Formatting + + + + + + + + Tables + + + + + + XML Source + + + + + Import XML Source Data + + + + + Parse PRE + + + + + Consecutive Delimiters + + + + + Use First Row + + + + + Created in Excel 97 + + + + + Dates as Text + + + + + Refreshed in Excel 2000 + + + + + URL + + + + + Web Post + + + + + HTML Tables Only + + + + + HTML Formatting Handling + + + + + Edit Query URL + + + + + + HTML Formatting Handling + + + + + No Formatting + + + + + Honor Rich Text + + + + + All + + + + + + + + + Parameter Properties + + + + + + Parameter Count + + + + + + + Parameter Name + + + + + SQL Data Type + + + + + Parameter Type + + + + + Refresh on Change + + + + + Parameter Prompt String + + + + + Boolean + + + + + Double + + + + + Integer + + + + + String + + + + + Cell Reference + + + + + + Parameter Type + + + + + Prompt on Refresh + + + + + Value + + + + + Parameter From Cell + + + + + + + + + No Value + + + + + Character Value + + + + + Index + + + + + + Count of Tables + + + + + + + + + Fields + + + + + + Prompt for File Name + + + + + File Type + + + + + Code Page + + + + + Character Set + + + + + First Row + + + + + Source File Name + + + + + Delimited File + + + + + Decimal Separator + + + + + Thousands Separator + + + + + Tab as Delimiter + + + + + Space is Delimiter + + + + + Comma is Delimiter + + + + + Semicolon is Delimiter + + + + + Consecutive Delimiters + + + + + Qualifier + + + + + Custom Delimiter + + + + + + File Type + + + + + Macintosh + + + + + Windows (ANSI) + + + + + DOS + + + + + Linux + + + + + Other Non-Specified Values + + + + + + + Qualifier + + + + + Double Quote + + + + + Single Quote + + + + + No Text Qualifier + + + + + + + + + Text Import Field Settings + + + + + + Count of Fields + + + + + + + Field Type + + + + + Position + + + + + + Text Field Datatype + + + + + General + + + + + Text + + + + + Month Day Year + + + + + Day Month Year + + + + + Year Month Day + + + + + Month Day Year + + + + + Day Year Month + + + + + Year Day Month + + + + + Skip Field + + + + + East Asian Year Month Day + + + + + + + PivotCache Definition + + + + + PivotCache Records + + + + + PivotTable Definition + + + + + + + PivotCache Source Description + + + + + PivotCache Fields + + + + + PivotCache Hierarchies + + + + + OLAP KPIs + + + + + Tuple Cache + + + + + Calculated Items + + + + + Calculated Members + + + + + OLAP Dimensions + + + + + OLAP Measure Groups + + + + + OLAP Measure Group + + + + + Future Feature Data Storage Area + + + + + + Relationship Identifier + + + + + Invalid Cache + + + + + Save Pivot Records + + + + + Refresh On Load + + + + + Optimize Cache for Memory + + + + + Enable PivotCache Refresh + + + + + Last Refreshed By + + + + + PivotCache Last Refreshed Date + + + + + PivotCache Last Refreshed Date ISO + + + + + Background Query + + + + + Missing Items Limit + + + + + PivotCache Created Version + + + + + PivotCache Last Refreshed Version + + + + + Minimum Version Required for Refresh + + + + + PivotCache Record Count + + + + + Upgrade PivotCache on Refresh + + + + + Stores Cache for OLAP Functions + + + + + Supports Subqueries + + + + + Supports Attribute Drilldown + + + + + + + + PivotCache Field + + + + + + Field Count + + + + + + + + Shared Items + + + + + Field Group Properties + + + + + Member Properties Map + + + + + Future Feature Data Storage Area + + + + + + PivotCache Field Name + + + + + PivotCache Field Caption + + + + + Property Name + + + + + Server-based Field + + + + + Unique List Retrieved + + + + + Number Format Id + + + + + Calculated Field Formula + + + + + SQL Data Type + + + + + Hierarchy + + + + + Hierarchy Level + + + + + Database Field + + + + + Member Property Count + + + + + Member Property Field + + + + + + + + Worksheet PivotCache Source + + + + + Consolidation Source + + + + + Future Feature Data Storage Area + + + + + + Cache Type + + + + + Connection Index + + + + + + PivotCache Type + + + + + Worksheet + + + + + External + + + + + Consolidation Ranges + + + + + Scenario Summary Report + + + + + + + + Reference + + + + + Named Range + + + + + Sheet Name + + + + + Relationship Id + + + + + + + + Page Item Values + + + + + Range Sets + + + + + + Auto Page + + + + + + + + Page Items + + + + + + Page Item String Count + + + + + + + + Page Item + + + + + + Page Item String Count + + + + + + + Page Item Name + + + + + + + + Range Set + + + + + + Reference and Page Item Count + + + + + + + Field Item Index Page 1 + + + + + Field Item Index Page 2 + + + + + Field Item index Page 3 + + + + + Field Item Index Page 4 + + + + + Reference + + + + + Named Range + + + + + Sheet Name + + + + + Relationship Id + + + + + + + + No Value + + + + + Numeric + + + + + Boolean + + + + + Error Value + + + + + Character Value + + + + + Date Time + + + + + + Contains Semi Mixed Data Types + + + + + Contains Non Date + + + + + Contains Date + + + + + Contains String + + + + + Contains Blank + + + + + Contains Mixed Data Types + + + + + Contains Numbers + + + + + Contains Integer + + + + + Minimum Numeric Value + + + + + Maximum Numeric Value + + + + + Minimum Date Time + + + + + Maximum Date Time Value + + + + + Shared Items Count + + + + + Long Text + + + + + + + + Tuples + + + + + Member Property Indexes + + + + + + Unused Item + + + + + Calculated Item + + + + + Caption + + + + + Member Property Count + + + + + Format Index + + + + + background Color + + + + + Foreground Color + + + + + Italic + + + + + Underline + + + + + Strikethrough + + + + + Bold + + + + + + + + OLAP Members + + + + + Member Property Index + + + + + + Value + + + + + Unused Item + + + + + Calculated Item + + + + + Caption + + + + + Member Property Count + + + + + Format Index + + + + + Background Color + + + + + Foreground Color + + + + + Italic + + + + + Underline + + + + + Strikethrough + + + + + Bold + + + + + + + + Member Property Indexes + + + + + + Value + + + + + Unused Item + + + + + Calculated Item + + + + + Caption + + + + + Member Property Count + + + + + + + + Tuples + + + + + Member Property Indexes + + + + + + Value + + + + + Unused Item + + + + + Calculated Item + + + + + Item Caption + + + + + Member Property Count + + + + + Format Index + + + + + background Color + + + + + Foreground Color + + + + + Italic + + + + + Underline + + + + + Strikethrough + + + + + Bold + + + + + + + + Tuples + + + + + Member Property Index + + + + + + Value + + + + + Unused Item + + + + + Calculated Item + + + + + Item Caption + + + + + Member Property Count + + + + + Format Index + + + + + Background Color + + + + + Foreground Color + + + + + Italic + + + + + Underline + + + + + Strikethrough + + + + + Bold + + + + + + + + Member Property Index + + + + + + Value + + + + + Unused Item + + + + + Calculated Item Value + + + + + Caption + + + + + Member Property Count + + + + + + + + Range Grouping Properties + + + + + Discrete Grouping Properties + + + + + OLAP Group Items + + + + + + Parent + + + + + Field Base + + + + + + + Source Data Set Beginning Range + + + + + Source Data Ending Range + + + + + Group By + + + + + Numeric Grouping Start Value + + + + + Numeric Grouping End Value + + + + + Date Grouping Start Value + + + + + Date Grouping End Value + + + + + Grouping Interval + + + + + + Values Group By + + + + + Group By Numeric Ranges + + + + + Seconds + + + + + Minutes + + + + + Hours + + + + + Days + + + + + Months + + + + + Quarters + + + + + Years + + + + + + + + + Element Group + + + + + + Mapping Index Count + + + + + + + + No Value + + + + + Numeric Value + + + + + Boolean + + + + + Error Value + + + + + Character Value + + + + + Date Time + + + + + + Items Created Count + + + + + + + + PivotCache Record + + + + + Future Feature Data Storage Area + + + + + + PivotCache Records Count + + + + + + + + No Value + + + + + Numeric Value + + + + + Boolean + + + + + Error Value + + + + + Character Value + + + + + Date Time + + + + + Shared Items Index + + + + + + + + + OLAP KPI + + + + + + KPI Count + + + + + + + KPI Unique Name + + + + + KPI Display Name + + + + + KPI Display Folder + + + + + KPI Measure Group Name + + + + + Parent KPI + + + + + KPI Value Unique Name + + + + + KPI Goal Unique Name + + + + + KPI Status Unique Name + + + + + KPI Trend Unique Name + + + + + KPI Weight Unique Name + + + + + Time Member KPI Unique Name + + + + + + + + PivotCache Hierarchy + + + + + + Hierarchy Count + + + + + + + + Fields Usage + + + + + OLAP Grouping Levels + + + + + Future Feature Data Storage Area + + + + + + Hierarchy Unique Name + + + + + Hierarchy Display Name + + + + + Measure Hierarchy + + + + + Set + + + + + Parent Set + + + + + KPI Icon Set + + + + + Attribute Hierarchy + + + + + Time + + + + + Key Attribute Hierarchy + + + + + Default Member Unique Name + + + + + Unique Name of 'All' + + + + + Display Name of 'All' + + + + + Dimension Unique Name + + + + + Display Folder + + + + + Measure Group Name + + + + + Measures + + + + + Levels Count + + + + + One Field + + + + + Member Value Data Type + + + + + Unbalanced + + + + + Unbalanced Group + + + + + Hidden + + + + + + + + PivotCache Field Id + + + + + + Field Count + + + + + + + Field Index + + + + + + + + OLAP Grouping Levels + + + + + + Grouping Level Count + + + + + + + + OLAP Level Groups + + + + + Future Feature Data Storage Area + + + + + + Unique Name + + + + + Grouping Level Display Name + + + + + User-Defined Group Level + + + + + Custom Roll Up + + + + + + + + OLAP Group + + + + + + Level Group Count + + + + + + + + OLAP Group Members + + + + + + Group Name + + + + + Unique Group Name + + + + + Group Caption + + + + + Parent Unique Name + + + + + Group Id + + + + + + + + OLAP Group Member + + + + + + Group Member Count + + + + + + + Group Member Unique Name + + + + + Group + + + + + + + + Entries + + + + + Sets + + + + + OLAP Query Cache + + + + + Server Formats + + + + + Future Feature Data Storage Area + + + + + + + + Culture + + + + + Format + + + + + + + + Server Format + + + + + + Format Count + + + + + + + + No Value + + + + + Numeric Value + + + + + Error Value + + + + + Character Value + + + + + + Tuple Count + + + + + + + + Tuple + + + + + + Member Name Count + + + + + + + Field Index + + + + + Hierarchy Index + + + + + Item Index + + + + + + + + OLAP Set + + + + + + Tuple Set Count + + + + + + + + Tuples + + + + + Sort By Tuple + + + + + + Number of Tuples + + + + + Maximum Rank Requested + + + + + MDX Set Definition + + + + + Set Sort Order + + + + + Query Failed + + + + + + Set Sort Order + + + + + None + + + + + Ascending + + + + + Descending + + + + + Ascending Alpha + + + + + Alphabetic Order Descending + + + + + Ascending Natural + + + + + Natural Order Descending + + + + + + + + + Query + + + + + + Cached Query Count + + + + + + + + Tuples + + + + + + MDX Query String + + + + + + + + Calculated Item + + + + + + Calculated Item Formula Count + + + + + + + + Calculated Item Location + + + + + Future Feature Data Storage Area + + + + + + Field Index + + + + + Calculated Item Formula + + + + + + + + Calculated Member + + + + + + Calculated Members Count + + + + + + + + Future Feature Data Storage Area + + + + + + Calculated Member Name + + + + + Calculated Member MDX Formula + + + + + OLAP Calculated Member Name + + + + + Hierarchy Name + + + + + Parent Name + + + + + Calculated Members Solve Order + + + + + Set + + + + + + + + PivotTable Location + + + + + PivotTable Fields + + + + + Row Fields + + + + + Row Items + + + + + Column Fields + + + + + Column Items + + + + + Page Field Items + + + + + Data Fields + + + + + PivotTable Formats + + + + + Conditional Formats + + + + + PivotChart Formats + + + + + PivotTable OLAP Hierarchies + + + + + PivotTable Style + + + + + Filters + + + + + Row OLAP Hierarchy References + + + + + Column OLAP Hierarchy References + + + + + Future Feature Data Storage Area + + + + + + Name + + + + + PivotCache Definition Id + + + + + Data On Rows + + + + + Default Data Field Position + + + + + + Data Field Header Name + + + + + Grand Totals Caption + + + + + Error Caption + + + + + Show Error + + + + + Caption for Missing Values + + + + + Show Missing + + + + + Page Header Style Name + + + + + Table Style Name + + + + + Vacated Style + + + + + PivotTable Custom String + + + + + PivotTable Last Updated Version + + + + + Minimum Refreshable Version + + + + + Asterisk Totals + + + + + Show Item Names + + + + + Allow Edit Data + + + + + Disable Field List + + + + + Show Calculated Members + + + + + Total Visual Data + + + + + Show Multiple Labels + + + + + Show Drop Down + + + + + Show Expand Collapse + + + + + Print Drill Indicators + + + + + Show Member Property ToolTips + + + + + Show ToolTips on Data + + + + + Enable PivotTable Wizard + + + + + Enable Drill Down + + + + + Enable Field Properties + + + + + Preserve Formatting + + + + + Auto Formatting + + + + + Page Wrap + + + + + Page Over Then Down + + + + + Subtotal Hidden Items + + + + + Row Grand Totals + + + + + Grand Totals On Columns + + + + + Field Print Titles + + + + + Item Print Titles + + + + + Merge Titles + + + + + Show Drop Zones + + + + + PivotCache Created Version + + + + + Indentation for Compact Axis + + + + + Show Empty Row + + + + + Show Empty Column + + + + + Show Field Headers + + + + + Compact New Fields + + + + + Outline New Fields + + + + + Outline Data Fields + + + + + Compact Data + + + + + Data Fields Published + + + + + Enable Drop Zones + + + + + Stop Immersive UI + + + + + Multiple Field Filters + + + + + Chart Format Id + + + + + Row Header Caption + + + + + Column Header Caption + + + + + Default Sort Order + + + + + MDX Subqueries Supported + + + + + Custom List AutoSort + + + + + + + Reference + + + + + First Header Row + + + + + PivotTable Data First Row + + + + + First Data Column + + + + + Rows Per Page Count + + + + + Columns Per Page + + + + + + + + PivotTable Field + + + + + + Field Count + + + + + + + + Field Items + + + + + AutoSort Scope + + + + + Future Feature Data Storage Area + + + + + + Field Name + + + + + Axis + + + + + Data Field + + + + + Custom Subtotal Caption + + + + + Show PivotField Header Drop Downs + + + + + Hidden Level + + + + + Unique Member Property + + + + + Compact + + + + + All Items Expanded + + + + + Number Format Id + + + + + Outline Items + + + + + Subtotals At Top + + + + + Drag To Row + + + + + Drag To Column + + + + + Multiple Field Filters + + + + + Drag Field to Page + + + + + Field Can Drag to Data + + + + + Drag Off + + + + + Show All Items + + + + + Insert Blank Row + + + + + Server-based Page Field + + + + + Insert Item Page Break + + + + + Auto Show + + + + + Top Auto Show + + + + + Hide New Items + + + + + Measure Filter + + + + + Inclusive Manual Filter + + + + + Items Per Page Count + + + + + Auto Sort Type + + + + + Data Source Sort + + + + + Auto Sort + + + + + Auto Show Rank By + + + + + Show Default Subtotal + + + + + Sum Subtotal + + + + + CountA + + + + + Average + + + + + Max Subtotal + + + + + Min Subtotal + + + + + Product Subtotal + + + + + Count + + + + + StdDev Subtotal + + + + + StdDevP Subtotal + + + + + Variance Subtotal + + + + + VarP Subtotal + + + + + Show Member Property in Cell + + + + + Show Member Property ToolTip + + + + + Show As Caption + + + + + Drill State + + + + + + + + Auto Sort Scope + + + + + + + + + PivotTable Field Item + + + + + + Field Count + + + + + + + Item User Caption + + + + + Item Type + + + + + Hidden + + + + + Character + + + + + Hide Details + + + + + Calculated Member + + + + + Missing + + + + + Child Items + + + + + Item Index + + + + + Expanded + + + + + Drill Across Attributes + + + + + + + + Page Field + + + + + + Page Item Count + + + + + + + + Future Feature Data Storage Area + + + + + + Field + + + + + Item Index + + + + + OLAP Hierarchy Index + + + + + Hierarchy Unique Name + + + + + Hierarchy Display Name + + + + + + + + Data Field Item + + + + + + Data Items Count + + + + + + + + Future Feature Data Storage Area + + + + + + Data Field Name + + + + + Field + + + + + Subtotal + + + + + Show Data As Display Format + + + + + 'Show Data As' Base Field + + + + + 'Show Data As' Base Setting + + + + + Number Format Id + + + + + + + + Row Items + + + + + + Items in a Row Count + + + + + + + + Column Items + + + + + + Column Item Count + + + + + + + + Row / Column Item Index + + + + + + Item Type + + + + + Repeated Items Count + + + + + Data Field Index + + + + + + + Shared Items Index + + + + + + + + Row Items + + + + + + Repeated Items Count + + + + + + + + Field + + + + + + Repeated Items Count + + + + + + + Field Index + + + + + + + + PivotTable Format + + + + + + Formats Count + + + + + + + + Pivot Table Location + + + + + Future Feature Data Storage Area + + + + + + Format Action + + + + + Format Id + + + + + + + + Conditional Formatting + + + + + + Conditional Format Count + + + + + + + + Pivot Areas + + + + + + + Conditional Formatting Scope + + + + + Conditional Formatting Rule Type + + + + + Priority + + + + + + + + Pivot Area + + + + + + Pivot Area Count + + + + + + Conditional Formatting Scope + + + + + Selection + + + + + Data Fields + + + + + Field Intersections + + + + + + + Top N Evaluation Type + + + + + Top N None + + + + + All + + + + + Row Top N + + + + + Column Top N + + + + + + + + + PivotChart Format + + + + + + Format Count + + + + + + + + Pivot Table Location Rule + + + + + + Chart Index + + + + + Pivot Format Id + + + + + Series Format + + + + + + + + OLAP Hierarchy + + + + + + OLAP Hierarchy Count + + + + + + + + OLAP Member Properties + + + + + Members + + + + + Future Feature Data Storage Area + + + + + + Outline New Levels + + + + + Multiple Field Filters + + + + + New Levels Subtotals At Top + + + + + Show In Field List + + + + + Drag To Row + + + + + Drag To Column + + + + + Drag to Page + + + + + Drag To Data + + + + + Drag Off + + + + + Inclusive Manual Filter + + + + + Hierarchy Caption + + + + + + + + Row OLAP Hierarchies + + + + + + Item Count + + + + + + + + Column OLAP Hierarchies + + + + + + Items Count + + + + + + + Hierarchy Usage + + + + + + + + OLAP Member Property + + + + + + OLAP Member Properties Count + + + + + + + OLAP Member Property Unique Name + + + + + Show Cell + + + + + Show Tooltip + + + + + Show As Caption + + + + + Name Length + + + + + Property Name Character Index + + + + + Property Name Length + + + + + Level Index + + + + + Field Index + + + + + + + + Member + + + + + + Item Count + + + + + Hierarchy Level + + + + + + + Hidden Item Name + + + + + + + + OLAP Dimension + + + + + + OLAP Dimensions Count + + + + + + + Measure + + + + + Dimension Name + + + + + Dimension Unique Name + + + + + Dimension Display Name + + + + + + + + OLAP Measure Group + + + + + + Measure Group Count + + + + + + + + OLAP Measure Group + + + + + + Measure Group Count + + + + + + + Measure Group Name + + + + + Measure Group Display Name + + + + + + + Measure Group Id + + + + + Dimension Id + + + + + + + Table Style Name + + + + + Show Row Header Formatting + + + + + Show Table Style Column Header Formatting + + + + + Show Row Stripes + + + + + Show Column Stripes + + + + + Show Last Column + + + + + + + + PivotTable Advanced Filter + + + + + + Pivot Filter Count + + + + + + + + Auto Filter + + + + + + + Field Index + + + + + Member Property Field Id + + + + + Pivot Filter Type + + + + + Evaluation Order + + + + + Pivot Filter Id + + + + + Measure Index + + + + + Measure Field Index + + + + + Pivot Filter Name + + + + + Pivot Filter Description + + + + + Label Pivot + + + + + Label Pivot Filter String Value 2 + + + + + + Show Data As + + + + + Normal Data Type + + + + + Difference + + + + + Percentage Of + + + + + Percentage Difference + + + + + Running Total + + + + + Percentage of Row + + + + + Percent of Column + + + + + Percentage of Total + + + + + Index + + + + + + + PivotItem Type + + + + + Data + + + + + Default + + + + + Sum + + + + + CountA + + + + + Average + + + + + Max + + + + + Min + + + + + Product + + + + + Count + + + + + stdDev + + + + + StdDevP + + + + + Var + + + + + VarP + + + + + Grand Total Item + + + + + Blank Pivot Item + + + + + + + PivotTable Format Types + + + + + Blank + + + + + Formatting + + + + + Drill Type + + + + + Formula Type + + + + + + + Field Sort Type + + + + + Manual Sort + + + + + Ascending + + + + + Descending + + + + + + + Pivot Filter Types + + + + + Unknown + + + + + Count + + + + + Percent + + + + + Sum + + + + + Caption Equals + + + + + Caption Not Equal + + + + + Caption Begins With + + + + + Caption Does Not Begin With + + + + + Caption Ends With + + + + + Caption Does Not End With + + + + + Caption Contains + + + + + Caption Does Not Contain + + + + + Caption Is Greater Than + + + + + Caption Is Greater Than Or Equal To + + + + + Caption Is Less Than + + + + + Caption Is Less Than Or Equal To + + + + + Caption Is Between + + + + + Caption Is Not Between + + + + + Value Equal + + + + + Value Not Equal + + + + + Value Greater Than + + + + + Value Greater Than Or Equal To + + + + + Value Less Than + + + + + Value Less Than Or Equal To + + + + + Value Between + + + + + Value Not Between + + + + + Date Equals + + + + + Date Does Not Equal + + + + + Date Older Than + + + + + Date Older Than Or Equal + + + + + Date Newer Than + + + + + Date Newer Than or Equal To + + + + + Date Between + + + + + Date Not Between + + + + + Tomorrow + + + + + Today + + + + + Yesterday + + + + + Next Week + + + + + This Week + + + + + Last Week + + + + + Next Month + + + + + This Month + + + + + Last Month + + + + + Next Quarter + + + + + This Quarter + + + + + Last Quarter + + + + + Next Year + + + + + This Year + + + + + Last Year + + + + + Year-To-Date + + + + + First Quarter + + + + + Second Quarter + + + + + Third Quarter + + + + + Fourth Quarter + + + + + January + + + + + Dates in February + + + + + Dates in March + + + + + Dates in April + + + + + Dates in May + + + + + Dates in June + + + + + Dates in July + + + + + Dates in August + + + + + Dates in September + + + + + Dates in October + + + + + Dates in November + + + + + Dates in December + + + + + + + + + References + + + + + Future Feature Data Storage Area + + + + + + Field Index + + + + + Rule Type + + + + + Data Only + + + + + Labels Only + + + + + Include Row Grand Total + + + + + Include Column Grand Total + + + + + Cache Index + + + + + Outline + + + + + Offset Reference + + + + + Collapsed Levels Are Subtotals + + + + + Axis + + + + + Field Position + + + + + + Rule Type + + + + + None + + + + + Normal + + + + + Data + + + + + All + + + + + Origin + + + + + Field Button + + + + + Top End + + + + + Top Corner, Trailing Edge + + + + + + + + + Reference + + + + + + Pivot Filter Count + + + + + + + + Field Item + + + + + + + Field Index + + + + + Item Index Count + + + + + Selected + + + + + Positional Reference + + + + + Relative Reference + + + + + Include Default Filter + + + + + Include Sum Filter + + + + + Include CountA Filter + + + + + Include Average Filter + + + + + Include Maximum Filter + + + + + Include Minimum Filter + + + + + Include Product Filter + + + + + Include Count Subtotal + + + + + Include StdDev Filter + + + + + Include StdDevP Filter + + + + + Include Var Filter + + + + + Include VarP Filter + + + + + + + Shared Items Index + + + + + + PivotTable Axis + + + + + Row Axis + + + + + Column Axis + + + + + Include Count Filter + + + + + Values Axis + + + + + + + Query Table + + + + + + + QueryTable Refresh Information + + + + + Future Feature Data Storage Area + + + + + + QueryTable Name + + + + + First Row Column Titles + + + + + Row Numbers + + + + + Disable Refresh + + + + + Background Refresh + + + + + First Background Refresh + + + + + Refresh On Load + + + + + Grow Shrink Type + + + + + Fill Adjacent Formulas + + + + + Remove Data On Save + + + + + Disable Edit + + + + + Preserve Formatting On Refresh + + + + + Adjust Column Width On Refresh + + + + + Intermediate + + + + + Connection Id + + + + + + + + + Query table fields + + + + + Deleted Fields + + + + + Sort State + + + + + Future Feature Data Storage Area + + + + + + Preserve Sort & Filter Layout + + + + + Next Field Id Wrapped + + + + + Headers In Last Refresh + + + + + Minimum Refresh Version + + + + + Next field id + + + + + Columns Left + + + + + Columns Right + + + + + + + + Deleted Field + + + + + + Deleted Fields Count + + + + + + + Deleted Fields Name + + + + + + + + QueryTable Field + + + + + + Column Count + + + + + + + + Future Feature Data Storage Area + + + + + + Field Id + + + + + Name + + + + + Data Bound Column + + + + + Row Numbers + + + + + Fill This Formula On Refresh + + + + + Clipped Column + + + + + Table Column Id + + + + + + Grow Shrink Type + + + + + Insert & Delete On Refresh + + + + + Insert & Clear On Refresh + + + + + Overwrite & Clear On Refresh + + + + + + + Shared String Table + + + + + + + String Item + + + + + + + String Count + + + + + Unique String Count + + + + + + Phonetic Type + + + + + Half-Width Katakana + + + + + Full-Width Katakana + + + + + Hiragana + + + + + No Conversion + + + + + + + Phonetic Alignment Types + + + + + No Control + + + + + Left Alignment + + + + + Center Alignment + + + + + Distributed + + + + + + + + + Text + + + + + + Base Text Start Index + + + + + Base Text End Index + + + + + + + + Run Properties + + + + + Text + + + + + + + + + Font + + + + + Character Set + + + + + Font Family + + + + + Bold + + + + + Italic + + + + + Strike Through + + + + + Outline + + + + + Shadow + + + + + Condense + + + + + Extend + + + + + Text Color + + + + + Font Size + + + + + Underline + + + + + Vertical Alignment + + + + + Font Scheme + + + + + + + + + Text + + + + + Rich Text Run + + + + + Phonetic Run + + + + + Phonetic Properties + + + + + + + + Font Id + + + + + Character Type + + + + + Alignment + + + + + + Revision Headers + + + + + Revisions + + + + + + + Header + + + + + + Last Revision GUID + + + + + Last GUID + + + + + Shared Workbook + + + + + Disk Revisions + + + + + History + + + + + Track Revisions + + + + + Exclusive Mode + + + + + Revision Id + + + + + Version + + + + + Keep Change History + + + + + Protected + + + + + Preserve History + + + + + + + + Revision Row Column Insert Delete + + + + + Revision Cell Move + + + + + Revision Custom View + + + + + Revision Sheet Name + + + + + Revision Insert Sheet + + + + + Revision Cell Change + + + + + Revision Format + + + + + Revision AutoFormat + + + + + Revision Defined Name + + + + + Revision Cell Comment + + + + + Revision Query Table + + + + + Revision Merge Conflict + + + + + + + + Revision Id + + + + + Revision From Rejection + + + + + Revision Undo Rejected + + + + + + + + Sheet Id Map + + + + + Reviewed List + + + + + + + GUID + + + + + Date Time + + + + + Last Sheet Id + + + + + User Name + + + + + Relationship ID + + + + + Minimum Revision Id + + + + + Max Revision Id + + + + + + + + Sheet Id + + + + + + Sheet Count + + + + + + + Sheet Id + + + + + + + + Reviewed + + + + + + Reviewed Revisions Count + + + + + + + revision Id + + + + + + + Index + + + + + Expression + + + + + Reference 3D + + + + + Array Formula + + + + + Value Needed + + + + + Defined Name Formula + + + + + Cross Sheet Move + + + + + Range + + + + + Defined Name + + + + + Cell Reference + + + + + Sheet Id + + + + + + + + Undo + + + + + Revised Row Column + + + + + Revision Format + + + + + + + Sheet Id + + + + + End Of List + + + + + Reference + + + + + User Action + + + + + Edge Deleted + + + + + + + + Undo + + + + + Revision Cell Change + + + + + Revision Format + + + + + + + Sheet Id + + + + + Source + + + + + Destination + + + + + Source Sheet Id + + + + + + + GUID + + + + + User Action + + + + + + + + + + + Sheet Id + + + + + Old Sheet Name + + + + + New Sheet Name + + + + + + + + Sheet Id + + + + + Sheet Name + + + + + Sheet Position + + + + + + + + Old Cell Data + + + + + New Cell Data + + + + + Old Formatting Information + + + + + New Formatting Information + + + + + + + + Sheet Id + + + + + Old Formatting + + + + + Row Column Formatting Change + + + + + Style Revision + + + + + Formatting + + + + + Number Format Id + + + + + Quote Prefix + + + + + Old Quote Prefix + + + + + Phonetic Text + + + + + Old Phonetic Text + + + + + End of List Formula Update + + + + + + + + Formatting + + + + + + + Sheet Id + + + + + Row or Column Formatting Change + + + + + Style + + + + + Sequence Of References + + + + + Start index + + + + + Length + + + + + + + Sheet Id + + + + + + Reference + + + + + + + Sheet Id + + + + + Cell + + + + + GUID + + + + + User Action + + + + + Always Show Comment + + + + + Old Comment + + + + + Comment In Hidden Row + + + + + Hidden Column + + + + + Author + + + + + Original Comment Length + + + + + New Comment Length + + + + + + + + Formula + + + + + Old Formula + + + + + + + + Local Name Sheet Id + + + + + Custom View + + + + + Name + + + + + Function + + + + + Old Function + + + + + Function Group Id + + + + + Old Function Group Id + + + + + Shortcut Key + + + + + Old Short Cut Key + + + + + Named Range Hidden + + + + + Old Hidden + + + + + New Custom Menu + + + + + Old Custom Menu Text + + + + + Description + + + + + Old Description + + + + + New Help Topic + + + + + Old Help Topic + + + + + Status Bar + + + + + Old Status Bar + + + + + Name Comment + + + + + Old Name Comment + + + + + + + + Sheet Id + + + + + + + Sheet Id + + + + + QueryTable Reference + + + + + Field Id + + + + + + Row Column Action Type + + + + + Insert Row + + + + + Delete Row + + + + + Column Insert + + + + + Delete Column + + + + + + + Revision Action Types + + + + + Add + + + + + Delete + + + + + + + Formula Expression Type + + + + + Reference + + + + + Reference Is Error + + + + + Area + + + + + Area Error + + + + + Computed Area + + + + + + + User List + + + + + + + User Information + + + + + + Active User Count + + + + + + + + + + User Revisions GUID + + + + + User Name + + + + + User Id + + + + + Date Time + + + + + + Worksheet + + + + + Chart Sheet + + + + + Dialog Sheet + + + + + + + Sheet Properties + + + + + Macro Sheet Dimensions + + + + + Macro Sheet Views + + + + + Sheet Format Properties + + + + + Column Information + + + + + Sheet Data + + + + + Sheet Protection Options + + + + + AutoFilter + + + + + Sort State + + + + + Data Consolidation + + + + + Custom Sheet Views + + + + + Phonetic Properties + + + + + Conditional Formatting + + + + + Print Options + + + + + Page Margins + + + + + Page Setup Settings + + + + + Header Footer Settings + + + + + Horizontal Page Breaks (Row) + + + + + Vertical Page Breaks + + + + + Custom Properties + + + + + Drawing + + + + + Legacy Drawing Reference + + + + + Legacy Drawing Header Footer + + + + + + Background Image + + + + + Embedded Objects + + + + + Future Feature Data Storage Area + + + + + + + + + Sheet Properties + + + + + Dialog Sheet Views + + + + + Dialog Sheet Format Properties + + + + + Sheet Protection + + + + + Custom Sheet Views + + + + + Print Options + + + + + Page Margins + + + + + Page Setup Settings + + + + + Header & Footer Settings + + + + + Drawing + + + + + Legacy Drawing + + + + + Legacy Drawing Header Footer + + + + + + + Future Feature Data Storage Area + + + + + + + + + Worksheet Properties + + + + + Worksheet Dimensions + + + + + Sheet Views + + + + + Sheet Format Properties + + + + + Column Information + + + + + Sheet Data + + + + + Sheet Calculation Properties + + + + + Sheet Protection + + + + + Protected Ranges + + + + + Scenarios + + + + + AutoFilter + + + + + Sort State + + + + + Data Consolidate + + + + + Custom Sheet Views + + + + + Merge Cells + + + + + Phonetic Properties + + + + + Conditional Formatting + + + + + Data Validations + + + + + Hyperlinks + + + + + Print Options + + + + + Page Margins + + + + + Page Setup Settings + + + + + Header and Footer Settings + + + + + Horizontal Page Breaks + + + + + Vertical Page Breaks + + + + + Custom Properties + + + + + Cell Watch Items + + + + + Ignored Errors + + + + + Smart Tags + + + + + Drawing + + + + + Legacy Drawing + + + + + Legacy Drawing Header Footer + + + + + + Background Image + + + + + + Embedded Controls + + + + + Web Publishing Items + + + + + Table Parts + + + + + Future Feature Data Storage Area + + + + + + + + + Row + + + + + + + + Full Calculation On Load + + + + + + + Base Column Width + + + + + Default Column Width + + + + + Default Row Height + + + + + Custom Height + + + + + Hidden By Default + + + + + Thick Top Border + + + + + Thick Bottom Border + + + + + Maximum Outline Row + + + + + Column Outline Level + + + + + + + + Column Width & Formatting + + + + + + + + Minimum Column + + + + + Maximum Column + + + + + Column Width + + + + + Style + + + + + Hidden Columns + + + + + Best Fit Column Width + + + + + Custom Width + + + + + Show Phonetic Information + + + + + Outline Level + + + + + Collapsed + + + + + + Cell Span Type + + + + + + Cell Spans + + + + + + + + Cell + + + + + Future Feature Data Storage Area + + + + + + Row Index + + + + + Spans + + + + + Style Index + + + + + Custom Format + + + + + Row Height + + + + + Hidden + + + + + Custom Height + + + + + Outline Level + + + + + Collapsed + + + + + Thick Top Border + + + + + Thick Bottom + + + + + Show Phonetic + + + + + + + + Formula + + + + + Cell Value + + + + + Rich Text Inline + + + + + Future Feature Data Storage Area + + + + + + Reference + + + + + Style Index + + + + + Cell Data Type + + + + + Cell Metadata Index + + + + + Value Metadata Index + + + + + Show Phonetic + + + + + + Cell Type + + + + + Boolean + + + + + Date + + + + + Number + + + + + Error + + + + + Shared String + + + + + String + + + + + Inline String + + + + + + + Formula Type + + + + + Normal + + + + + Array Formula + + + + + Table Formula + + + + + Shared Formula + + + + + + + + + Sheet Tab Color + + + + + Outline Properties + + + + + Page Setup Properties + + + + + + Synch Horizontal + + + + + Synch Vertical + + + + + Synch Reference + + + + + Transition Formula Evaluation + + + + + Transition Formula Entry + + + + + Published + + + + + Code Name + + + + + Filter Mode + + + + + Enable Conditional Formatting Calculations + + + + + + + Reference + + + + + + + + Worksheet View + + + + + Future Feature Data Storage Area + + + + + + + + + View Pane + + + + + Selection + + + + + PivotTable Selection + + + + + Future Feature Data Storage Area + + + + + + Window Protection + + + + + Show Formulas + + + + + Show Grid Lines + + + + + Show Headers + + + + + Show Zero Values + + + + + Right To Left + + + + + Sheet Tab Selected + + + + + Show Ruler + + + + + Show Outline Symbols + + + + + Default Grid Color + + + + + Show White Space + + + + + View Type + + + + + Top Left Visible Cell + + + + + Color Id + + + + + Zoom Scale + + + + + Zoom Scale Normal View + + + + + Zoom Scale Page Break Preview + + + + + Zoom Scale Page Layout View + + + + + Workbook View Index + + + + + + + Horizontal Split Position + + + + + Vertical Split Position + + + + + Top Left Visible Cell + + + + + Active Pane + + + + + Split State + + + + + + + + Pivot Area + + + + + + Pane + + + + + Show Header + + + + + Label + + + + + Data Selection + + + + + Extendable + + + + + Selection Count + + + + + Axis + + + + + Dimension + + + + + Start + + + + + Minimum + + + + + Maximum + + + + + Active Row + + + + + Active Column + + + + + Previous Row + + + + + Previous Column Selection + + + + + Click Count + + + + + Relationship Id + + + + + + + Pane + + + + + Active Cell Location + + + + + Active Cell Index + + + + + Sequence of References + + + + + + Pane Types + + + + + Bottom Right Pane + + + + + Top Right Pane + + + + + Bottom Left Pane + + + + + Top Left Pane + + + + + + + + + Break + + + + + + Page Break Count + + + + + Manual Break Count + + + + + + + Id + + + + + Minimum + + + + + Maximum + + + + + Manual Page Break + + + + + Pivot-Created Page Break + + + + + + Sheet View Type + + + + + Normal View + + + + + Page Break Preview + + + + + Page Layout View + + + + + + + + Apply Styles in Outline + + + + + Summary Below + + + + + Summary Right + + + + + Show Outline Symbols + + + + + + + Show Auto Page Breaks + + + + + Fit To Page + + + + + + + + Data Consolidation References + + + + + + Function Index + + + + + Use Starting Column Labels + + + + + Starting Column Labels + + + + + Labels In Top Row + + + + + Link + + + + + + Data Consolidation Functions + + + + + Average + + + + + Count + + + + + CountNums + + + + + Maximum + + + + + Minimum + + + + + Product + + + + + StdDev + + + + + StdDevP + + + + + Sum + + + + + Variance + + + + + VarP + + + + + + + + + Data Consolidation Reference + + + + + + Data Consolidation Reference Count + + + + + + + Reference + + + + + Named Range + + + + + Sheet Name + + + + + relationship Id + + + + + + + + Merged Cell + + + + + + Count + + + + + + + Reference + + + + + + + + Cell Smart Tags + + + + + + + + + Cell Smart Tag + + + + + + Reference + + + + + + + + Smart Tag Properties + + + + + + Smart Tag Type Index + + + + + Deleted + + + + + XML Based + + + + + + + Key Name + + + + + Value + + + + + + + Relationship id + + + + + + + Relationship Id + + + + + + + Relationship ID for Embedded Control Properties + + + + + Left Header for Odd Pages + + + + + Left Header for Even Pages + + + + + Left Header for First Page + + + + + Center Header for Odd Pages + + + + + Center Header for Even Pages + + + + + Center Header for First Page + + + + + Right Header for Odd Pages + + + + + Right Header for Even Pages + + + + + Right Header for First Page + + + + + Left Footer for Odd Pages + + + + + Left Footer for Even Pages + + + + + Left Footer for First Page + + + + + Center Footer for Odd Pages + + + + + Center Footer for Even Pages + + + + + Center Footer for First Page + + + + + Right Footer for Odd Pages + + + + + Right Footer for Even Pages + + + + + Right Footer for First Page + + + + + + + + Custom Sheet View + + + + + + + + + Pane Split Information + + + + + Selection + + + + + Horizontal Page Breaks + + + + + Vertical Page Breaks + + + + + Page Margins + + + + + Print Options + + + + + Page Setup Settings + + + + + Header Footer Settings + + + + + AutoFilter Settings + + + + + + + GUID + + + + + Print Scale + + + + + Color Id + + + + + Show Page Breaks + + + + + Show Formulas + + + + + Show Grid Lines + + + + + Show Headers + + + + + Show Outline Symbols + + + + + Show Zero Values + + + + + Fit To Page + + + + + Print Area Defined + + + + + Filtered List + + + + + Show AutoFitler Drop Down Controls + + + + + Hidden Rows + + + + + Hidden Columns + + + + + Visible State + + + + + Filter + + + + + View Type + + + + + Show Ruler + + + + + Top Left Visible Cell + + + + + + + + Data Validation + + + + + + Disable Prompts + + + + + Top Left Corner (X Coodrinate) + + + + + Top Left Corner (Y Coordinate) + + + + + Data Validation Item Count + + + + + + + + Formula 1 + + + + + Formula 2 + + + + + + Data Validation Type + + + + + Data Validation Error Style + + + + + IME Mode Enforced + + + + + Operator + + + + + Allow Blank + + + + + Show Drop Down + + + + + Show Input Message + + + + + Show Error Message + + + + + Error Alert Text + + + + + Error Message + + + + + Prompt Title + + + + + Input Prompt + + + + + Sequence of References + + + + + + Data Validation Type + + + + + None + + + + + Whole Number + + + + + Decimal + + + + + List + + + + + Date + + + + + Time + + + + + Text Length + + + + + Custom + + + + + + + Data Validation Operator + + + + + Between + + + + + Not Between + + + + + Equal + + + + + Not Equal + + + + + Less Than + + + + + Less Than Or Equal + + + + + Greater Than + + + + + Greater Than Or Equal + + + + + + + Data Validation Error Styles + + + + + Stop Icon + + + + + Warning Icon + + + + + Information Icon + + + + + + + Data Validation IME Mode + + + + + IME Mode Not Controlled + + + + + IME Off + + + + + IME On + + + + + Disabled IME Mode + + + + + Hiragana IME Mode + + + + + Full Katakana IME Mode + + + + + Half-Width Katakana + + + + + Full-Width Alpha-Numeric IME Mode + + + + + Half Alpha IME + + + + + Full Width Hangul + + + + + Half-Width Hangul IME Mode + + + + + + + Conditional Format Type + + + + + Expression + + + + + Cell Is + + + + + Color Scale + + + + + Data Bar + + + + + Icon Set + + + + + Top 10 + + + + + Unique Values + + + + + Duplicate Values + + + + + Contains Text + + + + + Does Not Contain Text + + + + + Begins With + + + + + Ends With + + + + + Contains Blanks + + + + + Contains No Blanks + + + + + Contains Errors + + + + + Contains No Errors + + + + + Time Period + + + + + Above or Below Average + + + + + + + Time Period Types + + + + + Today + + + + + Yesterday + + + + + Tomorrow + + + + + Last 7 Days + + + + + This Month + + + + + Last Month + + + + + Next Month + + + + + This Week + + + + + Last Week + + + + + Next Week + + + + + + + Conditional Format Operators + + + + + Less Than + + + + + Less Than Or Equal + + + + + Equal + + + + + Not Equal + + + + + Greater Than Or Equal + + + + + Greater Than + + + + + Between + + + + + Not Between + + + + + Contains + + + + + Does Not Contain + + + + + Begins With + + + + + Ends With + + + + + + + Conditional Format Value Object Type + + + + + Number + + + + + Percent + + + + + Maximum + + + + + Minimum + + + + + Formula + + + + + Percentile + + + + + + + + + Conditional Formatting Rule + + + + + + + PivotTable Conditional Formatting + + + + + Sequence of Refernces + + + + + + + + Formula + + + + + Color Scale + + + + + Data Bar + + + + + Icon Set + + + + + + + Type + + + + + Differential Formatting Id + + + + + Priority + + + + + Stop If True + + + + + Above Or Below Average + + + + + Top 10 Percent + + + + + Bottom N + + + + + Operator + + + + + Text + + + + + Time Period + + + + + Rank + + + + + StdDev + + + + + Equal Average + + + + + + + + Hyperlink + + + + + + + + Reference + + + + + Relationship Id + + + + + Location + + + + + Tool Tip + + + + + Display String + + + + + + + + + Formula Type + + + + + Always Calculate Array + + + + + Range of Cells + + + + + Data Table 2-D + + + + + Data Table Row + + + + + Input 1 Deleted + + + + + Input 2 Deleted + + + + + Data Table Cell 1 + + + + + Input Cell 2 + + + + + Calculate Cell + + + + + Shared Group Index + + + + + Assigns Value to Name + + + + + + + + + + Conditional Format Value Object + + + + + Color Gradiant Interpolation + + + + + + + + + Conditional Format Value Object + + + + + Data Bar Color + + + + + + Minimum Length + + + + + Maximum Length + + + + + Show Values + + + + + + + + Conditional Formatting Object + + + + + + Icon Set + + + + + Show Value + + + + + Percent + + + + + Reverse Icons + + + + + + + + + + Type + + + + + Value + + + + + Greater Than Or Equal + + + + + + + Left Page Margin + + + + + Right Page Margin + + + + + Top Page Margin + + + + + Bottom Page Margin + + + + + Header Page Margin + + + + + Footer Page Margin + + + + + + + Horizontal Centered + + + + + Vertical Centered + + + + + Print Headings + + + + + Print Grid Lines + + + + + Grid Lines Set + + + + + + + Paper Size + + + + + Paper Height + + + + + Paper Width + + + + + Print Scale + + + + + First Page Number + + + + + Fit To Width + + + + + Fit To Height + + + + + Page Order + + + + + Orientation + + + + + Use Printer Defaults + + + + + Black And White + + + + + Draft + + + + + Print Cell Comments + + + + + Use First Page Number + + + + + Print Error Handling + + + + + Horizontal DPI + + + + + Vertical DPI + + + + + Number Of Copies + + + + + Id + + + + + + Page Order + + + + + Down Then Over + + + + + Over Then Down + + + + + + + Orientation + + + + + Default + + + + + Portrait + + + + + Landscape + + + + + + + Cell Comments + + + + + None + + + + + Print Comments As Displayed + + + + + Print At End + + + + + + + + + Odd Header + + + + + Odd Page Footer + + + + + Even Page Header + + + + + Even Page Footer + + + + + First Page Header + + + + + First Page Footer + + + + + + Different Odd Even Header Footer + + + + + Different First Page + + + + + Scale Header & Footer With Document + + + + + Align Margins + + + + + + Print Errors + + + + + Display Cell Errors + + + + + Show Cell Errors As Blank + + + + + Dash Cell Errors + + + + + NA + + + + + + + + + Scenario + + + + + + Current Scenario + + + + + Last Shown Scenario + + + + + Sequence of References + + + + + + + Legacy Password + + + + + Cryptographic Algorithm Name + + + + + Password Hash Value + + + + + Salt Value for Password Verifier + + + + + Iterations to Run Hashing Algorithm + + + + + Sheet Locked + + + + + Objects Locked + + + + + Scenarios Locked + + + + + Format Cells Locked + + + + + Format Columns Locked + + + + + Format Rows Locked + + + + + Insert Columns Locked + + + + + Insert Rows Locked + + + + + Insert Hyperlinks Locked + + + + + Delete Columns Locked + + + + + Delete Rows Locked + + + + + Select Locked Cells Locked + + + + + Sort Locked + + + + + AutoFilter Locked + + + + + Pivot Tables Locked + + + + + Select Unlocked Cells Locked + + + + + + + + Protected Range + + + + + + + + + Security Descriptor + + + + + + Legacy Password + + + + + Sequence of References + + + + + Name + + + + + Security Descriptor + + + + + Cryptographic Algorithm Name + + + + + Password Hash Value + + + + + Salt Value for Password Verifier + + + + + Iterations to Run Hashing Algorithm + + + + + + + + Input Cells + + + + + + Scenario Name + + + + + Scenario Locked + + + + + Hidden Scenario + + + + + Changing Cell Count + + + + + User Name + + + + + Scenario Comment + + + + + + + Reference + + + + + Deleted + + + + + Undone + + + + + Value + + + + + Number Format Id + + + + + + + + Cell Watch Item + + + + + + + + Reference + + + + + + + + Chart Sheet Properties + + + + + Chart Sheet Views + + + + + Chart Sheet Protection + + + + + Custom Chart Sheet Views + + + + + + + + Drawing + + + + + + Legacy Drawing Reference in Header Footer + + + + + Drawing Reference in Header Footer + + + + + + + + + + + + + + Published + + + + + Code Name + + + + + + + + Chart Sheet View + + + + + + + + + + + + Sheet Tab Selected + + + + + Window Zoom Scale + + + + + Workbook View Id + + + + + Zoom To Fit + + + + + + + Password + + + + + Cryptographic Algorithm Name + + + + + Password Hash Value + + + + + Salt Value for Password Verifier + + + + + Iterations to Run Hashing Algorithm + + + + + Contents + + + + + Objects Locked + + + + + + + Paper Size + + + + + Paper Height + + + + + Paper Width + + + + + First Page Number + + + + + Orientation + + + + + Use Printer Defaults + + + + + Black And White + + + + + Draft + + + + + Use First Page Number + + + + + Horizontal DPI + + + + + Vertical DPI + + + + + Number Of Copies + + + + + Id + + + + + + + + Custom Chart Sheet View + + + + + + + + + + Chart Sheet Page Setup + + + + + + + GUID + + + + + Print Scale + + + + + Visible State + + + + + Zoom To Fit + + + + + + + + Custom Property + + + + + + + + Custom Property Name + + + + + Relationship Id + + + + + + + + Embedded Object + + + + + + + + + Embedded Object Properties + + + + + + Embedded Object ProgId + + + + + Data or View Aspect + + + + + Embedded Object's Link Moniker + + + + + Linked Embedded Object Update + + + + + Auto Load + + + + + Shape Id + + + + + Relationship Id + + + + + + + + + + Locked Flag + + + + + Default Size Flag + + + + + Print Flag + + + + + Disabled Flag + + + + + UI Object Flag + + + + + Automatic Fill Flag + + + + + Automatic Line Flag + + + + + Automatic Size Flag + + + + + Custom Function + + + + + Alternative Text + + + + + Dynamic Data Exchange Flag + + + + + Relationship ID to Embedded Object Data + + + + + + Data View Aspect Type + + + + + Object Display Content + + + + + Object Display Icon + + + + + + + OLE Update Types + + + + + Always Update OLE + + + + + Update OLE On Call + + + + + + + + + Web Publishing Item + + + + + + Web Publishing Items Count + + + + + + + Id + + + + + Destination Bookmark + + + + + Web Source Type + + + + + Source Id + + + + + Source Object Name + + + + + Destination File Name + + + + + Title + + + + + Automatically Publish + + + + + + + + Embedded Control + + + + + + + + + Embedded Control Properties + + + + + + Shape Id + + + + + Relationship Id + + + + + Control Name + + + + + + + + Object Cell Anchor + + + + + + Locked Flag + + + + + Default Size Flag + + + + + Print Flag + + + + + Disabled Flag + + + + + Recalculation Flag + + + + + UI Object Flag + + + + + Automatic Fill Flag + + + + + Automatic Line Flag + + + + + Automatic Size Flag + + + + + Custom Function + + + + + Alternative Text + + + + + Linked Formula + + + + + List Items Source Range + + + + + Image Format + + + + + Relationship ID for Embedded Control Properties + + + + + + Web Source Type + + + + + All Sheet Content + + + + + Print Area + + + + + AutoFilter + + + + + Range + + + + + Chart + + + + + PivotTable + + + + + QueryTable + + + + + Label + + + + + + + + + Ignored Error + + + + + + + + + Sequence of References + + + + + Evaluation Error + + + + + Two Digit Text Year + + + + + Number Stored As Text + + + + + Formula + + + + + Formula Range + + + + + Unlocked Formula + + + + + Empty Cell Reference + + + + + List Data Validation + + + + + Calculated Column + + + + + + Pane State + + + + + Split + + + + + Frozen + + + + + Frozen Split + + + + + + + + + Table Part + + + + + + Count + + + + + + + Relationship Id + + + + + + Metadata + + + + + + + Metadata Types Collection + + + + + Metadata String Store + + + + + MDX Metadata Information + + + + + Future Metadata + + + + + Cell Metadata + + + + + Value Metadata + + + + + Future Feature Storage Area + + + + + + + + + Metadata Type Information + + + + + + Metadata Type Count + + + + + + + Metadata Type Name + + + + + Minimum Supported Version + + + + + Metadata Ghost Row + + + + + Metadata Ghost Column + + + + + Metadata Edit + + + + + Metadata Cell Value Delete + + + + + Metadata Copy + + + + + Metadata Paste All + + + + + Metadata Paste Formulas + + + + + Metadata Paste Special Values + + + + + Metadata Paste Formats + + + + + Metadata Paste Comments + + + + + Metadata Paste Data Validation + + + + + Metadata Paste Borders + + + + + Metadata Paste Column Widths + + + + + Metadata Paste Number Formats + + + + + Metadata Merge + + + + + Meatadata Split First + + + + + Metadata Split All + + + + + Metadata Insert Delete + + + + + Metadata Clear All + + + + + Metadata Clear Formats + + + + + Metadata Clear Contents + + + + + Metadata Clear Comments + + + + + Metadata Formula Assignment + + + + + Metadata Coercion + + + + + Adjust Metadata + + + + + Cell Metadata + + + + + + + + Metadata Block + + + + + + Metadata Block Count + + + + + + + + Metadata Record + + + + + + + + Metadata Record Type Index + + + + + Metadata Record Value Index + + + + + + + + Future Metadata Block + + + + + Future Feature Data Storage Area + + + + + + Metadata Type Name + + + + + Future Metadata Block Count + + + + + + + + Future Feature Storage Area + + + + + + + + + MDX Metadata Record + + + + + + MDX Metadata Record Count + + + + + + + + Tuple MDX Metadata + + + + + Set MDX Metadata + + + + + Member Property MDX Metadata + + + + + KPI MDX Metadata + + + + + + Connection Name Index + + + + + Cube Function Tag + + + + + + MDX Function Type + + + + + Cube Member + + + + + Cube Value + + + + + Cube Set + + + + + Cube Set Count + + + + + Cube Ranked Member + + + + + Cube Member Property + + + + + Cube KPI Member + + + + + + + + + Member Unique Name Index + + + + + + Member Index Count + + + + + Server Formatting Culture Currency + + + + + Server Formatting String Index + + + + + Server Formatting Built-In Number Format Index + + + + + Server Formatting Background Color + + + + + Server Formatting Foreground Color + + + + + Server Formatting Italic Font + + + + + Server Formatting Underline Font + + + + + Server Formatting Strikethrough Font + + + + + Server Formatting Bold Font + + + + + + + + Member Unique Name Index + + + + + + Set Definition Index + + + + + Sort By Member Index Count + + + + + Set Sort Order + + + + + + MDX Set Order + + + + + Unsorted + + + + + Ascending + + + + + Descending + + + + + Alpha Ascending Sort Order + + + + + Alpha Descending Sort Order + + + + + Natural Ascending + + + + + Natural Descending + + + + + + + + Member Unique Name Index + + + + + Property Name Index + + + + + + + Member Unique Name Index + + + + + KPI Index + + + + + KPI Property + + + + + + MDX KPI Property + + + + + Value + + + + + Goal + + + + + Status + + + + + Trend + + + + + Weight + + + + + Current Time Member + + + + + + + + Index Value + + + + + String is a Set + + + + + + + + MDX Metadata String + + + + + + MDX Metadata String Count + + + + + + Single Cells + + + + + + + Table Properties + + + + + + + + + Cell Properties + + + + + Future Feature Data Storage Area + + + + + + Table Id + + + + + Reference + + + + + Connection ID + + + + + + + + Column XML Properties + + + + + Future Feature Data Storage Area + + + + + + Table Field Id + + + + + Unique Table Name + + + + + + + + Future Feature Data Storage Area + + + + + + XML Map Id + + + + + XPath + + + + + XML Data Type + + + + + + Style Sheet + + + + + + + Number Formats + + + + + Fonts + + + + + Fills + + + + + Borders + + + + + Formatting Records + + + + + Cell Formats + + + + + Cell Styles + + + + + Formats + + + + + Table Styles + + + + + Colors + + + + + Future Feature Data Storage Area + + + + + + + + Horizontal Alignment + + + + + Vertical Alignment + + + + + Text Rotation + + + + + Wrap Text + + + + + Indent + + + + + Relative Indent + + + + + Justify Last Line + + + + + Shrink To Fit + + + + + Reading Order + + + + + + Border Line Styles + + + + + None + + + + + Thin Border + + + + + Medium Border + + + + + Dashed + + + + + Dotted + + + + + Thick Line Border + + + + + Double Line + + + + + Hairline Border + + + + + Medium Dashed + + + + + Dash Dot + + + + + Medium Dash Dot + + + + + Dash Dot Dot + + + + + Medium Dash Dot Dot + + + + + Slant Dash Dot + + + + + + + + + Border + + + + + + Border Count + + + + + + + + Leading Edge Border + + + + + Trailing Edge Border + + + + + Leading Edge Border + + + + + Trailing Edge Border + + + + + Top Border + + + + + Bottom Border + + + + + Diagonal + + + + + Vertical Inner Border + + + + + Horizontal Inner Borders + + + + + + Diagonal Up + + + + + Diagonal Down + + + + + Outline + + + + + + + + Color + + + + + + Line Style + + + + + + + Cell Locked + + + + + Hidden Cell + + + + + + + + Font + + + + + + Font Count + + + + + + + + Fill + + + + + + Fill Count + + + + + + + + Pattern + + + + + Gradient + + + + + + + + + Foreground Color + + + + + Background Color + + + + + + Pattern Type + + + + + + + Automatic + + + + + Index + + + + + Alpha Red Green Blue Color Value + + + + + Theme Color + + + + + Tint + + + + + + Pattern Type + + + + + None + + + + + Solid + + + + + Medium Gray + + + + + Dary Gray + + + + + Light Gray + + + + + Dark Horizontal + + + + + Dark Vertical + + + + + Dark Down + + + + + Dark Up + + + + + Dark Grid + + + + + Dark Trellis + + + + + Light Horizontal + + + + + Light Vertical + + + + + Light Down + + + + + Light Up + + + + + Light Grid + + + + + Light Trellis + + + + + Gray 0.125 + + + + + Gray 0.0625 + + + + + + + + + Gradient Stop + + + + + + Gradient Fill Type + + + + + Linear Gradient Degree + + + + + Left Convergence + + + + + Right Convergence + + + + + Top Gradient Convergence + + + + + Bottom Convergence + + + + + + + + Color + + + + + + Gradient Stop Position + + + + + + Gradient Type + + + + + Linear Gradient + + + + + Path + + + + + + + Horizontal Alignment Type + + + + + General Horizontal Alignment + + + + + Left Horizontal Alignment + + + + + Centered Horizontal Alignment + + + + + Right Horizontal Alignment + + + + + Fill + + + + + Justify + + + + + Center Continuous Horizontal Alignment + + + + + Distributed Horizontal Alignment + + + + + + + Vertical Alignment Types + + + + + Align Top + + + + + Centered Vertical Alignment + + + + + Aligned To Bottom + + + + + Justified Vertically + + + + + Distributed Vertical Alignment + + + + + + + + + Number Formats + + + + + + Number Format Count + + + + + + + Number Format Id + + + + + Number Format Code + + + + + + + + Formatting Elements + + + + + + Style Count + + + + + + + + Format + + + + + + Format Count + + + + + + + + Alignment + + + + + Protection + + + + + Future Feature Data Storage Area + + + + + + Number Format Id + + + + + Font Id + + + + + Fill Id + + + + + Border Id + + + + + Format Id + + + + + Quote Prefix + + + + + Pivot Button + + + + + Apply Number Format + + + + + Apply Font + + + + + Apply Fill + + + + + Apply Border + + + + + Apply Alignment + + + + + Apply Protection + + + + + + + + Cell Style + + + + + + Style Count + + + + + + + + Future Feature Data Storage Area + + + + + + User Defined Cell Style + + + + + Format Id + + + + + Built-In Style Id + + + + + Outline Style + + + + + Hidden Style + + + + + Custom Built In + + + + + + + + Formatting + + + + + + Format Count + + + + + + + + Font Properties + + + + + Number Format + + + + + Fill + + + + + Alignment + + + + + Border Properties + + + + + Protection Properties + + + + + Future Feature Data Storage Area + + + + + + + Number Format Id + + + + + + Font Id + + + + + + Fill Id + + + + + + Border Id + + + + + + Cell Style Format Id + + + + + + Format Id + + + + + + + + Color Indexes + + + + + MRU Colors + + + + + + + + + RGB Color + + + + + + + + + Color + + + + + + + + Alpha Red Green Blue + + + + + + + + Table Style + + + + + + Table Style Count + + + + + Default Table Style + + + + + Default Pivot Style + + + + + + + + Table Style + + + + + + Table Style Name + + + + + Pivot Style + + + + + Table + + + + + Table Style Count + + + + + + + Table Style Type + + + + + Band Size + + + + + Formatting Id + + + + + + Table Style Type + + + + + Whole Table Style + + + + + Header Row Style + + + + + Total Row Style + + + + + First Column Style + + + + + Last Column Style + + + + + First Row Stripe Style + + + + + Second Row Stripe Style + + + + + First Column Stripe Style + + + + + Second Column Stipe Style + + + + + First Header Row Style + + + + + Last Header Style + + + + + First Total Row Style + + + + + Last Total Row Style + + + + + First Subtotal Column Style + + + + + Second Subtotal Column Style + + + + + Third Subtotal Column Style + + + + + First Subtotal Row Style + + + + + Second Subtotal Row Style + + + + + Third Subtotal Row Style + + + + + Blank Row Style + + + + + First Column Subheading Style + + + + + Second Column Subheading Style + + + + + Third Column Subheading Style + + + + + First Row Subheading Style + + + + + Second Row Subheading Style + + + + + Third Row Subheading Style + + + + + Page Field Labels Style + + + + + Page Field Values Style + + + + + + + + Value + + + + + + + Value + + + + + + + Value + + + + + + + String Value + + + + + + + Value + + + + + + + Font Scheme + + + + + + Font scheme Styles + + + + + None + + + + + Major Font + + + + + Minor Font + + + + + + + + Underline Value + + + + + + Underline Types + + + + + Single Underline + + + + + Double Underline + + + + + Accounting Single Underline + + + + + Accounting Double Underline + + + + + None + + + + + + + + + Font Name + + + + + Character Set + + + + + Font Family + + + + + Bold + + + + + Italic + + + + + Strike Through + + + + + Outline + + + + + Shadow + + + + + Condense + + + + + Extend + + + + + Text Color + + + + + Font Size + + + + + Underline + + + + + Text Vertical Alignment + + + + + Scheme + + + + + + + + Auto Format Id + + + + + Apply Number Formats + + + + + Apply Border Formats + + + + + Apply Font Formats + + + + + Apply Pattern Formats + + + + + Apply Alignment Formats + + + + + Apply Width / Height Formats + + + + + + External Reference + + + + + + + External Workbook + + + + + DDE Connection + + + + + Generic Object Link Connection + + + + + + + + + + Supporting Workbook Sheet Names + + + + + Named Links + + + + + Cached Worksheet Data + + + + + + Relationship to supporting book file path + + + + + + + + Sheet Name + + + + + + + + Sheet Name Value + + + + + + + + Defined Name + + + + + + + + Defined Name + + + + + Refers To + + + + + Sheet Id + + + + + + + + External Sheet Data Set + + + + + + + + + Row + + + + + + Sheet Id + + + + + Last Refresh Resulted in Error + + + + + + + + External Cell Data + + + + + + Row + + + + + + + + Value + + + + + + Reference + + + + + Type + + + + + Value Metadata + + + + + + + + DDE Items Collection + + + + + + Service name + + + + + Topic for DDE server + + + + + + + + DDE Item definition + + + + + + + + + DDE Name Values + + + + + + DDE Name + + + + + Object Linking TechnologyE + + + + + Advise + + + + + Data is an Image + + + + + + + + Value + + + + + + Rows + + + + + Columns + + + + + + + + DDE Link Value + + + + + + DDE Value Type + + + + + + DDE Value Types + + + + + Nil + + + + + Boolean + + + + + Real Number + + + + + Error + + + + + String + + + + + + + + + Object Link Items + + + + + + Object Link Relationship + + + + + Object Link Identifier + + + + + + + + Object Link Item + + + + + + + + Object Name + + + + + Icon + + + + + Advise + + + + + Object is an Image + + + + + + Table + + + + + + + Table AutoFilter + + + + + Sort State + + + + + Table Columns + + + + + Table Style + + + + + Future Feature Data Storage Area + + + + + + Table Id + + + + + Name + + + + + Table Name + + + + + Table Comment + + + + + Reference + + + + + Table Type + + + + + Header Row Count + + + + + Insert Row Showing + + + + + Insert Row Shift + + + + + Totals Row Count + + + + + Totals Row Shown + + + + + Published + + + + + Header Row Format Id + + + + + Data Area Format Id + + + + + Totals Row Format Id + + + + + Header Row Border Format Id + + + + + Table Border Format Id + + + + + Totals Row Border Format Id + + + + + Header Row Style + + + + + Data Style Name + + + + + Totals Row Style + + + + + Connection ID + + + + + + Table Type + + + + + Worksheet + + + + + XML + + + + + Query Table + + + + + + + + Style Name + + + + + Show First Column + + + + + Show Last Column + + + + + Show Row Stripes + + + + + Show Column Stripes + + + + + + + + Table Column + + + + + + Column Count + + + + + + + + Calculated Column Formula + + + + + Totals Row Formula + + + + + XML Column Properties + + + + + Future Feature Data Storage Area + + + + + + Table Field Id + + + + + Unique Name + + + + + Column name + + + + + Totals Row Function + + + + + Totals Row Label + + + + + Query Table Field Id + + + + + Header Row Cell Format Id + + + + + Data & Insert Row Format Id + + + + + Totals Row Format Id + + + + + Header Row Cell Style + + + + + Data Area Style Name + + + + + Totals Row Style Name + + + + + + + + + Array + + + + + + + + Totals Row Function Types + + + + + None + + + + + Sum + + + + + Minimum + + + + + Maximum + + + + + Average + + + + + Non Empty Cell Count + + + + + Count Numbers + + + + + StdDev + + + + + Var + + + + + Custom Formula + + + + + + + + + Future Feature Data Storage Area + + + + + + XML Map Id + + + + + XPath + + + + + Denormalized + + + + + XML Data Type + + + + + + XML Data Types + + + + + + Volatile Dependency Types + + + + + + + Volatile Dependency Type + + + + + + + + + + Main + + + + + + Type + + + + + + + + Topic + + + + + + First String + + + + + + + + Topic Value + + + + + Strings in Subtopic + + + + + References + + + + + + Type + + + + + + + Reference + + + + + Sheet Id + + + + + + Volatile Dependency Types + + + + + Real Time Data + + + + + OLAP Formulas + + + + + + + Volatile Dependency Value Types + + + + + Boolean + + + + + Real Number + + + + + Error + + + + + String + + + + + + + Workbook + + + + + + + File Version + + + + + File Sharing + + + + + Workbook Properties + + + + + Workbook Protection + + + + + Workbook Views + + + + + Sheets + + + + + Function Groups + + + + + External References + + + + + Defined Names + + + + + Calculation Properties + + + + + Embedded Object Size + + + + + Custom Workbook Views + + + + + PivotCaches + + + + + Smart Tag Properties + + + + + Smart Tag Types + + + + + Web Publishing Properties + + + + + File Recovery Properties + + + + + Web Publish Objects + + + + + Future Feature Data Storage Area + + + + + + Document Conformance Class + + + + + + + Application Name + + + + + Last Edited Version + + + + + Lowest Edited Version + + + + + Build Version + + + + + Code Name + + + + + + + + Workbook View + + + + + + + + + + + Visibility + + + + + Minimized + + + + + Show Horizontal Scroll + + + + + Show Vertical Scroll + + + + + Show Sheet Tabs + + + + + Upper Left Corner (X Coordinate) + + + + + Upper Left Corner (Y Coordinate) + + + + + Window Width + + + + + Window Height + + + + + Sheet Tab Ratio + + + + + First Sheet + + + + + Active Sheet Index + + + + + AutoFilter Date Grouping + + + + + + Visibility Types + + + + + Visible + + + + + Hidden + + + + + Very Hidden + + + + + + + + + Custom Workbook View + + + + + + + + + + + Custom View Name + + + + + Custom View GUID + + + + + Auto Update + + + + + Merge Interval + + + + + Changes Saved Win + + + + + Only Synch + + + + + Personal View + + + + + Include Print Settings + + + + + Include Hidden Rows & Columns + + + + + Maximized + + + + + Minimized + + + + + Show Horizontal Scroll + + + + + Show Vertical Scroll + + + + + Show Sheet Tabs + + + + + Top Left Corner (X Coordinate) + + + + + Top Left Corner (Y Coordinate) + + + + + Window Width + + + + + Window Height + + + + + Sheet Tab Ratio + + + + + Active Sheet in Book View + + + + + Show Formula Bar + + + + + Show Status Bar + + + + + Show Comments + + + + + Show Objects + + + + + + Comment Display Types + + + + + No Comments + + + + + Show Comment Indicator + + + + + Show Comment & Indicator + + + + + + + Object Display Types + + + + + All + + + + + Show Placeholders + + + + + None + + + + + + + + + Sheet Information + + + + + + + + Sheet Name + + + + + Sheet Tab Id + + + + + Visible State + + + + + Relationship Id + + + + + + Sheet Visibility Types + + + + + Visible + + + + + Hidden + + + + + Very Hidden + + + + + + + + Date 1904 + + + + + Date Compatibility + + + + + Show Objects + + + + + Show Border Unselected Table + + + + + Filter Privacy + + + + + Prompted Solutions + + + + + Show Ink Annotations + + + + + Create Backup File + + + + + Save External Link Values + + + + + Update Links Behavior + + + + + Code Name + + + + + Hide Pivot Field List + + + + + Show Pivot Chart Filter + + + + + Allow Refresh Query + + + + + Publish Items + + + + + Check Compatibility On Save + + + + + Auto Compress Pictures + + + + + Refresh all Connections on Open + + + + + Default Theme Version + + + + + + Update Links Behavior Types + + + + + User Set + + + + + Never Update Links + + + + + Always Update Links + + + + + + + + Embed SmartTags + + + + + Show Smart Tags + + + + + + Smart Tag Display Types + + + + + All + + + + + None + + + + + No Smart Tag Indicator + + + + + + + + + Smart Tag Type + + + + + + + + SmartTag Namespace URI + + + + + Name + + + + + Smart Tag URL + + + + + + + Auto Recover + + + + + Crash Save + + + + + Data Extract Load + + + + + Repair Load + + + + + + + Calculation Id + + + + + Calculation Mode + + + + + Full Calculation On Load + + + + + Reference Mode + + + + + Calculation Iteration + + + + + Iteration Count + + + + + Iterative Calculation Delta + + + + + Full Precision Calculation + + + + + Calc Completed + + + + + Calculate On Save + + + + + Concurrent Calculations + + + + + Concurrent Thread Manual Count + + + + + Force Full Calculation + + + + + + Calculation Mode + + + + + Manual Calculation Mode + + + + + Automatic + + + + + Automatic Calculation (No Tables) + + + + + + + Reference Mode + + + + + A1 Mode + + + + + R1C1 Reference Mode + + + + + + + + + Defined Name + + + + + + + + + + Defined Name + + + + + Comment + + + + + Custom Menu Text + + + + + Description + + + + + Help + + + + + Status Bar + + + + + Local Name Sheet Id + + + + + Hidden Name + + + + + Function + + + + + Procedure + + + + + External Function + + + + + Function Group Id + + + + + Shortcut Key + + + + + Publish To Server + + + + + Workbook Parameter (Server) + + + + + + + + + + External Reference + + + + + + + + Relationship Id + + + + + + + Relationship Id + + + + + + + + PivotCache + + + + + + + + PivotCache Id + + + + + Relationship Id + + + + + + + Read Only Recommended + + + + + User Name + + + + + Write Reservation Password + + + + + Cryptographic Algorithm Name + + + + + Password Hash Value + + + + + Salt Value for Password Verifier + + + + + Iterations to Run Hashing Algorithm + + + + + + + Reference + + + + + + + Legacy Workbook Password + + + + + Workbook Password Character Set + + + + + Legacy Revisions Password + + + + + Revisions Password Character Set + + + + + Lock Structure + + + + + Lock Windows + + + + + Lock Revisions + + + + + Cryptographic Algorithm Name + + + + + Password Hash Value + + + + + Salt Value for Password Verifier + + + + + Iterations to Run Hashing Algorithm + + + + + Cryptographic Algorithm Name + + + + + Password Hash Value + + + + + Salt Value for Password Verifier + + + + + Iterations to Run Hashing Algorithm + + + + + + + Use CSS + + + + + Thicket + + + + + Enable Long File Names + + + + + VML in Browsers + + + + + Allow PNG + + + + + Target Screen Size + + + + + DPI + + + + + Code Page + + + + + Character Set + + + + + + Target Screen Size Types + + + + + 544 x 376 Resolution + + + + + 640 x 480 Resolution + + + + + 720 x 512 Resolution + + + + + 800 x 600 Resolution + + + + + 1024 x 768 Resolution + + + + + 1152 x 882 Resolution + + + + + 1152 x 900 Resolution + + + + + 1280 x 1024 Resolution + + + + + 1600 x 1200 Resolution + + + + + 1800 x 1440 Resolution + + + + + 1920 x 1200 Resolution + + + + + + + + + Function Group + + + + + + Built-in Function Group Count + + + + + + + Name + + + + + + + + Web Publishing Object + + + + + + Count + + + + + + + Id + + + + + Div Id + + + + + Source Object + + + + + Destination File + + + + + Title + + + + + Auto Republish + + + diff --git a/tests/resources/schema/ooxml/vml-main.xsd b/tests/resources/schema/ooxml/vml-main.xsd new file mode 100644 index 0000000000..6db7557999 --- /dev/null +++ b/tests/resources/schema/ooxml/vml-main.xsd @@ -0,0 +1,1679 @@ + + + + + + + + + + + + + Unique Identifier + + + + + + + Shape Styling Properties + + + + + + + Shape Type Reference + + + + + + + Adjustment Parameters + + + + + + + Edge Path + + + + + + + Shape Fill Toggle + + + + + Fill Color + + + + + + + Image Transparency Color + + + + + + + VML Extension Handling Behavior + + + + + + + + + Hyperlink Target + + + + + Hyperlink Display Target + + + + + CSS Reference + + + + + Shape Title + + + + + Alternate Text + + + + + Coordinate Space Size + + + + + Coordinate Space Origin + + + + + Shape Bounding Polygon + + + + + Print Toggle + + + + + + + + + Fill Color Opacity + + + + + Shape Stroke Toggle + + + + + Shape Stroke Color + + + + + Shape Stroke Weight + + + + + Inset Border From Path + + + + + + + Optional String + + + + + Shape Handle Toggle + + + + + Regroup ID + + + + + Double-click Notification Toggle + + + + + Button Behavior Toggle + + + + + Hide Script Anchors + + + + + Graphical Bullet + + + + + Horizontal Rule Toggle + + + + + Horizontal Rule Standard Display Toggle + + + + + Horizontal Rule 3D Shading Toggle + + + + + Horizontal Rule Length Percentage + + + + + Horizontal Rule Alignment + + + + + Allow in Table Cell + + + + + Allow Shape Overlap + + + + + Exists In Master Slide + + + + + Border Top Color + + + + + Border Left Color + + + + + Bottom Border Color + + + + + Border Right Color + + + + + Diagram Node Layout Identifier + + + + + Diagram Node Identifier + + + + + Diagram Node Recent Layout Identifier + + + + + Text Inset Mode + + + + + + + Optional Number + + + + + Shape Connector Type + + + + + Black-and-White Mode + + + + + Pure Black-and-White Mode + + + + + Normal Black-and-White Mode + + + + + Force Dashed Outline + + + + + Embedded Object Icon Toggle + + + + + Embedded Object Toggle + + + + + Relative Resize Toggle + + + + + Clip to Wrapping Polygon + + + + + Clipping Toggle + + + + + + + + + + + + + + + Image Source + + + + + Image Left Crop + + + + + Image Top Crop + + + + + Image Right Crop + + + + + Image Bottom Crop + + + + + Image Intensity + + + + + Image Brightness + + + + + Image Gamma Correction + + + + + Image Grayscale Toggle + + + + + Image Bilevel Toggle + + + + + + + Stroke Toggle + + + + + Stroke Weight + + + + + Stroke Color + + + + + Stroke Opacity + + + + + Stroke Line Style + + + + + Miter Joint Limit + + + + + Line End Join Style + + + + + Line End Cap + + + + + Stroke Dash Pattern + + + + + Stroke Image Style + + + + + Stroke Image Location + + + + + Stroke Image Aspect Ratio + + + + + Stroke Image Size + + + + + Stoke Image Alignment + + + + + Stroke Alternate Pattern Color + + + + + Line Start Arrowhead + + + + + Line Start Arrowhead Width + + + + + Line Start Arrowhead Length + + + + + Line End Arrowhead + + + + + Line End Arrowhead Width + + + + + Line End Arrowhead Length + + + + + Original Image Reference + + + + + Alternate Image Reference + + + + + Stroke Title + + + + + Force Dashed Outline + + + + + Relationship + + + + + Inset Border From Path + + + + + Relationship to Part + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shape Definition + + + + + Shape Template + + + + + Shape Group + + + + + Document Background + + + + + + + + + + + + + + + + + Encoded Package + + + + + Storage for Alternate Math Content + + + + + + + + + + + + + + + Master Element Toggle + + + + + + + + + + + + + + + + + + + + + + + + Group Diagram Type + + + + + Table Properties + + + + + Table Row Height Limits + + + + + + + + + + + + Black-and-White Mode + + + + + Pure Black-and-White Mode + + + + + Normal Black-and-White Mode + + + + + Target Screen Size + + + + + + Shape Fill Properties + + + + + Set of Formulas + + + + + Set of Handles + + + + + Image Data + + + + + Shape Path + + + + + Text Box + + + + + Shadow Effect + + + + + Line Stroke Settings + + + + + Text Layout Path + + + + + + + + + + Fill Type + + + + + Fill Toggle + + + + + Primary Color + + + + + Primary Color Opacity + + + + + Secondary Color + + + + + Fill Image Source + + + + + Hyperlink Target + + + + + Alternate Image Reference Location + + + + + Fill Image Size + + + + + Fill Image Origin + + + + + Fill Image Position + + + + + Image Aspect Ratio + + + + + Intermediate Colors + + + + + Gradient Angle + + + + + Align Image With Shape + + + + + Gradient Center + + + + + Radial Gradient Size + + + + + Radial Gradient Center + + + + + Gradient Fill Method + + + + + Detect Mouse Click + + + + + Title + + + + + Secondary Color Opacity + + + + + Recolor Fill as Picture + + + + + Rotate Fill with Shape + + + + + Relationship to Part + + + + + Relationship to Part + + + + + + + + Single Formula + + + + + + + + Equation + + + + + + + + Shape Handle + + + + + + + + Handle Position + + + + + Handle Polar Center + + + + + Handle Coordinate Mapping + + + + + Invert Handle's X Position + + + + + Invert Handle's Y Position + + + + + Handle Inversion Toggle + + + + + Handle X Position Range + + + + + Handle Y Position Range + + + + + Handle Polar Radius Range + + + + + + + + + + Embossed Color + + + + + Black Recoloring Color + + + + + Original Image Reference + + + + + Alternate Image Reference + + + + + Image Data Title + + + + + Image Embedded Object ID + + + + + Detect Mouse Click + + + + + Movie Reference + + + + + Relationship to Part + + + + + Explicit Relationship to Image Data + + + + + Explicit Relationship to Alternate Image Data + + + + + Explicit Relationship to Hyperlink Target + + + + + + + + Path Definition + + + + + Limo Stretch Point + + + + + Text Box Bounding Box + + + + + Shape Fill Toggle + + + + + Stroke Toggle + + + + + Shadow Toggle + + + + + Arrowhead Display Toggle + + + + + Gradient Shape Toggle + + + + + Text Path Toggle + + + + + Inset Stroke From Path Flag + + + + + Connection Point Type + + + + + Connection Points + + + + + Connection Point Connect Angles + + + + + Extrusion Toggle + + + + + + + + Shadow Toggle + + + + + Shadow Type + + + + + Shadow Transparency + + + + + Shadow Primary Color + + + + + Shadow Opacity + + + + + Shadow Primary Offset + + + + + Shadow Secondary Color + + + + + Shadow Secondary Offset + + + + + Shadow Origin + + + + + Shadow Perspective Matrix + + + + + + + + + + + + + + + + + + + + + + + Text Box Inset + + + + + Text Box Single-Click Selection Toggle + + + + + Text Inset Mode + + + + + + + + + Text Path Toggle + + + + + Shape Fit Toggle + + + + + Path Fit Toggle + + + + + Text Path Trim Toggle + + + + + Text X-Scaling + + + + + Text Path Text + + + + + + Arc Segment + + + + + Bezier Curve + + + + + Image File + + + + + Line + + + + + Oval + + + + + Multiple Path Line + + + + + Rectangle + + + + + Rounded Rectangle + + + + + + + + + + + Starting Angle + + + + + Ending Angle + + + + + + + + + + + + Curve Starting Point + + + + + First Curve Control Point + + + + + Second Curve Control Point + + + + + Curve Ending Point + + + + + + + + + + + + + + + + + + + + Line Start + + + + + Line End Point + + + + + + + + + + + + + + + + + + + + Points for Compound Line + + + + + + + + + + + + + + + + + + + Rounded Corner Arc Size + + + + + + VML Extension Handling Behaviors + + + + + Not renderable + + + + + Editable + + + + + Renderable + + + + + + + Shape Fill Type + + + + + Solid Fill + + + + + Linear Gradient + + + + + Radial Gradient + + + + + Tiled Image + + + + + Image Pattern + + + + + Stretch Image to Fit + + + + + + + Gradient Fill Computation Type + + + + + No Gradient Fill + + + + + Linear Fill + + + + + Sigma Fill + + + + + Application Default Fill + + + + + Linear Sigma Fill + + + + + + + Shadow Type + + + + + Single Shadow + + + + + Double Shadow + + + + + Embossed Shadow + + + + + Perspective Shadow + + + + + + + Stroke Line Style + + + + + Single Line + + + + + Two Thin Lines + + + + + Thin Line Outside Thick Line + + + + + Thick Line Outside Thin Line + + + + + Thck Line Between Thin Lines + + + + + + + Line Join Type + + + + + Round Joint + + + + + Bevel Joint + + + + + Miter Joint + + + + + + + Stroke End Cap Type + + + + + Flat End + + + + + Square End + + + + + Round End + + + + + + + Stroke Arrowhead Length + + + + + Short Arrowhead + + + + + Medium Arrowhead + + + + + Long Arrowhead + + + + + + + Stroke Arrowhead Width + + + + + Narrow Arrowhead + + + + + Medium Arrowhead + + + + + Wide Arrowhead + + + + + + + Stroke Arrowhead Type + + + + + No Arrowhead + + + + + Block Arrowhead + + + + + Classic Arrowhead + + + + + Oval Arrowhead + + + + + Diamond Arrowhead + + + + + Open Arrowhead + + + + + + + Image Scaling Behavior + + + + + Ignore Aspect Ratio + + + + + At Most + + + + + At Least + + + + + + + Shape Grouping Types + + + + + Shape Canvas + + + + + Organization Chart Diagram + + + + + Radial Diagram + + + + + Cycle Diagram + + + + + Pyramid Diagram + + + + + Venn Diagram + + + + + Bullseye Diagram + + + + + diff --git a/tests/resources/schema/ooxml/vml-officeDrawing.xsd b/tests/resources/schema/ooxml/vml-officeDrawing.xsd new file mode 100644 index 0000000000..3877d69a53 --- /dev/null +++ b/tests/resources/schema/ooxml/vml-officeDrawing.xsd @@ -0,0 +1,1614 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New Shape Defaults + + + + + Shape Layout Properties + + + + + Digital Signature Line + + + + + Ink + + + + + VML Diagram + + + + + Storage for Alternate Math Content + + + + + + + + + + + + + Callout + + + + + Shape Protections + + + + + Most Recently Used Colors + + + + + UI Default Colors + + + + + + + Shape ID Optional Storage + + + + + Shape Styling Properties + + + + + Shape Fill Toggle + + + + + Default Fill Color + + + + + Shape Stroke Toggle + + + + + Shape Stroke Color + + + + + Allow in Table Cell + + + + + + + + Ink Data + + + + + Annotation Flag + + + + + Content Type + + + + + + + + Signature Line Flag + + + + + Unique ID + + + + + Signature Provider ID + + + + + Use Signing Instructions Flag + + + + + User-specified Comments Flag + + + + + Show Signed Date Flag + + + + + Suggested Signer Line 1 + + + + + Suggested Signer Line 2 + + + + + Suggested Signer E-mail Address + + + + + Instructions for Signing + + + + + Additional Signature Information + + + + + Signature Provider Download URL + + + + + + + + Shape ID Map + + + + + Shape Grouping History + + + + + Rule Set + + + + + + + + + + Shape IDs + + + + + + + + Regroup Entry + + + + + + + + + New Group ID + + + + + Old Group ID + + + + + + + + Rule + + + + + + + + + + Shape Reference + + + + + + Rule ID + + + + + Rule Type + + + + + Alignment Rule Type + + + + + Rule Shape Reference + + + + + + + Start Point Connection Flag + + + + + End Point Connection Flag + + + + + Proxy Shape Reference + + + + + Connection Location + + + + + + + + Diagram Relationship Table + + + + + + + Diagram Style Options + + + + + Diagram Automatic Format + + + + + Diagram Reverse Direction + + + + + Diagram Automatic Layout + + + + + Diagram Layout X Scale + + + + + Diagram Layout Y Scale + + + + + Diagram Font Size + + + + + Diagram Layout Extents + + + + + Diagram Base Font Size + + + + + + + + + + Content Type of Alternate Math Content + + + + + + Alternate Math Content Type + + + + + + + + Diagram Relationship + + + + + + + + + + Diagram Relationship Source Shape + + + + + Diagram Relationship Destination Shape + + + + + Diagram Relationship Center Shape + + + + + + + + Recent colors + + + + + + + + Default stroke color + + + + + Default fill color + + + + + Default shadow color + + + + + Default extrusion color + + + + + + Skew Transform + + + + + 3D Extrusion + + + + + + + Embedded OLE Object + + + + + Complex + + + + + Text Box Left Stroke + + + + + Text Box Top Stroke + + + + + Text Box Right Stroke + + + + + Text Box Bottom Stroke + + + + + Text Box Interior Stroke + + + + + Shape Clipping Path + + + + + Shape Fill Extended Properties + + + + + + + Skew ID + + + + + Skew Toggle + + + + + Skew Offset + + + + + Skew Origin + + + + + Skew Perspective Matrix + + + + + + + + Extrusion Toggle + + + + + Extrusion Type + + + + + Extrusion Render Mode + + + + + Extrusion Viewpoint Origin + + + + + Extrusion Viewpoint + + + + + Extrusion Direction + + + + + Extrusion Skew Angle + + + + + Extrusion Skew + + + + + Forward Extrusion + + + + + Backward Extrusion Depth + + + + + Rotation Axis + + + + + Rotation Around Axis + + + + + Rotation Toggle + + + + + Center of Rotation Toggle + + + + + Rotation Center + + + + + X-Y Rotation Angle + + + + + Extrusion Color Mode + + + + + Extrusion Color + + + + + Shininess + + + + + Specularity + + + + + Diffuse Reflection + + + + + Metallic Surface Toggle + + + + + Simulated Bevel + + + + + Faceting Quality + + + + + Shape Face Lighting Toggle + + + + + Brightness + + + + + Primary Light Position + + + + + Primary Light Intensity + + + + + Primary Light Harshness Toggle + + + + + Secondary Light Position + + + + + Secondary Light Intensity + + + + + Secondary Light Harshness Toggle + + + + + + + + Callout toggle + + + + + Callout type + + + + + Callout gap + + + + + Callout angle + + + + + Callout automatic drop toggle + + + + + Callout drop position + + + + + Callout drop distance + + + + + Callout length toggle + + + + + Callout length + + + + + Callout accent bar toggle + + + + + Callout text border toggle + + + + + Callout flip x + + + + + Callout flip y + + + + + + + + Position Lock + + + + + Selection Lock + + + + + Grouping Lock + + + + + Ungrouping Lock + + + + + Rotation Lock + + + + + Cropping Lock + + + + + Vertices Lock + + + + + Handles Lock + + + + + Text Lock + + + + + Aspect Ratio Lock + + + + + AutoShape Type Lock + + + + + + + + Embedded Object Alternate Image Request + + + + + Embedded Object Cannot Be Refreshed + + + + + WordprocessingML Field Switches + + + + + + Embedded Object Type + + + + + Object Link Identifier + + + + + Embedded Object Shape + + + + + Embedded Object Representation + + + + + Unique ID for Embedded Object + + + + + Relationship + + + + + Update Mode for Embedded Object + + + + + + + + + + + Stroke Toggle + + + + + Stroke Weight + + + + + Stroke Color + + + + + Stroke Alternate Pattern Color + + + + + Stroke Opacity + + + + + Stroke Line Style + + + + + Miter Joint Limit + + + + + Line End Join Style) + + + + + Line End Cap + + + + + Stroke Dash Pattern + + + + + Inset Border From Path + + + + + Stroke Image Style + + + + + Stroke Image Location + + + + + Stroke Image Aspect Ratio + + + + + Stroke Image Size + + + + + Stoke Image Alignment + + + + + Line Start Arrowhead + + + + + Line Start Arrowhead Width + + + + + Line Start Arrowhead Length + + + + + Line End Arrowhead + + + + + Line End Arrowhead Width + + + + + Line End Arrowhead Length + + + + + Original Image Reference + + + + + Alternate Image Reference + + + + + Stroke Title + + + + + Force Dashed Outline + + + + + + + Path Definition + + + + + + + + Fill Type + + + + + + Rule Type + + + + + Arc Rule + + + + + Callout Rule + + + + + Connector Rule + + + + + Alignment Rule + + + + + + + Alignment Type + + + + + Top Alignment + + + + + Middle Alignment + + + + + Bottom Alignment + + + + + Left Alignment + + + + + Center Alignment + + + + + Right Alignment + + + + + + + Black And White Modes + + + + + Color + + + + + Automatic + + + + + Grayscale + + + + + Light grayscale + + + + + Inverse Grayscale + + + + + Gray Outlines + + + + + Black And White + + + + + Black + + + + + White + + + + + Hide Object When Displayed in Black and White + + + + + Do Not Show + + + + + Black Text And Lines + + + + + + + Screen Sizes Type + + + + + 544x376 pixels + + + + + 640x480 pixels + + + + + 720x512 pixels + + + + + 800x600 pixels + + + + + 1024x768 pixels + + + + + 1152x862 pixels + + + + + + + Inset Margin Type + + + + + Automatic Margins + + + + + Custom Margins + + + + + + + Extrusion Color Types + + + + + Use Shape Fill Color + + + + + Use Custom Color + + + + + + + Content Type + + + + + + Diagram Layout Type + + + + + Top-down Centered + + + + + Hanging Both Sides + + + + + Hanging Right Side + + + + + Hanging Left Side + + + + + + + Extrusion Type + + + + + Perspective Projection + + + + + Parallel Projection + + + + + + + Extrusion Rendering Types + + + + + Solid + + + + + Wireframe + + + + + Bounding Cube + + + + + + + Extrusion Planes + + + + + XY Plane + + + + + ZX Plane + + + + + YZ Plane + + + + + + + Callout Angles + + + + + Any Angle + + + + + 30 degrees + + + + + 45 degrees + + + + + 60 degrees + + + + + 90 degrees + + + + + Automatic Angle + + + + + + + Callout Drop Location + + + + + + Callout Placement + + + + + Top placement + + + + + Center placement + + + + + Bottom placement + + + + + User-defined placement + + + + + + + Connector Type + + + + + No Connector + + + + + Straight Connector + + + + + Elbow Connector + + + + + Curved Connector + + + + + + + Alignment Type + + + + + Left Alignment + + + + + Right Alignment + + + + + Center Alignment + + + + + + + Connection Locations Type + + + + + No + + + + + Four Connections + + + + + Edit Point Connections + + + + + Custom Connections + + + + + + + Embedded Object Alternate Image Request Types + + + + + + Embedded Connection Type + + + + + Embedded Object + + + + + Linked Object + + + + + + + Embedded Object Representations + + + + + Snapshot + + + + + Icon + + + + + + + Embedded Object Update Method Type + + + + + Server Application Update + + + + + User Update + + + + + + + Shape Fill Type + + + + + Centered Radial Gradient + + + + + Solid Fill + + + + + Image Pattern + + + + + Tiled Image + + + + + Stretch Image to Fit + + + + + Unscaled Gradient + + + + + Radial Gradient + + + + + Linear Gradient + + + + + Use Background Fill + + + + + diff --git a/tests/resources/schema/ooxml/vml-presentationDrawing.xsd b/tests/resources/schema/ooxml/vml-presentationDrawing.xsd new file mode 100644 index 0000000000..03f0c91809 --- /dev/null +++ b/tests/resources/schema/ooxml/vml-presentationDrawing.xsd @@ -0,0 +1,23 @@ + + + + + Ink Annotation Flag + + + + + VML Diagram Text + + + + + + + Text Reference + + + + diff --git a/tests/resources/schema/ooxml/vml-spreadsheetDrawing.xsd b/tests/resources/schema/ooxml/vml-spreadsheetDrawing.xsd new file mode 100644 index 0000000000..3c7802b876 --- /dev/null +++ b/tests/resources/schema/ooxml/vml-spreadsheetDrawing.xsd @@ -0,0 +1,465 @@ + + + + + + Attached Object Data + + + + + + + Move with Cells + + + + + Resize with Cells + + + + + Anchor + + + + + Lock Toggle + + + + + Default Size Toggle + + + + + Print Toggle + + + + + Macro Disable Toggle + + + + + AutoFill + + + + + AutoLine + + + + + Automatically Size + + + + + Reference to Custom Function + + + + + Horizontal Text Alignment + + + + + Vertical Text Alignment + + + + + Text Lock + + + + + Far East Alignment Toggle + + + + + Password Edit + + + + + Default Button + + + + + Help Button + + + + + Cancel Button + + + + + Dismiss Button + + + + + Primary Keyboard Accelerator + + + + + Secondary Keyboard Accelerator + + + + + Comment Row Target + + + + + Comment Column Target + + + + + Comment Visibility Toggle + + + + + Comment's Row is Hidden + + + + + Comment's Column is Hidden + + + + + Validation Type + + + + + Multi-line + + + + + Vertical Scroll + + + + + Valid ID + + + + + List Items Source Range + + + + + Minimum Width + + + + + Selected Entry + + + + + Disable 3D + + + + + Selection Type + + + + + Multiple Selections + + + + + Callback Type + + + + + Non-linked List Item + + + + + Dropdown Style + + + + + Dropdown Color Toggle + + + + + Dropdown Maximum Lines + + + + + Checked + + + + + Linked Formula + + + + + Camera Source Range + + + + + Disable 3D + + + + + First Radio Button + + + + + Linked Formula - Group Box + + + + + Scroll bar position + + + + + Scroll Bar Minimum + + + + + Scroll Bar Maximum + + + + + Scroll Bar Increment + + + + + Scroll Bar Page Increment + + + + + Scroll Bar Orientation + + + + + Scroll Bar Width + + + + + Embedded Control + + + + + Clipboard Format + + + + + Camera Tool + + + + + Recalculation Toggle + + + + + Font AutoScale + + + + + Dynamic Data Exchange + + + + + UI Object Toggle + + + + + HTML Script Text + + + + + HTML Script Attributes + + + + + HTML Script Language + + + + + HTML Script Location + + + + + Text Formula + + + + + + Object type + + + + + + Clipboard Format Type + + + + + + Object Type + + + + + Pushbutton + + + + + Checkbox + + + + + Dialog + + + + + Dropdown Box + + + + + Editable Text Field + + + + + Group Box + + + + + Label + + + + + Auditing Line + + + + + List Box + + + + + Movie + + + + + Comment + + + + + Image + + + + + Radio Button + + + + + Auditing Rectangle + + + + + Scroll Bar + + + + + Spin Button + + + + + Plain Shape + + + + + Group + + + + + Plain Rectangle + + + + + diff --git a/tests/resources/schema/ooxml/vml-wordprocessingDrawing.xsd b/tests/resources/schema/ooxml/vml-wordprocessingDrawing.xsd new file mode 100644 index 0000000000..f76a2394a2 --- /dev/null +++ b/tests/resources/schema/ooxml/vml-wordprocessingDrawing.xsd @@ -0,0 +1,358 @@ + + + + + Top Border + + + + + Left Border + + + + + Right Border + + + + + Bottom Border + + + + + + Border Style + + + + + Border Width + + + + + Border shadow + + + + + + Text Wrapping + + + + + + Wrapping type + + + + + Wrapping side + + + + + Horizontal Positioning Base + + + + + Vertical Positioning Base + + + + + + Anchor Location Is Locked + + + + + + Border Type + + + + + No Border + + + + + Single Line Border + + + + + Thick Line Border + + + + + Double Line Border + + + + + Hairline Border + + + + + Dotted Border + + + + + pecifies a line border consisting of a dashed line around the parent object. + + + + + + Dot Dash Border + + + + + Dash Dot Dot Border + + + + + Triple Line Border + + + + + Thin Thick Small Gap Border + + + + + Small thick-thin lines border + + + + + Small thin-thick-thin Lines Border + + + + + Thin Thick Line Border + + + + + Thick Thin Line Border + + + + + Thin-thick-thin Border + + + + + Thin Thick Large Gap Border + + + + + Thick Thin Large Gap Border + + + + + Large thin-thick-thin Border + + + + + Wavy Border + + + + + Double Wavy Lines Border + + + + + Small Dash Border + + + + + Stroked Dash Dot Border + + + + + 3D Embossed Border + + + + + 3D Engraved Border + + + + + Outset Border + + + + + Inset Border + + + + + + + Border Shadow Type + + + + + True + + + + + True + + + + + False + + + + + False + + + + + + + Text Wrapping Type + + + + + Top and bottom wrapping + + + + + Square wrapping + + + + + No wrapping + + + + + Tight wrapping + + + + + Through wrapping + + + + + + + Text Wrapping Side + + + + + Both sides + + + + + Left side + + + + + Right side + + + + + Largest side + + + + + + + Horizontal Anchor Type + + + + + Margin + + + + + Page + + + + + Text + + + + + Character + + + + + + + Vertical Anchor Type + + + + + Margin + + + + + Page + + + + + Text + + + + + Line + + + + + diff --git a/tests/resources/schema/ooxml/wml.xsd b/tests/resources/schema/ooxml/wml.xsd index 578157ea8e..b41251121e 100644 --- a/tests/resources/schema/ooxml/wml.xsd +++ b/tests/resources/schema/ooxml/wml.xsd @@ -1,3460 +1,11821 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + xmlns="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" elementFormDefault="qualified" + attributeFormDefault="qualified" blockDefault="#all" + targetNamespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> + + + + + + + + + + + + On/Off Value + + + + + + Eight Digit Hexadecimal Value + + + + + + + + + Long Hexadecimal Number Value + + + + + + Four Digit Hexadecimal Value + + + + + + + + Two Digit Hexadecimal Value + + + + + + + + + Value + + + + + IANA Name of Character Set + + + + + + Percentage Measurement + + + + + + Percentage Value Without Percent Sign + + + + + + Decimal Number Value + + + + + + + Decimal Number Value + + + + + + + Positive Decimal Number Value + + + + + + + Value in Percent + + + + + + + Measurement in Twentieths of a Point + + + + + + Signed Measurement in Twentieths of a Point + + + + + + + Positive or Negative Value in Twentieths of a Point + + + + + + Measurement in Pixels + + + + + + + Measurement in Pixels + + + + + + Measurement in Half-Points + + + + + + + Half Point Measurement + + + + + + Signed Measurement in Half-Points + + + + + + + Signed Half-Point Measurement + + + + + + Standard Date and Time Storage Format + + + + + + Script Subroutine Name Value + + + + + + + + + Name of Script Function + + + + + + Measurement in Eighths of a Point + + + + + + Measurement in Points + + + + + + + String Value + + + + + + Text Expansion/Compression Percentage + + + + + + + + + + Text Expansion/Compression Value + + + + + + Text Highlight Colors + + + + + Black Highlighting Color + + + + + Blue Highlighting Color + + + + + Cyan Highlighting Color + + + + + Green Highlighting Color + + + + + Magenta Highlighting Color + + + + + Red Highlighting Color + + + + + Yellow Highlighting Color + + + + + White Highlighting Color + + + + + Dark Blue Highlighting Color + + + + + Dark Cyan Highlighting Color + + + + + Dark Green Highlighting Color + + + + + Dark Magenta Highlighting Color + + + + + Dark Red Highlighting Color + + + + + Dark Yellow Highlighting Color + + + + + Dark Gray Highlighting Color + + + + + Light Gray Highlighting Color + + + + + No Text Highlighting + + + + + + + + Highlighting Color + + + + + + ‘Automatic’ Color Value + + + + + Automatically Determined Color + + + + + + + Color Value + + + + + + + Run Content Color + + + + + Run Content Theme Color + + + + + Run Content Theme Color Tint + + + + + Run Content Theme Color Shade + + + + + + + Language Code + + + + + + + GUID Value + + + + + + Underline Patterns + + + + + Single Underline + + + + + Underline Non-Space Characters Only + + + + + Double Underline + + + + + Thick Underline + + + + + Dotted Underline + + + + + Thick Dotted Underline + + + + + Dashed Underline + + + + + Thick Dashed Underline + + + + + Long Dashed Underline + + + + + Thick Long Dashed Underline + + + + + Dash-Dot Underline + + + + + Thick Dash-Dot Underline + + + + + Dash-Dot-Dot Underline + + + + + Thick Dash-Dot-Dot Underline + + + + + Wave Underline + + + + + Heavy Wave Underline + + + + + Double Wave Underline + + + + + No Underline + + + + + + + + Underline Style + + + + + Underline Color + + + + + Underline Theme Color + + + + + Underline Theme Color Tint + + + + + Underline Theme Color Shade + + + + + + Animated Text Effects + + + + + Blinking Background Animation + + + + + Colored Lights Animation + + + + + Black Dashed Line Animation + + + + + Marching Red Ants + + + + + Shimmer Animation + + + + + Sparkling Lights Animation + + + + + No Animation + + + + + + + + Animated Text Effect Type + + + + + + Border Styles + + + + + No Border + + + + + No Border + + + + + Single Line Border + + + + + Single Line Border + + + + + Double Line Border + + + + + Dotted Line Border + + + + + Dashed Line Border + + + + + Dot Dash Line Border + + + + + Dot Dot Dash Line Border + + + + + Triple Line Border + + + + + Thin, Thick Line Border + + + + + Thick, Thin Line Border + + + + + Thin, Thick, Thin Line Border + + + + + Thin, Thick Line Border + + + + + Thick, Thin Line Border + + + + + Thin, Thick, Thin Line Border + + + + + Thin, Thick Line Border + + + + + Thick, Thin Line Border + + + + + Thin, Thick, Thin Line Border + + + + + Wavy Line Border + + + + + Double Wave Line Border + + + + + Dashed Line Border + + + + + Dash Dot Strokes Line Border + + + + + 3D Embossed Line Border + + + + + 3D Engraved Line Border + + + + + Outset Line Border + + + + + Inset Line Border + + + + + Apples Art Border + + + + + Arched Scallops Art Border + + + + + Baby Pacifier Art Border + + + + + Baby Rattle Art Border + + + + + Three Color Balloons Art Border + + + + + Hot Air Balloons Art Border + + + + + Black Dash Art Border + + + + + Black Dot Art Border + + + + + Black Square Art Border + + + + + Thin Line Art Border + + + + + White Dash Art Border + + + + + White Dot Art Border + + + + + White Square Art Border + + + + + Wide Inline Art Border + + + + + Wide Midline Art Border + + + + + Wide Outline Art Border + + + + + Bats Art Border + + + + + Birds Art Border + + + + + Birds Flying Art Border + + + + + Cabin Art Border + + + + + Cake Art Border + + + + + Candy Corn Art Border + + + + + Knot Work Art Border + + + + + Certificate Banner Art Border + + + + + Chain Link Art Border + + + + + Champagne Bottle Art Border + + + + + Black and White Bar Art Border + + + + + Color Checked Bar Art Border + + + + + Checkerboard Art Border + + + + + Christmas Tree Art Border + + + + + Circles And Lines Art Border + + + + + Circles and Rectangles Art Border + + + + + Wave Art Border + + + + + Clocks Art Border + + + + + Compass Art Border + + + + + Confetti Art Border + + + + + Confetti Art Border + + + + + Confetti Art Border + + + + + Confetti Streamers Art Border + + + + + Confetti Art Border + + + + + Corner Triangle Art Border + + + + + Dashed Line Art Border + + + + + Dotted Line Art Border + + + + + Maze Art Border + + + + + Butterfly Art Border + + + + + Fish Art Border + + + + + Insects Art Border + + + + + Ladybug Art Border + + + + + Cross-stitch Art Border + + + + + Cupid Art Border + + + + + Archway Art Border + + + + + Color Archway Art Border + + + + + Blocks Art Border + + + + + Gray Diamond Art Border + + + + + Double D Art Border + + + + + Diamond Art Border + + + + + Earth Art Border + + + + + Earth Art Border + + + + + Earth Art Border + + + + + Shadowed Square Art Border + + + + + Shadowed Square Art Border + + + + + Painted Egg Art Border + + + + + Fans Art Border + + + + + Film Reel Art Border + + + + + Firecracker Art Border + + + + + Flowers Art Border + + + + + Daisy Art Border + + + + + Flowers Art Border + + + + + Flowers Art Border + + + + + Pansy Art Border + + + + + Red Rose Art Border + + + + + Roses Art Border + + + + + Flowers in a Teacup Art Border + + + + + Small Flower Art Border + + + + + Gems Art Border + + + + + Gingerbread Man Art Border + + + + + Triangle Gradient Art Border + + + + + Handmade Art Border + + + + + Handmade Art Border + + + + + Heart-Shaped Balloon Art Border + + + + + Gray Heart Art Border + + + + + Hearts Art Border + + + + + Pattern Art Border + + + + + Holly Art Border + + + + + House Art Border + + + + + Circular Art Border + + + + + Ice Cream Cone Art Border + + + + + Light Bulb Art Border + + + + + Lightning Art Border + + + + + Lightning Art Border + + + + + Map Pins Art Border + + + + + Maple Leaf Art Border + + + + + Muffin Art Border + + + + + Marquee Art Border + + + + + Marquee Art Border + + + + + Moon Art Border + + + + + Mosaic Art Border + + + + + Musical Note Art Border + + + + + Patterned Art Border + + + + + Oval Art Border + + + + + Package Art Border + + + + + Black Palm Tree Art Border + + + + + Color Palm Tree Art Border + + + + + Paper Clip Art Border + + + + + Papyrus Art Border + + + + + Party Favor Art Border + + + + + Party Glass Art Border + + + + + Pencils Art Border + + + + + Character Art Border + + + + + Waving Character Border + + + + + Character With Hat Art Border + + + + + Poinsettia Art Border + + + + + Postage Stamp Art Border + + + + + Pumpkin Art Border + + + + + Push Pin Art Border + + + + + Push Pin Art Border + + + + + Pyramid Art Border + + + + + Pyramid Art Border + + + + + Quadrants Art Border + + + + + Rings Art Border + + + + + Safari Art Border + + + + + Saw tooth Art Border + + + + + Gray Saw tooth Art Border + + + + + Scared Cat Art Border + + + + + Umbrella Art Border + + + + + Shadowed Squares Art Border + + + + + Shark Tooth Art Border + + + + + Bird Tracks Art Border + + + + + Rocket Art Border + + + + + Snowflake Art Border + + + + + Snowflake Art Border + + + + + Sombrero Art Border + + + + + Southwest-themed Art Border + + + + + Stars Art Border + + + + + Stars On Top Art Border + + + + + 3-D Stars Art Border + + + + + Stars Art Border + + + + + Stars With Shadows Art Border + + + + + Sun Art Border + + + + + Whirligig Art Border + + + + + Torn Paper Art Border + + + + + Black Torn Paper Art Border + + + + + Tree Art Border + + + + + Triangle Art Border + + + + + Triangles Art Border + + + + + Triangle Art Border One + + + + + Triangle Art Border Two + + + + + Triangle and Circle Art Border + + + + + Triangle and Circle Art Border Two + + + + + Black and White Shapes Art Border + + + + + Black and White Art Border Two + + + + + Twisted Lines Art Border + + + + + Twisted Lines Art Border + + + + + Vine Art Border + + + + + Wavy Line Art Border + + + + + Weaving Angles Art Border + + + + + Weaving Braid Art Border + + + + + Weaving Ribbon Art Border + + + + + Weaving Strips Art Border + + + + + White Flowers Art Border + + + + + Woodwork Art Border + + + + + Crisscross Art Border + + + + + Triangle Art Border + + + + + Zigzag Art Border + + + + + Zigzag stitch + + + + + Custom Defined Art Border + + + + + + + + Border Style + + + + + Border Color + + + + + Border Theme Color + + + + + Border Theme Color Tint + + + + + Border Theme Color Shade + + + + + Border Width + + + + + Border Spacing Measurement + + + + + Border Shadow + + + + + Create Frame Effect + + + + + + Shading Patterns + + + + + No Pattern + + + + + No Pattern + + + + + 100% Fill Pattern + + + + + Horizontal Stripe Pattern + + + + + Vertical Stripe Pattern + + + + + Reverse Diagonal Stripe Pattern + + + + + Diagonal Stripe Pattern + + + + + Horizontal Cross Pattern + + + + + Diagonal Cross Pattern + + + + + Thin Horizontal Stripe Pattern + + + + + Thin Vertical Stripe Pattern + + + + + Thin Reverse Diagonal Stripe Pattern + + + + + Thin Diagonal Stripe Pattern + + + + + Thin Horizontal Cross Pattern + + + + + Thin Diagonal Cross Pattern + + + + + 5% Fill Pattern + + + + + 10% Fill Pattern + + + + + 12.5% Fill Pattern + + + + + 15% Fill Pattern + + + + + 20% Fill Pattern + + + + + 25% Fill Pattern + + + + + 30% Fill Pattern + + + + + 35% Fill Pattern + + + + + 37.5% Fill Pattern + + + + + 40% Fill Pattern + + + + + 45% Fill Pattern + + + + + 50% Fill Pattern + + + + + 55% Fill Pattern + + + + + 60% Fill Pattern + + + + + 62.5% Fill Pattern + + + + + 65% Fill Pattern + + + + + 70% Fill Pattern + + + + + 75% Fill Pattern + + + + + 80% Fill Pattern + + + + + 85% Fill Pattern + + + + + 87.5% Fill Pattern + + + + + 90% Fill Pattern + + + + + 95% Fill Pattern + + + + + + + + Shading Pattern + + + + + Shading Pattern Color + + + + + Shading Pattern Theme Color + + + + + Shading Pattern Theme Color Tint + + + + + Shading Pattern Theme Color Shade + + + + + Shading Background Color + + + + + Shading Background Theme Color + + + + + Shading Background Theme Color Tint + + + + + Shading Background Theme Color Shade + + + + + + + Subscript/Superscript Value + + + + + + + Value + + + + + Fit Text Run ID + + + + + + Emphasis Mark Type + + + + + No Emphasis Mark + + + + + Dot Emphasis Mark Above Characters + + + + + Comma Emphasis Mark Above Characters + + + + + Circle Emphasis Mark Above Characters + + + + + Dot Emphasis Mark Below Characters + + + + + + + + Emphasis Mark Type + + + + + + + Latin Language + + + + + East Asian Language + + + + + Complex Script Language + + + + + + Two Lines in One Enclosing Character Type + + + + + No Enclosing Brackets + + + + + Round Brackets + + + + + Square Brackets + + + + + Angle Brackets + + + + + Curly Brackets + + + + + + + + East Asian Typography Run ID + + + + + Two Lines in One + + + + + Display Brackets Around Two Lines in One + + + + + Horizontal in Vertical (Rotate Text) + + + + + Compress Rotated Text to Line Height + + + + + + Height Rule + + + + + Determine Height Based On Contents + + + + + Exact Height + + + + + Minimum Height + + + + + + + Text Wrapping around Text Frame Type + + + + + Default Text Wrapping Around Frame + + + + + No Text Wrapping Beside Frame + + + + + Allow Text Wrapping Around Frame + + + + + Tight Text Wrapping Around Frame + + + + + Through Text Wrapping Around Frame + + + + + No Text Wrapping Around Frame + + + + + + + Vertical Anchor Location + + + + + Relative To Vertical Text Extents + + + + + Relative To Margin + + + + + Relative To Page + + + + + + + Horizontal Anchor Location + + + + + Relative to Text Extents + + + + + Relative To Margin + + + + + Relative to Page + + + + + + + Text Frame Drop Cap Location + + + + + Not Drop Cap + + + + + Drop Cap Inside Margin + + + + + Drop Cap Outside Margin + + + + + + + + Drop Cap Frame + + + + + Drop Cap Vertical Height in Lines + + + + + Frame Width + + + + + Frame Height + + + + + Vertical Frame Padding + + + + + Horizontal Frame Padding + + + + + Text Wrapping Around Frame + + + + + Frame Horizontal Positioning Base + + + + + Frame Vertical Positioning Base + + + + + Absolute Horizontal Position + + + + + Relative Horizontal Position + + + + + Absolute Vertical Position + + + + + Relative Vertical Position + + + + + Frame Height Type + + + + + Lock Frame Anchor to Paragraph + + + + + + Custom Tab Stop Type + + + + + No Tab Stop + + + + + Leading Tab + + + + + Centered Tab + + + + + Trailing Tab + + + + + Decimal Tab + + + + + Bar Tab + + + + + List Tab + + + + + Leading Tab + + + + + Trailing Tab + + + + + + + Custom Tab Stop Leader Character + + + + + No tab stop leader + + + + + Dotted leader line + + + + + Dashed tab stop leader line + + + + + Solid leader line + + + + + Heavy solid leader line + + + + + Middle dot leader line + + + + + + + + Tab Stop Type + + + + + Tab Leader Character + + + + + Tab Stop Position + + + + + + Line Spacing Rule + + + + + Automatically Determined Line Height + + + + + Exact Line Height + + + + + Minimum Line Height + + + + + + + + Spacing Above Paragraph + + + + + Spacing Above Paragraph IN Line Units + + + + + Automatically Determine Spacing Above Paragraph + + + + + Spacing Below Paragraph + + + + + Spacing Below Paragraph in Line Units + + + + + Automatically Determine Spacing Below Paragraph + + + + + Spacing Between Lines in Paragraph + + + + + Spacing Between Lines + + + + + + + Start Indentation + + + + + Start Indentation in Character Units + + + + + End Indentation + + + + + End Indentation in Character Units + + + + + Start Indentation + + + + + Start Indentation in Character Units + + + + + End Indentation + + + + + End Indentation in Character Units + + + + + Indentation Removed from First Line + + + + + Indentation Removed From First Line in Character Units + + + + + Additional First Line Indentation + + + + + Additional First Line Indentation in Character Units + + + + + + Horizontal Alignment Type + + + + + Align To Leading Edge + + + + + Align Center + + + + + Align to Trailing Edge + + + + + Justified + + + + + Medium Kashida Length + + + + + Distribute All Characters Equally + + + + + Align to List Tab + + + + + Widest Kashida Length + + + + + Low Kashida Length + + + + + Thai Language Justification + + + + + Align to Leading Edge + + + + + Align to Trailing Edge + + + + + + + Table Alignment Type + + + + + Align Center + + + + + Align to Trailing Edge + + + + + Align to Starting Edge + + + + + Align to Trailing Edge + + + + + Align to Starting Edge + + + + + + + + Alignment Type + + + + + + + Alignment Type + + + + + + Document View Values + + + + + Default View + + + + + Print Layout View + + + + + Outline View + + + + + Master Document View + + + + + Draft View + + + + + Web Page View + + + + + + + + Document View Setting Value + + + + + + Magnification Preset Values + + + + + No Preset Magnification + + + + + Display One Full Page + + + + + Display Page Width + + + + + Display Text Width + + + + + + + + Zoom Type + + + + + Zoom Percentage + + + + + + + Writing Style Language + + + + + Grammatical Engine ID + + + + + Grammatical Check Engine Version + + + + + Natural Language Grammar Check + + + + + Check Stylistic Rules With Grammar + + + + + Application Name + + + + + + Proofing State Values + + + + + Check Completed + + + + + Check Not Completed + + + + + + + + Spell Checking State + + + + + Grammatical Checking State + + + + + + Document Classification Values + + + + + + + Document Classification Value + + + + + + Document Protection Types + + + + + No Editing Restrictions + + + + + Allow No Editing + + + + + Allow Editing of Comments + + + + + Allow Editing With Revision Tracking + + + + + Allow Editing of Form Fields + + + + + + + + Cryptographic Algorithm Name + + + + + Password Hash Value + + + + + Salt Value for Password Verifier + + + + + Iterations to Run Hashing Algorithm + + + + + + + Cryptographic Provider Type + + + + + Cryptographic Algorithm Class + + + + + Cryptographic Algorithm Type + + + + + Cryptographic Hashing Algorithm + + + + + Iterations to Run Hashing Algorithm + + + + + Cryptographic Provider + + + + + Cryptographic Algorithm Extensibility + + + + + Algorithm Extensibility Source + + + + + Cryptographic Provider Type Extensibility + + + + + Provider Type Extensibility Source + + + + + Password Hash + + + + + Salt for Password Verifier + + + + + + + Document Editing Restrictions + + + + + Only Allow Formatting With Unlocked Styles + + + + + Enforce Document Protection Settings + + + + + + + + Source Document Types + + + + + Catalog Source Document + + + + + Envelope Source Document + + + + + Mailing Label Source Document + + + + + Form Letter Source Document + + + + + E-Mail Source Document + + + + + Fax Source Document + + + + + + + + Mail Merge Source Document Type + + + + + + Mail Merge Data Source Type Values + + + + + + + Value + + + + + + Merged Document Destination Types + + + + + Send Merged Documents to New Documents + + + + + Send Merged Documents to Printer + + + + + Send Merged Documents as E-mail Messages + + + + + Send Merged Documents as Faxes + + + + + + + + Mail Merge Merged Document Type + + + + + + Merge Field Mapping Types + + + + + Field Not Mapped + + + + + Field Mapping to Data Source Column + + + + + + + + Merge Field Mapping Type + + + + + + + Display Visual Indicator Of Markup Area + + + + + Display Comments + + + + + Display Content Revisions + + + + + Display Formatting Revisions + + + + + Display Ink Annotations + + + + + + + Language For Which Custom Line Breaking Rule Applies + + + + + Characters For Custom Line Breaking Rule + + + + + + Text Flow Direction + + + + + Lines Flow From Top to Bottom + + + + + Lines Flow From Right to Left + + + + + Lines Flow From Left to Right + + + + + Lines Flow From Top to Bottom Rotated + + + + + Lines Flow From Right to Left Rotated + + + + + Lines Flow From Left to Right Rotated + + + + + Lines Flow From Left to Right + + + + + Lines Flow From Top To Bottom + + + + + Lines Flow From Top to Bottom, Rotated + + + + + Lines Flow From Left to Right, Rotated + + + + + Lines Flow From Right to Left + + + + + Lines Flow From Right to Left, Rotated + + + + + + + + Direction of Text Flow + + + + + + Vertical Text Alignment Types + + + + + Align Text at Top + + + + + Align Text at Center + + + + + Align Text at Baseline + + + + + Align Text at Bottom + + + + + Automatically Determine Alignment + + + + + + + + Vertical Character Alignment Position + + + + + + Location of Custom XML Markup Displacing an Annotation + + + + + Displaced by Next Custom XML Markup Tag + + + + + Displaced by Previous Custom XML Markup Tag + + + + + + + Table Cell Vertical Merge Revision Type + + + + + Vertically Merged Cell + + + + + Vertically Split Cell + + + + + + + + Annotation Identifier + + + + + + + + + Annotation Author + + + + + Annotation Date + + + + + + + + + + + Revised Vertical Merge Setting + + + + + Vertical Merge Setting Removed by Revision + + + + + + + + + + + Annotation Marker Displaced By Custom XML Markup + + + + + + + + + + + Annotation Marker Relocated For Custom XML Markup + + + + + + + + + + + First Table Column Covered By Bookmark + + + + + Last Table Column Covered By Bookmark + + + + + + + + + + + Bookmark Name + + + + + + + + + + + Annotation Author + + + + + Annotation Date + + + + + + + + + + + + + + Initials of Comment Author + + + + + + + + + + + Previous Numbering Value + + + + + + + + + + + + Previous Table-Level Property Exceptions + + + + + + + + + + + + + Previous Table Cell Properties + + + + + + + + + + + + + Previous Table Row Properties + + + + + + + + + + + + + Previous Table Grid + + + + + + + + + + + + + Previous Table Properties + + + + + + + + + + + + + Previous Section Properties + + + + + + + + + + + + + Previous Paragraph Properties + + + + + + + + + + + + + Previous Run Properties + + + + + + + + + + + + + Previous Run Properties for the Paragraph Mark + + + + + + + + + + + + + + + + + + + + + Table Cell Insertion + + + + + Table Cell Deletion + + + + + Vertically Merged/Split Table Cells + + + + + + + + + Bookmark Start + + + + + Bookmark End + + + + + Move Source Location Container - Start + + + + + Move Source Location Container - End + + + + + Move Destination Location Container - Start + + + + + Move Destination Location Container - End + + + + + Comment Anchor Range Start + + + + + Comment Anchor Range End + + + + + Custom XML Markup Insertion Start + + + + + Custom XML Markup Insertion End + + + + + Custom XML Markup Deletion Start + + + + + Custom XML Markup Deletion End + + + + + Custom XML Markup Move Source Start + + + + + Custom XML Markup Move Source End + + + + + Custom XML Markup Move Destination Location Start + + + + + Custom XML Markup Move Destination Location End + + + + + + + + + Numbering Level Reference + + + + + Numbering Definition Instance Reference + + + + + Previous Paragraph Numbering Properties + + + + + Inserted Numbering Properties + + + + + + + + + Paragraph Border Above Identical Paragraphs + + + + + Left Paragraph Border + + + + + Paragraph Border Below Identical Paragraphs + + + + + Right Paragraph Border + + + + + Paragraph Border Between Identical Paragraphs + + + + + Paragraph Border Between Facing Pages + + + + + + + + + Custom Tab Stop + + + + + + + Lines To Tight Wrap Within Text Box + + + + + Do Not Tight Wrap + + + + + Tight Wrap All Lines + + + + + Tight Wrap First and Last Lines + + + + + Tight Wrap First Line + + + + + Tight Wrap Last Line + + + + + + + + Lines to Tight Wrap to Paragraph Extents + + + + + + + + + + Run Properties for the Paragraph Mark + + + + + Section Properties + + + + + Revision Information for Paragraph Properties + + + + + + + + + + + Referenced Paragraph Style + + + + + Keep Paragraph With Next Paragraph + + + + + Keep All Lines On One Page + + + + + Start Paragraph on Next Page + + + + + Text Frame Properties + + + + + Allow First/Last Line to Display on a Separate Page + + + + + Numbering Definition Instance Reference + + + + + Suppress Line Numbers for Paragraph + + + + + Paragraph Borders + + + + + Paragraph Shading + + + + + Set of Custom Tab Stops + + + + + Suppress Hyphenation for Paragraph + + + + + Use East Asian Typography Rules for First and Last Character per Line + + + + + + Allow Line Breaking At Character Level + + + + + Allow Punctuation to Extend Past Text Extents + + + + + Compress Punctuation at Start of a Line + + + + + Automatically Adjust Spacing of Latin and East Asian Text + + + + + Automatically Adjust Spacing of East Asian Text and Numbers + + + + + Right to Left Paragraph Layout + + + + + Automatically Adjust Right Indent When Using Document Grid + + + + + Use Document Grid Settings for Inter-Line Paragraph Spacing + + + + + Spacing Between Lines and Above/Below Paragraph + + + + + Paragraph Indentation + + + + + Ignore Spacing Above and Below When Using Identical Styles + + + + + Use Left/Right Indents as Inside/Outside Indents + + + + + Prevent Text Frames From Overlapping + + + + + Paragraph Alignment + + + + + Paragraph Text Flow Direction + + + + + Vertical Character Alignment on Line + + + + + Allow Surrounding Paragraphs to Tight Wrap to Text Box Contents + + + + + + Associated Outline Level + + + + + Associated HTML div ID + + + + + Paragraph Conditional Formatting + + + + + + + + + + + + + + + + + Unique Name for Embedded Control + + + + + Shape Reference + + + + + Embedded Control Properties Relationship Reference + + + + + + + + + + + + + + Background Color + + + + + Background Theme Color + + + + + Background Theme Color Tint + + + + + Background Theme Color Shade + + + + + + + Relationship to Part + + + + + + + + + + + + + + Embedded Control + + + + + Linked Object Properties + + + + + Embedded Object Properties + + + + + + + + Original Image Width + + + + + Original Image Height + + + + + + + + + + + + Embedded Video + + + + + Floating Embedded Control + + + + + + + + Object Representation + + + + + Relationship to Embedded Object Data + + + + + Object Application + + + + + Object Shape + + + + + Field Switches + + + + + + Embedded Object Representations + + + + + Snapshot + + + + + Icon + + + + + + + + + + Object Update Mode + + + + + Object Refresh Flag + + + + + + + + Embedded Object Update Modes + + + + + Server Application Update + + + + + User Update + + + + + + + + + + + + + + Custom Field Data + + + + + + + Field Codes + + + + + Field Should Not Be Recalculated + + + + + Field Result Invalidated + + + + + + Complex Field Character Type + + + + + Start Character + + + + + Separator Character + + + + + End Character + + + + + + + Help or Status Text Type + + + + + Literal Text + + + + + Glossary Document Entry + + + + + + + Help Text Value + + + + + + + + Status Text Value + + + + + + + + Form Field Name Value + + + + + + + + Text Box Form Field Type Values + + + + + Text Box + + + + + Number + + + + + Date + + + + + Current Time Display + + + + + Current Date Display + + + + + Field Calculation + + + + + + + + Text Box Form Field Type Values + + + + + + + Form Field Name Value + + + + + + + + Custom Field Data + + + + + Form Field Properties + + + + + Previous Numbering Field Properties + + + + + + Field Character Type + + + + + Field Should Not Be Recalculated + + + + + Field Result Invalidated + + + + + + + + Hyperlink Target Frame + + + + + Associated String + + + + + Location in Target Document + + + + + Add To Viewed Hyperlinks + + + + + Hyperlink Anchor + + + + + Hyperlink Target + + + + + + + + Form Field Name + + + + + Form Field Label + + + + + Form Field Navigation Order Index + + + + + Form Field Enabled + + + + + Recalculate Fields When Current Field Is Modified + + + + + Script Function to Execute on Form Field Entry + + + + + Script Function to Execute on Form Field Exit + + + + + Associated Help Text + + + + + Associated Status Text + + + + + + Checkbox Form Field Properties + + + + + Drop-Down List Form Field Properties + + + + + Text Box Form Field Properties + + + + + + + + + Help Text Type + + + + + Help Text Value + + + + + + + Status Text Type + + + + + Status Text Value + + + + + + + + + Checkbox Form Field Size + + + + + Automatically Size Form Field + + + + + + Default Checkbox Form Field State + + + + + Checkbox Form Field State + + + + + + + + + Drop-Down List Selection + + + + + Default Drop-Down List Item Index + + + + + Drop-Down List Entry + + + + + + + + + Text Box Form Field Type + + + + + Default Text Box Form Field String + + + + + Text Box Form Field Maximum Length + + + + + Text Box Form Field Formatting + + + + + + + Section Type + + + + + Next Page Section Break + + + + + Column Section Break + + + + + Continuous Section Break + + + + + Even Page Section Break + + + + + Odd Page Section Break + + + + + + + + Section Type Setting + + + + + + + First Page Printer Tray Code + + + + + Non-First Page Printer Tray Code + + + + + + Numbering Format + + + + + Decimal Numbers + + + + + Uppercase Roman Numerals + + + + + Lowercase Roman Numerals + + + + + Uppercase Latin Alphabet + + + + + Lowercase Latin Alphabet + + + + + Ordinal + + + + + Cardinal Text + + + + + Ordinal Text + + + + + Hexadecimal Numbering + + + + + Chicago Manual of Style + + + + + Ideographs + + + + + Japanese Counting System + + + + + AIUEO Order Half-Width Katakana + + + + + Iroha Ordered Katakana + + + + + Full Width Arabic Numerals + + + + + Half Width Arabic Numerals + + + + + Japanese Legal Numbering + + + + + Japanese Digital Ten Thousand Counting System + + + + + Decimal Numbers Enclosed in a Circle + + + + + Full WidthArabic Numerals Alternate + + + + + AIUEO Order Full-Width Katakana + + + + + Full-Width Iroha Ordered Katakana + + + + + Initial Zero Arabic Numerals + + + + + Bullet + + + + + Korean Ganada Numbering + + + + + Korean Chosung Numbering + + + + + Decimal Numbers Followed by a Period + + + + + Decimal Numbers Enclosed in Parenthesis + + + + + Decimal Numbers Enclosed in a Circle + + + + + Ideographs Enclosed in a Circle + + + + + Traditional Ideograph Format + + + + + Zodiac Ideograph Format + + + + + Traditional Zodiac Ideograph Format + + + + + Taiwanese Counting System + + + + + Traditional Legal Ideograph Format + + + + + Taiwanese Counting Thousand System + + + + + Taiwanese Digital Counting System + + + + + Chinese Counting System + + + + + Chinese Legal Simplified Format + + + + + Chinese Counting Thousand System + + + + + Korean Digital Counting System + + + + + Korean Counting System + + + + + Korean Legal Numbering + + + + + Korean Digital Counting System Alternate + + + + + Vietnamese Numerals + + + + + Lowercase Russian Alphabet + + + + + Uppercase Russian Alphabet + + + + + No Numbering + + + + + Number With Dashes + + + + + Hebrew Letters + + + + + Hebrew Alphabet + + + + + Arabic Alphabet + + + + + Arabic Abjad Numerals + + + + + Hindi Vowels + + + + + Hindi Consonants + + + + + Hindi Numbers + + + + + Hindi Counting System + + + + + Thai Letters + + + + + Thai Numerals + + + + + Thai Counting System + + + + + Thai Baht Text + + + + + Dollar Text + + + + + Custom Defined Number Format + + + + + + + Page Orientation + + + + + Portrait Mode + + + + + Landscape Mode + + + + + + + + Page Width + + + + + Page Height + + + + + Page Orientation + + + + + Printer Paper Code + + + + + + + Top Margin Spacing + + + + + Right Margin Spacing + + + + + Page Bottom Spacing + + + + + Left Margin Spacing + + + + + Spacing to Top of Header + + + + + Spacing to Bottom of Footer + + + + + Page Gutter Spacing + + + + + + Page Border Z-Order + + + + + Page Border Ahead of Text + + + + + Page Border Behind Text + + + + + + + Page Border Display Options + + + + + Display Page Border on All Pages + + + + + Display Page Border on First Page + + + + + Display Page Border on All Pages Except First + + + + + + + Page Border Positioning Base + + + + + Page Border Is Positioned Relative to Page Edges + + + + + Page Border Is Positioned Relative to Text Extents + + + + + + + + + Top Border + + + + + Left Border + + + + + Bottom Border + + + + + Right Border + + + + + + Z-Ordering of Page Border + + + + + Pages to Display Page Borders + + + + + Page Border Positioning + + + + + + + + + Custom Defined Border Relationship Reference + + + + + + + + + + + Custom Defined Bottom Left Border Relationship Reference + + + + + Custom Defined Bottom Right Border Relationship Reference + + + + + + + + + + + Custom Defined Top Left Border Relationship Reference + + + + + Custom Defined Top Right Border Relationship Reference + + + + + + + + Chapter Separator Types + + + + + Hyphen Chapter Separator + + + + + Period Chapter Separator + + + + + Colon Chapter Separator + + + + + Em Dash Chapter Separator + + + + + En Dash Chapter Separator + + + + + + + Line Numbering Restart Position + + + + + Restart Line Numbering on Each Page + + + + + Restart Line Numbering for Each Section + + + + + Continue Line Numbering From Previous Section + + + + + + + + Line Number Increments to Display + + + + + Line Numbering Starting Value + + + + + Distance Between Text and Line Numbering + + + + + Line Numbering Restart Setting + + + + + + + Page Number Format + + + + + Starting Page Number + + + + + Chapter Heading Style + + + + + Chapter Separator Character + + + + + + + Column Width + + + + + Space Before Following Column + + + + + + + + Single Column Definition + + + + + + Equal Column Widths + + + + + Spacing Between Equal Width Columns + + + + + Number of Equal Width Columns + + + + + Draw Line Between Columns + + + + + + Vertical Alignment Type + + + + + Align Top + + + + + Align Center + + + + + Vertical Justification + + + + + Align Bottom + + + + + + + + Vertical Alignment Setting + + + + + + Document Grid Types + + + + + No Document Grid + + + + + Line Grid Only + + + + + Line and Character Grid + + + + + Character Grid Only + + + + + + + + Document Grid Type + + + + + Document Grid Line Pitch + + + + + Document Grid Character Pitch + + + + + + Header or Footer Type + + + + + Even Numbered Pages Only + + + + + Default Header or Footer + + + + + First Page Only + + + + + + + Footnote or Endnote Type + + + + + Normal Footnote/Endnote + + + + + Separator + + + + + Continuation Separator + + + + + Continuation Notice Separator + + + + + + + + + + Header or Footer Type + + + + + + + + + + Header Reference + + + + + Footer Reference + + + + + + + + + + + + Section-Wide Footnote Properties + + + + + Section-Wide Endnote Properties + + + + + Section Type + + + + + Page Size + + + + + Page Margins + + + + + Paper Source Information + + + + + Page Borders + + + + + Line Numbering Settings + + + + + Page Numbering Settings + + + + + Column Definitions + + + + + Only Allow Editing of Form Fields + + + + + Vertical Text Alignment on Page + + + + + Suppress Endnotes In Document + + + + + Different First Page Headers and Footers + + + + + Text Flow Direction + + + + + Right to Left Section Layout + + + + + Gutter on Right Side of Page + + + + + Document Grid + + + + + Reference to Printer Settings Data + + + + + + + + Physical Section Mark Character Revision ID + + + + + Section Deletion Revision ID + + + + + Section Addition Revision ID + + + + + Section Properties Revision ID + + + + + + + + + + + + + + + + Revision Information for Section Properties + + + + + + + + Break Types + + + + + Page Break + + + + + Column Break + + + + + Line Break + + + + + + + Line Break Text Wrapping Restart Location + + + + + Restart On Next Line + + + + + Restart In Next Text Region Left to Right + + + + + Restart In Next Text Region Right to Left + + + + + Restart On Next Full Line + + + + + + + + Break Type + + + + + Restart Location For Text Wrapping Break + + + + + + Absolute Position Tab Alignment + + + + + Left + + + + + Center + + + + + Right + + + + + + + Absolute Position Tab Positioning Base + + + + + Relative To Text Margins + + + + + Relative To Indents + + + + + + + Absolute Position Tab Leader Character + + + + + No Leader Character + + + + + Dot Leader Character + + + + + Hyphen Leader Character + + + + + Underscore Leader Character + + + + + Centered Dot Leader Character + + + + + + + + Positional Tab Stop Alignment + + + + + Positional Tab Base + + + + + Tab Leader Character + + + + + + + Symbol Character Font + + + + + Symbol Character Code + + + + + + Proofing Error Type + + + + + Start of Region Marked as Spelling Error + + + + + End of Region Marked as Spelling Error + + + + + Start of Region Marked as Grammatical Error + + + + + End of Region Marked as Grammatical Error + + + + + + + + Proofing Error Anchor Type + + + + + + Range Permision Editing Group + + + + + No Users Have Editing Permissions + + + + + All Users Have Editing Permissions + + + + + Administrator Group + + + + + Contributors Group + + + + + Editors Group + + + + + Owners Group + + + + + Current Group + + + + + + + + Annotation ID + + + + + Annotation Displaced By Custom XML Markup + + + + + + + + + Editor Group For Range Permission + + + + + Single User For Range Permission + + + + + First Table Column Covered By Range Permission + + + + + Last Table Column Covered By Range Permission + + + + + + + + + + + Content Contains Significant Whitespace + + + + + + + + + + Break + + + + + Text + + + + + Content Part + + + + + Deleted Text + + + + + Field Code + + + + + Deleted Field Code + + + + + Non Breaking Hyphen Character + + + + + Optional Hyphen Character + + + + + Date Block - Short Day Format + + + + + Date Block - Short Month Format + + + + + Date Block - Short Year Format + + + + + Date Block - Long Day Format + + + + + Date Block - Long Month Format + + + + + Date Block - Long Year Format + + + + + Comment Information Block + + + + + Footnote Reference Mark + + + + + Endnote Reference Mark + + + + + Footnote/Endnote Separator Mark + + + + + Continuation Separator Mark + + + + + Symbol Character + + + + + Page Number Block + + + + + Carriage Return + + + + + Tab Character + + + + + Embedded Object + + + + + VML Object + + + + + Complex Field Character + + + + + Phonetic Guide + + + + + Footnote Reference + + + + + Endnote Reference + + + + + Comment Content Reference Mark + + + + + DrawingML Object + + + + + Absolute Position Tab Character + + + + + Position of Last Calculated Page Break + + + + + + + + + + + + Revision Identifier for Run Properties + + + + + Revision Identifier for Run Deletion + + + + + Revision Identifier for Run + + + + + + Font Type Hint + + + + + High ANSI Font + + + + + East Asian Font + + + + + Complex Script Font + + + + + + + Theme Font + + + + + Major East Asian Theme Font + + + + + Major Complex Script Theme Font + + + + + Major ASCII Theme Font + + + + + Major High ANSI Theme Font + + + + + Minor East Asian Theme Font + + + + + Minor Complex Script Theme Font + + + + + Minor ASCII Theme Font + + + + + Minor High ANSI Theme Font + + + + + + + + Font Content Type + + + + + ASCII Font + + + + + High ANSI Font + + + + + East Asian Font + + + + + Complex Script Font + + + + + ASCII Theme Font + + + + + High ANSI Theme Font + + + + + East Asian Theme Font + + + + + Complex Script Theme Font + + + + + + + + Referenced Character Style + + + + + Run Fonts + + + + + Bold + + + + + Complex Script Bold + + + + + Italics + + + + + Complex Script Italics + + + + + Display All Characters As Capital Letters + + + + + Small Caps + + + + + Single Strikethrough + + + + + Double Strikethrough + + + + + Display Character Outline + + + + + Shadow + + + + + Embossing + + + + + Imprinting + + + + + Do Not Check Spelling or Grammar + + + + + Use Document Grid Settings For Inter-Character Spacing + + + + + Hidden Text + + + + + Web Hidden Text + + + + + Run Content Color + + + + + Character Spacing Adjustment + + + + + Expanded/Compressed Text + + + + + Font Kerning + + + + + Vertically Raised or Lowered Text + + + + + Non-Complex Script Font Size + + + + + Complex Script Font Size + + + + + Text Highlighting + + + + + Underline + + + + + Animated Text Effect + + + + + Text Border + + + + + Run Shading + + + + + Manual Run Width + + + + + Subscript/Superscript Text + + + + + Right To Left Text + + + + + Use Complex Script Formatting on Run + + + + + Emphasis Mark + + + + + Languages for Run Content + + + + + East Asian Typography Settings + + + + + Paragraph Mark Is Always Hidden + + + + + Office Open XML Math + + + + + + + + + + Revision Information for Run Properties + + + + + + + + + + + + + + Run Properties + + + + + + + + + + Inserted Math Control Character + + + + + Deleted Math Control Character + + + + + + + + + + + + + + + + + + + + + + Revision Information for Run Properties on the Paragraph Mark + + + + + + + + + Inserted Paragraph + + + + + Deleted Paragraph + + + + + Move Source Paragraph + + + + + Move Destination Paragraph + + + + + + + + + External Content Import Properties + + + + + + Relationship to Part + + + + + + + + Keep Source Formatting on Import + + + + + + + Phonetic Guide Text Alignment + + + + + Center + + + + + Distribute All Characters + + + + + Distribute all Characters w/ Additional Space On Either Side + + + + + Left Aligned + + + + + Right Aligned + + + + + Vertically Aligned to Right of Base Text + + + + + + + + Phonetic Guide Text Alignment Value + + + + + + + + Phonetic Guide Text Alignment + + + + + Phonetic Guide Text Font Size + + + + + Distance Between Phonetic Guide Text and Phonetic Guide Base Text + + + + + + Phonetic Guide Base Text Font Size + + + + + Language ID for Phonetic Guide + + + + + Invalidated Field Cache + + + + + + + + + Phonetic Guide Text Run + + + + + + + + + + + + + Phonetic Guide Properties + + + + + Phonetic Guide Text + + + + + Phonetic Guide Base Text + + + + + + + Locking Types + + + + + SDT Cannot Be Deleted + + + + + Contents Cannot Be Edited At Runtime + + + + + No Locking + + + + + Contents Cannot Be Edited At Runtime And SDT Cannot Be Deleted + + + + + + + + + Locking Type + + + + + + + List Entry Display Text + + + + + List Entry Value + + + + + + Date Storage Format Types + + + + + Same As Display + + + + + XML Schema Date Format + + + + + XML Schema DateTime Format + + + + + + + + Date Storage Type + + + + + + + Calendar Type Value + + + + + + + + Date Display Mask + + + + + Date Picker Language ID + + + + + Custom XML Data Date Storage Format + + + + + Date Picker Calendar Type + + + + + + Last Known Date in XML Schema DateTime Format + + + + + + + + Combo Box List Item + + + + + + Combo Box Last Saved Value + + + + + + + + Document Part Gallery Filter + + + + + Document Part Category Filter + + + + + Built-In Document Part + + + + + + + + + Drop-Down List Item + + + + + + Drop-down List Last Saved Value + + + + + + + + Document Part Reference + + + + + + + + Allow Soft Line Breaks + + + + + + + XML Namespace Prefix Mappings + + + + + XPath + + + + + Custom XML Data Storage ID + + + + + + + + Run Properties For Structured Document Tag Contents + + + + + Friendly Name + + + + + Structured Document Tag Label + + + + + Structured Document Tag Navigation Order Index + + + + + Locking Setting + + + + + Structured Document Tag Placeholder Text + + + + + Current Contents Are Placeholder Text + + + + + XML Mapping + + + + + Remove Structured Document Tag When Contents Are Edited + + + + + Unique ID + + + + + Programmatic Tag + + + + + + Equation Structured Document Tag + + + + + Combo Box Structured Document Tag + + + + + Date Structured Document Tag + + + + + Built-In Document Part Structured Document Tag + + + + + Document Part Gallery Structured Document Tag + + + + + Drop-Down List Structured Document Tag + + + + + Picture Structured Document Tag + + + + + Rich Text Structured Document Tag + + + + + Plain Text Structured Document Tag + + + + + Citation Structured Document Tag + + + + + Group Structured Document Tag + + + + + Bibliography Structured Document Tag + + + + + + + + + + Structured Document Tag End Character Run Properties + + + + + + + + + Inline-Level Custom XML Element + + + + + Inline-Level Smart Tag + + + + + Inline-Level Structured Document Tag + + + + + Bidirectional Embedding Level + + + + + Bidirectional Override + + + + + Text Run + + + + + + + + + + Direction of Embedding + + + + + + + + Direction of Override + + + + + + Bidirectional Direction Types + + + + + Left toRight + + + + + Right to Left + + + + + + + + + + + + Block-Level Custom XML Element + + + + + Block-Level Structured Document Tag + + + + + Paragraph + + + + + Table + + + + + + + + + + + + + Table Row + + + + + Row-Level Custom XML Element + + + + + Row-Level Structured Document Tag + + + + + + + + + + + + + Table Cell + + + + + Cell-Level Custom XML Element + + + + + Cell-Level Structured Document Tag + + + + + + + + + + + + + Structured Document Tag Properties + + + + + Structured Document Tag End Character Properties + + + + + Block-Level Structured Document Tag Content + + + + + + + + + Structured Document Tag Properties + + + + + Structured Document Tag End Character Properties + + + + + Inline-Level Structured Document Tag Content + + + + + + + + + Structured Document Tag Properties + + + + + Structured Document Tag End Character Properties + + + + + Cell-Level Structured Document Tag Content + + + + + + + + + Structured Document Tag Properties + + + + + Structured Document Tag End Character Properties + + + + + Row-Level Structured Document Tag Content + + + + + + + + Namespace + + + + + Name + + + + + Value + + + + + + + + Custom XML Element Properties + + + + + + + Custom XML Markup Namespace + + + + + Element name + + + + + + + + Smart Tag Properties + + + + + + + Smart Tag Namespace + + + + + Smart Tag Name + + + + + + + + Custom XML Element Properties + + + + + + + Custom XML Element Namespace + + + + + Custom XML Element Name + + + + + + + + Custom XML Element Placeholder Text + + + + + Custom XML Attribute + + + + + + + + + Custom XML Element Properties + + + + + + + Custom XML Element Namespace + + + + + Custom XML Element Name + + + + + + + + Custom XML Element Properties + + + + + + + Custom XML Element Namespace + + + + + Custom XML Element Name + + + + + + + + Smart Tag Property + + + + + + + + + + Simple Field + + + + + Hyperlink + + + + + Anchor for Subdocument Location + + + + + + + + + Paragraph Properties + + + + + + + Revision Identifier for Paragraph Glyph Formatting + + + + + Revision Identifier for Paragraph + + + + + Revision Identifier for Paragraph Deletion + + + + + Revision Identifier for Paragraph Properties + + + + + Default Revision Identifier for Runs + + + + + + Table Width Units + + + + + No Width + + + + + Width in Percent of Table Width + + + + + Width in Twentieths of a Point + + + + + Automatically Determined Width + + + + + + + + Table Row Height + + + + + Table Row Height Type + + + + + + + Table Width Value + + + + + Table Width Type + + + + + + + Grid Column Width + + + + + + + + Grid Column Definition + + + + + + + + + + + Revision Information for Table Grid Column Definitions + + + + + + + + + + + + Table Cell Top Border + + + + + Table Cell Leading Edge Border + + + + + Table Cell Leading Edge Border + + + + + Table Cell Bottom Border + + + + + Table Cell Trailing Edge Border + + + + + Table Cell Trailing Edge Border + + + + + Table Cell Inside Horizontal Edges Border + + + + + Table Cell Inside Vertical Edges Border + + + + + Table Cell Top Left to Bottom Right Diagonal Border + + + + + Table Cell Top Right to Bottom Left Diagonal Border + + + + + + + + + Table Cell Top Margin Exception + + + + + Table Cell Leading Margin Exception + + + + + Table Cell Leading Margin Exception + + + + + Table Cell Bottom Margin Exception + + + + + Table Cell Trailing Margin Exception + + + + + Table Cell Trailing Margin Exception + + + + + + + Merged Cell Type + + + + + Continue Merged Region + + + + + Start/Restart Merged Region + + + + + + + + Vertical Merge Type + + + + + + + Horizontal Merge Type + + + + + + + + Table Cell Conditional Formatting + + + + + Preferred Table Cell Width + + + + + Grid Columns Spanned by Current Table Cell + + + + + Horizontally Merged Cell + + + + + Vertically Merged Cell + + + + + Table Cell Borders + + + + + Table Cell Shading + + + + + Don't Wrap Cell Content + + + + + Single Table Cell Margins + + + + + Table Cell Text Flow Direction + + + + + Fit Text Within Cell + + + + + Table Cell Vertical Alignment + + + + + Ignore End Of Cell Marker In Row Height Calculation + + + + + Header Cells Associated With Table Cell + + + + + + + + + + + Revision Information for Table Cell Properties + + + + + + + + + + + + + + + + + + + + Table Cell Properties + + + + + + + Table Cell Identifier + + + + + + Conditional Formatting Bitmask + + + + + + + + + + Conditional Formatting Bit Mask + + + + + First Row + + + + + Last Row + + + + + First Column + + + + + Last Column + + + + + Odd Numbered Vertical Band + + + + + Even Numbered Vertical Band + + + + + Odd Numbered Horizontal Band + + + + + Even Numbered Horizontal Band + + + + + First Row and First Column + + + + + First Row and Last Column + + + + + Last Row and First Column + + + + + Last Row and Last Column + + + + + + + + Header Cell Reference + + + + + + + + + Table Row Conditional Formatting + + + + + Associated HTML div ID + + + + + Grid Columns Before First Cell + + + + + Grid Columns After Last Cell + + + + + Preferred Width Before Table Row + + + + + Preferred Width After Table Row + + + + + Table Row Cannot Break Across Pages + + + + + Table Row Height + + + + + Repeat Table Row on Every New Page + + + + + Table Row Cell Spacing + + + + + Table Row Alignment + + + + + Hidden Table Row Marker + + + + + + + + + + + Inserted Table Row + + + + + Deleted Table Row + + + + + Revision Information for Table Row Properties + + + + + + + + + + + Table-Level Property Exceptions + + + + + Table Row Properties + + + + + + + Revision Identifier for Table Row Glyph Formatting + + + + + Revision Identifier for Table Row + + + + + Revision Identifier for Table Row Deletion + + + + + Revision Identifier for Table Row Properties + + + + + + Table Layout Type + + + + + Fixed Width Table Layout + + + + + AutoFit Table Layout + + + + + + + + Table Layout Setting + + + + + + Table Overlap Setting + + + + + Floating Table Cannot Overlap + + + + + Floating Table Can Overlap + + + + + + + + Floating Table Overlap Setting + + + + + + + Distance From Left of Table to Text + + + + + (Distance From Right of Table to Text + + + + + Distance From Top of Table to Text + + + + + Distance From Bottom of Table to Text + + + + + Table Vertical Anchor + + + + + Table Horizontal Anchor + + + + + Relative Horizontal Alignment From Anchor + + + + + Absolute Horizontal Distance From Anchor + + + + + Relative Vertical Alignment from Anchor + + + + + Absolute Vertical Distance From Anchor + + + + + + + + Table Cell Top Margin Default + + + + + Table Cell Leading Margin Default + + + + + Table Cell Leading Margin Default + + + + + Table Cell Bottom Margin Default + + + + + Table Cell Trailing Margin Default + + + + + Table Cell Trailing Margin Default + + + + + + + + + Table Top Border + + + + + Table Leading Edge Border + + + + + Table Leading Edge Border + + + + + Table Bottom Border + + + + + Table Trailing Edge Border + + + + + Table Trailing Edge Border + + + + + Table Inside Horizontal Edges Border + + + + + Table Inside Vertical Edges Border + + + + + + + + + Referenced Table Style + + + + + Floating Table Positioning + + + + + Floating Table Allows Other Tables to Overlap + + + + + Visually Right to Left Table + + + + + Number of Rows in Row Band + + + + + Number of Columns in Column Band + + + + + Preferred Table Width + + + + + Table Alignment + + + + + Table Cell Spacing Default + + + + + Table Indent from Leading Margin + + + + + Table Borders + + + + + Table Shading + + + + + Table Layout + + + + + Table Cell Margin Defaults + + + + + Table Style Conditional Formatting Settings + + + + + Table Caption + + + + + Table Description + + + + + + + + + + + Revision Information for Table Properties + + + + + + + + + + + Preferred Table Width Exception + + + + + Table Alignment Exception + + + + + Table Cell Spacing Exception + + + + + Table Indent from Leading Margin Exception + + + + + Table Borders Exceptions + + + + + Table Shading Exception + + + + + Table Layout Exception + + + + + Table Cell Margin Exceptions + + + + + Table Style Conditional Formatting Settings Exception + + + + + + + + + + + Revision Information for Table-Level Property Exceptions + + + + + + + + + + + + + Table Properties + + + + + Table Grid + + + + + + + + + First Row + + + + + Last Row + + + + + First Column + + + + + Last Column + + + + + No Horizontal Banding + + + + + No Vertical Banding + + + + + Bitmask of Table Conditional Formatting + + + + + + Footnote Positioning Location + + + + + Footnotes Positioned at Page Bottom + + + + + Footnotes Positioned Beneath Text + + + + + Footnotes Positioned At End of Section + + + + + Footnotes Positioned At End of Document + + + + + + + + Footnote Position Type + + + + + + Endnote Positioning Location + + + + + Endnotes Positioned at End of Section + + + + + Endnotes Positioned at End of Document + + + + + + + + Endnote Position Type + + + + + + + Numbering Format Type + + + + + Custom Defined Number Format + + + + + + Footnote/Endnote Numbering Restart Locations + + + + + Continue Numbering From Previous Section + + + + + Restart Numbering For Each Section + + + + + Restart Numbering On Each Page + + + + + + + + Automatic Numbering Restart Value + + + + + + + Suppress Footnote/Endnote Reference Mark + + + + + Footnote/Endnote ID Reference + + + + + + + Footnote/Endnote ID + + + + + + + + + + Footnote/Endnote Type + + + + + Footnote/Endnote ID + + + + + + + + Footnote and Endnote Numbering Starting Value + + + + + Footnote and Endnote Numbering Restart Location + + + + + + + + + Footnote Placement + + + + + Footnote Numbering Format + + + + + + + + + + Endnote Placement + + + + + Endnote Numbering Format + + + + + + + + + + + + Special Footnote List + + + + + + + + + + + + + Special Endnote List + + + + + + + + + + + Record Is Included in Mail Merge + + + + + Index of Column Containing Unique Values for Record + + + + + Unique Value for Record + + + + + + + + + Data About Single Data Source Record + + + + + + + Inclusion/Exclusion Data for Data Source + + + + + + + Merge Field Mapping + + + + + Data Source Name for Column + + + + + Predefined Merge Field Name + + + + + Index of Column Being Mapped + + + + + Merge Field Name Language ID + + + + + Use Country-Based Address Field Ordering + + + + + + + Mail Merge ODSO Data Source Types + + + + + Database Data Source + + + + + Address Book Data Source + + + + + Alternate Document Format Data Source + + + + + Alternate Document Format Data Source Two + + + + + Text File Data Source + + + + + E-Mail Program Data Source + + + + + Native Data Souce + + + + + Legacy Document Format Data Source + + + + + Aggregate Data Source + + + + + + + + Data Source Type Value + + + + + + + + UDL Connection String + + + + + Data Source Table Name + + + + + ODSO Data Source File Path + + + + + Column Delimiter for Data Source + + + + + ODSO Data Source Type + + + + + First Row of Data Source Contains Column Names + + + + + External Data Source to Merge Field Mapping + + + + + Reference to Inclusion/Exclusion Data for Data Source + + + + + + + + + Source Document Type + + + + + Query Contains Link to External Query File + + + + + Data Source Type + + + + + Data Source Connection String + + + + + Query For Data Source Records To Merge + + + + + Data Source File Path + + + + + Header Definition File Path + + + + + Remove Blank Lines from Merged Documents + + + + + Merged Document Destination + + + + + Column Containing E-mail Address + + + + + Merged E-mail or Fax Subject Line + + + + + Merged Document To E-Mail Attachment + + + + + View Merged Data Within Document + + + + + Record Currently Displayed In Merged Document + + + + + Mail Merge Error Reporting Setting + + + + + Office Data Source Object Settings + + + + + + + Target Screen Sizes for Generated Web Pages + + + + + Optimize for 544x376 + + + + + Optimize for 640x480 + + + + + Optimize for 720x512 + + + + + Optimize for 800x600 + + + + + Optimize for 1024x768 + + + + + Optimize for 1152x882 + + + + + Optimize for 1152x900 + + + + + Optimize for 1280x1024 + + + + + Optimize for 1600x1200 + + + + + Optimize for 1800x1440 + + + + + Optimize for 1920x1200 + + + + + + + + Target Screen Size Value + + + + + + + + Use Simplified Rules For Table Border Conflicts + + + + + Fit To Expanded Width When Performing Full Justification + + + + + Do Not Create Custom Tab Stop for Hanging Indent + + + + + Do Not Add Leading Between Lines of Text + + + + + Add Additional Space Below Baseline For Underlined East Asian Text + + + + + + Do Not Balance Text Columns within a Section + + + + + Balance Single Byte and Double Byte Characters + + + + + Do Not Center Content on Lines With Exact Line Height + + + + + Display Backslash As Yen Sign + + + + + Underline All Trailing Spaces + + + + + Don't Justify Lines Ending in Soft Line Break + + + + + Only Expand/Condense Text By Whole Points + + + + + Ignore Compression of Full-Width Punctuation Ending a Line + + + + + Print Body Text before Header/Footer Contents + + + + + Print Colors as Black And White without Dithering + + + + + Use Specific Space Width + + + + + Display Page/Column Breaks Present in Frames + + + + + Require Exact Size During Font Substitution + + + + + Ignore Exact Line Height for Last Line on Page + + + + + Ignore Minimum and Exact Line Height for First Line on Page + + + + + Ignore Minimum Line Height for First Line on Page + + + + + Use Static Text Leading + + + + + Do Not Use Space Before On First Line After a Page Break + + + + + Swap Paragraph Borders on Odd Numbered Pages + + + + + Treat Backslash Quotation Delimiter as Two Quotation Marks + + + + + Use Truncated Integer Division For Font Calculation + + + + + Use Specific Small Caps Algorithm + + + + + Use Printer Metrics To Display Documents + + + + + Do Not Suppress Paragraph Borders Next To Frames + + + + + Line Wrap Trailing Spaces + + + + + Ignore Page Break from Continuous Section Break + + + + + Ignore Text Wrapping around Objects at Bottom of Page + + + + + Align Table Rows Independently + + + + + Ignore Width of Last Tab Stop When Aligning Paragraph If It Is Not Left Aligned + + + + + + Add Document Grid Line Pitch To Lines in Table Cells + + + + + Incorrectly Adjust Text Spacing for Specific Unicode Ranges + + + + + Do Not Increase Line Height for Raised/Lowered Text + + + + + Use Fixed Paragraph Spacing for HTML Auto Setting + + + + + Ignore Space Before Table When Deciding If Table Should Wrap Floating Object + + + + + + Allow Table Rows to Wrap Inline Objects Independently + + + + + Use Incorrect Inter-Character Spacing Rules + + + + + Do Not Allow Floating Tables To Break Across Pages + + + + + Do Not Snap to Document Grid in Table Cells with Objects + + + + + Select Field When First or Last Character Is Selected + + + + + Use Legacy Ethiopic and Amharic Line Breaking Rules + + + + + Do Not Allow Hanging Punctuation With Character Grid + + + + + Do Not Compress Compressible Characters When Using Document Grid + + + + + + Incorrectly Display Top Border of Conditional Columns + + + + + Allow Tables to AutoFit Into Page Margins + + + + + Do Not Bypass East Asian/Complex Script Layout Code + + + + + Do Not Automatically Apply List Paragraph Style To Bulleted/Numbered Text + + + + + + Ignore Hanging Indent When Creating Tab Stop After Numbering + + + + + Use Alternate Set of East Asian Line Breaking Rules + + + + + Allow Contextual Spacing of Paragraphs in Tables + + + + + Do Not Ignore Floating Objects When Calculating Paragraph Indentation + + + + + + Do Not AutoFit Tables To Fit Next To Wrapped Objects + + + + + Allow Table Columns To Exceed Preferred Widths of Constituent Cells + + + + + + Underline Following Character Following Numbering + + + + + Always Use Fixed Width for Hangul Characters + + + + + Always Move Paragraph Mark to Page after a Page Break + + + + + Don't Vertically Align Cells Containing Floating Objects + + + + + Don't Break Table Rows Around Floating Tables + + + + + Ignore Vertical Alignment in Textboxes + + + + + Use ANSI Kerning Pairs from Fonts + + + + + Use Cached Paragraph Information for Column Balancing + + + + + Custom Compatibility Setting + + + + + + + + Name of Setting + + + + + Namespace of Setting + + + + + Value of Setting + + + + + + + Document Variable Name + + + + + Document Variable Value + + + + + + + + Single Document Variable + + + + + + + + + Original Document Revision Save ID + + + + + Single Session Revision Save ID + + + + + + + Character-Level Whitespace Compression Settings + + + + + Do Not Compress Whitespace + + + + + Compress Whitespace From Punctuation Characters + + + + + Compress Whitespace From Both Japanese Kana And Punctuation Characters + + + + + + + + + Value + + + + + + + XSL Transformation Location + + + + + Local Identifier for XSL Transform + + + + + + + + Run Properties + + + + + + + + + Paragraph Properties + + + + + + + + + Default Run Properties + + + + + Default Paragraph Properties + + + + + + + Theme Color Reference + + + + + Dark 1 Theme Color Reference + + + + + Light 1 Theme Color Reference + + + + + Dark 2 Theme Color Reference + + + + + Light 2 Theme Color Reference + + + + + Accent 1 Theme Color Reference + + + + + Accent 2 Theme Color Reference + + + + + Accent 3 Theme Color Reference + + + + + Accent4 Theme Color Reference + + + + + Accent5 Theme Color Reference + + + + + Accent 6 Theme Color Reference + + + + + Hyperlink Theme Color Reference + + + + + Followed Hyperlink Theme Color Reference + + + + + + + + Background 1 Theme Color Mapping + + + + + Text 1 Theme Color Mapping + + + + + Background 2 Theme Color Mapping + + + + + Text 2 Theme Color Mapping + + + + + Accent 1 Theme Color Mapping + + + + + Accent 2 Theme Color Mapping + + + + + Accent3 Theme Color Mapping + + + + + Accent4 Theme Color Mapping + + + + + Accent5 Theme Color Mapping + + + + + Accent6 Theme Color Mapping + + + + + Hyperlink Theme Color Mapping + + + + + Followed Hyperlink Theme Color Mapping + + + + + + + Use Actual Pages, Not Virtual Pages + + + + + Virtual Page Width + + + + + Virtual Page Height + + + + + Font Size Scaling + + + + + + + Recommend Write Protection in User Interface + + + + + + + + + + Write Protection + + + + + Document View Setting + + + + + Magnification Setting + + + + + Remove Personal Information from Document Properties + + + + + Remove Date and Time from Annotations + + + + + Do Not Display Visual Boundary For Header/Footer or Between Pages + + + + + + Display Background Objects When Displaying Document + + + + + Print PostScript Codes With Document Text + + + + + Print Fractional Character Widths + + + + + Only Print Form Field Content + + + + + Embed TrueType Fonts + + + + + Embed Common System Fonts + + + + + Subset Fonts When Embedding + + + + + Only Save Form Field Content + + + + + Mirror Page Margins + + + + + Align Paragraph and Table Borders with Page Border + + + + + Page Border Excludes Header + + + + + Page Border Excludes Footer + + + + + Position Gutter At Top of Page + + + + + Do Not Display Visual Indication of Spelling Errors + + + + + Do Not Display Visual Indication of Grammatical Errors + + + + + Grammar Checking Settings + + + + + Spelling and Grammatical Checking State + + + + + Structured Document Tag Placeholder Text Should be Resaved + + + + + Attached Document Template + + + + + Automatically Update Styles From Document Template + + + + + Suggested Filtering for List of Document Styles + + + + + Suggested Sorting for List of Document Styles + + + + + Document Classification + + + + + Mail Merge Settings + + + + + Visibility of Annotation Types + + + + + Track Revisions to Document + + + + + Do Not Use Move Syntax When Tracking Revisions + + + + + Do Not Track Formatting Revisions When Tracking Revisions + + + + + Document Editing Restrictions + + + + + Allow Automatic Formatting to Override Formatting Protection Settings + + + + + + Prevent Modification of Themes Part + + + + + Prevent Replacement of Styles Part + + + + + Distance Between Automatic Tab Stops + + + + + Automatically Hyphenate Document Contents When Displayed + + + + + Maximum Number of Consecutively Hyphenated Lines + + + + + Hyphenation Zone + + + + + Do Not Hyphenate Words in ALL CAPITAL LETTERS + + + + + Show E-Mail Message Header + + + + + Percentage of Document to Use When Generating Summary + + + + + Paragraph Style Applied to Automatically Generated Paragraphs + + + + + Default Table Style for Newly Inserted Tables + + + + + Different Even/Odd Page Headers and Footers + + + + + Reverse Book Fold Printing + + + + + Book Fold Printing + + + + + Number of Pages Per Booklet + + + + + Drawing Grid Horizontal Grid Unit Size + + + + + Drawing Grid Vertical Grid Unit Size + + + + + Distance between Horizontal Gridlines + + + + + Distance between Vertical Gridlines + + + + + Do Not Use Margins for Drawing Grid Origin + + + + + Drawing Grid Horizontal Origin Point + + + + + Drawing Grid Vertical Origin Point + + + + + Do Not Show Visual Indicator For Form Fields + + + + + Never Kern Punctuation Characters + + + + + Character-Level Whitespace Compression + + + + + Print Two Pages Per Sheet + + + + + Use Strict Kinsoku Rules for Japanese Text + + + + + Custom Set of Characters Which Cannot End a Line + + + + + Custom Set Of Characters Which Cannot Begin A Line + + + + + Generate Thumbnail For Document On Save + + + + + Do Not Validate Custom XML Markup Against Schemas + + + + + Allow Saving Document As XML File When Custom XML Markup Is Invalid + + + + + + Ignore Mixed Content When Validating Custom XML Markup + + + + + Use Custom XML Element Names as Default Placeholder Text + + + + + Do Not Show Visual Indicator For Invalid Custom XML Markup + + + + + Only Save Custom XML Markup + + + + + Save Document as XML File through Custom XSL Transform + + + + + Custom XSL Transform To Use When Saving As XML File + + + + + Show Visual Indicators for Custom XML Markup Start/End Locations + + + + + + Do Not Mark Custom XML Elements With No Namespace As Invalid + + + + + Automatically Recalculate Fields on Open + + + + + Default Properties for VML Objects in Header and Footer + + + + + Document-Wide Footnote Properties + + + + + Document-Wide Endnote Properties + + + + + Compatibility Settings + + + + + Document Variables + + + + + Listing of All Revision Save ID Values + + + + + properties of math in the document + + + + + Attached Custom XML Schema + + + + + Theme Font Languages + + + + + Theme Color Mappings + + + + + Do Not Include Content in Text Boxes, Footnotes, and Endnotes in Document + Statistics + + + + + + Do Not Automatically Compress Images + + + + + Upgrade Document on Open + + + + + Caption Settings + + + + + Freeze Document Layout + + + + + Supplementary Smart Tag Information + + + + + Custom XML Schema List + + + + + Default Properties for VML Objects in Main Document + + + + + Remove Smart Tags When Saving + + + + + Radix Point for Field Code Evaluation + + + + + List Separator for Field Code Evaluation + + + + + + + + Style Sorting + + + + + + + Display All Styles + + + + + Display Only Custom Styles + + + + + Display Latent Styles + + + + + Display Styles in Use + + + + + Display Heading Styles + + + + + Display Numbering Styles + + + + + Display Table Styles + + + + + Display Run Level Direct Formatting + + + + + Display Paragraph Level Direct Formatting + + + + + Display Direct Formatting on Numbering Data + + + + + Display Direct Formatting on Tables + + + + + Display Styles to Remove Formatting + + + + + Display Heading 1 through 3 + + + + + Only Show Visible Styles + + + + + Use the Alternate Style Name + + + + + Bitmask of Suggested Filtering Options + + + + + + Style Sort Settings + + + + + Sort by Style Name + + + + + Sort by Style Priority + + + + + Sort by Default Method + + + + + Sort by Font + + + + + Sort by Based On Style + + + + + Sort by Style Type + + + + + Sort by Style Name + + + + + Sort by Style Priority + + + + + Sort by Default Method + + + + + Sort by Font + + + + + Sort by Based On Style + + + + + Sort by Style Type + + + + + + + + + Root Frameset Definition + + + + + Information about HTML div Elements + + + + + Output Encoding When Saving as Web Page + + + + + Disable Features Not Supported by Target Web Browser + + + + + Utilize VML When Saving as Web Page + + + + + Allow PNG as Graphic Format + + + + + Do Not Rely on CSS for Font Face Formatting + + + + + Recommend Web Page Format over Single File Web Page Format + + + + + Do Not Place Supporting Files in Subdirectory + + + + + Do Not Use File Names Longer than 8.3 Characters + + + + + Pixels per Inch for Graphics/Images + + + + + Target Screen Size for Web Page + + + + + Save Smart Tag Data in XML Property Bag + + + + + + + Frame Scrollbar Visibility + + + + + Always Show Scrollbar + + + + + Never Show Scrollbar + + + + + Automatically Show Scrollbar As Needed + + + + + + + + Scrollbar Display Option Value + + + + + + + + + Target Output Profile + + + + + + + + + + Frame Size + + + + + Frame Name + + + + + Frame or Frameset Title + + + + + Frame Long Description + + + + + Source File for Frame + + + + + Left and Right Margin for Frame + + + + + Top and Bottom Margin for Frame + + + + + Scrollbar Display Option + + + + + Frame Cannot Be Resized + + + + + Maintain Link to Existing File + + + + + + + Frameset Layout Order + + + + + Stack Frames Vertically + + + + + Stack Frames Horizontally + + + + + Do Not Stack Frames + + + + + + + + Frameset Layout Value + + + + + + + + Frameset Splitter Width + + + + + Frameset Splitter Color + + + + + Do Not Display Frameset Splitters + + + + + Frameset Splitter Border Style + + + + + + + + + Nested Frameset Size + + + + + Frameset Splitter Properties + + + + + Frameset Layout + + + + + + + Nested Frameset Definition + + + + + Single Frame Properties + + + + + + + + + + Picture Numbering Symbol Properties + + + + + + + Picture Numbering Symbol ID + + + + + + Content Between Numbering Symbol and Paragraph Text + + + + + Tab Between Numbering and Text + + + + + Space Between Numbering and Text + + + + + Nothing Between Numbering and Text + + + + + + + + Character Type Between Numbering and Text + + + + + + + Level Text + + + + + Level Text Is Null Character + + + + + + + Use Legacy Numbering Properties + + + + + Legacy Spacing + + + + + Legacy Indent + + + + + + + + Starting Value + + + + + Numbering Format + + + + + Restart Numbering Level Symbol + + + + + Paragraph Style's Associated Numbering Level + + + + + Display All Levels Using Arabic Numerals + + + + + Content Between Numbering Symbol and Paragraph Text + + + + + Numbering Level Text + + + + + Picture Numbering Symbol Definition Reference + + + + + Legacy Numbering Level Properties + + + + + Justification + + + + + Numbering Level Associated Paragraph Properties + + + + + Numbering Symbol Run Properties + + + + + + Numbering Level + + + + + Template Code + + + + + Tentative Numbering + + + + + + Numbering Definition Type + + + + + Single Level Numbering Definition + + + + + Multilevel Numbering Definition + + + + + Hybrid Multilevel Numbering Definition + + + + + + + + Abstract Numbering Definition Type + + + + + + + + Abstract Numbering Definition Identifier + + + + + Abstract Numbering Definition Type + + + + + Numbering Template Code + + + + + Abstract Numbering Definition Name + + + + + Numbering Style Definition + + + + + Numbering Style Reference + + + + + Numbering Level Definition + + + + + + Abstract Numbering Definition ID + + + + + + + + Numbering Level Starting Value Override + + + + + Numbering Level Override Definition + + + + + + Numbering Level ID + + + + + + + + Abstract Numbering Definition Reference + + + + + Numbering Level Definition Override + + + + + + Numbering Definition Instance ID + + + + + + + + Picture Numbering Symbol Definition + + + + + Abstract Numbering Definition + + + + + Numbering Definition Instance + + + + + Last Reviewed Abstract Numbering Definition + + + + + + + Conditional Table Style Formatting Types + + + + + Whole table formatting + + + + + First Row Conditional Formatting + + + + + Last table row formatting + + + + + First Column Conditional Formatting + + + + + Last table column formatting + + + + + Banded Column Conditional Formatting + + + + + Even Column Stripe Conditional Formatting + + + + + Banded Row Conditional Formatting + + + + + Even Row Stripe Conditional Formatting + + + + + Top right table cell formatting + + + + + Top left table cell formatting + + + + + Bottom right table cell formatting + + + + + Bottom left table cell formatting + + + + + + + + + Table Style Conditional Formatting Paragraph Properties + + + + + Table Style Conditional Formatting Run Properties + + + + + Table Style Conditional Formatting Table Properties + + + + + Table Style Conditional Formatting Table Row Properties + + + + + Table Style Conditional Formatting Table Cell Properties + + + + + + Table Style Conditional Formatting Type + + + + + + Style Types + + + + + Paragraph Style + + + + + Character Style + + + + + Table Style + + + + + Numbering Style + + + + + + + + + Primary Style Name + + + + + Alternate Style Names + + + + + Parent Style ID + + + + + Style For Next Paragraph + + + + + Linked Style Reference + + + + + Automatically Merge User Formatting Into Style Definition + + + + + Hide Style From User Interface + + + + + Optional User Interface Sorting Order + + + + + Hide Style From Main User Interface + + + + + Remove Semi-Hidden Property When Style Is Used + + + + + Primary Style + + + + + Style Cannot Be Applied + + + + + E-Mail Message Text Style + + + + + E-Mail Message Composition Style + + + + + E-Mail Message Reply Style + + + + + Revision Identifier for Style Definition + + + + + Style Paragraph Properties + + + + + Run Properties + + + + + Style Table Properties + + + + + Style Table Row Properties + + + + + Style Table Cell Properties + + + + + Style Conditional Table Formatting Properties + + + + + + Style Type + + + + + Style ID + + + + + Default Style + + + + + User-Defined Style + + + + + + + Primary Style Name + + + + + Latent Style Locking Setting + + + + + Override default sorting order + + + + + Semi hidden text override + + + + + Unhide when used + + + + + Latent Style Primary Style Setting + + + + + + + + Latent Style Exception + + + + + + Default Style Locking Setting + + + + + Default User Interface Priority Setting + + + + + Default Semi-Hidden Setting + + + + + Default Hidden Until Used Setting + + + + + Default Primary Style Setting + + + + + Latent Style Count + + + + + + + + Document Default Paragraph and Run Properties + + + + + Latent Style Information + + + + + Style Definition + + + + + + + + Value + + + + + + Font Family Value + + + + + Novelty Font + + + + + Monospace Font + + + + + Proportional Font With Serifs + + + + + Script Font + + + + + Proportional Font Without Serifs + + + + + No Font Family + + + + + + + + Font Family Value + + + + + + Font Pitch Value + + + + + Fixed Width + + + + + Proportional Width + + + + + Default + + + + + + + + Value + + + + + + + First 32 Bits of Unicode Subset Bitfield + + + + + Second 32 Bits of Unicode Subset Bitfield + + + + + Third 32 Bits of Unicode Subset Bitfield + + + + + Fourth 32 Bits of Unicode Subset Bitfield + + + + + Lower 32 Bits of Code Page Bit Field + + + + + Upper 32 Bits of Code Page Bit Field + + + + + + + + + Embedded Font Obfuscation Key + + + + + Embedded Font Is Subsetted + + + + + + + + + + Alternate Names for Font + + + + + Panose-1 Typeface Classification Number + + + + + Character Set Supported By Font + + + + + Font Family + + + + + Raster or Vector Font + + + + + Font Pitch + + + + + Supported Unicode Subranges and Code Pages + + + + + Regular Font Style Embedding + + + + + Bold Style Font Style Embedding + + + + + Italic Font Style Embedding + + + + + Bold Italic Font Style Embedding + + + + + + Primary Font Name + + + + + + + + Properties for a Single Font + + + + + + + + + Top Border for HTML div + + + + + Left Border for HTML div + + + + + Bottom Border for HTML div + + + + + Right Border for HTML div + + + + + + + + + Data for HTML blockquote Element + + + + + Data for HTML body Element + + + + + Left Margin for HTML div + + + + + Right Margin for HTML div + + + + + Top Margin for HTML div + + + + + Bottom Margin for HTML div + + + + + Set of Borders for HTML div + + + + + Child div Elements Contained within Current div + + + + + + div Data ID + + + + + + + + Information About Single HTML div Element + + + + + + + + + + Rich Text Box Content Container + + + + + + + + + + + + + + + + + + + Anchor for Imported External Content + + + + + + + + + Proofing Error Anchor + + + + + Range Permission Start + + + + + Range Permission End + + + + + + Inserted Run Content + + + + + Deleted Run Content + + + + + Move Source Run Content + + + + + Move Destination Run Content + + + + + + + + + + + Document Final Section Properties + + + + + + + + + + + + + + Comment Content + + + + + + + Comments Collection + + + + + + + Footnote Content + + + + + + + Document Footnotes + + + + + + + Endnote Content + + + + + + + Document Endnotes + + + + + Header + + + + + Footer + + + + + + Smart Tag Namespace + + + + + Smart Tag Name + + + + + Smart Tag Supplementary URL + + + + + + Theme Color + + + + + Dark 1 Theme Color + + + + + Light 1 Theme Color + + + + + Dark 2 Theme Color + + + + + Light 2 Theme Color + + + + + Accent 1 Theme Color + + + + + Accent 2 Theme Color + + + + + Accent 3 Theme Color + + + + + Accent 4 Theme Color + + + + + Accent 5 Theme Color + + + + + Accent 6 Theme Color + + + + + Hyperlink Theme Color + + + + + Followed Hyperlink Theme Color + + + + + No Theme Color + + + + + Background 1 Theme Color + + + + + Text 1 Theme Color + + + + + Background 2 Theme Color + + + + + Text 2 Theme Color + + + + + + + Insertion Behavior Types + + + + + Insert Content At Specified Location + + + + + Ensure Entry Is In New Paragraph + + + + + Ensure Entry Is On New Page + + + + + + + + Insertion Behavior Value + + + + + + + + Entry Insertion Behavior + + + + + + + Entry Types + + + + + No Type + + + + + Normal + + + + + Automatically Replace Name With Content + + + + + AutoText User Interface Entry + + + + + AutoCorrect Entry + + + + + Form Field Help Text + + + + + Structured Document Tag Placeholder Text + + + + + + + + Type Value + + + + + + + + Entry Type + + + + + + Entry Is Of All Types + + + + + + Entry Gallery Types + + + + + Structured Document Tag Placeholder Text Gallery + + + + + All Galleries + + + + + No Gallery Classification + + + + + Document Parts Gallery + + + + + Cover Page Gallery + + + + + Equations Gallery + + + + + Footers Gallery + + + + + Headers Gallery + + + + + Page Numbers Gallery + + + + + Table Gallery + + + + + Watermark Gallery + + + + + AutoText Gallery + + + + + Text Box Gallery + + + + + Page Numbers At Top Gallery + + + + + Page Numbers At Bottom Gallery + + + + + Page Numbers At Margins Gallery + + + + + Table of Contents Gallery + + + + + Bibliography Gallery + + + + + Custom Quick Parts Gallery + + + + + Custom Cover Page Gallery + + + + + Custom Equation Gallery + + + + + Custom Footer Gallery + + + + + Custom Header Gallery + + + + + Custom Page Number Gallery + + + + + Custom Table Gallery + + + + + Custom Watermark Gallery + + + + + Custom AutoText Gallery + + + + + Custom Text Box Gallery + + + + + Custom Page Number At Top Gallery + + + + + Custom Page Number At Bottom Gallery + + + + + Custom Page Number At Margins Gallery + + + + + Custom Table of Contents Gallery + + + + + Custom Bibliography Gallery + + + + + Custom 1 Gallery + + + + + Custom 2 Gallery + + + + + Custom 3 Gallery + + + + + Custom 4 Gallery + + + + + Custom 5 Gallery + + + + + + + + Gallery Value + + + + + + + + Category Associated With Entry + + + + + Gallery Associated With Entry + + + + + + + + Name Value + + + + + Built-In Entry + + + + + + + + Entry Name + + + + + Associated Paragraph Style Name + + + + + Entry Categorization + + + + + Entry Types + + + + + Entry Insertion Behaviors + + + + + Description for Entry + + + + + Entry ID + + + + + + + + + Glossary Document Entry Properties + + + + + Contents of Glossary Document Entry + + + + + + + + + Glossary Document Entry + + + + + + + Document Settings + + + + + Web Page Settings + + + + + Font Table Root Element + + + + + Numbering Definitions + + + + + Style Definitions + + + + + Automatic Caption Positioning Values + + + + + Position Caption Above Object + + + + + Position Caption Below Object + + + + + Position Caption Left Of Object + + + + + Position Caption Right Of Object + + + + + + + + Caption Type Name + + + + + Automatic Caption Placement + + + + + Include Chapter Number in Field for Caption + + + + + Style for Chapter Headings + + + + + Do Not Include Name In Caption + + + + + Caption Numbering Format + + + + + Chapter Number/Item Index Separator + + + + + + + Identifier of Object to be Automatically Captioned + + + + + Caption Used for Automatic Captioning + + + + + + + + Single Automatic Captioning Setting + + + + + + + + + Single Caption Type Definition + + + + + Automatic Captioning Settings + + + + + + + + + Document Background + + + + + + + + + + + Document Body + + + + + + Document Conformance Class + + + + + + + + + + + + List of Glossary Document Entries + + + + + + + + + Document + + + + + Glossary Document Root Element + + From 05aacd96724486d9247c8bb316e2dbec809c5854 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Sun, 6 Aug 2017 14:52:20 +0200 Subject: [PATCH 007/139] #382 : Validation for Open XML --- src/PhpPresentation/Shape/Chart/Marker.php | 6 +- src/PhpPresentation/Slide/Transition.php | 3 +- .../Writer/ODPresentation/Content.php | 5 +- .../Writer/PowerPoint2007/AbstractSlide.php | 11 +- .../Writer/PowerPoint2007/PptCharts.php | 145 ++++++++---------- .../Writer/PowerPoint2007/PptChartsTest.php | 58 +++---- .../PowerPoint2007/PptSlideMastersTest.php | 2 + .../Writer/PowerPoint2007/PptSlidesTest.php | 7 +- 8 files changed, 101 insertions(+), 136 deletions(-) diff --git a/src/PhpPresentation/Shape/Chart/Marker.php b/src/PhpPresentation/Shape/Chart/Marker.php index 7360697750..c1ca912fb1 100644 --- a/src/PhpPresentation/Shape/Chart/Marker.php +++ b/src/PhpPresentation/Shape/Chart/Marker.php @@ -66,12 +66,11 @@ public function getSymbol() /** * @param string $symbol - * @return Marker + * @return $this */ public function setSymbol($symbol = self::SYMBOL_NONE) { $this->symbol = $symbol; - return $this; } @@ -85,12 +84,11 @@ public function getSize() /** * @param int $size - * @return Marker + * @return $this */ public function setSize($size = 5) { $this->size = $size; - return $this; } } diff --git a/src/PhpPresentation/Slide/Transition.php b/src/PhpPresentation/Slide/Transition.php index 56c760e396..b2e6a29586 100644 --- a/src/PhpPresentation/Slide/Transition.php +++ b/src/PhpPresentation/Slide/Transition.php @@ -33,8 +33,7 @@ class Transition const TRANSITION_BLINDS_VERTICAL = 'blinds_vert'; const TRANSITION_CHECKER_HORIZONTAL = 'checker_horz'; const TRANSITION_CHECKER_VERTICAL = 'checker_vert'; - const TRANSITION_CIRCLE_HORIZONTAL = 'circle_horz'; - const TRANSITION_CIRCLE_VERTICAL = 'circle_vert'; + const TRANSITION_CIRCLE = 'circle'; const TRANSITION_COMB_HORIZONTAL = 'comb_horz'; const TRANSITION_COMB_VERTICAL = 'comb_vert'; const TRANSITION_COVER_DOWN = 'cover_d'; diff --git a/src/PhpPresentation/Writer/ODPresentation/Content.php b/src/PhpPresentation/Writer/ODPresentation/Content.php index 028836e757..cf64064558 100644 --- a/src/PhpPresentation/Writer/ODPresentation/Content.php +++ b/src/PhpPresentation/Writer/ODPresentation/Content.php @@ -1152,10 +1152,7 @@ public function writeStyleSlide(XMLWriter $objWriter, Slide $slide, $incPage) case Transition::TRANSITION_CHECKER_VERTICAL: $objWriter->writeAttribute('presentation:transition-style', 'vertical-checkerboard'); break; - case Transition::TRANSITION_CIRCLE_HORIZONTAL: - $objWriter->writeAttribute('presentation:transition-style', 'none'); - break; - case Transition::TRANSITION_CIRCLE_VERTICAL: + case Transition::TRANSITION_CIRCLE: $objWriter->writeAttribute('presentation:transition-style', 'none'); break; case Transition::TRANSITION_COMB_HORIZONTAL: diff --git a/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php b/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php index 483c23aa80..e558108b2f 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php @@ -1390,15 +1390,8 @@ protected function writeSlideTransition(XMLWriter $objWriter, $transition) $objWriter->writeAttribute('dir', 'vert'); $objWriter->endElement(); break; - case Slide\Transition::TRANSITION_CIRCLE_HORIZONTAL: - $objWriter->startElement('p:circle'); - $objWriter->writeAttribute('dir', 'horz'); - $objWriter->endElement(); - break; - case Slide\Transition::TRANSITION_CIRCLE_VERTICAL: - $objWriter->startElement('p:circle'); - $objWriter->writeAttribute('dir', 'vert'); - $objWriter->endElement(); + case Slide\Transition::TRANSITION_CIRCLE: + $objWriter->writeElement('p:circle'); break; case Slide\Transition::TRANSITION_COMB_HORIZONTAL: $objWriter->startElement('p:comb'); diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index 6796d3ae23..4959a30b0b 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -104,7 +104,7 @@ public function writeChart(Chart $chart) // c:hPercent $hPercent = $chart->getView3D()->getHeightPercent(); - $objWriter->writeElementIf($hPercent != null, 'c:hPercent', 'val', $hPercent . '%'); + $objWriter->writeElementIf($hPercent != null, 'c:hPercent', 'val', $hPercent); // c:rotY $objWriter->startElement('c:rotY'); @@ -804,6 +804,34 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, $includeShee $objWriter->writeAttribute('val', $subject->getBarGrouping()); $objWriter->endElement(); + // c:gapWidth + $objWriter->startElement('c:gapWidth'); + $objWriter->writeAttribute('val', $subject->getGapWidthPercent()); + $objWriter->endElement(); + + // c:overlap + $objWriter->startElement('c:overlap'); + if ($subject->getBarGrouping() == Bar::GROUPING_CLUSTERED) { + $objWriter->writeAttribute('val', '0'); + } elseif ($subject->getBarGrouping() == Bar::GROUPING_STACKED || $subject->getBarGrouping() == Bar::GROUPING_PERCENTSTACKED) { + $objWriter->writeAttribute('val', '100'); + } + $objWriter->endElement(); + + // c:axId + $objWriter->startElement('c:axId'); + $objWriter->writeAttribute('val', '52743552'); + $objWriter->endElement(); + + // c:axId + $objWriter->startElement('c:axId'); + $objWriter->writeAttribute('val', '52749440'); + $objWriter->endElement(); + + // c:extLst + $objWriter->startElement('c:extLst'); + $objWriter->endElement(); + // Write series $seriesIndex = 0; foreach ($subject->getSeries() as $series) { @@ -930,7 +958,7 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, $includeShee $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); // c:separator - $objWriter->writeElementIf($series->hasShowSeparator(), 'c:separator', 'val', $series->getSeparator()); + $this->writeElementWithValAttribute($objWriter, 'c:separator', $series->hasShowSeparator() ? $series->getSeparator() : ''); $objWriter->endElement(); @@ -966,40 +994,6 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, $includeShee ++$seriesIndex; } - // c:overlap - $objWriter->startElement('c:overlap'); - if ($subject->getBarGrouping() == Bar::GROUPING_CLUSTERED) { - $objWriter->writeAttribute('val', '0'); - } elseif ($subject->getBarGrouping() == Bar::GROUPING_STACKED || $subject->getBarGrouping() == Bar::GROUPING_PERCENTSTACKED) { - $objWriter->writeAttribute('val', '100'); - } - $objWriter->endElement(); - - // c:gapWidth - $objWriter->startElement('c:gapWidth'); - $objWriter->writeAttribute('val', $subject->getGapWidthPercent()); - $objWriter->endElement(); - - // c:shape - $objWriter->startElement('c:shape'); - $objWriter->writeAttribute('val', 'box'); - $objWriter->endElement(); - - // c:axId - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', '52743552'); - $objWriter->endElement(); - - // c:axId - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', '52749440'); - $objWriter->endElement(); - - // c:axId - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', '0'); - $objWriter->endElement(); - $objWriter->endElement(); } @@ -1026,6 +1020,26 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, $include $objWriter->writeAttribute('val', $subject->getBarGrouping()); $objWriter->endElement(); + // c:gapWidth + $objWriter->startElement('c:gapWidth'); + $objWriter->writeAttribute('val', $subject->getGapWidthPercent()); + $objWriter->endElement(); + + // c:axId + $objWriter->startElement('c:axId'); + $objWriter->writeAttribute('val', '52743552'); + $objWriter->endElement(); + + // c:axId + $objWriter->startElement('c:axId'); + $objWriter->writeAttribute('val', '52749440'); + $objWriter->endElement(); + + // c:axId + $objWriter->startElement('c:axId'); + $objWriter->writeAttribute('val', '0'); + $objWriter->endElement(); + // Write series $seriesIndex = 0; foreach ($subject->getSeries() as $series) { @@ -1140,9 +1154,6 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, $include // c:showLeaderLines $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - // c:separator - $objWriter->writeElementIf($series->hasShowSeparator(), 'c:separator', 'val', $series->getSeparator()); - $objWriter->endElement(); // c:spPr @@ -1177,31 +1188,6 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, $include ++$seriesIndex; } - // c:gapWidth - $objWriter->startElement('c:gapWidth'); - $objWriter->writeAttribute('val', $subject->getGapWidthPercent()); - $objWriter->endElement(); - - // c:shape - $objWriter->startElement('c:shape'); - $objWriter->writeAttribute('val', 'box'); - $objWriter->endElement(); - - // c:axId - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', '52743552'); - $objWriter->endElement(); - - // c:axId - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', '52749440'); - $objWriter->endElement(); - - // c:axId - $objWriter->startElement('c:axId'); - $objWriter->writeAttribute('val', '0'); - $objWriter->endElement(); - $objWriter->endElement(); } @@ -1349,9 +1335,6 @@ protected function writeTypePie(XMLWriter $objWriter, Pie $subject, $includeShee // c:showLeaderLines $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - // c:separator - $objWriter->writeElementIf($series->hasShowSeparator(), 'c:separator', 'val', $series->getSeparator()); - $objWriter->endElement(); // Write X axis data @@ -1517,9 +1500,6 @@ protected function writeTypePie3D(XMLWriter $objWriter, Pie3D $subject, $include // c:showLeaderLines $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - // c:separator - $objWriter->writeElementIf($series->hasShowSeparator(), 'c:separator', 'val', $series->getSeparator()); - $objWriter->endElement(); // Write X axis data @@ -1669,9 +1649,6 @@ protected function writeTypeLine(XMLWriter $objWriter, Line $subject, $includeSh // c:showLeaderLines $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); - // c:separator - $objWriter->writeElementIf($series->hasShowSeparator(), 'c:separator', 'val', $series->getSeparator()); - // > c:dLbls $objWriter->endElement(); @@ -1842,19 +1819,10 @@ protected function writeTypeScatter(XMLWriter $objWriter, Scatter $subject, $inc $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); // c:separator - $objWriter->writeElementIf($series->hasShowSeparator(), 'c:separator', 'val', $series->getSeparator()); + $this->writeElementWithValAttribute($objWriter, 'c:separator', $series->hasShowSeparator() ? $series->getSeparator() : ''); $objWriter->endElement(); - // c:spPr - $objWriter->startElement('c:spPr'); - // Write fill - $this->writeFill($objWriter, $series->getFill()); - // Write outline - $this->writeOutline($objWriter, $series->getOutline()); - // ## c:spPr - $objWriter->endElement(); - // Write X axis data $axisXData = array_keys($series->getValues()); @@ -1877,6 +1845,15 @@ protected function writeTypeScatter(XMLWriter $objWriter, Scatter $subject, $inc $objWriter->writeAttribute('val', '0'); $objWriter->endElement(); + // c:spPr + $objWriter->startElement('c:spPr'); + // Write fill + $this->writeFill($objWriter, $series->getFill()); + // Write outline + $this->writeOutline($objWriter, $series->getOutline()); + // ## c:spPr + $objWriter->endElement(); + $objWriter->endElement(); ++$seriesIndex; @@ -2171,7 +2148,7 @@ protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis, // c:lblOffset $objWriter->startElement('c:lblOffset'); - $objWriter->writeAttribute('val', '100%'); + $objWriter->writeAttribute('val', 100); $objWriter->endElement(); } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php index 89dc1f58ad..b44e8e6e72 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php @@ -589,7 +589,8 @@ public function testTypeLineGridlines() public function testTypeLineMarker() { do { - $expectedSymbol = array_rand(Marker::$arraySymbol); + $expectedSymbolKey = array_rand(Marker::$arraySymbol); + $expectedSymbol = Marker::$arraySymbol[$expectedSymbolKey]; } while ($expectedSymbol == Marker::SYMBOL_NONE); $expectedSize = rand(2, 72); $expectedEltSymbol = '/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:marker/c:symbol'; @@ -751,32 +752,6 @@ public function testTypePie() $this->assertIsSchemaOOXMLValid(); } - public function testTypePieSeparator() - { - $value = ';'; - - $oSlide = $this->oPresentation->getActiveSlide(); - $oShape = $oSlide->createChartShape(); - $oPie = new Pie(); - $oSeries = new Series('Downloads', $this->seriesData); - $oPie->addSeries($oSeries); - $oShape->getPlotArea()->setType($oPie); - - $element = '/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:separator'; - $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - - $this->assertIsSchemaOOXMLValid(); - - $oSeries->setSeparator($value); - $this->resetPresentationFile(); - - $element = '/c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls/c:separator'; - $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $value); - - $this->assertIsSchemaOOXMLValid(); - } - public function testTypePie3D() { $oSlide = $this->oPresentation->getActiveSlide(); @@ -948,6 +923,33 @@ public function testTypeScatterMarker() $this->assertIsSchemaOOXMLValid(); } + public function testTypeScatterSeparator() + { + $value = ';'; + + $oSlide = $this->oPresentation->getActiveSlide(); + $oShape = $oSlide->createChartShape(); + $oScatter = new Scatter(); + $oSeries = new Series('Downloads', $this->seriesData); + $oScatter->addSeries($oSeries); + $oShape->getPlotArea()->setType($oScatter); + + $element = '/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:dLbls/c:separator'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', ''); + + $this->assertIsSchemaOOXMLValid(); + + $oSeries->setSeparator($value); + $this->resetPresentationFile(); + + $element = '/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:dLbls/c:separator'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $value); + + $this->assertIsSchemaOOXMLValid(); + } + public function testTypeScatterSeriesOutline() { $expectedWidth = rand(1, 100); @@ -1032,7 +1034,7 @@ public function testView3D() $element = '/c:chartSpace/c:chart/c:view3D/c:hPercent'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '100%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 100); $this->assertIsSchemaOOXMLValid(); diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php index ed6ee096ac..4393463c0b 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php @@ -14,6 +14,8 @@ */ class PptSlideMastersTest extends PhpPresentationTestCase { + protected $writerName = 'PowerPoint2007'; + public function testWriteSlideMasterRelationships() { $writer = new PptSlideMasters(); diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php index 9ad9a73009..76cf79cc76 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php @@ -895,11 +895,8 @@ public function testTransition() case 'TRANSITION_CHECKER_VERTICAL': $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/p:checker[@dir=\'vert\']'); break; - case 'TRANSITION_CIRCLE_HORIZONTAL': - $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/p:circle[@dir=\'horz\']'); - break; - case 'TRANSITION_CIRCLE_VERTICAL': - $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/p:circle[@dir=\'vert\']'); + case 'TRANSITION_CIRCLE': + $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/p:circle'); break; case 'TRANSITION_COMB_HORIZONTAL': $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/p:comb[@dir=\'horz\']'); From 212574731900b45d44d76c3f1069890ec782cd62 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 8 Aug 2017 12:34:43 +0200 Subject: [PATCH 008/139] #382 : Validation for Open XML --- .../Writer/PowerPoint2007/PptSlideMastersTest.php | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php index 4393463c0b..1236f1654a 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlideMastersTest.php @@ -2,23 +2,22 @@ namespace PhpPresentation\Tests\Writer\PowerPoint2007; -use PhpOffice\PhpPresentation\Tests\PhpPresentationTestCase; -use PhpOffice\PhpPresentation\Writer\PowerPoint2007\PptSlideMasters; -use PhpOffice\PhpPresentation\Slide\SlideLayout; use PhpOffice\PhpPresentation\Shape\Drawing\File as ShapeDrawingFile; +use PhpOffice\PhpPresentation\Slide\SlideLayout; +use PhpOffice\PhpPresentation\Slide\SlideMaster; +use PhpOffice\PhpPresentation\Writer\PowerPoint2007\PptSlideMasters; /** * Test class for PowerPoint2007 * * @coversDefaultClass PowerPoint2007 */ -class PptSlideMastersTest extends PhpPresentationTestCase +class PptSlideMastersTest extends \PHPUnit_Framework_TestCase { - protected $writerName = 'PowerPoint2007'; - public function testWriteSlideMasterRelationships() { $writer = new PptSlideMasters(); + /** @var \PHPUnit_Framework_MockObject_MockObject|SlideMaster $slideMaster */ $slideMaster = $this->getMockBuilder('PhpOffice\\PhpPresentation\\Slide\\SlideMaster') ->setMethods(array('getAllSlideLayouts', 'getRelsIndex', 'getShapeCollection')) ->getMock(); @@ -54,6 +53,5 @@ public function testWriteSlideMasterRelationships() $this->assertEquals('rId3', $list->item(2)->getAttribute('Id')); $this->assertEquals('rId4', $list->item(3)->getAttribute('Id')); $this->assertEquals('rId5', $list->item(4)->getAttribute('Id')); - $this->assertIsSchemaOOXMLValid(); } } From d552153120db7d266d289f1aa39663d8568fb5cc Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 8 Aug 2017 13:49:27 +0200 Subject: [PATCH 009/139] #382 : Validation for OpenDocument --- .../Writer/ODPresentation/ContentTest.php | 47 + .../ODPresentation/MetaInfManifestTest.php | 5 + .../ODPresentation/ObjectsChartTest.php | 70 +- .../Writer/ODPresentation/StylesTest.php | 7 + .../_includes/PhpPresentationTestCase.php | 109 +- .../OpenDocument-manifest-schema-v1.0-os.rng | 111 + .../1.0/OpenDocument-schema-v1.0-os.rng | 17666 +++++++++++++++ .../OpenDocument-strict-schema-v1.0-os.rng | 61 + .../1.1/OpenDocument-manifest-schema-v1.1.rng | 111 + .../1.1/OpenDocument-schema-v1.1.rng | 17891 +++++++++++++++ .../1.1/OpenDocument-strict-schema-v1.1.rng | 61 + .../1.2/OpenDocument-v1.2-os-dsig-schema.rng | 84 + .../OpenDocument-v1.2-os-manifest-schema.rng | 224 + .../1.2/OpenDocument-v1.2-os-schema.rng | 18127 ++++++++++++++++ 14 files changed, 54564 insertions(+), 10 deletions(-) create mode 100644 tests/resources/schema/opendocument/1.0/OpenDocument-manifest-schema-v1.0-os.rng create mode 100644 tests/resources/schema/opendocument/1.0/OpenDocument-schema-v1.0-os.rng create mode 100644 tests/resources/schema/opendocument/1.0/OpenDocument-strict-schema-v1.0-os.rng create mode 100644 tests/resources/schema/opendocument/1.1/OpenDocument-manifest-schema-v1.1.rng create mode 100644 tests/resources/schema/opendocument/1.1/OpenDocument-schema-v1.1.rng create mode 100644 tests/resources/schema/opendocument/1.1/OpenDocument-strict-schema-v1.1.rng create mode 100644 tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-dsig-schema.rng create mode 100644 tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-manifest-schema.rng create mode 100644 tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-schema.rng diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentation/ContentTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentation/ContentTest.php index 4134c8c20e..69c8b92aba 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentation/ContentTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentation/ContentTest.php @@ -36,6 +36,7 @@ public function testDrawingWithHyperlink() $element = '/office:document-content/office:body/office:presentation/draw:page/draw:frame/office:event-listeners/presentation:event-listener'; $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeEquals('content.xml', $element, 'xlink:href', 'https://github.com/PHPOffice/PHPPresentation/'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testComment() @@ -61,6 +62,7 @@ public function testComment() $element = '/office:document-content/office:body/office:presentation/draw:page/officeooo:annotation/text:p'; $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlElementEquals('content.xml', $element, $expectedText); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testCommentWithoutAuthor() @@ -71,6 +73,7 @@ public function testCommentWithoutAuthor() $element = '/office:document-content/office:body/office:presentation/draw:page/officeooo:annotation'; $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeNotExists('content.xml', $element, 'dc:creator'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testFillGradientLinearRichText() @@ -85,6 +88,7 @@ public function testFillGradientLinearRichText() $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:fill', 'gradient'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:fill-gradient-name', 'gradient_' . $oShape->getFill()->getHashCode()); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testFillSolidRichText() @@ -97,6 +101,7 @@ public function testFillSolidRichText() $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:fill', 'solid'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:fill-color', '#' . $oShape->getFill()->getStartColor()->getRGB()); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:fill-color', '#' . $oShape->getFill()->getEndColor()->getRGB()); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testGroup() @@ -110,6 +115,7 @@ public function testGroup() $this->assertZipXmlElementExists('content.xml', $element); $element = '/office:document-content/office:body/office:presentation/draw:page/draw:g/draw:frame/office:event-listeners/presentation:event-listener'; $this->assertZipXmlElementExists('content.xml', $element); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testList() @@ -127,6 +133,7 @@ public function testList() $this->assertZipXmlElementExists('content.xml', $element); $element = '/office:document-content/office:body/office:presentation/draw:page/draw:frame/draw:text-box/text:list/text:list-item/text:p/text:span'; $this->assertZipXmlElementExists('content.xml', $element); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testInnerList() @@ -154,6 +161,7 @@ public function testInnerList() $this->assertZipXmlElementExists('content.xml', $element); $element = '/office:document-content/office:body/office:presentation/draw:page/draw:frame/draw:text-box/text:list/text:list-item/text:list/text:list-item/text:p/text:span'; $this->assertZipXmlElementExists('content.xml', $element); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testParagraphRichText() @@ -172,6 +180,7 @@ public function testParagraphRichText() $element = '/office:document-content/office:body/office:presentation/draw:page/draw:frame/draw:text-box/text:p/text:span/text:a'; $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeEquals('content.xml', $element, 'xlink:href', 'http://www.google.fr'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testListWithRichText() @@ -187,6 +196,7 @@ public function testListWithRichText() $this->assertZipXmlElementExists('content.xml', $element); $element = '/office:document-content/office:body/office:presentation/draw:page/draw:frame/draw:text-box/text:list/text:list-item/text:p/text:span/text:line-break'; $this->assertZipXmlElementExists('content.xml', $element); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testMedia() @@ -225,6 +235,7 @@ public function testMedia() $this->assertZipXmlAttributeStartsWith('content.xml', $element, 'draw:mime-type', 'application/vnd.sun.star.media'); $this->assertZipXmlAttributeStartsWith('content.xml', $element, 'xlink:href', 'Pictures/'); $this->assertZipXmlAttributeEndsWith('content.xml', $element, 'xlink:href', 'ogv'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testNote() @@ -237,6 +248,7 @@ public function testNote() $this->assertZipXmlElementExists('content.xml', $element); $element = '/office:document-content/office:body/office:presentation/draw:page/presentation:notes/draw:frame/draw:text-box/text:p/text:span'; $this->assertZipXmlElementExists('content.xml', $element); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testRichTextAutoShrink() @@ -246,6 +258,7 @@ public function testRichTextAutoShrink() $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'gr1\']/style:graphic-properties'; $this->assertZipXmlAttributeNotExists('content.xml', $element, 'draw:auto-grow-height'); $this->assertZipXmlAttributeNotExists('content.xml', $element, 'draw:auto-grow-width'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oRichText1->setAutoShrinkHorizontal(false); $oRichText1->setAutoShrinkVertical(true); @@ -255,6 +268,7 @@ public function testRichTextAutoShrink() $this->assertZipXmlAttributeExists('content.xml', $element, 'draw:auto-grow-width'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:auto-grow-height', 'true'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:auto-grow-width', 'false'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oRichText1->setAutoShrinkHorizontal(true); $oRichText1->setAutoShrinkVertical(false); @@ -264,6 +278,7 @@ public function testRichTextAutoShrink() $this->assertZipXmlAttributeExists('content.xml', $element, 'draw:auto-grow-width'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:auto-grow-height', 'false'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:auto-grow-width', 'true'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testRichTextRunLanguage() @@ -275,6 +290,7 @@ public function testRichTextRunLanguage() $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeExists('content.xml', $element, 'fo:language'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'fo:language', 'en-US'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oRun->setLanguage('de_DE'); $this->resetPresentationFile(); @@ -282,6 +298,7 @@ public function testRichTextRunLanguage() $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeExists('content.xml', $element, 'fo:language'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'fo:language', 'de_DE'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testRichTextBorder() @@ -295,6 +312,7 @@ public function testRichTextBorder() $this->assertZipXmlAttributeNotExists('content.xml', $element, 'svg:stroke-width'); $this->assertZipXmlAttributeExists('content.xml', $element, 'draw:stroke'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:stroke', 'none'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oRichText1->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_SOLID)->setLineStyle(Border::LINE_SINGLE); $this->resetPresentationFile(); @@ -308,6 +326,7 @@ public function testRichTextBorder() $this->assertZipXmlAttributeExists('content.xml', $element, 'draw:stroke'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:stroke', 'solid'); $this->assertZipXmlAttributeNotExists('content.xml', $element, 'draw:stroke-dash'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oRichText1->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_DASH); $this->resetPresentationFile(); @@ -316,6 +335,7 @@ public function testRichTextBorder() $this->assertZipXmlAttributeExists('content.xml', $element, 'draw:stroke-dash'); $this->assertZipXmlAttributeStartsWith('content.xml', $element, 'draw:stroke-dash', 'strokeDash_'); $this->assertZipXmlAttributeEndsWith('content.xml', $element, 'draw:stroke-dash', $oRichText1->getBorder()->getDashStyle()); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testRichTextShadow() @@ -358,6 +378,7 @@ public function testRichTextShadow() $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:shadow-offset-y', '-' . Drawing::pixelsToCentimeters($randDistance) . 'cm'); } } + $this->assertIsSchemaOpenDocumentValid('1.2'); $this->resetPresentationFile(); } } @@ -368,6 +389,7 @@ public function testSlideName() $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeNotExists('content.xml', $element, 'draw:name'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $this->oPresentation->getActiveSlide()->setName('AAAA'); $this->resetPresentationFile(); @@ -375,12 +397,14 @@ public function testSlideName() $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeExists('content.xml', $element, 'draw:name'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:name', 'AAAA'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $this->oPresentation->getActiveSlide()->setName(); $this->resetPresentationFile(); $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeNotExists('content.xml', $element, 'draw:name'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testStyleAlignment() @@ -435,6 +459,8 @@ public function testStyleAlignment() $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'P_'.$p6HashCode.'\']/style:paragraph-properties'; $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeEquals('content.xml', $element, 'fo:text-align', 'right'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testStyleFont() @@ -448,6 +474,8 @@ public function testStyleFont() $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'T_'.$expectedHashCode.'\']/style:text-properties'; $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeEquals('content.xml', $element, 'fo:font-weight', 'bold'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTable() @@ -456,6 +484,8 @@ public function testTable() $element = '/office:document-content/office:body/office:presentation/draw:page/draw:frame/table:table'; $this->assertZipXmlElementExists('content.xml', $element); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTableCellFill() @@ -480,6 +510,8 @@ public function testTableCellFill() $this->assertZipXmlAttributeEquals('content.xml', $element, 'draw:fill', 'solid'); $this->assertZipXmlAttributeStartsWith('content.xml', $element, 'draw:fill-color', '#'); $this->assertZipXmlAttributeEndsWith('content.xml', $element, 'draw:fill-color', $oColor->getRGB()); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTableWithColspan() @@ -494,6 +526,8 @@ public function testTableWithColspan() $element = '/office:document-content/office:body/office:presentation/draw:page/draw:frame/table:table/table:table-row/table:table-cell'; $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeEquals('content.xml', $element, 'table:number-columns-spanned', $value); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } /** @@ -512,6 +546,8 @@ public function testTableWithHyperlink() $element = '/office:document-content/office:body/office:presentation/draw:page/draw:frame/table:table/table:table-row/table:table-cell/text:p/text:span/text:a'; $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeEquals('content.xml', $element, 'xlink:href', 'https://github.com/PHPOffice/PHPPresentation/'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTableWithText() @@ -530,6 +566,8 @@ public function testTableWithText() $this->assertZipXmlElementEquals('content.xml', $element, 'Test'); $element = '/office:document-content/office:body/office:presentation/draw:page/draw:frame/table:table/table:table-row/table:table-cell/text:p/text:span/text:line-break'; $this->assertZipXmlElementExists('content.xml', $element); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTransition() @@ -540,6 +578,7 @@ public function testTransition() $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeNotExists('content.xml', $element, 'presentation:duration'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oTransition = new Transition(); $oTransition->setTimeTrigger(true, $value); @@ -552,21 +591,25 @@ public function testTransition() $this->assertZipXmlAttributeEndsWith('content.xml', $element, 'presentation:duration', 'S'); $this->assertZipXmlAttributeContains('content.xml', $element, 'presentation:duration', number_format($value / 1000, 6, '.', '')); $this->assertZipXmlAttributeContains('content.xml', $element, 'presentation:transition-type', 'automatic'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oTransition->setSpeed(Transition::SPEED_FAST); $this->resetPresentationFile(); $this->assertZipXmlAttributeContains('content.xml', $element, 'presentation:transition-speed', 'fast'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oTransition->setSpeed(Transition::SPEED_MEDIUM); $this->resetPresentationFile(); $this->assertZipXmlAttributeContains('content.xml', $element, 'presentation:transition-speed', 'medium'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oTransition->setSpeed(Transition::SPEED_SLOW); $this->resetPresentationFile(); $this->assertZipXmlAttributeContains('content.xml', $element, 'presentation:transition-speed', 'slow'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $rcTransition = new \ReflectionClass('PhpOffice\PhpPresentation\Slide\Transition'); $arrayConstants = $rcTransition->getConstants(); @@ -723,12 +766,14 @@ public function testTransition() $this->assertZipXmlAttributeContains('content.xml', $element, 'presentation:transition-style', 'none'); break; } + $this->assertIsSchemaOpenDocumentValid('1.2'); } $oTransition->setTimeTrigger(false); $oTransition->setManualTrigger(true); $this->resetPresentationFile(); $this->assertZipXmlAttributeContains('content.xml', $element, 'presentation:transition-type', 'manual'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testVisibility() @@ -737,6 +782,7 @@ public function testVisibility() $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeNotExists('content.xml', $element, 'presentation:visibility'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSlide = $this->oPresentation->getActiveSlide(); $oSlide->setIsVisible(false); @@ -745,5 +791,6 @@ public function testVisibility() $this->assertZipXmlElementExists('content.xml', $element); $this->assertZipXmlAttributeExists('content.xml', $element, 'presentation:visibility'); $this->assertZipXmlAttributeEquals('content.xml', $element, 'presentation:visibility', 'hidden'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } } diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentation/MetaInfManifestTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentation/MetaInfManifestTest.php index 99e0de277d..671d8027b3 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentation/MetaInfManifestTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentation/MetaInfManifestTest.php @@ -26,6 +26,7 @@ public function testDrawing() $this->assertZipXmlElementExists('META-INF/manifest.xml', $element); $this->assertZipXmlAttributeStartsWith('META-INF/manifest.xml', $element, 'manifest:full-path', 'Pictures/PhpPresentationLogo'); $this->assertZipXmlAttributeEndsWith('META-INF/manifest.xml', $element, 'manifest:full-path', '.png'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } /** @@ -55,6 +56,7 @@ public function testMemoryDrawing() $element = '/manifest:manifest/manifest:file-entry[5]'; $this->assertZipXmlElementExists('META-INF/manifest.xml', $element); $this->assertZipXmlAttributeEquals('META-INF/manifest.xml', $element, 'manifest:full-path', 'Pictures/' . $oShape->getIndexedFilename()); + $this->assertIsSchemaOpenDocumentValid('1.2'); } /** @@ -71,6 +73,7 @@ public function testDrawingZip() $element = '/manifest:manifest/manifest:file-entry[5]'; $this->assertZipXmlElementExists('META-INF/manifest.xml', $element); $this->assertZipXmlAttributeEquals('META-INF/manifest.xml', $element, 'manifest:full-path', 'Pictures/' . $oShape->getIndexedFilename()); + $this->assertIsSchemaOpenDocumentValid('1.2'); } /** @@ -99,6 +102,7 @@ public function testDrawingBase64() $element = '/manifest:manifest/manifest:file-entry[5]'; $this->assertZipXmlElementExists('META-INF/manifest.xml', $element); $this->assertZipXmlAttributeEquals('META-INF/manifest.xml', $element, 'manifest:full-path', 'Pictures/' . $oShape->getIndexedFilename()); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testSlideBackground() @@ -110,5 +114,6 @@ public function testSlideBackground() $element = '/manifest:manifest/manifest:file-entry[5]'; $this->assertZipXmlElementExists('META-INF/manifest.xml', $element); $this->assertZipXmlAttributeEquals('META-INF/manifest.xml', $element, 'manifest:full-path', 'Pictures/' . str_replace(' ', '_', $oBkgImage->getIndexedFilename(0))); + $this->assertIsSchemaOpenDocumentValid('1.2'); } } diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php index ab159f7817..6666dfa295 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php @@ -61,6 +61,8 @@ public function testAxisFont() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'fo:font-style', 'normal'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'fo:font-size', '16pt'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'fo:font-family', 'Arial'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testLegend() @@ -82,6 +84,8 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows/table:table-row/table:table-cell[@office:value-type=\'string\']'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTitleVisibility() @@ -98,10 +102,14 @@ public function testTitleVisibility() $this->assertZipXmlElementExists('Object 1/content.xml', $elementTitle); $this->assertZipXmlElementExists('Object 1/content.xml', $elementStyle); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertInstanceOf('PhpOffice\PhpPresentation\Shape\Chart\Title', $oShape->getTitle()->setVisible(false)); $this->resetPresentationFile(); $this->assertZipXmlElementNotExists('Object 1/content.xml', $elementTitle); $this->assertZipXmlElementNotExists('Object 1/content.xml', $elementStyle); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeArea() @@ -126,6 +134,8 @@ public function testTypeArea() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'draw:fill'); $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'draw:fill-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'draw:fill-color', '#93A9CE'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeAxisBounds() @@ -144,6 +154,8 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:minimum'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:maximum'); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $this->resetPresentationFile(); @@ -151,6 +163,8 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:minimum'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:minimum', $value); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oShape->getPlotArea()->getAxisX()->setMinBounds(null); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); $this->resetPresentationFile(); @@ -159,6 +173,8 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:maximum'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:maximum', $value); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); $this->resetPresentationFile(); @@ -167,6 +183,8 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:minimum', $value); $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:maximum'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:maximum', $value); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBar() @@ -197,6 +215,8 @@ public function testTypeBar() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:overlap', '0'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:percentage'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBarGroupingStacked() @@ -213,6 +233,8 @@ public function testTypeBarGroupingStacked() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:overlap', '100'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:percentage'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBarGroupingPercentStacked() @@ -229,6 +251,8 @@ public function testTypeBarGroupingPercentStacked() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:overlap', '100'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:percentage', 'true'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBarHorizontal() @@ -253,6 +277,8 @@ public function testTypeBarHorizontal() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:vertical', 'true'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:three-dimensional'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:right-angled-axes'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBar3D() @@ -281,6 +307,8 @@ public function testTypeBar3D() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:three-dimensional', 'true'); $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:right-angled-axes'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:right-angled-axes', 'true'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBar3DHorizontal() @@ -307,6 +335,8 @@ public function testTypeBar3DHorizontal() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:three-dimensional', 'true'); $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:right-angled-axes'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:right-angled-axes', 'true'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeLine() @@ -332,7 +362,6 @@ public function testTypeLine() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'svg:stroke-width', '0.026cm'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'svg:stroke-color', '#878787'); - $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'styleAxisY\']/style:chart-properties'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:tick-marks-major-inner', 'false'); @@ -342,6 +371,8 @@ public function testTypeLine() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'svg:stroke-width', '0.026cm'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'svg:stroke-color', '#878787'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeLineGridlines() @@ -414,6 +445,8 @@ public function testTypeLineGridlines() $this->assertZipXmlAttributeEndsWith('Object 1/content.xml', $expectedElementStyle, 'svg:stroke-width', 'cm'); $this->assertZipXmlAttributeStartsWith('Object 1/content.xml', $expectedElementStyle, 'svg:stroke-color', '#'); $this->assertZipXmlAttributeEndsWith('Object 1/content.xml', $expectedElementStyle, 'svg:stroke-color', $expectedColor->getRGB()); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } } @@ -448,24 +481,32 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-width', $expectedSizeCm); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-height', $expectedSizeCm); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oSeries->getMarker()->setSymbol($expectedSymbol2); $oLine->setSeries(array($oSeries)); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'horizontal-bar'); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oSeries->getMarker()->setSymbol($expectedSymbol3); $oLine->setSeries(array($oSeries)); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'circle'); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oSeries->getMarker()->setSymbol($expectedSymbol4); $oLine->setSeries(array($oSeries)); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'arrow-up'); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oSeries->getMarker()->setSymbol($expectedSymbol5); $oLine->setSeries(array($oSeries)); $this->resetPresentationFile(); @@ -473,6 +514,8 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-name'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-width'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-height'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeLineSeriesOutline() @@ -507,6 +550,7 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-width', '0.079cm'); $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#4a7ebb'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->setOutline($oOutline); $oLine->setSeries(array($oSeries)); @@ -518,6 +562,7 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-width', $expectedWidthCm); $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#' . $oColor->getRGB()); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypePie() @@ -546,6 +591,8 @@ public function testTypePie() $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'styleAxisY\']/style:chart-properties'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:reverse-direction', 'true'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypePie3D() @@ -574,6 +621,8 @@ public function testTypePie3D() $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'styleAxisY\']/style:chart-properties'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:reverse-direction', 'true'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypePie3DExplosion() @@ -591,6 +640,7 @@ public function testTypePie3DExplosion() $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'styleSeries0\'][@style:family=\'chart\']/style:chart-properties'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:pie-offset', $value); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeScatter() @@ -605,6 +655,7 @@ public function testTypeScatter() $element = '/office:document-content/office:body/office:chart/chart:chart'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:class', 'chart:scatter'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeScatterMarker() @@ -637,24 +688,32 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-width', $expectedSizeCm); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-height', $expectedSizeCm); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oSeries->getMarker()->setSymbol($expectedSymbol2); $oScatter->setSeries(array($oSeries)); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'horizontal-bar'); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oSeries->getMarker()->setSymbol($expectedSymbol3); $oScatter->setSeries(array($oSeries)); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'circle'); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oSeries->getMarker()->setSymbol($expectedSymbol4); $oScatter->setSeries(array($oSeries)); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'arrow-up'); + $this->assertIsSchemaOpenDocumentValid('1.2'); + $oSeries->getMarker()->setSymbol($expectedSymbol5); $oScatter->setSeries(array($oSeries)); $this->resetPresentationFile(); @@ -662,6 +721,8 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-name'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-width'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-height'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeScatterSeriesOutline() @@ -695,6 +756,7 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-width', '0.079cm'); $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#4a7ebb'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->setOutline($oOutline); $oScatter->setSeries(array($oSeries)); @@ -706,6 +768,7 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-width', $expectedWidthCm); $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#' . $oColor->getRGB()); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testSeries() @@ -723,6 +786,7 @@ public function testSeries() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->setShowValue(false); $this->resetPresentationFile(); @@ -731,6 +795,7 @@ public function testSeries() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); + $this->assertIsSchemaOpenDocumentValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = true $oSeries->setShowValue(true); @@ -741,6 +806,7 @@ public function testSeries() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value-and-percentage'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); + $this->assertIsSchemaOpenDocumentValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = false $oSeries->setShowValue(false); @@ -750,6 +816,7 @@ public function testSeries() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); + $this->assertIsSchemaOpenDocumentValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = false $oSeries->setShowCategoryName(true); @@ -758,5 +825,6 @@ public function testSeries() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-text'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-text', 'true'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } } diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentation/StylesTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentation/StylesTest.php index 1d013fef5c..00eff5195c 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentation/StylesTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentation/StylesTest.php @@ -28,6 +28,7 @@ public function testDocumentLayout() $this->assertZipXmlElementExists('styles.xml', $element); $this->assertZipXmlAttributeEquals('styles.xml', $element, 'style:print-orientation', 'landscape'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oDocumentLayout->setDocumentLayout(DocumentLayout::LAYOUT_A4, false); $this->oPresentation->setLayout($oDocumentLayout); @@ -35,6 +36,7 @@ public function testDocumentLayout() $this->assertZipXmlElementExists('styles.xml', $element); $this->assertZipXmlAttributeEquals('styles.xml', $element, 'style:print-orientation', 'portrait'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testCustomDocumentLayout() @@ -50,6 +52,8 @@ public function testCustomDocumentLayout() $element = "/office:document-styles/office:master-styles/style:master-page"; $this->assertZipXmlElementExists('styles.xml', $element); $this->assertZipXmlAttributeEquals('styles.xml', $element, 'style:page-layout-name', 'sPL0'); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testGradientTable() @@ -62,6 +66,8 @@ public function testGradientTable() $element = "/office:document-styles/office:styles/draw:gradient"; $this->assertZipXmlAttributeEquals('styles.xml', $element, 'draw:name', 'gradient_' . $oCell->getFill()->getHashCode()); + + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testStrokeDash() @@ -113,6 +119,7 @@ public function testStrokeDash() $this->assertZipXmlAttributeExists('styles.xml', $element, 'draw:dots2-length'); break; } + $this->assertIsSchemaOpenDocumentValid('1.2'); $this->resetPresentationFile(); } } diff --git a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php index 475707a4ed..82eb78332b 100644 --- a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php +++ b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php @@ -53,6 +53,24 @@ class PhpPresentationTestCase extends \PHPUnit_Framework_TestCase */ private $xmlInternalErrors; + /** + * @var array + */ + private $arrayOpenDocumentRNG = array( + '1.0' => array( + 'META-INF/manifest.xml' => 'OpenDocument-manifest-schema-v1.0-os.rng', + '*' => 'OpenDocument-strict-schema-v1.0-os.rng', + ), + '1.1' => array( + 'META-INF/manifest.xml' => 'OpenDocument-manifest-schema-v1.1.rng', + '*' => 'OpenDocument-strict-schema-v1.1.rng', + ), + '1.2' => array( + 'META-INF/manifest.xml' => 'OpenDocument-v1.2-os-manifest-schema.rng', + '*' => 'OpenDocument-v1.2-os-schema.rng', + ) + ); + /** * Executed before each method of the class */ @@ -340,20 +358,93 @@ public function assertIsSchemaOOXMLValid() $error = libxml_get_last_error(); if ($error instanceof \LibXMLError) { - break; + $this->failXmlError($error, $fileName, $xmlSource); } } unset($iterator); + } - if (is_object($error) && $error instanceof \LibXMLError) { - $errorLine = (int)$error->line; - $contents = explode("\n", $xmlSource); - $lines = array(); - $lines[] = '>> ' . $contents[$errorLine - 2]; - $lines[] = '>>> ' . $contents[$errorLine - 1]; - $lines[] = '>> ' . $contents[$errorLine]; - self::fail(sprintf("Validation error:\n - File : %s\n - Line : %s\n - Message : %s - Lines :\n%s", $file, $error->line, $error->message, implode(PHP_EOL, $lines))); + public function assertIsSchemaOpenDocumentValid($version = '1.0') + { + if (!array_key_exists($version, $this->arrayOpenDocumentRNG)) { + self::fail('assertIsSchemaOpenDocumentValid > Use a valid version'); + return; } + // validate all XML files + $path = realpath($this->workDirectory); + $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path)); + + foreach ($iterator as $file) { + /** @var \SplFileInfo $file */ + if ($file->getExtension() !== "xml") { + continue; + } + + $fileName = str_replace('\\', '/', substr($file->getRealPath(), strlen($path) + 1)); + $dom = $this->getXmlDom($fileName); + $xmlSource = $dom->saveXML(); + + $dom->loadXML($xmlSource); + $pathRNG = __DIR__ . '/../../../resources/schema/opendocument/'.$version.'/'; + if (isset($this->arrayOpenDocumentRNG[$version][$fileName])) { + $pathRNG .= $this->arrayOpenDocumentRNG[$version][$fileName]; + } else { + $pathRNG .= $this->arrayOpenDocumentRNG[$version]['*']; + } + $dom->relaxNGValidate($pathRNG); + + $error = libxml_get_last_error(); + if ($error instanceof \LibXMLError) { + $this->failXmlError($error, $fileName, $xmlSource, array('version' => $version)); + } + } + unset($iterator); + } + + /** + * @param \LibXMLError $error + * @param string $fileName + * @param string $source + * @param array $params + */ + protected function failXmlError(\LibXMLError $error, $fileName, $source, array $params = array()) + { + switch ($error->level) { + case LIBXML_ERR_WARNING: + $errorType = 'warning'; + break; + case LIBXML_ERR_ERROR: + $errorType = 'error'; + break; + case LIBXML_ERR_FATAL: + $errorType = 'fatal'; + break; + default: + $errorType = 'Error'; + break; + } + $errorLine = (int)$error->line; + $contents = explode("\n", $source); + $lines = array(); + $lines[] = '>> ' . $contents[$errorLine - 2]; + $lines[] = '>>> ' . $contents[$errorLine - 1]; + $lines[] = '>> ' . $contents[$errorLine]; + $paramStr = ''; + if (!empty($params)) { + $paramStr .= "\n" . ' - Parameters :'."\n"; + foreach ($params as $key => $val) { + $paramStr .= ' - '.$key.' : '.$val."\n"; + } + } + self::fail(sprintf( + "Validation %s :\n - File : %s\n - Line : %s\n - Message : %s - Lines :\n%s%s", + $errorType, + $fileName, + $error->line, + $error->message, + implode(PHP_EOL, $lines), + $paramStr + )); } } diff --git a/tests/resources/schema/opendocument/1.0/OpenDocument-manifest-schema-v1.0-os.rng b/tests/resources/schema/opendocument/1.0/OpenDocument-manifest-schema-v1.0-os.rng new file mode 100644 index 0000000000..97fe580eab --- /dev/null +++ b/tests/resources/schema/opendocument/1.0/OpenDocument-manifest-schema-v1.0-os.rng @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/opendocument/1.0/OpenDocument-schema-v1.0-os.rng b/tests/resources/schema/opendocument/1.0/OpenDocument-schema-v1.0-os.rng new file mode 100644 index 0000000000..cf4ee51741 --- /dev/null +++ b/tests/resources/schema/opendocument/1.0/OpenDocument-schema-v1.0-os.rng @@ -0,0 +1,17666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + boolean + short + int + long + double + string + datetime + base64Binary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + simple + + + + + replace + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + date + + + + + + time + + + + + + boolean + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + none + + + + + condition + + + + + + + + + + + + + + + + + + + + + simple + + + + + embed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + footnote + endnote + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + current + next + + + + + + + + + + + + + + previous + next + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + plain-number-and-name + plain-number + + + + + + + + + + + + + + + + + + + full + path + name + name-and-extension + + + + + + + + + + + + + + + + + + full + path + name + name-and-extension + area + title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:page-count + text:paragraph-count + text:word-count + text:character-count + text:table-count + text:image-count + text:object-count + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + table + text-box + image + object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:reference-ref + text:bookmark-ref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + chapter + direction + text + + + + + + + + + page + chapter + direction + text + category-and-value + caption + value + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + unit + gap + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + + + percentage + + + + + + + + currency + + + + + + + + + + + + + date + + + + + + + + time + + + + + + + + boolean + + + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + none + + + + + + + + + value + formula + none + + + + + + + + + value + formula + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:identifier + text:address + text:annote + text:author + text:booktitle + text:chapter + text:edition + text:editor + text:howpublished + text:institution + text:journal + text:month + text:note + text:number + text:organizations + text:pages + text:publisher + text:school + text:series + text:title + text:report-type + text:volume + text:year + text:url + text:custom1 + text:custom2 + text:custom3 + text:custom4 + text:custom5 + text:isbn + text:issn + + + + + + + + + + article + book + booklet + conference + custom1 + custom2 + custom3 + custom4 + custom5 + email + inbook + incollection + inproceedings + journal + manual + mastersthesis + misc + phdthesis + proceedings + techreport + unpublished + www + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + category-and-value + caption + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + separator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + address + annote + author + bibliography-type + booktitle + chapter + custom1 + custom2 + custom3 + custom4 + custom5 + edition + editor + howpublished + identifier + institution + isbn + issn + journal + month + note + number + organizations + pages + publisher + report-type + school + series + title + url + volume + year + + + + + + + + + + + + + + + + + + + + + + + + right + + + + left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + collapse + filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ($?([^\. ']+|'[^']+'))?\.$?[A-Z]+$?[0-9]+ + + + + + ($?([^\. ']+|'[^']+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'[^']+'))?\.$?[A-Z]+$?[0-9]+)? + + + + + + + + + + + + + + + + + + + copy-all + copy-results-only + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trace-dependents + remove-dependents + trace-precedents + remove-precedents + trace-errors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-another-table + to-another-table + from-same-table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enable + disable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + unsorted + sort-ascending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + stop + warning + information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + print-range + filter + repeat-row + repeat-column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + self + cell-range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + data + hidden + + + + + page + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-top + from-bottom + + + + + + + + + + + + + + data + + + + + + + + none + manual + name + + + + + + + + ascending + descending + + + + + + + + + + + + + tabular-layout + outline-subtotals-top + outline-subtotals-bottom + + + + + + + + + + + + + + + + + + + + + + + named + + + + + + + + previous + next + + + + + + + + none + member-difference + member-percentage + member-percentage-difference + running-total + row-percentage + column-percentage + total-percentage + index + + + + + + + + + + + + + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + + + + seconds + minutes + hours + days + months + quarters + years + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + accepted + rejected + pending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + always + screen + printer + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + full + section + cut + arc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + lines + line + curve + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + frame + paragraph + char + as-char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom-right + + + + + + + auto + left + right + up + down + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale + scale-min + + + + + + + + scale + scale-min + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + onRequest + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + nohref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + non-primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + segments + rectangle + + + + + + + + + + + + + + + + + + + + + normal + path + shape + + + + + + + + + path + shape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + title + outline + subtitle + text + graphic + object + chart + table + orgchart + page + notes + handout + header + footer + date-time + page-number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + fade + move + stripes + open + close + dissolve + wavyline + random + lines + laser + appear + hide + move-short + checkerboard + rotate + stretch + + + + + + + + + + + + none + from-left + from-top + from-right + from-bottom + from-center + from-upper-left + from-upper-right + from-lower-left + from-lower-right + to-left + to-top + to-right + to-bottom + to-upper-left + to-upper-right + to-lower-right + to-lower-left + path + spiral-inward-left + spiral-inward-right + spiral-outward-left + spiral-outward-right + vertical + horizontal + to-center + clockwise + counter-clockwise + + + + + + + + + + + + slow + medium + fast + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + on-click + with-previous + after-previous + timing-root + main-sequence + interactive-sequence + + + + + + + + + + + + + + + + + + + + + + + custom + entrance + exit + emphasis + motion-path + ole-action + media-call + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + previous-page + next-page + first-page + last-page + hide + stop + execute + show + verb + fade-out + sound + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + current-date + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + top-start + bottom-start + top-end + bottom-end + + + + + + + + + + + + + wide + high + balanced + + + + + custom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + y + z + + + + + + + + + + + + + + + + + + + + + + + + + + + major + minor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + get + post + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + current + parent + + + + + + + + + + + + + + + + + + + records + current + page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + unchecked + checked + unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + submit + reset + push + url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + 3d + + + + + + + + + center + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + sql + sql-pass-through + value-list + table-fields + + + + + + + + + + + + + + + + + + + + + + + + + + + void + + + + + + + + + + + + + + float + + + + + + + + + + + + percentage + + + + + + + + + + + + currency + + + + + + + + + + + + + + + + + date + + + + + + + + + + + + time + + + + + + + + + + + + boolean + + + + + + + + + + + + string + + + + + + + + + + + void + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + i + I + + + + + + + + a + A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + into-default-style-data-style + into-english-number + keep-text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + rgb + hsl + + + + + + + + + clockwise + counter-clockwise + + + + + + + + + + + + + + + + + + translate + scale + rotate + skewX + skewY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + forward + reverse + + + + + + + + + in + out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + + + none + sum + + + + + + + + + replace + sum + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + first + last + all + media + + + + + + + + + + + + + + + + + + + remove + freeze + hold + auto + default + transition + + + + + + + + + remove + freeze + hold + transition + auto + inherit + + + + + + + + + never + always + whenNotActive + default + + + + + + + + + never + always + whenNotActive + inherit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + left + right + mirrored + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + ultra-condensed + extra-condensed + condensed + semi-condensed + semi-expanded + expanded + extra-expanded + ultra-expanded + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + medium + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gregorian + gengou + ROC + hanja_yoil + hanja + hijri + jewish + buddhist + + + + + + + + + text + + + + + + + + + + paragraph + + + + + + + + + + + + + section + + + + + + + + + + ruby + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + rigth + inner + outer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + page + + + + + + + + + text + page + section + document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + address + annote + author + bibliography-type + booktitle + chapter + custom1 + custom2 + custom3 + custom4 + custom5 + edition + editor + howpublished + identifier + institution + isbn + issn + journal + month + note + number + organizations + pages + publisher + report-type + school + series + title + url + volume + year + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + + + + + + + + + + table-column + + + + + + + + + + table-row + + + + + + + + + + table-cell + + + + + + + + + + + + + + + + + graphic + presentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + drawing-page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + linear + axial + radial + ellipsoid + square + rectangular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + objectBoundingBox + + + + + + + + + + + pad + reflect + repeat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + single + double + triple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rect + round + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + portrait + landscape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + headers + grid + annotations + objects + charts + drawings + formulas + zero-values + + + + + + + + + + + ttb + ltr + + + + + + + + + + continue + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + both + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + + + + + + + + + + + + + + none + line + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + small-caps + + + + + + + none + lowercase + uppercase + capitalize + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + super + sub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + roman + swiss + modern + decorative + script + system + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + variable + + + + + + + + + + + + + [A-Za-z][A-Za-z0-9._\-]* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + latin + asian + complex + ignore + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + italic + oblique + + + + + + + none + embossed + engraved + + + + + + + + + + + + + + + none + + + + + + + + + + + + + + + none + single + double + + + + + + + + + + + + + none + solid + dotted + dash + long-dash + dot-dash + dot-dot-dash + wave + + + + + + + + + + + + + auto + normal + bold + thin + dash + medium + thick + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + normal + bold + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + + + + + + + + + + + + + continuous + skip-white-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + letters + lines + + + + + + + + + + + + + + + + + + + + + none + + + none + accent + dot + circle + disc + + + above + below + + + + + + + + + + + + + + + + + + + + + + + + + fixed + line-height + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + none + + + + condition + + + none + + + + + + + + + + + + + + + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + left + right + center + justify + + + + + + + + + start + center + justify + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + page + + + + + + + + + no-limit + + + + + + + + + + + + + + + + + + + + + + word + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + column + page + + + + + + + auto + column + page + + + + + + + + + + + + + transparent + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + left + center + right + top + bottom + + + + + + + + + + + + + + + + left + center + right + + + + + top + center + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + none + ideograph-alpha + + + + + + + + + simple + hanging + + + + + + + + + normal + strict + + + + + + + + + top + middle + bottom + auto + + + + + + + + + + + + + lr-tb + rl-tb + tb-rl + tb-lr + lr + rl + tb + page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + above + below + + + + + + + + + left + center + right + distribute-letter + distribute-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + solid + dotted + dashed + dot-dashed + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + margins + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + collapsing + separating + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + automatic + + + + + + + + + fix + value-type + + + + + + + + + + + + + ltr + ttb + + + + + + + + + auto + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-wrap + wrap + + + + + + + + + + + + + + + + + + + + none + bottom + top + center + + + + + + + + + none + hidden-and-protected + + + + protected + formula-hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + dash + solid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + + miter + round + bevel + middle + none + inherit + + + + + + + + + none + solid + bitmap + gradient + hatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom + bottom-right + + + + + + + + + + + + + + + + + + + + + + + + + + + + nonzero + evenodd + + + + + + + + + + + + + + + + none + scroll + alternate + slide + + + + + + + + + left + right + up + down + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + justify + + + + + + + + + left + center + right + justify + + + + + + + + + no-wrap + wrap + + + + + + + + + + + + + + greyscale + mono + watermark + standard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + below + above + + + + + + + + + + + + + + + + automatic + left-outside + inside + right-outside + + + + + + + automatic + above + below + center + + + + + + + + + automatic + mm + cm + m + km + pt + pc + inch + ft + mi + + + + + + + + + + + + + + + + + + + + + + + straight-line + angled-line + angled-connector-line + + + + + + + + + fixed + free + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + correct + attractive + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + double-sided + + + + + + + + + object + flat + sphere + + + + + + + + + normal + inverse + + + + + + + + + object + parallel + sphere + + + + + + + object + parallel + sphere + + + + + + + + + luminance + intesity + color + + + + + + + + + enabled + disabled + + + + + + + + + replace + modulate + blend + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + content + position + size + + + + + + + + + + + + left + center + right + from-left + inside + outside + from-inside + + + + + + + + + + + + + + page + page-content + page-start-margin + page-end-margin + frame + frame-content + frame-start-margin + frame-end-margin + paragraph + paragraph-content + paragraph-start-margin + paragraph-end-margin + char + + + + + + + + + + + + + top + middle + bottom + from-top + below + + + + + + + + + + + + + + + + + + page + page-content + frame + frame-content + paragraph + paragraph-content + char + line + baseline + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + left + right + parallel + dynamic + run-through + biggest + + + + + + + + + + + + + + + + no-limit + + + + + + + + + + + + + + + + + full + outside + + + + + + + + + foreground + background + + + + + + + + + + + + + + + + clip + auto-create-new-frame + + + + + + + + + none + vertical + + + vertical + + + + + vertical + + + + + + + + + horizontal + horizontal-on-odd + horizontal-on-even + + + + + + + + + + + + + + + iterative + once-concurrent + once-successive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)(px) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + automatic + + + + named-symbol + + + + square + diamond + arrow-down + arrow-up + arrow-right + arrow-left + bow-tie + hourglass + circle + star + x + plus + asterisk + horizontal-bar + vertical-bar + + + + + + image + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + cubic-spline + b-spline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cuboid + cylinder + cone + pyramid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + side-by-side + stagger-even + stagger-odd + + + + + + + + + + + + + + + none + value + percentage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + variance + standard-deviation + percentage + error-margin + constant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + columns + rows + + + + + + + + + none + linear + logarithmic + exponential + power + + + + + + + + + manual + automatic + semi-automatic + + + + + + + + + none + fade-from-left + fade-from-top + fade-from-right + fade-from-bottom + fade-from-upperleft + fade-from-upperright + fade-from-lowerleft + fade-from-lowerright + move-from-left + move-from-top + move-from-right + move-from-bottom + move-from-upperleft + move-from-upperright + move-from-lowerleft + move-from-lowerright + uncover-to-left + uncover-to-top + uncover-to-right + uncover-to-bottom + uncover-to-upperleft + uncover-to-upperright + uncover-to-lowerleft + uncover-to-lowerright + fade-to-center + fade-from-center + vertical-stripes + horizontal-stripes + clockwise + counterclockwise + open-vertical + open-horizontal + close-vertical + close-horizontal + wavyline-from-left + wavyline-from-top + wavyline-from-right + wavyline-from-bottom + spiralin-left + spiralin-right + spiralout-left + spiralout-right + roll-from-top + roll-from-left + roll-from-right + roll-from-bottom + stretch-from-left + stretch-from-top + stretch-from-right + stretch-from-bottom + + vertical-lines + horizontal-lines + dissolve + random + vertical-checkerboard + horizontal-checkerboard + interlocking-horizontal-left + interlocking-horizontal-right + interlocking-vertical-top + interlocking-vertical-bottom + fly-away + open + close + melt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + forward + reverse + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + full + border + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + [A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})* + + + + + [A-Za-z0-9]{1,8} + + + + + [A-Za-z]{1,8} + + + + + 1 + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)% + + + + + [0-9]+\* + + + + + + + + + + + #[0-9a-fA-F]{6} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _self + _blank + _parent + _top + + + + + + + float + time + date + percentage + currency + boolean + string + + + + + + -?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)* + + + + + + + + + \([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\) + + + + + + + [0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/opendocument/1.0/OpenDocument-strict-schema-v1.0-os.rng b/tests/resources/schema/opendocument/1.0/OpenDocument-strict-schema-v1.0-os.rng new file mode 100644 index 0000000000..aa761dc880 --- /dev/null +++ b/tests/resources/schema/opendocument/1.0/OpenDocument-strict-schema-v1.0-os.rng @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/opendocument/1.1/OpenDocument-manifest-schema-v1.1.rng b/tests/resources/schema/opendocument/1.1/OpenDocument-manifest-schema-v1.1.rng new file mode 100644 index 0000000000..4082d4ba95 --- /dev/null +++ b/tests/resources/schema/opendocument/1.1/OpenDocument-manifest-schema-v1.1.rng @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/opendocument/1.1/OpenDocument-schema-v1.1.rng b/tests/resources/schema/opendocument/1.1/OpenDocument-schema-v1.1.rng new file mode 100644 index 0000000000..3ba6a687c4 --- /dev/null +++ b/tests/resources/schema/opendocument/1.1/OpenDocument-schema-v1.1.rng @@ -0,0 +1,17891 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + boolean + short + int + long + double + string + datetime + base64Binary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + simple + + + + + replace + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + date + + + + + + time + + + + + + boolean + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + none + + + + + condition + + + + + + + + + + + + + + + + + + + + + simple + + + + + embed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + footnote + endnote + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + current + next + + + + + + + + + + + + + + previous + next + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + plain-number-and-name + plain-number + + + + + + + + + + + + + + + + + + + full + path + name + name-and-extension + + + + + + + + + + + + + + + + + + full + path + name + name-and-extension + area + title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:page-count + text:paragraph-count + text:word-count + text:character-count + text:table-count + text:image-count + text:object-count + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + table + text-box + image + object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:reference-ref + text:bookmark-ref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + chapter + direction + text + + + + + + + + + page + chapter + direction + text + category-and-value + caption + value + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + unit + gap + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + + + percentage + + + + + + + + currency + + + + + + + + + + + + + date + + + + + + + + time + + + + + + + + boolean + + + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + none + + + + + + + + + value + formula + none + + + + + + + + + value + formula + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:identifier + text:address + text:annote + text:author + text:booktitle + text:chapter + text:edition + text:editor + text:howpublished + text:institution + text:journal + text:month + text:note + text:number + text:organizations + text:pages + text:publisher + text:school + text:series + text:title + text:report-type + text:volume + text:year + text:url + text:custom1 + text:custom2 + text:custom3 + text:custom4 + text:custom5 + text:isbn + text:issn + + + + + + + + + + article + book + booklet + conference + custom1 + custom2 + custom3 + custom4 + custom5 + email + inbook + incollection + inproceedings + journal + manual + mastersthesis + misc + phdthesis + proceedings + techreport + unpublished + www + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + category-and-value + caption + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + separator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + address + annote + author + bibliography-type + booktitle + chapter + custom1 + custom2 + custom3 + custom4 + custom5 + edition + editor + howpublished + identifier + institution + isbn + issn + journal + month + note + number + organizations + pages + publisher + report-type + school + series + title + url + volume + year + + + + + + + + + + + + + + + + + + + + + + + + right + + + + left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + collapse + filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+ + + + + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)? + + + + + + + + + + + + + + + + + + + copy-all + copy-results-only + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trace-dependents + remove-dependents + trace-precedents + remove-precedents + trace-errors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-another-table + to-another-table + from-same-table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enable + disable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + unsorted + sort-ascending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + stop + warning + information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + print-range + filter + repeat-row + repeat-column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + self + cell-range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + data + hidden + + + + + page + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-top + from-bottom + + + + + + + + + + + + + + data + + + + + + + + none + manual + name + + + + + + + + ascending + descending + + + + + + + + + + + + + tabular-layout + outline-subtotals-top + outline-subtotals-bottom + + + + + + + + + + + + + + + + + + + + + + + named + + + + + + + + previous + next + + + + + + + + none + member-difference + member-percentage + member-percentage-difference + running-total + row-percentage + column-percentage + total-percentage + index + + + + + + + + + + + + + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + + + + seconds + minutes + hours + days + months + quarters + years + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + accepted + rejected + pending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + always + screen + printer + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + full + section + cut + arc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + lines + line + curve + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + frame + paragraph + char + as-char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom-right + + + + + + + + auto + left + right + up + down + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale + scale-min + + + + + + + + scale + scale-min + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + onRequest + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + nohref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + non-primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + segments + rectangle + + + + + + + + + + + + + + + + + + + + + normal + path + shape + + + + + + + + + path + shape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + title + outline + subtitle + text + graphic + object + chart + table + orgchart + page + notes + handout + header + footer + date-time + page-number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + fade + move + stripes + open + close + dissolve + wavyline + random + lines + laser + appear + hide + move-short + checkerboard + rotate + stretch + + + + + + + + + + + + none + from-left + from-top + from-right + from-bottom + from-center + from-upper-left + from-upper-right + from-lower-left + from-lower-right + to-left + to-top + to-right + to-bottom + to-upper-left + to-upper-right + to-lower-right + to-lower-left + path + spiral-inward-left + spiral-inward-right + spiral-outward-left + spiral-outward-right + vertical + horizontal + to-center + clockwise + counter-clockwise + + + + + + + + + + + + slow + medium + fast + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + on-click + with-previous + after-previous + timing-root + main-sequence + interactive-sequence + + + + + + + + + + + + + + + + + + + + + + + custom + entrance + exit + emphasis + motion-path + ole-action + media-call + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + previous-page + next-page + first-page + last-page + hide + stop + execute + show + verb + fade-out + sound + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + current-date + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + top-start + bottom-start + top-end + bottom-end + + + + + + + + + + + + + wide + high + balanced + + + + + custom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + y + z + + + + + + + + + + + + + + + + + + + + + + + + + + + major + minor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + get + post + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + current + parent + + + + + + + + + + + + + + + + + + + records + current + page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + unchecked + checked + unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + submit + reset + push + url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + 3d + + + + + + + + + center + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + sql + sql-pass-through + value-list + table-fields + + + + + + + + + + + + + + + + + + + + + + + + + + + void + + + + + + + + + + + + + + float + + + + + + + + + + + + percentage + + + + + + + + + + + + currency + + + + + + + + + + + + + + + + + date + + + + + + + + + + + + time + + + + + + + + + + + + boolean + + + + + + + + + + + + string + + + + + + + + + + + void + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + i + I + + + + + + + + a + A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + into-default-style-data-style + into-english-number + keep-text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + rgb + hsl + + + + + + + + + clockwise + counter-clockwise + + + + + + + + + + + + + + + + + + translate + scale + rotate + skewX + skewY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + forward + reverse + + + + + + + + + in + out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + + + none + sum + + + + + + + + + replace + sum + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + first + last + all + media + + + + + + + + + + + + + + + indefinite + + + + + + + + + remove + freeze + hold + auto + default + transition + + + + + + + + + remove + freeze + hold + transition + auto + inherit + + + + + + + + + never + always + whenNotActive + default + + + + + + + + + never + always + whenNotActive + inherit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + left + right + mirrored + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + ultra-condensed + extra-condensed + condensed + semi-condensed + semi-expanded + expanded + extra-expanded + ultra-expanded + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + medium + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gregorian + gengou + ROC + hanja_yoil + hanja + hijri + jewish + buddhist + + + + + + + + + text + + + + + + + + + + paragraph + + + + + + + + + + + + + section + + + + + + + + + + ruby + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + right + inner + outer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + page + + + + + + + + + text + page + section + document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + address + annote + author + bibliography-type + booktitle + chapter + custom1 + custom2 + custom3 + custom4 + custom5 + edition + editor + howpublished + identifier + institution + isbn + issn + journal + month + note + number + organizations + pages + publisher + report-type + school + series + title + url + volume + year + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + + + + + + + + + + table-column + + + + + + + + + + table-row + + + + + + + + + + table-cell + + + + + + + + + + + + + + + + + graphic + presentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + drawing-page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + linear + axial + radial + ellipsoid + square + rectangular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + objectBoundingBox + + + + + + + + + + + pad + reflect + repeat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + single + double + triple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rect + round + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + portrait + landscape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + headers + grid + annotations + objects + charts + drawings + formulas + zero-values + + + + + + + + + + + ttb + ltr + + + + + + + + + + continue + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + both + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + + + + + + + + + + + + + + none + line + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + small-caps + + + + + + + none + lowercase + uppercase + capitalize + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + super + sub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + roman + swiss + modern + decorative + script + system + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + variable + + + + + + + + + + + + + + + + + + + + + + + [A-Za-z][A-Za-z0-9._\-]* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + latin + asian + complex + ignore + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + italic + oblique + + + + + + + none + embossed + engraved + + + + + + + + + + + + + + + none + + + + + + + + + + + + + + + none + single + double + + + + + + + + + + + + + none + solid + dotted + dash + long-dash + dot-dash + dot-dot-dash + wave + + + + + + + + + + + + + auto + normal + bold + thin + dash + medium + thick + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + normal + bold + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + + + + + + + + + + + + + continuous + skip-white-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + letters + lines + + + + + + + + + + + + + + + + + + + + + none + + + none + accent + dot + circle + disc + + + above + below + + + + + + + + + + + + + + + + + + + + + + + + + fixed + line-height + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + none + + + + condition + + + none + + + + + + + + + + + + + + + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + left + right + center + justify + + + + + + + + + start + center + justify + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + page + + + + + + + + + no-limit + + + + + + + + + + + + + + + + + + + + + + word + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + column + page + + + + + + + auto + column + page + + + + + + + + + + + + + transparent + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + left + center + right + top + bottom + + + + + + + + + + + + + + + + left + center + right + + + + + top + center + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + none + ideograph-alpha + + + + + + + + + simple + hanging + + + + + + + + + normal + strict + + + + + + + + + top + middle + bottom + auto + baseline + + + + + + + + + + + + + lr-tb + rl-tb + tb-rl + tb-lr + lr + rl + tb + page + + + + + + + + + + + + + + + + + + + + + + + + + + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + above + below + + + + + + + + + left + center + right + distribute-letter + distribute-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + solid + dotted + dashed + dot-dashed + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + margins + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + collapsing + separating + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + automatic + + + + + + + + + fix + value-type + + + + + + + + + + + + + ltr + ttb + + + + + + + + + auto + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-wrap + wrap + + + + + + + + + + + + + + + + + + + + none + bottom + top + center + + + + + + + + + none + hidden-and-protected + + + + protected + formula-hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + dash + solid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + + miter + round + bevel + middle + none + inherit + + + + + + + + + none + solid + bitmap + gradient + hatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom + bottom-right + + + + + + + + + + + + + + + + + + + + + + + + + + + + nonzero + evenodd + + + + + + + + + + + + + + + + none + scroll + alternate + slide + + + + + + + + + left + right + up + down + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + justify + + + + + + + + + left + center + right + justify + + + + + + + + + no-wrap + wrap + + + + + + + + + + + + + + greyscale + mono + watermark + standard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + below + above + + + + + + + + + + + + + + + + automatic + left-outside + inside + right-outside + + + + + + + automatic + above + below + center + + + + + + + + + automatic + mm + cm + m + km + pt + pc + inch + ft + mi + + + + + + + + + + + + + + + + + + + + + + + straight-line + angled-line + angled-connector-line + + + + + + + + + fixed + free + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + correct + attractive + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + double-sided + + + + + + + + + object + flat + sphere + + + + + + + + + normal + inverse + + + + + + + + + object + parallel + sphere + + + + + + + object + parallel + sphere + + + + + + + + + luminance + intensity + color + + + + + + + + + enabled + disabled + + + + + + + + + replace + modulate + blend + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + content + position + size + + + + + + + + + + + + left + center + right + from-left + inside + outside + from-inside + + + + + + + + + + + + + + page + page-content + page-start-margin + page-end-margin + frame + frame-content + frame-start-margin + frame-end-margin + paragraph + paragraph-content + paragraph-start-margin + paragraph-end-margin + char + + + + + + + + + + + + + top + middle + bottom + from-top + below + + + + + + + + + + + + + + + + + + page + page-content + frame + frame-content + paragraph + paragraph-content + char + line + baseline + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + left + right + parallel + dynamic + run-through + biggest + + + + + + + + + + + + + + + + no-limit + + + + + + + + + + + + + + + + + full + outside + + + + + + + + + foreground + background + + + + + + + + + + + + + + + + clip + auto-create-new-frame + + + + + + + + + none + vertical + + + vertical + + + + + vertical + + + + + + + + + horizontal + horizontal-on-odd + horizontal-on-even + + + + + + + + + + + + + + + iterative + once-concurrent + once-successive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)(px) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + automatic + + + + named-symbol + + + + square + diamond + arrow-down + arrow-up + arrow-right + arrow-left + bow-tie + hourglass + circle + star + x + plus + asterisk + horizontal-bar + vertical-bar + + + + + + image + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + cubic-spline + b-spline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cuboid + cylinder + cone + pyramid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + side-by-side + stagger-even + stagger-odd + + + + + + + + + + + + + + + none + value + percentage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + variance + standard-deviation + percentage + error-margin + constant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + columns + rows + + + + + + + + + none + linear + logarithmic + exponential + power + + + + + + + + + manual + automatic + semi-automatic + + + + + + + + + none + fade-from-left + fade-from-top + fade-from-right + fade-from-bottom + fade-from-upperleft + fade-from-upperright + fade-from-lowerleft + fade-from-lowerright + move-from-left + move-from-top + move-from-right + move-from-bottom + move-from-upperleft + move-from-upperright + move-from-lowerleft + move-from-lowerright + uncover-to-left + uncover-to-top + uncover-to-right + uncover-to-bottom + uncover-to-upperleft + uncover-to-upperright + uncover-to-lowerleft + uncover-to-lowerright + fade-to-center + fade-from-center + vertical-stripes + horizontal-stripes + clockwise + counterclockwise + open-vertical + open-horizontal + close-vertical + close-horizontal + wavyline-from-left + wavyline-from-top + wavyline-from-right + wavyline-from-bottom + spiralin-left + spiralin-right + spiralout-left + spiralout-right + roll-from-top + roll-from-left + roll-from-right + roll-from-bottom + stretch-from-left + stretch-from-top + stretch-from-right + stretch-from-bottom + + vertical-lines + horizontal-lines + dissolve + random + vertical-checkerboard + horizontal-checkerboard + interlocking-horizontal-left + interlocking-horizontal-right + interlocking-vertical-top + interlocking-vertical-bottom + fly-away + open + close + melt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + full + border + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + + + + [A-Za-z0-9]{1,8} + + + + + [A-Za-z]{1,8} + + + + + 1 + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + ([0-9]*[1-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)% + + + + + [0-9]+\* + + + + + + + + + + + #[0-9a-fA-F]{6} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _self + _blank + _parent + _top + + + + + + + float + time + date + percentage + currency + boolean + string + + + + + + -?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)* + + + + + + + + + \([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\) + + + + + + + [0-9a-zA-Z_]+:[0-9a-zA-Z._\-]+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/opendocument/1.1/OpenDocument-strict-schema-v1.1.rng b/tests/resources/schema/opendocument/1.1/OpenDocument-strict-schema-v1.1.rng new file mode 100644 index 0000000000..e77fe4ba6e --- /dev/null +++ b/tests/resources/schema/opendocument/1.1/OpenDocument-strict-schema-v1.1.rng @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-dsig-schema.rng b/tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-dsig-schema.rng new file mode 100644 index 0000000000..baab69981e --- /dev/null +++ b/tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-dsig-schema.rng @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + 1.2 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-manifest-schema.rng b/tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-manifest-schema.rng new file mode 100644 index 0000000000..af13a26c71 --- /dev/null +++ b/tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-manifest-schema.rng @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + 1.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + edit + presentation-slide-show + read-only + + + + + + + + + + + + + + + + + + + + + + + + + + + SHA1/1K + + + + + + + + + + + + + + + + + + + Blowfish CFB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PBKDF2 + + + + + + + + + + + + + + + + + + + + + + + + + + + SHA1 + + + + + + + + + + + + + + + + [^:]+:[^:]+ + + + + + + + + + + + + diff --git a/tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-schema.rng b/tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-schema.rng new file mode 100644 index 0000000000..538c335b3b --- /dev/null +++ b/tests/resources/schema/opendocument/1.2/OpenDocument-v1.2-os-schema.rng @@ -0,0 +1,18127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + boolean + short + int + long + double + string + datetime + base64Binary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + + + + + + simple + + + + + + + replace + + + + + onLoad + + + + + + + + + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + date + + + + + + time + + + + + + boolean + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + none + + + + + condition + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:page-count + text:paragraph-count + text:word-count + text:character-count + text:table-count + text:image-count + text:object-count + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:reference-ref + text:bookmark-ref + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + unit + gap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text:identifier + text:address + text:annote + text:author + text:booktitle + text:chapter + text:edition + text:editor + text:howpublished + text:institution + text:journal + text:month + text:note + text:number + text:organizations + text:pages + text:publisher + text:school + text:series + text:title + text:report-type + text:volume + text:year + text:url + text:custom1 + text:custom2 + text:custom3 + text:custom4 + text:custom5 + text:isbn + text:issn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + footnote + endnote + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + previous + current + next + + + + + + + + + + previous + next + + + + + + + + + + + + + + name + number + number-and-name + plain-number-and-name + plain-number + + + + + + + + + + + + + full + path + name + name-and-extension + + + + + + + + + + + full + path + name + name-and-extension + area + title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + table + text-box + image + object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + number-no-superior + number-all-superior + number + + + + + + + + + + + + + + + + + + + + + + category-and-value + caption + value + + + + + + + page + chapter + direction + text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float + + + + + + + + percentage + + + + + + + + currency + + + + + + + + + + + + + date + + + + + + + + time + + + + + + + + boolean + + + + + + + + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + value + none + + + + + + + + + value + formula + none + + + + + + + + + value + formula + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + article + book + booklet + conference + custom1 + custom2 + custom3 + custom4 + custom5 + email + inbook + incollection + inproceedings + journal + manual + mastersthesis + misc + phdthesis + proceedings + techreport + unpublished + www + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + category-and-value + caption + + + + + + + + + + document + chapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + separator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + name + number + number-and-name + plain-number + plain-number-and-name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + address + annote + author + bibliography-type + booktitle + chapter + custom1 + custom2 + custom3 + custom4 + custom5 + edition + editor + howpublished + identifier + institution + isbn + issn + journal + month + note + number + organizations + pages + publisher + report-type + school + series + title + url + volume + year + + + + + + + + + + + + + + + + + + + + + + + + right + + + + left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + collapse + filter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+ + + + + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+(:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+$?[0-9]+)? + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+:($?([^\. ']+|'([^']|'')+'))?\.$?[0-9]+ + + + ($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+:($?([^\. ']+|'([^']|'')+'))?\.$?[A-Z]+ + + + + + + Value is a space separated list of "cellRangeAddress" patterns + + + + + + + + + + + + + + copy-all + copy-results-only + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trace-dependents + remove-dependents + trace-precedents + remove-precedents + trace-errors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-another-table + to-another-table + from-same-table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + date + + + + + + + + + + + + + + + + enable + disable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + unsorted + sort-ascending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + stop + warning + information + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + print-range + filter + repeat-row + repeat-column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + column + row + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + alpha-numeric + integer + double + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + automatic + + + + + + + + ascending + descending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + self + cell-range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + data + hidden + + + + + page + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + from-top + from-bottom + + + + + + + + + + + + + + + + data + + + + + + + + none + manual + name + + + + + + ascending + descending + + + + + + + + + + + + + + + tabular-layout + outline-subtotals-top + outline-subtotals-bottom + + + + + + + + + + + + + + + + + + + + + named + + + + + + + + previous + next + + + + + + none + member-difference + member-percentage + member-percentage-difference + running-total + row-percentage + column-percentage + total-percentage + index + + + + + + + + + + + + + + + + + + + + + + auto + + + + + + auto + + + + + + + + auto + + + + + + auto + + + + + + + + + seconds + minutes + hours + days + months + quarters + years + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + average + count + countnums + max + min + product + stdev + stdevp + sum + var + varp + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + accepted + rejected + pending + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + always + screen + printer + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + full + section + cut + arc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + standard + lines + line + curve + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + frame + paragraph + char + as-char + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom-right + + + + + + auto + left + right + up + down + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale + scale-min + + + + + + + + scale + scale-min + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + new + replace + + + + + + + + + + + + nohref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + phong + gouraud + draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + parallel + perspective + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + segments + rectangle + + + + + + + + + + + + + + + + + normal + path + shape + + + + + + + path + shape + + + + + + + + + + + + + + + + + + non-primitive + + + + + + \([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))){2}[ ]*\) + + + + + -0.5 + 0.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + title + outline + subtitle + text + graphic + object + chart + table + orgchart + page + notes + handout + header + footer + date-time + page-number + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + new + replace + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + fade + move + stripes + open + close + dissolve + wavyline + random + lines + laser + appear + hide + move-short + checkerboard + rotate + stretch + + + + + none + from-left + from-top + from-right + from-bottom + from-center + from-upper-left + from-upper-right + from-lower-left + from-lower-right + to-left + to-top + to-right + to-bottom + to-upper-left + to-upper-right + to-lower-right + to-lower-left + path + spiral-inward-left + spiral-inward-right + spiral-outward-left + spiral-outward-right + vertical + horizontal + to-center + clockwise + counter-clockwise + + + + + slow + medium + fast + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + on-click + with-previous + after-previous + timing-root + main-sequence + interactive-sequence + + + + + + + + + + + + + + + + + custom + entrance + exit + emphasis + motion-path + ole-action + media-call + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + previous-page + next-page + first-page + last-page + hide + stop + execute + show + verb + fade-out + sound + last-visited-page + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + current-date + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + top-start + bottom-start + top-end + bottom-end + + + + + + + + + wide + high + balanced + + + + + custom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + row + column + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + y + z + + + + + + + + + + + + + + + + + + + + + + major + minor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + none + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + equal-integer + is-boolean + equal-boolean + equal-use-only-zero + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + boolean + short + int + long + double + string + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + none + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-nulls + nullable + + + + + + + + + + + + + + + + + + + + bit + boolean + tinyint + smallint + integer + bigint + float + real + double + numeric + decimal + char + varchar + longvarchar + date + time + timestmp + binary + varbinary + longvarbinary + sqlnull + other + object + distinct + struct + array + blob + clob + ref + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + primary + unique + foreign + + + + + + + + + + + + + cascade + restrict + set-null + no-action + set-default + + + + + + + + cascade + restrict + set-null + no-action + set-default + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + get + post + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + command + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + current + parent + + + + + records + current + page + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + selection + selection-indices + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + unchecked + checked + unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horizontal + vertical + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + submit + reset + push + url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + flat + 3d + + + + + + + + + center + + + + + + start + end + top + bottom + + + + + + start + center + end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + table + query + sql + sql-pass-through + value-list + table-fields + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + void + + + + + + + + float + + + + + + + + + + + + percentage + + + + + + + + + + + + currency + + + + + + + + + + + + + + + + + date + + + + + + + + + + + + time + + + + + + + + + + + + boolean + + + + + + + + + + + + string + + + + + + + + + + + void + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + i + I + + + + + + + + a + A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + + To avoid inclusion of the complete MathML schema, anything is allowed within a math:math top-level element + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + into-default-style-data-style + into-english-number + keep-text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + rgb + hsl + + + + + + + clockwise + counter-clockwise + + + + + + + + + translate + scale + rotate + skewX + skewY + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + + + + in + out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discrete + linear + paced + spline + + + + + + + + + + + + + + + + + + + + + + + + none + sum + + + + + + + replace + sum + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + first + last + all + media + + + + + + + + + + + + + + + + indefinite + + + + + + + 0.0 + + + + + + + remove + freeze + hold + auto + default + transition + + + + + + + + + remove + freeze + hold + transition + auto + inherit + + + + + + + + + never + always + whenNotActive + default + + + + + + + + + never + always + whenNotActive + inherit + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + left + right + mirrored + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + row + column + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normal + ultra-condensed + extra-condensed + condensed + semi-condensed + semi-expanded + expanded + extra-expanded + ultra-expanded + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + onRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + short + long + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + short + medium + long + + + + + + + + + + + + + + + + + fixed + language + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gregorian + gengou + ROC + hanja_yoil + hanja + hijri + jewish + buddhist + + + + + + + + + + text + + + + + + + + paragraph + + + + + + + + + + + section + + + + + + + + ruby + + + + + + + + table + + + + + + + + table-column + + + + + + + + table-row + + + + + + + + table-cell + + + + + + + + + + + + + + + graphic + presentation + + + + + + + + + + + + + + + drawing-page + + + + + + + + chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + right + inner + outer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + document + chapter + page + + + + + + + text + page + section + document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + address + annote + author + bibliography-type + booktitle + chapter + custom1 + custom2 + custom3 + custom4 + custom5 + edition + editor + howpublished + identifier + institution + isbn + issn + journal + month + note + number + organizations + pages + publisher + report-type + school + series + title + url + volume + year + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + linear + axial + radial + ellipsoid + square + rectangular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + objectBoundingBox + + + + + + + + + + + pad + reflect + repeat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + single + double + triple + + + + + + + + + + + + + + + + + + + + + + + + simple + + + + + + + embed + + + + + onLoad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rect + round + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + portrait + landscape + + + + + + + + + + + + + + + + + + + + + + headers + grid + annotations + objects + charts + drawings + formulas + zero-values + + + + + + + + + ttb + ltr + + + + + + + + continue + + + + + + + + + + + + + + + + + horizontal + vertical + both + none + + + + + + + + + + + + + none + line + both + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + lowercase + uppercase + capitalize + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + super + sub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + latin + asian + complex + ignore + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + embossed + engraved + + + + + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + letters + lines + + + + + + + + + + + + + + + + + none + + + none + accent + dot + circle + disc + + + above + below + + + + + + + + + + + + + + + + + + + fixed + line-height + + + + + + + + + + + + + + + + + + + + + true + + + none + + + + condition + + + none + + + + + + + + + normal + small-caps + + + + + roman + swiss + modern + decorative + script + system + + + + + fixed + variable + + + + + [A-Za-z][A-Za-z0-9._\-]* + + + + + normal + italic + oblique + + + + + none + + + + + + none + single + double + + + + + none + solid + dotted + dash + long-dash + dot-dash + dot-dot-dash + wave + + + + + auto + normal + bold + thin + medium + thick + + + + + + + + normal + bold + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + + + + + continuous + skip-white-space + + + + + + + + + + + + + + + + + normal + + + + + + + + + + + + + + + + + + + + + + + + + start + center + justify + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + auto + page + + + + + + + no-limit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + ideograph-alpha + + + + + + + simple + hanging + + + + + + + normal + strict + + + + + + + top + middle + bottom + auto + baseline + + + + + + + + + + + + + + + + + + + + + + + start + end + left + right + center + justify + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + + char + + + + + + + + + + + + + + + + + + + + + + + font-color + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + word + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + column + page + + + + + + + auto + column + page + + + + + + + + + transparent + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + left + center + right + top + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + + + + + top + center + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + lr-tb + rl-tb + tb-rl + tb-lr + lr + rl + tb + page + + + + + + + + + + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + above + below + + + + + + + left + center + right + distribute-letter + distribute-space + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + solid + dotted + dashed + dot-dashed + + + + + + + + + + + + + + + top + middle + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + left + center + right + margins + + + + + + + + + + + + + + + + + + + + collapsing + separating + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + always + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + automatic + + + + + + + fix + value-type + + + + + + + + auto + 0 + 0deg + 0rad + 0grad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-wrap + wrap + + + + + + + + none + bottom + top + center + + + + + + + none + hidden-and-protected + + + + protected + formula-hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ltr + ttb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + label-width-and-position + label-alignment + + + + + + + + + + + + + + + + + + + + + listtab + space + nothing + + + + + + + + + + + + + + + + + + + + + + + + + none + dash + solid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + miter + round + bevel + middle + none + + + + + + + butt + square + round + + + + + + + + + + + + none + scroll + alternate + slide + + + + + + + left + right + up + down + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top + middle + bottom + justify + + + + + + + left + center + right + justify + + + + + + + no-wrap + wrap + + + + + + + + + + + + greyscale + mono + watermark + standard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + below + above + + + + + + + + + + + + automatic + left-outside + inside + right-outside + + + + + + + automatic + above + below + center + + + + + + + automatic + mm + cm + m + km + pt + pc + inch + ft + mi + + + + + + + + + + + + + + + + + straight-line + angled-line + angled-connector-line + + + + + + + fixed + free + + + + + + + + + + + + + + + + + horizontal + vertical + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + correct + attractive + + + + + + + + + + + + + + + + + enabled + disabled + + + + + + + + + + + + + + + + + + + + + + standard + double-sided + + + + + + + object + flat + sphere + + + + + + + normal + inverse + + + + + + + object + parallel + sphere + + + + + + + object + parallel + sphere + + + + + + + luminance + intensity + color + + + + + + + enabled + disabled + + + + + + + replace + modulate + blend + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + content + position + size + + + + + + + + + + left + center + right + from-left + inside + outside + from-inside + + + + + + + + + + + + page + page-content + page-start-margin + page-end-margin + frame + frame-content + frame-start-margin + frame-end-margin + paragraph + paragraph-content + paragraph-start-margin + paragraph-end-margin + char + + + + + + + + + + + + + + + + + none + left + right + parallel + dynamic + run-through + biggest + + + + + + + + + + + + no-limit + + + + + + + + + + + + + full + outside + + + + + + + foreground + background + + + + + + + + + + + + clip + auto-create-new-frame + + + + + + + none + vertical + + + vertical + + + + + vertical + + + + + + + + auto + + + + + + + + iterative + once-concurrent + once-successive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + content + thumbnail + icon + print-view + + + + + + + + + + + + + + + + none + solid + bitmap + gradient + hatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + no-repeat + repeat + stretch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + top-left + top + top-right + left + center + right + bottom-left + bottom + bottom-right + + + + + + + + + horizontal + vertical + + + + + + + + + + + + + + + + + + nonzero + evenodd + + + + + + + + + + + + + + + + + + + top + middle + bottom + from-top + below + + + + + + + + + + + + + + page + page-content + frame + frame-content + paragraph + paragraph-content + char + line + baseline + text + + + + + + + + + + + + + + horizontal + horizontal-on-odd + horizontal-on-even + + + + + rect\([ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)))|(auto))([ ]*,[ ]*((-?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc))))|(auto)){3}[ ]*\) + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)(px) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + automatic + + + + named-symbol + + + + square + diamond + arrow-down + arrow-up + arrow-right + arrow-left + bow-tie + hourglass + circle + star + x + plus + asterisk + horizontal-bar + vertical-bar + + + + + + image + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + cubic-spline + b-spline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cuboid + cylinder + cone + pyramid + + + + + + + + + + + + + + + + + use-zero + leave-gap + ignore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + side-by-side + stagger-even + stagger-odd + + + + + + + + + none + value + percentage + value-and-percentage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + variance + standard-deviation + percentage + error-margin + constant + standard-error + cell-range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + columns + rows + + + + + + + none + linear + logarithmic + exponential + power + + + + + + + start + end + + + + + + + + near-axis + near-axis-other-side + outside-start + outside-end + + + + + + + at-labels + at-axis + at-labels-and-axis + + + + + + + + + + + + + avoid-overlap + center + top + top-right + right + bottom-right + bottom + bottom-left + left + top-left + inside + outside + near-origin + + + + + + + + manual + automatic + semi-automatic + + + + + + + none + fade-from-left + fade-from-top + fade-from-right + fade-from-bottom + fade-from-upperleft + fade-from-upperright + fade-from-lowerleft + fade-from-lowerright + move-from-left + move-from-top + move-from-right + move-from-bottom + move-from-upperleft + move-from-upperright + move-from-lowerleft + move-from-lowerright + uncover-to-left + uncover-to-top + uncover-to-right + uncover-to-bottom + uncover-to-upperleft + uncover-to-upperright + uncover-to-lowerleft + uncover-to-lowerright + fade-to-center + fade-from-center + vertical-stripes + horizontal-stripes + clockwise + counterclockwise + open-vertical + open-horizontal + close-vertical + close-horizontal + wavyline-from-left + wavyline-from-top + wavyline-from-right + wavyline-from-bottom + spiralin-left + spiralin-right + spiralout-left + spiralout-right + roll-from-top + roll-from-left + roll-from-right + roll-from-bottom + stretch-from-left + stretch-from-top + stretch-from-right + stretch-from-bottom + vertical-lines + horizontal-lines + dissolve + random + vertical-checkerboard + horizontal-checkerboard + interlocking-horizontal-left + interlocking-horizontal-right + interlocking-vertical-top + interlocking-vertical-bottom + fly-away + open + close + melt + + + + + + + + + + + + + + + + + + + + + + forward + reverse + + + + + + + + + + + + + + + + + visible + hidden + + + + + + + full + border + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + false + + + + + + + + + + + + + + + + + + + + [A-Za-z0-9]{1,8} + + + + + [A-Za-z]{1,8} + + + + + [A-Za-z0-9]{1,8} + + + + + 1 + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + ([0-9]+(\.[0-9]*)?|\.[0-9]+)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + ([0-9]*[1-9][0-9]*(\.[0-9]*)?|0+\.[0-9]*[1-9][0-9]*|\.[0-9]*[1-9][0-9]*)((cm)|(mm)|(in)|(pt)|(pc)|(px)) + + + + + -?([0-9]+(\.[0-9]*)?|\.[0-9]+)% + + + + + ([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)% + + + + + -?([0-9]?[0-9](\.[0-9]*)?|100(\.0*)?|\.[0-9]+)% + + + + + [0-9]+\* + + + + + + + + + + + #[0-9a-fA-F]{6} + + + + + + + + (([\i-[:]][\c-[:]]*)?:)?.+ + 1 + + + + + + + + + + + + \[(([\i-[:]][\c-[:]]*)?:)?.+\] + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _self + _blank + _parent + _top + + + + + + float + time + date + percentage + currency + boolean + string + + + + + -?[0-9]+,-?[0-9]+([ ]+-?[0-9]+,-?[0-9]+)* + + + + + + + + \([ ]*-?([0-9]+(\.[0-9]*)?|\.[0-9]+)([ ]+-?([0-9]+(\.[0-9]*)?|\.[0-9]+)){2}[ ]*\) + + + + + [^:]+:[^:]+ + + + + + An IRI-reference as defined in [RFC3987]. See ODF 1.2 Part 1 section 18.3. + + + + + + + + + + + + + + + + + + + + + From d9495c21d6472bbfa45078ce7de252778b8e2c60 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 8 Aug 2017 15:43:10 +0200 Subject: [PATCH 010/139] #382 : OpenXML (ISO 29500-1 Strict) --- tests/resources/schema/ooxml/dml-chart.xsd | 5312 ++--- .../schema/ooxml/dml-chartDrawing.xsd | 480 +- .../schema/ooxml/dml-compatibility.xsd | 20 - tests/resources/schema/ooxml/dml-diagram.xsd | 4689 +--- .../schema/ooxml/dml-lockedCanvas.xsd | 18 +- tests/resources/schema/ooxml/dml-main.xsd | 12698 +++------- tests/resources/schema/ooxml/dml-picture.xsd | 63 +- .../schema/ooxml/dml-spreadsheetDrawing.xsd | 609 +- .../ooxml/dml-wordprocessingDrawing.xsd | 844 +- tests/resources/schema/ooxml/pml-mso2010.xsd | 10 - tests/resources/schema/ooxml/pml.xsd | 6498 ++--- .../shared-additionalCharacteristics.xsd | 98 +- .../schema/ooxml/shared-bibliography.xsd | 673 +- .../schema/ooxml/shared-commonSimpleTypes.xsd | 560 +- .../ooxml/shared-customXmlDataProperties.xsd | 65 +- .../shared-customXmlSchemaProperties.xsd | 56 +- .../ooxml/shared-documentPropertiesCustom.xsd | 272 +- .../shared-documentPropertiesExtended.xsd | 234 +- .../shared-documentPropertiesVariantTypes.xsd | 992 +- tests/resources/schema/ooxml/shared-math.xsd | 2045 +- .../ooxml/shared-relationshipReference.xsd | 59 +- tests/resources/schema/ooxml/sml.xsd | 19835 ++++------------ tests/resources/schema/ooxml/vml-main.xsd | 1679 -- .../schema/ooxml/vml-officeDrawing.xsd | 1614 -- .../schema/ooxml/vml-presentationDrawing.xsd | 23 - .../schema/ooxml/vml-spreadsheetDrawing.xsd | 465 - .../ooxml/vml-wordprocessingDrawing.xsd | 358 - tests/resources/schema/ooxml/wml.xsd | 15277 +++--------- 28 files changed, 16921 insertions(+), 58625 deletions(-) delete mode 100644 tests/resources/schema/ooxml/dml-compatibility.xsd delete mode 100644 tests/resources/schema/ooxml/pml-mso2010.xsd delete mode 100644 tests/resources/schema/ooxml/vml-main.xsd delete mode 100644 tests/resources/schema/ooxml/vml-officeDrawing.xsd delete mode 100644 tests/resources/schema/ooxml/vml-presentationDrawing.xsd delete mode 100644 tests/resources/schema/ooxml/vml-spreadsheetDrawing.xsd delete mode 100644 tests/resources/schema/ooxml/vml-wordprocessingDrawing.xsd diff --git a/tests/resources/schema/ooxml/dml-chart.xsd b/tests/resources/schema/ooxml/dml-chart.xsd index c884009af7..01d3693527 100644 --- a/tests/resources/schema/ooxml/dml-chart.xsd +++ b/tests/resources/schema/ooxml/dml-chart.xsd @@ -1,3863 +1,1449 @@ - - - - - - - - - - Boolean Value - - - - - - - Floating Point Value - - - - - - - Integer Value - - - - - - - Relationship Reference - - - - - - - - - - Uniform Resource Identifier - - - - - - - - Extension - - - - - - - - - Numeric Value - - - - - - Index - - - - - Number Format - - - - - - - - Format Code - - - - - Point Count - - - - - Numeric Point - - - - - - - - - - Formula - - - - - Number Cache - - - - - - - - - - - Number Reference - - - - - Number Literal - - - - - - - - - - Text Value - - - - - - Index - - - - - - - - - - - - - - - Formula - - - - - String Cache - - - - - - - - - - - String Reference - - - - - Rich Text - - - - - - - - - Language Code - - - - - - - - String Point - - - - - - - - - - Level - - - - - - - - - - Formula - - - - - Multi Level String Cache - - - - - - - - - - - Multi Level String Reference - - - - - Number Reference - - - - - Number Literal - - - - - - String Literal - - - - - - - - - - - - - - - - Layout Target - - - - - Inner - - - - - Outer - - - - - - - - Layout Target Value - - - - - - Layout Mode - - - - - Edge - - - - - Factor - - - - - - - - Layout Mode Value - - - - - - - - Layout Target - - - - - Left Mode - - - - - Top Mode - - - - - Width Mode - - - - - Height Mode - - - - - Left - - - - - Top - - - - - Width - - - - - Height - - - - - Chart Extensibility - - - - - - - - - Manual Layout - - - - - Chart Extensibility - - - - - - - - - Chart Text - - - - - Layout - - - - - Overlay - - - - - - - Chart Extensibility - - - - - - - X Rotation - - - - - - - - - - X Rotation Value - - - - - - Height Percent - - - - - - - - - - Height Percent Value - - - - - - Y Rotation - - - - - - - - - - Y Rotation Value - - - - - - Depth Percent - - - - - - - - - - Depth Percent Value - - - - - - Perspective - - - - - - - - - - Perspective Value - - - - - - - - X Rotation - - - - - Height Percent - - - - - Y Rotation - - - - - Depth Percent - - - - - Right Angle Axes - - - - - Perspective - - - - - Chart Extensibility - - - - - - - - - Thickness - - - - - - Picture Options - - - - - Chart Extensibility - - - - - - - - - Show Horizontal Border - - - - - Show Vertical Border - - - - - Show Outline Border - - - - - Show Legend Keys - - - - - - Text Properties - - - - - Chart Extensibility - - - - - - - Gap Amount - - - - - - - - - - Gap Size Value - - - - - - Overlap - - - - - - - - - - Overlap Value - - - - - - Bubble Scale - - - - - - - - - - Bubble Scale Value - - - - - - Size Represents - - - - - Bubble Size Represents Area - - - - - Bubble Size Represents Width - - - - - - - - Size Represents Value - - - - - - First Slice Angle - - - - - - - - - - First Slice Angle Value - - - - - - Hole Size - - - - - - - - - - Hole Size Value - - - - - - Split Type - - - - - Default Split - - - - - Custom Split - - - - - Split by Percentage - - - - - Split by Position - - - - - Split by Value - - - - - - - - Split Type Value - - - - - - - - Second Pie Point - - - - - - - Second Pie Size - - - - - - - - - - Second Pie Size Value - - - - - - - Number Format Code - - - - - Linked to Source - - - - - - Label Alignment - - - - - Center - - - - - Left - - - - - Right - - - - - - - - Label Alignment Value - - - - - - Data Label Position - - - - - Best Fit - - - - - Bottom - - - - - Center - - - - - Inside Base - - - - - Inside End - - - - - Left - - - - - Outside End - - - - - Right - - - - - Top - - - - - - - - Data Label Position Value - - - - - - - - Number Format - - - - - - - Data Label Position - - - - - Show Legend Key - - - - - Show Value - - - - - Show Category Name - - - - - Show Series Name - - - - - Show Percent - - - - - Show Bubble Size - - - - - Separator - - - - - - - - - Layout - - - - - - - - - - - Index - - - - - - Delete - - - - - - - Chart Extensibility - - - - - - - - - - Show Leader Lines - - - - - Leader Lines - - - - - - - - - Data Label - - - - - - Delete - - - - - - - Chart Extensibility - - - - - - - Marker Style - - - - - Circle - - - - - Dash - - - - - Diamond - - - - - Dot - - - - - None - - - - - Picture - - - - - Plus - - - - - Square - - - - - Star - - - - - Triangle - - - - - X - - - - - - - - Marker Style Value - - - - - - Marker Size - - - - - - - - - - Marker Size Value - - - - - - - - Symbol - - - - - Size - - - - - - Chart Extensibility - - - - - - - - - Index - - - - - Invert if Negative - - - - - Marker - - - - - 3D Bubble - - - - - Explosion - - - - - - - Chart Extensibility - - - - - - - Trendline Type - - - - - Exponential - - - - - Linear - - - - - Logarithmic - - - - - Moving Average - - - - - Polynomial - - - - - Power - - - - - - - - Trendline Type Value - - - - - - Order - - - - - - - - - - Order Value - - - - - - Period - - - - - - - - - - Period Value - - - - - - - - Layout - - - - - - Number Format - - - - - - - Chart Extensibility - - - - - - - - - Trendline Name - - - - - - Trendline Type - - - - - Polynomial Trendline Order - - - - - Period - - - - - Forward - - - - - Backward - - - - - Intercept - - - - - Display R Squared Value - - - - - Display Equation - - - - - Trendline Label - - - - - Chart Extensibility - - - - - - - Error Bar Direction - - - - - X - - - - - Y - - - - - - - - Error Bar Direction Value - - - - - - Error Bar Type - - - - - Both - - - - - Minus - - - - - Plus - - - - - - - - Error Bar Type Value - - - - - - Error Value Type - - - - - Custom Error Bars - - - - - Fixed Value - - - - - Percentage - - - - - Standard Deviation - - - - - Standard Error - - - - - - - - Error Bar Type Value - - - - - - - - Error Bar Direction - - - - - Error Bar Type - - - - - Error Bar Value Type - - - - - No End Cap - - - - - Plus - - - - - Minus - - - - - Error Bar Value - - - - - - Chart Extensibility - - - - - - - - - - - - - - Gap Width - - - - - Up Bars - - - - - Down Bars - - - - - Chart Extensibility - - - - - - - - - Index - - - - - Order - - - - - Series Text - - - - - - - - - - - Marker - - - - - Data Point - - - - - Data Labels - - - - - - Error Bars - - - - - Category Axis Data - - - - - - - Chart Extensibility - - - - - - - - - - Marker - - - - - Data Point - - - - - Data Labels - - - - - - Error Bars - - - - - - - Smoothing - - - - - Chart Extensibility - - - - - - - - - - Marker - - - - - Data Point - - - - - Data Labels - - - - - Category Axis Data - - - - - - Chart Extensibility - - - - - - - - - - Invert if Negative - - - - - - Data Point - - - - - Data Labels - - - - - Trendlines - - - - - Error Bars - - - - - Category Axis Data - - - - - - Shape - - - - - Chart Extensibility - - - - - - - - - - - Data Point - - - - - Data Labels - - - - - - Error Bars - - - - - Category Axis Data - - - - - Values - - - - - Chart Extensibility - - - - - - - - - - Explosion - - - - - Data Point - - - - - Data Labels - - - - - Category Axis Data - - - - - - Chart Extensibility - - - - - - - - - - Invert if Negative - - - - - Data Point - - - - - Data Labels - - - - - - Error Bars - - - - - X Values - - - - - Y Values - - - - - Bubble Size - - - - - 3D Bubble - - - - - Chart Extensibility - - - - - - - - - - Category Axis Data - - - - - - Chart Extensibility - - - - - - - Grouping - - - - - 100% Stacked - - - - - Standard - - - - - Stacked - - - - - - - - Grouping Value - - - - - - - - - - - - - Grouping - - - - - - - Data Labels - - - - - Drop Lines - - - - - - - - - - High Low Lines - - - - - - Show Marker - - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - - - - Gap Depth - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - - - Line Chart Series - - - - - Data Labels - - - - - - High Low Lines - - - - - Up/Down Bars - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - Scatter Style - - - - - None - - - - - Line - - - - - Line with Markers - - - - - Marker - - - - - Smooth - - - - - Smooth with Markers - - - - - - - - Scatter Style Value - - - - - - - - Scatter Style - - - - - Vary Colors by Point - - - - - Scatter Chart Series - - - - - Data Labels - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - Radar Style - - - - - Standard - - - - - Marker - - - - - Filled - - - - - - - - Radar Style Value - - - - - - - - Radar Style - - - - - - Radar Chart Series - - - - - Data Labels - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - Bar Grouping - - - - - 100% Stacked - - - - - Clustered - - - - - Standard - - - - - Stacked - - - - - - - - Bar Grouping Value - - - - - - Bar Direction - - - - - Bar - - - - - Column - - - - - - - - Bar Direction Value - - - - - - Shape - - - - - Cone - - - - - Cone to Max - - - - - Box - - - - - Cylinder - - - - - Pyramid - - - - - Pyramid to Maximum - - - - - - - - Shape Value - - - - - - - - Bar Direction - - - - - Bar Grouping - - - - - - Bar Chart Series - - - - - Data Labels - - - - - - - - - - Gap Width - - - - - Overlap - - - - - Series Lines - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - - - - Gap Width - - - - - Gap Depth - - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - - - Grouping - - - - - - Area Chart Series - - - - - Data Labels - - - - - Drop Lines - - - - - - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - - - - Gap Depth - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - - - - Pie Chart Series - - - - - Data Labels - - - - - - - - - - First Slice Angle - - - - - Chart Extensibility - - - - - - - - - - Chart Extensibility - - - - - - - - - - First Slice Angle - - - - - Hole Size - - - - - Chart Extensibility - - - - - - - Pie of Pie or Bar of Pie Type - - - - - Pie - - - - - Bar - - - - - - - - Pie of Pie or Bar of Pie Type Value - - - - - - - - Pie of Pie or Bar of Pie Type - - - - - - Gap Width - - - - - Split Type - - - - - Split Position - - - - - Custom Split - - - - - Second Pie Size - - - - - - Chart Extensibility - - - - - - - - - - Bubble Chart Series - - - - - Data Labels - - - - - 3D Bubble - - - - - Bubble Scale - - - - - Show Negative Bubbles - - - - - Size Represents - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - - - - - - - - - Band Format - - - - - - - - - Wireframe - - - - - Surface Chart Series - - - - - Band Formats - - - - - - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - - - - Axis ID - - - - - Chart Extensibility - - - - - - - Axis Position - - - - - Bottom - - - - - Left - - - - - Right - - - - - Top - - - - - - - - Axis Position Value - - - - - - Crosses - - - - - Axis Crosses at Zero - - - - - Maximum - - - - - Minimum - - - - - - - - Crosses Value - - - - - - Cross Between - - - - - Between - - - - - Midpoint of Category - - - - - - - - Cross Between Value - - - - - - Tick Mark - - - - - Cross - - - - - Inside - - - - - None - - - - - Outside - - - - - - - - Tick Mark Value - - - - - - Tick Label Position - - - - - High - - - - - Low - - - - - Next To - - - - - None - - - - - - - - Tick Label Position Value - - - - - - Skip - - - - - - - - - Tick Skip Value - - - - - - Time Unit - - - - - Days - - - - - Months - - - - - Years - - - - - - - - Time Unit Value - - - - - - Axis Unit - - - - - - - - - Major Unit Value - - - - - - Built-In Unit - - - - - Hundreds - - - - - Thousands - - - - - Ten Thousands - - - - - Hundred Thousands - - - - - Millions - - - - - Ten Millions - - - - - Hundred Millions - - - - - Billions - - - - - Trillions - - - - - - - - Built In Unit Value - - - - - - Picture Format - - - - - Stretch - - - - - Stack - - - - - Stack and Scale - - - - - - - - Picture Format Value - - - - - - Picture Stack Unit - - - - - - - - - Picture Stack Unit - - - - - - - - Apply To Front - - - - - Apply To Sides - - - - - Apply to End - - - - - Picture Format - - - - - Picture Stack Unit - - - - - - - - - Layout - - - - - - - - - - - - - Custom Display Unit - - - - - Built in Display Unit Value - - - - - - Display Units Label - - - - - Chart Extensibility - - - - - - - Orientation - - - - - Maximum to Minimum - - - - - Minimum to Maximum - - - - - - - - Orientation Value - - - - - - Logarithmic Base - - - - - - - - - - Logarithmic Base Value - - - - - - - - Logarithmic Base - - - - - Axis Orientation - - - - - Maximum - - - - - Minimum - - - - - Chart Extensibility - - - - - - - Label Offset - - - - - - - - - - Label Offset Value - - - - - - - - Axis ID - - - - - Scaling - - - - - Delete - - - - - Axis Position - - - - - Major Gridlines - - - - - Minor Gridlines - - - - - Title - - - - - Number Format - - - - - Major Tick Mark - - - - - Minor Tick Mark - - - - - Tick Label Position - - - - - - - Crossing Axis ID - - - - - - Crosses - - - - - Crossing Value - - - - - - - - - - - Automatic Category Axis - - - - - Label Alignment - - - - - Label Offset - - - - - - Tick Mark Skip - - - - - No Multi-level Labels - - - - - Chart Extensibility - - - - - - - - - - Automatic Category Axis - - - - - Label Offset - - - - - Base Time Unit - - - - - Major Unit - - - - - Major Time Unit - - - - - Minor Unit - - - - - Minor Time Unit - - - - - Chart Extensibility - - - - - - - - - - Tick Label Skip - - - - - - Chart Extensibility - - - - - - - - - - Cross Between - - - - - Major Unit - - - - - Minor Unit - - - - - Display Units - - - - - Chart Extensibility - - - - - - - - - Layout - - - - - - Area Charts - - - - - 3D Area Charts - - - - - Line Charts - - - - - 3D Line Charts - - - - - Stock Charts - - - - - Radar Charts - - - - - Scatter Charts - - - - - Pie Charts - - - - - 3D Pie Charts - - - - - Doughnut Charts - - - - - Bar Charts - - - - - 3D Bar Charts - - - - - Pie of Pie or Bar of Pie Charts - - - - - Surface Charts - - - - - 3D Surface Charts - - - - - Bubble Charts - - - - - - - Value Axis - - - - - Category Axis Data - - - - - Date Axis - - - - - Series Axis - - - - - - Data Table - - - - - - Chart Extensibility - - - - - - - - - Index - - - - - - - Marker - - - - - Data Label - - - - - Chart Extensibility - - - - - - - - - Pivot Format - - - - - - - Legend Position - - - - - Bottom - - - - - Top Right - - - - - Left - - - - - Right - - - - - Top - - - - - - - - Legend Position Value - - - - - - - - - - - - - Index - - - - - - Delete - - - - - - - Chart Extensibility - - - - - - - - - Legend Position - - - - - Legend Entry - - - - - Layout - - - - - Overlay - - - - - - - Chart Extensibility - - - - - - - Display Blanks As - - - - - Span - - - - - Gap - - - - - Zero - - - - - - - - Display Blanks As Value - - - - - - - - - Auto Title Is Deleted - - - - - Pivot Formats - - - - - View In 3D - - - - - Floor - - - - - Side Wall - - - - - Back Wall - - - - - Plot Area - - - - - Legend - - - - - Plot Visible Only - - - - - Display Blanks As - - - - - Show Data Labels over Maximum - - - - - Chart Extensibility - - - - - - - Style - - - - - - - - - - Style Type - - - - - - - - Pivot Name - - - - - Format ID - - - - - Chart Extensibility - - - - - - - - - Chart Object - - - - - Data Cannot Be Changed - - - - - Formatting - - - - - Selection - - - - - User Interface - - - - - - - - - Odd Header - - - - - Odd Footer - - - - - Even Header - - - - - Even Footer - - - - - First Header - - - - - First Footer - - - - - - Align With Margins - - - - - Different Odd Even - - - - - Different First - - - - - - - Left - - - - - Right - - - - - Top - - - - - Bottom - - - - - Header - - - - - Footer - - - - - - Printed Page Orientation - - - - - Default Page Orientation - - - - - Portrait Page - - - - - Landscape Page - - - - - - - - - Update Automatically - - - - - - Relationship Reference - - - - - - - Page Size - - - - - Paper Height - - - - - Paper Width - - - - - First Page Number - - - - - Orientation - - - - - Black and White - - - - - Draft - - - - - Use First Page Number - - - - - Horizontal DPI - - - - - Vertical DPI - - - - - Copies - - - - - - - - Header and Footer - - - - - Page Margins - - - - - Page Setup - - - - - Legacy Drawing for Headers and Footers - - - - - - - - - 1904 Date System - - - - - Editing Language - - - - - Rounded Corners - - - - - Style - - - - - Color Map Override - - - - - Pivot Source - - - - - Protection - - - - - Chart - - - - - Shape Properties - - - - - - External Data Relationship - - - - - Print Settings - - - - - Reference to Chart Drawing Part - - - - - Chart Extensibility - - - - - - - Chart Space - - - - - User Shapes - - - - - Reference to Chart Part - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/dml-chartDrawing.xsd b/tests/resources/schema/ooxml/dml-chartDrawing.xsd index dca2c4f53e..f4228987a7 100644 --- a/tests/resources/schema/ooxml/dml-chartDrawing.xsd +++ b/tests/resources/schema/ooxml/dml-chartDrawing.xsd @@ -1,338 +1,144 @@ - - - - - - - - Chart Non Visual Properties - - - - - Non-Visual Shape Drawing Properties - - - - - - - - - Non-Visual Shape Properties - - - - - Shape Properties - - - - - Shape Style - - - - - Shape Text Body - - - - - - Reference to Custom Function - - - - - Text Link - - - - - Lock Text - - - - - Publish to Server - - - - - - - - Chart Non Visual Properties - - - - - Non-Visual Connection Shape Drawing Properties - - - - - - - - - Connector Non Visual Properties - - - - - Shape Properties - - - - - Connection Shape Style - - - - - - Reference to Custom Function - - - - - Publish to Server - - - - - - - - - Non-Visual Picture Drawing Properties - - - - - - - - - Non-Visual Picture Properties - - - - - Picture Fill - - - - - - - - Reference to Custom Function - - - - - Publish to Server - - - - - - - - Non-Visual Drawing Properties - - - - - Non-Visual Graphic Frame Drawing Properties - - - - - - - - - Non-Visual Graphic Frame Properties - - - - - Graphic Frame Transform - - - - - Graphical Object - - - - - - Reference to Custom Function - - - - - Publish To Server - - - - - - - - Chart Non Visual Properties - - - - - Non-Visual Group Shape Drawing Properties - - - - - - - - - Non-Visual Group Shape Properties - - - - - Group Shape Properties - - - - - - Shape - - - - - Group Shape - - - - - Graphic Frame - - - - - Connector Shape - - - - - Picture - - - - - - - - - - - Shape Definition - - - - - Group Shape - - - - - Graphic Frame - - - - - Connection Shape - - - - - - - - - Chart Marker Coordinate Value - - - - - - - - - - - Relative X Coordinate - - - - - Relative Y Coordinate - - - - - - - - - Starting Anchor Point - - - - - Ending Anchor Point - - - - - - - - - - - Shape Extent - - - - - - - - - - Relative Anchor Shape Size - - - - - Absolute Anchor Shape Size - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/dml-compatibility.xsd b/tests/resources/schema/ooxml/dml-compatibility.xsd deleted file mode 100644 index 625a11df7c..0000000000 --- a/tests/resources/schema/ooxml/dml-compatibility.xsd +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - Shape ID - - - - - - Legacy Drawing Object - - - diff --git a/tests/resources/schema/ooxml/dml-diagram.xsd b/tests/resources/schema/ooxml/dml-diagram.xsd index e84fc109cc..615be6a8a1 100644 --- a/tests/resources/schema/ooxml/dml-diagram.xsd +++ b/tests/resources/schema/ooxml/dml-diagram.xsd @@ -1,3609 +1,1084 @@ - + - - - - - - - Language - - - - - Description Value - - - - - - - Language - - - - - Description Value - - - - - - - Category Type - - - - - Priority - - - - - - - - Color Transform Category - - - - - - - Color Application Method Type - - - - - Span - - - - - Cycle - - - - - Repeat - - - - - - - Hue Direction - - - - - Clockwise Hue Direction - - - - - Counterclockwise Hue Direction - - - - - - - - - - - Color Application Method Type - - - - - Hue Direction - - - - - - - - Fill Color List - - - - - Line Color List - - - - - Effect Color List - - - - - Text Line Color List - - - - - Text Fill Color List - - - - - Text Effect Color List - - - - - - - Name - - - - - - - - Title - - - - - Description - - - - - Color Transform Category List - - - - - Style Label - - - - - - - Unique ID - - - - - Minimum Version - - - - - - Color Transform Definitions - - - - - - - Title - - - - - Description - - - - - Color Transform Category List - - - - - - - Unique ID - - - - - Minimum Version - - - - - Resource ID - - - - - - Color Transform Header - - - - - - - Color Transform Definition Header - - - - - - - Color Transform Header List - - - - - Point Type - - - - - Node - - - - - Assistant Element - - - - - Document - - - - - Presentation - - - - - Parent Transition - - - - - Sibling Transition - - - - - - - - - Property Set - - - - - Shape Properties - - - - - Text Body - - - - - - - Model Identifier - - - - - Point Type - - - - - Connection Identifier - - - - - - - - Point - - - - - - - Connection Type - - - - - Parent Of - - - - - Presentation Of - - - - - Presentation Parent Of - - - - - Unknown Relationship - - - - - - - - - - - Model Identifier - - - - - Point Type - - - - - Source Identifier - - - - - Destination Identifier - - - - - Source Position - - - - - Destination Position - - - - - Parent Transition Identifier - - - - - Sibling Transition Identifier - - - - - Presentation Identifier - - - - - - - - Connection - - - - - - - - - Point List - - - - - Connection List - - - - - Background Formatting - - - - - Whole E2O Formatting - - - - - - - - Data Model - - - - - - Axis - - - - - Data Point Type - - - - - Hide Last Transition - - - - - Start - - - - - Count - - - - - Step - - - - - - - Constraint Type - - - - - For - - - - - For Name - - - - - Data Point Type - - - - - - - Reference Type - - - - - Reference For - - - - - Reference For Name - - - - - Reference Point Type - - - - - - - - - - - - Operator - - - - - Value - - - - - Factor - - - - - - - - Constraint - - - - - - - - - - - - Value - - - - - Factor - - - - - Max Value - - - - - - - - Rule - - - - - - - - - - - - - Layout Shape Type - - - - - - 1-Based Index - - - - - - - - - Adjust Handle Index - - - - - Value - - - - - - - - Shape Adjust - - - - - - - - - Shape Adjust List - - - - - - - Rotation - - - - - Shape Type - - - - - Relationship to Image Part - - - - - Z-Order Offset - - - - - Hide Geometry - - - - - Prevent Text Editing - - - - - Image Placeholder - - - - - - - Parameter Type - - - - - Value - - - - - - - - Parameter - - - - - - - Algorithm Type - - - - - Revision Number - - - - - - - - Algorithm - - - - - Shape - - - - - Presentation Of - - - - - Constraint List - - - - - Rule List - - - - - Variable List - - - - - For Each - - - - - Layout Node - - - - - Choose Element - - - - - - - Name - - - - - Style Label - - - - - Child Order - - - - - Move With - - - - - - - - Algorithm - - - - - Shape - - - - - Presentation Of - - - - - Constraint List - - - - - Rule List - - - - - For Each - - - - - Layout Node - - - - - Choose Element - - - - - - - Name - - - - - Reference - - - - - - - - - Algorithm - - - - - Shape - - - - - Presentation Of - - - - - Constraint List - - - - - Rule List - - - - - For Each - - - - - Layout Node - - - - - Choose Element - - - - - - - Name - - - - - - Function - - - - - Argument - - - - - Operator - - - - - Value - - - - - - - - Algorithm - - - - - Shape - - - - - Presentation Of - - - - - Constraint List - - - - - Rule List - - - - - For Each - - - - - Layout Node - - - - - Choose Element - - - - - Extension List - - - - - - Name - - - - - - - - If - - - - - Else - - - - - - Name - - - - - - - - Data Model - - - - - - Use Default - - - - - - - Category Type - - - - - Priority - - - - - - - - Category - - - - - - - - Language - - - - - Value - - - - - - - Language - - - - - Value - - - - - - - - Title - - - - - Description - - - - - Category List - - - - - Sample Data - - - - - Style Data - - - - - Color Transform Sample Data - - - - - Layout Node - - - - - - - Unique Identifier - - - - - Minimum Version - - - - - Default Style - - - - - - Layout Definition - - - - - - - Title - - - - - Description - - - - - Category List - - - - - - - Unique Identifier - - - - - Minimum Version - - - - - Default Style - - - - - Resource Identifier - - - - - - Layout Definition Header - - - - - - - Layout Definition Header - - - - - - - Diagram Layout Header List - - - - - - Explicit Relationship to Diagram Data Part - - - - - Explicit Relationship to Diagram Layout Definition Part - - - - - Explicit Relationship to Style Definition Part - - - - - Explicit Relationship to Diagram Colors Part - - - - - - Explicit Relationships to Diagram Parts - - - - - - - - Model Identifier - - - - - - - - Presentation Layout Variables - - - - - Shape Style - - - - - - Presentation Element Identifier - - - - - Presentation Name - - - - - Presentation Style Label - - - - - Presentation Style Index - - - - - Presentation Style Count - - - - - Current Diagram Type - - - - - Current Diagram Category - - - - - Current Style Type - - - - - Current Style Category - - - - - Color Transform Type Identifier - - - - - Color Transform Category - - - - - Coherent 3D Behavior - - - - - Placeholder Text - - - - - Placeholder - - - - - Custom Rotation - - - - - Custom Vertical Flip - - - - - Custom Horizontal Flip - - - - - Fixed Width Override - - - - - Fixed Height Override - - - - - Width Scale - - - - - Height Scale - - - - - Text Changed - - - - - Custom Factor Width - - - - - Custom Factor Height - - - - - Neighbor Offset Width - - - - - Neighbor Offset Height - - - - - Radius Scale - - - - - Include Angle Scale - - - - - - Diagram Direction Definition - - - - - Normal Direction - - - - - Reversed Direction - - - - - - - Hierarchy Branch Style Definition - - - - - Left - - - - - Right - - - - - Hanging - - - - - Standard - - - - - Initial - - - - - - - One by One Animation Value Definition - - - - - Disable One-by-One - - - - - One By One - - - - - By Branch One By One - - - - - - - Animation Level String Definition - - - - - Disable Level At Once - - - - - By Level Animation - - - - - From Center Animation - - - - - - - - Show Organization Chart User Interface Value - - - - - - Number of Nodes Definition - - - - - - - - - Maximum Children Value - - - - - - - Preferred Number of CHildren Value - - - - - - - Show Insert Bullet Value - - - - - - - Diagram Direction Value - - - - - - - Organization Chart Branch Style Value - - - - - - - One By One Animation Value - - - - - - - Level Animation Value - - - - - - Resize Handle - - - - - Exact - - - - - Relative - - - - - - - - Shape Resize Style Type - - - - - - - - Show Organization Chart User Interface - - - - - Maximum Children - - - - - Preferred Number of Children - - - - - Show Insert Bullet - - - - - Diagram Direction - - - - - Organization Chart Branch Style - - - - - One by One Animation String - - - - - Level Animation - - - - - Shape Resize Style - - - - - - - - Natural Language - - - - - Description Value - - - - - - - Natural Language - - - - - Description Value - - - - - - - Category Type - - - - - Priority - - - - - - - - Category - - - - - - - - - - - - - - 3-D Scene - - - - - 3-D Shape Properties - - - - - Text Properties - - - - - Shape Style - - - - - - - Style Name - - - - - - - - Title - - - - - Style Label Description - - - - - Category List - - - - - 3-D Scene - - - - - Style Label - - - - - - - Unique Style ID - - - - - Minimum Version - - - - - - Style Definition - - - - - - - Title - - - - - Style Label Description - - - - - Category List - - - - - - - Unique Style ID - - - - - Minimum Version - - - - - Resource ID - - - - - - Style Definition Header - - - - - - - Style Definition Header - - - - - - - List of Style Definition Headers - - - - - Algorithm Types - - - - - Composite - - - - - Connector Algorithm - - - - - Cycle Algorithm - - - - - Hierarchy Child Algorithm - - - - - Hierarchy Root Algorithm - - - - - Pyramid Algorithm - - - - - Linear Algorithm - - - - - Space Algorithm - - - - - Text Algorithm - - - - - Snake Algorithm - - - - - - - Axis Type - - - - - Self - - - - - Child - - - - - Descendant - - - - - Descendant or Self - - - - - Parent - - - - - Ancestor - - - - - Ancestor or Self - - - - - Follow Sibling - - - - - Preceding Sibling - - - - - Follow - - - - - Preceding - - - - - Root - - - - - None - - - - - - - Axis Type List - - - - - - Boolean Constraint - - - - - None - - - - - Equal - - - - - Greater Than or Equal to - - - - - Less Than or Equal to - - - - - - - Child Order - - - - - Bottom - - - - - Top - - - - - - - Constraint Type - - - - - Unknown - - - - - Alignment Offset - - - - - Beginning Margin - - - - - Bending Distance - - - - - Beginning Padding - - - - - Bottom - - - - - Bottom Margin - - - - - Bottom Offset - - - - - Center Height - - - - - Center X Offset - - - - - Center Width - - - - - Center Y Offset - - - - - Connection Distance - - - - - Diameter - - - - - End Margin - - - - - End Padding - - - - - Height - - - - - Arrowhead Height - - - - - Height Offset - - - - - Left - - - - - Left Margin - - - - - Left Offset - - - - - Right - - - - - Right Margin - - - - - Right Offset - - - - - Primary Font Size - - - - - Pyramid Accent Ratio - - - - - Secondary Font Size - - - - - Sibling Spacing - - - - - Secondary Sibling Spacing - - - - - Spacing - - - - - Stem Thickness - - - - - Top - - - - - Top Margin - - - - - Top Offset - - - - - User Defined A - - - - - User Defined B - - - - - User Defined C - - - - - User Defined D - - - - - User Defined E - - - - - User Defined F - - - - - User Defined G - - - - - User Defined H - - - - - User Defined I - - - - - User Defined J - - - - - User Defined K - - - - - User Defined L - - - - - User Defined M - - - - - User Defined N - - - - - User Defined O - - - - - User Defined P - - - - - User Defined Q - - - - - User Defined R - - - - - User Defined S - - - - - User Defined T - - - - - User Defined U - - - - - User Defined V - - - - - User Defined W - - - - - User Defined X - - - - - User Defined Y - - - - - User Defined Z - - - - - Width - - - - - Arrowhead Width - - - - - Width Offset - - - - - - - Constraint Relationship - - - - - Self - - - - - Child - - - - - Descendant - - - - - - - Data Point Type - - - - - All - - - - - Document - - - - - Node - - - - - Normal - - - - - Non Normal - - - - - Assistant - - - - - Non Assistant - - - - - Parent Transition - - - - - Presentation - - - - - Sibling Transition - - - - - - - Diagream Layout Node Type List - - - - - - Parameter Identifier - - - - - Horizontal Alignment - - - - - Vertical Alignment - - - - - Child Direction - - - - - Child Alignment - - - - - Secondary Child Alignment - - - - - Linear Direction - - - - - Secondary Linear Direction - - - - - Start Element - - - - - Bend Point - - - - - Connection Route - - - - - Beginning Arrowhead Style - - - - - End Style - - - - - Connector Dimension - - - - - Rotation Path - - - - - Center Shape Mapping - - - - - Node Horizontal Alignment - - - - - Node Vertical Alignment - - - - - Fallback Scale - - - - - Text Direction - - - - - Pyramid Accent Position - - - - - Pyramid Accent Text Margin - - - - - Text Block Direction - - - - - Text Anchor Horizontal - - - - - Text Anchor Vertical - - - - - Text Anchor Horizontal With Children - - - - - Text Anchor Vertical With Children - - - - - Parent Text Left-to-Right Alignment - - - - - Parent Text Right-to-Left Alignment - - - - - Shape Text Left-to-Right Alignment - - - - - Shape Text Right-to-Left Alignment - - - - - Auto Text Rotation - - - - - Grow Direction - - - - - Flow Direction - - - - - Continue Direction - - - - - Breakpoint - - - - - Offset - - - - - Hierarchy Alignment - - - - - Breakpoint Fixed Value - - - - - Start Bullets At Level - - - - - Start Angle - - - - - Span Angle - - - - - Aspect Ratio - - - - - Line Spacing Parent - - - - - Line Spacing After Parent Paragraph - - - - - Line Spacing Children - - - - - Line Spacing After Children Paragraph - - - - - Route Shortest Distance - - - - - Text Alignment - - - - - Pyramid Level Node - - - - - Pyramid Accent Background Node - - - - - Pyramid Accent Text Node - - - - - Source Node - - - - - Destination Node - - - - - Beginning Points - - - - - End Points - - - - - - - Integer List - - - - - - Unsigned Integer List - - - - - - Boolean List. - - - - - - Function Type - - - - - Count - - - - - Position - - - - - Reverse Position - - - - - Position Even - - - - - Position Odd - - - - - Variable - - - - - Depth - - - - - Max Depth - - - - - - - Function Operator - - - - - Equal - - - - - Not Equal To - - - - - Greater Than - - - - - Less Than - - - - - Greater Than or Equal to - - - - - Less Than or Equal to - - - - - - - Horizontal Alignment - - - - - Left - - - - - Center - - - - - Right - - - - - None - - - - - - - Vertical Alignment - - - - - Top - - - - - Middle - - - - - Bottom - - - - - None - - - - - - - Child Direction - - - - - Horizontal - - - - - Vertical - - - - - - - Child Alignment - - - - - Top - - - - - Bottom - - - - - Left - - - - - Right - - - - - - - Secondary Child Alignment - - - - - None - - - - - Top - - - - - Bottom - - - - - Left - - - - - Right - - - - - - - Linear Direction - - - - - From Left - - - - - From Right - - - - - From Top - - - - - From Bottom - - - - - - - Secondary Linear Direction - - - - - None - - - - - From Left - - - - - From Right - - - - - From Top - - - - - From Bottom - - - - - - - Starting Element - - - - - Node - - - - - Transition - - - - - - - Rotation Path - - - - - None - - - - - Along Path - - - - - - - Center Shape Mapping - - - - - None - - - - - First Node - - - - - - - Bend Point - - - - - Beginning - - - - - Default - - - - - End - - - - - - - Connector Routing - - - - - Straight - - - - - Bending - - - - - Curve - - - - - Long Curve - - - - - - - Arrowhead Styles - - - - - Auto - - - - - Arrowhead Present - - - - - No Arrowhead - - - - - - - Connector Dimension - - - - - 1 Dimension - - - - - 2 Dimensions - - - - - Custom - - - - - - - Connector Point - - - - - Auto - - - - - Bottom Center - - - - - Center - - - - - Middle Left - - - - - Middle Right - - - - - Top Center - - - - - Bottom Left - - - - - Bottom Right - - - - - Top Left - - - - - Top Right - - - - - Radial - - - - - - - Node Horizontal Alignment - - - - - Left - - - - - Center - - - - - Right - - - - - - - Node Vertical Alignment - - - - - Top - - - - - Middle - - - - - Bottom - - - - - - - Fallback Dimension - - - - - 1 Dimension - - - - - 2 Dimensions - - - - - - - Text Direction - - - - - From Top - - - - - From Bottom - - - - - - - Pyramid Accent Position - - - - - Before - - - - - Pyramid Accent After - - - - - - - Pyramid Accent Text Margin - - - - - Step - - - - - Stack - - - - - - - Text Block Direction - - - - - Horizontal - - - - - Vertical Direction - - - - - - - Text Anchor Horizontal - - - - - None - - - - - Center - - - - - - - Text Anchor Vertical - - - - - Top - - - - - Middle - - - - - Bottom - - - - - - - Text Alignment - - - - - Left - - - - - Center - - - - - Right - - - - - - - Auto Text Rotation - - - - - None - - - - - Upright - - - - - Gravity - - - - - - - Grow Direction - - - - - Top Left - - - - - Top Right - - - - - Bottom Left - - - - - Bottom Right - - - - - - - Flow Direction - - - - - Row - - - - - Column - - - - - - - Continue Direction - - - - - Reverse Direction - - - - - Same Direction - - - - - - - Breakpoint - - - - - End of Canvas - - - - - Balanced - - - - - Fixed - - - - - - - Offset - - - - - Center - - - - - Offset - - - - - - - Hierarchy Alignment - - - - - Top Left - - - - - Top Right - - - - - Top Center Children - - - - - Top Center Descendants - - - - - Bottom Left - - - - - Bottom Right - - - - - Bottom Center Child - - - - - Bottom Center Descendant - - - - - Left Top - - - - - Left Bottom - - - - - Left Center Child - - - - - Left Center Descendant - - - - - Right Top - - - - - Right Bottom - - - - - Right Center Children - - - - - Right Center Descendants - - - - - - - Function Value - - - - - - Variable Type - - - - - Unknown - - - - - Organizational Chart Algorithm - - - - - Child Max - - - - - Child Preference - - - - - Bullets Enabled - - - - - Direction - - - - - Hierarchy Branch - - - - - Animate One - - - - - Animation Level - - - - - Resize Handles - - - - - - - Function Argument - - - - - - Output Shape Type - - - - - None - - - - - Connection - - - - + xmlns="http://purl.oclc.org/ooxml/drawingml/diagram" + xmlns:a="http://purl.oclc.org/ooxml/drawingml/main" + xmlns:r="http://purl.oclc.org/ooxml/officeDocument/relationships" + xmlns:s="http://purl.oclc.org/ooxml/officeDocument/sharedTypes" + targetNamespace="http://purl.oclc.org/ooxml/drawingml/diagram" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/dml-lockedCanvas.xsd b/tests/resources/schema/ooxml/dml-lockedCanvas.xsd index be38765f71..0e264c8db8 100644 --- a/tests/resources/schema/ooxml/dml-lockedCanvas.xsd +++ b/tests/resources/schema/ooxml/dml-lockedCanvas.xsd @@ -1,13 +1,9 @@ - + - - - - Locked Canvas Container - - + xmlns="http://purl.oclc.org/ooxml/drawingml/lockedCanvas" + xmlns:a="http://purl.oclc.org/ooxml/drawingml/main" + xmlns:r="http://purl.oclc.org/ooxml/officeDocument/relationships" elementFormDefault="qualified" + targetNamespace="http://purl.oclc.org/ooxml/drawingml/lockedCanvas"> + + diff --git a/tests/resources/schema/ooxml/dml-main.xsd b/tests/resources/schema/ooxml/dml-main.xsd index c94362c269..862f7c1808 100644 --- a/tests/resources/schema/ooxml/dml-main.xsd +++ b/tests/resources/schema/ooxml/dml-main.xsd @@ -1,9661 +1,3041 @@ - + - - - - - - - - - - - - - - Linked Relationship ID - - - - - Content Type of Linked Audio File - - - - - - - - - - Linked Relationship ID - - - - - Content Type of Linked Video File - - - - - - - - - - Linked Relationship ID - - - - - - - Track - - - - - Time - - - - - - - - Audio Start Time - - - - - Audio End Time - - - - - - - - - - Audio from CD - - - - - Audio from WAV File - - - - - Audio from File - - - - - Video from File - - - - - QuickTime from File - - - - - - - - Style Matrix Column Index - - - - - - Font Collection Index - - - - - Major Font - - - - - Minor Font - - - - - None - - - - - - - Theme Color Reference - - - - - Dark 1 - - - - - Light 1 - - - - - Dark 2 - - - - - Light 2 - - - - - Accent 1 - - - - - Accent 2 - - - - - Accent 3 - - - - - Accent 4 - - - - - Accent 5 - - - - - Accent 6 - - - - - Hyperlink - - - - - Followed Hyperlink - - - - - - - - - Dark 1 - - - - - Light 1 - - - - - Dark 2 - - - - - Light 2 - - - - - Accent 1 - - - - - Accent 2 - - - - - Accent 3 - - - - - Accent 4 - - - - - Accent 5 - - - - - Accent 6 - - - - - Hyperlink - - - - - Followed Hyperlink - - - - - - - Name - - - - - - - - - - Name - - - - - - - Script - - - - - Typeface - - - - - - - - Custom color - - - - - - - - - Latin Font - - - - - East Asian Font - - - - - Complex Script Font - - - - - Font - - - - - - - - - - - 3D Scene Properties - - - - - 3D properties - - - - - - - - - Major Font - - - - - Minor fonts - - - - - - - Name - - - - - - - - - - - - - - - - - - Effect Style - - - - - - - - - - - - - - Fill Style List - - - - - Line Style List - - - - - Effect Style List - - - - - Background Fill Style List - - - - - - Name - - - - - - - - - Font Scheme - - - - - Format Scheme - - - - - - - - - - - - Uniform Resource Identifier - - - - - - Coordinate - - - - - - Coordinate - - - - - - - - - Coordinate Point - - - - - - Coordinate Point - - - - - - Positive Coordinate - - - - - - - - - Positive Coordinate Point - - - - - - - - Angle - - - - - - - Value - - - - - - Fixed Angle - - - - - - - - - Positive Fixed Angle - - - - - - - - - - Value - - - - - - Percentage - - - - - - Percentage as Decimal Number - - - - - - - Value - - - - - - Positive Percentage - - - - - - Positive Percentage as Decimal Number - - - - - - - - - Value - - - - - - Fixed Percentage - - - - - - Fixed Percentage - - - - - - - - - - Value - - - - - - Positive Fixed Percentage - - - - - - Positive Fixed Percentage - - - - - - - - - - Value - - - - - - - Numerator - - - - - Denominator - - - - - - - X-Axis Coordinate - - - - - Y-Axis Coordinate - - - - - - - Extent Length - - - - - Extent Width - - - - - - - - - - - - - Tint - - - - - Shade - - - - - Complement - - - - - Inverse - - - - - Gray - - - - - Alpha - - - - - Alpha Offset - - - - - Alpha Modulation - - - - - Hue - - - - - Hue Offset - - - - - Hue Modulate - - - - - Saturation - - - - - Saturation Offset - - - - - Saturation Modulation - - - - - Luminance - - - - - Luminance Offset - - - - - Luminance Modulation - - - - - Red - - - - - Red Offset - - - - - Red Modulation - - - - - Green - - - - - Green Offset - - - - - Green Modification - - - - - Blue - - - - - Blue Offset - - - - - Blue Modification - - - - - Gamma - - - - - Inverse Gamma - - - - - - - - - - - Red - - - - - Green - - - - - Blue - - - - - - - - - - Value - - - - - - - - - - Hue - - - - - Saturation - - - - - Luminance - - - - - - System Color Value - - - - - Scroll Bar System Color - - - - - Background System Color - - - - - Active Caption System Color - - - - - Inactive Caption System Color - - - - - Menu System Color - - - - - Window System Color - - - - - Window Frame System Color - - - - - Menu Text System Color - - - - - Window Text System Color - - - - - Caption Text System Color - - - - - Active Border System Color - - - - - Inactive Border System Color - - - - - Application Workspace System Color - - - - - Highlight System Color - - - - - Highlight Text System Color - - - - - Button Face System Color - - - - - Button Shadow System Color - - - - - Gray Text System Color - - - - - Button Text System Color - - - - - Inactive Caption Text System Color - - - - - Button Highlight System Color - - - - - 3D Dark System Color - - - - - 3D Light System Color - - - - - Info Text System Color - - - - - Info Back System Color - - - - - Hot Light System Color - - - - - Gradient Active Caption System Color - - - - - Gradient Inactive Caption System Color - - - - - Menu Highlight System Color - - - - - Menu Bar System Color - - - - - - - - - - - Value - - - - - Last Color - - - - - - Scheme Color - - - - - Background Color 1 - - - - - Text Color 1 - - - - - Background Color 2 - - - - - Text Color 2 - - - - - Accent Color 1 - - - - - Accent Color 2 - - - - - Accent Color 3 - - - - - Accent Color 4 - - - - - Accent Color 5 - - - - - Accent Color 6 - - - - - Hyperlink Color - - - - - Followed Hyperlink Color - - - - - Style Color - - - - - Dark Color 1 - - - - - Light Color 1 - - - - - Dark Color 2 - - - - - Light Color 2 - - - - - - - - - - - Value - - - - - - Preset Color Value - - - - - Alice Blue Preset Color - - - - - Antique White Preset Color - - - - - Aqua Preset Color - - - - - Aquamarine Preset Color - - - - - Azure Preset Color - - - - - Beige Preset Color - - - - - Bisque Preset Color - - - - - Black Preset Color - - - - - Blanched Almond Preset Color - - - - - Blue Preset Color - - - - - Blue Violet Preset Color - - - - - Brown Preset Color - - - - - Burly Wood Preset Color - - - - - Cadet Blue Preset Color - - - - - Chartreuse Preset Color - - - - - Chocolate Preset Color - - - - - Coral Preset Color - - - - - Cornflower Blue Preset Color - - - - - Cornsilk Preset Color - - - - - Crimson Preset Color - - - - - Cyan Preset Color - - - - - Dark Blue Preset Color - - - - - Dark Cyan Preset Color - - - - - Dark Goldenrod Preset Color - - - - - Dark Gray Preset Color - - - - - Dark Gray Preset Color - - - - - Dark Green Preset Color - - - - - Dark Khaki Preset Color - - - - - Dark Magenta Preset Color - - - - - Dark Olive Green Preset Color - - - - - Dark Orange Preset Color - - - - - Dark Orchid Preset Color - - - - - Dark Red Preset Color - - - - - Dark Salmon Preset Color - - - - - Dark Sea Green Preset Color - - - - - Dark Slate Blue Preset Color - - - - - Dark Slate Gray Preset Color - - - - - Dark Slate Gray Preset Color - - - - - Dark Turquoise Preset Color - - - - - Dark Violet Preset Color - - - - - Dark Blue Preset Color - - - - - Dark Cyan Preset Color - - - - - Dark Goldenrod Preset Color - - - - - Dark Gray Preset Color - - - - - Dark Gray Preset Color - - - - - Dark Green Preset Color - - - - - Dark Khaki Preset Color - - - - - Dark Magenta Preset Color - - - - - Dark Olive Green Preset Color - - - - - Dark Orange Preset Color - - - - - Dark Orchid Preset Color - - - - - Dark Red Preset Color - - - - - Dark Salmon Preset Color - - - - - Dark Sea Green Preset Color - - - - - Dark Slate Blue Preset Color - - - - - Dark Slate Gray Preset Color - - - - - Dark Slate Gray Preset Color - - - - - Dark Turquoise Preset Color - - - - - Dark Violet Preset Color - - - - - Deep Pink Preset Color - - - - - Deep Sky Blue Preset Color - - - - - Dim Gray Preset Color - - - - - Dim Gray Preset Color - - - - - Dodger Blue Preset Color - - - - - Firebrick Preset Color - - - - - Floral White Preset Color - - - - - Forest Green Preset Color - - - - - Fuchsia Preset Color - - - - - Gainsboro Preset Color - - - - - Ghost White Preset Color - - - - - Gold Preset Color - - - - - Goldenrod Preset Color - - - - - Gray Preset Color - - - - - Gray Preset Color - - - - - Green Preset Color - - - - - Green Yellow Preset Color - - - - - Honeydew Preset Color - - - - - Hot Pink Preset Color - - - - - Indian Red Preset Color - - - - - Indigo Preset Color - - - - - Ivory Preset Color - - - - - Khaki Preset Color - - - - - Lavender Preset Color - - - - - Lavender Blush Preset Color - - - - - Lawn Green Preset Color - - - - - Lemon Chiffon Preset Color - - - - - Light Blue Preset Color - - - - - Light Coral Preset Color - - - - - Light Cyan Preset Color - - - - - Light Goldenrod Yellow Preset Color - - - - - Light Gray Preset Color - - - - - Light Gray Preset Color - - - - - Light Green Preset Color - - - - - Light Pink Preset Color - - - - - Light Salmon Preset Color - - - - - Light Sea Green Preset Color - - - - - Light Sky Blue Preset Color - - - - - Light Slate Gray Preset Color - - - - - Light Slate Gray Preset Color - - - - - Light Steel Blue Preset Color - - - - - Light Yellow Preset Color - - - - - Light Blue Preset Color - - - - - Light Coral Preset Color - - - - - Light Cyan Preset Color - - - - - Light Goldenrod Yellow Preset Color - - - - - Light Gray Preset Color - - - - - Light Gray Preset Color - - - - - Light Green Preset Color - - - - - Light Pink Preset Color - - - - - Light Salmon Preset Color - - - - - Light Sea Green Preset Color - - - - - Light Sky Blue Preset Color - - - - - Light Slate Gray Preset Color - - - - - Light Slate Gray Preset Color - - - - - Light Steel Blue Preset Color - - - - - Light Yellow Preset Color - - - - - Lime Preset Color - - - - - Lime Green Preset Color - - - - - Linen Preset Color - - - - - Magenta Preset Color - - - - - Maroon Preset Color - - - - - Medium Aquamarine Preset Color - - - - - Medium Blue Preset Color - - - - - Medium Orchid Preset Color - - - - - Medium Purple Preset Color - - - - - Medium Sea Green Preset Color - - - - - Medium Slate Blue Preset Color - - - - - Medium Spring Green Preset Color - - - - - Medium Turquoise Preset Color - - - - - Medium Violet Red Preset Color - - - - - Medium Aquamarine Preset Color - - - - - Medium Blue Preset Color - - - - - Medium Orchid Preset Color - - - - - Medium Purple Preset Color - - - - - Medium Sea Green Preset Color - - - - - Medium Slate Blue Preset Color - - - - - Medium Spring Green Preset Color - - - - - Medium Turquoise Preset Color - - - - - Medium Violet Red Preset Color - - - - - Midnight Blue Preset Color - - - - - Mint Cream Preset Color - - - - - Misty Rose Preset Color - - - - - Moccasin Preset Color - - - - - Navajo White Preset Color - - - - - Navy Preset Color - - - - - Old Lace Preset Color - - - - - Olive Preset Color - - - - - Olive Drab Preset Color - - - - - Orange Preset Color - - - - - Orange Red Preset Color - - - - - Orchid Preset Color - - - - - Pale Goldenrod Preset Color - - - - - Pale Green Preset Color - - - - - Pale Turquoise Preset Color - - - - - Pale Violet Red Preset Color - - - - - Papaya Whip Preset Color - - - - - Peach Puff Preset Color - - - - - Peru Preset Color - - - - - Pink Preset Color - - - - - Plum Preset Color - - - - - Powder Blue Preset Color - - - - - Purple Preset Color - - - - - Red Preset Color - - - - - Rosy Brown Preset Color - - - - - Royal Blue Preset Color - - - - - Saddle Brown Preset Color - - - - - Salmon Preset Color - - - - - Sandy Brown Preset Color - - - - - Sea Green Preset Color - - - - - Sea Shell Preset Color - - - - - Sienna Preset Color - - - - - Silver Preset Color - - - - - Sky Blue Preset Color - - - - - Slate Blue Preset Color - - - - - Slate Gray Preset Color - - - - - Slate Gray Preset Color - - - - - Snow Preset Color - - - - - Spring Green Preset Color - - - - - Steel Blue Preset Color - - - - - Tan Preset Color - - - - - Teal Preset Color - - - - - Thistle Preset Color - - - - - Tomato Preset Color - - - - - Turquoise Preset Color - - - - - Violet Preset Color - - - - - Wheat Preset Color - - - - - White Preset Color - - - - - White Smoke Preset Color - - - - - Yellow Preset Color - - - - - Yellow Green Preset Color - - - - - - - - - - - Value - - - - - - - - Extension - - - - - - - - - - - - - - Horizontal Ratio - - - - - Vertical Ratio - - - - - - - - - Offset - - - - - Extents - - - - - - Rotation - - - - - Horizontal Flip - - - - - Vertical Flip - - - - - - - - Offset - - - - - Extents - - - - - Child Offset - - - - - Child Extents - - - - - - Rotation - - - - - Horizontal Flip - - - - - Vertical Flip - - - - - - - X-Coordinate in 3D - - - - - Y-Coordinate in 3D - - - - - Z-Coordinate in 3D - - - - - - - Distance along X-axis in 3D - - - - - Distance along Y-axis in 3D - - - - - Distance along Z-axis in 3D - - - - - - - Latitude - - - - - Longitude - - - - - Revolution - - - - - - - Left Offset - - - - - Top Offset - - - - - Right Offset - - - - - Bottom Offset - - - - - - Rectangle Alignments - - - - - Rectangle Alignment Enum ( Top Left ) - - - - - Rectangle Alignment Enum ( Top ) - - - - - Rectangle Alignment Enum ( Top Right ) - - - - - Rectangle Alignment Enum ( Left ) - - - - - Rectangle Alignment Enum ( Center ) - - - - - Rectangle Alignment Enum ( Right ) - - - - - Rectangle Alignment Enum ( Bottom Left ) - - - - - Rectangle Alignment Enum ( Bottom ) - - - - - Rectangle Alignment Enum ( Bottom Right ) - - - - - - - - - RGB Color Model - Percentage Variant - - - - - RGB Color Model - Hex Variant - - - - - Hue, Saturation, Luminance Color Model - - - - - System Color - - - - - Scheme Color - - - - - Preset Color - - - - - - - - - - - - - - - - - Black and White Mode - - - - - Color - - - - - Automatic - - - - - Gray - - - - - Light Gray - - - - - Inverse Gray - - - - - Gray and White - - - - - Black and Gray - - - - - Black and White - - - - - Black - - - - - White - - - - - Hidden - - - - - - - - Embedded Picture Reference - - - - - Linked Picture Reference - - - - - - - Embedded Audio File Relationship ID - - - - - Sound Name - - - - - - - - Hyperlink Sound - - - - - - - Drawing Object Hyperlink Target - - - - - Invalid URL - - - - - Action Setting - - - - - Target Frame - - - - - Hyperlink Tooltip - - - - - Add Hyperlink to Page History - - - - - Highlight Click - - - - - End Sounds - - - - - - Drawing Element ID - - - - - - - Disallow Shape Grouping - - - - - Disallow Shape Selection - - - - - Disallow Shape Rotation - - - - - Disallow Aspect Ratio Change - - - - - Disallow Shape Movement - - - - - Disallow Shape Resize - - - - - Disallow Shape Point Editing - - - - - Disallow Showing Adjust Handles - - - - - Disallow Arrowhead Changes - - - - - Disallow Shape Type Change - - - - - - - - - - - - - - - - - Disallow Shape Text Editing - - - - - - - - - - - Disallow Crop Changes - - - - - - - - - - Disallow Shape Grouping - - - - - Disallow Shape Ungrouping - - - - - Disallow Shape Selection - - - - - Disallow Shape Rotation - - - - - Disallow Aspect Ratio Change - - - - - Disallow Moving Shape - - - - - Disallow Shape Resizing - - - - - - - - - - Disallow Shape Grouping - - - - - Disallow Selection of Child Shapes - - - - - Disallow Shape Selection - - - - - Disallow Aspect Ratio Change - - - - - Disallow Shape Movement - - - - - Disallow Shape Resize - - - - - - - - Drawing Element On Click Hyperlink - - - - - Hyperlink for Hover - - - - - - - Unique Identifier - - - - - Name - - - - - Alternative Text for Object - - - - - Hidden - - - - - Title - - - - - - - - Shape Locks - - - - - - - Text Box - - - - - - - - Connection Shape Locks - - - - - Connection Start - - - - - Connection End - - - - - - - - - - Picture Locks - - - - - - - Relative Resize Preferred - - - - - - - - Group Shape Locks - - - - - - - - - - Graphic Frame Locks - - - - - - - - - - - - Uniform Resource Identifier - - - - - - - - Graphic Object Data - - - - - - - Graphic Object - - - - - Chart Animation Build Step - - - - - Category - - - - - Category Points - - - - - Series - - - - - Series Points - - - - - All Points - - - - - Grid and Legend - - - - - - - Diagram Animation Build Steps - - - - - Shape - - - - - Background - - - - - - - - Identifier - - - - - Animation Build Step - - - - - - - Series Index - - - - - Category Index - - - - - Animation Build Step - - - - - - - - Diagram to Animate - - - - - Chart to Animate - - - - - - - Animation Build Type - - - - - Animate At Once - - - - - - - Diagram only Animation Types - - - - - Elements One-by-One - - - - - Level One-by-One - - - - - Each Level at Once - - - - - - - Diagram Animation Build Type - - - - - - - Build - - - - - Reverse Animation - - - - - - Chart only Animation Types - - - - - Series - - - - - Catefory - - - - - Series Element - - - - - Category Element - - - - - - - Chart Animation Build Type - - - - - - - Build - - - - - Animate Background - - - - - - - - Build Diagram - - - - - Build Chart - - - - - - - - - - - - - - - Outline - - - - - - - - - - - Shape Text Body - - - - - - Use Shape Text Rectangle - - - - - - - - - - - - - Non-Visual Shape Drawing Properties - - - - - - - - - Non-Visual Properties for a Shape - - - - - Visual Properties - - - - - Text Shape - - - - - Style - - - - - - - - - - Non-Visual Drawing Properties - - - - - Non-Visual Connector Shape Drawing Properties - - - - - - - - - Non-Visual Properties for a Connection Shape - - - - - Visual Properties - - - - - Shape Style - - - - - - - - - - - Non-Visual Picture Drawing Properties - - - - - - - - - Non-Visual Properties for a Picture - - - - - Picture Fill - - - - - Shape Properties - - - - - - - - - - - - Non-Visual Graphic Frame Drawing Properties - - - - - - - - - Non-Visual Properties for a Graphic Frame - - - - - - - - - - - - - Non-Visual Group Shape Drawing Properties - - - - - - - - - Non-Visual Properties for a Group Shape - - - - - Visual Group Shape Properties - - - - - - Text shape - - - - - Shape - - - - - Connection Shape - - - - - Picture - - - - - Graphic Frame - - - - - Group shape - - - - - - - - - Preset Camera Type - - - - - Legacy Oblique Top Left - - - - - Legacy Oblique Top - - - - - Legacy Oblique Top Right - - - - - Legacy Oblique Left - - - - - Legacy Oblique Front - - - - - Legacy Oblique Right - - - - - Legacy Oblique Bottom Left - - - - - Legacy Oblique Bottom - - - - - Legacy Oblique Bottom Right - - - - - Legacy Perspective Top Left - - - - - Legacy Perspective Top - - - - - Legacy Perspective Top Right - - - - - Legacy Perspective Left - - - - - Legacy Perspective Front - - - - - Legacy Perspective Right - - - - - Legacy Perspective Bottom Left - - - - - Legacy Perspective Bottom - - - - - Legacy Perspective Bottom Right - - - - - Orthographic Front - - - - - Isometric Top Up - - - - - Isometric Top Down - - - - - Isometric Bottom Up - - - - - Isometric Bottom Down - - - - - Isometric Left Up - - - - - Isometric Left Down - - - - - Isometric Right Up - - - - - Isometric Right Down - - - - - Isometric Off Axis 1 Left - - - - - Isometric Off Axis 1 Right - - - - - Isometric Off Axis 1 Top - - - - - Isometric Off Axis 2 Left - - - - - Isometric Off Axis 2 Right - - - - - Isometric Off Axis 2 Top - - - - - Isometric Off Axis 3 Left - - - - - Isometric Off Axis 3 Right - - - - - Isometric Off Axis 3 Bottom - - - - - Isometric Off Axis 4 Left - - - - - Isometric Off Axis 4 Right - - - - - Isometric Off Axis 4 Bottom - - - - - Oblique Top Left - - - - - Oblique Top - - - - - Oblique Top Right - - - - - Oblique Left - - - - - Oblique Right - - - - - Oblique Bottom Left - - - - - Oblique Bottom - - - - - Oblique Bottom Right - - - - - Perspective Front - - - - - Perspective Left - - - - - Perspective Right - - - - - Orthographic Above - - - - - Perspective Below - - - - - Perspective Above Left Facing - - - - - Perspective Above Right Facing - - - - - Perspective Contrasting Left Facing - - - - - Perspective Contrasting Right Facing - - - - - Perspective Heroic Left Facing - - - - - Perspective Heroic Right Facing - - - - - Perspective Heroic Extreme Left Facing - - - - - Perspective Heroic Extreme Right Facing - - - - - Perspective Relaxed - - - - - Perspective Relaxed Moderately - - - - - - - Field of View Angle - - - - - - - - - - - Rotation - - - - - - Preset Camera Type - - - - - Field of View - - - - - Zoom - - - - - - Light Rig Direction - - - - - Top Left - - - - - Top - - - - - Top Right - - - - - Left - - - - - Right - - - - - Bottom Left - - - - - Bottom - - - - - Bottom Right - - - - - - - Light Rig Type - - - - - Legacy Flat 1 - - - - - Legacy Flat 2 - - - - - Legacy Flat 3 - - - - - Legacy Flat 4 - - - - - Legacy Normal 1 - - - - - Legacy Normal 2 - - - - - Legacy Normal 3 - - - - - Legacy Normal 4 - - - - - Legacy Harsh 1 - - - - - Legacy Harsh 2 - - - - - Legacy Harsh 3 - - - - - Legacy Harsh 4 - - - - - Three Point - - - - - Light Rig Enum ( Balanced ) - - - - - Soft - - - - - Harsh - - - - - Flood - - - - - Contrasting - - - - - Morning - - - - - Sunrise - - - - - Sunset - - - - - Chilly - - - - - Freezing - - - - - Flat - - - - - Two Point - - - - - Glow - - - - - Bright Room - - - - - - - - - Rotation - - - - - - Rig Preset - - - - - Direction - - - - - - - - Camera - - - - - Light Rig - - - - - Backdrop Plane - - - - - - - - - - Anchor Point - - - - - Normal - - - - - Up Vector - - - - - - - - Bevel Presets - - - - - Relaxed Inset - - - - - Circle - - - - - Slope - - - - - Cross - - - - - Angle - - - - - Soft Round - - - - - Convex - - - - - Cool Slant - - - - - Divot - - - - - Riblet - - - - - Hard Edge - - - - - Art Deco - - - - - - - - Width - - - - - Height - - - - - Preset Bevel - - - - - - Preset Material Type - - - - - Legacy Matte - - - - - Legacy Plastic - - - - - Legacy Metal - - - - - Legacy Wireframe - - - - - Matte - - - - - Plastic - - - - - Metal - - - - - Warm Matte - - - - - Translucent Powder - - - - - Powder - - - - - Dark Edge - - - - - Soft Edge - - - - - Clear - - - - - Flat - - - - - Soft Metal - - - - - - - - - Top Bevel - - - - - Bottom Bevel - - - - - Extrusion Color - - - - - Contour Color - - - - - - - Shape Depth - - - - - Extrusion Height - - - - - Contour Width - - - - - Preset Material Type - - - - - - - Z Coordinate - - - - - - - - Apply 3D shape properties - - - - - No text in 3D scene - - - - - - - - Threshold - - - - - - - - - - - - - - Amount - - - - - - - Radius - - - - - - - Alpha - - - - - - - Threshold - - - - - - - Radius - - - - - Grow Bounds - - - - - - - - Change Color From - - - - - Change Color To - - - - - - Consider Alpha Values - - - - - - - - - - - - - - - - - - - - Radius - - - - - - - - Hue - - - - - Saturation - - - - - Luminance - - - - - - - - - - Blur Radius - - - - - Distance - - - - - Direction - - - - - - - Brightness - - - - - Contrast - - - - - - - - - - Blur Radius - - - - - Shadow Offset Distance - - - - - Shadow Direction - - - - - Horizontal Scaling Factor - - - - - Vertical Scaling Factor - - - - - Horizontal Skew - - - - - Vertical Skew - - - - - Shadow Alignment - - - - - Rotate With Shape - - - - - - Preset Shadow Type - - - - - Top Left Drop Shadow - - - - - Top Right Drop Shadow - - - - - Back Left Perspective Shadow - - - - - Back Right Perspective Shadow - - - - - Bottom Left Drop Shadow - - - - - Bottom Right Drop Shadow - - - - - Front Left Perspective Shadow - - - - - Front Right Perspective Shadow - - - - - Top Left Small Drop Shadow - - - - - Top Left Large Drop Shadow - - - - - Back Left Long Perspective Shadow - - - - - Back Right Long Perspective Shadow - - - - - Top Left Double Drop Shadow - - - - - Bottom Right Small Drop Shadow - - - - - Front Left Long Perspective Shadow - - - - - Front Right LongPerspective Shadow - - - - - 3D Outer Box Shadow - - - - - 3D Inner Box Shadow - - - - - Back Center Perspective Shadow - - - - - Front Bottom Shadow - - - - - - - - - - - Preset Shadow - - - - - Distance - - - - - Direction - - - - - - - Blur Radius - - - - - Start Opacity - - - - - Start Position - - - - - End Alpha - - - - - End Position - - - - - Distance - - - - - Direction - - - - - Fade Direction - - - - - Horizontal Ratio - - - - - Vertical Ratio - - - - - Horizontal Skew - - - - - Vertical Skew - - - - - Shadow Alignment - - - - - Rotate With Shape - - - - - - - Offset X - - - - - Offset Y - - - - - - - Radius - - - - - - - Hue - - - - - Amount - - - - - - - Horizontal Ratio - - - - - Vertical Ratio - - - - - Horizontal Skew - - - - - Vertical Skew - - - - - Horizontal Shift - - - - - Vertical Shift - - - - - - - - - - - - - Angle - - - - - Scaled - - - - - - Path Shade Type - - - - - Shape - - - - - Circle - - - - - Rectangle - - - - - - - - - Fill To Rectangle - - - - - - Gradient Fill Path - - - - - - - - Linear Gradient Fill - - - - - Path Gradient - - - - - - - Tile Flip Mode - - - - - None - - - - - Horizontal - - - - - Vertical - - - - - Horizontal and Vertical - - - - - - - - - - - Position - - - - - - - - Gradient stops - - - - - - - - - Gradient Stop List - - - - - - Tile Rectangle - - - - - - Tile Flip - - - - - Rotate With Shape - - - - - - - Horizontal Offset - - - - - Vertical Offset - - - - - Horizontal Ratio - - - - - Vertical Ratio - - - - - Tile Flipping - - - - - Alignment - - - - - - - - Fill Rectangle - - - - - - - - - Tile - - - - - Stretch - - - - - - - Blip Compression Type - - - - - Email Compression - - - - - Screen Viewing Compression - - - - - Printing Compression - - - - - High Quality Printing Compression - - - - - No Compression - - - - - - - - - - Alpha Bi-Level Effect - - - - - - - - - Alpha Modulate Fixed Effect - - - - - - Bi-Level (Black/White) Effect - - - - - - - Solid Color Replacement - - - - - - - - - Luminance Effect - - - - - Tint Effect - - - - - - - - - Compression State - - - - - - - - - Source Rectangle - - - - - - - DPI Setting - - - - - Rotate With Shape - - - - - - Preset Pattern Value - - - - - 5% - - - - - 10% - - - - - 20% - - - - - 25% - - - - - 30% - - - - - 40% - - - - - 50% - - - - - 60% - - - - - 70% - - - - - 75% - - - - - 80% - - - - - 90% - - - - - Horizontal - - - - - Vertical - - - - - Light Horizontal - - - - - Light Vertical - - - - - Dark Horizontal - - - - - Dark Vertical - - - - - Narrow Horizontal - - - - - Narrow Vertical - - - - - Dashed Horizontal - - - - - Dashed Vertical - - - - - Cross - - - - - Downward Diagonal - - - - - Upward Diagonal - - - - - Light Downward Diagonal - - - - - Light Upward Diagonal - - - - - Dark Downward Diagonal - - - - - Dark Upward Diagonal - - - - - Wide Downward Diagonal - - - - - Wide Upward Diagonal - - - - - Dashed Downward Diagonal - - - - - Dashed Upward DIagonal - - - - - Diagonal Cross - - - - - Small Checker Board - - - - - Large Checker Board - - - - - Small Grid - - - - - Large Grid - - - - - Dotted Grid - - - - - Small Confetti - - - - - Large Confetti - - - - - Horizontal Brick - - - - - Diagonal Brick - - - - - Solid Diamond - - - - - Open Diamond - - - - - Dotted Diamond - - - - - Plaid - - - - - Sphere - - - - - Weave - - - - - Divot - - - - - Shingle - - - - - Wave - - - - - Trellis - - - - - Zig Zag - - - - - - - - - Foreground color - - - - - Background color - - - - - - Preset Pattern - - - - - - - - - - - - - Pattern Fill - - - - - Group Fill - - - - - - - - - - - - - - - - - Blend Mode - - - - - Overlay - - - - - Multiply - - - - - Screen - - - - - Darken - - - - - Lighten - - - - - - - - - - - Blend - - - - - - - Reference - - - - - - - - Effect Container - - - - - Effect - - - - - - Alpha Ceiling Effect - - - - - Alpha Floor Effect - - - - - Alpha Inverse Effect - - - - - Alpha Modulate Effect - - - - - - Alpha Inset/Outset Effect - - - - - Alpha Replace Effect - - - - - - Blend Effect - - - - - - Color Change Effect - - - - - - Duotone Effect - - - - - Fill - - - - - Fill Overlay Effect - - - - - Glow Effect - - - - - Gray Scale Effect - - - - - Hue Saturation Luminance Effect - - - - - Inner Shadow Effect - - - - - Luminance - - - - - Outer Shadow Effect - - - - - Preset Shadow - - - - - Reflection Effect - - - - - Relative Offset Effect - - - - - Soft Edge Effect - - - - - - Transform Effect - - - - - - - Effect Container Type - - - - - Sibling - - - - - Tree - - - - - - - - - Effect Container Type - - - - - Name - - - - - - - - - - - - - Effect to blend - - - - - - Blend Mode - - - - - - - - Blur Effect - - - - - - - - - - - - - - - - Effect Container - - - - - Effect Container - - - - - - - - - - - - - Preset Shape Types - - - - - Line Shape - - - - - Line Inverse Shape - - - - - Triangle Shape - - - - - Right Triangle Shape - - - - - Rectangle Shape - - - - - Diamond Shape - - - - - Parallelogram Shape - - - - - Trapezoid Shape - - - - - Non-Isosceles Trapezoid Shape - - - - - Pentagon Shape - - - - - Hexagon Shape - - - - - Heptagon Shape - - - - - Octagon Shape - - - - - Decagon Shape - - - - - Dodecagon Shape - - - - - Four Pointed Star Shape - - - - - Five Pointed Star Shape - - - - - Six Pointed Star Shape - - - - - Seven Pointed Star Shape - - - - - Eight Pointed Star Shape - - - - - Ten Pointed Star Shape - - - - - Twelve Pointed Star Shape - - - - - Sixteen Pointed Star Shape - - - - - Twenty Four Pointed Star Shape - - - - - Thirty Two Pointed Star Shape - - - - - Round Corner Rectangle Shape - - - - - One Round Corner Rectangle Shape - - - - - Two Same-side Round Corner Rectangle Shape - - - - - Two Diagonal Round Corner Rectangle Shape - - - - - One Snip One Round Corner Rectangle Shape - - - - - One Snip Corner Rectangle Shape - - - - - Two Same-side Snip Corner Rectangle Shape - - - - - Two Diagonal Snip Corner Rectangle Shape - - - - - Plaque Shape - - - - - Ellipse Shape - - - - - Teardrop Shape - - - - - Home Plate Shape - - - - - Chevron Shape - - - - - Pie Wedge Shape - - - - - Pie Shape - - - - - Block Arc Shape - - - - - Donut Shape - - - - - No Smoking Shape - - - - - Right Arrow Shape - - - - - Left Arrow Shape - - - - - Up Arrow Shape - - - - - Down Arrow Shape - - - - - Striped Right Arrow Shape - - - - - Notched Right Arrow Shape - - - - - Bent Up Arrow Shape - - - - - Left Right Arrow Shape - - - - - Up Down Arrow Shape - - - - - Left Up Arrow Shape - - - - - Left Right Up Arrow Shape - - - - - Quad-Arrow Shape - - - - - Callout Left Arrow Shape - - - - - Callout Right Arrow Shape - - - - - Callout Up Arrow Shape - - - - - Callout Down Arrow Shape - - - - - Callout Left Right Arrow Shape - - - - - Callout Up Down Arrow Shape - - - - - Callout Quad-Arrow Shape - - - - - Bent Arrow Shape - - - - - U-Turn Arrow Shape - - - - - Circular Arrow Shape - - - - - Left Circular Arrow Shape - - - - - Left Right Circular Arrow Shape - - - - - Curved Right Arrow Shape - - - - - Curved Left Arrow Shape - - - - - Curved Up Arrow Shape - - - - - Curved Down Arrow Shape - - - - - Swoosh Arrow Shape - - - - - Cube Shape - - - - - Can Shape - - - - - Lightning Bolt Shape - - - - - Heart Shape - - - - - Sun Shape - - - - - Moon Shape - - - - - Smiley Face Shape - - - - - Irregular Seal 1 Shape - - - - - Irregular Seal 2 Shape - - - - - Folded Corner Shape - - - - - Bevel Shape - - - - - Frame Shape - - - - - Half Frame Shape - - - - - Corner Shape - - - - - Diagonal Stripe Shape - - - - - Chord Shape - - - - - Curved Arc Shape - - - - - Left Bracket Shape - - - - - Right Bracket Shape - - - - - Left Brace Shape - - - - - Right Brace Shape - - - - - Bracket Pair Shape - - - - - Brace Pair Shape - - - - - Straight Connector 1 Shape - - - - - Bent Connector 2 Shape - - - - - Bent Connector 3 Shape - - - - - Bent Connector 4 Shape - - - - - Bent Connector 5 Shape - - - - - Curved Connector 2 Shape - - - - - Curved Connector 3 Shape - - - - - Curved Connector 4 Shape - - - - - Curved Connector 5 Shape - - - - - Callout 1 Shape - - - - - Callout 2 Shape - - - - - Callout 3 Shape - - - - - Callout 1 Shape - - - - - Callout 2 Shape - - - - - Callout 3 Shape - - - - - Callout 1 with Border Shape - - - - - Callout 2 with Border Shape - - - - - Callout 3 with Border Shape - - - - - Callout 1 with Border and Accent Shape - - - - - Callout 2 with Border and Accent Shape - - - - - Callout 3 with Border and Accent Shape - - - - - Callout Wedge Rectangle Shape - - - - - Callout Wedge Round Rectangle Shape - - - - - Callout Wedge Ellipse Shape - - - - - Callout Cloud Shape - - - - - Cloud Shape - - - - - Ribbon Shape - - - - - Ribbon 2 Shape - - - - - Ellipse Ribbon Shape - - - - - Ellipse Ribbon 2 Shape - - - - - Left Right Ribbon Shape - - - - - Vertical Scroll Shape - - - - - Horizontal Scroll Shape - - - - - Wave Shape - - - - - Double Wave Shape - - - - - Plus Shape - - - - - Process Flow Shape - - - - - Decision Flow Shape - - - - - Input Output Flow Shape - - - - - Predefined Process Flow Shape - - - - - Internal Storage Flow Shape - - - - - Document Flow Shape - - - - - Multi-Document Flow Shape - - - - - Terminator Flow Shape - - - - - Preparation Flow Shape - - - - - Manual Input Flow Shape - - - - - Manual Operation Flow Shape - - - - - Connector Flow Shape - - - - - Punched Card Flow Shape - - - - - Punched Tape Flow Shape - - - - - Summing Junction Flow Shape - - - - - Or Flow Shape - - - - - Collate Flow Shape - - - - - Sort Flow Shape - - - - - Extract Flow Shape - - - - - Merge Flow Shape - - - - - Offline Storage Flow Shape - - - - - Online Storage Flow Shape - - - - - Magnetic Tape Flow Shape - - - - - Magnetic Disk Flow Shape - - - - - Magnetic Drum Flow Shape - - - - - Display Flow Shape - - - - - Delay Flow Shape - - - - - Alternate Process Flow Shape - - - - - Off-Page Connector Flow Shape - - - - - Blank Button Shape - - - - - Home Button Shape - - - - - Help Button Shape - - - - - Information Button Shape - - - - - Forward or Next Button Shape - - - - - Back or Previous Button Shape - - - - - End Button Shape - - - - - Beginning Button Shape - - - - - Return Button Shape - - - - - Document Button Shape - - - - - Sound Button Shape - - - - - Movie Button Shape - - - - - Gear 6 Shape - - - - - Gear 9 Shape - - - - - Funnel Shape - - - - - Plus Math Shape - - - - - Minus Math Shape - - - - - Multiply Math Shape - - - - - Divide Math Shape - - - - - Equal Math Shape - - - - - Not Equal Math Shape - - - - - Corner Tabs Shape - - - - - Square Tabs Shape - - - - - Plaque Tabs Shape - - - - - Chart X Shape - - - - - Chart Star Shape - - - - - Chart Plus Shape - - - - - - - Preset Text Shape Types - - - - - No Text Shape - - - - - Plain Text Shape - - - - - Stop Sign Text Shape - - - - - Triangle Text Shape - - - - - Inverted Triangle Text Shape - - - - - Chevron Text Shape - - - - - Inverted Chevron Text Shape - - - - - Inside Ring Text Shape - - - - - Outside Ring Text Shape - - - - - Upward Arch Text Shape - - - - - Downward Arch Text Shape - - - - - Circle Text Shape - - - - - Button Text Shape - - - - - Upward Pour Arch Text Shape - - - - - Downward Pour Arch Text Shape - - - - - Circle Pour Text Shape - - - - - Button Pour Text Shape - - - - - Upward Curve Text Shape - - - - - Downward Curve Text Shape - - - - - Upward Can Text Shape - - - - - Downward Can Text Shape - - - - - Wave 1 Text Shape - - - - - Wave 2 Text Shape - - - - - Double Wave 1 Text Shape - - - - - Wave 4 Text Shape - - - - - Inflate Text Shape - - - - - Deflate Text Shape - - - - - Bottom Inflate Text Shape - - - - - Bottom Deflate Text Shape - - - - - Top Inflate Text Shape - - - - - Top Deflate Text Shape - - - - - Deflate-Inflate Text Shape - - - - - Deflate-Inflate-Deflate Text Shape - - - - - Right Fade Text Shape - - - - - Left Fade Text Shape - - - - - Upward Fade Text Shape - - - - - Downward Fade Text Shape - - - - - Upward Slant Text Shape - - - - - Downward Slant Text Shape - - - - - Upward Cascade Text Shape - - - - - Downward Cascade Text Shape - - - - - - - Geometry Guide Name Properties - - - - - - Geometry Guide Formula Properties - - - - - - - Shape Guide Name - - - - - Shape Guide Formula - - - - - - - - Shape Guide - - - - - - - Adjustable Coordinate Methods - - - - - - Adjustable Angle Methods - - - - - - - X-Coordinate - - - - - Y-Coordinate - - - - - - - Left - - - - - Top - - - - - Right - - - - - Bottom Position - - - - - - - - Position - - - - - - Horizontal Adjustment Guide - - - - - Minimum Horizontal Adjustment - - - - - Maximum Horizontal Adjustment - - - - - Vertical Adjustment Guide - - - - - Minimum Vertical Adjustment - - - - - Maximum Vertical Adjustment - - - - - - - - Shape Position Coordinate - - - - - - Radial Adjustment Guide - - - - - Minimum Radial Adjustment - - - - - Maximum Radial Adjustment - - - - - Angle Adjustment Guide - - - - - Minimum Angle Adjustment - - - - - Maximum Angle Adjustment - - - - - - - - Position - - - - - - Connection Site Angle - - - - - - - - XY Adjust Handle - - - - - Polar Adjust Handle - - - - - - - - - Shape Connection Site - - - - - - - - Identifier - - - - - Index - - - - - - - - Move end point - - - - - - - - - Line end point - - - - - - - - Shape Arc Width Radius - - - - - Shape Arc Height Radius - - - - - Shape Arc Start Angle - - - - - Shape Arc Swing Angle - - - - - - - - Shape Path Point - - - - - - - - - Control points and end point - - - - - - - - Path Fill Mode - - - - - No Path Fill - - - - - Normal Path Fill - - - - - Lighten Path Fill - - - - - Lighten Path Fill Less - - - - - Darken Path Fill - - - - - Darken Path Fill Less - - - - - - - - - Close Shape Path - - - - - Move Path To - - - - - Draw Line To - - - - - Draw Arc To - - - - - Draw Quadratic Bezier Curve To - - - - - Draw Cubic Bezier Curve To - - - - - - Path Width - - - - - Path Height - - - - - Path Fill - - - - - Path Stroke - - - - - 3D Extrusion Allowed - - - - - - - - Shape Path - - - - - - - - - List of Shape Adjust Values - - - - - - Preset Shape - - - - - - - - Adjust Value List - - - - - - Preset Warp Shape - - - - - - - - Adjust Value List - - - - - List of Shape Guides - - - - - List of Shape Adjust Handles - - - - - List of Shape Connection Sites - - - - - Shape Text Rectangle - - - - - List of Shape Paths - - - - - - - - - Custom geometry - - - - - Preset geometry - - - - - - - - - Custom Geometry - - - - - Preset Text Warp - - - - - - - Line End Type - - - - - None - - - - - Triangle Arrow Head - - - - - Stealth Arrow - - - - - Diamond - - - - - Oval - - - - - Arrow Head - - - - - - - Line End Width - - - - - Small - - - - - Medium - - - - - Large - - - - - - - Line End Length - - - - - Small - - - - - Medium - - - - - Large - - - - - - - - Line Head/End Type - - - - - Width of Head/End - - - - - Length of Head/End - - - - - - - - No Fill - - - - - Solid Fill - - - - - Gradient Fill - - - - - - - - - - - Miter Join Limit - - - - - - - - Round Line Join - - - - - Line Join Bevel - - - - - Miter Line Join - - - - - - - Preset Line Dash Value - - - - - Solid - - - - - Dot - - - - - Dash - - - - - Large Dash - - - - - Dash Dot - - - - - Large Dash Dot - - - - - Large Dash Dot Dot - - - - - System Dash - - - - - System Dot - - - - - System Dash Dot - - - - - System Dash Dot Dot - - - - - - - - Value - - - - - - - Dash Length - - - - - Space Length - - - - - - - - Dash Stop - - - - - - - - - Preset Dash - - - - - Custom Dash - - - - - - - End Line Cap - - - - - Round Line Cap - - - - - Square Line Cap - - - - - Flat Line Cap - - - - - - - Line Width - - - - - - - - - Alignment Type - - - - - Center Alignment - - - - - Inset Alignment - - - - - - - Compound Line Type - - - - - Single Line - - - - - Double Lines - - - - - Thick Thin Double Lines - - - - - Thin Thick Double Lines - - - - - Thin Thick Thin Triple Lines - - - - - - - - - - - - Line Head/End Style - - - - - Tail line end style - - - - - - - Line Width - - - - - Line Ending Cap Type - - - - - Compound Line Type - - - - - Stroke Alignment - - - - - - Shape ID - - - - - - - - 2D Transform for Individual Objects - - - - - - - - - - - - - Black and White Mode - - - - - - - - 2D Transform for Grouped Objects - - - - - - - - - - Black and White Mode - - - - - - - - - - Style Matrix Index - - - - - - - - - - Identifier - - - - - - - - - - - Font Reference - - - - - - - - - Visual Properties - - - - - - - - - - - - - Shape Default - - - - - Line Default - - - - - Text Default - - - - - - - - - - - - - Background 1 - - - - - Text 1 - - - - - Background 2 - - - - - Text 2 - - - - - Accent 1 - - - - - Accent 2 - - - - - Accent 3 - - - - - Accent 4 - - - - - Accent 5 - - - - - Accent 6 - - - - - Hyperlink - - - - - Followed Hyperlink - - - - - - - - - Master Color Mapping - - - - - Override Color Mapping - - - - - - - - - - - - - - - - Extra Color Scheme - - - - - - - - - Theme Elements - - - - - Object Defaults - - - - - Extra Color Scheme List - - - - - Custom Color List - - - - - - - Name - - - - - - - - Color Scheme - - - - - - - - - - - - Color Map - - - - - - - Theme - - - - - Theme Override - - - - - Theme Manager - - - - - - - Left Border Line Properties - - - - - Right Border Line Properties - - - - - Top Border Line Properties - - - - - Bottom Border Line Properties - - - - - Top-Left to Bottom-Right Border Line Properties - - - - - Bottom-Left to Top-Right Border Line Properties - - - - - Cell 3-D - - - - - - Header Cells Associated With Table Cell - - - - - - - Left Margin - - - - - Right Margin - - - - - Top Margin - - - - - Bottom Margin - - - - - Text Direction - - - - - Anchor - - - - - Anchor Center - - - - - Horizontal Overflow - - - - - - - - Header Cell Reference - - - - - - - - - - - Width - - - - - - - - Table Grid Column - - - - - - - - - Text Body - - - - - Table Cell Properties - - - - - - - Row Span - - - - - Grid Span - - - - - Horizontal Merge - - - - - Vertical Merge - - - - - Table Cell Identifier - - - - - - - - Table Cell - - - - - - - Height - - - - - - - - - - - Table Style - - - - - Table Style ID - - - - - - Extension List - - - - - - Right-to-Left - - - - - First Row - - - - - First Column - - - - - Last Row - - - - - Last Column - - - - - Banded Rows - - - - - Banded Columns - - - - - - - - Table Properties - - - - - Table Grid - - - - - Table Row - - - - - - - Table - - - - - - - Bevel - - - - - Light Rig - - - - - - - Preset Material - - - - - - - - Fill - - - - - Fill Reference - - - - - - - - - - Line Reference - - - - - - - - - Effect - - - - - Effect Reference - - - - - - - - - Font - - - - - - - - On/Off Style Type - - - - - On - - - - - Off - - - - - Default - - - - - - - - - - - - - Bold - - - - - Italic - - - - - - - - Left Border - - - - - Right Border - - - - - Top Border - - - - - Bottom Border - - - - - Inside Horizontal Border - - - - - Inside Vertical Border - - - - - Top Left to Bottom Right Border - - - - - Top Right to Bottom Left Border - - - - - - - - - - - - - - - - Table Cell Borders - - - - - - - - - - - Table Cell Text Style - - - - - Table Cell Style - - - - - - - - - Table Background - - - - - Whole Table - - - - - Band 1 Horizontal - - - - - Band 2 Horizontal - - - - - Band 1 Vertical - - - - - Band 2 Vertical - - - - - Last Column - - - - - First Column - - - - - Last Row - - - - - Southeast Cell - - - - - Southwest Cell - - - - - First Row - - - - - Northeast Cell - - - - - Northwest Cell - - - - - - - Style ID - - - - - Name - - - - - - - - Table Style - - - - - - Default - - - - - - Table Style List - - - - - - - Text Paragraph Properties - - - - - - End Paragraph Run Properties - - - - - - - Text Anchoring Types - - - - - Text Anchoring Type Enum ( Top ) - - - - - Text Anchor Enum ( Center ) - - - - - Text Anchor Enum ( Bottom ) - - - - - Text Anchor Enum ( Justified ) - - - - - Text Anchor Enum ( Distributed ) - - - - - - - Text Vertical Overflow - - - - - Text Overflow Enum ( Overflow ) - - - - - Text Overflow Enum ( Ellipsis ) - - - - - Text Overflow Enum ( Clip ) - - - - - - - Text Horizontal Overflow Types - - - - - Text Horizontal Overflow Enum ( Overflow ) - - - - - Text Horizontal Overflow Enum ( Clip ) - - - - - - - Vertical Text Types - - - - - Vertical Text Type Enum ( Horizontal ) - - - - - Vertical Text Type Enum ( Vertical ) - - - - - Vertical Text Type Enum ( Vertical 270 ) - - - - - Vertical Text Type Enum ( WordArt Vertical ) - - - - - Vertical Text Type Enum ( East Asian Vertical ) - - - - - Vertical Text Type Enum ( Mongolian Vertical ) - - - - - Vertical WordArt Right to Left - - - - - - - Text Wrapping Types - - - - - Text Wrapping Type Enum ( None ) - - - - - Text Wrapping Type Enum ( Square ) - - - - - - - Text Column Count - - - - - - - - - - - Default Paragraph Style - - - - - List Level 1 Text Style - - - - - List Level 2 Text Style - - - - - List Level 3 Text Style - - - - - List Level 4 Text Style - - - - - List Level 5 Text Style - - - - - List Level 6 Text Style - - - - - List Level 7 Text Style - - - - - List Level 8 Text Style - - - - - List Level 9 Text Style - - - - - - - - Text Font Scale Percentage - - - - - - Text Font Scale Percentage - - - - - - - - - - Font Scale - - - - - Line Space Reduction - - - - - - - - - - No AutoFit - - - - - Normal AutoFit - - - - - Shape AutoFit - - - - - - - - - Preset Text Shape - - - - - - 3D Scene Properties - - - - - - - - Rotation - - - - - Paragraph Spacing - - - - - Text Vertical Overflow - - - - - Text Horizontal Overflow - - - - - Vertical Text - - - - - Text Wrapping Type - - - - - Left Inset - - - - - Top Inset - - - - - Right Inset - - - - - Bottom Inset - - - - - Number of Columns - - - - - Space Between Columns - - - - - Columns Right-To-Left - - - - - From WordArt - - - - - Anchor - - - - - Anchor Center - - - - - Force Anti-Alias - - - - - Text Upright - - - - - Compatible Line Spacing - - - - - - - - Body Properties - - - - - Text List Styles - - - - - Text Paragraphs - - - - - - - Start Bullet At Number - - - - - - - - - Text Auto-number Schemes - - - - - Autonumber Enum ( alphaLcParenBoth ) - - - - - Autonumbering Enum ( alphaUcParenBoth ) - - - - - Autonumbering Enum ( alphaLcParenR ) - - - - - Autonumbering Enum ( alphaUcParenR ) - - - - - Autonumbering Enum ( alphaLcPeriod ) - - - - - Autonumbering Enum ( alphaUcPeriod ) - - - - - Autonumbering Enum ( arabicParenBoth ) - - - - - Autonumbering Enum ( arabicParenR ) - - - - - Autonumbering Enum ( arabicPeriod ) - - - - - Autonumbering Enum ( arabicPlain ) - - - - - Autonumbering Enum ( romanLcParenBoth ) - - - - - Autonumbering Enum ( romanUcParenBoth ) - - - - - Autonumbering Enum ( romanLcParenR ) - - - - - Autonumbering Enum ( romanUcParenR ) - - - - - Autonumbering Enum ( romanLcPeriod ) - - - - - Autonumbering Enum ( romanUcPeriod ) - - - - - Autonumbering Enum ( circleNumDbPlain ) - - - - - Autonumbering Enum ( circleNumWdBlackPlain ) - - - - - Autonumbering Enum ( circleNumWdWhitePlain ) - - - - - Autonumbering Enum ( arabicDbPeriod ) - - - - - Autonumbering Enum ( arabicDbPlain ) - - - - - Autonumbering Enum ( ea1ChsPeriod ) - - - - - Autonumbering Enum ( ea1ChsPlain ) - - - - - Autonumbering Enum ( ea1ChtPeriod ) - - - - - Autonumbering Enum ( ea1ChtPlain ) - - - - - Autonumbering Enum ( ea1JpnChsDbPeriod ) - - - - - Autonumbering Enum ( ea1JpnKorPlain ) - - - - - Autonumbering Enum ( ea1JpnKorPeriod ) - - - - - Autonumbering Enum ( arabic1Minus ) - - - - - Autonumbering Enum ( arabic2Minus ) - - - - - Autonumbering Enum ( hebrew2Minus ) - - - - - Autonumbering Enum ( thaiAlphaPeriod ) - - - - - Autonumbering Enum ( thaiAlphaParenR ) - - - - - Autonumbering Enum ( thaiAlphaParenBoth ) - - - - - Autonumbering Enum ( thaiNumPeriod ) - - - - - Autonumbering Enum ( thaiNumParenR ) - - - - - Autonumbering Enum ( thaiNumParenBoth ) - - - - - Autonumbering Enum ( hindiAlphaPeriod ) - - - - - Autonumbering Enum ( hindiNumPeriod ) - - - - - Autonumbering Enum ( hindiNumParenR ) - - - - - Autonumbering Enum ( hindiAlpha1Period ) - - - - - - - - - - Follow Text - - - - - Color Specified - - - - - - - Bullet Size Percentage - - - - - - - - - - - Value - - - - - - - Value - - - - - - - - Bullet Size Follows Text - - - - - Bullet Size Percentage - - - - - Bullet Size Points - - - - - - - - - - Follow text - - - - - Specified - - - - - - - - Bullet Autonumbering Type - - - - - Start Numbering At - - - - - - - Bullet Character - - - - - - - - Blip - - - - - - - - - - No Bullet - - - - - Auto-Numbered Bullet - - - - - Character Bullet - - - - - Picture Bullet - - - - - - - Text Point - - - - - - Text Point - - - - - - - - - Text Non-Negative Point - - - - - - - - - Text Font Size - - - - - - - - - Text Typeface - - - - - - - Text Typeface - - - - - Panose Setting - - - - - Similar Font Family - - - - - Similar Character Set - - - - - - Text Underline Types - - - - - Text Underline Enum ( None ) - - - - - Text Underline Enum ( Words ) - - - - - Text Underline Enum ( Single ) - - - - - Text Underline Enum ( Double ) - - - - - Text Underline Enum ( Heavy ) - - - - - Text Underline Enum ( Dotted ) - - - - - Text Underline Enum ( Heavy Dotted ) - - - - - Text Underline Enum ( Dashed ) - - - - - Text Underline Enum ( Heavy Dashed ) - - - - - Text Underline Enum ( Long Dashed ) - - - - - Text Underline Enum ( Heavy Long Dashed ) - - - - - Text Underline Enum ( Dot Dash ) - - - - - Text Underline Enum ( Heavy Dot Dash ) - - - - - Text Underline Enum ( Dot Dot Dash ) - - - - - Text Underline Enum ( Heavy Dot Dot Dash ) - - - - - Text Underline Enum ( Wavy ) - - - - - Text Underline Enum ( Heavy Wavy ) - - - - - Text Underline Enum ( Double Wavy ) - - - - - - - - - - - - - - Underline Follows Text - - - - - Underline Stroke - - - - - - - - - Underline Fill Properties Follow Text - - - - - Underline Fill - - - - - - - Text Strike Type - - - - - Text Strike Enum ( No Strike ) - - - - - Text Strike Enum ( Single Strike ) - - - - - Text Strike Enum ( Double Strike ) - - - - - - - Text Cap Types - - - - - Text Caps Enum ( None ) - - - - - Text Caps Enum ( Small ) - - - - - Text Caps Enum ( All ) - - - - - - - - - Line - - - - - - - Highlight Color - - - - - - - Latin Font - - - - - East Asian Font - - - - - Complex Script Font - - - - - Symbol Font - - - - - Click Hyperlink - - - - - Mouse-Over Hyperlink - - - - - Right to Left Run - - - - - - - Kumimoji - - - - - Language ID - - - - - Alternative Language - - - - - Font Size - - - - - Bold - - - - - Italics - - - - - Underline - - - - - Strikethrough - - - - - Kerning - - - - - Capitalization - - - - - Spacing - - - - - Normalize Heights - - - - - Baseline - - - - - No Proofing - - - - - Dirty - - - - - Spelling Error - - - - - SmartTag Clean - - - - - SmartTag ID - - - - - Bookmark Link Target - - - - - - - On/Off Value - - - - - - Text Spacing Point - - - - - - - - - Text Spacing Percent - - - - - - Text Spacing Percent - - - - - - - - - - Value - - - - - - - Value - - - - - - Text Margin - - - - - - - - - Text Indentation - - - - - - - - - Text Tab Alignment Types - - - - - Text Tab Alignment Enum ( Left) - - - - - Text Tab Alignment Enum ( Center ) - - - - - Text Tab Alignment Enum ( Right ) - - - - - Text Tab Alignment Enum ( Decimal ) - - - - - - - - Tab Position - - - - - Tab Alignment - - - - - - - - Tab Stop - - - - - - - - - Text Run Properties - - - - - - - - - Spacing Percent - - - - - Spacing Points - - - - - - - Text Alignment Types - - - - - Text Alignment Enum ( Left ) - - - - - Text Alignment Enum ( Center ) - - - - - Text Alignment Enum ( Right ) - - - - - Text Alignment Enum ( Justified ) - - - - - Text Alignment Enum ( Justified Low ) - - - - - Text Alignment Enum ( Distributed ) - - - - - Text Alignment Enum ( Thai Distributed ) - - - - - - - Font Alignment Types - - - - - Font Alignment Enum ( Automatic ) - - - - - Font Alignment Enum ( Top ) - - - - - Font Alignment Enum ( Center ) - - - - - Font Alignment Enum ( Baseline ) - - - - - Font Alignment Enum ( Bottom ) - - - - - - - Text Indent Level Type - - - - - - - - - - - Line Spacing - - - - - Space Before - - - - - Space After - - - - - - - - - Tab List - - - - - Default Text Run Properties - - - - - - - Left Margin - - - - - Right Margin - - - - - Level - - - - - Indent - - - - - Alignment - - - - - Default Tab Size - - - - - Right To Left - - - - - East Asian Line Break - - - - - Font Alignment - - - - - Latin Line Break - - - - - Hanging Punctuation - - - - - - - - Text Character Properties - - - - - Text Paragraph Properties - - - - - - - Field ID - - - - - Field Type - - - - - - - - Text Run - - - - - Text Line Break - - - - - Text Field - - - - - - - - - Text Character Properties - - - - - Text String - - - - + xmlns:r="http://purl.oclc.org/ooxml/officeDocument/relationships" + xmlns:s="http://purl.oclc.org/ooxml/officeDocument/sharedTypes" + xmlns="http://purl.oclc.org/ooxml/drawingml/main" + targetNamespace="http://purl.oclc.org/ooxml/drawingml/main" elementFormDefault="qualified"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/dml-picture.xsd b/tests/resources/schema/ooxml/dml-picture.xsd index 6f65af668e..560ce68e6c 100644 --- a/tests/resources/schema/ooxml/dml-picture.xsd +++ b/tests/resources/schema/ooxml/dml-picture.xsd @@ -1,45 +1,22 @@ - + - - - - - - Non-Visual Drawing Properties - - - - - Non-Visual Picture Drawing Properties - - - - - - - - - Non-Visual Picture Properties - - - - - Picture Fill - - - - - Shape Properties - - - - - - - Picture - - + xmlns="http://purl.oclc.org/ooxml/drawingml/picture" + xmlns:a="http://purl.oclc.org/ooxml/drawingml/main" elementFormDefault="qualified" + targetNamespace="http://purl.oclc.org/ooxml/drawingml/picture"> + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/dml-spreadsheetDrawing.xsd b/tests/resources/schema/ooxml/dml-spreadsheetDrawing.xsd index e53e4073b5..d1ae13ba44 100644 --- a/tests/resources/schema/ooxml/dml-spreadsheetDrawing.xsd +++ b/tests/resources/schema/ooxml/dml-spreadsheetDrawing.xsd @@ -1,427 +1,184 @@ - - - - - - - - - - Locks With Sheet Flag - - - - - Prints With Sheet Flag - - - - - - - - Non-Visual Drawing Properties - - - - - Connection Non-Visual Shape Properties - - - - - - - - - Non-Visual Properties for a Shape - - - - - Shape Properties - - - - - - Shape Text Body - - - - - - Reference to Custom Function - - - - - Text Link - - - - - Lock Text Flag - - - - - Publish to Server Flag - - - - - - - - Connection Non-Visual Properties - - - - - Non-Visual Connector Shape Drawing Properties - - - - - - - - - Non-Visual Properties for a Connection Shape - - - - - Connector Shape Properties - - - - - - - Reference to Custom Function - - - - - Publish to Server Flag - - - - - - - - - Non-Visual Picture Drawing Properties - - - - - - - - - Non-Visual Properties for a Picture - - - - - Picture Fill - - - - - - Shape Style - - - - - - Reference To Custom Function - - - - - Publish to Server Flag - - - - - - - - Connection Non-Visual Properties - - - - - Non-Visual Graphic Frame Drawing Properties - - - - - - - - - Non-Visual Properties for a Graphic Frame - - - - - 2D Transform for Graphic Frames - - - - - - - Reference To Custom Function - - - - - Publish to Server Flag - - - - - - - - Connection Non-Visual Properties - - - - - Non-Visual Group Shape Drawing Properties - - - - - - - - - Non-Visual Properties for a Group Shape - - - - - Group Shape Properties - - - - - - Shape - - - - - Group Shape - - - - - - Connection Shape - - - - - Picture - - - - - - - - - - - Shape - - - - - Group Shape - - - - - Graphic Frame - - - - - Connection Shape - - - - - - Content Part - - - - - - - - - Relationship to Part - - - - - - Column ID - - - - - - - - Row ID - - - - - - - - - - Column) - - - - - Column Offset - - - - - Row - - - - - Row Offset - - - - - - - Resizing Behaviors - - - - - Move and Resize With Anchor Cells - - - - - Move With Cells but Do Not Resize - - - - - Do Not Move or Resize With Underlying Rows/Columns - - - - - - - - - Starting Anchor Point - - - - - Ending Anchor Point - - - - - - Client Data - - - - - - Positioning and Resizing Behaviors - - - - - - - - - - - - - - - - Position - - - - - Shape Extent - - - - - - - - - - - Two Cell Anchor Shape Size - - - - - One Cell Anchor Shape Size - - - - - Absolute Anchor Shape Size - - - - - - - - - - - - Worksheet Drawing - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/dml-wordprocessingDrawing.xsd b/tests/resources/schema/ooxml/dml-wordprocessingDrawing.xsd index 0755f5f005..bf11d9a4cc 100644 --- a/tests/resources/schema/ooxml/dml-wordprocessingDrawing.xsd +++ b/tests/resources/schema/ooxml/dml-wordprocessingDrawing.xsd @@ -1,563 +1,283 @@ - - - - - - - - Additional Extent on Left Edge - - - - - Additional Extent on Top Edge - - - - - Additional Extent on Right Edge - - - - - Additional Extent on Bottom Edge - - - - - - Distance from Text - - - - - - - - Drawing Object Size - - - - - Inline Wrapping Extent - - - - - Drawing Object Non-Visual Properties - - - - - Common DrawingML Non-Visual Properties - - - - - - - Distance From Text on Top Edge - - - - - Distance From Text on Bottom Edge - - - - - Distance From Text on Left Edge - - - - - Distance From Text on Right Edge - - - - - - Text Wrapping Location - - - - - Both Sides - - - - - Left Side Only - - - - - Right Side Only - - - - - Largest Side Only - - - - - - - - - Wrapping Polygon Start - - - - - Wrapping Polygon Line End Position - - - - - - Wrapping Points Modified - - - - - - - - - Object Extents Including Effects - - - - - - Text Wrapping Location - - - - - Distance From Text (Top) - - - - - Distance From Text on Bottom Edge - - - - - Distance From Text on Left Edge - - - - - Distance From Text on Right Edge - - - - - - - - Tight Wrapping Extents Polygon - - - - - - Text Wrapping Location - - - - - Distance From Test on Left Edge - - - - - Distance From Text on Right Edge - - - - - - - - Wrapping Polygon - - - - - - Text Wrapping Location - - - - - Distance From Text on Left Edge - - - - - Distance From Text on Right Edge - - - - - - - - Wrapping Boundaries - - - - - - Distance From Text on Top Edge - - - - - Distance From Text on Bottom Edge - - - - - - - - - No Text Wrapping - - - - - Square Wrapping - - - - - Tight Wrapping - - - - - Through Wrapping - - - - - Top and Bottom Wrapping - - - - - - - - Absolute Position Offset Value - - - - - - Relative Horizontal Alignment Positions - - - - - Left Alignment - - - - - Right Alignment - - - - - Center Alignment - - - - - Inside - - - - - Outside - - - - - - - Horizontal Relative Positioning - - - - - Page Margin - - - - - Page Edge - - - - - Column - - - - - Character - - - - - Left Margin - - - - - Right Margin - - - - - Inside Margin - - - - - Outside Margin - - - - - - - - - - Relative Horizontal Alignment - - - - - Absolute Position Offset - - - - - - - Horizontal Position Relative Base - - - - - - Vertical Alignment Definition - - - - - Top - - - - - Bottom - - - - - Center Alignment - - - - - Inside - - - - - Outside - - - - - - - Vertical Relative Positioning - - - - - Page Margin - - - - - Page Edge - - - - - Paragraph - - - - - Line - - - - - Top Margin - - - - - Bottom Margin - - - - - Inside Margin - - - - - Outside Margin - - - - - - - - - - Relative Vertical Alignment - - - - - - - - Vertical Position Relative Base - - - - - - - - Simple Positioning Coordinates - - - - - Horizontal Positioning - - - - - Vertical Positioning - - - - - Inline Drawing Object Extents - - - - - - - Drawing Object Non-Visual Properties - - - - - - - - Distance From Text on Top Edge - - - - - Distance From Text on Bottom Edge - - - - - Distance From Text on Left Edge - - - - - Distance From Text on Right Edge - - - - - Page Positioning - - - - - Relative Z-Ordering Position - - - - - Display Behind Document Text - - - - - Lock Anchor - - - - - Layout In Table Cell - - - - - Hidden - - - - - Allow Objects to Overlap - - - - - - Inline DrawingML Object - - - - - Anchor for Floating DrawingML Object - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/pml-mso2010.xsd b/tests/resources/schema/ooxml/pml-mso2010.xsd deleted file mode 100644 index 1a1cb5b84b..0000000000 --- a/tests/resources/schema/ooxml/pml-mso2010.xsd +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/tests/resources/schema/ooxml/pml.xsd b/tests/resources/schema/ooxml/pml.xsd index 9e8e16f7ba..29f8e4c767 100644 --- a/tests/resources/schema/ooxml/pml.xsd +++ b/tests/resources/schema/ooxml/pml.xsd @@ -1,4885 +1,1617 @@ - + - - - - - - - Transition Slide Direction Type - - - - - Transition Slide Direction Enum ( Left ) - - - - - Transition Slide Direction Enum ( Up ) - - - - - Transition Slide Direction ( Right ) - - - - - Transition Slide Direction Enum ( Down ) - - - - - - - Transition Corner Direction Type - - - - - Transition Corner Direction Enum ( Left-Up ) - - - - - Transition Corner Direction Enum ( Right-Up ) - - - - - Transition Corner Direction Enum ( Left-Down ) - - - - - Transition Corner Direction Enum ( Right-Down ) - - - - - - - Transition In/Out Direction Type - - - - - Transition In/Out Direction Enum ( Out ) - - - - - Transition In/Out Direction Enum ( In ) - - - - - - - - Direction - - - - - - - Direction - - - - - - Transition Eight Direction - - - - - - - Direction - - - - - - - Transition Direction - - - - - - - Direction - - - - - - - Transition Through Black - - - - - - - Orientation - - - - - Direction - - - - - - - Spokes - - - - - - - - Sound - - - - - - Loop Sound - - - - - - - - Start Sound Action - - - - - Stop Sound Action - - - - - - - Transition Speed - - - - - low - - - - - Medium - - - - - Fast - - - - - - - - - - Blinds Slide Transition - - - - - Checker Slide Transition - - - - - Circle Slide Transition - - - - - Dissolve Slide Transition - - - - - Comb Slide Transition - - - - - Cover Slide Transition - - - - - Cut Slide Transition - - - - - Diamond Slide Transition - - - - - Fade Slide Transition - - - - - Newsflash Slide Transition - - - - - Plus Slide Transition - - - - - Pull Slide Transition - - - - - Push Slide Transition - - - - - Random Slide Transition - - - - - Random Bar Slide Transition - - - - - Split Slide Transition - - - - - Strips Slide Transition - - - - - Wedge Slide Transition - - - - - Wheel Slide Transition - - - - - Wipe Slide Transition - - - - - Zoom Slide Transition - - - - - - Sound Action - - - - - - - Transition Speed - - - - - Advance on Click - - - - - Advance after time - - - - - - Indefinite Time Declaration - - - - - Indefinite Type Enum - - - - - - - Time - - - - - - Time Node ID - - - - - - - Time - - - - - - - Value - - - - - - Iterate Type - - - - - Element - - - - - Word - - - - - Letter - - - - - - - - - Time Absolute - - - - - Time Percentage - - - - - - Iterate Type - - - - - Backwards - - - - - - - Shape ID - - - - - - - - Character Range - - - - - Paragraph Text Range - - - - - - - Chart Subelement Type - - - - - Grid Legend - - - - - Data Series - - - - - Category Axis - - - - - Single Point in Data Series - - - - - Single Point in Category - - - - - - - - Type - - - - - Level - - - - - - - - Background - - - - - Subshape - - - - - Embedded Chart Element - - - - - Text Element - - - - - Graphic Element - - - - - - Shape ID - - - - - - - - Slide Target - - - - - Sound Target - - - - - Shape Target - - - - - Ink Target - - - - - - - - Value - - - - - - Trigger RunTime Node - - - - - Trigger RunTime Node ( First ) - - - - - Trigger RunTime Node ( Last ) - - - - - Trigger RunTime Node Enum ( All ) - - - - - - - - Value - - - - - - Trigger Event - - - - - Trigger Event Enum ( On Begin ) - - - - - Trigger Event Enum ( On End ) - - - - - Trigger Event Enum ( Begin ) - - - - - Trigger Event Enum ( End ) - - - - - Trigger Event Enum ( On Click ) - - - - - Trigger Event Enum ( On Double Click ) - - - - - Trigger Event Enum ( On Mouse Over ) - - - - - Trigger Event Enum ( On Mouse Out ) - - - - - Trigger Event Enum ( On Next ) - - - - - Trigger Event Enum ( On Previous ) - - - - - Trigger Event Enum ( On Stop Audio ) - - - - - - - - - Target Element Trigger Choice - - - - - Time Node - - - - - Runtime Node Trigger Choice - - - - - - Trigger Event - - - - - Trigger Delay - - - - - - - - Condition - - - - - - - - - Parallel Time Node - - - - - Sequence Time Node - - - - - Exclusive - - - - - Animate - - - - - Animate Color Behavior - - - - - Animate Effect - - - - - Animate Motion - - - - - Animate Rotation - - - - - Animate Scale - - - - - Command - - - - - Set Time Node Behavior - - - - - Audio - - - - - Video - - - - - - - Time Node Preset Class Type - - - - - Preset Type Enum ( Entrance ) - - - - - Exit - - - - - Preset Type Enum ( Emphasis ) - - - - - Preset Type Enum ( Path ) - - - - - Preset Type Enum ( Verb ) - - - - - Preset Type Enum ( Media Call ) - - - - - - - Time Node Restart Type - - - - - Restart Enum ( Always ) - - - - - Restart Enum ( When Not Active ) - - - - - Restart Enum ( Never ) - - - - - - - Time Node Fill Type - - - - - Remove - - - - - Freeze - - - - - TimeNode Fill Type Enum ( Hold ) - - - - - Transition - - - - - - - Time Node Sync Type - - - - - TimeNode Sync Enum ( Can Slip ) - - - - - TimeNode Sync Enum ( Locked ) - - - - - - - Time Node Master Relation - - - - - TimeNode Master Relation Enum ( Same Click ) - - - - - TimeNode Master Relation Enum ( Last Click ) - - - - - TimeNode Master Relation Enum ( Next Click ) - - - - - - - Time Node Type - - - - - Node Type Enum ( Click Effect ) - - - - - Node Type Enum ( With Effect ) - - - - - Node Type Enum ( After Effect ) - - - - - Node Type Enum ( Main Sequence ) - - - - - Node Type Enum ( Interactive Sequence ) - - - - - Node Type Enum ( Click Paragraph ) - - - - - Node Type Enum ( With Group ) - - - - - Node Type Enum ( After Group ) - - - - - Node Type Enum ( Timing Root ) - - - - - - - - - Start Conditions List - - - - - End Conditions List - - - - - EndSync - - - - - Iterate - - - - - Children Time Node List - - - - - Sub-TimeNodes List - - - - - - ID - - - - - Preset ID - - - - - Preset Types - - - - - Preset SubType - - - - - Duration - - - - - Repeat Count - - - - - Repeat Duration - - - - - Speed - - - - - Acceleration - - - - - Deceleration - - - - - Auto Reverse - - - - - Restart - - - - - Fill - - - - - Synchronization Behavior - - - - - Time Filter - - - - - Event Filter - - - - - Display - - - - - Master Relation - - - - - Build level - - - - - Group ID - - - - - After Effect - - - - - Node Type - - - - - Node Placeholder - - - - - - - - Parallel TimeNode - - - - - - - Next Action Type - - - - - Next Action Type Enum ( None ) - - - - - Next Action Type Enum ( Seek ) - - - - - - - Previous Action Type - - - - - Previous Action Type Enum ( None ) - - - - - Previous Action Type Enum ( Skip Timed ) - - - - - - - - - Common TimeNode Properties - - - - - Previous Conditions List - - - - - Next Conditions List - - - - - - Concurrent - - - - - Previous Action - - - - - Next Action - - - - - - - - Common TimeNode Properties - - - - - - - - - Attribute Name - - - - - - - Behavior Additive Type - - - - - Additive Enum ( Base ) - - - - - Additive Enum ( Sum ) - - - - - Additive Enum ( Replace ) - - - - - Additive Enum ( Multiply ) - - - - - None - - - - - - - Behavior Accumulate Type - - - - - Accumulate Enum ( None ) - - - - - Accumulate Enum ( Always ) - - - - - - - Behavior Transform Type - - - - - Point - - - - - Image - - - - - - - Behavior Override Type - - - - - Override Enum ( Normal ) - - - - - Override Enum ( Child Style ) - - - - - - - - - - Target Element - - - - - Attribute Name List - - - - - - Additive - - - - - Accumulate - - - - - Transform Type - - - - - From - - - - - To - - - - - By - - - - - Runtime Context - - - - - Override - - - - - - - Value - - - - - - - Value - - - - - - - Value - - - - - - - Value - - - - - - - - Boolean Variant - - - - - Integer - - - - - Float Value - - - - - String Value - - - - - Color Value - - - - - - - Animation Time - - - - - - - - Value - - - - - - Time - - - - - Formula - - - - - - - - Time Animate Value - - - - - - - Time List Animate Behavior Calculate Mode - - - - - Calc Mode Enum ( Discrete ) - - - - - Calc Mode Enum ( Linear ) - - - - - Calc Mode Enum ( Formula ) - - - - - - - Time List Animate Behavior Value Types - - - - - Value Type Enum ( String ) - - - - - Value Type Enum ( Number ) - - - - - Value Type Enum ( Color ) - - - - - - - - - - Time Animated Value List - - - - - - By - - - - - From - - - - - To - - - - - Calculation Mode - - - - - Value Type - - - - - - - Red - - - - - Green - - - - - Blue - - - - - - - Hue - - - - - Saturation - - - - - Lightness - - - - - - - - RGB - - - - - HSL - - - - - - - Time List Animate Color Space - - - - - Color Space Enum ( RGB ) - - - - - Color Space Enum ( HSL ) - - - - - - - Time List Animate Color Direction - - - - - Direction Enum ( Clockwise ) - - - - - Counter-Clockwise - - - - - - - - - - By - - - - - From - - - - - To - - - - - - Color Space - - - - - Direction - - - - - - Time List Animate Effect Transition - - - - - Transition Enum ( In ) - - - - - Transition Enum ( Out ) - - - - - Transition Enum ( None ) - - - - - - - - - - Progress - - - - - - Transition - - - - - Filter - - - - - Property List - - - - - - Time List Animate Motion Behavior Origin - - - - - Origin Enum ( Parent ) - - - - - Origin Enum ( Layout ) - - - - - - - Time List Animate Motion Path Edit Mode - - - - - Path Edit Mode Enum ( Relative ) - - - - - Path Edit Mode Enum ( Fixed ) - - - - - - - - X coordinate - - - - - Y coordinate - - - - - - - - - - From - - - - - - Rotation Center - - - - - - Origin - - - - - Path - - - - - Path Edit Mode - - - - - Relative Angle - - - - - Points Types - - - - - - - - - - By - - - - - From - - - - - To - - - - - - - - - By - - - - - - To - - - - - - Zoom Content - - - - - - Command Type - - - - - Command Type Enum ( Event ) - - - - - Command Type Enum ( Call ) - - - - - Command Type Enum ( Verb ) - - - - - - - - - - - Command Type - - - - - Command - - - - - - - - Common Behavior - - - - - To - - - - - - - - - Common Time Node Properties - - - - - - - Volume - - - - - Mute - - - - - Number of Slides - - - - - Show When Stopped - - - - - - - - Common Media Node Properties - - - - - - Is Narration - - - - - - - - Common Media Node Properties - - - - - - Full Screen - - - - - - - Shape ID - - - - - Group ID - - - - - Expand UI - - - - - - - - Time Node List - - - - - - Level - - - - - - - - Template Effects - - - - - - - Paragraph Build Type - - - - - All At Once - - - - - Paragraph - - - - - Custom - - - - - Whole - - - - - - - - - Template effects - - - - - - - Build Types - - - - - Build Level - - - - - Animate Background - - - - - Auto Update Animation Background - - - - - Reverse - - - - - Auto Advance Time - - - - - - Diagram Build Types - - - - - Diagram Build Type Enum ( Whole ) - - - - - Diagram Build Type Enum ( Depth By Node ) - - - - - Diagram Build Type Enum ( Depth By Branch ) - - - - - Diagram Build Type Enum ( Breadth By Node ) - - - - - Diagram Build Type Enum ( Breadth By Level ) - - - - - Diagram Build Type Enum ( Clockwise ) - - - - - Diagram Build Type Enum ( Clockwise-In ) - - - - - Diagram Build Type Enum ( Clockwise-Out ) - - - - - Diagram Build Type Enum ( Counter-Clockwise ) - - - - - Diagram Build Type Enum ( Counter-Clockwise-In ) - - - - - Diagram Build Type Enum ( Counter-Clockwise-Out ) - - - - - Diagram Build Type Enum ( In-By-Ring ) - - - - - Diagram Build Type Enum ( Out-By-Ring ) - - - - - Diagram Build Type Enum ( Up ) - - - - - Diagram Build Type Enum ( Down ) - - - - - Diagram Build Type Enum ( All At Once ) - - - - - Diagram Build Type Enum ( Custom ) - - - - - - - - - Diagram Build Types - - - - - - Embedded Chart Build Type - - - - - Chart Build Type Enum ( All At Once ) - - - - - Chart Build Type Enum ( Series ) - - - - - Chart Build Type Enum ( Category ) - - - - - Chart Build Type Enum ( Series Element ) - - - - - Chart Build Type Enum ( Category Element ) - - - - - - - - - Build - - - - - Animate Background - - - - - - - - Build As One - - - - - Build Sub Elements - - - - - - - - - - Build Paragraph - - - - - Build Diagram - - - - - Build Embedded Chart - - - - - Build Graphics - - - - - - - - - - Build List - - - - - - - - - Name string - - - - - - Direction - - - - - Horizontal - - - - - Vertical - - - - - - - Index - - - - - - - Start - - - - - End - - - - - - - Relationship ID - - - - - - - - Presentation Slide - - - - - - - - Custom Show Identifier - - - - - - - - All Slides - - - - - Slide Range - - - - - Custom Show - - - - - - - - Relationship ID - - - - - - - Relationship ID - - - - - - - - Customer Data - - - - - Customer Data Tags - - - - - - - - - - - Uniform Resource Identifier - - - - - - - - Extension - - - - - - - - - - - - - - - - Modify - - - - - - - - - - Comment Author ID - - - - - Comment Author Name - - - - - Comment Author Initials - - - - - Index of Comment Author's last comment - - - - - Comment Author Color Index - - - - - - - - Comment Author - - - - - - - List of Comment Authors - - - - - - - Comment Position - - - - - Comment's Text Content - - - - - - - Comment Author ID - - - - - Comment Date/Time - - - - - Comment Index - - - - - - - - Comment - - - - - - - Comment List - - - - - - Embedded object Shape ID - - - - - Embedded Object Name - - - - - Show Embedded Object As Icon - - - - - Relationship ID - - - - - Image Width - - - - - Image Height - - - - - - Embedded object to Follow Color Scheme - - - - - None - - - - - Full - - - - - Text and Background - - - - - - - - - - - Color Scheme Properties for Embedded object - - - - - - - - - - Update Linked Embedded Objects Automatically - - - - - - - - Embedded Object or Control - - - - - Linked Object or Control - - - - - - - - Embedded Object ProgID - - - - - - Global Element for Embedded objects and Controls - - - - - - - - - - - - - - Embedded Control - - - - - - - Slide Identifier - - - - - - - - - - - - - Slide Identifier - - - - - Relationship Identifier - - - - - - - - Slide ID - - - - - - - Slide Master ID - - - - - - - - - - - - Slide Master Identifier - - - - - Relationship Identifier - - - - - - - - Slide Master ID - - - - - - - - - - - Relationship Identifier - - - - - - - - Notes Master ID - - - - - - - - - - - Relationship Identifier - - - - - - - - Handout Master ID - - - - - - - - Relationship Identifier - - - - - - - - Embedded Font Name - - - - - Regular Embedded Font - - - - - Bold Embedded Font - - - - - Italic Embedded Font - - - - - Bold Italic Embedded Font - - - - - - - - - Embedded Font - - - - - - - - Relationship Identifier - - - - - - - - List of Presentation Slides - - - - - - - Custom Show Name - - - - - Custom Show ID - - - - - - - - Custom Show - - - - - - - Photo Album Layout Definition - - - - - Fit Photos to Slide - - - - - 1 Photo per Slide - - - - - 2 Photos per Slide - - - - - 4 Photos per Slide - - - - - 1 Photo per Slide with Titles - - - - - 2 Photos per Slide with Titles - - - - - 4 Photos per Slide with Titles - - - - - - - Photo Album Shape for Photo Mask - - - - - Rectangle Photo Frame - - - - - Rounded Rectangle Photo Frame - - - - - Simple White Photo Frame - - - - - Simple Black Photo Frame - - - - - Compound Black Photo Frame - - - - - Center Shadow Photo Frame - - - - - Soft Edge Photo Frame - - - - - - - - - - - Black and White - - - - - Show/Hide Captions - - - - - Photo Album Layout - - - - - Frame Type - - - - - - Slide Size Coordinate - - - - - - - - - Slide Size Type - - - - - Screen 4x3 - - - - - Letter - - - - - A4 - - - - - 35mm Film - - - - - Overhead - - - - - Banner - - - - - Custom - - - - - Ledger - - - - - A3 - - - - - B4ISO - - - - - B5ISO - - - - - B4JIS - - - - - B5JIS - - - - - Hagaki Card - - - - - Screen 16x9 - - - - - Screen 16x10 - - - - - - - - Extent Length - - - - - Extent Width - - - - - Type of Size - - - - - - - Language - - - - - Invalid Kinsoku Start Characters - - - - - Invalid Kinsoku End Characters - - - - - - Bookmark ID Seed - - - - - - - - - - Cryptographic Algorithm Name - - - - - Password Hash Value - - - - - Salt Value for Password Verifier - - - - - Iterations to Run Hashing Algorithm - - - - - Cryptographic Provider Type - - - - - Cryptographic Algorithm Class - - - - - Cryptographic Algorithm Type - - - - - Cryptographic Hashing Algorithm - - - - - Iterations to Run Hashing Algorithm - - - - - Salt for Password Verifier - - - - - Password Hash - - - - - Cryptographic Provider - - - - - Cryptographic Algorithm Extensibility - - - - - Algorithm Extensibility Source - - - - - Cryptographic Provider Type Extensibility - - - - - Provider Type Extensibility Source - - - - - - - - List of Slide Master IDs - - - - - List of Notes Master IDs - - - - - List of Handout Master IDs - - - - - List of Slide IDs - - - - - Presentation Slide Size - - - - - Notes Slide Size - - - - - Smart Tags - - - - - Embedded Font List - - - - - List of Custom Shows - - - - - Photo Album Information - - - - - List of Customer Data Buckets - - - - - Kinsoku Settings - - - - - Presentation Default Text Style - - - - - Modification Verifier - - - - - Extension List - - - - - - Server Zoom - - - - - First Slide Number - - - - - Show Header and Footer Placeholders on Titles - - - - - Right-To-Left Views - - - - - Remove Personal Information on Save - - - - - Compatibility Mode - - - - - Strict First and Last Characters - - - - - Embed True Type Fonts - - - - - Save Subset Fonts - - - - - Automatically Compress Pictures - - - - - Bookmark ID Seed - - - - - Document Conformance Class - - - - - - Presentation - - - - - - - - - - Show Speaker Notes - - - - - Target Output Profile - - - - - HTML Output Title - - - - - Publish Path - - - - - - HTML Slide Navigation Control Colors - - - - - Non-specific Colors - - - - - Browser Colors - - - - - Presentation Text Colors - - - - - Presentation Accent Colors - - - - - White Text on Black Colors - - - - - Black Text on White Colors - - - - - - - HTML/Web Screen Size Target - - - - - HTML/Web Size Enumeration 544x376 - - - - - HTML/Web Size Enumeration 640x480 - - - - - HTML/Web Size Enumeration 720x515 - - - - - HTML/Web Size Enumeration 800x600 - - - - - HTML/Web Size Enumeration 1024x768 - - - - - HTML/Web Size Enumeration 1152x882 - - - - - HTML/Web Size Enumeration 1152x900 - - - - - HTML/Web Size Enumeration 1280x1024 - - - - - HTML/Web Size Enumeration 1600x1200 - - - - - HTML/Web Size Enumeration 1800x1400 - - - - - HTML/Web Size Enumeration 1920x1200 - - - - - - - Web Encoding - - - - - - - - - - Show animation in HTML output - - - - - Resize graphics in HTML output - - - - - Allow PNG in HTML output - - - - - Rely on VML for HTML output - - - - - Organize HTML output in folders - - - - - Use long file names in HTML output - - - - - Image size for HTML output - - - - - Encoding for HTML output - - - - - Slide Navigation Colors for HTML output - - - - - - Default print output - - - - - Slides - - - - - 1 Slide / Handout Page - - - - - 2 Slides / Handout Page - - - - - 3 Slides / Handout Page - - - - - 4 Slides / Handout Page - - - - - 6 Slides / Handout Page - - - - - 9 Slides / Handout Page - - - - - Notes - - - - - Outline - - - - - - - Print Color Mode - - - - - Black and White Mode - - - - - Grayscale Mode - - - - - Color Mode - - - - - - - - - - - Print Output - - - - - Print Color Mode - - - - - Print Hidden Slides - - - - - Scale to Fit Paper when printing - - - - - Frame slides when printing - - - - - - - Show Scroll Bar in Window - - - - - - - Restart Show - - - - - - - - Presenter Slide Show Mode - - - - - Browse Slide Show Mode - - - - - Kiosk Slide Show Mode - - - - - - - - - - - Pen Color for Slide Show - - - - - - - Loop Slide Show - - - - - Show Narration in Slide Show - - - - - Show Animation in Slide Show - - - - - Use Timings in Slide Show - - - - - - - - HTML Publishing Properties - - - - - Web Properties - - - - - Printing Properties - - - - - Presentation-wide Show Properties - - - - - Color MRU - - - - - - - - Presentation-wide Properties - - - - - - - - - Slide Number Placeholder - - - - - Header Placeholder - - - - - Footer Placeholder - - - - - Date/Time Placeholder - - - - - - Placeholder IDs - - - - - Title - - - - - Body - - - - - Centered Title - - - - - Subtitle - - - - - Date and Time - - - - - Slide Number - - - - - Footer - - - - - Header - - - - - Object - - - - - Chart - - - - - Table - - - - - Clip Art - - - - - Diagram - - - - - Media - - - - - Slide Image - - - - - Picture - - - - - - - Placeholder Size - - - - - Full - - - - - Half - - - - - Quarter - - - - - - - - - - - Placeholder Type - - - - - Placeholder Orientation - - - - - Placeholder Size - - - - - Placeholder Index - - - - - Placeholder has custom prompt - - - - - - - - Placeholder Shape - - - - - - Customer Data List - - - - - - - Is a Photo Album - - - - - Is User Drawn - - - - - - - - Non-Visual Drawing Properties - - - - - Non-Visual Drawing Properties for a Shape - - - - - Application Non-Visual Drawing Properties - - - - - - - - - Non-Visual Properties for a Shape - - - - - - Shape Style - - - - - Shape Text Body - - - - - - - Use Background Fill - - - - - - - - Non-Visual Drawing Properties - - - - - Non-Visual Connector Shape Drawing Properties - - - - - Application Non-Visual Drawing Properties - - - - - - - - - Non-Visual Properties for a Connection Shape - - - - - Shape Properties - - - - - Connector Shape Style - - - - - - - - - - - Non-Visual Picture Drawing Properties - - - - - - - - - - Non-Visual Properties for a Picture - - - - - Picture Fill - - - - - - - - - - - - Non-Visual Drawing Properties - - - - - Non-Visual Graphic Frame Drawing Properties - - - - - Application Non-Visual Drawing Properties - - - - - - - - - Non-Visual Properties for a Graphic Frame - - - - - 2D Transform for Graphic Frame - - - - - - Extension List with Modification Flag - - - - - - - - - Non-visual Drawing Properties - - - - - Non-Visual Group Shape Drawing Properties - - - - - Non-Visual Properties - - - - - - - - - Non-Visual Properties for a Group Shape - - - - - Group Shape Properties - - - - - - Shape - - - - - Group Shape - - - - - Graphic Frame - - - - - Connection Shape - - - - - Picture - - - - - Content Part - - - - - - - - - - Relationship to Part - - - - - - - - Color Scheme Map - - - - - - - - - Color Scheme Map Override - - - - - - - - Show Master Shapes - - - - - Show Master Placeholder Animations - - - - - - - - - - - - Shade to Title - - - - - - - - Background Properties - - - - - Background Style Reference - - - - - - - - - - - Black and White Mode - - - - - - - - Slide Background - - - - - Shape Tree - - - - - Customer Data List - - - - - List of controls - - - - - - - Name - - - - - - - - Common slide data for slides - - - - - - Slide Transition - - - - - Slide Timing Information for a Slide - - - - - - - - Show Slide in Slide Show - - - - - - Presentation Slide - - - - - Slide Layout Type - - - - - Slide Layout Type Enumeration ( Title ) - - - - - Slide Layout Type Enumeration ( Text ) - - - - - Slide Layout Type Enumeration ( Two Column Text ) - - - - - Slide Layout Type Enumeration ( Table ) - - - - - Slide Layout Type Enumeration ( Text and Chart ) - - - - - Slide Layout Type Enumeration ( Chart and Text ) - - - - - Slide Layout Type Enumeration ( Diagram ) - - - - - Chart - - - - - Text and Clip Art - - - - - Clip Art and Text - - - - - Slide Layout Type Enumeration ( Title Only ) - - - - - Slide Layout Type Enumeration ( Blank ) - - - - - Slide Layout Type Enumeration ( Text and Object ) - - - - - Slide Layout Type Enumeration ( Object and Text ) - - - - - Object - - - - - Title and Object - - - - - Slide Layout Type Enumeration ( Text and Media ) - - - - - Slide Layout Type Enumeration ( Media and Text ) - - - - - Slide Layout Type Enumeration ( Object over Text) - - - - - Slide Layout Type Enumeration ( Text over Object) - - - - - Text and Two Objects - - - - - Two Objects and Text - - - - - Two Objects over Text - - - - - Four Objects - - - - - Vertical Text - - - - - Clip Art and Vertical Text - - - - - Vertical Title and Text - - - - - Vertical Title and Text Over Chart - - - - - Two Objects - - - - - Object and Two Object - - - - - Two Objects and Object - - - - - Slide Layout Type Enumeration ( Custom ) - - - - - Section Header - - - - - Two Text and Two Objects - - - - - Title, Object, and Caption - - - - - Picture and Caption - - - - - - - - - Common slide data for slide layouts - - - - - - Slide Transition for a Slide Layout - - - - - Slide Timing Information for a Slide Layout - - - - - Header/Footer information for a slide layout - - - - - - - - Matching Name - - - - - Slide Layout Type - - - - - Preserve Slide Layout - - - - - Is User Drawn - - - - - - Slide Layout - - - - - - - Slide Master Title Text Style - - - - - Slide Master Body Text Style - - - - - Slide Master Other Text Style - - - - - - - - Slide Layout ID - - - - - - - - - - - - ID Tag - - - - - ID Tag - - - - - - - - Slide Layout Id - - - - - - - - - Common slide data for slide masters - - - - - - List of Slide Layouts - - - - - Slide Transition for a Slide Master - - - - - Slide Timing Information for Slide Masters - - - - - Header/Footer information for a slide master - - - - - Slide Master Text Styles - - - - - - - Preserve Slide Master - - - - - - Slide Master - - - - - - - Common slide data for handout master - - - - - - Header/Footer information for a handout master - - - - - - - - Handout Master - - - - - - - Common Slide Data - - - - - - Header/Footer Information for a Notes Master - - - - - Notes Text Style - - - - - - - - Notes Master - - - - - - - Common slide data for notes slides - - - - - - - - - - Notes Slide - - - - - - - - - Server's Slide File ID - - - - - Server's Slide File's modification date/time - - - - - Client Slide Insertion date/time - - - - - - Slide Synchronization Properties - - - - - - Name - - - - - Value - - - - - - - - Programmable Extensibility Tag - - - - - - - Programmable Tab List - - - - - Splitter Bar State - - - - - Min - - - - - Restored - - - - - Max - - - - - - - List of View Types - - - - - Normal Slide View - - - - - Slide Master View - - - - - Notes View - - - - - Handout View - - - - - Notes Master View - - - - - Outline View - - - - - Slide Sorter View - - - - - Slide Thumbnail View - - - - - - - - Normal View Dimension Size - - - - - Auto Adjust Normal View - - - - - - - - Normal View Restored Left Properties - - - - - Normal View Restored Top Properties - - - - - - - Show Outline Icons in Normal View - - - - - Snap Vertical Splitter - - - - - State of the Vertical Splitter Bar - - - - - State of the Horizontal Splitter Bar - - - - - Prefer Single View - - - - - - - - View Scale - - - - - View Origin - - - - - - Variable Scale - - - - - - - - Base properties for Notes View - - - - - - - - - Relationship Identifier - - - - - Collapsed - - - - - - - - Presentation Slide - - - - - - - - - Common View Properties - - - - - List of Presentation Slides - - - - - - - - - - Base properties for Slide Sorter View - - - - - - - Show Formatting - - - - - - - Guide Orientation - - - - - Guide Position - - - - - - - - A Guide - - - - - - - - - Base properties for Slide View - - - - - List of Guides - - - - - - Snap Objects to Grid - - - - - Snap Objects to Objects - - - - - Show Guides in View - - - - - - - - - - - - - - Common Slide View Properties - - - - - - - - - - Normal View Properties - - - - - Slide View Properties - - - - - Outline View Properties - - - - - Notes Text View Properties - - - - - Slide Sorter View Properties - - - - - Notes View Properties - - - - - Grid Spacing - - - - - - - Last View - - - - - Show Comments - - - - - - Presentation-wide View Properties - - + xmlns="http://purl.oclc.org/ooxml/presentationml/main" + xmlns:p="http://purl.oclc.org/ooxml/presentationml/main" + xmlns:a="http://purl.oclc.org/ooxml/drawingml/main" + xmlns:r="http://purl.oclc.org/ooxml/officeDocument/relationships" + xmlns:s="http://purl.oclc.org/ooxml/officeDocument/sharedTypes" elementFormDefault="qualified" + targetNamespace="http://purl.oclc.org/ooxml/presentationml/main"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-additionalCharacteristics.xsd b/tests/resources/schema/ooxml/shared-additionalCharacteristics.xsd index f058607ddf..05c0d69355 100644 --- a/tests/resources/schema/ooxml/shared-additionalCharacteristics.xsd +++ b/tests/resources/schema/ooxml/shared-additionalCharacteristics.xsd @@ -1,74 +1,28 @@ - + - - - - - Single Characteristic - - - - - - - - Name of Characteristic - - - - - Relationship of Value to Name - - - - - Characteristic Value - - - - - Characteristic Grammar - - - - - - Characteristic Relationship Types - - - - - Greater Than or Equal to - - - - - Less Than or Equal To - - - - - Greater Than - - - - - Less Than - - - - - Equal To - - - - - - - Set of Additional Characteristics - - + xmlns="http://purl.oclc.org/ooxml/officeDocument/characteristics" + targetNamespace="http://purl.oclc.org/ooxml/officeDocument/characteristics" + elementFormDefault="qualified"> + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-bibliography.xsd b/tests/resources/schema/ooxml/shared-bibliography.xsd index bc0ab17727..9617535233 100644 --- a/tests/resources/schema/ooxml/shared-bibliography.xsd +++ b/tests/resources/schema/ooxml/shared-bibliography.xsd @@ -1,531 +1,144 @@ - - - - - - Bibliographic Data Source Types - - - - - Article in a Periodical - - - - - Book - - - - - Book Section - - - - - Journal Article - - - - - Conference Proceedings - - - - - Reporter - - - - - Sound Recording - - - - - Performance - - - - - Art - - - - - Document from Internet Site - - - - - Internet Site - - - - - Film - - - - - Interview - - - - - Patent - - - - - Electronic Source - - - - - Case - - - - - Miscellaneous - - - - - - - - - Person - - - - - - - - - Person's Last, or Family, Name - - - - - Person's First, or Given, Name - - - - - Person's Middle, or Other, Name - - - - - - - - - Name List - - - - - - - - - - - Corporate Author - - - - - - - - - - - Artist - - - - - Author - - - - - Book Author - - - - - Compiler - - - - - Composer - - - - - Conductor - - - - - Counsel - - - - - Director - - - - - Editor - - - - - Interviewee - - - - - Interviewer - - - - - Inventor - - - - - Performer - - - - - Producer Name - - - - - Translator - - - - - Writer - - - - - - - - - - - Abbreviated Case Number - - - - - Album Title - - - - - Contributors List - - - - - Book Title - - - - - Broadcaster - - - - - Broadcast Title - - - - - Case Number - - - - - Chapter Number - - - - - City - - - - - Comments - - - - - Conference or Proceedings Name - - - - - Country or Region - - - - - Court - - - - - Day - - - - - Day Accessed - - - - - Department - - - - - Distributor - - - - - Editor - - - - - GUID - - - - - Institution - - - - - Internet Site Title - - - - - Issue - - - - - Journal Name - - - - - Locale ID - - - - - Medium - - - - - Month - - - - - Month Accessed - - - - - Number of Volumes - - - - - Pages - - - - - Patent Number - - - - - Periodical Title - - - - - Production Company - - - - - Publication Title - - - - - Publisher - - - - - Recording Number - - - - - Reference Order - - - - - Reporter - - - - - Source Type - - - - - Short Title - - - - - Standard Number - - - - - State or Province - - - - - Station - - - - - Tag - - - - - Theater - - - - - Thesis Type - - - - - Title - - - - - Patent Type - - - - - URL - - - - - Version - - - - - Volume - - - - - Year - - - - - Year Accessed - - - - - - - - Sources - - - - - - - Source - - - - - - Selected Style - - - - - Documentation Style Name - - - - - Uniform Resource Identifier - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-commonSimpleTypes.xsd b/tests/resources/schema/ooxml/shared-commonSimpleTypes.xsd index dc70724447..d34d1a8cb0 100644 --- a/tests/resources/schema/ooxml/shared-commonSimpleTypes.xsd +++ b/tests/resources/schema/ooxml/shared-commonSimpleTypes.xsd @@ -1,437 +1,125 @@ - - - - - Language Reference - - - - - - Hexadecimal Color Value - - - - - - - - Panose-1 Number - - - - - - - - Calendar Types - - - - - Gregorian - - - - - Gregorian English Calendar - - - - - Gregorian Middle East French Calendar - - - - - Gregorian Arabic Calendar - - - - - Hijri - - - - - Hebrew - - - - - Taiwan - - - - - Japanese Emperor Era - - - - - Thai - - - - - Korean Tangun Era - - - - - Saka Era - - - - - Gregorian Transliterated English - - - - - Gregorian Transliterated French - - - - - No Calendar Type - - - - - - - Cryptographic Algorithm Classes - - - - - Hashing - - - - - Custom Algorithm - - - - - - - Cryptographic Provider Types - - - - - AES Provider - - - - - Any Provider - - - - - Custom Provider - - - - - - - Cryptographic Algorithm Types - - - - - Any Predefined Type - - - - - Custom Algorithm - - - - - - - Color Type - - - - - - 128-Bit GUID - - - - - - - - On/Off Value - - - - - - - - - - - - - String - - - - - - Boolean Value - - - - - True - - - - - False - - - - - True - - - - - False - - - - - - - Boolean Value with Blank [False] State - - - - - Logical True - - - - - Logical False - - - - - Logical True - - - - - Logical False - - - - - Blank – Logical False - - - - - Logical True - - - - - Logical False - - - - - - - Unsigned Decimal Number Value - - - - - - Measurement in Twentieths of a Point - - - - - - Vertical Positioning Location - - - - - Regular Vertical Positioning - - - - - Superscript - - - - - Subscript - - - - - - - Escaped String - - - - - - Horizontal Alignment Location - - - - - Left Aligned Horizontally - - - - - Centered Horizontally - - - - - Right Aligned Horizontally - - - - - Inside - - - - - Outside - - - - - - - Vertical Alignment Location - - - - - In line With Text - - - - - Top - - - - - Centered Vertically - - - - - Bottom - - - - - Inside Anchor Extents - - - - - Outside Anchor Extents - - - - - - - Document Conformance Class Value - - - - - Office Open XML Strict - - - - - Office Open XML Transitional - - - - - - - Universal Measurement - - - - - - - - Positive Universal Measurement - - - - - - - - Percentage Value with Sign - - - - - - - - Fixed Percentage Value with Sign - - - - - - - - Positive Percentage Value with Sign - - - - - - - - Positive Fixed Percentage Value with Sign - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-customXmlDataProperties.xsd b/tests/resources/schema/ooxml/shared-customXmlDataProperties.xsd index 5b757ce78d..70a95139a3 100644 --- a/tests/resources/schema/ooxml/shared-customXmlDataProperties.xsd +++ b/tests/resources/schema/ooxml/shared-customXmlDataProperties.xsd @@ -1,44 +1,25 @@ - + - - - - - Target Namespace of Associated XML Schema - - - - - - - - Associated XML Schema - - - - - - - - - Set of Associated XML Schemas - - - - - - Custom XML Data ID - - - - - - Custom XML Data Properties - - + xmlns="http://purl.oclc.org/ooxml/officeDocument/customXml" + xmlns:s="http://purl.oclc.org/ooxml/officeDocument/sharedTypes" + targetNamespace="http://purl.oclc.org/ooxml/officeDocument/customXml" + elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all"> + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-customXmlSchemaProperties.xsd b/tests/resources/schema/ooxml/shared-customXmlSchemaProperties.xsd index 9f7f4e513b..fed636b27d 100644 --- a/tests/resources/schema/ooxml/shared-customXmlSchemaProperties.xsd +++ b/tests/resources/schema/ooxml/shared-customXmlSchemaProperties.xsd @@ -1,42 +1,18 @@ - + - - - - Custom XML Schema Namespace - - - - - Supplementary XML File Location - - - - - Custom XML Schema Location - - - - - Schema Language - - - - - - - - Custom XML Schema Reference - - - - - - - Embedded Custom XML Schema Supplementary Data - - + xmlns="http://purl.oclc.org/ooxml/schemaLibrary/main" + targetNamespace="http://purl.oclc.org/ooxml/schemaLibrary/main" attributeFormDefault="qualified" + elementFormDefault="qualified"> + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-documentPropertiesCustom.xsd b/tests/resources/schema/ooxml/shared-documentPropertiesCustom.xsd index 2a5789823d..897ccfab8f 100644 --- a/tests/resources/schema/ooxml/shared-documentPropertiesCustom.xsd +++ b/tests/resources/schema/ooxml/shared-documentPropertiesCustom.xsd @@ -1,215 +1,59 @@ - - - - - - - Custom File Properties - - - - - - - Custom File Property - - - - - - - - - Vector - - - - - Array - - - - - Binary Blob - - - - - Binary Blob Object - - - - - Empty - - - - - Null - - - - - 1-Byte Signed Integer - - - - - 2-Byte Signed Integer - - - - - 4-Byte Signed Integer - - - - - 8-Byte Signed Integer - - - - - Integer - - - - - 1-Byte Unsigned Integer - - - - - 2-Byte Unsigned Integer - - - - - 4-Byte Unsigned Integer - - - - - 8-Byte Unsigned Integer - - - - - Unsigned Integer - - - - - 4-Byte Real Number - - - - - 8-Byte Real Number - - - - - Decimal - - - - - LPSTR - - - - - LPWSTR - - - - - Basic String - - - - - Date and Time - - - - - File Time - - - - - Boolean - - - - - Currency - - - - - Error Status Code - - - - - Binary Stream - - - - - Binary Stream Object - - - - - Binary Storage - - - - - Binary Storage Object - - - - - Binary Versioned Stream - - - - - Class ID - - - - - - Format ID - - - - - Property ID - - - - - Custom File Property Name - - - - - Bookmark Link Target - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-documentPropertiesExtended.xsd b/tests/resources/schema/ooxml/shared-documentPropertiesExtended.xsd index d15b5eb6b6..4ef88e7ca0 100644 --- a/tests/resources/schema/ooxml/shared-documentPropertiesExtended.xsd +++ b/tests/resources/schema/ooxml/shared-documentPropertiesExtended.xsd @@ -1,180 +1,56 @@ - - - - - - Application Specific File Properties - - - - - - - Name of Document Template - - - - - Name of Manager - - - - - Name of Company - - - - - Total Number of Pages - - - - - Word Count - - - - - Total Number of Characters - - - - - Intended Format of Presentation - - - - - Number of Lines - - - - - Total Number of Paragraphs - - - - - Slides Metadata Element - - - - - Number of Slides Containing Notes - - - - - Total Edit Time Metadata Element - - - - - Number of Hidden Slides - - - - - Total Number of Multimedia Clips - - - - - Thumbnail Display Mode - - - - - Heading Pairs - - - - - Part Titles - - - - - Links Up-to-Date - - - - - Number of Characters (With Spaces) - - - - - Shared Document - - - - - Relative Hyperlink Base - - - - - Hyperlink List - - - - - Hyperlinks Changed - - - - - Digital Signature - - - - - Application Name - - - - - Application Version - - - - - Document Security - - - - - - - - - Vector - - - - - - - - - Vector - - - - - - - - - Binary Blob - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-documentPropertiesVariantTypes.xsd b/tests/resources/schema/ooxml/shared-documentPropertiesVariantTypes.xsd index aad02243af..fad1992741 100644 --- a/tests/resources/schema/ooxml/shared-documentPropertiesVariantTypes.xsd +++ b/tests/resources/schema/ooxml/shared-documentPropertiesVariantTypes.xsd @@ -1,799 +1,195 @@ - - - - - - Vector Base Type Simple Type - - - - - Variant Base Type - - - - - Vector Base Type Enumeration Value - - - - - 2-Byte Signed Integer Base Type - - - - - 4-Byte Signed Integer Base Type - - - - - 8-Byte Signed Integer Base Type - - - - - 1-Byte Unsigned Integer Base Type - - - - - 2-Byte Unisigned Integer Base Type - - - - - 4-Byte Unsigned Integer Base Type - - - - - 8-Byte Unsigned Integer Base Type - - - - - 4-Byte Real Number Base Type - - - - - 8-Byte Real Number Base Type - - - - - LPSTR Base Type - - - - - LPWSTR Base Type - - - - - Basic String Base Type - - - - - Date and Time Base Type - - - - - File Time Base Type - - - - - Boolean Base Type - - - - - Currency Base Type - - - - - Error Status Code Base Type - - - - - Class ID Base Type - - - - - - - Array Base Type Simple Type - - - - - Variant Base Type - - - - - 1-Byte Signed Integer Base Type - - - - - 2-Byte Signed Integer Base Type - - - - - 4-Byte Signed Integer Base Type - - - - - Integer Base Type - - - - - 1-Byte Unsigned Integer Base Type - - - - - 2-Byte Unsigned Integer Base Type - - - - - 4-Byte Unsigned Integer Base Type - - - - - Unsigned Integer Base Type - - - - - 4-Byte Real Number Base Type - - - - - 8-Byte Real Number Base Type - - - - - Decimal Base Type - - - - - Basic String Base Type - - - - - Date and Time Base Type - - - - - Boolean Base Type - - - - - Curency Base Type - - - - - Error Status Code Base Type - - - - - - - Currency Simple Type - - - - - - - - Error Status Code Simple Type - - - - - - - - - - - - Variant - - - - - 1-Byte Signed Integer - - - - - 2-Byte Signed Integer - - - - - 4-Byte Signed Integer - - - - - 8-Byte Signed Integer - - - - - 1-Byte Unsigned Integer - - - - - 2-Byte Unsigned Integer - - - - - 4-Byte Unsigned Integer - - - - - 8-Byte Unsigned Integer - - - - - 4-Byte Real Number - - - - - 8-Byte Real Number - - - - - LPSTR - - - - - LPWSTR - - - - - Basic String - - - - - Date and Time - - - - - File Time - - - - - Boolean - - - - - Currency - - - - - Error Status Code - - - - - Class ID - - - - - - Vector Base Type - - - - - Vector Size - - - - - - - - Variant - - - - - 1-Byte Signed Integer - - - - - 2-Byte Signed Integer - - - - - 4-Byte Signed Integer - - - - - Integer - - - - - 1-Byte Unsigned Integer - - - - - 2-Byte Unsigned Integer - - - - - 4-Byte Unsigned Integer - - - - - Unsigned Integer - - - - - 4-Byte Real Number - - - - - 8-Byte Real Number - - - - - Decimal - - - - - Basic String - - - - - Date and Time - - - - - Boolean - - - - - Error Status Code - - - - - Currency - - - - - - Array Lower Bounds Attribute - - - - - Array Upper Bounds Attribute - - - - - Array Base Type - - - - - - - - Variant - - - - - Vector - - - - - Array - - - - - Binary Blob - - - - - Binary Blob Object - - - - - Empty - - - - - Null - - - - - 1-Byte Signed Integer - - - - - 2-Byte Signed Integer - - - - - 4-Byte Signed Integer - - - - - 8-Byte Signed Integer - - - - - Integer - - - - - 1-Byte Unsigned Integer - - - - - 2-Byte Unsigned Integer - - - - - 4-Byte Unsigned Integer - - - - - 8-Byte Unsigned Integer - - - - - Unsigned Integer - - - - - 4-Byte Real Number - - - - - 8-Byte Real Number - - - - - Decimal - - - - - LPSTR - - - - - LPWSTR - - - - - Basic String - - - - - Date and Time - - - - - File Time - - - - - Boolean - - - - - Currency - - - - - Error Status Code - - - - - Binary Stream - - - - - Binary Stream Object - - - - - Binary Storage - - - - - Binary Storage Object - - - - - Binary Versioned Stream - - - - - Class ID - - - - - - - - - - VSTREAM Version Attribute - - - - - - - - Variant - - - - - Vector - - - - - Array - - - - - Binary Blob - - - - - Binary Blob Object - - - - - Empty - - - - - Null - - - - - 1-Byte Signed Integer - - - - - 2-Byte Signed Integer - - - - - 4-Byte Signed Integer - - - - - 8-Byte Signed Integer - - - - - Integer - - - - - 1-Byte Unsigned Integer - - - - - 2-Byte Unsigned Integer - - - - - 4-Byte Unsigned Integer - - - - - 8-Byte Unsigned Integer - - - - - Unsigned Integer - - - - - 4-Byte Real Number - - - - - 8-Byte Real Number - - - - - Decimal - - - - - LPSTR - - - - - LPWSTR - - - - - Basic String - - - - - Date and Time - - - - - File Time - - - - - Boolean - - - - - Currency - - - - - Error Status Code - - - - - Binary Stream - - - - - Binary Stream Object - - - - - Binary Storage - - - - - Binary Storage Object - - - - - Binary Versioned Stream - - - - - Class ID - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-math.xsd b/tests/resources/schema/ooxml/shared-math.xsd index bdc6b17673..6f5e6d09aa 100644 --- a/tests/resources/schema/ooxml/shared-math.xsd +++ b/tests/resources/schema/ooxml/shared-math.xsd @@ -1,1467 +1,582 @@ - + - - - - - - - Integer value (1 to 255) - - - - - - - - - - Value - - - - - - Integer value (-2 to 2) - - - - - - - - - - Value - - - - - - Spacing Rule - - - - - - - - - - Value - - - - - - Unsigned integer. - - - - - - - Value - - - - - - Character - - - - - - - - - value - - - - - - - value - - - - - - - value - - - - - - - Value - - - - - - - Value - - - - - - Shape (Delimiters) - - - - - Centered (Delimiters) - - - - - Match - - - - - - - - Value - - - - - - Fraction Type - - - - - Bar Fraction - - - - - Skewed - - - - - Linear Fraction - - - - - No-Bar Fraction (Stack) - - - - - - - - Value - - - - - - Limit Location - - - - - Under-Over location - - - - - Subscript-Superscript location - - - - - - - - Value - - - - - - Top-Bottom - - - - - Top - - - - - Bottom Alignment - - - - - - - - Value - - - - - - Script - - - - - Roman - - - - - Script - - - - - Fraktur - - - - - double-struck - - - - - Sans-Serif - - - - - Monospace - - - - - - - - Value - - - - - - Style - - - - - Plain - - - - - Bold - - - - - Italic - - - - - Bold-Italic - - - - - - - - Value - - - - - - - Index of Operator to Align To - - - - - - - - Script - - - - - style - - - - - - - - - Literal - - - - - - Normal Text - - - - - - - - - Break - - - - - Align - - - - - - - - - - Content Contains Significant Whitespace - - - - - - - - - - Run Properties - - - - - - - - Text - - - - - - - - - - - - - - - Character - - - - - Control Properties - - - - - - - - - Accent Properties - - - - - Base - - - - - - - - - Position - - - - - - - - - - Bar Properties - - - - - Base - - - - - - - - - Operator Emulator - - - - - No Break - - - - - Differential - - - - - Break - - - - - Alignment - - - - - - - - - - Box Properties - - - - - Base - - - - - - - - - Hide Top Edge - - - - - Hide Bottom Edge - - - - - Hide Left Edge - - - - - Hide Right Edge - - - - - Border Box Strikethrough Horizontal - - - - - Border Box Strikethrough Vertical - - - - - Border Box Strikethrough Bottom-Left to Top-Right - - - - - Border Box Strikethrough Top-Left to Bottom-Right - - - - - - - - - - Border-Box Properties - - - - - Base - - - - - - - - - Delimiter Beginning Character - - - - - Delimiter Separator Character - - - - - Delimiter Ending Character - - - - - Delimiter Grow - - - - - Shape (Delimiters) - - - - - - - - - - Delimiter Properties - - - - - Base - - - - - - - - - Equation Array Base Justification - - - - - Maximum Distribution - - - - - Object Distribution - - - - - Row Spacing Rule - - - - - Row Spacing (Array) - - - - - - - - - - Array Properties - - - - - Element - - - - - - - - - Fraction type - - - - - - - - - - Fraction Properties - - - - - Numerator - - - - - Denominator - - - - - - - - - - - - - - Function Properties - - - - - Function Name - - - - - Element (Argument) - - - - - - - - - Group Character (Grouping Character) - - - - - Position (Group Character) - - - - - Vertical Justification - - - - - - - - - - Group-Character Properties - - - - - Base - - - - - - - - - - - - - - Lower-Limit Properties - - - - - Base - - - - - Limit - - - - - - - - - - - - - - Upper-Limit Properties - - - - - Base - - - - - Limit (Upper) - - - - - - - - - Matrix Column Count - - - - - Matrix Column Justification - - - - - - - - - Matrix Column Properties - - - - - - - - - Matrix Column - - - - - - - - - Matrix Base Justification - - - - - Hide Placeholders (Matrix) - - - - - Row Spacing Rule - - - - - Matrix Column Gap Rule - - - - - Row Spacing (Matrix) - - - - - Minimum Matrix Column Width - - - - - Matrix Column Gap - - - - - Matrix Columns - - - - - - - - - - Element - - - - - - - - - Matrix Properties - - - - - Matrix Row - - - - - - - - - n-ary Operator Character - - - - - n-ary Limit Location - - - - - n-ary Grow - - - - - Hide Subscript (n-ary) - - - - - Hide Superscript (n-ary) - - - - - - - - - - n-ary Properties - - - - - Lower limit (n-ary) - - - - - Upper limit (n-ary) - - - - - Base (Argument) - - - - - - - - - Phantom Show - - - - - Phantom Zero Width - - - - - Phantom Zero Ascent - - - - - Phantom Zero Descent - - - - - Transparent (Phantom) - - - - - - - - - - Phantom Properties - - - - - Base - - - - - - - - - Hide Degree - - - - - - - - - - Radical Properties - - - - - Degree - - - - - Base - - - - - - - - - - - - - - Pre-Sub-Superscript Properties - - - - - Subscript (Pre-Sub-Superscript) - - - - - Superscript(Pre-Sub-Superscript function) - - - - - Base - - - - - - - - - - - - - - Subscript Properties - - - - - Base - - - - - Subscript (Subscript function) - - - - - - - - - Align Scripts - - - - - - - - - - Sub-Superscript Properties - - - - - Base - - - - - Subscript (Sub-Superscript) - - - - - Superscript (Sub-Superscript function) - - - - - - - - - - - - - - Superscript Properties - - - - - Base - - - - - Superscript (Superscript object) - - - - - - - - - Accent - - - - - Bar - - - - - Box Object - - - - - Border-Box Object - - - - - Delimiter Object - - - - - Array Object - - - - - Fraction Object - - - - - Function Apply Object - - - - - Group-Character Object - - - - - Lower-Limit Object - - - - - Upper-Limit Object - - - - - Matrix Object - - - - - n-ary Operator Object - - - - - Phantom Object - - - - - Radical Object - - - - - Pre-Sub-Superscript Object - - - - - Subscript Object - - - - - Sub-Superscript Object - - - - - Superscript Object - - - - - Run - - - - - - - - - - - - - - - Argument Size - - - - - - - - - Argument Properties - - - - - - - - - Justification - - - - - Left Justification - - - - - Right - - - - - Center (Text) - - - - - Centered as Group (Text) - - - - - - - - Value - - - - - - - - Justification - - - - - - - - Value - - - - - - Break Binary Operators - - - - - Before - - - - - After - - - - - Repeat - - - - - - - - Value - - - - - - Break on Binary Subtraction - - - - - Minus Minus - - - - - Minus Plus - - - - - Plus Minus - - - - - - - - Value - - - - - - - - Math Font - - - - - Break on Binary Operators - - - - - Break on Binary Subtraction - - - - - Small Fraction - - - - - Use Display Math Defaults - - - - - Left Margin - - - - - Right Margin - - - - - Default Justification - - - - - Pre-Paragraph Spacing - - - - - Post-Paragraph Spacing - - - - - Inter-Equation Spacing - - - - - Intra-Equation Spacing - - - - - - Wrap Indent - - - - - Wrap Right - - - - - - Integral Limit Locations - - - - - n-ary Limit Location - - - - - - - Math Properties - - - - - - - Office Math Paragraph Properties - - - - - Office Math - - - - - - - - - - - - Office Math Paragraph - - - + xmlns="http://purl.oclc.org/ooxml/officeDocument/math" + xmlns:m="http://purl.oclc.org/ooxml/officeDocument/math" + xmlns:w="http://purl.oclc.org/ooxml/wordprocessingml/main" + xmlns:s="http://purl.oclc.org/ooxml/officeDocument/sharedTypes" elementFormDefault="qualified" + attributeFormDefault="qualified" blockDefault="#all" + targetNamespace="http://purl.oclc.org/ooxml/officeDocument/math"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/shared-relationshipReference.xsd b/tests/resources/schema/ooxml/shared-relationshipReference.xsd index e05a8b17d8..a6af5ff28b 100644 --- a/tests/resources/schema/ooxml/shared-relationshipReference.xsd +++ b/tests/resources/schema/ooxml/shared-relationshipReference.xsd @@ -1,38 +1,23 @@ - - - - - Explicit Relationship ID - - - - - - Relationship ID - - - - - Embedded Image Relationship Target - - - - - - - - - - - - Hyperlink Target Relationship ID - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/sml.xsd b/tests/resources/schema/ooxml/sml.xsd index a95f9448ad..4346d37b9f 100644 --- a/tests/resources/schema/ooxml/sml.xsd +++ b/tests/resources/schema/ooxml/sml.xsd @@ -1,15435 +1,4404 @@ - + - - - - - - - - AutoFilter Column - - - - - Sort State for Auto Filter - - - - - - - Cell or Range Reference - - - - - - - - Filter Criteria - - - - - Top 10 - - - - - Custom Filters - - - - - Dynamic Filter - - - - - Color Filter Criteria - - - - - Icon Filter - - - - - - - Filter Column Data - - - - - Hidden AutoFilter Button - - - - - Show Filter Button - - - - - - - - Filter - - - - - Date Grouping - - - - - - Filter by Blank - - - - - Calendar Type - - - - - - - Filter Value - - - - - - - - Custom Filter Criteria - - - - - - And - - - - - - - Filter Comparison Operator - - - - - Top or Bottom Value - - - - - - - Top - - - - - Filter by Percent - - - - - Top or Bottom Value - - - - - Filter Value - - - - - - - Differential Format Record Id - - - - - Filter By Cell Color - - - - - - - Icon Set - - - - - Icon Id - - - - - - Filter Operator - - - - - Equal - - - - - Less Than - - - - - Less Than Or Equal - - - - - Not Equal - - - - - Greater Than Or Equal - - - - - Greater Than - - - - - - - - Dynamic filter type - - - - - Value - - - - - ISO Value - - - - - Max Value - - - - - Max ISO Value - - - - - - Dynamic Filter - - - - - Null - - - - - Above Average - - - - - Below Average - - - - - Tomorrow - - - - - Today - - - - - Yesterday - - - - - Next Week - - - - - This Week - - - - - Last Week - - - - - Next Month - - - - - This Month - - - - - Last Month - - - - - Next Quarter - - - - - This Quarter - - - - - Last Quarter - - - - - Next Year - - - - - This Year - - - - - Last Year - - - - - Year To Date - - - - - 1st Quarter - - - - - 2nd Quarter - - - - - 3rd Quarter - - - - - 4th Quarter - - - - - 1st Month - - - - - 2nd Month - - - - - 3rd Month - - - - - 4th Month - - - - - 5th Month - - - - - 6th Month - - - - - 7th Month - - - - - 8th Month - - - - - 9th Month - - - - - 10th Month - - - - - 11th Month - - - - - 12th Month - - - - - - - Icon Set Type - - - - - 3 Arrows - - - - - 3 Arrows (Gray) - - - - - 3 Flags - - - - - 3 Traffic Lights - - - - - 3 Traffic Lights Black - - - - - 3 Signs - - - - - 3 Symbols Circled - - - - - 3 Symbols - - - - - 4 Arrows - - - - - 4 Arrows (Gray) - - - - - 4 Red To Black - - - - - 4 Ratings - - - - - 4 Traffic Lights - - - - - 5 Arrows - - - - - 5 Arrows (Gray) - - - - - 5 Ratings Icon Set - - - - - 5 Quarters - - - - - - - - - Sort Condition - - - - - - - Sort by Columns - - - - - Case Sensitive - - - - - Sort Method - - - - - Sort Range - - - - - - - Descending - - - - - Sort By - - - - - Reference - - - - - Custom List - - - - - Format Id - - - - - Icon Set - - - - - Icon Id - - - - - - Sort By - - - - - Value - - - - - Sort by Cell Color - - - - - Sort by Font Color - - - - - Sort by Icon - - - - - - - Sort Method - - - - - Sort by Stroke - - - - - PinYin Sort - - - - - None - - - - - - - - Year - - - - - Month - - - - - Day - - - - - Hour - - - - - Minute - - - - - Second - - - - - Date Time Grouping - - - - - - Date Time Grouping - - - - - Group by Year - - - - - Month - - - - - Day - - - - - Group by Hour - - - - - Group by Minute - - - - - Second - - - - - - - Cell Reference - - - - - - Cell References - - - - - - Single Cell Reference - - - - - - Reference Sequence - - - - - - Formula - - - - - - Hex Unsigned Integer - - - - - - - - Unsigned Short Hex - - - - - - - - - Value - - - - - - - - - - URI - - - - - - - - - - - Move With Cells - - - - - Size With Cells - - - - - Z-Order - - - - - - - - Extension - - - - - - - - - - - - Calculation Chain Info - - - - - - - Cell - - - - - - - - - Cell Reference - - - - - Sheet Id - - - - - Child Chain - - - - - New Dependency Level - - - - - New Thread - - - - - Array - - - - - - Comments - - - - - - - Authors - - - - - List of Comments - - - - - - - - - - Author - - - - - - - - - Comment - - - - - - - - - Comment Text - - - - - Comment Properties - - - - - - Cell Reference - - - - - Author Id - - - - - Unique Identifier for Comment - - - - - Shape ID - - - - - - - - - - Locked Flag - - - - - Default Size Flag - - - - - Print Flag - - - - - Disabled Flag - - - - - UI Object Flag - - - - - Automatic Fill Flag - - - - - Automatic Line Flag - - - - - Alternative Text - - - - - Text Horizontal Alignment - - - - - ext Vertical Alignment - - - - - Text Lock Flag - - - - - Far East Alignment Flag - - - - - Automatic Text Scaling Flag - - - - - Hidden Row Flag - - - - - Hidden Column Flag - - - - - - Comment Text Horizontal Alignment - - - - - Left Alignment - - - - - Center Alignment - - - - - Right Alignment - - - - - Justify Alignment - - - - - Distributed Alignment - - - - - - - Comment Text Vertical Alignment - - - - - Top Alignment - - - - - Center Alignment - - - - - Bottom Alignment - - - - - Justify Alignment - - - - - Distributed Alignment - - - - - - - XML Mapping - - - - - - - XML Schema - - - - - XML Mapping Properties - - - - - - Prefix Mappings for XPath Expressions - - - - - - - - - - Schema ID - - - - - Schema Reference - - - - - Schema Root Namespace - - - - - Schema Language - - - - - - - - XML Mapping - - - - - - XML Mapping ID - - - - - XML Mapping Name - - - - - Root Element Name - - - - - Schema Name - - - - - Show Validation Errors - - - - - AutoFit Table on Refresh - - - - - Append Data to Table - - - - - Preserve AutoFilter State - - - - - Preserve Cell Formatting - - - - - - - - - - Unique Identifer - - - - - Binding to External File - - - - - Reference to Connection ID - - - - - File Binding Name - - - - - XML Data Loading Behavior - - - - - - Connections - - - - - - - Connection - - - - - - - - - Database Properties - - - - - OLAP Properties - - - - - Web Query Properties - - - - - Text Import Settings - - - - - Query Parameters - - - - - Future Feature Data Storage - - - - - - Connection Id - - - - - Source Database File - - - - - Connection File - - - - - Keep Connection Open - - - - - Automatic Refresh Interval - - - - - Connection Name - - - - - Connection Description - - - - - Database Source Type - - - - - Reconnection Method - - - - - Last Refresh Version - - - - - Minimum Version Required for Refresh - - - - - Save Password - - - - - New Connection - - - - - Deleted Connection - - - - - Only Use Connection File - - - - - Background Refresh - - - - - Refresh on Open - - - - - Save Data - - - - - Reconnection Method - - - - - SSO Id - - - - - - Credentials Method - - - - - Integrated Authentication - - - - - No Credentials - - - - - Stored Credentials - - - - - Prompt Credentials - - - - - - - - Connection String - - - - - Command Text - - - - - Command Text - - - - - OLE DB Command Type - - - - - - - Local Cube - - - - - Local Cube Connection - - - - - Local Refresh - - - - - Send Locale to OLAP - - - - - Drill Through Count - - - - - OLAP Fill Formatting - - - - - OLAP Number Format - - - - - OLAP Server Font - - - - - OLAP Font Formatting - - - - - - - - Tables - - - - - - XML Source - - - - - Import XML Source Data - - - - - Parse PRE - - - - - Consecutive Delimiters - - - - - Use First Row - - - - - Created in Excel 97 - - - - - Dates as Text - - - - - Refreshed in Excel 2000 - - - - - URL - - - - - Web Post - - - - - HTML Tables Only - - - - - HTML Formatting Handling - - - - - Edit Query URL - - - - - - HTML Formatting Handling - - - - - No Formatting - - - - - Honor Rich Text - - - - - All - - - - - - - - - Parameter Properties - - - - - - Parameter Count - - - - - - - Parameter Name - - - - - SQL Data Type - - - - - Parameter Type - - - - - Refresh on Change - - - - - Parameter Prompt String - - - - - Boolean - - - - - Double - - - - - Integer - - - - - String - - - - - Cell Reference - - - - - - Parameter Type - - - - - Prompt on Refresh - - - - - Value - - - - - Parameter From Cell - - - - - - - - - No Value - - - - - Character Value - - - - - Index - - - - - - Count of Tables - - - - - - - - - Fields - - - - - - Prompt for File Name - - - - - File Type - - - - - Code Page - - - - - Character Set - - - - - First Row - - - - - Source File Name - - - - - Delimited File - - - - - Decimal Separator - - - - - Thousands Separator - - - - - Tab as Delimiter - - - - - Space is Delimiter - - - - - Comma is Delimiter - - - - - Semicolon is Delimiter - - - - - Consecutive Delimiters - - - - - Qualifier - - - - - Custom Delimiter - - - - - - File Type - - - - - Macintosh - - - - - Windows (ANSI) - - - - - DOS - - - - - Linux - - - - - Other Non-Specified Values - - - - - - - Qualifier - - - - - Double Quote - - - - - Single Quote - - - - - No Text Qualifier - - - - - - - - - Text Import Field Settings - - - - - - Count of Fields - - - - - - - Field Type - - - - - Position - - - - - - Text Field Datatype - - - - - General - - - - - Text - - - - - Month Day Year - - - - - Day Month Year - - - - - Year Month Day - - - - - Month Day Year - - - - - Day Year Month - - - - - Year Day Month - - - - - Skip Field - - - - - East Asian Year Month Day - - - - - - - PivotCache Definition - - - - - PivotCache Records - - - - - PivotTable Definition - - - - - - - PivotCache Source Description - - - - - PivotCache Fields - - - - - PivotCache Hierarchies - - - - - OLAP KPIs - - - - - Tuple Cache - - - - - Calculated Items - - - - - Calculated Members - - - - - OLAP Dimensions - - - - - OLAP Measure Groups - - - - - OLAP Measure Group - - - - - Future Feature Data Storage Area - - - - - - Relationship Identifier - - - - - Invalid Cache - - - - - Save Pivot Records - - - - - Refresh On Load - - - - - Optimize Cache for Memory - - - - - Enable PivotCache Refresh - - - - - Last Refreshed By - - - - - PivotCache Last Refreshed Date - - - - - PivotCache Last Refreshed Date ISO - - - - - Background Query - - - - - Missing Items Limit - - - - - PivotCache Created Version - - - - - PivotCache Last Refreshed Version - - - - - Minimum Version Required for Refresh - - - - - PivotCache Record Count - - - - - Upgrade PivotCache on Refresh - - - - - Stores Cache for OLAP Functions - - - - - Supports Subqueries - - - - - Supports Attribute Drilldown - - - - - - - - PivotCache Field - - - - - - Field Count - - - - - - - - Shared Items - - - - - Field Group Properties - - - - - Member Properties Map - - - - - Future Feature Data Storage Area - - - - - - PivotCache Field Name - - - - - PivotCache Field Caption - - - - - Property Name - - - - - Server-based Field - - - - - Unique List Retrieved - - - - - Number Format Id - - - - - Calculated Field Formula - - - - - SQL Data Type - - - - - Hierarchy - - - - - Hierarchy Level - - - - - Database Field - - - - - Member Property Count - - - - - Member Property Field - - - - - - - - Worksheet PivotCache Source - - - - - Consolidation Source - - - - - Future Feature Data Storage Area - - - - - - Cache Type - - - - - Connection Index - - - - - - PivotCache Type - - - - - Worksheet - - - - - External - - - - - Consolidation Ranges - - - - - Scenario Summary Report - - - - - - - - Reference - - - - - Named Range - - - - - Sheet Name - - - - - Relationship Id - - - - - - - - Page Item Values - - - - - Range Sets - - - - - - Auto Page - - - - - - - - Page Items - - - - - - Page Item String Count - - - - - - - - Page Item - - - - - - Page Item String Count - - - - - - - Page Item Name - - - - - - - - Range Set - - - - - - Reference and Page Item Count - - - - - - - Field Item Index Page 1 - - - - - Field Item Index Page 2 - - - - - Field Item index Page 3 - - - - - Field Item Index Page 4 - - - - - Reference - - - - - Named Range - - - - - Sheet Name - - - - - Relationship Id - - - - - - - - No Value - - - - - Numeric - - - - - Boolean - - - - - Error Value - - - - - Character Value - - - - - Date Time - - - - - - Contains Semi Mixed Data Types - - - - - Contains Non Date - - - - - Contains Date - - - - - Contains String - - - - - Contains Blank - - - - - Contains Mixed Data Types - - - - - Contains Numbers - - - - - Contains Integer - - - - - Minimum Numeric Value - - - - - Maximum Numeric Value - - - - - Minimum Date Time - - - - - Maximum Date Time Value - - - - - Shared Items Count - - - - - Long Text - - - - - - - - Tuples - - - - - Member Property Indexes - - - - - - Unused Item - - - - - Calculated Item - - - - - Caption - - - - - Member Property Count - - - - - Format Index - - - - - background Color - - - - - Foreground Color - - - - - Italic - - - - - Underline - - - - - Strikethrough - - - - - Bold - - - - - - - - OLAP Members - - - - - Member Property Index - - - - - - Value - - - - - Unused Item - - - - - Calculated Item - - - - - Caption - - - - - Member Property Count - - - - - Format Index - - - - - Background Color - - - - - Foreground Color - - - - - Italic - - - - - Underline - - - - - Strikethrough - - - - - Bold - - - - - - - - Member Property Indexes - - - - - - Value - - - - - Unused Item - - - - - Calculated Item - - - - - Caption - - - - - Member Property Count - - - - - - - - Tuples - - - - - Member Property Indexes - - - - - - Value - - - - - Unused Item - - - - - Calculated Item - - - - - Item Caption - - - - - Member Property Count - - - - - Format Index - - - - - background Color - - - - - Foreground Color - - - - - Italic - - - - - Underline - - - - - Strikethrough - - - - - Bold - - - - - - - - Tuples - - - - - Member Property Index - - - - - - Value - - - - - Unused Item - - - - - Calculated Item - - - - - Item Caption - - - - - Member Property Count - - - - - Format Index - - - - - Background Color - - - - - Foreground Color - - - - - Italic - - - - - Underline - - - - - Strikethrough - - - - - Bold - - - - - - - - Member Property Index - - - - - - Value - - - - - Unused Item - - - - - Calculated Item Value - - - - - Caption - - - - - Member Property Count - - - - - - - - Range Grouping Properties - - - - - Discrete Grouping Properties - - - - - OLAP Group Items - - - - - - Parent - - - - - Field Base - - - - - - - Source Data Set Beginning Range - - - - - Source Data Ending Range - - - - - Group By - - - - - Numeric Grouping Start Value - - - - - Numeric Grouping End Value - - - - - Date Grouping Start Value - - - - - Date Grouping End Value - - - - - Grouping Interval - - - - - - Values Group By - - - - - Group By Numeric Ranges - - - - - Seconds - - - - - Minutes - - - - - Hours - - - - - Days - - - - - Months - - - - - Quarters - - - - - Years - - - - - - - - - Element Group - - - - - - Mapping Index Count - - - - - - - - No Value - - - - - Numeric Value - - - - - Boolean - - - - - Error Value - - - - - Character Value - - - - - Date Time - - - - - - Items Created Count - - - - - - - - PivotCache Record - - - - - Future Feature Data Storage Area - - - - - - PivotCache Records Count - - - - - - - - No Value - - - - - Numeric Value - - - - - Boolean - - - - - Error Value - - - - - Character Value - - - - - Date Time - - - - - Shared Items Index - - - - - - - - - OLAP KPI - - - - - - KPI Count - - - - - - - KPI Unique Name - - - - - KPI Display Name - - - - - KPI Display Folder - - - - - KPI Measure Group Name - - - - - Parent KPI - - - - - KPI Value Unique Name - - - - - KPI Goal Unique Name - - - - - KPI Status Unique Name - - - - - KPI Trend Unique Name - - - - - KPI Weight Unique Name - - - - - Time Member KPI Unique Name - - - - - - - - PivotCache Hierarchy - - - - - - Hierarchy Count - - - - - - - - Fields Usage - - - - - OLAP Grouping Levels - - - - - Future Feature Data Storage Area - - - - - - Hierarchy Unique Name - - - - - Hierarchy Display Name - - - - - Measure Hierarchy - - - - - Set - - - - - Parent Set - - - - - KPI Icon Set - - - - - Attribute Hierarchy - - - - - Time - - - - - Key Attribute Hierarchy - - - - - Default Member Unique Name - - - - - Unique Name of 'All' - - - - - Display Name of 'All' - - - - - Dimension Unique Name - - - - - Display Folder - - - - - Measure Group Name - - - - - Measures - - - - - Levels Count - - - - - One Field - - - - - Member Value Data Type - - - - - Unbalanced - - - - - Unbalanced Group - - - - - Hidden - - - - - - - - PivotCache Field Id - - - - - - Field Count - - - - - - - Field Index - - - - - - - - OLAP Grouping Levels - - - - - - Grouping Level Count - - - - - - - - OLAP Level Groups - - - - - Future Feature Data Storage Area - - - - - - Unique Name - - - - - Grouping Level Display Name - - - - - User-Defined Group Level - - - - - Custom Roll Up - - - - - - - - OLAP Group - - - - - - Level Group Count - - - - - - - - OLAP Group Members - - - - - - Group Name - - - - - Unique Group Name - - - - - Group Caption - - - - - Parent Unique Name - - - - - Group Id - - - - - - - - OLAP Group Member - - - - - - Group Member Count - - - - - - - Group Member Unique Name - - - - - Group - - - - - - - - Entries - - - - - Sets - - - - - OLAP Query Cache - - - - - Server Formats - - - - - Future Feature Data Storage Area - - - - - - - - Culture - - - - - Format - - - - - - - - Server Format - - - - - - Format Count - - - - - - - - No Value - - - - - Numeric Value - - - - - Error Value - - - - - Character Value - - - - - - Tuple Count - - - - - - - - Tuple - - - - - - Member Name Count - - - - - - - Field Index - - - - - Hierarchy Index - - - - - Item Index - - - - - - - - OLAP Set - - - - - - Tuple Set Count - - - - - - - - Tuples - - - - - Sort By Tuple - - - - - - Number of Tuples - - - - - Maximum Rank Requested - - - - - MDX Set Definition - - - - - Set Sort Order - - - - - Query Failed - - - - - - Set Sort Order - - - - - None - - - - - Ascending - - - - - Descending - - - - - Ascending Alpha - - - - - Alphabetic Order Descending - - - - - Ascending Natural - - - - - Natural Order Descending - - - - - - - - - Query - - - - - - Cached Query Count - - - - - - - - Tuples - - - - - - MDX Query String - - - - - - - - Calculated Item - - - - - - Calculated Item Formula Count - - - - - - - - Calculated Item Location - - - - - Future Feature Data Storage Area - - - - - - Field Index - - - - - Calculated Item Formula - - - - - - - - Calculated Member - - - - - - Calculated Members Count - - - - - - - - Future Feature Data Storage Area - - - - - - Calculated Member Name - - - - - Calculated Member MDX Formula - - - - - OLAP Calculated Member Name - - - - - Hierarchy Name - - - - - Parent Name - - - - - Calculated Members Solve Order - - - - - Set - - - - - - - - PivotTable Location - - - - - PivotTable Fields - - - - - Row Fields - - - - - Row Items - - - - - Column Fields - - - - - Column Items - - - - - Page Field Items - - - - - Data Fields - - - - - PivotTable Formats - - - - - Conditional Formats - - - - - PivotChart Formats - - - - - PivotTable OLAP Hierarchies - - - - - PivotTable Style - - - - - Filters - - - - - Row OLAP Hierarchy References - - - - - Column OLAP Hierarchy References - - - - - Future Feature Data Storage Area - - - - - - Name - - - - - PivotCache Definition Id - - - - - Data On Rows - - - - - Default Data Field Position - - - - - - Data Field Header Name - - - - - Grand Totals Caption - - - - - Error Caption - - - - - Show Error - - - - - Caption for Missing Values - - - - - Show Missing - - - - - Page Header Style Name - - - - - Table Style Name - - - - - Vacated Style - - - - - PivotTable Custom String - - - - - PivotTable Last Updated Version - - - - - Minimum Refreshable Version - - - - - Asterisk Totals - - - - - Show Item Names - - - - - Allow Edit Data - - - - - Disable Field List - - - - - Show Calculated Members - - - - - Total Visual Data - - - - - Show Multiple Labels - - - - - Show Drop Down - - - - - Show Expand Collapse - - - - - Print Drill Indicators - - - - - Show Member Property ToolTips - - - - - Show ToolTips on Data - - - - - Enable PivotTable Wizard - - - - - Enable Drill Down - - - - - Enable Field Properties - - - - - Preserve Formatting - - - - - Auto Formatting - - - - - Page Wrap - - - - - Page Over Then Down - - - - - Subtotal Hidden Items - - - - - Row Grand Totals - - - - - Grand Totals On Columns - - - - - Field Print Titles - - - - - Item Print Titles - - - - - Merge Titles - - - - - Show Drop Zones - - - - - PivotCache Created Version - - - - - Indentation for Compact Axis - - - - - Show Empty Row - - - - - Show Empty Column - - - - - Show Field Headers - - - - - Compact New Fields - - - - - Outline New Fields - - - - - Outline Data Fields - - - - - Compact Data - - - - - Data Fields Published - - - - - Enable Drop Zones - - - - - Stop Immersive UI - - - - - Multiple Field Filters - - - - - Chart Format Id - - - - - Row Header Caption - - - - - Column Header Caption - - - - - Default Sort Order - - - - - MDX Subqueries Supported - - - - - Custom List AutoSort - - - - - - - Reference - - - - - First Header Row - - - - - PivotTable Data First Row - - - - - First Data Column - - - - - Rows Per Page Count - - - - - Columns Per Page - - - - - - - - PivotTable Field - - - - - - Field Count - - - - - - - - Field Items - - - - - AutoSort Scope - - - - - Future Feature Data Storage Area - - - - - - Field Name - - - - - Axis - - - - - Data Field - - - - - Custom Subtotal Caption - - - - - Show PivotField Header Drop Downs - - - - - Hidden Level - - - - - Unique Member Property - - - - - Compact - - - - - All Items Expanded - - - - - Number Format Id - - - - - Outline Items - - - - - Subtotals At Top - - - - - Drag To Row - - - - - Drag To Column - - - - - Multiple Field Filters - - - - - Drag Field to Page - - - - - Field Can Drag to Data - - - - - Drag Off - - - - - Show All Items - - - - - Insert Blank Row - - - - - Server-based Page Field - - - - - Insert Item Page Break - - - - - Auto Show - - - - - Top Auto Show - - - - - Hide New Items - - - - - Measure Filter - - - - - Inclusive Manual Filter - - - - - Items Per Page Count - - - - - Auto Sort Type - - - - - Data Source Sort - - - - - Auto Sort - - - - - Auto Show Rank By - - - - - Show Default Subtotal - - - - - Sum Subtotal - - - - - CountA - - - - - Average - - - - - Max Subtotal - - - - - Min Subtotal - - - - - Product Subtotal - - - - - Count - - - - - StdDev Subtotal - - - - - StdDevP Subtotal - - - - - Variance Subtotal - - - - - VarP Subtotal - - - - - Show Member Property in Cell - - - - - Show Member Property ToolTip - - - - - Show As Caption - - - - - Drill State - - - - - - - - Auto Sort Scope - - - - - - - - - PivotTable Field Item - - - - - - Field Count - - - - - - - Item User Caption - - - - - Item Type - - - - - Hidden - - - - - Character - - - - - Hide Details - - - - - Calculated Member - - - - - Missing - - - - - Child Items - - - - - Item Index - - - - - Expanded - - - - - Drill Across Attributes - - - - - - - - Page Field - - - - - - Page Item Count - - - - - - - - Future Feature Data Storage Area - - - - - - Field - - - - - Item Index - - - - - OLAP Hierarchy Index - - - - - Hierarchy Unique Name - - - - - Hierarchy Display Name - - - - - - - - Data Field Item - - - - - - Data Items Count - - - - - - - - Future Feature Data Storage Area - - - - - - Data Field Name - - - - - Field - - - - - Subtotal - - - - - Show Data As Display Format - - - - - 'Show Data As' Base Field - - - - - 'Show Data As' Base Setting - - - - - Number Format Id - - - - - - - - Row Items - - - - - - Items in a Row Count - - - - - - - - Column Items - - - - - - Column Item Count - - - - - - - - Row / Column Item Index - - - - - - Item Type - - - - - Repeated Items Count - - - - - Data Field Index - - - - - - - Shared Items Index - - - - - - - - Row Items - - - - - - Repeated Items Count - - - - - - - - Field - - - - - - Repeated Items Count - - - - - - - Field Index - - - - - - - - PivotTable Format - - - - - - Formats Count - - - - - - - - Pivot Table Location - - - - - Future Feature Data Storage Area - - - - - - Format Action - - - - - Format Id - - - - - - - - Conditional Formatting - - - - - - Conditional Format Count - - - - - - - - Pivot Areas - - - - - - - Conditional Formatting Scope - - - - - Conditional Formatting Rule Type - - - - - Priority - - - - - - - - Pivot Area - - - - - - Pivot Area Count - - - - - - Conditional Formatting Scope - - - - - Selection - - - - - Data Fields - - - - - Field Intersections - - - - - - - Top N Evaluation Type - - - - - Top N None - - - - - All - - - - - Row Top N - - - - - Column Top N - - - - - - - - - PivotChart Format - - - - - - Format Count - - - - - - - - Pivot Table Location Rule - - - - - - Chart Index - - - - - Pivot Format Id - - - - - Series Format - - - - - - - - OLAP Hierarchy - - - - - - OLAP Hierarchy Count - - - - - - - - OLAP Member Properties - - - - - Members - - - - - Future Feature Data Storage Area - - - - - - Outline New Levels - - - - - Multiple Field Filters - - - - - New Levels Subtotals At Top - - - - - Show In Field List - - - - - Drag To Row - - - - - Drag To Column - - - - - Drag to Page - - - - - Drag To Data - - - - - Drag Off - - - - - Inclusive Manual Filter - - - - - Hierarchy Caption - - - - - - - - Row OLAP Hierarchies - - - - - - Item Count - - - - - - - - Column OLAP Hierarchies - - - - - - Items Count - - - - - - - Hierarchy Usage - - - - - - - - OLAP Member Property - - - - - - OLAP Member Properties Count - - - - - - - OLAP Member Property Unique Name - - - - - Show Cell - - - - - Show Tooltip - - - - - Show As Caption - - - - - Name Length - - - - - Property Name Character Index - - - - - Property Name Length - - - - - Level Index - - - - - Field Index - - - - - - - - Member - - - - - - Item Count - - - - - Hierarchy Level - - - - - - - Hidden Item Name - - - - - - - - OLAP Dimension - - - - - - OLAP Dimensions Count - - - - - - - Measure - - - - - Dimension Name - - - - - Dimension Unique Name - - - - - Dimension Display Name - - - - - - - - OLAP Measure Group - - - - - - Measure Group Count - - - - - - - - OLAP Measure Group - - - - - - Measure Group Count - - - - - - - Measure Group Name - - - - - Measure Group Display Name - - - - - - - Measure Group Id - - - - - Dimension Id - - - - - - - Table Style Name - - - - - Show Row Header Formatting - - - - - Show Table Style Column Header Formatting - - - - - Show Row Stripes - - - - - Show Column Stripes - - - - - Show Last Column - - - - - - - - PivotTable Advanced Filter - - - - - - Pivot Filter Count - - - - - - - - Auto Filter - - - - - - - Field Index - - - - - Member Property Field Id - - - - - Pivot Filter Type - - - - - Evaluation Order - - - - - Pivot Filter Id - - - - - Measure Index - - - - - Measure Field Index - - - - - Pivot Filter Name - - - - - Pivot Filter Description - - - - - Label Pivot - - - - - Label Pivot Filter String Value 2 - - - - - - Show Data As - - - - - Normal Data Type - - - - - Difference - - - - - Percentage Of - - - - - Percentage Difference - - - - - Running Total - - - - - Percentage of Row - - - - - Percent of Column - - - - - Percentage of Total - - - - - Index - - - - - - - PivotItem Type - - - - - Data - - - - - Default - - - - - Sum - - - - - CountA - - - - - Average - - - - - Max - - - - - Min - - - - - Product - - - - - Count - - - - - stdDev - - - - - StdDevP - - - - - Var - - - - - VarP - - - - - Grand Total Item - - - - - Blank Pivot Item - - - - - - - PivotTable Format Types - - - - - Blank - - - - - Formatting - - - - - Drill Type - - - - - Formula Type - - - - - - - Field Sort Type - - - - - Manual Sort - - - - - Ascending - - - - - Descending - - - - - - - Pivot Filter Types - - - - - Unknown - - - - - Count - - - - - Percent - - - - - Sum - - - - - Caption Equals - - - - - Caption Not Equal - - - - - Caption Begins With - - - - - Caption Does Not Begin With - - - - - Caption Ends With - - - - - Caption Does Not End With - - - - - Caption Contains - - - - - Caption Does Not Contain - - - - - Caption Is Greater Than - - - - - Caption Is Greater Than Or Equal To - - - - - Caption Is Less Than - - - - - Caption Is Less Than Or Equal To - - - - - Caption Is Between - - - - - Caption Is Not Between - - - - - Value Equal - - - - - Value Not Equal - - - - - Value Greater Than - - - - - Value Greater Than Or Equal To - - - - - Value Less Than - - - - - Value Less Than Or Equal To - - - - - Value Between - - - - - Value Not Between - - - - - Date Equals - - - - - Date Does Not Equal - - - - - Date Older Than - - - - - Date Older Than Or Equal - - - - - Date Newer Than - - - - - Date Newer Than or Equal To - - - - - Date Between - - - - - Date Not Between - - - - - Tomorrow - - - - - Today - - - - - Yesterday - - - - - Next Week - - - - - This Week - - - - - Last Week - - - - - Next Month - - - - - This Month - - - - - Last Month - - - - - Next Quarter - - - - - This Quarter - - - - - Last Quarter - - - - - Next Year - - - - - This Year - - - - - Last Year - - - - - Year-To-Date - - - - - First Quarter - - - - - Second Quarter - - - - - Third Quarter - - - - - Fourth Quarter - - - - - January - - - - - Dates in February - - - - - Dates in March - - - - - Dates in April - - - - - Dates in May - - - - - Dates in June - - - - - Dates in July - - - - - Dates in August - - - - - Dates in September - - - - - Dates in October - - - - - Dates in November - - - - - Dates in December - - - - - - - - - References - - - - - Future Feature Data Storage Area - - - - - - Field Index - - - - - Rule Type - - - - - Data Only - - - - - Labels Only - - - - - Include Row Grand Total - - - - - Include Column Grand Total - - - - - Cache Index - - - - - Outline - - - - - Offset Reference - - - - - Collapsed Levels Are Subtotals - - - - - Axis - - - - - Field Position - - - - - - Rule Type - - - - - None - - - - - Normal - - - - - Data - - - - - All - - - - - Origin - - - - - Field Button - - - - - Top End - - - - - Top Corner, Trailing Edge - - - - - - - - - Reference - - - - - - Pivot Filter Count - - - - - - - - Field Item - - - - - - - Field Index - - - - - Item Index Count - - - - - Selected - - - - - Positional Reference - - - - - Relative Reference - - - - - Include Default Filter - - - - - Include Sum Filter - - - - - Include CountA Filter - - - - - Include Average Filter - - - - - Include Maximum Filter - - - - - Include Minimum Filter - - - - - Include Product Filter - - - - - Include Count Subtotal - - - - - Include StdDev Filter - - - - - Include StdDevP Filter - - - - - Include Var Filter - - - - - Include VarP Filter - - - - - - - Shared Items Index - - - - - - PivotTable Axis - - - - - Row Axis - - - - - Column Axis - - - - - Include Count Filter - - - - - Values Axis - - - - - - - Query Table - - - - - - - QueryTable Refresh Information - - - - - Future Feature Data Storage Area - - - - - - QueryTable Name - - - - - First Row Column Titles - - - - - Row Numbers - - - - - Disable Refresh - - - - - Background Refresh - - - - - First Background Refresh - - - - - Refresh On Load - - - - - Grow Shrink Type - - - - - Fill Adjacent Formulas - - - - - Remove Data On Save - - - - - Disable Edit - - - - - Preserve Formatting On Refresh - - - - - Adjust Column Width On Refresh - - - - - Intermediate - - - - - Connection Id - - - - - - - - - Query table fields - - - - - Deleted Fields - - - - - Sort State - - - - - Future Feature Data Storage Area - - - - - - Preserve Sort & Filter Layout - - - - - Next Field Id Wrapped - - - - - Headers In Last Refresh - - - - - Minimum Refresh Version - - - - - Next field id - - - - - Columns Left - - - - - Columns Right - - - - - - - - Deleted Field - - - - - - Deleted Fields Count - - - - - - - Deleted Fields Name - - - - - - - - QueryTable Field - - - - - - Column Count - - - - - - - - Future Feature Data Storage Area - - - - - - Field Id - - - - - Name - - - - - Data Bound Column - - - - - Row Numbers - - - - - Fill This Formula On Refresh - - - - - Clipped Column - - - - - Table Column Id - - - - - - Grow Shrink Type - - - - - Insert & Delete On Refresh - - - - - Insert & Clear On Refresh - - - - - Overwrite & Clear On Refresh - - - - - - - Shared String Table - - - - - - - String Item - - - - - - - String Count - - - - - Unique String Count - - - - - - Phonetic Type - - - - - Half-Width Katakana - - - - - Full-Width Katakana - - - - - Hiragana - - - - - No Conversion - - - - - - - Phonetic Alignment Types - - - - - No Control - - - - - Left Alignment - - - - - Center Alignment - - - - - Distributed - - - - - - - - - Text - - - - - - Base Text Start Index - - - - - Base Text End Index - - - - - - - - Run Properties - - - - - Text - - - - - - - - - Font - - - - - Character Set - - - - - Font Family - - - - - Bold - - - - - Italic - - - - - Strike Through - - - - - Outline - - - - - Shadow - - - - - Condense - - - - - Extend - - - - - Text Color - - - - - Font Size - - - - - Underline - - - - - Vertical Alignment - - - - - Font Scheme - - - - - - - - - Text - - - - - Rich Text Run - - - - - Phonetic Run - - - - - Phonetic Properties - - - - - - - - Font Id - - - - - Character Type - - - - - Alignment - - - - - - Revision Headers - - - - - Revisions - - - - - - - Header - - - - - - Last Revision GUID - - - - - Last GUID - - - - - Shared Workbook - - - - - Disk Revisions - - - - - History - - - - - Track Revisions - - - - - Exclusive Mode - - - - - Revision Id - - - - - Version - - - - - Keep Change History - - - - - Protected - - - - - Preserve History - - - - - - - - Revision Row Column Insert Delete - - - - - Revision Cell Move - - - - - Revision Custom View - - - - - Revision Sheet Name - - - - - Revision Insert Sheet - - - - - Revision Cell Change - - - - - Revision Format - - - - - Revision AutoFormat - - - - - Revision Defined Name - - - - - Revision Cell Comment - - - - - Revision Query Table - - - - - Revision Merge Conflict - - - - - - - - Revision Id - - - - - Revision From Rejection - - - - - Revision Undo Rejected - - - - - - - - Sheet Id Map - - - - - Reviewed List - - - - - - - GUID - - - - - Date Time - - - - - Last Sheet Id - - - - - User Name - - - - - Relationship ID - - - - - Minimum Revision Id - - - - - Max Revision Id - - - - - - - - Sheet Id - - - - - - Sheet Count - - - - - - - Sheet Id - - - - - - - - Reviewed - - - - - - Reviewed Revisions Count - - - - - - - revision Id - - - - - - - Index - - - - - Expression - - - - - Reference 3D - - - - - Array Formula - - - - - Value Needed - - - - - Defined Name Formula - - - - - Cross Sheet Move - - - - - Range - - - - - Defined Name - - - - - Cell Reference - - - - - Sheet Id - - - - - - - - Undo - - - - - Revised Row Column - - - - - Revision Format - - - - - - - Sheet Id - - - - - End Of List - - - - - Reference - - - - - User Action - - - - - Edge Deleted - - - - - - - - Undo - - - - - Revision Cell Change - - - - - Revision Format - - - - - - - Sheet Id - - - - - Source - - - - - Destination - - - - - Source Sheet Id - - - - - - - GUID - - - - - User Action - - - - - - - - - - - Sheet Id - - - - - Old Sheet Name - - - - - New Sheet Name - - - - - - - - Sheet Id - - - - - Sheet Name - - - - - Sheet Position - - - - - - - - Old Cell Data - - - - - New Cell Data - - - - - Old Formatting Information - - - - - New Formatting Information - - - - - - - - Sheet Id - - - - - Old Formatting - - - - - Row Column Formatting Change - - - - - Style Revision - - - - - Formatting - - - - - Number Format Id - - - - - Quote Prefix - - - - - Old Quote Prefix - - - - - Phonetic Text - - - - - Old Phonetic Text - - - - - End of List Formula Update - - - - - - - - Formatting - - - - - - - Sheet Id - - - - - Row or Column Formatting Change - - - - - Style - - - - - Sequence Of References - - - - - Start index - - - - - Length - - - - - - - Sheet Id - - - - - - Reference - - - - - - - Sheet Id - - - - - Cell - - - - - GUID - - - - - User Action - - - - - Always Show Comment - - - - - Old Comment - - - - - Comment In Hidden Row - - - - - Hidden Column - - - - - Author - - - - - Original Comment Length - - - - - New Comment Length - - - - - - - - Formula - - - - - Old Formula - - - - - - - - Local Name Sheet Id - - - - - Custom View - - - - - Name - - - - - Function - - - - - Old Function - - - - - Function Group Id - - - - - Old Function Group Id - - - - - Shortcut Key - - - - - Old Short Cut Key - - - - - Named Range Hidden - - - - - Old Hidden - - - - - New Custom Menu - - - - - Old Custom Menu Text - - - - - Description - - - - - Old Description - - - - - New Help Topic - - - - - Old Help Topic - - - - - Status Bar - - - - - Old Status Bar - - - - - Name Comment - - - - - Old Name Comment - - - - - - - - Sheet Id - - - - - - - Sheet Id - - - - - QueryTable Reference - - - - - Field Id - - - - - - Row Column Action Type - - - - - Insert Row - - - - - Delete Row - - - - - Column Insert - - - - - Delete Column - - - - - - - Revision Action Types - - - - - Add - - - - - Delete - - - - - - - Formula Expression Type - - - - - Reference - - - - - Reference Is Error - - - - - Area - - - - - Area Error - - - - - Computed Area - - - - - - - User List - - - - - - - User Information - - - - - - Active User Count - - - - - - - - - - User Revisions GUID - - - - - User Name - - - - - User Id - - - - - Date Time - - - - - - Worksheet - - - - - Chart Sheet - - - - - Dialog Sheet - - - - - - - Sheet Properties - - - - - Macro Sheet Dimensions - - - - - Macro Sheet Views - - - - - Sheet Format Properties - - - - - Column Information - - - - - Sheet Data - - - - - Sheet Protection Options - - - - - AutoFilter - - - - - Sort State - - - - - Data Consolidation - - - - - Custom Sheet Views - - - - - Phonetic Properties - - - - - Conditional Formatting - - - - - Print Options - - - - - Page Margins - - - - - Page Setup Settings - - - - - Header Footer Settings - - - - - Horizontal Page Breaks (Row) - - - - - Vertical Page Breaks - - - - - Custom Properties - - - - - Drawing - - - - - Legacy Drawing Reference - - - - - Legacy Drawing Header Footer - - - - - - Background Image - - - - - Embedded Objects - - - - - Future Feature Data Storage Area - - - - - - - - - Sheet Properties - - - - - Dialog Sheet Views - - - - - Dialog Sheet Format Properties - - - - - Sheet Protection - - - - - Custom Sheet Views - - - - - Print Options - - - - - Page Margins - - - - - Page Setup Settings - - - - - Header & Footer Settings - - - - - Drawing - - - - - Legacy Drawing - - - - - Legacy Drawing Header Footer - - - - - - - Future Feature Data Storage Area - - - - - - - - - Worksheet Properties - - - - - Worksheet Dimensions - - - - - Sheet Views - - - - - Sheet Format Properties - - - - - Column Information - - - - - Sheet Data - - - - - Sheet Calculation Properties - - - - - Sheet Protection - - - - - Protected Ranges - - - - - Scenarios - - - - - AutoFilter - - - - - Sort State - - - - - Data Consolidate - - - - - Custom Sheet Views - - - - - Merge Cells - - - - - Phonetic Properties - - - - - Conditional Formatting - - - - - Data Validations - - - - - Hyperlinks - - - - - Print Options - - - - - Page Margins - - - - - Page Setup Settings - - - - - Header and Footer Settings - - - - - Horizontal Page Breaks - - - - - Vertical Page Breaks - - - - - Custom Properties - - - - - Cell Watch Items - - - - - Ignored Errors - - - - - Smart Tags - - - - - Drawing - - - - - Legacy Drawing - - - - - Legacy Drawing Header Footer - - - - - - Background Image - - - - - - Embedded Controls - - - - - Web Publishing Items - - - - - Table Parts - - - - - Future Feature Data Storage Area - - - - - - - - - Row - - - - - - - - Full Calculation On Load - - - - - - - Base Column Width - - - - - Default Column Width - - - - - Default Row Height - - - - - Custom Height - - - - - Hidden By Default - - - - - Thick Top Border - - - - - Thick Bottom Border - - - - - Maximum Outline Row - - - - - Column Outline Level - - - - - - - - Column Width & Formatting - - - - - - - - Minimum Column - - - - - Maximum Column - - - - - Column Width - - - - - Style - - - - - Hidden Columns - - - - - Best Fit Column Width - - - - - Custom Width - - - - - Show Phonetic Information - - - - - Outline Level - - - - - Collapsed - - - - - - Cell Span Type - - - - - - Cell Spans - - - - - - - - Cell - - - - - Future Feature Data Storage Area - - - - - - Row Index - - - - - Spans - - - - - Style Index - - - - - Custom Format - - - - - Row Height - - - - - Hidden - - - - - Custom Height - - - - - Outline Level - - - - - Collapsed - - - - - Thick Top Border - - - - - Thick Bottom - - - - - Show Phonetic - - - - - - - - Formula - - - - - Cell Value - - - - - Rich Text Inline - - - - - Future Feature Data Storage Area - - - - - - Reference - - - - - Style Index - - - - - Cell Data Type - - - - - Cell Metadata Index - - - - - Value Metadata Index - - - - - Show Phonetic - - - - - - Cell Type - - - - - Boolean - - - - - Date - - - - - Number - - - - - Error - - - - - Shared String - - - - - String - - - - - Inline String - - - - - - - Formula Type - - - - - Normal - - - - - Array Formula - - - - - Table Formula - - - - - Shared Formula - - - - - - - - - Sheet Tab Color - - - - - Outline Properties - - - - - Page Setup Properties - - - - - - Synch Horizontal - - - - - Synch Vertical - - - - - Synch Reference - - - - - Transition Formula Evaluation - - - - - Transition Formula Entry - - - - - Published - - - - - Code Name - - - - - Filter Mode - - - - - Enable Conditional Formatting Calculations - - - - - - - Reference - - - - - - - - Worksheet View - - - - - Future Feature Data Storage Area - - - - - - - - - View Pane - - - - - Selection - - - - - PivotTable Selection - - - - - Future Feature Data Storage Area - - - - - - Window Protection - - - - - Show Formulas - - - - - Show Grid Lines - - - - - Show Headers - - - - - Show Zero Values - - - - - Right To Left - - - - - Sheet Tab Selected - - - - - Show Ruler - - - - - Show Outline Symbols - - - - - Default Grid Color - - - - - Show White Space - - - - - View Type - - - - - Top Left Visible Cell - - - - - Color Id - - - - - Zoom Scale - - - - - Zoom Scale Normal View - - - - - Zoom Scale Page Break Preview - - - - - Zoom Scale Page Layout View - - - - - Workbook View Index - - - - - - - Horizontal Split Position - - - - - Vertical Split Position - - - - - Top Left Visible Cell - - - - - Active Pane - - - - - Split State - - - - - - - - Pivot Area - - - - - - Pane - - - - - Show Header - - - - - Label - - - - - Data Selection - - - - - Extendable - - - - - Selection Count - - - - - Axis - - - - - Dimension - - - - - Start - - - - - Minimum - - - - - Maximum - - - - - Active Row - - - - - Active Column - - - - - Previous Row - - - - - Previous Column Selection - - - - - Click Count - - - - - Relationship Id - - - - - - - Pane - - - - - Active Cell Location - - - - - Active Cell Index - - - - - Sequence of References - - - - - - Pane Types - - - - - Bottom Right Pane - - - - - Top Right Pane - - - - - Bottom Left Pane - - - - - Top Left Pane - - - - - - - - - Break - - - - - - Page Break Count - - - - - Manual Break Count - - - - - - - Id - - - - - Minimum - - - - - Maximum - - - - - Manual Page Break - - - - - Pivot-Created Page Break - - - - - - Sheet View Type - - - - - Normal View - - - - - Page Break Preview - - - - - Page Layout View - - - - - - - - Apply Styles in Outline - - - - - Summary Below - - - - - Summary Right - - - - - Show Outline Symbols - - - - - - - Show Auto Page Breaks - - - - - Fit To Page - - - - - - - - Data Consolidation References - - - - - - Function Index - - - - - Use Starting Column Labels - - - - - Starting Column Labels - - - - - Labels In Top Row - - - - - Link - - - - - - Data Consolidation Functions - - - - - Average - - - - - Count - - - - - CountNums - - - - - Maximum - - - - - Minimum - - - - - Product - - - - - StdDev - - - - - StdDevP - - - - - Sum - - - - - Variance - - - - - VarP - - - - - - - - - Data Consolidation Reference - - - - - - Data Consolidation Reference Count - - - - - - - Reference - - - - - Named Range - - - - - Sheet Name - - - - - relationship Id - - - - - - - - Merged Cell - - - - - - Count - - - - - - - Reference - - - - - - - - Cell Smart Tags - - - - - - - - - Cell Smart Tag - - - - - - Reference - - - - - - - - Smart Tag Properties - - - - - - Smart Tag Type Index - - - - - Deleted - - - - - XML Based - - - - - - - Key Name - - - - - Value - - - - - - - Relationship id - - - - - - - Relationship Id - - - - - - - Relationship ID for Embedded Control Properties - - - - - Left Header for Odd Pages - - - - - Left Header for Even Pages - - - - - Left Header for First Page - - - - - Center Header for Odd Pages - - - - - Center Header for Even Pages - - - - - Center Header for First Page - - - - - Right Header for Odd Pages - - - - - Right Header for Even Pages - - - - - Right Header for First Page - - - - - Left Footer for Odd Pages - - - - - Left Footer for Even Pages - - - - - Left Footer for First Page - - - - - Center Footer for Odd Pages - - - - - Center Footer for Even Pages - - - - - Center Footer for First Page - - - - - Right Footer for Odd Pages - - - - - Right Footer for Even Pages - - - - - Right Footer for First Page - - - - - - - - Custom Sheet View - - - - - - - - - Pane Split Information - - - - - Selection - - - - - Horizontal Page Breaks - - - - - Vertical Page Breaks - - - - - Page Margins - - - - - Print Options - - - - - Page Setup Settings - - - - - Header Footer Settings - - - - - AutoFilter Settings - - - - - - - GUID - - - - - Print Scale - - - - - Color Id - - - - - Show Page Breaks - - - - - Show Formulas - - - - - Show Grid Lines - - - - - Show Headers - - - - - Show Outline Symbols - - - - - Show Zero Values - - - - - Fit To Page - - - - - Print Area Defined - - - - - Filtered List - - - - - Show AutoFitler Drop Down Controls - - - - - Hidden Rows - - - - - Hidden Columns - - - - - Visible State - - - - - Filter - - - - - View Type - - - - - Show Ruler - - - - - Top Left Visible Cell - - - - - - - - Data Validation - - - - - - Disable Prompts - - - - - Top Left Corner (X Coodrinate) - - - - - Top Left Corner (Y Coordinate) - - - - - Data Validation Item Count - - - - - - - - Formula 1 - - - - - Formula 2 - - - - - - Data Validation Type - - - - - Data Validation Error Style - - - - - IME Mode Enforced - - - - - Operator - - - - - Allow Blank - - - - - Show Drop Down - - - - - Show Input Message - - - - - Show Error Message - - - - - Error Alert Text - - - - - Error Message - - - - - Prompt Title - - - - - Input Prompt - - - - - Sequence of References - - - - - - Data Validation Type - - - - - None - - - - - Whole Number - - - - - Decimal - - - - - List - - - - - Date - - - - - Time - - - - - Text Length - - - - - Custom - - - - - - - Data Validation Operator - - - - - Between - - - - - Not Between - - - - - Equal - - - - - Not Equal - - - - - Less Than - - - - - Less Than Or Equal - - - - - Greater Than - - - - - Greater Than Or Equal - - - - - - - Data Validation Error Styles - - - - - Stop Icon - - - - - Warning Icon - - - - - Information Icon - - - - - - - Data Validation IME Mode - - - - - IME Mode Not Controlled - - - - - IME Off - - - - - IME On - - - - - Disabled IME Mode - - - - - Hiragana IME Mode - - - - - Full Katakana IME Mode - - - - - Half-Width Katakana - - - - - Full-Width Alpha-Numeric IME Mode - - - - - Half Alpha IME - - - - - Full Width Hangul - - - - - Half-Width Hangul IME Mode - - - - - - - Conditional Format Type - - - - - Expression - - - - - Cell Is - - - - - Color Scale - - - - - Data Bar - - - - - Icon Set - - - - - Top 10 - - - - - Unique Values - - - - - Duplicate Values - - - - - Contains Text - - - - - Does Not Contain Text - - - - - Begins With - - - - - Ends With - - - - - Contains Blanks - - - - - Contains No Blanks - - - - - Contains Errors - - - - - Contains No Errors - - - - - Time Period - - - - - Above or Below Average - - - - - - - Time Period Types - - - - - Today - - - - - Yesterday - - - - - Tomorrow - - - - - Last 7 Days - - - - - This Month - - - - - Last Month - - - - - Next Month - - - - - This Week - - - - - Last Week - - - - - Next Week - - - - - - - Conditional Format Operators - - - - - Less Than - - - - - Less Than Or Equal - - - - - Equal - - - - - Not Equal - - - - - Greater Than Or Equal - - - - - Greater Than - - - - - Between - - - - - Not Between - - - - - Contains - - - - - Does Not Contain - - - - - Begins With - - - - - Ends With - - - - - - - Conditional Format Value Object Type - - - - - Number - - - - - Percent - - - - - Maximum - - - - - Minimum - - - - - Formula - - - - - Percentile - - - - - - - - - Conditional Formatting Rule - - - - - - - PivotTable Conditional Formatting - - - - - Sequence of Refernces - - - - - - - - Formula - - - - - Color Scale - - - - - Data Bar - - - - - Icon Set - - - - - - - Type - - - - - Differential Formatting Id - - - - - Priority - - - - - Stop If True - - - - - Above Or Below Average - - - - - Top 10 Percent - - - - - Bottom N - - - - - Operator - - - - - Text - - - - - Time Period - - - - - Rank - - - - - StdDev - - - - - Equal Average - - - - - - - - Hyperlink - - - - - - - - Reference - - - - - Relationship Id - - - - - Location - - - - - Tool Tip - - - - - Display String - - - - - - - - - Formula Type - - - - - Always Calculate Array - - - - - Range of Cells - - - - - Data Table 2-D - - - - - Data Table Row - - - - - Input 1 Deleted - - - - - Input 2 Deleted - - - - - Data Table Cell 1 - - - - - Input Cell 2 - - - - - Calculate Cell - - - - - Shared Group Index - - - - - Assigns Value to Name - - - - - - - - - - Conditional Format Value Object - - - - - Color Gradiant Interpolation - - - - - - - - - Conditional Format Value Object - - - - - Data Bar Color - - - - - - Minimum Length - - - - - Maximum Length - - - - - Show Values - - - - - - - - Conditional Formatting Object - - - - - - Icon Set - - - - - Show Value - - - - - Percent - - - - - Reverse Icons - - - - - - - - - - Type - - - - - Value - - - - - Greater Than Or Equal - - - - - - - Left Page Margin - - - - - Right Page Margin - - - - - Top Page Margin - - - - - Bottom Page Margin - - - - - Header Page Margin - - - - - Footer Page Margin - - - - - - - Horizontal Centered - - - - - Vertical Centered - - - - - Print Headings - - - - - Print Grid Lines - - - - - Grid Lines Set - - - - - - - Paper Size - - - - - Paper Height - - - - - Paper Width - - - - - Print Scale - - - - - First Page Number - - - - - Fit To Width - - - - - Fit To Height - - - - - Page Order - - - - - Orientation - - - - - Use Printer Defaults - - - - - Black And White - - - - - Draft - - - - - Print Cell Comments - - - - - Use First Page Number - - - - - Print Error Handling - - - - - Horizontal DPI - - - - - Vertical DPI - - - - - Number Of Copies - - - - - Id - - - - - - Page Order - - - - - Down Then Over - - - - - Over Then Down - - - - - - - Orientation - - - - - Default - - - - - Portrait - - - - - Landscape - - - - - - - Cell Comments - - - - - None - - - - - Print Comments As Displayed - - - - - Print At End - - - - - - - - - Odd Header - - - - - Odd Page Footer - - - - - Even Page Header - - - - - Even Page Footer - - - - - First Page Header - - - - - First Page Footer - - - - - - Different Odd Even Header Footer - - - - - Different First Page - - - - - Scale Header & Footer With Document - - - - - Align Margins - - - - - - Print Errors - - - - - Display Cell Errors - - - - - Show Cell Errors As Blank - - - - - Dash Cell Errors - - - - - NA - - - - - - - - - Scenario - - - - - - Current Scenario - - - - - Last Shown Scenario - - - - - Sequence of References - - - - - - - Legacy Password - - - - - Cryptographic Algorithm Name - - - - - Password Hash Value - - - - - Salt Value for Password Verifier - - - - - Iterations to Run Hashing Algorithm - - - - - Sheet Locked - - - - - Objects Locked - - - - - Scenarios Locked - - - - - Format Cells Locked - - - - - Format Columns Locked - - - - - Format Rows Locked - - - - - Insert Columns Locked - - - - - Insert Rows Locked - - - - - Insert Hyperlinks Locked - - - - - Delete Columns Locked - - - - - Delete Rows Locked - - - - - Select Locked Cells Locked - - - - - Sort Locked - - - - - AutoFilter Locked - - - - - Pivot Tables Locked - - - - - Select Unlocked Cells Locked - - - - - - - - Protected Range - - - - - - - - - Security Descriptor - - - - - - Legacy Password - - - - - Sequence of References - - - - - Name - - - - - Security Descriptor - - - - - Cryptographic Algorithm Name - - - - - Password Hash Value - - - - - Salt Value for Password Verifier - - - - - Iterations to Run Hashing Algorithm - - - - - - - - Input Cells - - - - - - Scenario Name - - - - - Scenario Locked - - - - - Hidden Scenario - - - - - Changing Cell Count - - - - - User Name - - - - - Scenario Comment - - - - - - - Reference - - - - - Deleted - - - - - Undone - - - - - Value - - - - - Number Format Id - - - - - - - - Cell Watch Item - - - - - - - - Reference - - - - - - - - Chart Sheet Properties - - - - - Chart Sheet Views - - - - - Chart Sheet Protection - - - - - Custom Chart Sheet Views - - - - - - - - Drawing - - - - - - Legacy Drawing Reference in Header Footer - - - - - Drawing Reference in Header Footer - - - - - - - - - - - - - - Published - - - - - Code Name - - - - - - - - Chart Sheet View - - - - - - - - - - - - Sheet Tab Selected - - - - - Window Zoom Scale - - - - - Workbook View Id - - - - - Zoom To Fit - - - - - - - Password - - - - - Cryptographic Algorithm Name - - - - - Password Hash Value - - - - - Salt Value for Password Verifier - - - - - Iterations to Run Hashing Algorithm - - - - - Contents - - - - - Objects Locked - - - - - - - Paper Size - - - - - Paper Height - - - - - Paper Width - - - - - First Page Number - - - - - Orientation - - - - - Use Printer Defaults - - - - - Black And White - - - - - Draft - - - - - Use First Page Number - - - - - Horizontal DPI - - - - - Vertical DPI - - - - - Number Of Copies - - - - - Id - - - - - - - - Custom Chart Sheet View - - - - - - - - - - Chart Sheet Page Setup - - - - - - - GUID - - - - - Print Scale - - - - - Visible State - - - - - Zoom To Fit - - - - - - - - Custom Property - - - - - - - - Custom Property Name - - - - - Relationship Id - - - - - - - - Embedded Object - - - - - - - - - Embedded Object Properties - - - - - - Embedded Object ProgId - - - - - Data or View Aspect - - - - - Embedded Object's Link Moniker - - - - - Linked Embedded Object Update - - - - - Auto Load - - - - - Shape Id - - - - - Relationship Id - - - - - - - - - - Locked Flag - - - - - Default Size Flag - - - - - Print Flag - - - - - Disabled Flag - - - - - UI Object Flag - - - - - Automatic Fill Flag - - - - - Automatic Line Flag - - - - - Automatic Size Flag - - - - - Custom Function - - - - - Alternative Text - - - - - Dynamic Data Exchange Flag - - - - - Relationship ID to Embedded Object Data - - - - - - Data View Aspect Type - - - - - Object Display Content - - - - - Object Display Icon - - - - - - - OLE Update Types - - - - - Always Update OLE - - - - - Update OLE On Call - - - - - - - - - Web Publishing Item - - - - - - Web Publishing Items Count - - - - - - - Id - - - - - Destination Bookmark - - - - - Web Source Type - - - - - Source Id - - - - - Source Object Name - - - - - Destination File Name - - - - - Title - - - - - Automatically Publish - - - - - - - - Embedded Control - - - - - - - - - Embedded Control Properties - - - - - - Shape Id - - - - - Relationship Id - - - - - Control Name - - - - - - - - Object Cell Anchor - - - - - - Locked Flag - - - - - Default Size Flag - - - - - Print Flag - - - - - Disabled Flag - - - - - Recalculation Flag - - - - - UI Object Flag - - - - - Automatic Fill Flag - - - - - Automatic Line Flag - - - - - Automatic Size Flag - - - - - Custom Function - - - - - Alternative Text - - - - - Linked Formula - - - - - List Items Source Range - - - - - Image Format - - - - - Relationship ID for Embedded Control Properties - - - - - - Web Source Type - - - - - All Sheet Content - - - - - Print Area - - - - - AutoFilter - - - - - Range - - - - - Chart - - - - - PivotTable - - - - - QueryTable - - - - - Label - - - - - - - - - Ignored Error - - - - - - - - - Sequence of References - - - - - Evaluation Error - - - - - Two Digit Text Year - - - - - Number Stored As Text - - - - - Formula - - - - - Formula Range - - - - - Unlocked Formula - - - - - Empty Cell Reference - - - - - List Data Validation - - - - - Calculated Column - - - - - - Pane State - - - - - Split - - - - - Frozen - - - - - Frozen Split - - - - - - - - - Table Part - - - - - - Count - - - - - - - Relationship Id - - - - - - Metadata - - - - - - - Metadata Types Collection - - - - - Metadata String Store - - - - - MDX Metadata Information - - - - - Future Metadata - - - - - Cell Metadata - - - - - Value Metadata - - - - - Future Feature Storage Area - - - - - - - - - Metadata Type Information - - - - - - Metadata Type Count - - - - - - - Metadata Type Name - - - - - Minimum Supported Version - - - - - Metadata Ghost Row - - - - - Metadata Ghost Column - - - - - Metadata Edit - - - - - Metadata Cell Value Delete - - - - - Metadata Copy - - - - - Metadata Paste All - - - - - Metadata Paste Formulas - - - - - Metadata Paste Special Values - - - - - Metadata Paste Formats - - - - - Metadata Paste Comments - - - - - Metadata Paste Data Validation - - - - - Metadata Paste Borders - - - - - Metadata Paste Column Widths - - - - - Metadata Paste Number Formats - - - - - Metadata Merge - - - - - Meatadata Split First - - - - - Metadata Split All - - - - - Metadata Insert Delete - - - - - Metadata Clear All - - - - - Metadata Clear Formats - - - - - Metadata Clear Contents - - - - - Metadata Clear Comments - - - - - Metadata Formula Assignment - - - - - Metadata Coercion - - - - - Adjust Metadata - - - - - Cell Metadata - - - - - - - - Metadata Block - - - - - - Metadata Block Count - - - - - - - - Metadata Record - - - - - - - - Metadata Record Type Index - - - - - Metadata Record Value Index - - - - - - - - Future Metadata Block - - - - - Future Feature Data Storage Area - - - - - - Metadata Type Name - - - - - Future Metadata Block Count - - - - - - - - Future Feature Storage Area - - - - - - - - - MDX Metadata Record - - - - - - MDX Metadata Record Count - - - - - - - - Tuple MDX Metadata - - - - - Set MDX Metadata - - - - - Member Property MDX Metadata - - - - - KPI MDX Metadata - - - - - - Connection Name Index - - - - - Cube Function Tag - - - - - - MDX Function Type - - - - - Cube Member - - - - - Cube Value - - - - - Cube Set - - - - - Cube Set Count - - - - - Cube Ranked Member - - - - - Cube Member Property - - - - - Cube KPI Member - - - - - - - - - Member Unique Name Index - - - - - - Member Index Count - - - - - Server Formatting Culture Currency - - - - - Server Formatting String Index - - - - - Server Formatting Built-In Number Format Index - - - - - Server Formatting Background Color - - - - - Server Formatting Foreground Color - - - - - Server Formatting Italic Font - - - - - Server Formatting Underline Font - - - - - Server Formatting Strikethrough Font - - - - - Server Formatting Bold Font - - - - - - - - Member Unique Name Index - - - - - - Set Definition Index - - - - - Sort By Member Index Count - - - - - Set Sort Order - - - - - - MDX Set Order - - - - - Unsorted - - - - - Ascending - - - - - Descending - - - - - Alpha Ascending Sort Order - - - - - Alpha Descending Sort Order - - - - - Natural Ascending - - - - - Natural Descending - - - - - - - - Member Unique Name Index - - - - - Property Name Index - - - - - - - Member Unique Name Index - - - - - KPI Index - - - - - KPI Property - - - - - - MDX KPI Property - - - - - Value - - - - - Goal - - - - - Status - - - - - Trend - - - - - Weight - - - - - Current Time Member - - - - - - - - Index Value - - - - - String is a Set - - - - - - - - MDX Metadata String - - - - - - MDX Metadata String Count - - - - - - Single Cells - - - - - - - Table Properties - - - - - - - - - Cell Properties - - - - - Future Feature Data Storage Area - - - - - - Table Id - - - - - Reference - - - - - Connection ID - - - - - - - - Column XML Properties - - - - - Future Feature Data Storage Area - - - - - - Table Field Id - - - - - Unique Table Name - - - - - - - - Future Feature Data Storage Area - - - - - - XML Map Id - - - - - XPath - - - - - XML Data Type - - - - - - Style Sheet - - - - - - - Number Formats - - - - - Fonts - - - - - Fills - - - - - Borders - - - - - Formatting Records - - - - - Cell Formats - - - - - Cell Styles - - - - - Formats - - - - - Table Styles - - - - - Colors - - - - - Future Feature Data Storage Area - - - - - - - - Horizontal Alignment - - - - - Vertical Alignment - - - - - Text Rotation - - - - - Wrap Text - - - - - Indent - - - - - Relative Indent - - - - - Justify Last Line - - - - - Shrink To Fit - - - - - Reading Order - - - - - - Border Line Styles - - - - - None - - - - - Thin Border - - - - - Medium Border - - - - - Dashed - - - - - Dotted - - - - - Thick Line Border - - - - - Double Line - - - - - Hairline Border - - - - - Medium Dashed - - - - - Dash Dot - - - - - Medium Dash Dot - - - - - Dash Dot Dot - - - - - Medium Dash Dot Dot - - - - - Slant Dash Dot - - - - - - - - - Border - - - - - - Border Count - - - - - - - - Leading Edge Border - - - - - Trailing Edge Border - - - - - Leading Edge Border - - - - - Trailing Edge Border - - - - - Top Border - - - - - Bottom Border - - - - - Diagonal - - - - - Vertical Inner Border - - - - - Horizontal Inner Borders - - - - - - Diagonal Up - - - - - Diagonal Down - - - - - Outline - - - - - - - - Color - - - - - - Line Style - - - - - - - Cell Locked - - - - - Hidden Cell - - - - - - - - Font - - - - - - Font Count - - - - - - - - Fill - - - - - - Fill Count - - - - - - - - Pattern - - - - - Gradient - - - - - - - - - Foreground Color - - - - - Background Color - - - - - - Pattern Type - - - - - - - Automatic - - - - - Index - - - - - Alpha Red Green Blue Color Value - - - - - Theme Color - - - - - Tint - - - - - - Pattern Type - - - - - None - - - - - Solid - - - - - Medium Gray - - - - - Dary Gray - - - - - Light Gray - - - - - Dark Horizontal - - - - - Dark Vertical - - - - - Dark Down - - - - - Dark Up - - - - - Dark Grid - - - - - Dark Trellis - - - - - Light Horizontal - - - - - Light Vertical - - - - - Light Down - - - - - Light Up - - - - - Light Grid - - - - - Light Trellis - - - - - Gray 0.125 - - - - - Gray 0.0625 - - - - - - - - - Gradient Stop - - - - - - Gradient Fill Type - - - - - Linear Gradient Degree - - - - - Left Convergence - - - - - Right Convergence - - - - - Top Gradient Convergence - - - - - Bottom Convergence - - - - - - - - Color - - - - - - Gradient Stop Position - - - - - - Gradient Type - - - - - Linear Gradient - - - - - Path - - - - - - - Horizontal Alignment Type - - - - - General Horizontal Alignment - - - - - Left Horizontal Alignment - - - - - Centered Horizontal Alignment - - - - - Right Horizontal Alignment - - - - - Fill - - - - - Justify - - - - - Center Continuous Horizontal Alignment - - - - - Distributed Horizontal Alignment - - - - - - - Vertical Alignment Types - - - - - Align Top - - - - - Centered Vertical Alignment - - - - - Aligned To Bottom - - - - - Justified Vertically - - - - - Distributed Vertical Alignment - - - - - - - - - Number Formats - - - - - - Number Format Count - - - - - - - Number Format Id - - - - - Number Format Code - - - - - - - - Formatting Elements - - - - - - Style Count - - - - - - - - Format - - - - - - Format Count - - - - - - - - Alignment - - - - - Protection - - - - - Future Feature Data Storage Area - - - - - - Number Format Id - - - - - Font Id - - - - - Fill Id - - - - - Border Id - - - - - Format Id - - - - - Quote Prefix - - - - - Pivot Button - - - - - Apply Number Format - - - - - Apply Font - - - - - Apply Fill - - - - - Apply Border - - - - - Apply Alignment - - - - - Apply Protection - - - - - - - - Cell Style - - - - - - Style Count - - - - - - - - Future Feature Data Storage Area - - - - - - User Defined Cell Style - - - - - Format Id - - - - - Built-In Style Id - - - - - Outline Style - - - - - Hidden Style - - - - - Custom Built In - - - - - - - - Formatting - - - - - - Format Count - - - - - - - - Font Properties - - - - - Number Format - - - - - Fill - - - - - Alignment - - - - - Border Properties - - - - - Protection Properties - - - - - Future Feature Data Storage Area - - - - - - - Number Format Id - - - - - - Font Id - - - - - - Fill Id - - - - - - Border Id - - - - - - Cell Style Format Id - - - - - - Format Id - - - - - - - - Color Indexes - - - - - MRU Colors - - - - - - - - - RGB Color - - - - - - - - - Color - - - - - - - - Alpha Red Green Blue - - - - - - - - Table Style - - - - - - Table Style Count - - - - - Default Table Style - - - - - Default Pivot Style - - - - - - - - Table Style - - - - - - Table Style Name - - - - - Pivot Style - - - - - Table - - - - - Table Style Count - - - - - - - Table Style Type - - - - - Band Size - - - - - Formatting Id - - - - - - Table Style Type - - - - - Whole Table Style - - - - - Header Row Style - - - - - Total Row Style - - - - - First Column Style - - - - - Last Column Style - - - - - First Row Stripe Style - - - - - Second Row Stripe Style - - - - - First Column Stripe Style - - - - - Second Column Stipe Style - - - - - First Header Row Style - - - - - Last Header Style - - - - - First Total Row Style - - - - - Last Total Row Style - - - - - First Subtotal Column Style - - - - - Second Subtotal Column Style - - - - - Third Subtotal Column Style - - - - - First Subtotal Row Style - - - - - Second Subtotal Row Style - - - - - Third Subtotal Row Style - - - - - Blank Row Style - - - - - First Column Subheading Style - - - - - Second Column Subheading Style - - - - - Third Column Subheading Style - - - - - First Row Subheading Style - - - - - Second Row Subheading Style - - - - - Third Row Subheading Style - - - - - Page Field Labels Style - - - - - Page Field Values Style - - - - - - - - Value - - - - - - - Value - - - - - - - Value - - - - - - - String Value - - - - - - - Value - - - - - - - Font Scheme - - - - - - Font scheme Styles - - - - - None - - - - - Major Font - - - - - Minor Font - - - - - - - - Underline Value - - - - - - Underline Types - - - - - Single Underline - - - - - Double Underline - - - - - Accounting Single Underline - - - - - Accounting Double Underline - - - - - None - - - - - - - - - Font Name - - - - - Character Set - - - - - Font Family - - - - - Bold - - - - - Italic - - - - - Strike Through - - - - - Outline - - - - - Shadow - - - - - Condense - - - - - Extend - - - - - Text Color - - - - - Font Size - - - - - Underline - - - - - Text Vertical Alignment - - - - - Scheme - - - - - - - - Auto Format Id - - - - - Apply Number Formats - - - - - Apply Border Formats - - - - - Apply Font Formats - - - - - Apply Pattern Formats - - - - - Apply Alignment Formats - - - - - Apply Width / Height Formats - - - - - - External Reference - - - - - - - External Workbook - - - - - DDE Connection - - - - - Generic Object Link Connection - - - - - - - - - - Supporting Workbook Sheet Names - - - - - Named Links - - - - - Cached Worksheet Data - - - - - - Relationship to supporting book file path - - - - - - - - Sheet Name - - - - - - - - Sheet Name Value - - - - - - - - Defined Name - - - - - - - - Defined Name - - - - - Refers To - - - - - Sheet Id - - - - - - - - External Sheet Data Set - - - - - - - - - Row - - - - - - Sheet Id - - - - - Last Refresh Resulted in Error - - - - - - - - External Cell Data - - - - - - Row - - - - - - - - Value - - - - - - Reference - - - - - Type - - - - - Value Metadata - - - - - - - - DDE Items Collection - - - - - - Service name - - - - - Topic for DDE server - - - - - - - - DDE Item definition - - - - - - - - - DDE Name Values - - - - - - DDE Name - - - - - Object Linking TechnologyE - - - - - Advise - - - - - Data is an Image - - - - - - - - Value - - - - - - Rows - - - - - Columns - - - - - - - - DDE Link Value - - - - - - DDE Value Type - - - - - - DDE Value Types - - - - - Nil - - - - - Boolean - - - - - Real Number - - - - - Error - - - - - String - - - - - - - - - Object Link Items - - - - - - Object Link Relationship - - - - - Object Link Identifier - - - - - - - - Object Link Item - - - - - - - - Object Name - - - - - Icon - - - - - Advise - - - - - Object is an Image - - - - - - Table - - - - - - - Table AutoFilter - - - - - Sort State - - - - - Table Columns - - - - - Table Style - - - - - Future Feature Data Storage Area - - - - - - Table Id - - - - - Name - - - - - Table Name - - - - - Table Comment - - - - - Reference - - - - - Table Type - - - - - Header Row Count - - - - - Insert Row Showing - - - - - Insert Row Shift - - - - - Totals Row Count - - - - - Totals Row Shown - - - - - Published - - - - - Header Row Format Id - - - - - Data Area Format Id - - - - - Totals Row Format Id - - - - - Header Row Border Format Id - - - - - Table Border Format Id - - - - - Totals Row Border Format Id - - - - - Header Row Style - - - - - Data Style Name - - - - - Totals Row Style - - - - - Connection ID - - - - - - Table Type - - - - - Worksheet - - - - - XML - - - - - Query Table - - - - - - - - Style Name - - - - - Show First Column - - - - - Show Last Column - - - - - Show Row Stripes - - - - - Show Column Stripes - - - - - - - - Table Column - - - - - - Column Count - - - - - - - - Calculated Column Formula - - - - - Totals Row Formula - - - - - XML Column Properties - - - - - Future Feature Data Storage Area - - - - - - Table Field Id - - - - - Unique Name - - - - - Column name - - - - - Totals Row Function - - - - - Totals Row Label - - - - - Query Table Field Id - - - - - Header Row Cell Format Id - - - - - Data & Insert Row Format Id - - - - - Totals Row Format Id - - - - - Header Row Cell Style - - - - - Data Area Style Name - - - - - Totals Row Style Name - - - - - - - - - Array - - - - - - - - Totals Row Function Types - - - - - None - - - - - Sum - - - - - Minimum - - - - - Maximum - - - - - Average - - - - - Non Empty Cell Count - - - - - Count Numbers - - - - - StdDev - - - - - Var - - - - - Custom Formula - - - - - - - - - Future Feature Data Storage Area - - - - - - XML Map Id - - - - - XPath - - - - - Denormalized - - - - - XML Data Type - - - - - - XML Data Types - - - - - - Volatile Dependency Types - - - - - - - Volatile Dependency Type - - - - - - - - - - Main - - - - - - Type - - - - - - - - Topic - - - - - - First String - - - - - - - - Topic Value - - - - - Strings in Subtopic - - - - - References - - - - - - Type - - - - - - - Reference - - - - - Sheet Id - - - - - - Volatile Dependency Types - - - - - Real Time Data - - - - - OLAP Formulas - - - - - - - Volatile Dependency Value Types - - - - - Boolean - - - - - Real Number - - - - - Error - - - - - String - - - - - - - Workbook - - - - - - - File Version - - - - - File Sharing - - - - - Workbook Properties - - - - - Workbook Protection - - - - - Workbook Views - - - - - Sheets - - - - - Function Groups - - - - - External References - - - - - Defined Names - - - - - Calculation Properties - - - - - Embedded Object Size - - - - - Custom Workbook Views - - - - - PivotCaches - - - - - Smart Tag Properties - - - - - Smart Tag Types - - - - - Web Publishing Properties - - - - - File Recovery Properties - - - - - Web Publish Objects - - - - - Future Feature Data Storage Area - - - - - - Document Conformance Class - - - - - - - Application Name - - - - - Last Edited Version - - - - - Lowest Edited Version - - - - - Build Version - - - - - Code Name - - - - - - - - Workbook View - - - - - - - - - - - Visibility - - - - - Minimized - - - - - Show Horizontal Scroll - - - - - Show Vertical Scroll - - - - - Show Sheet Tabs - - - - - Upper Left Corner (X Coordinate) - - - - - Upper Left Corner (Y Coordinate) - - - - - Window Width - - - - - Window Height - - - - - Sheet Tab Ratio - - - - - First Sheet - - - - - Active Sheet Index - - - - - AutoFilter Date Grouping - - - - - - Visibility Types - - - - - Visible - - - - - Hidden - - - - - Very Hidden - - - - - - - - - Custom Workbook View - - - - - - - - - - - Custom View Name - - - - - Custom View GUID - - - - - Auto Update - - - - - Merge Interval - - - - - Changes Saved Win - - - - - Only Synch - - - - - Personal View - - - - - Include Print Settings - - - - - Include Hidden Rows & Columns - - - - - Maximized - - - - - Minimized - - - - - Show Horizontal Scroll - - - - - Show Vertical Scroll - - - - - Show Sheet Tabs - - - - - Top Left Corner (X Coordinate) - - - - - Top Left Corner (Y Coordinate) - - - - - Window Width - - - - - Window Height - - - - - Sheet Tab Ratio - - - - - Active Sheet in Book View - - - - - Show Formula Bar - - - - - Show Status Bar - - - - - Show Comments - - - - - Show Objects - - - - - - Comment Display Types - - - - - No Comments - - - - - Show Comment Indicator - - - - - Show Comment & Indicator - - - - - - - Object Display Types - - - - - All - - - - - Show Placeholders - - - - - None - - - - - - - - - Sheet Information - - - - - - - - Sheet Name - - - - - Sheet Tab Id - - - - - Visible State - - - - - Relationship Id - - - - - - Sheet Visibility Types - - - - - Visible - - - - - Hidden - - - - - Very Hidden - - - - - - - - Date 1904 - - - - - Date Compatibility - - - - - Show Objects - - - - - Show Border Unselected Table - - - - - Filter Privacy - - - - - Prompted Solutions - - - - - Show Ink Annotations - - - - - Create Backup File - - - - - Save External Link Values - - - - - Update Links Behavior - - - - - Code Name - - - - - Hide Pivot Field List - - - - - Show Pivot Chart Filter - - - - - Allow Refresh Query - - - - - Publish Items - - - - - Check Compatibility On Save - - - - - Auto Compress Pictures - - - - - Refresh all Connections on Open - - - - - Default Theme Version - - - - - - Update Links Behavior Types - - - - - User Set - - - - - Never Update Links - - - - - Always Update Links - - - - - - - - Embed SmartTags - - - - - Show Smart Tags - - - - - - Smart Tag Display Types - - - - - All - - - - - None - - - - - No Smart Tag Indicator - - - - - - - - - Smart Tag Type - - - - - - - - SmartTag Namespace URI - - - - - Name - - - - - Smart Tag URL - - - - - - - Auto Recover - - - - - Crash Save - - - - - Data Extract Load - - - - - Repair Load - - - - - - - Calculation Id - - - - - Calculation Mode - - - - - Full Calculation On Load - - - - - Reference Mode - - - - - Calculation Iteration - - - - - Iteration Count - - - - - Iterative Calculation Delta - - - - - Full Precision Calculation - - - - - Calc Completed - - - - - Calculate On Save - - - - - Concurrent Calculations - - - - - Concurrent Thread Manual Count - - - - - Force Full Calculation - - - - - - Calculation Mode - - - - - Manual Calculation Mode - - - - - Automatic - - - - - Automatic Calculation (No Tables) - - - - - - - Reference Mode - - - - - A1 Mode - - - - - R1C1 Reference Mode - - - - - - - - - Defined Name - - - - - - - - - - Defined Name - - - - - Comment - - - - - Custom Menu Text - - - - - Description - - - - - Help - - - - - Status Bar - - - - - Local Name Sheet Id - - - - - Hidden Name - - - - - Function - - - - - Procedure - - - - - External Function - - - - - Function Group Id - - - - - Shortcut Key - - - - - Publish To Server - - - - - Workbook Parameter (Server) - - - - - - - - - - External Reference - - - - - - - - Relationship Id - - - - - - - Relationship Id - - - - - - - - PivotCache - - - - - - - - PivotCache Id - - - - - Relationship Id - - - - - - - Read Only Recommended - - - - - User Name - - - - - Write Reservation Password - - - - - Cryptographic Algorithm Name - - - - - Password Hash Value - - - - - Salt Value for Password Verifier - - - - - Iterations to Run Hashing Algorithm - - - - - - - Reference - - - - - - - Legacy Workbook Password - - - - - Workbook Password Character Set - - - - - Legacy Revisions Password - - - - - Revisions Password Character Set - - - - - Lock Structure - - - - - Lock Windows - - - - - Lock Revisions - - - - - Cryptographic Algorithm Name - - - - - Password Hash Value - - - - - Salt Value for Password Verifier - - - - - Iterations to Run Hashing Algorithm - - - - - Cryptographic Algorithm Name - - - - - Password Hash Value - - - - - Salt Value for Password Verifier - - - - - Iterations to Run Hashing Algorithm - - - - - - - Use CSS - - - - - Thicket - - - - - Enable Long File Names - - - - - VML in Browsers - - - - - Allow PNG - - - - - Target Screen Size - - - - - DPI - - - - - Code Page - - - - - Character Set - - - - - - Target Screen Size Types - - - - - 544 x 376 Resolution - - - - - 640 x 480 Resolution - - - - - 720 x 512 Resolution - - - - - 800 x 600 Resolution - - - - - 1024 x 768 Resolution - - - - - 1152 x 882 Resolution - - - - - 1152 x 900 Resolution - - - - - 1280 x 1024 Resolution - - - - - 1600 x 1200 Resolution - - - - - 1800 x 1440 Resolution - - - - - 1920 x 1200 Resolution - - - - - - - - - Function Group - - - - - - Built-in Function Group Count - - - - - - - Name - - - - - - - - Web Publishing Object - - - - - - Count - - - - - - - Id - - - - - Div Id - - - - - Source Object - - - - - Destination File - - - - - Title - - - - - Auto Republish - - - + xmlns="http://purl.oclc.org/ooxml/spreadsheetml/main" + xmlns:r="http://purl.oclc.org/ooxml/officeDocument/relationships" + xmlns:xdr="http://purl.oclc.org/ooxml/drawingml/spreadsheetDrawing" + xmlns:s="http://purl.oclc.org/ooxml/officeDocument/sharedTypes" + targetNamespace="http://purl.oclc.org/ooxml/spreadsheetml/main" elementFormDefault="qualified"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/resources/schema/ooxml/vml-main.xsd b/tests/resources/schema/ooxml/vml-main.xsd deleted file mode 100644 index 6db7557999..0000000000 --- a/tests/resources/schema/ooxml/vml-main.xsd +++ /dev/null @@ -1,1679 +0,0 @@ - - - - - - - - - - - - - Unique Identifier - - - - - - - Shape Styling Properties - - - - - - - Shape Type Reference - - - - - - - Adjustment Parameters - - - - - - - Edge Path - - - - - - - Shape Fill Toggle - - - - - Fill Color - - - - - - - Image Transparency Color - - - - - - - VML Extension Handling Behavior - - - - - - - - - Hyperlink Target - - - - - Hyperlink Display Target - - - - - CSS Reference - - - - - Shape Title - - - - - Alternate Text - - - - - Coordinate Space Size - - - - - Coordinate Space Origin - - - - - Shape Bounding Polygon - - - - - Print Toggle - - - - - - - - - Fill Color Opacity - - - - - Shape Stroke Toggle - - - - - Shape Stroke Color - - - - - Shape Stroke Weight - - - - - Inset Border From Path - - - - - - - Optional String - - - - - Shape Handle Toggle - - - - - Regroup ID - - - - - Double-click Notification Toggle - - - - - Button Behavior Toggle - - - - - Hide Script Anchors - - - - - Graphical Bullet - - - - - Horizontal Rule Toggle - - - - - Horizontal Rule Standard Display Toggle - - - - - Horizontal Rule 3D Shading Toggle - - - - - Horizontal Rule Length Percentage - - - - - Horizontal Rule Alignment - - - - - Allow in Table Cell - - - - - Allow Shape Overlap - - - - - Exists In Master Slide - - - - - Border Top Color - - - - - Border Left Color - - - - - Bottom Border Color - - - - - Border Right Color - - - - - Diagram Node Layout Identifier - - - - - Diagram Node Identifier - - - - - Diagram Node Recent Layout Identifier - - - - - Text Inset Mode - - - - - - - Optional Number - - - - - Shape Connector Type - - - - - Black-and-White Mode - - - - - Pure Black-and-White Mode - - - - - Normal Black-and-White Mode - - - - - Force Dashed Outline - - - - - Embedded Object Icon Toggle - - - - - Embedded Object Toggle - - - - - Relative Resize Toggle - - - - - Clip to Wrapping Polygon - - - - - Clipping Toggle - - - - - - - - - - - - - - - Image Source - - - - - Image Left Crop - - - - - Image Top Crop - - - - - Image Right Crop - - - - - Image Bottom Crop - - - - - Image Intensity - - - - - Image Brightness - - - - - Image Gamma Correction - - - - - Image Grayscale Toggle - - - - - Image Bilevel Toggle - - - - - - - Stroke Toggle - - - - - Stroke Weight - - - - - Stroke Color - - - - - Stroke Opacity - - - - - Stroke Line Style - - - - - Miter Joint Limit - - - - - Line End Join Style - - - - - Line End Cap - - - - - Stroke Dash Pattern - - - - - Stroke Image Style - - - - - Stroke Image Location - - - - - Stroke Image Aspect Ratio - - - - - Stroke Image Size - - - - - Stoke Image Alignment - - - - - Stroke Alternate Pattern Color - - - - - Line Start Arrowhead - - - - - Line Start Arrowhead Width - - - - - Line Start Arrowhead Length - - - - - Line End Arrowhead - - - - - Line End Arrowhead Width - - - - - Line End Arrowhead Length - - - - - Original Image Reference - - - - - Alternate Image Reference - - - - - Stroke Title - - - - - Force Dashed Outline - - - - - Relationship - - - - - Inset Border From Path - - - - - Relationship to Part - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Shape Definition - - - - - Shape Template - - - - - Shape Group - - - - - Document Background - - - - - - - - - - - - - - - - - Encoded Package - - - - - Storage for Alternate Math Content - - - - - - - - - - - - - - - Master Element Toggle - - - - - - - - - - - - - - - - - - - - - - - - Group Diagram Type - - - - - Table Properties - - - - - Table Row Height Limits - - - - - - - - - - - - Black-and-White Mode - - - - - Pure Black-and-White Mode - - - - - Normal Black-and-White Mode - - - - - Target Screen Size - - - - - - Shape Fill Properties - - - - - Set of Formulas - - - - - Set of Handles - - - - - Image Data - - - - - Shape Path - - - - - Text Box - - - - - Shadow Effect - - - - - Line Stroke Settings - - - - - Text Layout Path - - - - - - - - - - Fill Type - - - - - Fill Toggle - - - - - Primary Color - - - - - Primary Color Opacity - - - - - Secondary Color - - - - - Fill Image Source - - - - - Hyperlink Target - - - - - Alternate Image Reference Location - - - - - Fill Image Size - - - - - Fill Image Origin - - - - - Fill Image Position - - - - - Image Aspect Ratio - - - - - Intermediate Colors - - - - - Gradient Angle - - - - - Align Image With Shape - - - - - Gradient Center - - - - - Radial Gradient Size - - - - - Radial Gradient Center - - - - - Gradient Fill Method - - - - - Detect Mouse Click - - - - - Title - - - - - Secondary Color Opacity - - - - - Recolor Fill as Picture - - - - - Rotate Fill with Shape - - - - - Relationship to Part - - - - - Relationship to Part - - - - - - - - Single Formula - - - - - - - - Equation - - - - - - - - Shape Handle - - - - - - - - Handle Position - - - - - Handle Polar Center - - - - - Handle Coordinate Mapping - - - - - Invert Handle's X Position - - - - - Invert Handle's Y Position - - - - - Handle Inversion Toggle - - - - - Handle X Position Range - - - - - Handle Y Position Range - - - - - Handle Polar Radius Range - - - - - - - - - - Embossed Color - - - - - Black Recoloring Color - - - - - Original Image Reference - - - - - Alternate Image Reference - - - - - Image Data Title - - - - - Image Embedded Object ID - - - - - Detect Mouse Click - - - - - Movie Reference - - - - - Relationship to Part - - - - - Explicit Relationship to Image Data - - - - - Explicit Relationship to Alternate Image Data - - - - - Explicit Relationship to Hyperlink Target - - - - - - - - Path Definition - - - - - Limo Stretch Point - - - - - Text Box Bounding Box - - - - - Shape Fill Toggle - - - - - Stroke Toggle - - - - - Shadow Toggle - - - - - Arrowhead Display Toggle - - - - - Gradient Shape Toggle - - - - - Text Path Toggle - - - - - Inset Stroke From Path Flag - - - - - Connection Point Type - - - - - Connection Points - - - - - Connection Point Connect Angles - - - - - Extrusion Toggle - - - - - - - - Shadow Toggle - - - - - Shadow Type - - - - - Shadow Transparency - - - - - Shadow Primary Color - - - - - Shadow Opacity - - - - - Shadow Primary Offset - - - - - Shadow Secondary Color - - - - - Shadow Secondary Offset - - - - - Shadow Origin - - - - - Shadow Perspective Matrix - - - - - - - - - - - - - - - - - - - - - - - Text Box Inset - - - - - Text Box Single-Click Selection Toggle - - - - - Text Inset Mode - - - - - - - - - Text Path Toggle - - - - - Shape Fit Toggle - - - - - Path Fit Toggle - - - - - Text Path Trim Toggle - - - - - Text X-Scaling - - - - - Text Path Text - - - - - - Arc Segment - - - - - Bezier Curve - - - - - Image File - - - - - Line - - - - - Oval - - - - - Multiple Path Line - - - - - Rectangle - - - - - Rounded Rectangle - - - - - - - - - - - Starting Angle - - - - - Ending Angle - - - - - - - - - - - - Curve Starting Point - - - - - First Curve Control Point - - - - - Second Curve Control Point - - - - - Curve Ending Point - - - - - - - - - - - - - - - - - - - - Line Start - - - - - Line End Point - - - - - - - - - - - - - - - - - - - - Points for Compound Line - - - - - - - - - - - - - - - - - - - Rounded Corner Arc Size - - - - - - VML Extension Handling Behaviors - - - - - Not renderable - - - - - Editable - - - - - Renderable - - - - - - - Shape Fill Type - - - - - Solid Fill - - - - - Linear Gradient - - - - - Radial Gradient - - - - - Tiled Image - - - - - Image Pattern - - - - - Stretch Image to Fit - - - - - - - Gradient Fill Computation Type - - - - - No Gradient Fill - - - - - Linear Fill - - - - - Sigma Fill - - - - - Application Default Fill - - - - - Linear Sigma Fill - - - - - - - Shadow Type - - - - - Single Shadow - - - - - Double Shadow - - - - - Embossed Shadow - - - - - Perspective Shadow - - - - - - - Stroke Line Style - - - - - Single Line - - - - - Two Thin Lines - - - - - Thin Line Outside Thick Line - - - - - Thick Line Outside Thin Line - - - - - Thck Line Between Thin Lines - - - - - - - Line Join Type - - - - - Round Joint - - - - - Bevel Joint - - - - - Miter Joint - - - - - - - Stroke End Cap Type - - - - - Flat End - - - - - Square End - - - - - Round End - - - - - - - Stroke Arrowhead Length - - - - - Short Arrowhead - - - - - Medium Arrowhead - - - - - Long Arrowhead - - - - - - - Stroke Arrowhead Width - - - - - Narrow Arrowhead - - - - - Medium Arrowhead - - - - - Wide Arrowhead - - - - - - - Stroke Arrowhead Type - - - - - No Arrowhead - - - - - Block Arrowhead - - - - - Classic Arrowhead - - - - - Oval Arrowhead - - - - - Diamond Arrowhead - - - - - Open Arrowhead - - - - - - - Image Scaling Behavior - - - - - Ignore Aspect Ratio - - - - - At Most - - - - - At Least - - - - - - - Shape Grouping Types - - - - - Shape Canvas - - - - - Organization Chart Diagram - - - - - Radial Diagram - - - - - Cycle Diagram - - - - - Pyramid Diagram - - - - - Venn Diagram - - - - - Bullseye Diagram - - - - - diff --git a/tests/resources/schema/ooxml/vml-officeDrawing.xsd b/tests/resources/schema/ooxml/vml-officeDrawing.xsd deleted file mode 100644 index 3877d69a53..0000000000 --- a/tests/resources/schema/ooxml/vml-officeDrawing.xsd +++ /dev/null @@ -1,1614 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - New Shape Defaults - - - - - Shape Layout Properties - - - - - Digital Signature Line - - - - - Ink - - - - - VML Diagram - - - - - Storage for Alternate Math Content - - - - - - - - - - - - - Callout - - - - - Shape Protections - - - - - Most Recently Used Colors - - - - - UI Default Colors - - - - - - - Shape ID Optional Storage - - - - - Shape Styling Properties - - - - - Shape Fill Toggle - - - - - Default Fill Color - - - - - Shape Stroke Toggle - - - - - Shape Stroke Color - - - - - Allow in Table Cell - - - - - - - - Ink Data - - - - - Annotation Flag - - - - - Content Type - - - - - - - - Signature Line Flag - - - - - Unique ID - - - - - Signature Provider ID - - - - - Use Signing Instructions Flag - - - - - User-specified Comments Flag - - - - - Show Signed Date Flag - - - - - Suggested Signer Line 1 - - - - - Suggested Signer Line 2 - - - - - Suggested Signer E-mail Address - - - - - Instructions for Signing - - - - - Additional Signature Information - - - - - Signature Provider Download URL - - - - - - - - Shape ID Map - - - - - Shape Grouping History - - - - - Rule Set - - - - - - - - - - Shape IDs - - - - - - - - Regroup Entry - - - - - - - - - New Group ID - - - - - Old Group ID - - - - - - - - Rule - - - - - - - - - - Shape Reference - - - - - - Rule ID - - - - - Rule Type - - - - - Alignment Rule Type - - - - - Rule Shape Reference - - - - - - - Start Point Connection Flag - - - - - End Point Connection Flag - - - - - Proxy Shape Reference - - - - - Connection Location - - - - - - - - Diagram Relationship Table - - - - - - - Diagram Style Options - - - - - Diagram Automatic Format - - - - - Diagram Reverse Direction - - - - - Diagram Automatic Layout - - - - - Diagram Layout X Scale - - - - - Diagram Layout Y Scale - - - - - Diagram Font Size - - - - - Diagram Layout Extents - - - - - Diagram Base Font Size - - - - - - - - - - Content Type of Alternate Math Content - - - - - - Alternate Math Content Type - - - - - - - - Diagram Relationship - - - - - - - - - - Diagram Relationship Source Shape - - - - - Diagram Relationship Destination Shape - - - - - Diagram Relationship Center Shape - - - - - - - - Recent colors - - - - - - - - Default stroke color - - - - - Default fill color - - - - - Default shadow color - - - - - Default extrusion color - - - - - - Skew Transform - - - - - 3D Extrusion - - - - - - - Embedded OLE Object - - - - - Complex - - - - - Text Box Left Stroke - - - - - Text Box Top Stroke - - - - - Text Box Right Stroke - - - - - Text Box Bottom Stroke - - - - - Text Box Interior Stroke - - - - - Shape Clipping Path - - - - - Shape Fill Extended Properties - - - - - - - Skew ID - - - - - Skew Toggle - - - - - Skew Offset - - - - - Skew Origin - - - - - Skew Perspective Matrix - - - - - - - - Extrusion Toggle - - - - - Extrusion Type - - - - - Extrusion Render Mode - - - - - Extrusion Viewpoint Origin - - - - - Extrusion Viewpoint - - - - - Extrusion Direction - - - - - Extrusion Skew Angle - - - - - Extrusion Skew - - - - - Forward Extrusion - - - - - Backward Extrusion Depth - - - - - Rotation Axis - - - - - Rotation Around Axis - - - - - Rotation Toggle - - - - - Center of Rotation Toggle - - - - - Rotation Center - - - - - X-Y Rotation Angle - - - - - Extrusion Color Mode - - - - - Extrusion Color - - - - - Shininess - - - - - Specularity - - - - - Diffuse Reflection - - - - - Metallic Surface Toggle - - - - - Simulated Bevel - - - - - Faceting Quality - - - - - Shape Face Lighting Toggle - - - - - Brightness - - - - - Primary Light Position - - - - - Primary Light Intensity - - - - - Primary Light Harshness Toggle - - - - - Secondary Light Position - - - - - Secondary Light Intensity - - - - - Secondary Light Harshness Toggle - - - - - - - - Callout toggle - - - - - Callout type - - - - - Callout gap - - - - - Callout angle - - - - - Callout automatic drop toggle - - - - - Callout drop position - - - - - Callout drop distance - - - - - Callout length toggle - - - - - Callout length - - - - - Callout accent bar toggle - - - - - Callout text border toggle - - - - - Callout flip x - - - - - Callout flip y - - - - - - - - Position Lock - - - - - Selection Lock - - - - - Grouping Lock - - - - - Ungrouping Lock - - - - - Rotation Lock - - - - - Cropping Lock - - - - - Vertices Lock - - - - - Handles Lock - - - - - Text Lock - - - - - Aspect Ratio Lock - - - - - AutoShape Type Lock - - - - - - - - Embedded Object Alternate Image Request - - - - - Embedded Object Cannot Be Refreshed - - - - - WordprocessingML Field Switches - - - - - - Embedded Object Type - - - - - Object Link Identifier - - - - - Embedded Object Shape - - - - - Embedded Object Representation - - - - - Unique ID for Embedded Object - - - - - Relationship - - - - - Update Mode for Embedded Object - - - - - - - - - - - Stroke Toggle - - - - - Stroke Weight - - - - - Stroke Color - - - - - Stroke Alternate Pattern Color - - - - - Stroke Opacity - - - - - Stroke Line Style - - - - - Miter Joint Limit - - - - - Line End Join Style) - - - - - Line End Cap - - - - - Stroke Dash Pattern - - - - - Inset Border From Path - - - - - Stroke Image Style - - - - - Stroke Image Location - - - - - Stroke Image Aspect Ratio - - - - - Stroke Image Size - - - - - Stoke Image Alignment - - - - - Line Start Arrowhead - - - - - Line Start Arrowhead Width - - - - - Line Start Arrowhead Length - - - - - Line End Arrowhead - - - - - Line End Arrowhead Width - - - - - Line End Arrowhead Length - - - - - Original Image Reference - - - - - Alternate Image Reference - - - - - Stroke Title - - - - - Force Dashed Outline - - - - - - - Path Definition - - - - - - - - Fill Type - - - - - - Rule Type - - - - - Arc Rule - - - - - Callout Rule - - - - - Connector Rule - - - - - Alignment Rule - - - - - - - Alignment Type - - - - - Top Alignment - - - - - Middle Alignment - - - - - Bottom Alignment - - - - - Left Alignment - - - - - Center Alignment - - - - - Right Alignment - - - - - - - Black And White Modes - - - - - Color - - - - - Automatic - - - - - Grayscale - - - - - Light grayscale - - - - - Inverse Grayscale - - - - - Gray Outlines - - - - - Black And White - - - - - Black - - - - - White - - - - - Hide Object When Displayed in Black and White - - - - - Do Not Show - - - - - Black Text And Lines - - - - - - - Screen Sizes Type - - - - - 544x376 pixels - - - - - 640x480 pixels - - - - - 720x512 pixels - - - - - 800x600 pixels - - - - - 1024x768 pixels - - - - - 1152x862 pixels - - - - - - - Inset Margin Type - - - - - Automatic Margins - - - - - Custom Margins - - - - - - - Extrusion Color Types - - - - - Use Shape Fill Color - - - - - Use Custom Color - - - - - - - Content Type - - - - - - Diagram Layout Type - - - - - Top-down Centered - - - - - Hanging Both Sides - - - - - Hanging Right Side - - - - - Hanging Left Side - - - - - - - Extrusion Type - - - - - Perspective Projection - - - - - Parallel Projection - - - - - - - Extrusion Rendering Types - - - - - Solid - - - - - Wireframe - - - - - Bounding Cube - - - - - - - Extrusion Planes - - - - - XY Plane - - - - - ZX Plane - - - - - YZ Plane - - - - - - - Callout Angles - - - - - Any Angle - - - - - 30 degrees - - - - - 45 degrees - - - - - 60 degrees - - - - - 90 degrees - - - - - Automatic Angle - - - - - - - Callout Drop Location - - - - - - Callout Placement - - - - - Top placement - - - - - Center placement - - - - - Bottom placement - - - - - User-defined placement - - - - - - - Connector Type - - - - - No Connector - - - - - Straight Connector - - - - - Elbow Connector - - - - - Curved Connector - - - - - - - Alignment Type - - - - - Left Alignment - - - - - Right Alignment - - - - - Center Alignment - - - - - - - Connection Locations Type - - - - - No - - - - - Four Connections - - - - - Edit Point Connections - - - - - Custom Connections - - - - - - - Embedded Object Alternate Image Request Types - - - - - - Embedded Connection Type - - - - - Embedded Object - - - - - Linked Object - - - - - - - Embedded Object Representations - - - - - Snapshot - - - - - Icon - - - - - - - Embedded Object Update Method Type - - - - - Server Application Update - - - - - User Update - - - - - - - Shape Fill Type - - - - - Centered Radial Gradient - - - - - Solid Fill - - - - - Image Pattern - - - - - Tiled Image - - - - - Stretch Image to Fit - - - - - Unscaled Gradient - - - - - Radial Gradient - - - - - Linear Gradient - - - - - Use Background Fill - - - - - diff --git a/tests/resources/schema/ooxml/vml-presentationDrawing.xsd b/tests/resources/schema/ooxml/vml-presentationDrawing.xsd deleted file mode 100644 index 03f0c91809..0000000000 --- a/tests/resources/schema/ooxml/vml-presentationDrawing.xsd +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Ink Annotation Flag - - - - - VML Diagram Text - - - - - - - Text Reference - - - - diff --git a/tests/resources/schema/ooxml/vml-spreadsheetDrawing.xsd b/tests/resources/schema/ooxml/vml-spreadsheetDrawing.xsd deleted file mode 100644 index 3c7802b876..0000000000 --- a/tests/resources/schema/ooxml/vml-spreadsheetDrawing.xsd +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - Attached Object Data - - - - - - - Move with Cells - - - - - Resize with Cells - - - - - Anchor - - - - - Lock Toggle - - - - - Default Size Toggle - - - - - Print Toggle - - - - - Macro Disable Toggle - - - - - AutoFill - - - - - AutoLine - - - - - Automatically Size - - - - - Reference to Custom Function - - - - - Horizontal Text Alignment - - - - - Vertical Text Alignment - - - - - Text Lock - - - - - Far East Alignment Toggle - - - - - Password Edit - - - - - Default Button - - - - - Help Button - - - - - Cancel Button - - - - - Dismiss Button - - - - - Primary Keyboard Accelerator - - - - - Secondary Keyboard Accelerator - - - - - Comment Row Target - - - - - Comment Column Target - - - - - Comment Visibility Toggle - - - - - Comment's Row is Hidden - - - - - Comment's Column is Hidden - - - - - Validation Type - - - - - Multi-line - - - - - Vertical Scroll - - - - - Valid ID - - - - - List Items Source Range - - - - - Minimum Width - - - - - Selected Entry - - - - - Disable 3D - - - - - Selection Type - - - - - Multiple Selections - - - - - Callback Type - - - - - Non-linked List Item - - - - - Dropdown Style - - - - - Dropdown Color Toggle - - - - - Dropdown Maximum Lines - - - - - Checked - - - - - Linked Formula - - - - - Camera Source Range - - - - - Disable 3D - - - - - First Radio Button - - - - - Linked Formula - Group Box - - - - - Scroll bar position - - - - - Scroll Bar Minimum - - - - - Scroll Bar Maximum - - - - - Scroll Bar Increment - - - - - Scroll Bar Page Increment - - - - - Scroll Bar Orientation - - - - - Scroll Bar Width - - - - - Embedded Control - - - - - Clipboard Format - - - - - Camera Tool - - - - - Recalculation Toggle - - - - - Font AutoScale - - - - - Dynamic Data Exchange - - - - - UI Object Toggle - - - - - HTML Script Text - - - - - HTML Script Attributes - - - - - HTML Script Language - - - - - HTML Script Location - - - - - Text Formula - - - - - - Object type - - - - - - Clipboard Format Type - - - - - - Object Type - - - - - Pushbutton - - - - - Checkbox - - - - - Dialog - - - - - Dropdown Box - - - - - Editable Text Field - - - - - Group Box - - - - - Label - - - - - Auditing Line - - - - - List Box - - - - - Movie - - - - - Comment - - - - - Image - - - - - Radio Button - - - - - Auditing Rectangle - - - - - Scroll Bar - - - - - Spin Button - - - - - Plain Shape - - - - - Group - - - - - Plain Rectangle - - - - - diff --git a/tests/resources/schema/ooxml/vml-wordprocessingDrawing.xsd b/tests/resources/schema/ooxml/vml-wordprocessingDrawing.xsd deleted file mode 100644 index f76a2394a2..0000000000 --- a/tests/resources/schema/ooxml/vml-wordprocessingDrawing.xsd +++ /dev/null @@ -1,358 +0,0 @@ - - - - - Top Border - - - - - Left Border - - - - - Right Border - - - - - Bottom Border - - - - - - Border Style - - - - - Border Width - - - - - Border shadow - - - - - - Text Wrapping - - - - - - Wrapping type - - - - - Wrapping side - - - - - Horizontal Positioning Base - - - - - Vertical Positioning Base - - - - - - Anchor Location Is Locked - - - - - - Border Type - - - - - No Border - - - - - Single Line Border - - - - - Thick Line Border - - - - - Double Line Border - - - - - Hairline Border - - - - - Dotted Border - - - - - pecifies a line border consisting of a dashed line around the parent object. - - - - - - Dot Dash Border - - - - - Dash Dot Dot Border - - - - - Triple Line Border - - - - - Thin Thick Small Gap Border - - - - - Small thick-thin lines border - - - - - Small thin-thick-thin Lines Border - - - - - Thin Thick Line Border - - - - - Thick Thin Line Border - - - - - Thin-thick-thin Border - - - - - Thin Thick Large Gap Border - - - - - Thick Thin Large Gap Border - - - - - Large thin-thick-thin Border - - - - - Wavy Border - - - - - Double Wavy Lines Border - - - - - Small Dash Border - - - - - Stroked Dash Dot Border - - - - - 3D Embossed Border - - - - - 3D Engraved Border - - - - - Outset Border - - - - - Inset Border - - - - - - - Border Shadow Type - - - - - True - - - - - True - - - - - False - - - - - False - - - - - - - Text Wrapping Type - - - - - Top and bottom wrapping - - - - - Square wrapping - - - - - No wrapping - - - - - Tight wrapping - - - - - Through wrapping - - - - - - - Text Wrapping Side - - - - - Both sides - - - - - Left side - - - - - Right side - - - - - Largest side - - - - - - - Horizontal Anchor Type - - - - - Margin - - - - - Page - - - - - Text - - - - - Character - - - - - - - Vertical Anchor Type - - - - - Margin - - - - - Page - - - - - Text - - - - - Line - - - - - diff --git a/tests/resources/schema/ooxml/wml.xsd b/tests/resources/schema/ooxml/wml.xsd index b41251121e..578157ea8e 100644 --- a/tests/resources/schema/ooxml/wml.xsd +++ b/tests/resources/schema/ooxml/wml.xsd @@ -1,11821 +1,3460 @@ - + - - - - - - - - - - - - On/Off Value - - - - - - Eight Digit Hexadecimal Value - - - - - - - - - Long Hexadecimal Number Value - - - - - - Four Digit Hexadecimal Value - - - - - - - - Two Digit Hexadecimal Value - - - - - - - - - Value - - - - - IANA Name of Character Set - - - - - - Percentage Measurement - - - - - - Percentage Value Without Percent Sign - - - - - - Decimal Number Value - - - - - - - Decimal Number Value - - - - - - - Positive Decimal Number Value - - - - - - - Value in Percent - - - - - - - Measurement in Twentieths of a Point - - - - - - Signed Measurement in Twentieths of a Point - - - - - - - Positive or Negative Value in Twentieths of a Point - - - - - - Measurement in Pixels - - - - - - - Measurement in Pixels - - - - - - Measurement in Half-Points - - - - - - - Half Point Measurement - - - - - - Signed Measurement in Half-Points - - - - - - - Signed Half-Point Measurement - - - - - - Standard Date and Time Storage Format - - - - - - Script Subroutine Name Value - - - - - - - - - Name of Script Function - - - - - - Measurement in Eighths of a Point - - - - - - Measurement in Points - - - - - - - String Value - - - - - - Text Expansion/Compression Percentage - - - - - - - - - - Text Expansion/Compression Value - - - - - - Text Highlight Colors - - - - - Black Highlighting Color - - - - - Blue Highlighting Color - - - - - Cyan Highlighting Color - - - - - Green Highlighting Color - - - - - Magenta Highlighting Color - - - - - Red Highlighting Color - - - - - Yellow Highlighting Color - - - - - White Highlighting Color - - - - - Dark Blue Highlighting Color - - - - - Dark Cyan Highlighting Color - - - - - Dark Green Highlighting Color - - - - - Dark Magenta Highlighting Color - - - - - Dark Red Highlighting Color - - - - - Dark Yellow Highlighting Color - - - - - Dark Gray Highlighting Color - - - - - Light Gray Highlighting Color - - - - - No Text Highlighting - - - - - - - - Highlighting Color - - - - - - ‘Automatic’ Color Value - - - - - Automatically Determined Color - - - - - - - Color Value - - - - - - - Run Content Color - - - - - Run Content Theme Color - - - - - Run Content Theme Color Tint - - - - - Run Content Theme Color Shade - - - - - - - Language Code - - - - - - - GUID Value - - - - - - Underline Patterns - - - - - Single Underline - - - - - Underline Non-Space Characters Only - - - - - Double Underline - - - - - Thick Underline - - - - - Dotted Underline - - - - - Thick Dotted Underline - - - - - Dashed Underline - - - - - Thick Dashed Underline - - - - - Long Dashed Underline - - - - - Thick Long Dashed Underline - - - - - Dash-Dot Underline - - - - - Thick Dash-Dot Underline - - - - - Dash-Dot-Dot Underline - - - - - Thick Dash-Dot-Dot Underline - - - - - Wave Underline - - - - - Heavy Wave Underline - - - - - Double Wave Underline - - - - - No Underline - - - - - - - - Underline Style - - - - - Underline Color - - - - - Underline Theme Color - - - - - Underline Theme Color Tint - - - - - Underline Theme Color Shade - - - - - - Animated Text Effects - - - - - Blinking Background Animation - - - - - Colored Lights Animation - - - - - Black Dashed Line Animation - - - - - Marching Red Ants - - - - - Shimmer Animation - - - - - Sparkling Lights Animation - - - - - No Animation - - - - - - - - Animated Text Effect Type - - - - - - Border Styles - - - - - No Border - - - - - No Border - - - - - Single Line Border - - - - - Single Line Border - - - - - Double Line Border - - - - - Dotted Line Border - - - - - Dashed Line Border - - - - - Dot Dash Line Border - - - - - Dot Dot Dash Line Border - - - - - Triple Line Border - - - - - Thin, Thick Line Border - - - - - Thick, Thin Line Border - - - - - Thin, Thick, Thin Line Border - - - - - Thin, Thick Line Border - - - - - Thick, Thin Line Border - - - - - Thin, Thick, Thin Line Border - - - - - Thin, Thick Line Border - - - - - Thick, Thin Line Border - - - - - Thin, Thick, Thin Line Border - - - - - Wavy Line Border - - - - - Double Wave Line Border - - - - - Dashed Line Border - - - - - Dash Dot Strokes Line Border - - - - - 3D Embossed Line Border - - - - - 3D Engraved Line Border - - - - - Outset Line Border - - - - - Inset Line Border - - - - - Apples Art Border - - - - - Arched Scallops Art Border - - - - - Baby Pacifier Art Border - - - - - Baby Rattle Art Border - - - - - Three Color Balloons Art Border - - - - - Hot Air Balloons Art Border - - - - - Black Dash Art Border - - - - - Black Dot Art Border - - - - - Black Square Art Border - - - - - Thin Line Art Border - - - - - White Dash Art Border - - - - - White Dot Art Border - - - - - White Square Art Border - - - - - Wide Inline Art Border - - - - - Wide Midline Art Border - - - - - Wide Outline Art Border - - - - - Bats Art Border - - - - - Birds Art Border - - - - - Birds Flying Art Border - - - - - Cabin Art Border - - - - - Cake Art Border - - - - - Candy Corn Art Border - - - - - Knot Work Art Border - - - - - Certificate Banner Art Border - - - - - Chain Link Art Border - - - - - Champagne Bottle Art Border - - - - - Black and White Bar Art Border - - - - - Color Checked Bar Art Border - - - - - Checkerboard Art Border - - - - - Christmas Tree Art Border - - - - - Circles And Lines Art Border - - - - - Circles and Rectangles Art Border - - - - - Wave Art Border - - - - - Clocks Art Border - - - - - Compass Art Border - - - - - Confetti Art Border - - - - - Confetti Art Border - - - - - Confetti Art Border - - - - - Confetti Streamers Art Border - - - - - Confetti Art Border - - - - - Corner Triangle Art Border - - - - - Dashed Line Art Border - - - - - Dotted Line Art Border - - - - - Maze Art Border - - - - - Butterfly Art Border - - - - - Fish Art Border - - - - - Insects Art Border - - - - - Ladybug Art Border - - - - - Cross-stitch Art Border - - - - - Cupid Art Border - - - - - Archway Art Border - - - - - Color Archway Art Border - - - - - Blocks Art Border - - - - - Gray Diamond Art Border - - - - - Double D Art Border - - - - - Diamond Art Border - - - - - Earth Art Border - - - - - Earth Art Border - - - - - Earth Art Border - - - - - Shadowed Square Art Border - - - - - Shadowed Square Art Border - - - - - Painted Egg Art Border - - - - - Fans Art Border - - - - - Film Reel Art Border - - - - - Firecracker Art Border - - - - - Flowers Art Border - - - - - Daisy Art Border - - - - - Flowers Art Border - - - - - Flowers Art Border - - - - - Pansy Art Border - - - - - Red Rose Art Border - - - - - Roses Art Border - - - - - Flowers in a Teacup Art Border - - - - - Small Flower Art Border - - - - - Gems Art Border - - - - - Gingerbread Man Art Border - - - - - Triangle Gradient Art Border - - - - - Handmade Art Border - - - - - Handmade Art Border - - - - - Heart-Shaped Balloon Art Border - - - - - Gray Heart Art Border - - - - - Hearts Art Border - - - - - Pattern Art Border - - - - - Holly Art Border - - - - - House Art Border - - - - - Circular Art Border - - - - - Ice Cream Cone Art Border - - - - - Light Bulb Art Border - - - - - Lightning Art Border - - - - - Lightning Art Border - - - - - Map Pins Art Border - - - - - Maple Leaf Art Border - - - - - Muffin Art Border - - - - - Marquee Art Border - - - - - Marquee Art Border - - - - - Moon Art Border - - - - - Mosaic Art Border - - - - - Musical Note Art Border - - - - - Patterned Art Border - - - - - Oval Art Border - - - - - Package Art Border - - - - - Black Palm Tree Art Border - - - - - Color Palm Tree Art Border - - - - - Paper Clip Art Border - - - - - Papyrus Art Border - - - - - Party Favor Art Border - - - - - Party Glass Art Border - - - - - Pencils Art Border - - - - - Character Art Border - - - - - Waving Character Border - - - - - Character With Hat Art Border - - - - - Poinsettia Art Border - - - - - Postage Stamp Art Border - - - - - Pumpkin Art Border - - - - - Push Pin Art Border - - - - - Push Pin Art Border - - - - - Pyramid Art Border - - - - - Pyramid Art Border - - - - - Quadrants Art Border - - - - - Rings Art Border - - - - - Safari Art Border - - - - - Saw tooth Art Border - - - - - Gray Saw tooth Art Border - - - - - Scared Cat Art Border - - - - - Umbrella Art Border - - - - - Shadowed Squares Art Border - - - - - Shark Tooth Art Border - - - - - Bird Tracks Art Border - - - - - Rocket Art Border - - - - - Snowflake Art Border - - - - - Snowflake Art Border - - - - - Sombrero Art Border - - - - - Southwest-themed Art Border - - - - - Stars Art Border - - - - - Stars On Top Art Border - - - - - 3-D Stars Art Border - - - - - Stars Art Border - - - - - Stars With Shadows Art Border - - - - - Sun Art Border - - - - - Whirligig Art Border - - - - - Torn Paper Art Border - - - - - Black Torn Paper Art Border - - - - - Tree Art Border - - - - - Triangle Art Border - - - - - Triangles Art Border - - - - - Triangle Art Border One - - - - - Triangle Art Border Two - - - - - Triangle and Circle Art Border - - - - - Triangle and Circle Art Border Two - - - - - Black and White Shapes Art Border - - - - - Black and White Art Border Two - - - - - Twisted Lines Art Border - - - - - Twisted Lines Art Border - - - - - Vine Art Border - - - - - Wavy Line Art Border - - - - - Weaving Angles Art Border - - - - - Weaving Braid Art Border - - - - - Weaving Ribbon Art Border - - - - - Weaving Strips Art Border - - - - - White Flowers Art Border - - - - - Woodwork Art Border - - - - - Crisscross Art Border - - - - - Triangle Art Border - - - - - Zigzag Art Border - - - - - Zigzag stitch - - - - - Custom Defined Art Border - - - - - - - - Border Style - - - - - Border Color - - - - - Border Theme Color - - - - - Border Theme Color Tint - - - - - Border Theme Color Shade - - - - - Border Width - - - - - Border Spacing Measurement - - - - - Border Shadow - - - - - Create Frame Effect - - - - - - Shading Patterns - - - - - No Pattern - - - - - No Pattern - - - - - 100% Fill Pattern - - - - - Horizontal Stripe Pattern - - - - - Vertical Stripe Pattern - - - - - Reverse Diagonal Stripe Pattern - - - - - Diagonal Stripe Pattern - - - - - Horizontal Cross Pattern - - - - - Diagonal Cross Pattern - - - - - Thin Horizontal Stripe Pattern - - - - - Thin Vertical Stripe Pattern - - - - - Thin Reverse Diagonal Stripe Pattern - - - - - Thin Diagonal Stripe Pattern - - - - - Thin Horizontal Cross Pattern - - - - - Thin Diagonal Cross Pattern - - - - - 5% Fill Pattern - - - - - 10% Fill Pattern - - - - - 12.5% Fill Pattern - - - - - 15% Fill Pattern - - - - - 20% Fill Pattern - - - - - 25% Fill Pattern - - - - - 30% Fill Pattern - - - - - 35% Fill Pattern - - - - - 37.5% Fill Pattern - - - - - 40% Fill Pattern - - - - - 45% Fill Pattern - - - - - 50% Fill Pattern - - - - - 55% Fill Pattern - - - - - 60% Fill Pattern - - - - - 62.5% Fill Pattern - - - - - 65% Fill Pattern - - - - - 70% Fill Pattern - - - - - 75% Fill Pattern - - - - - 80% Fill Pattern - - - - - 85% Fill Pattern - - - - - 87.5% Fill Pattern - - - - - 90% Fill Pattern - - - - - 95% Fill Pattern - - - - - - - - Shading Pattern - - - - - Shading Pattern Color - - - - - Shading Pattern Theme Color - - - - - Shading Pattern Theme Color Tint - - - - - Shading Pattern Theme Color Shade - - - - - Shading Background Color - - - - - Shading Background Theme Color - - - - - Shading Background Theme Color Tint - - - - - Shading Background Theme Color Shade - - - - - - - Subscript/Superscript Value - - - - - - - Value - - - - - Fit Text Run ID - - - - - - Emphasis Mark Type - - - - - No Emphasis Mark - - - - - Dot Emphasis Mark Above Characters - - - - - Comma Emphasis Mark Above Characters - - - - - Circle Emphasis Mark Above Characters - - - - - Dot Emphasis Mark Below Characters - - - - - - - - Emphasis Mark Type - - - - - - - Latin Language - - - - - East Asian Language - - - - - Complex Script Language - - - - - - Two Lines in One Enclosing Character Type - - - - - No Enclosing Brackets - - - - - Round Brackets - - - - - Square Brackets - - - - - Angle Brackets - - - - - Curly Brackets - - - - - - - - East Asian Typography Run ID - - - - - Two Lines in One - - - - - Display Brackets Around Two Lines in One - - - - - Horizontal in Vertical (Rotate Text) - - - - - Compress Rotated Text to Line Height - - - - - - Height Rule - - - - - Determine Height Based On Contents - - - - - Exact Height - - - - - Minimum Height - - - - - - - Text Wrapping around Text Frame Type - - - - - Default Text Wrapping Around Frame - - - - - No Text Wrapping Beside Frame - - - - - Allow Text Wrapping Around Frame - - - - - Tight Text Wrapping Around Frame - - - - - Through Text Wrapping Around Frame - - - - - No Text Wrapping Around Frame - - - - - - - Vertical Anchor Location - - - - - Relative To Vertical Text Extents - - - - - Relative To Margin - - - - - Relative To Page - - - - - - - Horizontal Anchor Location - - - - - Relative to Text Extents - - - - - Relative To Margin - - - - - Relative to Page - - - - - - - Text Frame Drop Cap Location - - - - - Not Drop Cap - - - - - Drop Cap Inside Margin - - - - - Drop Cap Outside Margin - - - - - - - - Drop Cap Frame - - - - - Drop Cap Vertical Height in Lines - - - - - Frame Width - - - - - Frame Height - - - - - Vertical Frame Padding - - - - - Horizontal Frame Padding - - - - - Text Wrapping Around Frame - - - - - Frame Horizontal Positioning Base - - - - - Frame Vertical Positioning Base - - - - - Absolute Horizontal Position - - - - - Relative Horizontal Position - - - - - Absolute Vertical Position - - - - - Relative Vertical Position - - - - - Frame Height Type - - - - - Lock Frame Anchor to Paragraph - - - - - - Custom Tab Stop Type - - - - - No Tab Stop - - - - - Leading Tab - - - - - Centered Tab - - - - - Trailing Tab - - - - - Decimal Tab - - - - - Bar Tab - - - - - List Tab - - - - - Leading Tab - - - - - Trailing Tab - - - - - - - Custom Tab Stop Leader Character - - - - - No tab stop leader - - - - - Dotted leader line - - - - - Dashed tab stop leader line - - - - - Solid leader line - - - - - Heavy solid leader line - - - - - Middle dot leader line - - - - - - - - Tab Stop Type - - - - - Tab Leader Character - - - - - Tab Stop Position - - - - - - Line Spacing Rule - - - - - Automatically Determined Line Height - - - - - Exact Line Height - - - - - Minimum Line Height - - - - - - - - Spacing Above Paragraph - - - - - Spacing Above Paragraph IN Line Units - - - - - Automatically Determine Spacing Above Paragraph - - - - - Spacing Below Paragraph - - - - - Spacing Below Paragraph in Line Units - - - - - Automatically Determine Spacing Below Paragraph - - - - - Spacing Between Lines in Paragraph - - - - - Spacing Between Lines - - - - - - - Start Indentation - - - - - Start Indentation in Character Units - - - - - End Indentation - - - - - End Indentation in Character Units - - - - - Start Indentation - - - - - Start Indentation in Character Units - - - - - End Indentation - - - - - End Indentation in Character Units - - - - - Indentation Removed from First Line - - - - - Indentation Removed From First Line in Character Units - - - - - Additional First Line Indentation - - - - - Additional First Line Indentation in Character Units - - - - - - Horizontal Alignment Type - - - - - Align To Leading Edge - - - - - Align Center - - - - - Align to Trailing Edge - - - - - Justified - - - - - Medium Kashida Length - - - - - Distribute All Characters Equally - - - - - Align to List Tab - - - - - Widest Kashida Length - - - - - Low Kashida Length - - - - - Thai Language Justification - - - - - Align to Leading Edge - - - - - Align to Trailing Edge - - - - - - - Table Alignment Type - - - - - Align Center - - - - - Align to Trailing Edge - - - - - Align to Starting Edge - - - - - Align to Trailing Edge - - - - - Align to Starting Edge - - - - - - - - Alignment Type - - - - - - - Alignment Type - - - - - - Document View Values - - - - - Default View - - - - - Print Layout View - - - - - Outline View - - - - - Master Document View - - - - - Draft View - - - - - Web Page View - - - - - - - - Document View Setting Value - - - - - - Magnification Preset Values - - - - - No Preset Magnification - - - - - Display One Full Page - - - - - Display Page Width - - - - - Display Text Width - - - - - - - - Zoom Type - - - - - Zoom Percentage - - - - - - - Writing Style Language - - - - - Grammatical Engine ID - - - - - Grammatical Check Engine Version - - - - - Natural Language Grammar Check - - - - - Check Stylistic Rules With Grammar - - - - - Application Name - - - - - - Proofing State Values - - - - - Check Completed - - - - - Check Not Completed - - - - - - - - Spell Checking State - - - - - Grammatical Checking State - - - - - - Document Classification Values - - - - - - - Document Classification Value - - - - - - Document Protection Types - - - - - No Editing Restrictions - - - - - Allow No Editing - - - - - Allow Editing of Comments - - - - - Allow Editing With Revision Tracking - - - - - Allow Editing of Form Fields - - - - - - - - Cryptographic Algorithm Name - - - - - Password Hash Value - - - - - Salt Value for Password Verifier - - - - - Iterations to Run Hashing Algorithm - - - - - - - Cryptographic Provider Type - - - - - Cryptographic Algorithm Class - - - - - Cryptographic Algorithm Type - - - - - Cryptographic Hashing Algorithm - - - - - Iterations to Run Hashing Algorithm - - - - - Cryptographic Provider - - - - - Cryptographic Algorithm Extensibility - - - - - Algorithm Extensibility Source - - - - - Cryptographic Provider Type Extensibility - - - - - Provider Type Extensibility Source - - - - - Password Hash - - - - - Salt for Password Verifier - - - - - - - Document Editing Restrictions - - - - - Only Allow Formatting With Unlocked Styles - - - - - Enforce Document Protection Settings - - - - - - - - Source Document Types - - - - - Catalog Source Document - - - - - Envelope Source Document - - - - - Mailing Label Source Document - - - - - Form Letter Source Document - - - - - E-Mail Source Document - - - - - Fax Source Document - - - - - - - - Mail Merge Source Document Type - - - - - - Mail Merge Data Source Type Values - - - - - - - Value - - - - - - Merged Document Destination Types - - - - - Send Merged Documents to New Documents - - - - - Send Merged Documents to Printer - - - - - Send Merged Documents as E-mail Messages - - - - - Send Merged Documents as Faxes - - - - - - - - Mail Merge Merged Document Type - - - - - - Merge Field Mapping Types - - - - - Field Not Mapped - - - - - Field Mapping to Data Source Column - - - - - - - - Merge Field Mapping Type - - - - - - - Display Visual Indicator Of Markup Area - - - - - Display Comments - - - - - Display Content Revisions - - - - - Display Formatting Revisions - - - - - Display Ink Annotations - - - - - - - Language For Which Custom Line Breaking Rule Applies - - - - - Characters For Custom Line Breaking Rule - - - - - - Text Flow Direction - - - - - Lines Flow From Top to Bottom - - - - - Lines Flow From Right to Left - - - - - Lines Flow From Left to Right - - - - - Lines Flow From Top to Bottom Rotated - - - - - Lines Flow From Right to Left Rotated - - - - - Lines Flow From Left to Right Rotated - - - - - Lines Flow From Left to Right - - - - - Lines Flow From Top To Bottom - - - - - Lines Flow From Top to Bottom, Rotated - - - - - Lines Flow From Left to Right, Rotated - - - - - Lines Flow From Right to Left - - - - - Lines Flow From Right to Left, Rotated - - - - - - - - Direction of Text Flow - - - - - - Vertical Text Alignment Types - - - - - Align Text at Top - - - - - Align Text at Center - - - - - Align Text at Baseline - - - - - Align Text at Bottom - - - - - Automatically Determine Alignment - - - - - - - - Vertical Character Alignment Position - - - - - - Location of Custom XML Markup Displacing an Annotation - - - - - Displaced by Next Custom XML Markup Tag - - - - - Displaced by Previous Custom XML Markup Tag - - - - - - - Table Cell Vertical Merge Revision Type - - - - - Vertically Merged Cell - - - - - Vertically Split Cell - - - - - - - - Annotation Identifier - - - - - - - - - Annotation Author - - - - - Annotation Date - - - - - - - - - - - Revised Vertical Merge Setting - - - - - Vertical Merge Setting Removed by Revision - - - - - - - - - - - Annotation Marker Displaced By Custom XML Markup - - - - - - - - - - - Annotation Marker Relocated For Custom XML Markup - - - - - - - - - - - First Table Column Covered By Bookmark - - - - - Last Table Column Covered By Bookmark - - - - - - - - - - - Bookmark Name - - - - - - - - - - - Annotation Author - - - - - Annotation Date - - - - - - - - - - - - - - Initials of Comment Author - - - - - - - - - - - Previous Numbering Value - - - - - - - - - - - - Previous Table-Level Property Exceptions - - - - - - - - - - - - - Previous Table Cell Properties - - - - - - - - - - - - - Previous Table Row Properties - - - - - - - - - - - - - Previous Table Grid - - - - - - - - - - - - - Previous Table Properties - - - - - - - - - - - - - Previous Section Properties - - - - - - - - - - - - - Previous Paragraph Properties - - - - - - - - - - - - - Previous Run Properties - - - - - - - - - - - - - Previous Run Properties for the Paragraph Mark - - - - - - - - - - - - - - - - - - - - - Table Cell Insertion - - - - - Table Cell Deletion - - - - - Vertically Merged/Split Table Cells - - - - - - - - - Bookmark Start - - - - - Bookmark End - - - - - Move Source Location Container - Start - - - - - Move Source Location Container - End - - - - - Move Destination Location Container - Start - - - - - Move Destination Location Container - End - - - - - Comment Anchor Range Start - - - - - Comment Anchor Range End - - - - - Custom XML Markup Insertion Start - - - - - Custom XML Markup Insertion End - - - - - Custom XML Markup Deletion Start - - - - - Custom XML Markup Deletion End - - - - - Custom XML Markup Move Source Start - - - - - Custom XML Markup Move Source End - - - - - Custom XML Markup Move Destination Location Start - - - - - Custom XML Markup Move Destination Location End - - - - - - - - - Numbering Level Reference - - - - - Numbering Definition Instance Reference - - - - - Previous Paragraph Numbering Properties - - - - - Inserted Numbering Properties - - - - - - - - - Paragraph Border Above Identical Paragraphs - - - - - Left Paragraph Border - - - - - Paragraph Border Below Identical Paragraphs - - - - - Right Paragraph Border - - - - - Paragraph Border Between Identical Paragraphs - - - - - Paragraph Border Between Facing Pages - - - - - - - - - Custom Tab Stop - - - - - - - Lines To Tight Wrap Within Text Box - - - - - Do Not Tight Wrap - - - - - Tight Wrap All Lines - - - - - Tight Wrap First and Last Lines - - - - - Tight Wrap First Line - - - - - Tight Wrap Last Line - - - - - - - - Lines to Tight Wrap to Paragraph Extents - - - - - - - - - - Run Properties for the Paragraph Mark - - - - - Section Properties - - - - - Revision Information for Paragraph Properties - - - - - - - - - - - Referenced Paragraph Style - - - - - Keep Paragraph With Next Paragraph - - - - - Keep All Lines On One Page - - - - - Start Paragraph on Next Page - - - - - Text Frame Properties - - - - - Allow First/Last Line to Display on a Separate Page - - - - - Numbering Definition Instance Reference - - - - - Suppress Line Numbers for Paragraph - - - - - Paragraph Borders - - - - - Paragraph Shading - - - - - Set of Custom Tab Stops - - - - - Suppress Hyphenation for Paragraph - - - - - Use East Asian Typography Rules for First and Last Character per Line - - - - - - Allow Line Breaking At Character Level - - - - - Allow Punctuation to Extend Past Text Extents - - - - - Compress Punctuation at Start of a Line - - - - - Automatically Adjust Spacing of Latin and East Asian Text - - - - - Automatically Adjust Spacing of East Asian Text and Numbers - - - - - Right to Left Paragraph Layout - - - - - Automatically Adjust Right Indent When Using Document Grid - - - - - Use Document Grid Settings for Inter-Line Paragraph Spacing - - - - - Spacing Between Lines and Above/Below Paragraph - - - - - Paragraph Indentation - - - - - Ignore Spacing Above and Below When Using Identical Styles - - - - - Use Left/Right Indents as Inside/Outside Indents - - - - - Prevent Text Frames From Overlapping - - - - - Paragraph Alignment - - - - - Paragraph Text Flow Direction - - - - - Vertical Character Alignment on Line - - - - - Allow Surrounding Paragraphs to Tight Wrap to Text Box Contents - - - - - - Associated Outline Level - - - - - Associated HTML div ID - - - - - Paragraph Conditional Formatting - - - - - - - - - - - - - - - - - Unique Name for Embedded Control - - - - - Shape Reference - - - - - Embedded Control Properties Relationship Reference - - - - - - - - - - - - - - Background Color - - - - - Background Theme Color - - - - - Background Theme Color Tint - - - - - Background Theme Color Shade - - - - - - - Relationship to Part - - - - - - - - - - - - - - Embedded Control - - - - - Linked Object Properties - - - - - Embedded Object Properties - - - - - - - - Original Image Width - - - - - Original Image Height - - - - - - - - - - - - Embedded Video - - - - - Floating Embedded Control - - - - - - - - Object Representation - - - - - Relationship to Embedded Object Data - - - - - Object Application - - - - - Object Shape - - - - - Field Switches - - - - - - Embedded Object Representations - - - - - Snapshot - - - - - Icon - - - - - - - - - - Object Update Mode - - - - - Object Refresh Flag - - - - - - - - Embedded Object Update Modes - - - - - Server Application Update - - - - - User Update - - - - - - - - - - - - - - Custom Field Data - - - - - - - Field Codes - - - - - Field Should Not Be Recalculated - - - - - Field Result Invalidated - - - - - - Complex Field Character Type - - - - - Start Character - - - - - Separator Character - - - - - End Character - - - - - - - Help or Status Text Type - - - - - Literal Text - - - - - Glossary Document Entry - - - - - - - Help Text Value - - - - - - - - Status Text Value - - - - - - - - Form Field Name Value - - - - - - - - Text Box Form Field Type Values - - - - - Text Box - - - - - Number - - - - - Date - - - - - Current Time Display - - - - - Current Date Display - - - - - Field Calculation - - - - - - - - Text Box Form Field Type Values - - - - - - - Form Field Name Value - - - - - - - - Custom Field Data - - - - - Form Field Properties - - - - - Previous Numbering Field Properties - - - - - - Field Character Type - - - - - Field Should Not Be Recalculated - - - - - Field Result Invalidated - - - - - - - - Hyperlink Target Frame - - - - - Associated String - - - - - Location in Target Document - - - - - Add To Viewed Hyperlinks - - - - - Hyperlink Anchor - - - - - Hyperlink Target - - - - - - - - Form Field Name - - - - - Form Field Label - - - - - Form Field Navigation Order Index - - - - - Form Field Enabled - - - - - Recalculate Fields When Current Field Is Modified - - - - - Script Function to Execute on Form Field Entry - - - - - Script Function to Execute on Form Field Exit - - - - - Associated Help Text - - - - - Associated Status Text - - - - - - Checkbox Form Field Properties - - - - - Drop-Down List Form Field Properties - - - - - Text Box Form Field Properties - - - - - - - - - Help Text Type - - - - - Help Text Value - - - - - - - Status Text Type - - - - - Status Text Value - - - - - - - - - Checkbox Form Field Size - - - - - Automatically Size Form Field - - - - - - Default Checkbox Form Field State - - - - - Checkbox Form Field State - - - - - - - - - Drop-Down List Selection - - - - - Default Drop-Down List Item Index - - - - - Drop-Down List Entry - - - - - - - - - Text Box Form Field Type - - - - - Default Text Box Form Field String - - - - - Text Box Form Field Maximum Length - - - - - Text Box Form Field Formatting - - - - - - - Section Type - - - - - Next Page Section Break - - - - - Column Section Break - - - - - Continuous Section Break - - - - - Even Page Section Break - - - - - Odd Page Section Break - - - - - - - - Section Type Setting - - - - - - - First Page Printer Tray Code - - - - - Non-First Page Printer Tray Code - - - - - - Numbering Format - - - - - Decimal Numbers - - - - - Uppercase Roman Numerals - - - - - Lowercase Roman Numerals - - - - - Uppercase Latin Alphabet - - - - - Lowercase Latin Alphabet - - - - - Ordinal - - - - - Cardinal Text - - - - - Ordinal Text - - - - - Hexadecimal Numbering - - - - - Chicago Manual of Style - - - - - Ideographs - - - - - Japanese Counting System - - - - - AIUEO Order Half-Width Katakana - - - - - Iroha Ordered Katakana - - - - - Full Width Arabic Numerals - - - - - Half Width Arabic Numerals - - - - - Japanese Legal Numbering - - - - - Japanese Digital Ten Thousand Counting System - - - - - Decimal Numbers Enclosed in a Circle - - - - - Full WidthArabic Numerals Alternate - - - - - AIUEO Order Full-Width Katakana - - - - - Full-Width Iroha Ordered Katakana - - - - - Initial Zero Arabic Numerals - - - - - Bullet - - - - - Korean Ganada Numbering - - - - - Korean Chosung Numbering - - - - - Decimal Numbers Followed by a Period - - - - - Decimal Numbers Enclosed in Parenthesis - - - - - Decimal Numbers Enclosed in a Circle - - - - - Ideographs Enclosed in a Circle - - - - - Traditional Ideograph Format - - - - - Zodiac Ideograph Format - - - - - Traditional Zodiac Ideograph Format - - - - - Taiwanese Counting System - - - - - Traditional Legal Ideograph Format - - - - - Taiwanese Counting Thousand System - - - - - Taiwanese Digital Counting System - - - - - Chinese Counting System - - - - - Chinese Legal Simplified Format - - - - - Chinese Counting Thousand System - - - - - Korean Digital Counting System - - - - - Korean Counting System - - - - - Korean Legal Numbering - - - - - Korean Digital Counting System Alternate - - - - - Vietnamese Numerals - - - - - Lowercase Russian Alphabet - - - - - Uppercase Russian Alphabet - - - - - No Numbering - - - - - Number With Dashes - - - - - Hebrew Letters - - - - - Hebrew Alphabet - - - - - Arabic Alphabet - - - - - Arabic Abjad Numerals - - - - - Hindi Vowels - - - - - Hindi Consonants - - - - - Hindi Numbers - - - - - Hindi Counting System - - - - - Thai Letters - - - - - Thai Numerals - - - - - Thai Counting System - - - - - Thai Baht Text - - - - - Dollar Text - - - - - Custom Defined Number Format - - - - - - - Page Orientation - - - - - Portrait Mode - - - - - Landscape Mode - - - - - - - - Page Width - - - - - Page Height - - - - - Page Orientation - - - - - Printer Paper Code - - - - - - - Top Margin Spacing - - - - - Right Margin Spacing - - - - - Page Bottom Spacing - - - - - Left Margin Spacing - - - - - Spacing to Top of Header - - - - - Spacing to Bottom of Footer - - - - - Page Gutter Spacing - - - - - - Page Border Z-Order - - - - - Page Border Ahead of Text - - - - - Page Border Behind Text - - - - - - - Page Border Display Options - - - - - Display Page Border on All Pages - - - - - Display Page Border on First Page - - - - - Display Page Border on All Pages Except First - - - - - - - Page Border Positioning Base - - - - - Page Border Is Positioned Relative to Page Edges - - - - - Page Border Is Positioned Relative to Text Extents - - - - - - - - - Top Border - - - - - Left Border - - - - - Bottom Border - - - - - Right Border - - - - - - Z-Ordering of Page Border - - - - - Pages to Display Page Borders - - - - - Page Border Positioning - - - - - - - - - Custom Defined Border Relationship Reference - - - - - - - - - - - Custom Defined Bottom Left Border Relationship Reference - - - - - Custom Defined Bottom Right Border Relationship Reference - - - - - - - - - - - Custom Defined Top Left Border Relationship Reference - - - - - Custom Defined Top Right Border Relationship Reference - - - - - - - - Chapter Separator Types - - - - - Hyphen Chapter Separator - - - - - Period Chapter Separator - - - - - Colon Chapter Separator - - - - - Em Dash Chapter Separator - - - - - En Dash Chapter Separator - - - - - - - Line Numbering Restart Position - - - - - Restart Line Numbering on Each Page - - - - - Restart Line Numbering for Each Section - - - - - Continue Line Numbering From Previous Section - - - - - - - - Line Number Increments to Display - - - - - Line Numbering Starting Value - - - - - Distance Between Text and Line Numbering - - - - - Line Numbering Restart Setting - - - - - - - Page Number Format - - - - - Starting Page Number - - - - - Chapter Heading Style - - - - - Chapter Separator Character - - - - - - - Column Width - - - - - Space Before Following Column - - - - - - - - Single Column Definition - - - - - - Equal Column Widths - - - - - Spacing Between Equal Width Columns - - - - - Number of Equal Width Columns - - - - - Draw Line Between Columns - - - - - - Vertical Alignment Type - - - - - Align Top - - - - - Align Center - - - - - Vertical Justification - - - - - Align Bottom - - - - - - - - Vertical Alignment Setting - - - - - - Document Grid Types - - - - - No Document Grid - - - - - Line Grid Only - - - - - Line and Character Grid - - - - - Character Grid Only - - - - - - - - Document Grid Type - - - - - Document Grid Line Pitch - - - - - Document Grid Character Pitch - - - - - - Header or Footer Type - - - - - Even Numbered Pages Only - - - - - Default Header or Footer - - - - - First Page Only - - - - - - - Footnote or Endnote Type - - - - - Normal Footnote/Endnote - - - - - Separator - - - - - Continuation Separator - - - - - Continuation Notice Separator - - - - - - - - - - Header or Footer Type - - - - - - - - - - Header Reference - - - - - Footer Reference - - - - - - - - - - - - Section-Wide Footnote Properties - - - - - Section-Wide Endnote Properties - - - - - Section Type - - - - - Page Size - - - - - Page Margins - - - - - Paper Source Information - - - - - Page Borders - - - - - Line Numbering Settings - - - - - Page Numbering Settings - - - - - Column Definitions - - - - - Only Allow Editing of Form Fields - - - - - Vertical Text Alignment on Page - - - - - Suppress Endnotes In Document - - - - - Different First Page Headers and Footers - - - - - Text Flow Direction - - - - - Right to Left Section Layout - - - - - Gutter on Right Side of Page - - - - - Document Grid - - - - - Reference to Printer Settings Data - - - - - - - - Physical Section Mark Character Revision ID - - - - - Section Deletion Revision ID - - - - - Section Addition Revision ID - - - - - Section Properties Revision ID - - - - - - - - - - - - - - - - Revision Information for Section Properties - - - - - - - - Break Types - - - - - Page Break - - - - - Column Break - - - - - Line Break - - - - - - - Line Break Text Wrapping Restart Location - - - - - Restart On Next Line - - - - - Restart In Next Text Region Left to Right - - - - - Restart In Next Text Region Right to Left - - - - - Restart On Next Full Line - - - - - - - - Break Type - - - - - Restart Location For Text Wrapping Break - - - - - - Absolute Position Tab Alignment - - - - - Left - - - - - Center - - - - - Right - - - - - - - Absolute Position Tab Positioning Base - - - - - Relative To Text Margins - - - - - Relative To Indents - - - - - - - Absolute Position Tab Leader Character - - - - - No Leader Character - - - - - Dot Leader Character - - - - - Hyphen Leader Character - - - - - Underscore Leader Character - - - - - Centered Dot Leader Character - - - - - - - - Positional Tab Stop Alignment - - - - - Positional Tab Base - - - - - Tab Leader Character - - - - - - - Symbol Character Font - - - - - Symbol Character Code - - - - - - Proofing Error Type - - - - - Start of Region Marked as Spelling Error - - - - - End of Region Marked as Spelling Error - - - - - Start of Region Marked as Grammatical Error - - - - - End of Region Marked as Grammatical Error - - - - - - - - Proofing Error Anchor Type - - - - - - Range Permision Editing Group - - - - - No Users Have Editing Permissions - - - - - All Users Have Editing Permissions - - - - - Administrator Group - - - - - Contributors Group - - - - - Editors Group - - - - - Owners Group - - - - - Current Group - - - - - - - - Annotation ID - - - - - Annotation Displaced By Custom XML Markup - - - - - - - - - Editor Group For Range Permission - - - - - Single User For Range Permission - - - - - First Table Column Covered By Range Permission - - - - - Last Table Column Covered By Range Permission - - - - - - - - - - - Content Contains Significant Whitespace - - - - - - - - - - Break - - - - - Text - - - - - Content Part - - - - - Deleted Text - - - - - Field Code - - - - - Deleted Field Code - - - - - Non Breaking Hyphen Character - - - - - Optional Hyphen Character - - - - - Date Block - Short Day Format - - - - - Date Block - Short Month Format - - - - - Date Block - Short Year Format - - - - - Date Block - Long Day Format - - - - - Date Block - Long Month Format - - - - - Date Block - Long Year Format - - - - - Comment Information Block - - - - - Footnote Reference Mark - - - - - Endnote Reference Mark - - - - - Footnote/Endnote Separator Mark - - - - - Continuation Separator Mark - - - - - Symbol Character - - - - - Page Number Block - - - - - Carriage Return - - - - - Tab Character - - - - - Embedded Object - - - - - VML Object - - - - - Complex Field Character - - - - - Phonetic Guide - - - - - Footnote Reference - - - - - Endnote Reference - - - - - Comment Content Reference Mark - - - - - DrawingML Object - - - - - Absolute Position Tab Character - - - - - Position of Last Calculated Page Break - - - - - - - - - - - - Revision Identifier for Run Properties - - - - - Revision Identifier for Run Deletion - - - - - Revision Identifier for Run - - - - - - Font Type Hint - - - - - High ANSI Font - - - - - East Asian Font - - - - - Complex Script Font - - - - - - - Theme Font - - - - - Major East Asian Theme Font - - - - - Major Complex Script Theme Font - - - - - Major ASCII Theme Font - - - - - Major High ANSI Theme Font - - - - - Minor East Asian Theme Font - - - - - Minor Complex Script Theme Font - - - - - Minor ASCII Theme Font - - - - - Minor High ANSI Theme Font - - - - - - - - Font Content Type - - - - - ASCII Font - - - - - High ANSI Font - - - - - East Asian Font - - - - - Complex Script Font - - - - - ASCII Theme Font - - - - - High ANSI Theme Font - - - - - East Asian Theme Font - - - - - Complex Script Theme Font - - - - - - - - Referenced Character Style - - - - - Run Fonts - - - - - Bold - - - - - Complex Script Bold - - - - - Italics - - - - - Complex Script Italics - - - - - Display All Characters As Capital Letters - - - - - Small Caps - - - - - Single Strikethrough - - - - - Double Strikethrough - - - - - Display Character Outline - - - - - Shadow - - - - - Embossing - - - - - Imprinting - - - - - Do Not Check Spelling or Grammar - - - - - Use Document Grid Settings For Inter-Character Spacing - - - - - Hidden Text - - - - - Web Hidden Text - - - - - Run Content Color - - - - - Character Spacing Adjustment - - - - - Expanded/Compressed Text - - - - - Font Kerning - - - - - Vertically Raised or Lowered Text - - - - - Non-Complex Script Font Size - - - - - Complex Script Font Size - - - - - Text Highlighting - - - - - Underline - - - - - Animated Text Effect - - - - - Text Border - - - - - Run Shading - - - - - Manual Run Width - - - - - Subscript/Superscript Text - - - - - Right To Left Text - - - - - Use Complex Script Formatting on Run - - - - - Emphasis Mark - - - - - Languages for Run Content - - - - - East Asian Typography Settings - - - - - Paragraph Mark Is Always Hidden - - - - - Office Open XML Math - - - - - - - - - - Revision Information for Run Properties - - - - - - - - - - - - - - Run Properties - - - - - - - - - - Inserted Math Control Character - - - - - Deleted Math Control Character - - - - - - - - - - - - - - - - - - - - - - Revision Information for Run Properties on the Paragraph Mark - - - - - - - - - Inserted Paragraph - - - - - Deleted Paragraph - - - - - Move Source Paragraph - - - - - Move Destination Paragraph - - - - - - - - - External Content Import Properties - - - - - - Relationship to Part - - - - - - - - Keep Source Formatting on Import - - - - - - - Phonetic Guide Text Alignment - - - - - Center - - - - - Distribute All Characters - - - - - Distribute all Characters w/ Additional Space On Either Side - - - - - Left Aligned - - - - - Right Aligned - - - - - Vertically Aligned to Right of Base Text - - - - - - - - Phonetic Guide Text Alignment Value - - - - - - - - Phonetic Guide Text Alignment - - - - - Phonetic Guide Text Font Size - - - - - Distance Between Phonetic Guide Text and Phonetic Guide Base Text - - - - - - Phonetic Guide Base Text Font Size - - - - - Language ID for Phonetic Guide - - - - - Invalidated Field Cache - - - - - - - - - Phonetic Guide Text Run - - - - - - - - - - - - - Phonetic Guide Properties - - - - - Phonetic Guide Text - - - - - Phonetic Guide Base Text - - - - - - - Locking Types - - - - - SDT Cannot Be Deleted - - - - - Contents Cannot Be Edited At Runtime - - - - - No Locking - - - - - Contents Cannot Be Edited At Runtime And SDT Cannot Be Deleted - - - - - - - - - Locking Type - - - - - - - List Entry Display Text - - - - - List Entry Value - - - - - - Date Storage Format Types - - - - - Same As Display - - - - - XML Schema Date Format - - - - - XML Schema DateTime Format - - - - - - - - Date Storage Type - - - - - - - Calendar Type Value - - - - - - - - Date Display Mask - - - - - Date Picker Language ID - - - - - Custom XML Data Date Storage Format - - - - - Date Picker Calendar Type - - - - - - Last Known Date in XML Schema DateTime Format - - - - - - - - Combo Box List Item - - - - - - Combo Box Last Saved Value - - - - - - - - Document Part Gallery Filter - - - - - Document Part Category Filter - - - - - Built-In Document Part - - - - - - - - - Drop-Down List Item - - - - - - Drop-down List Last Saved Value - - - - - - - - Document Part Reference - - - - - - - - Allow Soft Line Breaks - - - - - - - XML Namespace Prefix Mappings - - - - - XPath - - - - - Custom XML Data Storage ID - - - - - - - - Run Properties For Structured Document Tag Contents - - - - - Friendly Name - - - - - Structured Document Tag Label - - - - - Structured Document Tag Navigation Order Index - - - - - Locking Setting - - - - - Structured Document Tag Placeholder Text - - - - - Current Contents Are Placeholder Text - - - - - XML Mapping - - - - - Remove Structured Document Tag When Contents Are Edited - - - - - Unique ID - - - - - Programmatic Tag - - - - - - Equation Structured Document Tag - - - - - Combo Box Structured Document Tag - - - - - Date Structured Document Tag - - - - - Built-In Document Part Structured Document Tag - - - - - Document Part Gallery Structured Document Tag - - - - - Drop-Down List Structured Document Tag - - - - - Picture Structured Document Tag - - - - - Rich Text Structured Document Tag - - - - - Plain Text Structured Document Tag - - - - - Citation Structured Document Tag - - - - - Group Structured Document Tag - - - - - Bibliography Structured Document Tag - - - - - - - - - - Structured Document Tag End Character Run Properties - - - - - - - - - Inline-Level Custom XML Element - - - - - Inline-Level Smart Tag - - - - - Inline-Level Structured Document Tag - - - - - Bidirectional Embedding Level - - - - - Bidirectional Override - - - - - Text Run - - - - - - - - - - Direction of Embedding - - - - - - - - Direction of Override - - - - - - Bidirectional Direction Types - - - - - Left toRight - - - - - Right to Left - - - - - - - - - - - - Block-Level Custom XML Element - - - - - Block-Level Structured Document Tag - - - - - Paragraph - - - - - Table - - - - - - - - - - - - - Table Row - - - - - Row-Level Custom XML Element - - - - - Row-Level Structured Document Tag - - - - - - - - - - - - - Table Cell - - - - - Cell-Level Custom XML Element - - - - - Cell-Level Structured Document Tag - - - - - - - - - - - - - Structured Document Tag Properties - - - - - Structured Document Tag End Character Properties - - - - - Block-Level Structured Document Tag Content - - - - - - - - - Structured Document Tag Properties - - - - - Structured Document Tag End Character Properties - - - - - Inline-Level Structured Document Tag Content - - - - - - - - - Structured Document Tag Properties - - - - - Structured Document Tag End Character Properties - - - - - Cell-Level Structured Document Tag Content - - - - - - - - - Structured Document Tag Properties - - - - - Structured Document Tag End Character Properties - - - - - Row-Level Structured Document Tag Content - - - - - - - - Namespace - - - - - Name - - - - - Value - - - - - - - - Custom XML Element Properties - - - - - - - Custom XML Markup Namespace - - - - - Element name - - - - - - - - Smart Tag Properties - - - - - - - Smart Tag Namespace - - - - - Smart Tag Name - - - - - - - - Custom XML Element Properties - - - - - - - Custom XML Element Namespace - - - - - Custom XML Element Name - - - - - - - - Custom XML Element Placeholder Text - - - - - Custom XML Attribute - - - - - - - - - Custom XML Element Properties - - - - - - - Custom XML Element Namespace - - - - - Custom XML Element Name - - - - - - - - Custom XML Element Properties - - - - - - - Custom XML Element Namespace - - - - - Custom XML Element Name - - - - - - - - Smart Tag Property - - - - - - - - - - Simple Field - - - - - Hyperlink - - - - - Anchor for Subdocument Location - - - - - - - - - Paragraph Properties - - - - - - - Revision Identifier for Paragraph Glyph Formatting - - - - - Revision Identifier for Paragraph - - - - - Revision Identifier for Paragraph Deletion - - - - - Revision Identifier for Paragraph Properties - - - - - Default Revision Identifier for Runs - - - - - - Table Width Units - - - - - No Width - - - - - Width in Percent of Table Width - - - - - Width in Twentieths of a Point - - - - - Automatically Determined Width - - - - - - - - Table Row Height - - - - - Table Row Height Type - - - - - - - Table Width Value - - - - - Table Width Type - - - - - - - Grid Column Width - - - - - - - - Grid Column Definition - - - - - - - - - - - Revision Information for Table Grid Column Definitions - - - - - - - - - - - - Table Cell Top Border - - - - - Table Cell Leading Edge Border - - - - - Table Cell Leading Edge Border - - - - - Table Cell Bottom Border - - - - - Table Cell Trailing Edge Border - - - - - Table Cell Trailing Edge Border - - - - - Table Cell Inside Horizontal Edges Border - - - - - Table Cell Inside Vertical Edges Border - - - - - Table Cell Top Left to Bottom Right Diagonal Border - - - - - Table Cell Top Right to Bottom Left Diagonal Border - - - - - - - - - Table Cell Top Margin Exception - - - - - Table Cell Leading Margin Exception - - - - - Table Cell Leading Margin Exception - - - - - Table Cell Bottom Margin Exception - - - - - Table Cell Trailing Margin Exception - - - - - Table Cell Trailing Margin Exception - - - - - - - Merged Cell Type - - - - - Continue Merged Region - - - - - Start/Restart Merged Region - - - - - - - - Vertical Merge Type - - - - - - - Horizontal Merge Type - - - - - - - - Table Cell Conditional Formatting - - - - - Preferred Table Cell Width - - - - - Grid Columns Spanned by Current Table Cell - - - - - Horizontally Merged Cell - - - - - Vertically Merged Cell - - - - - Table Cell Borders - - - - - Table Cell Shading - - - - - Don't Wrap Cell Content - - - - - Single Table Cell Margins - - - - - Table Cell Text Flow Direction - - - - - Fit Text Within Cell - - - - - Table Cell Vertical Alignment - - - - - Ignore End Of Cell Marker In Row Height Calculation - - - - - Header Cells Associated With Table Cell - - - - - - - - - - - Revision Information for Table Cell Properties - - - - - - - - - - - - - - - - - - - - Table Cell Properties - - - - - - - Table Cell Identifier - - - - - - Conditional Formatting Bitmask - - - - - - - - - - Conditional Formatting Bit Mask - - - - - First Row - - - - - Last Row - - - - - First Column - - - - - Last Column - - - - - Odd Numbered Vertical Band - - - - - Even Numbered Vertical Band - - - - - Odd Numbered Horizontal Band - - - - - Even Numbered Horizontal Band - - - - - First Row and First Column - - - - - First Row and Last Column - - - - - Last Row and First Column - - - - - Last Row and Last Column - - - - - - - - Header Cell Reference - - - - - - - - - Table Row Conditional Formatting - - - - - Associated HTML div ID - - - - - Grid Columns Before First Cell - - - - - Grid Columns After Last Cell - - - - - Preferred Width Before Table Row - - - - - Preferred Width After Table Row - - - - - Table Row Cannot Break Across Pages - - - - - Table Row Height - - - - - Repeat Table Row on Every New Page - - - - - Table Row Cell Spacing - - - - - Table Row Alignment - - - - - Hidden Table Row Marker - - - - - - - - - - - Inserted Table Row - - - - - Deleted Table Row - - - - - Revision Information for Table Row Properties - - - - - - - - - - - Table-Level Property Exceptions - - - - - Table Row Properties - - - - - - - Revision Identifier for Table Row Glyph Formatting - - - - - Revision Identifier for Table Row - - - - - Revision Identifier for Table Row Deletion - - - - - Revision Identifier for Table Row Properties - - - - - - Table Layout Type - - - - - Fixed Width Table Layout - - - - - AutoFit Table Layout - - - - - - - - Table Layout Setting - - - - - - Table Overlap Setting - - - - - Floating Table Cannot Overlap - - - - - Floating Table Can Overlap - - - - - - - - Floating Table Overlap Setting - - - - - - - Distance From Left of Table to Text - - - - - (Distance From Right of Table to Text - - - - - Distance From Top of Table to Text - - - - - Distance From Bottom of Table to Text - - - - - Table Vertical Anchor - - - - - Table Horizontal Anchor - - - - - Relative Horizontal Alignment From Anchor - - - - - Absolute Horizontal Distance From Anchor - - - - - Relative Vertical Alignment from Anchor - - - - - Absolute Vertical Distance From Anchor - - - - - - - - Table Cell Top Margin Default - - - - - Table Cell Leading Margin Default - - - - - Table Cell Leading Margin Default - - - - - Table Cell Bottom Margin Default - - - - - Table Cell Trailing Margin Default - - - - - Table Cell Trailing Margin Default - - - - - - - - - Table Top Border - - - - - Table Leading Edge Border - - - - - Table Leading Edge Border - - - - - Table Bottom Border - - - - - Table Trailing Edge Border - - - - - Table Trailing Edge Border - - - - - Table Inside Horizontal Edges Border - - - - - Table Inside Vertical Edges Border - - - - - - - - - Referenced Table Style - - - - - Floating Table Positioning - - - - - Floating Table Allows Other Tables to Overlap - - - - - Visually Right to Left Table - - - - - Number of Rows in Row Band - - - - - Number of Columns in Column Band - - - - - Preferred Table Width - - - - - Table Alignment - - - - - Table Cell Spacing Default - - - - - Table Indent from Leading Margin - - - - - Table Borders - - - - - Table Shading - - - - - Table Layout - - - - - Table Cell Margin Defaults - - - - - Table Style Conditional Formatting Settings - - - - - Table Caption - - - - - Table Description - - - - - - - - - - - Revision Information for Table Properties - - - - - - - - - - - Preferred Table Width Exception - - - - - Table Alignment Exception - - - - - Table Cell Spacing Exception - - - - - Table Indent from Leading Margin Exception - - - - - Table Borders Exceptions - - - - - Table Shading Exception - - - - - Table Layout Exception - - - - - Table Cell Margin Exceptions - - - - - Table Style Conditional Formatting Settings Exception - - - - - - - - - - - Revision Information for Table-Level Property Exceptions - - - - - - - - - - - - - Table Properties - - - - - Table Grid - - - - - - - - - First Row - - - - - Last Row - - - - - First Column - - - - - Last Column - - - - - No Horizontal Banding - - - - - No Vertical Banding - - - - - Bitmask of Table Conditional Formatting - - - - - - Footnote Positioning Location - - - - - Footnotes Positioned at Page Bottom - - - - - Footnotes Positioned Beneath Text - - - - - Footnotes Positioned At End of Section - - - - - Footnotes Positioned At End of Document - - - - - - - - Footnote Position Type - - - - - - Endnote Positioning Location - - - - - Endnotes Positioned at End of Section - - - - - Endnotes Positioned at End of Document - - - - - - - - Endnote Position Type - - - - - - - Numbering Format Type - - - - - Custom Defined Number Format - - - - - - Footnote/Endnote Numbering Restart Locations - - - - - Continue Numbering From Previous Section - - - - - Restart Numbering For Each Section - - - - - Restart Numbering On Each Page - - - - - - - - Automatic Numbering Restart Value - - - - - - - Suppress Footnote/Endnote Reference Mark - - - - - Footnote/Endnote ID Reference - - - - - - - Footnote/Endnote ID - - - - - - - - - - Footnote/Endnote Type - - - - - Footnote/Endnote ID - - - - - - - - Footnote and Endnote Numbering Starting Value - - - - - Footnote and Endnote Numbering Restart Location - - - - - - - - - Footnote Placement - - - - - Footnote Numbering Format - - - - - - - - - - Endnote Placement - - - - - Endnote Numbering Format - - - - - - - - - - - - Special Footnote List - - - - - - - - - - - - - Special Endnote List - - - - - - - - - - - Record Is Included in Mail Merge - - - - - Index of Column Containing Unique Values for Record - - - - - Unique Value for Record - - - - - - - - - Data About Single Data Source Record - - - - - - - Inclusion/Exclusion Data for Data Source - - - - - - - Merge Field Mapping - - - - - Data Source Name for Column - - - - - Predefined Merge Field Name - - - - - Index of Column Being Mapped - - - - - Merge Field Name Language ID - - - - - Use Country-Based Address Field Ordering - - - - - - - Mail Merge ODSO Data Source Types - - - - - Database Data Source - - - - - Address Book Data Source - - - - - Alternate Document Format Data Source - - - - - Alternate Document Format Data Source Two - - - - - Text File Data Source - - - - - E-Mail Program Data Source - - - - - Native Data Souce - - - - - Legacy Document Format Data Source - - - - - Aggregate Data Source - - - - - - - - Data Source Type Value - - - - - - - - UDL Connection String - - - - - Data Source Table Name - - - - - ODSO Data Source File Path - - - - - Column Delimiter for Data Source - - - - - ODSO Data Source Type - - - - - First Row of Data Source Contains Column Names - - - - - External Data Source to Merge Field Mapping - - - - - Reference to Inclusion/Exclusion Data for Data Source - - - - - - - - - Source Document Type - - - - - Query Contains Link to External Query File - - - - - Data Source Type - - - - - Data Source Connection String - - - - - Query For Data Source Records To Merge - - - - - Data Source File Path - - - - - Header Definition File Path - - - - - Remove Blank Lines from Merged Documents - - - - - Merged Document Destination - - - - - Column Containing E-mail Address - - - - - Merged E-mail or Fax Subject Line - - - - - Merged Document To E-Mail Attachment - - - - - View Merged Data Within Document - - - - - Record Currently Displayed In Merged Document - - - - - Mail Merge Error Reporting Setting - - - - - Office Data Source Object Settings - - - - - - - Target Screen Sizes for Generated Web Pages - - - - - Optimize for 544x376 - - - - - Optimize for 640x480 - - - - - Optimize for 720x512 - - - - - Optimize for 800x600 - - - - - Optimize for 1024x768 - - - - - Optimize for 1152x882 - - - - - Optimize for 1152x900 - - - - - Optimize for 1280x1024 - - - - - Optimize for 1600x1200 - - - - - Optimize for 1800x1440 - - - - - Optimize for 1920x1200 - - - - - - - - Target Screen Size Value - - - - - - - - Use Simplified Rules For Table Border Conflicts - - - - - Fit To Expanded Width When Performing Full Justification - - - - - Do Not Create Custom Tab Stop for Hanging Indent - - - - - Do Not Add Leading Between Lines of Text - - - - - Add Additional Space Below Baseline For Underlined East Asian Text - - - - - - Do Not Balance Text Columns within a Section - - - - - Balance Single Byte and Double Byte Characters - - - - - Do Not Center Content on Lines With Exact Line Height - - - - - Display Backslash As Yen Sign - - - - - Underline All Trailing Spaces - - - - - Don't Justify Lines Ending in Soft Line Break - - - - - Only Expand/Condense Text By Whole Points - - - - - Ignore Compression of Full-Width Punctuation Ending a Line - - - - - Print Body Text before Header/Footer Contents - - - - - Print Colors as Black And White without Dithering - - - - - Use Specific Space Width - - - - - Display Page/Column Breaks Present in Frames - - - - - Require Exact Size During Font Substitution - - - - - Ignore Exact Line Height for Last Line on Page - - - - - Ignore Minimum and Exact Line Height for First Line on Page - - - - - Ignore Minimum Line Height for First Line on Page - - - - - Use Static Text Leading - - - - - Do Not Use Space Before On First Line After a Page Break - - - - - Swap Paragraph Borders on Odd Numbered Pages - - - - - Treat Backslash Quotation Delimiter as Two Quotation Marks - - - - - Use Truncated Integer Division For Font Calculation - - - - - Use Specific Small Caps Algorithm - - - - - Use Printer Metrics To Display Documents - - - - - Do Not Suppress Paragraph Borders Next To Frames - - - - - Line Wrap Trailing Spaces - - - - - Ignore Page Break from Continuous Section Break - - - - - Ignore Text Wrapping around Objects at Bottom of Page - - - - - Align Table Rows Independently - - - - - Ignore Width of Last Tab Stop When Aligning Paragraph If It Is Not Left Aligned - - - - - - Add Document Grid Line Pitch To Lines in Table Cells - - - - - Incorrectly Adjust Text Spacing for Specific Unicode Ranges - - - - - Do Not Increase Line Height for Raised/Lowered Text - - - - - Use Fixed Paragraph Spacing for HTML Auto Setting - - - - - Ignore Space Before Table When Deciding If Table Should Wrap Floating Object - - - - - - Allow Table Rows to Wrap Inline Objects Independently - - - - - Use Incorrect Inter-Character Spacing Rules - - - - - Do Not Allow Floating Tables To Break Across Pages - - - - - Do Not Snap to Document Grid in Table Cells with Objects - - - - - Select Field When First or Last Character Is Selected - - - - - Use Legacy Ethiopic and Amharic Line Breaking Rules - - - - - Do Not Allow Hanging Punctuation With Character Grid - - - - - Do Not Compress Compressible Characters When Using Document Grid - - - - - - Incorrectly Display Top Border of Conditional Columns - - - - - Allow Tables to AutoFit Into Page Margins - - - - - Do Not Bypass East Asian/Complex Script Layout Code - - - - - Do Not Automatically Apply List Paragraph Style To Bulleted/Numbered Text - - - - - - Ignore Hanging Indent When Creating Tab Stop After Numbering - - - - - Use Alternate Set of East Asian Line Breaking Rules - - - - - Allow Contextual Spacing of Paragraphs in Tables - - - - - Do Not Ignore Floating Objects When Calculating Paragraph Indentation - - - - - - Do Not AutoFit Tables To Fit Next To Wrapped Objects - - - - - Allow Table Columns To Exceed Preferred Widths of Constituent Cells - - - - - - Underline Following Character Following Numbering - - - - - Always Use Fixed Width for Hangul Characters - - - - - Always Move Paragraph Mark to Page after a Page Break - - - - - Don't Vertically Align Cells Containing Floating Objects - - - - - Don't Break Table Rows Around Floating Tables - - - - - Ignore Vertical Alignment in Textboxes - - - - - Use ANSI Kerning Pairs from Fonts - - - - - Use Cached Paragraph Information for Column Balancing - - - - - Custom Compatibility Setting - - - - - - - - Name of Setting - - - - - Namespace of Setting - - - - - Value of Setting - - - - - - - Document Variable Name - - - - - Document Variable Value - - - - - - - - Single Document Variable - - - - - - - - - Original Document Revision Save ID - - - - - Single Session Revision Save ID - - - - - - - Character-Level Whitespace Compression Settings - - - - - Do Not Compress Whitespace - - - - - Compress Whitespace From Punctuation Characters - - - - - Compress Whitespace From Both Japanese Kana And Punctuation Characters - - - - - - - - - Value - - - - - - - XSL Transformation Location - - - - - Local Identifier for XSL Transform - - - - - - - - Run Properties - - - - - - - - - Paragraph Properties - - - - - - - - - Default Run Properties - - - - - Default Paragraph Properties - - - - - - - Theme Color Reference - - - - - Dark 1 Theme Color Reference - - - - - Light 1 Theme Color Reference - - - - - Dark 2 Theme Color Reference - - - - - Light 2 Theme Color Reference - - - - - Accent 1 Theme Color Reference - - - - - Accent 2 Theme Color Reference - - - - - Accent 3 Theme Color Reference - - - - - Accent4 Theme Color Reference - - - - - Accent5 Theme Color Reference - - - - - Accent 6 Theme Color Reference - - - - - Hyperlink Theme Color Reference - - - - - Followed Hyperlink Theme Color Reference - - - - - - - - Background 1 Theme Color Mapping - - - - - Text 1 Theme Color Mapping - - - - - Background 2 Theme Color Mapping - - - - - Text 2 Theme Color Mapping - - - - - Accent 1 Theme Color Mapping - - - - - Accent 2 Theme Color Mapping - - - - - Accent3 Theme Color Mapping - - - - - Accent4 Theme Color Mapping - - - - - Accent5 Theme Color Mapping - - - - - Accent6 Theme Color Mapping - - - - - Hyperlink Theme Color Mapping - - - - - Followed Hyperlink Theme Color Mapping - - - - - - - Use Actual Pages, Not Virtual Pages - - - - - Virtual Page Width - - - - - Virtual Page Height - - - - - Font Size Scaling - - - - - - - Recommend Write Protection in User Interface - - - - - - - - - - Write Protection - - - - - Document View Setting - - - - - Magnification Setting - - - - - Remove Personal Information from Document Properties - - - - - Remove Date and Time from Annotations - - - - - Do Not Display Visual Boundary For Header/Footer or Between Pages - - - - - - Display Background Objects When Displaying Document - - - - - Print PostScript Codes With Document Text - - - - - Print Fractional Character Widths - - - - - Only Print Form Field Content - - - - - Embed TrueType Fonts - - - - - Embed Common System Fonts - - - - - Subset Fonts When Embedding - - - - - Only Save Form Field Content - - - - - Mirror Page Margins - - - - - Align Paragraph and Table Borders with Page Border - - - - - Page Border Excludes Header - - - - - Page Border Excludes Footer - - - - - Position Gutter At Top of Page - - - - - Do Not Display Visual Indication of Spelling Errors - - - - - Do Not Display Visual Indication of Grammatical Errors - - - - - Grammar Checking Settings - - - - - Spelling and Grammatical Checking State - - - - - Structured Document Tag Placeholder Text Should be Resaved - - - - - Attached Document Template - - - - - Automatically Update Styles From Document Template - - - - - Suggested Filtering for List of Document Styles - - - - - Suggested Sorting for List of Document Styles - - - - - Document Classification - - - - - Mail Merge Settings - - - - - Visibility of Annotation Types - - - - - Track Revisions to Document - - - - - Do Not Use Move Syntax When Tracking Revisions - - - - - Do Not Track Formatting Revisions When Tracking Revisions - - - - - Document Editing Restrictions - - - - - Allow Automatic Formatting to Override Formatting Protection Settings - - - - - - Prevent Modification of Themes Part - - - - - Prevent Replacement of Styles Part - - - - - Distance Between Automatic Tab Stops - - - - - Automatically Hyphenate Document Contents When Displayed - - - - - Maximum Number of Consecutively Hyphenated Lines - - - - - Hyphenation Zone - - - - - Do Not Hyphenate Words in ALL CAPITAL LETTERS - - - - - Show E-Mail Message Header - - - - - Percentage of Document to Use When Generating Summary - - - - - Paragraph Style Applied to Automatically Generated Paragraphs - - - - - Default Table Style for Newly Inserted Tables - - - - - Different Even/Odd Page Headers and Footers - - - - - Reverse Book Fold Printing - - - - - Book Fold Printing - - - - - Number of Pages Per Booklet - - - - - Drawing Grid Horizontal Grid Unit Size - - - - - Drawing Grid Vertical Grid Unit Size - - - - - Distance between Horizontal Gridlines - - - - - Distance between Vertical Gridlines - - - - - Do Not Use Margins for Drawing Grid Origin - - - - - Drawing Grid Horizontal Origin Point - - - - - Drawing Grid Vertical Origin Point - - - - - Do Not Show Visual Indicator For Form Fields - - - - - Never Kern Punctuation Characters - - - - - Character-Level Whitespace Compression - - - - - Print Two Pages Per Sheet - - - - - Use Strict Kinsoku Rules for Japanese Text - - - - - Custom Set of Characters Which Cannot End a Line - - - - - Custom Set Of Characters Which Cannot Begin A Line - - - - - Generate Thumbnail For Document On Save - - - - - Do Not Validate Custom XML Markup Against Schemas - - - - - Allow Saving Document As XML File When Custom XML Markup Is Invalid - - - - - - Ignore Mixed Content When Validating Custom XML Markup - - - - - Use Custom XML Element Names as Default Placeholder Text - - - - - Do Not Show Visual Indicator For Invalid Custom XML Markup - - - - - Only Save Custom XML Markup - - - - - Save Document as XML File through Custom XSL Transform - - - - - Custom XSL Transform To Use When Saving As XML File - - - - - Show Visual Indicators for Custom XML Markup Start/End Locations - - - - - - Do Not Mark Custom XML Elements With No Namespace As Invalid - - - - - Automatically Recalculate Fields on Open - - - - - Default Properties for VML Objects in Header and Footer - - - - - Document-Wide Footnote Properties - - - - - Document-Wide Endnote Properties - - - - - Compatibility Settings - - - - - Document Variables - - - - - Listing of All Revision Save ID Values - - - - - properties of math in the document - - - - - Attached Custom XML Schema - - - - - Theme Font Languages - - - - - Theme Color Mappings - - - - - Do Not Include Content in Text Boxes, Footnotes, and Endnotes in Document - Statistics - - - - - - Do Not Automatically Compress Images - - - - - Upgrade Document on Open - - - - - Caption Settings - - - - - Freeze Document Layout - - - - - Supplementary Smart Tag Information - - - - - Custom XML Schema List - - - - - Default Properties for VML Objects in Main Document - - - - - Remove Smart Tags When Saving - - - - - Radix Point for Field Code Evaluation - - - - - List Separator for Field Code Evaluation - - - - - - - - Style Sorting - - - - - - - Display All Styles - - - - - Display Only Custom Styles - - - - - Display Latent Styles - - - - - Display Styles in Use - - - - - Display Heading Styles - - - - - Display Numbering Styles - - - - - Display Table Styles - - - - - Display Run Level Direct Formatting - - - - - Display Paragraph Level Direct Formatting - - - - - Display Direct Formatting on Numbering Data - - - - - Display Direct Formatting on Tables - - - - - Display Styles to Remove Formatting - - - - - Display Heading 1 through 3 - - - - - Only Show Visible Styles - - - - - Use the Alternate Style Name - - - - - Bitmask of Suggested Filtering Options - - - - - - Style Sort Settings - - - - - Sort by Style Name - - - - - Sort by Style Priority - - - - - Sort by Default Method - - - - - Sort by Font - - - - - Sort by Based On Style - - - - - Sort by Style Type - - - - - Sort by Style Name - - - - - Sort by Style Priority - - - - - Sort by Default Method - - - - - Sort by Font - - - - - Sort by Based On Style - - - - - Sort by Style Type - - - - - - - - - Root Frameset Definition - - - - - Information about HTML div Elements - - - - - Output Encoding When Saving as Web Page - - - - - Disable Features Not Supported by Target Web Browser - - - - - Utilize VML When Saving as Web Page - - - - - Allow PNG as Graphic Format - - - - - Do Not Rely on CSS for Font Face Formatting - - - - - Recommend Web Page Format over Single File Web Page Format - - - - - Do Not Place Supporting Files in Subdirectory - - - - - Do Not Use File Names Longer than 8.3 Characters - - - - - Pixels per Inch for Graphics/Images - - - - - Target Screen Size for Web Page - - - - - Save Smart Tag Data in XML Property Bag - - - - - - - Frame Scrollbar Visibility - - - - - Always Show Scrollbar - - - - - Never Show Scrollbar - - - - - Automatically Show Scrollbar As Needed - - - - - - - - Scrollbar Display Option Value - - - - - - - - - Target Output Profile - - - - - - - - - - Frame Size - - - - - Frame Name - - - - - Frame or Frameset Title - - - - - Frame Long Description - - - - - Source File for Frame - - - - - Left and Right Margin for Frame - - - - - Top and Bottom Margin for Frame - - - - - Scrollbar Display Option - - - - - Frame Cannot Be Resized - - - - - Maintain Link to Existing File - - - - - - - Frameset Layout Order - - - - - Stack Frames Vertically - - - - - Stack Frames Horizontally - - - - - Do Not Stack Frames - - - - - - - - Frameset Layout Value - - - - - - - - Frameset Splitter Width - - - - - Frameset Splitter Color - - - - - Do Not Display Frameset Splitters - - - - - Frameset Splitter Border Style - - - - - - - - - Nested Frameset Size - - - - - Frameset Splitter Properties - - - - - Frameset Layout - - - - - - - Nested Frameset Definition - - - - - Single Frame Properties - - - - - - - - - - Picture Numbering Symbol Properties - - - - - - - Picture Numbering Symbol ID - - - - - - Content Between Numbering Symbol and Paragraph Text - - - - - Tab Between Numbering and Text - - - - - Space Between Numbering and Text - - - - - Nothing Between Numbering and Text - - - - - - - - Character Type Between Numbering and Text - - - - - - - Level Text - - - - - Level Text Is Null Character - - - - - - - Use Legacy Numbering Properties - - - - - Legacy Spacing - - - - - Legacy Indent - - - - - - - - Starting Value - - - - - Numbering Format - - - - - Restart Numbering Level Symbol - - - - - Paragraph Style's Associated Numbering Level - - - - - Display All Levels Using Arabic Numerals - - - - - Content Between Numbering Symbol and Paragraph Text - - - - - Numbering Level Text - - - - - Picture Numbering Symbol Definition Reference - - - - - Legacy Numbering Level Properties - - - - - Justification - - - - - Numbering Level Associated Paragraph Properties - - - - - Numbering Symbol Run Properties - - - - - - Numbering Level - - - - - Template Code - - - - - Tentative Numbering - - - - - - Numbering Definition Type - - - - - Single Level Numbering Definition - - - - - Multilevel Numbering Definition - - - - - Hybrid Multilevel Numbering Definition - - - - - - - - Abstract Numbering Definition Type - - - - - - - - Abstract Numbering Definition Identifier - - - - - Abstract Numbering Definition Type - - - - - Numbering Template Code - - - - - Abstract Numbering Definition Name - - - - - Numbering Style Definition - - - - - Numbering Style Reference - - - - - Numbering Level Definition - - - - - - Abstract Numbering Definition ID - - - - - - - - Numbering Level Starting Value Override - - - - - Numbering Level Override Definition - - - - - - Numbering Level ID - - - - - - - - Abstract Numbering Definition Reference - - - - - Numbering Level Definition Override - - - - - - Numbering Definition Instance ID - - - - - - - - Picture Numbering Symbol Definition - - - - - Abstract Numbering Definition - - - - - Numbering Definition Instance - - - - - Last Reviewed Abstract Numbering Definition - - - - - - - Conditional Table Style Formatting Types - - - - - Whole table formatting - - - - - First Row Conditional Formatting - - - - - Last table row formatting - - - - - First Column Conditional Formatting - - - - - Last table column formatting - - - - - Banded Column Conditional Formatting - - - - - Even Column Stripe Conditional Formatting - - - - - Banded Row Conditional Formatting - - - - - Even Row Stripe Conditional Formatting - - - - - Top right table cell formatting - - - - - Top left table cell formatting - - - - - Bottom right table cell formatting - - - - - Bottom left table cell formatting - - - - - - - - - Table Style Conditional Formatting Paragraph Properties - - - - - Table Style Conditional Formatting Run Properties - - - - - Table Style Conditional Formatting Table Properties - - - - - Table Style Conditional Formatting Table Row Properties - - - - - Table Style Conditional Formatting Table Cell Properties - - - - - - Table Style Conditional Formatting Type - - - - - - Style Types - - - - - Paragraph Style - - - - - Character Style - - - - - Table Style - - - - - Numbering Style - - - - - - - - - Primary Style Name - - - - - Alternate Style Names - - - - - Parent Style ID - - - - - Style For Next Paragraph - - - - - Linked Style Reference - - - - - Automatically Merge User Formatting Into Style Definition - - - - - Hide Style From User Interface - - - - - Optional User Interface Sorting Order - - - - - Hide Style From Main User Interface - - - - - Remove Semi-Hidden Property When Style Is Used - - - - - Primary Style - - - - - Style Cannot Be Applied - - - - - E-Mail Message Text Style - - - - - E-Mail Message Composition Style - - - - - E-Mail Message Reply Style - - - - - Revision Identifier for Style Definition - - - - - Style Paragraph Properties - - - - - Run Properties - - - - - Style Table Properties - - - - - Style Table Row Properties - - - - - Style Table Cell Properties - - - - - Style Conditional Table Formatting Properties - - - - - - Style Type - - - - - Style ID - - - - - Default Style - - - - - User-Defined Style - - - - - - - Primary Style Name - - - - - Latent Style Locking Setting - - - - - Override default sorting order - - - - - Semi hidden text override - - - - - Unhide when used - - - - - Latent Style Primary Style Setting - - - - - - - - Latent Style Exception - - - - - - Default Style Locking Setting - - - - - Default User Interface Priority Setting - - - - - Default Semi-Hidden Setting - - - - - Default Hidden Until Used Setting - - - - - Default Primary Style Setting - - - - - Latent Style Count - - - - - - - - Document Default Paragraph and Run Properties - - - - - Latent Style Information - - - - - Style Definition - - - - - - - - Value - - - - - - Font Family Value - - - - - Novelty Font - - - - - Monospace Font - - - - - Proportional Font With Serifs - - - - - Script Font - - - - - Proportional Font Without Serifs - - - - - No Font Family - - - - - - - - Font Family Value - - - - - - Font Pitch Value - - - - - Fixed Width - - - - - Proportional Width - - - - - Default - - - - - - - - Value - - - - - - - First 32 Bits of Unicode Subset Bitfield - - - - - Second 32 Bits of Unicode Subset Bitfield - - - - - Third 32 Bits of Unicode Subset Bitfield - - - - - Fourth 32 Bits of Unicode Subset Bitfield - - - - - Lower 32 Bits of Code Page Bit Field - - - - - Upper 32 Bits of Code Page Bit Field - - - - - - - - - Embedded Font Obfuscation Key - - - - - Embedded Font Is Subsetted - - - - - - - - - - Alternate Names for Font - - - - - Panose-1 Typeface Classification Number - - - - - Character Set Supported By Font - - - - - Font Family - - - - - Raster or Vector Font - - - - - Font Pitch - - - - - Supported Unicode Subranges and Code Pages - - - - - Regular Font Style Embedding - - - - - Bold Style Font Style Embedding - - - - - Italic Font Style Embedding - - - - - Bold Italic Font Style Embedding - - - - - - Primary Font Name - - - - - - - - Properties for a Single Font - - - - - - - - - Top Border for HTML div - - - - - Left Border for HTML div - - - - - Bottom Border for HTML div - - - - - Right Border for HTML div - - - - - - - - - Data for HTML blockquote Element - - - - - Data for HTML body Element - - - - - Left Margin for HTML div - - - - - Right Margin for HTML div - - - - - Top Margin for HTML div - - - - - Bottom Margin for HTML div - - - - - Set of Borders for HTML div - - - - - Child div Elements Contained within Current div - - - - - - div Data ID - - - - - - - - Information About Single HTML div Element - - - - - - - - - - Rich Text Box Content Container - - - - - - - - - - - - - - - - - - - Anchor for Imported External Content - - - - - - - - - Proofing Error Anchor - - - - - Range Permission Start - - - - - Range Permission End - - - - - - Inserted Run Content - - - - - Deleted Run Content - - - - - Move Source Run Content - - - - - Move Destination Run Content - - - - - - - - - - - Document Final Section Properties - - - - - - - - - - - - - - Comment Content - - - - - - - Comments Collection - - - - - - - Footnote Content - - - - - - - Document Footnotes - - - - - - - Endnote Content - - - - - - - Document Endnotes - - - - - Header - - - - - Footer - - - - - - Smart Tag Namespace - - - - - Smart Tag Name - - - - - Smart Tag Supplementary URL - - - - - - Theme Color - - - - - Dark 1 Theme Color - - - - - Light 1 Theme Color - - - - - Dark 2 Theme Color - - - - - Light 2 Theme Color - - - - - Accent 1 Theme Color - - - - - Accent 2 Theme Color - - - - - Accent 3 Theme Color - - - - - Accent 4 Theme Color - - - - - Accent 5 Theme Color - - - - - Accent 6 Theme Color - - - - - Hyperlink Theme Color - - - - - Followed Hyperlink Theme Color - - - - - No Theme Color - - - - - Background 1 Theme Color - - - - - Text 1 Theme Color - - - - - Background 2 Theme Color - - - - - Text 2 Theme Color - - - - - - - Insertion Behavior Types - - - - - Insert Content At Specified Location - - - - - Ensure Entry Is In New Paragraph - - - - - Ensure Entry Is On New Page - - - - - - - - Insertion Behavior Value - - - - - - - - Entry Insertion Behavior - - - - - - - Entry Types - - - - - No Type - - - - - Normal - - - - - Automatically Replace Name With Content - - - - - AutoText User Interface Entry - - - - - AutoCorrect Entry - - - - - Form Field Help Text - - - - - Structured Document Tag Placeholder Text - - - - - - - - Type Value - - - - - - - - Entry Type - - - - - - Entry Is Of All Types - - - - - - Entry Gallery Types - - - - - Structured Document Tag Placeholder Text Gallery - - - - - All Galleries - - - - - No Gallery Classification - - - - - Document Parts Gallery - - - - - Cover Page Gallery - - - - - Equations Gallery - - - - - Footers Gallery - - - - - Headers Gallery - - - - - Page Numbers Gallery - - - - - Table Gallery - - - - - Watermark Gallery - - - - - AutoText Gallery - - - - - Text Box Gallery - - - - - Page Numbers At Top Gallery - - - - - Page Numbers At Bottom Gallery - - - - - Page Numbers At Margins Gallery - - - - - Table of Contents Gallery - - - - - Bibliography Gallery - - - - - Custom Quick Parts Gallery - - - - - Custom Cover Page Gallery - - - - - Custom Equation Gallery - - - - - Custom Footer Gallery - - - - - Custom Header Gallery - - - - - Custom Page Number Gallery - - - - - Custom Table Gallery - - - - - Custom Watermark Gallery - - - - - Custom AutoText Gallery - - - - - Custom Text Box Gallery - - - - - Custom Page Number At Top Gallery - - - - - Custom Page Number At Bottom Gallery - - - - - Custom Page Number At Margins Gallery - - - - - Custom Table of Contents Gallery - - - - - Custom Bibliography Gallery - - - - - Custom 1 Gallery - - - - - Custom 2 Gallery - - - - - Custom 3 Gallery - - - - - Custom 4 Gallery - - - - - Custom 5 Gallery - - - - - - - - Gallery Value - - - - - - - - Category Associated With Entry - - - - - Gallery Associated With Entry - - - - - - - - Name Value - - - - - Built-In Entry - - - - - - - - Entry Name - - - - - Associated Paragraph Style Name - - - - - Entry Categorization - - - - - Entry Types - - - - - Entry Insertion Behaviors - - - - - Description for Entry - - - - - Entry ID - - - - - - - - - Glossary Document Entry Properties - - - - - Contents of Glossary Document Entry - - - - - - - - - Glossary Document Entry - - - - - - - Document Settings - - - - - Web Page Settings - - - - - Font Table Root Element - - - - - Numbering Definitions - - - - - Style Definitions - - - - - Automatic Caption Positioning Values - - - - - Position Caption Above Object - - - - - Position Caption Below Object - - - - - Position Caption Left Of Object - - - - - Position Caption Right Of Object - - - - - - - - Caption Type Name - - - - - Automatic Caption Placement - - - - - Include Chapter Number in Field for Caption - - - - - Style for Chapter Headings - - - - - Do Not Include Name In Caption - - - - - Caption Numbering Format - - - - - Chapter Number/Item Index Separator - - - - - - - Identifier of Object to be Automatically Captioned - - - - - Caption Used for Automatic Captioning - - - - - - - - Single Automatic Captioning Setting - - - - - - - - - Single Caption Type Definition - - - - - Automatic Captioning Settings - - - - - - - - - Document Background - - - - - - - - - - - Document Body - - - - - - Document Conformance Class - - - - - - - - - - - - List of Glossary Document Entries - - - - - - - - - Document - - - - - Glossary Document Root Element - - + xmlns:m="http://purl.oclc.org/ooxml/officeDocument/math" + xmlns:r="http://purl.oclc.org/ooxml/officeDocument/relationships" + xmlns:sl="http://purl.oclc.org/ooxml/schemaLibrary/main" + xmlns:wp="http://purl.oclc.org/ooxml/drawingml/wordprocessingDrawing" + xmlns="http://purl.oclc.org/ooxml/wordprocessingml/main" + xmlns:s="http://purl.oclc.org/ooxml/officeDocument/sharedTypes" elementFormDefault="qualified" + attributeFormDefault="qualified" blockDefault="#all" + targetNamespace="http://purl.oclc.org/ooxml/wordprocessingml/main"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d389d09cd234b485c1bf52383aebf6f8f3680650 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Fri, 18 Aug 2017 14:04:59 +0200 Subject: [PATCH 011/139] #382 : OpenXML (ISO 29500-1 Strict) --- docs/references.rst | 5 +++++ .../Tests/_includes/PhpPresentationTestCase.php | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/docs/references.rst b/docs/references.rst index bea9c0cc40..2fe26d618d 100644 --- a/docs/references.rst +++ b/docs/references.rst @@ -26,6 +26,11 @@ MSDN : MSDN `__ - `Open XML SDK 2.5 with Validator `__ +Library of Congress : + +- `OOXML Format Family -- ISO/IEC 29500 and ECMA 376 `__ +- `Schemas in W3C XML Schema language and in RELAX NG for the Strict variant of PPTX, etc. `__ + OpenDocument --------------------- diff --git a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php index 82eb78332b..6620de4ff3 100644 --- a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php +++ b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php @@ -352,6 +352,21 @@ public function assertIsSchemaOOXMLValid() $fileName = str_replace('\\', '/', substr($file->getRealPath(), strlen($path) + 1)); $dom = $this->getXmlDom('ppt/' . $fileName); $xmlSource = $dom->saveXML(); + // In the ISO/ECMA standard the namespace has changed from + // http://schemas.openxmlformats.org/ to http://purl.oclc.org/ooxml/ + // We need to use the http://purl.oclc.org/ooxml/ namespace to validate + // the xml against the current schema + $xmlSource = str_replace(array( + "http://schemas.openxmlformats.org/drawingml/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/chart", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + "http://schemas.openxmlformats.org/presentationml/2006/main", + ), array( + "http://purl.oclc.org/ooxml/drawingml/main", + "http://purl.oclc.org/ooxml/drawingml/chart", + "http://purl.oclc.org/ooxml/officeDocument/relationships", + "http://purl.oclc.org/ooxml/presentationml/main", + ), $xmlSource); $dom->loadXML($xmlSource); $dom->schemaValidate(__DIR__ . '/../../../resources/schema/ooxml/pml.xsd'); From 6bcde6897c20525dec29a1cfafc67be899093a34 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 23 Aug 2017 19:38:14 +0200 Subject: [PATCH 012/139] FIXED : Missing argument 1 for phpDocumentor\Descriptor\Collection::get() --- composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/composer.json b/composer.json index 17b29fea00..ce4852a68c 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,6 @@ "require-dev": { "phpunit/phpunit": "3.7.*", "phpdocumentor/phpdocumentor":"2.*", - "twig/twig":"1.27", "phpmd/phpmd": "2.*", "sebastian/phpcpd": "2.*", "phploc/phploc": "2.*", From d9c153a22e457c2505cf86b1ef09741d37b1ad14 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 23 Aug 2017 21:19:45 +0200 Subject: [PATCH 013/139] #360 : Changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f2b08b5b1..7f0e79f25b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 0.10.0 - WIP + +### Bugfix +- PowerPoint2007 : Text is subscripted when set superscript to false - @qmachard GH-360 + +### Changes + +### Features + ## 0.9.0 - 2017-07-05 ### Bugfix From 58c72002c4c5f8d3a7d677e50e03b1c1c79932ea Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 23 Aug 2017 22:50:30 +0200 Subject: [PATCH 014/139] #397 : PowerPoint2007 Reader : Background Color based on SchemeColor --- CHANGELOG.md | 1 + src/PhpPresentation/Reader/PowerPoint2007.php | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f0e79f25b..c9c3a3b6d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - PowerPoint2007 : Text is subscripted when set superscript to false - @qmachard GH-360 ### Changes +- PowerPoint2007 Reader : Background Color based on SchemeColor - @Progi1984 GH-397 ### Features diff --git a/src/PhpPresentation/Reader/PowerPoint2007.php b/src/PhpPresentation/Reader/PowerPoint2007.php index 0ee8261073..b71c2a3c99 100644 --- a/src/PhpPresentation/Reader/PowerPoint2007.php +++ b/src/PhpPresentation/Reader/PowerPoint2007.php @@ -353,6 +353,18 @@ protected function loadSlide($sPart, $baseFile) $oSlide = $this->oPhpPresentation->getActiveSlide(); $oSlide->setBackground($oBackground); } + $oElementColor = $xmlReader->getElement('a:solidFill/a:schemeClr', $oElement); + if ($oElementColor instanceof \DOMElement) { + // Color + $oColor = new SchemeColor(); + $oColor->setValue($oElementColor->hasAttribute('val') ? $oElementColor->getAttribute('val') : null); + // Background + $oBackground = new Slide\Background\SchemeColor(); + $oBackground->setSchemeColor($oColor); + // Slide Background + $oSlide = $this->oPhpPresentation->getActiveSlide(); + $oSlide->setBackground($oBackground); + } $oElementImage = $xmlReader->getElement('a:blipFill/a:blip', $oElement); if ($oElementImage instanceof \DOMElement) { $relImg = $this->arrayRels['ppt/slides/_rels/' . $baseFile . '.rels'][$oElementImage->getAttribute('r:embed')]; From 90b996607122730437c37a8bb27d2b261b29cd57 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 30 Aug 2017 21:55:41 +0200 Subject: [PATCH 015/139] #355 : Doughnut Chart --- samples/Sample_05_Chart.php | 111 +++++++++--- .../Shape/Chart/Type/Doughnut.php | 67 ++++++++ .../Writer/PowerPoint2007/PptCharts.php | 159 ++++++++++++++++++ 3 files changed, 309 insertions(+), 28 deletions(-) create mode 100644 src/PhpPresentation/Shape/Chart/Type/Doughnut.php diff --git a/samples/Sample_05_Chart.php b/samples/Sample_05_Chart.php index bb28ec65c0..c472084180 100644 --- a/samples/Sample_05_Chart.php +++ b/samples/Sample_05_Chart.php @@ -172,23 +172,23 @@ function fnSlide_BarStacked(PhpPresentation $objPHPPresentation) { echo date( 'H:i:s' ) . ' Create a stacked bar chart (that should be inserted in a chart shape)' . EOL; $StackedBarChart = new Bar(); $series1 = new Series( '2009', $series1Data ); - $series1->setShowSeriesName( false ); + $series1->setShowSeriesName(false); $series1->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FF4F81BD' ) ); $series1->getFont()->getColor()->setRGB( '00FF00' ); - $series1->setShowValue( true ); - $series1->setShowPercentage( false ); + $series1->setShowValue(true); + $series1->setShowPercentage(false); $series2 = new Series( '2010', $series2Data ); - $series2->setShowSeriesName( false ); + $series2->setShowSeriesName(false); $series2->getFont()->getColor()->setRGB( 'FF0000' ); $series2->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FFC0504D' ) ); - $series2->setShowValue( true ); - $series2->setShowPercentage( false ); + $series2->setShowValue(true); + $series2->setShowPercentage(false); $series3 = new Series( '2011', $series3Data ); - $series3->setShowSeriesName( false ); + $series3->setShowSeriesName(false); $series3->getFont()->getColor()->setRGB( 'FF0000' ); $series3->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FF804DC0' ) ); - $series3->setShowValue( true ); - $series3->setShowPercentage( false ); + $series3->setShowValue(true); + $series3->setShowPercentage(false); $StackedBarChart->addSeries( $series1 ); $StackedBarChart->addSeries( $series2 ); $StackedBarChart->addSeries( $series3 ); @@ -197,7 +197,7 @@ function fnSlide_BarStacked(PhpPresentation $objPHPPresentation) { echo date( 'H:i:s' ) . ' Create a shape (chart)' . EOL; $shape = $currentSlide->createChartShape(); $shape->setName( 'PHPPresentation Monthly Downloads' ) - ->setResizeProportional( false ) + ->setResizeProportional(false) ->setHeight( 550 ) ->setWidth( 700 ) ->setOffsetX( 120 ) @@ -206,13 +206,13 @@ function fnSlide_BarStacked(PhpPresentation $objPHPPresentation) { $shape->setFill( $oFill ); $shape->getBorder()->setLineStyle( Border::LINE_SINGLE ); $shape->getTitle()->setText( 'PHPPresentation Monthly Downloads' ); - $shape->getTitle()->getFont()->setItalic( true ); + $shape->getTitle()->getFont()->setItalic(true); $shape->getTitle()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_RIGHT ); $shape->getPlotArea()->getAxisX()->setTitle( 'Month' ); $shape->getPlotArea()->getAxisY()->setTitle( 'Downloads' ); $shape->getPlotArea()->setType( $StackedBarChart ); $shape->getLegend()->getBorder()->setLineStyle( Border::LINE_SINGLE ); - $shape->getLegend()->getFont()->setItalic( true ); + $shape->getLegend()->getFont()->setItalic(true); } function fnSlide_BarPercentStacked(PhpPresentation $objPHPPresentation) { @@ -245,26 +245,26 @@ function fnSlide_BarPercentStacked(PhpPresentation $objPHPPresentation) { echo date( 'H:i:s' ) . ' Create a percent stacked horizontal bar chart (that should be inserted in a chart shape)' . EOL; $PercentStackedBarChartHoriz = new Bar(); $series1 = new Series( '2009', $series1Data ); - $series1->setShowSeriesName( false ); + $series1->setShowSeriesName(false); $series1->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FF4F81BD' ) ); $series1->getFont()->getColor()->setRGB( '00FF00' ); - $series1->setShowValue( true ); - $series1->setShowPercentage( false ); + $series1->setShowValue(true); + $series1->setShowPercentage(false); // Set Data Label Format For Chart To Display Percent $series1->setDlblNumFormat( '#%' ); $series2 = new Series( '2010', $series2Data ); - $series2->setShowSeriesName( false ); + $series2->setShowSeriesName(false); $series2->getFont()->getColor()->setRGB( 'FF0000' ); $series2->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FFC0504D' ) ); - $series2->setShowValue( true ); - $series2->setShowPercentage( false ); + $series2->setShowValue(true); + $series2->setShowPercentage(false); $series2->setDlblNumFormat( '#%' ); $series3 = new Series( '2011', $series3Data ); - $series3->setShowSeriesName( false ); + $series3->setShowSeriesName(false); $series3->getFont()->getColor()->setRGB( 'FF0000' ); $series3->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FF804DC0' ) ); - $series3->setShowValue( true ); - $series3->setShowPercentage( false ); + $series3->setShowValue(true); + $series3->setShowPercentage(false); $series3->setDlblNumFormat( '#%' ); $PercentStackedBarChartHoriz->addSeries( $series1 ); $PercentStackedBarChartHoriz->addSeries( $series2 ); @@ -275,7 +275,7 @@ function fnSlide_BarPercentStacked(PhpPresentation $objPHPPresentation) { echo date( 'H:i:s' ) . ' Create a shape (chart)' . EOL; $shape = $currentSlide->createChartShape(); $shape->setName( 'PHPPresentation Monthly Downloads' ) - ->setResizeProportional( false ) + ->setResizeProportional(false) ->setHeight( 550 ) ->setWidth( 700 ) ->setOffsetX( 120 ) @@ -284,13 +284,13 @@ function fnSlide_BarPercentStacked(PhpPresentation $objPHPPresentation) { $shape->setFill( $oFill ); $shape->getBorder()->setLineStyle( Border::LINE_SINGLE ); $shape->getTitle()->setText( 'PHPPresentation Monthly Downloads' ); - $shape->getTitle()->getFont()->setItalic( true ); + $shape->getTitle()->getFont()->setItalic(true); $shape->getTitle()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_RIGHT ); $shape->getPlotArea()->getAxisX()->setTitle( 'Month' ); $shape->getPlotArea()->getAxisY()->setTitle( 'Downloads' ); $shape->getPlotArea()->setType( $PercentStackedBarChartHoriz ); $shape->getLegend()->getBorder()->setLineStyle( Border::LINE_SINGLE ); - $shape->getLegend()->getFont()->setItalic( true ); + $shape->getLegend()->getFont()->setItalic(true); } function fnSlide_Bar3D(PhpPresentation $objPHPPresentation) { @@ -384,6 +384,59 @@ function fnSlide_Bar3DHorizontal(PhpPresentation $objPHPPresentation) { $shape->getLegend()->getFont()->setItalic(true); } +function fnSlide_Doughnut(PhpPresentation $objPHPPresentation) +{ + global $oFill; + global $oShadow; + + // Create templated slide + echo EOL . date('H:i:s') . ' Create templated slide' . EOL; + $currentSlide = createTemplatedSlide($objPHPPresentation); + + // Generate sample data for second chart + echo date('H:i:s') . ' Generate sample data for chart' . EOL; + $seriesData = array('Monday' => 18, 'Tuesday' => 23, 'Wednesday' => 14, 'Thursday' => 12, 'Friday' => 20, 'Saturday' => 8, 'Sunday' => 10); + + // Create a doughnut chart (that should be inserted in a shape) + echo date('H:i:s') . ' Create a non-3D Doughnut chart (that should be inserted in a chart shape)' . EOL; + $doughnutChart = new \PhpOffice\PhpPresentation\Shape\Chart\Type\Doughnut(); + $doughnutChart->setHoleSize(43); + $series = new Series('Downloads', $seriesData); + $series->getDataPointFill(0)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF7CB5EC')); + $series->getDataPointFill(1)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF434348')); + $series->getDataPointFill(2)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF90ED7D')); + $series->getDataPointFill(3)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFF7A35C')); + $series->getDataPointFill(4)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF8085E9')); + $series->getDataPointFill(5)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFF15C80')); + $series->getDataPointFill(6)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFE4D354')); + $series->setShowPercentage(true); + $series->setShowValue(false); + $series->setShowSeriesName(false); + $series->setShowCategoryName(true); + $series->setDlblNumFormat('%d'); + $series->getFont()->getColor()->setRGB('FFFF00'); + $series->getFont()->setBold(true); + $doughnutChart->addSeries($series); + + // Create a shape (chart) + echo date('H:i:s') . ' Create a shape (chart)' . EOL; + $shape = $currentSlide->createChartShape(); + $shape->setName('PHPPresentation Daily Downloads') + ->setResizeProportional(false) + ->setHeight(550) + ->setWidth(700) + ->setOffsetX(120) + ->setOffsetY(80); + $shape->setShadow($oShadow); + $shape->setFill($oFill); + $shape->getBorder()->setLineStyle(Border::LINE_SINGLE); + $shape->getTitle()->setText('PHPPresentation Daily Downloads'); + $shape->getTitle()->getFont()->setItalic(true); + $shape->getPlotArea()->setType($doughnutChart); + $shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE); + $shape->getLegend()->getFont()->setItalic(true); +} + function fnSlide_Pie3D(PhpPresentation $objPHPPresentation) { global $oFill; global $oShadow; @@ -456,10 +509,10 @@ function fnSlide_Pie(PhpPresentation $objPHPPresentation) { $series->getDataPointFill(4)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF8085E9')); $series->getDataPointFill(5)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFF15C80')); $series->getDataPointFill(6)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFE4D354')); - $series->setShowPercentage( true ); - $series->setShowValue( false ); - $series->setShowSeriesName( false ); - $series->setShowCategoryName( true ); + $series->setShowPercentage(true); + $series->setShowValue(false); + $series->setShowSeriesName(false); + $series->setShowCategoryName(true); $series->setDlblNumFormat('%d'); $pieChart->addSeries($series); @@ -563,6 +616,8 @@ function fnSlide_Scatter(PhpPresentation $objPHPPresentation) { fnSlide_Bar3DHorizontal($objPHPPresentation); +fnSlide_Doughnut($objPHPPresentation); + fnSlide_Pie3D($objPHPPresentation); fnSlide_Pie($objPHPPresentation); diff --git a/src/PhpPresentation/Shape/Chart/Type/Doughnut.php b/src/PhpPresentation/Shape/Chart/Type/Doughnut.php new file mode 100644 index 0000000000..5f30a51588 --- /dev/null +++ b/src/PhpPresentation/Shape/Chart/Type/Doughnut.php @@ -0,0 +1,67 @@ +holeSize; + } + + /** + * @param int $holeSize + * @return Doughnut + * @link https://msdn.microsoft.com/en-us/library/documentformat.openxml.drawing.charts.holesize(v=office.14).aspx + */ + public function setHoleSize($holeSize = 50) + { + if ($holeSize < 10) { + $holeSize = 10; + } + if ($holeSize > 90) { + $holeSize = 90; + } + $this->holeSize = $holeSize; + return $this; + } + + /** + * Get hash code + * + * @return string Hash code + */ + public function getHashCode() + { + return md5(parent::getHashCode() . __CLASS__); + } +} diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index 6796d3ae23..98c8d1dcc9 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -13,6 +13,7 @@ use PhpOffice\PhpPresentation\Shape\Chart\Type\Area; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar3D; +use PhpOffice\PhpPresentation\Shape\Chart\Type\Doughnut; use PhpOffice\PhpPresentation\Shape\Chart\Type\Line; use PhpOffice\PhpPresentation\Shape\Chart\Type\Pie; use PhpOffice\PhpPresentation\Shape\Chart\Type\Pie3D; @@ -498,6 +499,8 @@ protected function writePlotArea(XMLWriter $objWriter, PlotArea $subject, Chart $this->writeTypeBar($objWriter, $chartType, $chart->hasIncludedSpreadsheet()); } elseif ($chartType instanceof Bar3D) { $this->writeTypeBar3D($objWriter, $chartType, $chart->hasIncludedSpreadsheet()); + } elseif ($chartType instanceof Doughnut) { + $this->writeTypeDoughnut($objWriter, $chartType, $chart->hasIncludedSpreadsheet()); } elseif ($chartType instanceof Pie) { $this->writeTypePie($objWriter, $chartType, $chart->hasIncludedSpreadsheet()); } elseif ($chartType instanceof Pie3D) { @@ -1205,6 +1208,162 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, $include $objWriter->endElement(); } + /** + * Write Type Pie + * + * @param \PhpOffice\Common\XMLWriter $objWriter XML Writer + * @param \PhpOffice\PhpPresentation\Shape\Chart\Type\Doughnut $subject + * @param boolean $includeSheet + * @throws \Exception + */ + protected function writeTypeDoughnut(XMLWriter $objWriter, Doughnut $subject, $includeSheet = false) + { + // c:pieChart + $objWriter->startElement('c:doughnutChart'); + + // c:varyColors + $objWriter->startElement('c:varyColors'); + $objWriter->writeAttribute('val', '1'); + $objWriter->endElement(); + + // Write series + $seriesIndex = 0; + foreach ($subject->getSeries() as $series) { + // c:ser + $objWriter->startElement('c:ser'); + + // c:idx + $objWriter->startElement('c:idx'); + $objWriter->writeAttribute('val', $seriesIndex); + $objWriter->endElement(); + + // c:order + $objWriter->startElement('c:order'); + $objWriter->writeAttribute('val', $seriesIndex); + $objWriter->endElement(); + + // c:tx + $objWriter->startElement('c:tx'); + $coords = ($includeSheet ? 'Sheet1!$' . \PHPExcel_Cell::stringFromColumnIndex(1 + $seriesIndex) . '$1' : ''); + $this->writeSingleValueOrReference($objWriter, $includeSheet, $series->getTitle(), $coords); + $objWriter->endElement(); + + // Fills for points? + $dataPointFills = $series->getDataPointFills(); + foreach ($dataPointFills as $key => $value) { + // c:dPt + $objWriter->startElement('c:dPt'); + + // c:idx + $this->writeElementWithValAttribute($objWriter, 'c:idx', $key); + + // c:spPr + $objWriter->startElement('c:spPr'); + + // Write fill + $this->writeFill($objWriter, $value); + + $objWriter->endElement(); + + $objWriter->endElement(); + } + + // Write X axis data + $axisXData = array_keys($series->getValues()); + + // c:cat + $objWriter->startElement('c:cat'); + $this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisXData, 'Sheet1!$A$2:$A$' . (1 + count($axisXData))); + $objWriter->endElement(); + + // Write Y axis data + $axisYData = array_values($series->getValues()); + + // c:val + $objWriter->startElement('c:val'); + $coords = ($includeSheet ? 'Sheet1!$' . \PHPExcel_Cell::stringFromColumnIndex($seriesIndex + 1) . '$2:$' . \PHPExcel_Cell::stringFromColumnIndex($seriesIndex + 1) . '$' . (1 + count($axisYData)) : ''); + $this->writeMultipleValuesOrReference($objWriter, $includeSheet, $axisYData, $coords); + $objWriter->endElement(); + + $objWriter->endElement(); + + ++$seriesIndex; + } + + // c:dLbls + $objWriter->startElement('c:dLbls'); + + $this->writeElementWithValAttribute($objWriter, 'c:showLegendKey', $series->hasShowLegendKey() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showVal', $series->hasShowValue() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showCatName', $series->hasShowCategoryName() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showSerName', $series->hasShowSeriesName() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showPercent', $series->hasShowPercentage() ? '1' : '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showBubbleSize', '0'); + $this->writeElementWithValAttribute($objWriter, 'c:showLeaderLines', $series->hasShowLeaderLines() ? '1' : '0'); + + if ($series->hasDlblNumFormat()) { + //c:numFmt + $objWriter->startElement('c:numFmt'); + $objWriter->writeAttribute('formatCode', $series->getDlblNumFormat()); + $objWriter->writeAttribute('sourceLinked', '0'); + $objWriter->endElement(); + } + + // c:dLbls\c:txPr + $objWriter->startElement('c:txPr'); + $objWriter->writeElement('a:bodyPr', null); + $objWriter->writeElement('a:lstStyle', null); + + // c:dLbls\c:txPr\a:p + $objWriter->startElement('a:p'); + + // c:dLbls\c:txPr\a:p\a:pPr + $objWriter->startElement('a:pPr'); + + // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr + $objWriter->startElement('a:defRPr'); + $objWriter->writeAttribute('b', ($series->getFont()->isBold() ? 'true' : 'false')); + $objWriter->writeAttribute('i', ($series->getFont()->isItalic() ? 'true' : 'false')); + $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); + $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); + $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '30000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-25000'); + + // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\a:solidFill + $objWriter->startElement('a:solidFill'); + $this->writeColor($objWriter, $series->getFont()->getColor()); + $objWriter->endElement(); + + // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\a:latin + $objWriter->startElement('a:latin'); + $objWriter->writeAttribute('typeface', $series->getFont()->getName()); + $objWriter->endElement(); + + // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\ + $objWriter->endElement(); + // c:dLbls\c:txPr\a:p\a:pPr\ + $objWriter->endElement(); + + // c:dLbls\c:txPr\a:p\a:endParaRPr + $objWriter->startElement('a:endParaRPr'); + $objWriter->writeAttribute('lang', 'en-US'); + $objWriter->writeAttribute('dirty', '0'); + $objWriter->endElement(); + + // c:dLbls\c:txPr\a:p\ + $objWriter->endElement(); + // c:dLbls\c:txPr\ + $objWriter->endElement(); + // c:dLbls\ + $objWriter->endElement(); + + $this->writeElementWithValAttribute($objWriter, 'c:firstSliceAng', '0'); + $this->writeElementWithValAttribute($objWriter, 'c:holeSize', $subject->getHoleSize()); + + $objWriter->endElement(); + } + /** * Write Type Pie * From 5cdc5927e33aadf41d09df5b997c2e48ced2d7c9 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 30 Aug 2017 22:28:16 +0200 Subject: [PATCH 016/139] #355 : Doughnut Chart (Changelog & Tests & WIP ODPresentation) --- CHANGELOG.md | 1 + .../Writer/ODPresentation/ObjectsChart.php | 2 + .../Tests/Shape/Chart/Type/DoughnutTest.php | 81 +++++++++++++++++++ .../Writer/PowerPoint2007/PptChartsTest.php | 47 ++++++++++- 4 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 tests/PhpPresentation/Tests/Shape/Chart/Type/DoughnutTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f0e79f25b..8673855654 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ ### Changes ### Features +- PowerPoint2007 Writer : Support for DoughnutChart - @Progi1984 GH-355 ## 0.9.0 - 2017-07-05 diff --git a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php index d9d760d620..6ae4d6e3ab 100644 --- a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php +++ b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php @@ -13,6 +13,7 @@ use PhpOffice\PhpPresentation\Shape\Chart\Type\Area; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar3D; +use PhpOffice\PhpPresentation\Shape\Chart\Type\Doughnut; use PhpOffice\PhpPresentation\Shape\Chart\Type\Line; use PhpOffice\PhpPresentation\Shape\Chart\Type\Pie3D; use PhpOffice\PhpPresentation\Shape\Chart\Type\Scatter; @@ -182,6 +183,7 @@ protected function writeContentPart(Chart $chart) $this->xmlContent->writeAttribute('chart:style-name', 'styleChart'); $this->xmlContent->writeAttributeIf($chartType instanceof Area, 'chart:class', 'chart:area'); $this->xmlContent->writeAttributeIf($chartType instanceof AbstractTypeBar, 'chart:class', 'chart:bar'); + $this->xmlContent->writeAttributeIf($chartType instanceof Doughnut, 'chart:class', 'chart:ring'); $this->xmlContent->writeAttributeIf($chartType instanceof Line, 'chart:class', 'chart:line'); $this->xmlContent->writeAttributeIf($chartType instanceof AbstractTypePie, 'chart:class', 'chart:circle'); $this->xmlContent->writeAttributeIf($chartType instanceof Scatter, 'chart:class', 'chart:scatter'); diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/DoughnutTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/DoughnutTest.php new file mode 100644 index 0000000000..c04cfa8374 --- /dev/null +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/DoughnutTest.php @@ -0,0 +1,81 @@ +assertInternalType('array', $object->getSeries()); + $this->assertEmpty($object->getSeries()); + + $array = array( + new Series(), + new Series(), + ); + + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\Doughnut', $object->setSeries()); + $this->assertEmpty($object->getSeries()); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\Doughnut', $object->setSeries($array)); + $this->assertCount(count($array), $object->getSeries()); + } + + public function testHoleSize() + { + $rand = rand(10, 90); + $object = new Doughnut(); + + $this->assertEquals(50, $object->getHoleSize()); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\Doughnut', $object->setHoleSize(9)); + $this->assertEquals(10, $object->getHoleSize()); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\Doughnut', $object->setHoleSize(91)); + $this->assertEquals(90, $object->getHoleSize()); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\Doughnut', $object->setHoleSize($rand)); + $this->assertEquals($rand, $object->getHoleSize()); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\Doughnut', $object->setHoleSize()); + $this->assertEquals(50, $object->getHoleSize()); + } + + public function testSeries() + { + $object = new Doughnut(); + + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\Doughnut', $object->addSeries(new Series())); + $this->assertCount(1, $object->getSeries()); + } + + public function testHashCode() + { + $oSeries = new Series(); + + $object = new Doughnut(); + $object->addSeries($oSeries); + + $this->assertEquals(md5($oSeries->getHashCode() . get_class($object)), $object->getHashCode()); + } +} diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php index 5f407eec3e..3ec4cce569 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php @@ -4,7 +4,6 @@ use \Exception; use PhpOffice\Common\Drawing; -use PhpOffice\PhpPresentation\PhpPresentation; use PhpOffice\PhpPresentation\Shape\Chart\Axis; use PhpOffice\PhpPresentation\Shape\Chart\Gridlines; use PhpOffice\PhpPresentation\Shape\Chart\Marker; @@ -12,6 +11,7 @@ use PhpOffice\PhpPresentation\Shape\Chart\Type\Area; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar3D; +use PhpOffice\PhpPresentation\Shape\Chart\Type\Doughnut; use PhpOffice\PhpPresentation\Shape\Chart\Type\Line; use PhpOffice\PhpPresentation\Shape\Chart\Type\Pie; use PhpOffice\PhpPresentation\Shape\Chart\Type\Pie3D; @@ -440,6 +440,51 @@ public function testTypeBar3DSuperScript() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '30000'); } + public function testTypeDoughnut() + { + $randHoleSize = rand(10, 90); + + $oSlide = $this->oPresentation->getActiveSlide(); + $oShape = $oSlide->createChartShape(); + $oShape->setResizeProportional(false)->setHeight(550)->setWidth(700)->setOffsetX(120)->setOffsetY(80); + $oDoughnut = new Doughnut(); + $oSeries = new Series('Downloads', $this->seriesData); + $oSeries->getDataPointFill(0)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_BLUE)); + $oSeries->getDataPointFill(1)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_DARKBLUE)); + $oSeries->getDataPointFill(2)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_DARKGREEN)); + $oSeries->getDataPointFill(3)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_DARKRED)); + $oSeries->getDataPointFill(4)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_DARKYELLOW)); + $oDoughnut->addSeries($oSeries); + $oShape->getPlotArea()->setType($oDoughnut); + + $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData'; + $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:ser'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:ser/c:dPt/c:spPr'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:ser/c:tx/c:v'; + $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:dLbls/c:showBubbleSize'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 0); + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:firstSliceAng'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 0); + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:holeSize'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 50); + + $oDoughnut->setHoleSize($randHoleSize); + $this->resetPresentationFile(); + + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:holeSize'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $randHoleSize); + } + public function testTypeBar3DBarDirection() { $oSlide = $this->oPresentation->getActiveSlide(); From a740c8cd2575fc27e6a670fd7052bdb667354c13 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Thu, 7 Sep 2017 08:45:19 +0200 Subject: [PATCH 017/139] #355 : - ODPresentation Writer : Doughnut Chart - ODPresentation Writer : Support for the position of Legend --- CHANGELOG.md | 2 + samples/Sample_05_Chart.php | 2 + src/PhpPresentation/Shape/AbstractGraphic.php | 2 +- .../Writer/ODPresentation/ObjectsChart.php | 44 +++- .../Writer/PowerPoint2007/PptCharts.php | 40 ++-- .../ODPresentation/ObjectsChartTest.php | 191 +++++++++++++----- .../Writer/PowerPoint2007/PptChartsTest.php | 12 ++ 7 files changed, 214 insertions(+), 79 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8673855654..30830f90c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ ### Changes ### Features +- ODPresentation Writer : Support for the position of Legend - @Progi1984 GH-355 +- ODPresentation Writer : Support for DoughnutChart - @Progi1984 GH-355 - PowerPoint2007 Writer : Support for DoughnutChart - @Progi1984 GH-355 ## 0.9.0 - 2017-07-05 diff --git a/samples/Sample_05_Chart.php b/samples/Sample_05_Chart.php index c472084180..db7540d074 100644 --- a/samples/Sample_05_Chart.php +++ b/samples/Sample_05_Chart.php @@ -414,6 +414,7 @@ function fnSlide_Doughnut(PhpPresentation $objPHPPresentation) $series->setShowSeriesName(false); $series->setShowCategoryName(true); $series->setDlblNumFormat('%d'); + $series->setSeparator(' > '); $series->getFont()->getColor()->setRGB('FFFF00'); $series->getFont()->setBold(true); $doughnutChart->addSeries($series); @@ -435,6 +436,7 @@ function fnSlide_Doughnut(PhpPresentation $objPHPPresentation) $shape->getPlotArea()->setType($doughnutChart); $shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE); $shape->getLegend()->getFont()->setItalic(true); + $shape->getLegend()->setPosition(\PhpOffice\PhpPresentation\Shape\Chart\Legend::POSITION_LEFT); } function fnSlide_Pie3D(PhpPresentation $objPHPPresentation) { diff --git a/src/PhpPresentation/Shape/AbstractGraphic.php b/src/PhpPresentation/Shape/AbstractGraphic.php index 0df5a195e6..77204686a7 100644 --- a/src/PhpPresentation/Shape/AbstractGraphic.php +++ b/src/PhpPresentation/Shape/AbstractGraphic.php @@ -226,7 +226,7 @@ public function isResizeProportional() * Set ResizeProportional * * @param boolean $pValue - * @return \PhpOffice\PhpPresentation\Shape\AbstractDrawing + * @return \PhpOffice\PhpPresentation\Shape\AbstractGraphic */ public function setResizeProportional($pValue = true) { diff --git a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php index 6ae4d6e3ab..505ba7ecc6 100644 --- a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php +++ b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php @@ -183,9 +183,11 @@ protected function writeContentPart(Chart $chart) $this->xmlContent->writeAttribute('chart:style-name', 'styleChart'); $this->xmlContent->writeAttributeIf($chartType instanceof Area, 'chart:class', 'chart:area'); $this->xmlContent->writeAttributeIf($chartType instanceof AbstractTypeBar, 'chart:class', 'chart:bar'); + if (!($chartType instanceof Doughnut)) { + $this->xmlContent->writeAttributeIf($chartType instanceof AbstractTypePie, 'chart:class', 'chart:circle'); + } $this->xmlContent->writeAttributeIf($chartType instanceof Doughnut, 'chart:class', 'chart:ring'); $this->xmlContent->writeAttributeIf($chartType instanceof Line, 'chart:class', 'chart:line'); - $this->xmlContent->writeAttributeIf($chartType instanceof AbstractTypePie, 'chart:class', 'chart:circle'); $this->xmlContent->writeAttributeIf($chartType instanceof Scatter, 'chart:class', 'chart:scatter'); //**** Title **** @@ -439,13 +441,33 @@ private function writeLegend(Chart $chart) { // chart:legend $this->xmlContent->startElement('chart:legend'); - $this->xmlContent->writeAttribute('chart:legend-position', 'end'); + switch ($chart->getLegend()->getPosition()) { + case Chart\Legend::POSITION_BOTTOM: + $position = 'bottom'; + break; + case Chart\Legend::POSITION_LEFT: + $position = 'start'; + break; + case Chart\Legend::POSITION_TOP: + $position = 'top'; + break; + case Chart\Legend::POSITION_TOPRIGHT: + $position = 'top-end'; + break; + case Chart\Legend::POSITION_RIGHT: + default: + $position = 'end'; + break; + } + $this->xmlContent->writeAttribute('chart:legend-position', $position); $this->xmlContent->writeAttribute('svg:x', Text::numberFormat(CommonDrawing::pixelsToCentimeters($chart->getLegend()->getOffsetX()), 3) . 'cm'); $this->xmlContent->writeAttribute('svg:y', Text::numberFormat(CommonDrawing::pixelsToCentimeters($chart->getLegend()->getOffsetY()), 3) . 'cm'); $this->xmlContent->writeAttribute('style:legend-expansion', 'high'); $this->xmlContent->writeAttribute('chart:style-name', 'styleLegend'); // > chart:legend $this->xmlContent->endElement(); + + } /** @@ -457,6 +479,11 @@ private function writeLegendStyle(Chart $chart) $this->xmlContent->startElement('style:style'); $this->xmlContent->writeAttribute('style:name', 'styleLegend'); $this->xmlContent->writeAttribute('style:family', 'chart'); + // style:chart-properties + $this->xmlContent->startElement('style:chart-properties'); + $this->xmlContent->writeAttribute('chart:auto-position', 'true'); + // > style:chart-properties + $this->xmlContent->endElement(); // style:text-properties $this->xmlContent->startElement('style:text-properties'); $this->xmlContent->writeAttribute('fo:color', '#'.$chart->getLegend()->getFont()->getColor()->getRGB()); @@ -714,6 +741,19 @@ private function writeSeriesStyle(Chart $chart, Chart\Series $series) $this->xmlContent->writeAttribute('chart:symbol-height', $symbolSize.'cm'); } } + + $separator = $series->getSeparator(); + if (!empty($separator)) { + // style:chart-properties/chart:label-separator + $this->xmlContent->startElement('chart:label-separator'); + if ($separator == PHP_EOL) { + $this->xmlContent->writeRaw(''); + } else { + $this->xmlContent->writeElement('text:p', $separator); + } + $this->xmlContent->endElement(); + } + // > style:chart-properties $this->xmlContent->endElement(); // style:graphic-properties diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index 98c8d1dcc9..1628cb3e9c 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -1253,18 +1253,13 @@ protected function writeTypeDoughnut(XMLWriter $objWriter, Doughnut $subject, $i foreach ($dataPointFills as $key => $value) { // c:dPt $objWriter->startElement('c:dPt'); - - // c:idx $this->writeElementWithValAttribute($objWriter, 'c:idx', $key); - - // c:spPr + // c:dPt/c:spPr $objWriter->startElement('c:spPr'); - - // Write fill $this->writeFill($objWriter, $value); - + // c:dPt/##c:spPr $objWriter->endElement(); - + // ##c:dPt $objWriter->endElement(); } @@ -1355,6 +1350,13 @@ protected function writeTypeDoughnut(XMLWriter $objWriter, Doughnut $subject, $i $objWriter->endElement(); // c:dLbls\c:txPr\ $objWriter->endElement(); + + $separator = $series->getSeparator(); + if (!empty($separator) && $separator != PHP_EOL) { + // c:dLbls\c:separator + $objWriter->writeElement('c:separator', $separator); + } + // c:dLbls\ $objWriter->endElement(); @@ -1409,18 +1411,13 @@ protected function writeTypePie(XMLWriter $objWriter, Pie $subject, $includeShee foreach ($dataPointFills as $key => $value) { // c:dPt $objWriter->startElement('c:dPt'); - - // c:idx $this->writeElementWithValAttribute($objWriter, 'c:idx', $key); - - // c:spPr + // c:dPt/c:spPr $objWriter->startElement('c:spPr'); - - // Write fill $this->writeFill($objWriter, $value); - + // c:dPt/##c:spPr $objWriter->endElement(); - + // ##c:dPt $objWriter->endElement(); } @@ -1588,18 +1585,13 @@ protected function writeTypePie3D(XMLWriter $objWriter, Pie3D $subject, $include foreach ($dataPointFills as $key => $value) { // c:dPt $objWriter->startElement('c:dPt'); - - // c:idx $this->writeElementWithValAttribute($objWriter, 'c:idx', $key); - - // c:spPr + // c:dPt/c:spPr $objWriter->startElement('c:spPr'); - - // Write fill $this->writeFill($objWriter, $value); - + // c:dPt/##c:spPr $objWriter->endElement(); - + // ##c:dPt $objWriter->endElement(); } diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php index ab159f7817..877c731cca 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php @@ -4,11 +4,13 @@ use PhpOffice\Common\Drawing as CommonDrawing; use PhpOffice\PhpPresentation\Shape\Chart\Gridlines; +use PhpOffice\PhpPresentation\Shape\Chart\Legend; use PhpOffice\PhpPresentation\Shape\Chart\Marker; use PhpOffice\PhpPresentation\Shape\Chart\Series; use PhpOffice\PhpPresentation\Shape\Chart\Type\Area; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar3D; +use PhpOffice\PhpPresentation\Shape\Chart\Type\Doughnut; use PhpOffice\PhpPresentation\Shape\Chart\Type\Line; use PhpOffice\PhpPresentation\Shape\Chart\Type\Pie; use PhpOffice\PhpPresentation\Shape\Chart\Type\Pie3D; @@ -28,6 +30,17 @@ class ObjectsChartTest extends PhpPresentationTestCase { protected $writerName = 'ODPresentation'; + /** + * @var array + */ + protected $seriesData = array( + 'A' => 1, + 'B' => 2, + 'C' => 4, + 'D' => 3, + 'E' => 2, + ); + public function testAxisFont() { $oShape = $this->oPresentation->getActiveSlide()->createChartShape(); @@ -72,8 +85,12 @@ public function testLegend() $oChart = $this->oPresentation->getActiveSlide()->createChartShape(); $oChart->getPlotArea()->setType($oLine); + $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'styleLegend\']/style:chart-properties'; + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:auto-position', 'true'); $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'end'); $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows/table:table-row'; @@ -82,6 +99,93 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows/table:table-row/table:table-cell[@office:value-type=\'string\']'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); + + $oChart->getLegend()->setPosition(Legend::POSITION_RIGHT); + $this->resetPresentationFile(); + + $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'end'); + + $oChart->getLegend()->setPosition(Legend::POSITION_LEFT); + $this->resetPresentationFile(); + + $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'start'); + + $oChart->getLegend()->setPosition(Legend::POSITION_BOTTOM); + $this->resetPresentationFile(); + + $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'bottom'); + + $oChart->getLegend()->setPosition(Legend::POSITION_TOP); + $this->resetPresentationFile(); + + $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'top'); + + $oChart->getLegend()->setPosition(Legend::POSITION_TOPRIGHT); + $this->resetPresentationFile(); + + $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'top-end'); + } + + public function testSeries() + { + $oSeries = new Series('Series', array('Jan' => 1, 'Feb' => 5, 'Mar' => 2)); + $oPie = new Pie(); + $oPie->addSeries($oSeries); + $oChart = $this->oPresentation->getActiveSlide()->createChartShape(); + $oChart->getPlotArea()->setType($oPie); + + $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'styleSeries0\']/style:chart-properties'; + + // $showCategoryName = false / $showPercentage = false / $showValue = true + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); + $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); + + $oSeries->setShowValue(false); + $this->resetPresentationFile(); + + // $showCategoryName = false / $showPercentage = false / $showValue = false + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-number'); + $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); + + // $showCategoryName = false / $showPercentage = true / $showValue = true + $oSeries->setShowValue(true); + $oSeries->setShowPercentage(true); + $this->resetPresentationFile(); + + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value-and-percentage'); + $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); + + // $showCategoryName = false / $showPercentage = true / $showValue = false + $oSeries->setShowValue(false); + $this->resetPresentationFile(); + + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); + $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); + + // $showCategoryName = false / $showPercentage = true / $showValue = false + $oSeries->setShowCategoryName(true); + $this->resetPresentationFile(); + + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-text'); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-text', 'true'); } public function testTitleVisibility() @@ -308,6 +412,41 @@ public function testTypeBar3DHorizontal() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:right-angled-axes'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:right-angled-axes', 'true'); } + + public function testTypeDoughnut() + { + // $randHoleSize = rand(10, 90); + $randSeparator = chr(rand(ord('A'), ord('Z'))); + + $oSlide = $this->oPresentation->getActiveSlide(); + $oShape = $oSlide->createChartShape(); + $oShape->setResizeProportional(false)->setHeight(550)->setWidth(700)->setOffsetX(120)->setOffsetY(80); + $oDoughnut = new Doughnut(); + $oSeries = new Series('Downloads', $this->seriesData); + $oSeries->getDataPointFill(0)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_BLUE)); + $oSeries->getDataPointFill(1)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_DARKBLUE)); + $oSeries->getDataPointFill(2)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_DARKGREEN)); + $oSeries->getDataPointFill(3)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_DARKRED)); + $oSeries->getDataPointFill(4)->setFillType(Fill::FILL_SOLID)->setStartColor(new Color(Color::COLOR_DARKYELLOW)); + $oDoughnut->addSeries($oSeries); + $oShape->getPlotArea()->setType($oDoughnut); + + $element = '/office:document-content/office:body/office:chart/chart:chart'; + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:class', 'chart:ring'); + $element = '/office:document-content/office:automatic-styles/style:style/style:chart-properties/chart:label-separator/text:p'; + $this->assertZipXmlElementNotExists('Object 1/content.xml', $element); + + // $oDoughnut->setHoleSize($randHoleSize); + // $this->resetPresentationFile(); + + $oSeries->setSeparator($randSeparator); + $this->resetPresentationFile(); + + $element = '/office:document-content/office:automatic-styles/style:style/style:chart-properties/chart:label-separator/text:p'; + $this->assertZipXmlElementExists('Object 1/content.xml', $element); + $this->assertZipXmlElementEquals('Object 1/content.xml', $element, $randSeparator); + } public function testTypeLine() { @@ -707,56 +846,4 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#' . $oColor->getRGB()); } - - public function testSeries() - { - $oSeries = new Series('Series', array('Jan' => 1, 'Feb' => 5, 'Mar' => 2)); - $oPie = new Pie(); - $oPie->addSeries($oSeries); - $oChart = $this->oPresentation->getActiveSlide()->createChartShape(); - $oChart->getPlotArea()->setType($oPie); - - $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'styleSeries0\']/style:chart-properties'; - - // $showCategoryName = false / $showPercentage = false / $showValue = true - $this->assertZipXmlElementExists('Object 1/content.xml', $element); - $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); - $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); - $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); - - $oSeries->setShowValue(false); - $this->resetPresentationFile(); - - // $showCategoryName = false / $showPercentage = false / $showValue = false - $this->assertZipXmlElementExists('Object 1/content.xml', $element); - $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-number'); - $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); - - // $showCategoryName = false / $showPercentage = true / $showValue = true - $oSeries->setShowValue(true); - $oSeries->setShowPercentage(true); - $this->resetPresentationFile(); - - $this->assertZipXmlElementExists('Object 1/content.xml', $element); - $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); - $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value-and-percentage'); - $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); - - // $showCategoryName = false / $showPercentage = true / $showValue = false - $oSeries->setShowValue(false); - $this->resetPresentationFile(); - - $this->assertZipXmlElementExists('Object 1/content.xml', $element); - $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); - $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); - $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); - - // $showCategoryName = false / $showPercentage = true / $showValue = false - $oSeries->setShowCategoryName(true); - $this->resetPresentationFile(); - - $this->assertZipXmlElementExists('Object 1/content.xml', $element); - $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-text'); - $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-text', 'true'); - } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php index 3ec4cce569..38ac1e113b 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php @@ -8,6 +8,7 @@ use PhpOffice\PhpPresentation\Shape\Chart\Gridlines; use PhpOffice\PhpPresentation\Shape\Chart\Marker; use PhpOffice\PhpPresentation\Shape\Chart\Series; +use PhpOffice\PhpPresentation\Shape\Chart\Type\AbstractType; use PhpOffice\PhpPresentation\Shape\Chart\Type\Area; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar; use PhpOffice\PhpPresentation\Shape\Chart\Type\Bar3D; @@ -46,6 +47,7 @@ public function testPlotAreaBadType() $oSlide = $this->oPresentation->getActiveSlide(); $oShape = $oSlide->createChartShape(); $oShape->setResizeProportional(false)->setHeight(550)->setWidth(700)->setOffsetX(120)->setOffsetY(80); + /** @var AbstractType $stub */ $stub = $this->getMockForAbstractClass('PhpOffice\PhpPresentation\Shape\Chart\Type\AbstractType'); $oShape->getPlotArea()->setType($stub); @@ -443,6 +445,7 @@ public function testTypeBar3DSuperScript() public function testTypeDoughnut() { $randHoleSize = rand(10, 90); + $randSeparator = chr(rand(ord('A'), ord('Z'))); $oSlide = $this->oPresentation->getActiveSlide(); $oShape = $oSlide->createChartShape(); @@ -467,6 +470,8 @@ public function testTypeDoughnut() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:ser/c:tx/c:v'; $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:dLbls/c:separator'; + $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:dLbls/c:showBubbleSize'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 0); @@ -483,6 +488,13 @@ public function testTypeDoughnut() $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:holeSize'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $randHoleSize); + + $oSeries->setSeparator($randSeparator); + $this->resetPresentationFile(); + + $element = '/c:chartSpace/c:chart/c:plotArea/c:doughnutChart/c:dLbls/c:separator'; + $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); + $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $randSeparator); } public function testTypeBar3DBarDirection() From cc1bc667d8503b83944a4639bade9b9e437d2893 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Thu, 7 Sep 2017 09:17:11 +0200 Subject: [PATCH 018/139] #355 : Fix PHPCS --- src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php index 505ba7ecc6..c31cc68b30 100644 --- a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php +++ b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php @@ -466,8 +466,6 @@ private function writeLegend(Chart $chart) $this->xmlContent->writeAttribute('chart:style-name', 'styleLegend'); // > chart:legend $this->xmlContent->endElement(); - - } /** From e5ef770fc1054d582a902de52940f64d42153418 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Thu, 7 Sep 2017 09:35:13 +0200 Subject: [PATCH 019/139] #355 : Array to string conversion (PHPPresentation/src/PhpPresentation/Writer/PowerPoint2007/LayoutPack/TemplateBased.php:73) --- .../Writer/PowerPoint2007/LayoutPack/AbstractLayoutPack.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PhpPresentation/Writer/PowerPoint2007/LayoutPack/AbstractLayoutPack.php b/src/PhpPresentation/Writer/PowerPoint2007/LayoutPack/AbstractLayoutPack.php index 1e3cf69f17..8401aa44ca 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/LayoutPack/AbstractLayoutPack.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/LayoutPack/AbstractLayoutPack.php @@ -58,7 +58,7 @@ abstract class AbstractLayoutPack * * @var array */ - protected $themes = ''; + protected $themes = array(); /** * Theme relations From a35c00d33f3c2d8372451c73f08c158cd6da09ed Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Thu, 7 Sep 2017 09:39:29 +0200 Subject: [PATCH 020/139] #355 : PHP 7.1 is now supported --- .travis.yml | 1 - CHANGELOG.md | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 59e06d6bca..55a0b0a80b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,6 @@ php: matrix: allow_failures: - - php: 7.1 - php: hhvm env: diff --git a/CHANGELOG.md b/CHANGELOG.md index 30830f90c0..89ac91a50c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - PowerPoint2007 : Text is subscripted when set superscript to false - @qmachard GH-360 ### Changes +- PHP 7.1 is now supported - @Progi1984 GH-355 ### Features - ODPresentation Writer : Support for the position of Legend - @Progi1984 GH-355 From 7ec70690661677dd06cc84c15592b48b29ae8477 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Thu, 7 Sep 2017 14:36:32 +0200 Subject: [PATCH 021/139] #370 : PhpOffice\PhpPresentation\Style\Color : Define only the transparency --- CHANGELOG.md | 1 + src/PhpPresentation/Style/Color.php | 20 +++++++++++++++++++ .../PhpPresentation/Tests/Style/ColorTest.php | 7 +++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89ac91a50c..594c199165 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### Changes - PHP 7.1 is now supported - @Progi1984 GH-355 +- PhpOffice\PhpPresentation\Style\Color : Define only the transparency - @Progi1984 GH-370 ### Features - ODPresentation Writer : Support for the position of Legend - @Progi1984 GH-355 diff --git a/src/PhpPresentation/Style/Color.php b/src/PhpPresentation/Style/Color.php index e65fc8724b..76fddd8c2a 100644 --- a/src/PhpPresentation/Style/Color.php +++ b/src/PhpPresentation/Style/Color.php @@ -102,6 +102,26 @@ public function getAlpha() return $alpha; } + /** + * Set the alpha % of the ARGB + * @param int $alpha + * @return $this + */ + public function setAlpha($alpha = 100) + { + if ($alpha < 0) { + $alpha = 0; + } + if ($alpha > 100) { + $alpha = 100; + } + $alpha = round(($alpha / 100) * 255); + $alpha = dechex($alpha); + $alpha = str_pad($alpha, 2, '0', STR_PAD_LEFT); + $this->argb = $alpha . substr($this->argb, 2); + return $this; + } + /** * Get RGB * diff --git a/tests/PhpPresentation/Tests/Style/ColorTest.php b/tests/PhpPresentation/Tests/Style/ColorTest.php index 672b0e27b2..e62388f2cf 100644 --- a/tests/PhpPresentation/Tests/Style/ColorTest.php +++ b/tests/PhpPresentation/Tests/Style/ColorTest.php @@ -42,13 +42,16 @@ public function testConstruct() */ public function testAlpha() { + $randAlpha = rand(0, 100); $object = new Color(); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Color', $object->setARGB()); $this->assertEquals(100, $object->getAlpha()); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Color', $object->setARGB(Color::COLOR_BLUE)); - $this->assertEquals(100, $object->getAlpha()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Color', $object->setARGB('AA0000FF')); $this->assertEquals(66.67, $object->getAlpha()); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Color', $object->setARGB(Color::COLOR_BLUE)); + $this->assertEquals(100, $object->getAlpha()); + $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Color', $object->setAlpha($randAlpha)); + $this->assertEquals($randAlpha, round($object->getAlpha())); } /** From d7247d28b92c7923dd9a267727e6fe265b790b5a Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Thu, 7 Sep 2017 14:38:48 +0200 Subject: [PATCH 022/139] #370 : PowerPoint2007 Writer : Support for fill for transparent image --- CHANGELOG.md | 1 + samples/Sample_03_Image.php | 28 ++++++++-------- samples/Sample_03_Video.php | 33 +++++++++++++++++++ samples/Sample_Header.php | 14 +++++--- src/PhpPresentation/Shape/AbstractGraphic.php | 12 +++---- .../Writer/PowerPoint2007/AbstractSlide.php | 11 +++---- .../Writer/PowerPoint2007/PptSlides.php | 11 ++----- .../Writer/PowerPoint2007/PptSlidesTest.php | 19 +++++++++++ 8 files changed, 92 insertions(+), 37 deletions(-) create mode 100644 samples/Sample_03_Video.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 594c199165..44ab2f4fd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - ODPresentation Writer : Support for the position of Legend - @Progi1984 GH-355 - ODPresentation Writer : Support for DoughnutChart - @Progi1984 GH-355 - PowerPoint2007 Writer : Support for DoughnutChart - @Progi1984 GH-355 +- PowerPoint2007 Writer : Support for fill for transparent image - @JewrassicPark GH-370 ## 0.9.0 - 2017-07-05 diff --git a/samples/Sample_03_Image.php b/samples/Sample_03_Image.php index ea1ad2afe4..2f97888641 100644 --- a/samples/Sample_03_Image.php +++ b/samples/Sample_03_Image.php @@ -4,7 +4,8 @@ use PhpOffice\PhpPresentation\PhpPresentation; use PhpOffice\PhpPresentation\Shape\Drawing; -use PhpOffice\PhpPresentation\Shape\Media; +use PhpOffice\PhpPresentation\Style\Color; +use PhpOffice\PhpPresentation\Style\Fill; // Create new PHPPresentation object echo date('H:i:s') . ' Create new PHPPresentation object'.EOL; @@ -26,7 +27,6 @@ $shape->setName('Sample image') ->setDescription('Sample image') ->setImageResource($gdImage) - ->setRenderingFunction(Drawing\Gd::RENDERING_JPEG) ->setMimeType(Drawing\Gd::MIMETYPE_DEFAULT) ->setHeight(36) ->setOffsetX(10) @@ -59,7 +59,7 @@ $shape = new Drawing\Base64(); $shape->setName('PHPPresentation logo') ->setDescription('PHPPresentation logo') - ->setData('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAtAFAAMBIgACEQEDEQH/xAAcAAEAAwEBAQEBAAAAAAAAAAAABAUGAwcCAQj/xABdEAABAwICAwYQCgcGBQIFBQEAAQIDBAUGERIhMQcTFkFR0RQVIjU2VFVhcXORkpOxssEXMjRSU3KBlKHSIzM3QlZ0giRioqPC4aSz0+LwQ2QlY2XD8SZFR4OERv/EABsBAQACAwEBAAAAAAAAAAAAAAADBQIEBgEH/8QAQREAAQMCBAMDCgUDAwQDAQEAAAECAwQREiExUQUTQRRhcSIyM1KBkaGxwfAVIzRC0TZy4QZT8RYkkqIlQ2KCNf/aAAwDAQACEQMRAD8A+eklo7l0f3dnMOklo7l0f3dnMTQddy2bIVeJ25C6SWjuXR/d2cw6SWjuXR/d2cxNA5bNkPMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7t5iaBy2bIMTtzhT0VJSaXQtLDBp5aW9xo3PLlyO4BkiImh5cAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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', false) + ->setData('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAtAFAAMBIgACEQEDEQH/xAAcAAEAAwEBAQEBAAAAAAAAAAAABAUGAwcCAQj/xABdEAABAwICAwYQCgcGBQIFBQEAAQIDBAUGERIhMQcTFkFR0RQVIjU2VFVhcXORkpOxssEXMjRSU3KBlKHSIzM3QlZ0giRioqPC4aSz0+LwQ2QlY2XD8SZFR4OERv/EABsBAQACAwEBAAAAAAAAAAAAAAADBQIEBgEH/8QAQREAAQMCBAMDCgUDAwQDAQEAAAECAwQREiExUQUTQRRhcSIyM1KBkaGxwfAVIzRC0TZy4QZT8RYkkqIlQ2KCNf/aAAwDAQACEQMRAD8A+eklo7l0f3dnMOklo7l0f3dnMTQddy2bIVeJ25C6SWjuXR/d2cw6SWjuXR/d2cxNA5bNkPMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7t5iaBy2bIMTtzhT0VJSaXQtLDBp5aW9xo3PLlyO4BkiImh5cAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI1TXRUr2tkR2apmmSIRSyshbjkWyEkMT5n4I0upJBXLeaf5kvkTnP3pxTfMl8ic5p/idF/uIb34VXf7SlgACxKwAA8PQAAAAD0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgXG4tpsqWBWur5m/wBmhci/pHcSeXvmEkjY2q5y2RD1EuTwZe4YXo66jS4Xh09Pe5HZVFKxyaDETU3LUv7qNX4y7SsZh2nt70rKPfH1EC6cbXuTJXJszOd/6iplfhRMr2v9TB00LHYVdmbsFRZb2lc1tNWOZHcURXSwMavUpnq5eLLj4y3OhjkbI1HNXJTJQADMAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+PdoMc7kRVP0+J0zgk77VMJFwsVTJllciKUdZXrUSNdGr42omWWkRHSPevVvc7kzXM69DL878CdQWN1dG56TozRXLW3P3ny6erfM5XyO1PpVNJRxIkcS6fepWNTNyJmau22dKNkm/73Mq5ZZt2FJW2daKRjN+R2lx6OWRY8Hanug7yLzmq56L1M5Jo5Lsa4kn4QZ7FPDlnWKufeXnOtFSPptPTl3zSy+w+kUfEJKrC5IrNXrdPlrqcJV0MNOipzUVydLL8yUAC2KsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVvtQ2lxvYZ3IqtjcjlRO841RSX+ypWuZcY1e6ppGKsUbcsnrtyU0eIROlpnMaZtWyne71jLhc5qqNrmtfo5I7bqRE9xD4iuju7Io0ZcnMpapPjxLtbyfhkp+uvFK9qspJWTVDtUcaZ9U7iQ+ZpSysXlo1csiifTzOet29fYcrJ+0Gq8R/pYbUz1gs7kqUvVW2SGtmYrZINWi3Jck7+xqL9poT6TwyF0NM1r0zLu1mtbsiIAAWJ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFIc/XGn8LfWSZv1En1VKmnXKpiXkenrOU/wBR1WCNKe3nZ38FLKgju7Hsaup+Sy/Ud6igttwWkziSNHb45NarsNAqx1EL2teio5FTNq5la2wxMejt+fqXPYhwqHTzMerkcw711sStka5ZVZoplszPqgoW0CPTftPTy2plsPmvrZqV7Uig3xFTWuvUUlbXurXxudG1uhxIe5qYyPjjditmak5Tw79o9Vll3in4QS/QM8qkmku8lRpZxNTRy2KblA2pWoalN5+dvct9e4wnnpnRqkuh8gA+sHFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE61WqW7TvhikYxWN0s3FrwKre2IPxM4bux4iZcWKyqdFFOr8mMbn1SZFdVvnj8qNcvAniRjslKfgVXdsQ/iOBVd2xD+JtSDeq2S22iprImtc+FmkiO2KVbuIzol7/AAJ3RxtRVUzHAqu7Zg/EcCq3tiD8SpttjqsW3aW4XCKSmp6iPTbJFlkrkyTLXn3/ACEOy4ZZdbXcahj5lnpVVsUbcsnrlqRTR/GqtbWbre3s9hXc9VVMMet7Z629hcs3MaCetfVXClpKlz06pV0s1XUifghT3XCtjttdBJSW2GKRiaSObnqVC/wXdK+Csbh2qpmxJTxufr+NrXS1+cRsR/K4/AvrIqWbtHEoZVXXFdOl0Tb6my2RHxYm3T70KcAHcEIAAAAAAAAAAAAAAAAAAAAAKljK7Fd5qMO2Wp6BraRm/vnl+KrUyRUTLNc83pxcR+YSwlSbqVDPdbrUTUktLJ0O1lLloq3JHZrpZ6+qPXcO2SDDliprRTyySxUzVa18mWkuaquvLwlFU16vTDHl3m6yG2bjy/4LMdfxNS+c/wDKRaKqnobzPhmue6evoWZyzp8R+xdXHscnkPbMzBbsNluV+wlS0tro5KudlcyRWRprRqMkTPyqnlNSGqkjde9yV8aOSxSApemlbJvcttp21NupkRK+oTPKny25/YWtNVQVlO2oppEkifnouTYuS5HRsmY9VRq6FerFbmp1ABKYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH45uk1WrxpkRXW+JGOVNLNE1ayWfirkiquxDTqKOnqc5WopJHK9nmqQqGumo5WwaLUSR6Z6aa+Q0pkq6RjqmOdjs1jTNOTNDvFiCtci5pFq/unzKsgZFM5ka3ROp2VLIi03MXpqmxpFTNCpks9viy3ype3PZpSNT3ETp7WckfkINwuU9Q6NXozVnlkhrNatzNHMndhal17y66TW/th/npzHKCnZT56CqulynCmrkejt+c1vITDveC0NIxOfE7EvfqmqfE5etqHv8lW4fDqAAdKVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPuGaSnmbNE7RkYubV5D4B4qXSwN1hy/dMUSklR7qiONXPkXLJ2vveFDvirsYr/FKeemxornDiC3T22ueyB0qJGxGbVT7czn+IUKta50ei/A2eYr2KzrYyiYvmpcM0lut6ywVMDurkyarVbr1a/Ch9pJc8GV1OktWj4Kh2/SRxJnpJ9qEy/YC6Bo2SWxairlWTJzF0dTcl1+XIp6HCV1mrYYqihnjhe9Ee9MupTjU5BzZ2uRFTNLWKZzalrka5FulrW0QvsOXGO77oFVXwscxk1Pqa/LNMkanuPnEfyuPwL6y/smD6Sx1/RkFTNI/QVmi/LLXlyJ3igxH8rj8C+stOHMe2vhx6rjX4FkxkjIvzNVVV95TgA7wxAAAAAAAAAAAAAAAABGra+noIkfPK2PTXRZpfvO5DxVREuoRLkkrb3e4LFTRzzxSSNe/QRGZcmZD0d0P+E181fzG/wFg3pVI7ENXv8ADcrhBo1NK/LRiXNF1cfEnGVc3EWI38vU2WQLfyjvubYNrcF2eqoq2ognfNUb610OeSJoonGichb1mJKejq5Kd8EjnMXJVTLLYWdXTtq6WSncqtbImSqm1D8oqVlFSR07HK5I0yRV2lMzAiXdmSypKq2Ytu/X2WP2rZNJSyMp36Eqp1Ll4lINuuKrULbZ9J9TC3N8mrRX/wAzQtMz8PEciJZUM1jVXI5FKikwjYaC3VtvpbcyKmrs+iI0e5UkzTLl9R5PVtbad0u4YeoE3i10sLXQ06a0YqsY5da69rlXbxnuB5RunWaHDdVUY3ppZJa2rljgfDJlvaJoZZplrz6hOPjJKeTlyI4ye27VQ/AV09zVlJCyFGyV9VGi01PrzlfkmTU+1T6t9fK9yUNzjbS3WNqrNS6840z1eVqtX7TpeezHgvmV2BbX6E8AExiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVGtVztiIV9TW5rlC7qVbr1EmqmYyN8bl6pzVyKk5Lj3EnxryIXJ321TuLGkgRfLch+O+IvgOVPsd4T8ne5FyRcj9p9i+E463knUNiVlE5y9bHY4VHxmnY4VO1p43Ui4fnUNTx+RIJ9NW/G396Jsy1FVC9X5568jsbdJWTUcmKNfZ0Xx95oVdKiOWJ+qF4fpzhnjmz0F2d4+z6hHIyVuJi3Q5xzVatlP0AEhiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpBNJTzNmidovYubV5DmAqX1Bu8O35LgxlJJvjqlkave9WojV15cXhTiL08oRytXNqqngU3FixGytbvVW6KKVXI2NqZ5uKCso1YqvZobsU1/JUvzz/ABH8rj8C+s9APP8AEfyuPwL6yrp//wDRg/8A7+QqPNKcAHZmkAAAAAAAAAAAAAD5kdoRudyIqgH0TcPYCqblc5a/EK0tbapG6dHTo9yPifmmSrkicWfGu0z+EsIU26ba5b1cqyoo5YJ1pWx0qojVajWuzXSRdfVr5D1yx2qKxWWltcMsksdMzQa+TLSd4cjn6us5yYW6G9FFhzUngArTYAAAAAABAvNjtuIKJKK60ramnR6P0HOVNaZ5LqVOUngAweFNz2aguE1biLoWtkp5kfbHRSPVadqKupdSa/i8uwxl9/bdef5eP/lRHt5Q4rwlRYstiUVTNLTfpWyb7Bkj1yRUyzVNmslZIrZEeudjFzUVtkPNLVe6a8PqG07JWLTP0X74iJmuvZkq8hYEXdTpmUOIsI0sCaLY36CqmpXZOjTNciUX9HULO1cXQ0ZY8C5H6ADeIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsuHyn+lCKaenpoJo9KSJj1Rcs1Q69A0na0fmny7izv++l8TqaSmc6BqovQxkjHSTsjbtcuSHSsoqi3PayVzc3pn1Kk3EEcdPXRbyxI+oRep1a8yrmqJqhUdNK6RU2K5c8jUbmiHUU8doWtXND531/zlJdHb6i4te6Nzco9ukpBOsNTPAjkilcxHbdFcszK2xPy2pmxERT7pv3vsO5Y4bp4Z4599ia/JW5Zps2l10BR9rR+aQPdmUdZTK+dzkUobZ8aT7CwJFTTwwaKwxtZnnnoptI59G4Ct+Hs9vzU5CvYrKhzV7vkAAXZpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+4pXwStljdovYubV5FPgHipdAbnDl9SujZRzb4+qa1znPVE0V18ypxGexH8rj8C+s5WJVS4L4tfcdcQfKYfqL6zj3Oazj0cLU0RV96KTOero8ynAB2JCAAAAAAAAAAAAD8VqOaqLsXUfoAK6hr6rBFdFV0kyw4ehXfayjhRHPleqaOaaX9H7ybD1qzXenvlkprtTNkZBUx74xsqIjkTv5KvrPNXIjkyciKnIpUR3abAl3feKVOi1uD0p1glcqMjRVRc0y8BR1tIjUWRntNyGW/kqeyW25Q3SB00LXtRrtFUflnsz4vCTCruFA9tSlyptJ0sLcmwpsdt5youUl3ucLI1t7o0a7Szbxmk2FJF8lbJ39P5MH1D4ks9t17uv8GsPwpbdiSnqInOrHxwOR2pM9qcouWI6anga6kfHO9XZK3PYnKYdnlxYLZmfa4MGPFkWlXUso6WSokRytjTNUbtFHVMraWOpjRyNempHbTIy3GtrahlzSm/R0+pyIvU/b5S+or/QyUkbp5o4ZFTWzk1kslM5jdLr8u4iirWSSKl7J0v17y2BXS3qkWJyUs7JpsuojRfjLxISqGWaekZLURb1I7PSZyazXVjkS6m22VjnYWrc7lLirFNDhC0pc7hFUSwrKkWjTta52aoq8apyF0fL42SN0ZGNenI5MzAkPFWRXC+VaXC/1Da7e5N9oOJYGqueS5Imv4vLsLQiXzDdTgy9Qtt6S18F0mV875Ey6HTSTZl3nL5CWdJRKxYvISxXzXxZqAAbxCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdIXOSRiI5U6pCwlekUT5FTNGNVSpkfvUT5Nugiuy8BRVtwfVSI5NJqI3LLSzzON/wBRwRuc1+Ky7W19p1HAmySXbbyd9j6u1wbcahsjGKzRblrUgH6frU0ntbszXI5dreiHZpZje4/D8LRbK5EVd/TUnzSsNqoo56a3Nba5rU1ZBU35Lr2LS0XaO2tkR8bn6eWxeTM1h58T6K5vptPT0pNLLLqthrxwskkRHuwpvqYVcTsKvjbddty+VznbXKvhPwA+rNRESyIfMVVV1AAMjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsrD1xXxa+464g+UQ/UX1nKxdcV8WvuOuIPlEP1F9ZxUv9TM/s+imf7CoAB2pgAAAAAAAAAAAAAAAfhGr7dTXGJrKiJJFjXSjzVU0XcS6iSDFURUsp6i2Kda3dMX/AP6iDyJ/0zeYExol5f0gq+iJrtQw6VXUK1qRPXPLNuS58afuoZsrbzZWXeBkaVD6ZzXaWnFtXVlkVc3Dm4bx6m0yoW/lHqlXh6ifSvbTU7GSqnUuVy5IpBtmGHxVCur0ili0dTWuXb+B5vasQXzc/p32+2W6S8xTu350squzYuzRTLwZ/aLviS+Y+pWWq52p9ohikSoSeLSzVyIrdFc+LqlX7DRTtSKsWf33kbqamcqSWTL70PRMG36xYts9VLa6Kohpmy73IyoREVy5IvE5dWWR81uFaiSse6lWCOFfitVy5p+B5teMNx3aoZKlZNTaDdHRiyRF155kyhx1iPCtFHY6KwLcaekRWsqX6ecma6Werw5fYSOjqaZyubmih0VPO1EcmnsPS7Ph5KNVkq2RySo5HMcxy9SfeK8VUOELS253CGolhWVIsqdrVdmqKvGqJlqPM6vdDxNf6WWz1OHOg4a1qwvqGaecSO1aX2EC0YXZa6xah1dNUorFboS6018Zg2nnqHYnErEip24WHslbe6agw/Le5WSupoqfohWtRNPR0c9meWf2nnF23UkxVRpb8IyVluuCPSRZqqNiM3tM801K7XmqcXEZyHCDYbiyr6Y1D0bJp70vxV17Nuw0DYo2Lm1jUXvITRcNcq3kWwfUJbySNb5sRzI/hFcmVzky3lWp8Tl/dTvEwAuY42xtRjdDVc5XLdQACQxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOVXrpJk497d6jNqx6bWuTwoadZGNXJzmp4VK+4Oa6ZqtVF6niOW/1DCx0aTYs25W8ToOD8QdTXjw3vmU+ivIW9kRUhl+shFLC2/q3/AFvcUnAnXrm+35G9xTiKzUysw20+ZNKi9pm+LVxL7i3K+5/HZ4FOq44tqF6+HzQouFzcmqa+19fkUuS8ihGOXY1V8CEwnW1zW75pORM8tq+E4ehiSpqGxOWyLfP2XOql406NiuRnxLAHyj2v+K5F8Cn0fUEcipdDhAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlYuuK+LX3HXEHyiH6i+s5WLrivi19x1xB8oh+ovrOKl/qZn9n0Uz/YVAAO1MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWlDSy0tMlzpolqJX5s3rLUicv4GjXVnZIuZhvmbNLT89+C9irBtaWenq2Zx725zctNrf3V5DvvbPmN8hVpx1q/s+P+DZXh6otlceZ10Mj50VrHL1KbEI3Q030TvIeqb3H8xvkG9s+Y3yHPVLIKiZ0q3uven8G4xrmNRqKeWdDzfRO8hNoGOYx6Paqa+M2d+vdusFDJNVT08UqxPdBHK5G765qbE+1U8p5PYLtJjfdIgnnYlJvkLm6ES5omixeUmomRUsnPYiqqIvVP4MJWLImBy2ubAhXCJ8jo1Y1XZZ7DZ0NX0O51LWRMhZFlHBI/VvuWrmLbe2fMb5DfquKR1sCxKxUv39/gYNoXQPvc8q6Gn+id5B0NP9E7yHqu9x/Mb5D83tnzG+Qo+yU//wCvh/BseXun37Tze3xPjc/Tarc0TLMmm7c2JjVc5rUROPI8o3R8fU0kMlltXQtXTVUDXPqYpM1Y7TXVq7zU8p0FBXtpoUhYy6J3999jTmpsTleri8P0qsMqrsN0Kqqqu98fhLQ6djsbUduVbkstgADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlYuuC+LX3HXEHyiH6i+s5WLrgvi19x1xB8oh+ovrOLl/qZn9v0Uz/YVAAO0MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAayw9aY/C71mTNZYutMfhd6ym4z+nTx/k3KL0vsOFVRy2yXom35QwZrJVJnmrkTXqzz4s+Q+OFlv+bL5pZXTrVV+Jf6jzs4aaRYV8nqdXTQtqEVZNUNlwsoPmy+aOFlB82XzTGgg7XIbf4fD3+8wWN8R3G+32oiq6lZaakqZm0rFja3QYrtmpNepqbc9hO3Kez2j8XL7CmavXXuu/mH+0ppdyns+pPFy+wp0a+j9hy65Se09zraCGuY3fI9J8euNc1TJSsZenWtOh7s90lQvVIsbUy0eLkL4xeK+u6eKb7yondgTG3UtqVqTO5btC44WW75s3mpzjhZbvmzeanOYwGn2uTuLL8Ph7/edN0PHFXR26m6SVD6d8j3NlV0THaTctmtFPGjb48+RUvjF9RiC8o3K+FHKc/XRpHOrE0Q9cwv2NUPi/eWpVYX7GqHxfvLU7iH0bfBDn3+coABKYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlYuuC+LX3HXEHyiH6i+s5WLrgvi19x1xB8oh+ovrOLl/qZn9v0Uz/YVAAO0MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAayxdaY/C71mTNZYetMfhd6ym4z+nTx/k3KL0vsJF061VfiX+o87Nzf7pb6C3TxVlfTUz5oX722aZrFfq4kVdZ5501tvdCm9M3nOFqmOVUsh1/Dnta111JQIvTW290Kb0zecdNbb3QpvTN5zT5cnqr7iz5sfrJ7zzW9de67+Yf7Sml3Kez6k8XL7CmevkUjLpUTujckU8z3RPVOpeme1F401oaDcp7PqTxcvsKdQvo/YcY70ntPfjGYs67p4pvvNk97Y2Oe9yNa1M3OVckRDz/E17tFTdEfBdaKVm9omkyoYqcffKipaqx5IW1AqJNmvQhAi9Nbd3QpfTN5x01t3dCl9M3nK7lSeqvuLzmR+snvM/jz5DS+MX1GINvi5UudLAygc2rcxyuekC6eimW1cthiDoaFLQIinMcRzqFVNMvkeuYX7GqHxfvLUqsL9jVD4v3lqdzD6Nvghzb/ADlAAJTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsrF1wXxa+464g+UQ/UX1nKxdcF8WvuOuIPlEP1F9Zxcv9TM/t+imf7CoAB2hgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaHgwztpfM/wBxwZZ20vmf7lb+K0nrfBTZ7JNsZ4Gg4Ms7ad5n+44MM7ad5n+55+KUnrfBT3skuxny3kxDRYZwvFX16SuiWbe8omo5c1zXjVOQi3+nt9ht1RUVF0gZOyB8kMEr2sWZWpnotzXNdeSauUw9vw8/HTUudbcJbbSS56LVRXRo5vU6lVUTPaV/Eq2nmhREd12XvNmlp5WvXLoZLEmJrjiWt3yuqVmjhc/eEWNrVa1V2dSiZ7E2lNmeuJuI0rkzbfpF8FOn5j9+A+m7uy/d0/MVaSsQn5blPIgeufAhTd3Zfu6fmHwIU3d2X7un5j3nMHLcYGguFPcYOg7qjp5GNSKiyTRSNVTLXllyN257C+3PLbPat0ikpqhWq9IpF6lc01sUv37i1JAx0smIXxsjTSc90CIjUTjVdLUUMlFE27phm1XBLgr274lxp1Rz9mat6lV5MtpruVG3VmnXu7/8dTZb5dmv16Lv3L/PQud0HdIkSV1rsdRNTyQSywVmnCxUfl1OrPP+9yHlJ6rTbkNLXN03Yies6ojpmLCiuY5dqL1W3PPad/gQp+70n3ZPzEjJI0TJSB7H3zQ8jB658CEHd6T7sn5h8CEHd6T7sn5iTnM3MOW48uoLlVW6RzqaXQ3xNF/UouafahZ3K2UtXRvuloi3qihTQekjl0ldn31XiVDffAhT93pPuyfmK+8YKtuCqd9W7EUdRUQtSRlvk0WOmRV0dmkq8vEuwic5qriZr8/v4E7L4cD9Pl99dywwv2NUPi/eWpBstSlZZ6aoSJsSPZnoN2ITjtYPRNvshQyWxrbcAAmMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysXXBfFr7jriD5RD9RfWcrF1wXxa+464g+UQ/UX1nFy/1Oz+36KZ/sKgAHaGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsqC4Q17HrCqrva6Ls0y1kwyeKVWnqoEhVYkVqqqM1Z6yj6JqPp5POU+XOqcC4VS52zKHmtR7VsinpBV37EFBhq3JX3FXpCsiR9Q3SXNc+L7DF9E1H08nnKZzHM0r7C1r5HOTf26lVV4lM4ahJJEZbUxmoVijV+LQy+KMUXDE1Yj62dJY4HPSDKNGqjVXjy8CHrO5rRQV+53Rw1DVcxJZFyRctemp4Ue+7lHYDR+Ml9tS0namCxTwuVH3QuaWtnt86U1yf+ucjadGpnkmeWv8AAuSHdWtW2VL1RNJkLlavGmowXRM/00nnKVT5eTkuZbw0/abuTI9JB5t0TP8ATSeco6Jn+mk85TDtibE/4avrfAgbou6K5sjrTZKhzVYs9NXI+FMl2NTRVf6thmdyrs+o/Fy+wpnL4qrfa9VXNVqH6/6lNFuVdn1H4uX2FLuyJHkUDlXme09nqqGahmWptqNZvjldUq5c8026s/CpPoq+C4Qb9BpaOlkuaZEkxuJnOp7roQuWNu9pqYuScZUPXkpiTQtImdoXAuu5sQeb9FVH08nnKOiqj6eTzlIu2J6ptfhrvWNdibFFBhejjmrnSN35VbFoM0uqRMz+fr7iC44krmVlzlbLMyNI2uaxG9SiqvF31U0+P5ZJKGkSSRz8pF+MufEYUt6RyPjx7lNVxrFIsd9D1zDHY3Q+K95alVhjsbofFe8tTtofRN8EKF/nKAATGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZWLrgvi19x1xB8oh+ovrOVi64L4tfcdcQfKIfqL6zi5f6nZ/b9FM/2FQADtDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAssYfKqf6i+szposYfKqf6i+szp8iqPSKfSKP0DT9M9jfrCnjm+pTQmext1hTxzfUplSenb4is/Tv8Dz4993KOwKj8ZL7angR77uUdgVH4yX21Ojn805KLzjT3TrVV+Jf6jzw9DunWqr8S/1HnhQ1mqHRcM81wABpFoeWXvr7XfzD/aU0W5V2fUfi5fYUzt76+138w/2lNFuVdn1H4uX2FOtX0fsOJd6T2nv5i8V9d08W33m0MZivrunim+8par0Zb0HpikABWF+ZXHnyGl8YvqMQbfHnyGl8YvqMQdJQfp09pynEv1LvZ8j1zDHY3Q+K95alVhjsbofFe8tTuYfRN8EObf5ygAExiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWVi64L4tfcdcQfKIfqL6zlYuuC+LX3HXEHyiH6i+s4uX+p2f2/RTP9hUAA7QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPNbjug4guE+nNVtcjc0Z+hamrPwEThjeu2W+ibzETg9e+49f92fzDg9e+49f92fzHDrDEuatQvUqJmpZHKS+GN67Zb6NvMdIcQdMXLBfpHS0uWkjWMRF0uLZkV/B699x6/wC7P5hwevfcev8Auz+Y85EXRLGXaZurlXuXQ/Lra5ra+N0jURk+boslz6n/AMU9u3KOwGk8ZL7anldtp7pHFLTXKz1jo5k0EqaiJ2VMmSortabE27U2FjUXa6UmGIsL2amq5t4m35K+je7q0XNVbotT+987iMFVV8h2plhan5jNNti5xzunSOmbR4fqXMYiSR1SSQprXZqVftMRwxvPbKejbzEV1gvj3K51pr1VVzVVp36/wPng9eu5Fd92fzEnJiXVLkbZ5W+aqoTOGF67Zb6NvMOGF67Zb6NvMROD167j1/3Z/MOD167j133Z/MeciH1U9xl2mf1195PqaKG9U61luaqzxMWSuV65ZuVM9SeFHbCx3Kuz6j8XL7ClPR2u/wBHMjm2m4KxXIr2JA9EeicS6jSWyrdZLyzEaW1Y6mJFZ0q/VvVFTR0s8s+PP4vEYKqsTCui6GWFJfKTJU17+9PvNT1TFmK6HC9C11W6RslQ16QaDNLqkTj8qHiNZjzEFfPv1TVMe/LRzSFqe4/L2zEd+uE9ZLbrm6KaZ80UTmSSNiRy55NXLZxauQruD967j133Z/MZthZazsyPmvR12qqEvhfee2GeibzDhfee2GeibzETg9e+5Fd92fzDg9e+5Fd92fzDs8PqoZdpqPXX3lhBeorrpRX1zpGtT9CjG6OTl5ciquVrqbTUNhqUaj3N0k0Vz1ZqnuOnB699x6/7s/mLqlprjLRSUNztdTFvrtdwqYnfoU1ZJ1SbM05U2nluVm3Tb+DJHc7yX+d0X6L9NjZYY7G6DxXvLQhWWnZS2elgjmSZjGZJI3Y4mnaQLeJqpshQyIqPVF3P0AExgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWVi64f0L7jriD5RD9RfWcrF1w/oX3HXEHyiH6i+s4uX+p2f2/RTP9hUAA7QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6i6SIqcZ+mcmrZMNv3qRXVu/9Wiudo6CcnGfHDH/2H+d/2nzPnsTJ2SnXpSSuzYl0NMDM8Mf/AGH+d/2mV3RMV1M+G2spWy0cnRDV3yKdUXLJdWpEMo5o5HI1FMJKWaNquc3JCFj7dL6IbJa7JJnDJHLBWJLDr19TqXzi43OKCZME0tdQInRbpJGqr11aOmv+x4s5yucrnKqqq5qqrtPe9ynsCpPGS+2pvTxpy7GlDIqPuae33CKua9rM9OLJr9WWsmaipuVBvaJXQSbylMiyPjY3LfcteSqng5OMruGX/sP87/tNDmozJ5vpAsucSf4NNknINXIZrhknc/8Azv8AtHDJO5/+d/2nnaY9z3sU/q/I+8X4uosK0Sb+57ampjk6G0WaSabUTLP7XIeXYSuNTjDdHpqi6q10j4XtVY26OprFyM5im41VwxDXunnlextVKscb5FckaK5dSZ7OLyFzuU9n9H4uX2FLLltSNfArcbkenceyw1c1ql3itySnc7e6XQTNck5fsyLo4VFPHURq17WqqIui5Uz0V5UKB90fh53QUiOrHL1e+Ofo7eLLXyFcq8vXQsEZz/N840wMxwx/9h/nf9o4Y/8AsP8AO/7THtEW5l2Go9U0j3pGxz12NRVU8Vx7ukOvTXW6zyZ22eBqTJJFk5Xo5V1LyZI0sd0vFNXU26jbSOmolSV2ksU6ppJlsXLI8rLCmRr240NCdHxuwO1PXcMdjVD4otCqwx2NUPii1O4h9G3wQoX+coABKYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlYuuH9C+464g+UQ/UX1nKxdcP6F9x1xB8oh+ovrOLl/qdn9v0Uz/YVAAO0MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyxf8qp/qKZ00WL/lVP8AUUzp8in9Kp9Ho/QNBnsbdYU8c31KaEz2NusKeOb6lM6T07RW/pn+B5+e+7lHYDSeMl9tTwI993KOwGk8ZL7anQz+acnF5xp7r1orPEv9R54eh3XrRWeJf6jzwoqvVDouGea4AA0i0PLL118rv5h/tKaPcp7P6LxcvsKZy9dfK7+Yf7Smj3Kez+i8XL7CnWL6P2HEr6T2nvxjMVdd08WnvNmYzFXXdPFp7ynqvRlxw/0/sKQAFWXxlcefIaXxi+oxBt8efIaXxi+oxB0lB+nacpxL9S72fI9cwx2NUPiy1KrDHY1Q+LLU7qH0bfBDm3+coABKYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlYuuH9C+464g+UQ/UX1nKxdcP6F9x1xB8oh+ovrOLl/qdn9v0Uz/YVAAO0MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACuxLj3D1bVR7xVvdvSK12cLk15+ApeGFl7Zf6J3MecqquVVVVVV2qoPnz6CJ63W51EfEpo2IxETI9G4YWXtl/oncxBu9fT4moegLW9ZZ0ekmi5NHUmeetfCYc6wVM9LJvlPM+J+WWkx2ShtBHGuJirdD13EpJEwSIll2PhzVjerHanNXJT3vco7AqTxkvtqeSyxU+IKR08LYqJ9HGuk3JFWdcvs16u/tN5hnFUGENzOjnlhSom6IexaffUY9M3OXPYvJ+JK92Ntuprcvlre903Ndi7FNpsFG6luM7o5KqF6RI2NXZ6suLZtQ844X2Xtl/onGIu94rrxVumrKuonRHOWNs0rn72irnkmewgGD6KOS2K5LDXSQ3Rlj0bhhZe2H+idzDhhZe2H+idzHnOYzIvw2HvJvxafZC1v1HNFWurXtyhrZHywrn8Zqrns4tSoXm5T2fUfi5fYUqLVdWuY+irY+iUlRI4XyrmkG1M0z2cXJsNHgOgbZt0Ol3ypY+Bscmc/wAVmti6szaV1kVjtTUcxF/MZp17j2+aZlPC+aRcmRtVzl7yJmeWX/HmHq+4JNT1b3M0ETNYXJr8hU7oW6DUXKsdbbbJUUbaOaWKSSCpXRqG56P7uWrVnx7Tzwi7K2RtnmUdU6F+Jh6NwvsvbL/RO5hwvsvbL/RO5jzkEf4ZDuptfi1Rsn37TZ3uojxPTsitKrM6BVfIjk0ck+0xh3pauekeroZpI9LU7QcqZpyF3X09PeqJ9zpI4qRYU3voViJnIue3Vly8nETxt5CIz9prSOWqVX/u6/48Dd4Y7GqHxRaFXhlFbhyia5FRUj1oqFodvD6Nvghzz/OUAAlMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysXXD+hfcdcQfKIfqL6zlYuuH9C+464g+UQ/UX1nFy/1Oz+36KZ/sKgAHaGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3+CPCn0NV6dR8EeFPoar06mmt90bUxv35iwKxdH9I743f1kzoqm+nj85D52kyql0U6R0OFbKhjfgjwp9DVenUfBHhT6Gq9Opsuiqb6ePzkKTFeLabDFoS4b0lXnKke9slRq60Vc9i8h6kj1WyKYrGiJdUMTijDOCsHQb7pVUdwdE+SiRXOe1ZGp1OerZmqEHDuGrdiK2x3/ELZN7mVzNOJ+j1TVyTUneQwd3vFbeKt01ZV1E6I5yxtmlc/e0VdiZ7OLyHte5fBFUbntGyaJkjd8lXRe3NPjqSyscjbouZjDImLCqeTt99Tmzcmwm9iObHV5Kmafp15j6+CPCv0VV6deYuo3z2aqSGZ0tUypkTRdmuUKZ5d/Vr/AALjomD6aPziBs7l62JnwI1cs0Mb8EeFfoqr068w+CPCv0VV6deY2XRMH00fnIOiYPpo/OQy5rtyPl9xiKncrwhSUstTMyrbHCxXvXflXJETNeIw8ENsveIWYbw+sktplYr0STNr9JEVy6176HbdFx5VXK4OtlA+pomUUs8E6xVCo2oTNG60TLV1K6lz2lfuU9n1H4uX2FNhWKrFVxg2TC/yf+e43Vu3M8I1aOgVlV0TCiJMm+rkjti8XKik34I8K/RVXpl5jR3G2ucrZ6R/QzmuV8u9pksvHkuX2+U7UF0jrIFklZ0M5Fy0JHazUSV6LhcpsOiYqY2Jl8jLfBHhX6Kq9Oo+CPCv0VV6dTZdFU/08fnIOiqf6ePzkJOY7cj5abGN+CLCv0VV6dTL4tsuEMFoqUT6ll5SJstM16ue3JXK3Xqy2I422NMaQYWoIZWwdFrUudGm9yo1WatuxTwGtuFbcpkmr6yeqla3RR88ivcibcs14ta+UnjRXpdy5ETnYFyTM9ZsVTJWWSlqZlRZJGZrkmSFgVWGOxqh8WWp2sCWiaibIUkiqr1VdwACYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKxdcP6F9x1xB8oh+ovrOVi64f0L7jriD5RD9RfWcXL/U7P7fopn+wqAAdoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlHLh/e275JLp5dVki7fIdqijtzrS6so9NU0kRFcvfMy747vCpoqTsSd4z3nCUfEqqStSNzsr/U6us4fBDS8xqZ2+hVgA7s5QuLBoolU9zEfoMRclTwkfhS3ubD5f9jvYv1Nd4rnMwcFx6aSKrVGLb/hDrODQRSwqr0v9qaDhS3ubD5f9iXbL6yvr46ZaCJmnnrRc9iKvJ3jKFnhzr9Tf1eypSsqplciK4tZaKBsblRvRTtcURLhOiIiJvi7PCRiVcuuNR4xSKfUIfRN8EOAf5yg0N4usdrqGRJRxyaTc811cfgM8WGL+uEPi/epzv8AqKR0bGK1ba/QuuDRsklVr0un/J+8KW9zYvL/ALDhS3ubF5f9jPA47tc/rKdV2Gn9Q1dylZVWCmqkhbG6SRNTf6ikLafsSovGfmKk+h8FVXUbVU4fiLUbUORAXFneyC31s7omyb0iORHfaU5aUHWS5/U5yTiyq2jeqfeZhQoi1DUU+OFDe5sPl/2I1Vc0uStVKZkOh81duf8A+CoJFL+99hyHBKiV9cxrnXTP5KdTxWlhjpHOa3PL5odwAfQjiwADwAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALHGPyun+ovrM6aLGPyun+ovrM6fIqj0in0ej9A0Gfxt1gTxzfUpoDP426wp49vqUzpPTtPa39O/wPPz37co7AaPxkvtqeAnv25R2A0fjJfbU6GfzTkotTTXXrVV+Jd6jzw9DuvWqr8S71HnhRVmqHRcM81wABpFoeWXrr5XfzD/AGlNHuU9n1H4uX2FM5euvld/MP8AaU0e5T2fUfi5fYU61fR+w4h3pF8T34xeK+vCeKb7zaGLxX14TxTfeUtV6MueH+m9hSgArC+Mtjz5DS+MX1GHNxjz5DS+MX1GHOkoP06HKcS/Uu9nyPXMMdjVD4v3lqVWGOxqh8X7y1O6h9G3wQ5t/nKAASmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZWLrh/QvuOuIPlEP1F9ZysXXD+hfcdcQfKIfqL6zi5f6nZ/b9FM/2FQADtDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgu+O7wqaKk7EneM9551VYfvD6uZ7L7OxjnuVGortSZ7PjGwwxclstiS3V6OuLkkc5ZJHbc+LJcz5rC+GmqubjvZdPadvOk9TT8tI7Za3TY/QT5cS26KJ8nSWJ2i1Vy6nX+BDsuNrXeKJalthjiRHq3RVWr/pOnT/UMCtV2FbIc/wDg9Qjkb1UtLGqNp69yrk1ItarsTUpjemtt7oUvpm85pK6/JLCsNFTMpmStc2VEanVoqeDw+UxXBCy9rv8ASu5zmeIVdPVzrIt0/wCC/oaaqpY8KIntLLprbe6FN6ZvOW2F7hRT4ipY4ayCR66eTWyoqr1C8R55abFQVV+uNJNG50VOuUaI5Uy1mntNkobJc4bjQxKyoh0tByuVyJmitXUveVTVfHTwuS6rfXobDZKmdi2allumq+BsLhRVTrhO5tNM5qvVUVI1yXWRugaztSf0anzwnun0zfRt5ikrsc3+HFVFQsq2JBNHm9u9N1r1XHl3kOig/wBQOVMLWaJ8iim4M5nlOdqtveXvQNZ2pP6NT6xrWUtPc4Gz1MMLlhzRJJEaqpmvKfHCa6/Tt9GhQ36ihxLVR1N0asskbNBqtXRyTNV4vCVtfxVlcjWyJa2xY0fDZqR2JqovifPTS3d0KX0zecdNLd3QpfTN5zJYpsVBaqCKWkjcxzpNFc3qurIu+CFl7Xf6V3OVroqZrEequz8OhvNmqnPcxGtuluq9T0KPOtwjROpf06K/NFi6pFTquQgdAVnak3o15iHarnVWe2w2+iejKeFFRjVajskVc9q+E/briy8U1sqZ4qhqPjjVzV3tq5Ll4C7ouNpTsSFjb+JUVXCJJXLK5bEzoCs7Um9GpOgY+ksNzfUsdA3e885E0URMl5TO4fxle6+y09TUVDHSv0tJUiamxypyd4lV95rrlQT0NVKj4J2Kx6I1EzRdusyrOOc5joHtt4dynlLwiRqtmaveU/Ta3dv03pm85Ot1VTVSSLT1EU2jlpb29HZeQoOB9l7Xf6VxywCxI33Rjfitlaif4iLgcUK1aOYq5b+Ck3F5p0p8EiJZdu5UNgADvTkQAAAADwAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALHGPyun+ovrM6eZVOJL1VTK+S7Vr9a6KPqHOyTk1qcund17o1XpXHzaThyvcrsR2MHFGxxoxW6HqRn8bdYU8c31KY3p3de6NV6VxJoL/NFUaVx3y4Q5fqpn6Tc+XJcxHQOiej73sZScSZMxY7Wv1Kg9+3KOwGj8ZL7ani12tPQu9zQyNmZMivVI2/q05F8p7LuX1ENNufUb55WRN32VNJ7kRPjrym9K5HsuhVIx0b7ONXdetVX4l/qPOzM443Q6y8VrIbbLVW+On3yORIalUbNmuWa5Zcnf2mS6dXXujVelcaktC6Wy3sb1NXtgRUVLnqYPLOnV17o1XpXDp1de6NV6VxD+Fu9Y2/xhnqqfl66+V38w/1qaTco7PqPxcvsKQHMgxDRaTUjpJ6KPORy5K6pcqbeJc829/4xZblkb4t0GkbIxzF3uXU5Mv3FLNHXYreqFNIyz0cminvZi8V9d08U33nTHOOKfDVGyKFiVM1Qkkf6KdGuhciZZrlmvH+B4jLiC8zO05rtWyO2aT6hzl/FTTdTLMy17G1BVNp5MSpc9QB5Z06undGq9M4dOrp3RqvTOIfwt3rG/8AjDPU+JqsefIaXxi+ow5dW6+uSR6XJrq9rkyYkz9LQXlTPMj3azutkyNZMlSxWaSyRp1Ka8sjep28lEiX/krKp3Pcszfb3HpWGOxqh8X7y1KrDHY1Q+L95ancQ+jb4Ic6/wA5QACUxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKxdcP6F9x1xB8oh+ovrOVi64f0L7jriD5RD9RfWcXL/AFOz+36KZ/sKgAHaGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABm58UWaKokikrNF7Hq1U3p65Ki+A58LLH29/lP5iwltlvdM9zqCmVXKqqqxNzzz8BmnUdImOo6foWHeVj/V6CaPxV4j5crKaSR+uV16HfLJVRsZm3OyaL/JY1GKrK+mlY2szVzFRP0T9uXgKvC99tlutSwVdTvcm+udloOXVknIhpXWq3cVBTehbzBLXbe51L6FvMRpLTJGrLLZfAzWGpWRH4m3TuUp67GlFDvaUMa1iuVUdkrmaPJtbrz1+Q+ExZXdwJ/PX8pxxVSU1NPbeh6eKHSlXS3tiNz2chrDN/IZG1yMve+q/wYRpUySPaslrW0TfxMLQXKvorrWV3Sed/RS56GtNHXnty1ljLi+sgjWSWxTMYm1zpFRE/wAJqSnxZ2M1f9HttPEnimkRHR62TVQ6nmgicrZNLroniV7MXVkjUcywzOaqZoqSKqL/AIStqbnX1F8prp0nnb0O3R3vWult49Hv8hrLJ1ko/Et9RNPOfFE9zWx7pqpl2aaVjVdJsuiGa4WV/wDD8/nr+U5w4zqahFdBZZJETUqtlVf9JqTNYF61z+N9yHrXQLG5/L0t1XqYvbUNlazma36J0Ky+3OvvVLHB0nnh0H6Wet2er6qFlwrr/wCH5/SL+U04MFqolajVjyTvUlSklRyuSXNe5DLNxnUumdC2ySOkbrViSrmn2aJzrsRXCtoZqbpDOzfWK3S0lXLP+k72zs6ufifyGmJJHwwubaPoi6qQxMnma68nVU0QxtqvVfa7bFRJZJ5d7z6vNW55qq7NHvkh+MqmJ7Y5LJK17/itWVUVfB1JqjN3/sjsnjPeh7HJDPJnHrddV8RLFPTxJhkySyaJ4Hzwrr/4fn89fyknAkc7OmMk0D4Vkka5Eeip84vSRS/vfYWXA6hi1jWNZa9+vcppcXpn9mV733t3J1VCQADvzjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzr4L8Zdx/8Aiofzj4L8Zdx/+Kh/Of0BHI2VukxzV5clzyPo4HnuL5YkQ/n34L8Zdx/+Kh/OPgvxl3H/AOKh/Of0EfE08NOzTnlZEzPLSe5Gpn9o57jzloeHUWD8XWSjqlrLW2G3vZnVy79E5WRIi6SoiOVdmfEoWlvl+sceHsP0jKu0xSLNE9zmskV2vS1uVNWarxH7jjdDq75P0JQLPRQRpJDM1s2bZ0XVryRNWSL5TabnVu6JwBSSU0iU9SskmcyN1qmmuoPxNTmIme331JY3Nf8Alu06Lt/g87+DHGPcj/iYfzj4MMYr/wDtH/Ew/nPc7dcuiEdFNGsT4lRiK9fj99CxPG1KuS6GL6fA6yn89/BfjLuP/wATD+c/fgvxl3H/AOJh/Of0GD3nu2MeU0/n+Hc1xrBMyVln6pjkcmdTDtT+ssUfdLJfG1MsDGYmY3qKZyo6PQVMs80XLPRz/eN3jzHUGG6RtNTs6Inq2TR6cM6IsDkRERVTXrzd3th51ue1M173QqSW6SvrXujkRXTrpKuTFy2nqo56Y9vv3GTHoxcGqLr97nKpwDjS8Vc1zfaWq6se6dVbURImb10tSaeracvgvxl3H/4mH857S509ln6pX1EFQ/RYxNSQoi/bq1p5C3a9j0zY5HJyopG2pcvQzfTI3O90P5/+C/GXcf8A4mH84+C/GXcf/iYfzH9BZAz7Q4i5SH8+/BfjLuP/AMTD+YmxYVxJZLRNFerclNaNLTqZkmjc5uxEy0XKu1E4lPbqusgoYFlnlZGmS5I9yN0lTi1ng2M8f1mJ6jRplnoqJ0LY5KVJtJj3I5V0l2cqeQyu6XJT1F5S3Q2tlSmbZ6ZtG9X06M/RudnmqE0q8L9jVD4r3qWh20CWianchRyLd6r3n6ACYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKxdcP6F9x1xB8oh+ovrOVi64f0L7jriD5RD9RfWcXL/U7P7fopn+wqAAdoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPqarFjauZIaGF0Wm7QXSbrTPV+8Va0mKFu7bn0AzfkboommzLZl842MlXTJI5FqIk6pdr0Pjoul7Zh89D5e+oc2R1o069Dvm0rXMbikXK3VDOvrcXMY577fAjWpmq6TdnnFRw2ufzIPNXnNpV1dMtHOnREWaxu2PTkPKTZpGsmRcbES3caNc6SnVqMkVb95ZXW+1d33nf8AQbvKqrdBFTblzEfppX9uz+kUigsmsa1LImRUule52JVzL+wwV97mlj6azwb01HZ5q7PX4ULmTB9XNGrJb7K9i7WujVUX/EUmFbtS2mpnkqlcjZGIiaKZ8ZpuGdn+fL6NStqXVLZfyky8ELikbSOiRZlz8VIrMIVkbEYy/TNampESNck/xFbVWyvpr5TWzpxO7ohmlvmtNHbxaXe5S84Z2f58vo1KWtv1DPieiuDHP3iGPReujr/e4vtQxhdVKq406L0TUynbRtRuB3VOq6depY8FK/8AiCfzF/MfEWDamBqthvUkaLrVGxKmf+ImcM7P8+b0Y4Z2b583oyHHXbfBCfl8P9ZPev8AJR32219lpY5um88+m/Ry1ty/xKUXTOv7cn9IpfYov1DdaKKGlc9XNfpLpMy1ZGXLSmRyxosiZlNVqxsqpEvk+J2bWVLZnTNqJEkdqV6OXNftOnTOv7cn9IpFBsK1DVxO3NfabHX3S2RVnTueLfM+o0Vdlkqpt0u8SH4NqpXtkkvcr3s+K5YlVW+DqjnYcTW232aCkqHyJJHpZ5MzTW5V95YcM7P8+X0ZTSOq0euFMr7IX0TKJ0bcbs7JfNf5I/BSv/iCf0a/mJOBJJ39MWTzyTLHI1qK9yr84/OGdn+kl9GfOAHpKt0e34rpWqn+It+CLOtT+anw7lK3iqU6RJyVvvnc2AAO1ObAAAAAPAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtrhM/DcqRUOStn6t2+JnrInCu48kPmf7nfF/yun+opnj5NK9zHq1q2Q+h08MckSOel1UuuFdx5IfM/wBzKbot7q7hhpsM+96KVDHdS3LiUsTPY36wp45vqUzpZXrM1FUwq6eJsDlRudjz5D37co7AqTxkvtqeAoe/blPYFSeMl9tS+n805mLzi/vFFHJD0cue+0jXSR8iqmvX5DPcK7lyQ+Z/uam7daavxL/UeelHUucxyYVtc6ChYyRq40vYueFdy/8Ak+Z/uOFdy/8Ak+Z/uUgNTnSbm/2aD1UPL8QyunxHcpn5aUlVK5cuVXKpodyns+o/Fy+wpm7118rv5h/tKaPcp7PqPxcvsKdSvo/Ycgqfme098e1HscxdjkVDLVtdLh2o6BotFY1aj85EzXNf/wAGqUxmK+vCeKb7ynqVVrcSalxRIj5MDtD94V3Hkh8z/ccK7jyQ+Z/uUgK/nyesW/ZofVQpN0y8VVzt1Eyo0ERkrlTRTLiPOTcY7+Q0vjF9RhzoKJyugRVOa4gxrKhUalky+R65hjsaofFe8tSqwx2NUPiveWp3MPo2+CHOv85QACUxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALKxdcP6F9x1xB8oh+ovrOVi64f0L7jriD5RD9RfWcXL/U7P7fopn+wqAAdoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGTqcHWueqlme6fSkerlyenGvgKF2H6JuK2WzOXeHR6Xxuq+LntLmpxjFBVSxLQTLvb3Nzz25KUbr812JWXXoOXQazR0OPZkfOkSqxvxLvbTXodi9aNWMwomqXyXTqXnAi0ctR6ROYy2JLZBarklPTK9WaCO6pc1NHw2h7nz+UzN/urLxXpUxxOjRGI3JVzFIlVzPzdDCtdRrF+Ta/tKsAFmU5p8D08M9ZVJPCyREjTJHtRctZd4poqWHD1S+KmhY5NDJzWIip1SGXw266pUTdKmsdJopp6WWzPvlzXU+K7hRyUs8MKxyZaWTmIupc+XvFVOxe0o7GiIlsrl3TvTsiswKqqi52Lmz0FG+z0jnUkDnLE1VVY0VVJnS6h7Sp/RN5jO00eLaWmjgjhh0I2o1uas2eU4y3bE0FwioJGQpUSpmxuTdaa+P7DVdDI96q2RN9TcbURxsaj416JoajpdQ9pU/om8xncFUtNPbZnTU8UipLkivYi8R008YfQweVnOQ7bb8UWmF0NLBEjXO0l0nNXX5TJjFSNzVkS626mL5EWVj0iWyXv5O5rOl1B2lT+iQ8lNhcLvia1wtlq2Qsa5ckVEauv7DHm7QxPYiq51799yu4jMyRWo1tlS/S2wABYFWeh4XoqWbDtK+Wmhe5dPNzo0VV6tSHfaSmjxBaGR08TGPkXSa1iIjtabUIllfiRLTD0BFE6m6rQV2jn8Zc9vfzPqqoMUVlXT1UtPGslMuceTm8/eKZGq2dzlels+p0CyI6ma1I1vl02sarpdQ9pU/om8xNt9PBAkiQwxx5qmeg1EzMpvmMfoIfK3nLLB11rLkla2s0dKF7Wpoply5+o3uCwyJWtdjRUS/W/RSDitRGtM5uBUVbapbqaUAHenIAAAAAHgAAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWWL/ldP9RTPFTft02iuNU3Qt8zN6zauk9NesquHdL2nL5yHyyakndIqo072mradkSNc7M1ZnsbdYU8c31KRuHdL2pL5yHKpukWLYelsKdDORd805F1auL8T2CmlikR70siHs9VDNE6NjrquhjD37cp7AqPxkvtqeCzQuhldG791VTPLae9blPYFR+Ml9tS5n8w5yPzjT3XrTV+Jd6jzwvcc43o8OQspH0z6l1bFIiOjemTMsk1+U844d0vakvnIVVRTyyWViXLqiqYYkcj3WNUDK8OqTtWTzv9hw6pO1ZPO/2NXsdR6pYdvpvXMreuvld/MP8AaU0e5T2e0fi5fYUp79QPbKy4te17a9XTaDdsaLkuS+Uudyns+o/Fy+wp0KOR0d0OXe1Wy2U98UxmK+vCeKb7zWVlXHRUss8jmokbHORFXLSyTPJDx68bpdFc61KhlvmjTQRui56LylZNE+RnkJcsKOVkUuJ62QuwZbh3S9qS+cg4d0vakvnIaPYqj1S47fS+uMefIaXxi+ow5sKyrjxdFvMCpTLTZyKsi56XeMg5qtXJyKnhLqjRWRYHaoc/XrjmWRvmroet4Y7GqHxXvLUqsL9jVD4r3lqdzD6Nvghzj/OUAAlMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysXXD+hfcdcQfKIfqL6zlYuuH9C+464g+UQ/UX1nFy/1Oz+36KZ/sKgAHaGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAf8dfCfJnqyx319XNJHensY56q1qKupM9hULFfEvbbV03lSRzdLT0ly2Zny19K173WkTqvU+gNq3sY3FGudk6Gzq/kc/i3eo8kNy7D9+citdfXKipkqZuMrd7VJaKxKaSRsiq1HZtQ3aBI2XajrqpW8SWSRGvVioiEAAFmU5p8EVENPWVSzSsiRY0yV7kTPWbHpjQ9u0/pW85hMLWmlu1TPHVI5UjYipouy4y2v8Ahm22+yz1VOyRJGaOWb801uRPeU1VHC+owuVbrY6CjlnjpsTWoqJfrmaXpjQ9uU/pW85nblV0z8a2+Vs8axsiyV6PTJPjcZ923CdrqrZTTytk05I0c7J/GpJ4GWf5kvpFIGdmhc7NeqaGw/tU7WrhToupb9MKHt2D0recdMKHt2D0jecqOBlo+ZL6QpsMWChu1DLNVNermyaKaLstWRg2Gnc1XYlsnduZunqWvRitS69+xMxrVU01thbDURyKkuaox6LxLyGKPQ+Bln+ZL6RTzwtaJ8aswRrp9Sm4jHKkiSSIiX27gADeK09CwvW0sOHqWOWphY9NPNrpERU6tS26Y0PblP6VvOZqw4Zttxs0FVUMk3yTS0sn5Jqcqe4jXawUFHebbSwtekdS7KRFdnxoULoYJJnJiW916HTMmqIoGrhS1k6mu6Y0PblP6VvOVOA1R0l2VFzRZm5f4j94GWf5kvpC4sVnpLS2dtKjkSRUVdJ2ezMs+BOhZVo1iqt7/JTQ4uyofBjeiIibLvYtgAd6ckAAAAAeAAA9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4cD+k+BmGO4NB6BD94GYY7g0HoEOG57S75S7n81g/pPgXhjuDQegQcC8MdwaD0KHnPae8pTw9lXTYhgSGufvVVCze6RkSKiSOVNSLnmm1E5DWW/Gq4LwNT2yBYHXmKdVkppo3OajHK5c9JuSZ604+MtMdzYVwxTJT01ipei6qGTeKiBrUWB6Jk13Lmiqi/YQ8HWmhqcOQ3270cVxWVz41SVmk7NHZIuvkRCJyoxt7eT9/A2UTnLb9/z/z8LHllRO6pqJZ3oiOler3ImzNVzOZ/SMWEMLSsa5thoNaIuW8t1H3wLwx3BoPQIS89prLCqH81g/pTgVhnuDQegQcCsM9waD0CHvPaOUp/P1mu77bv0GTN5q9FkzlRVVrdaKqfYqmowktusOKoL4k70s0THtdUvRVVHK1U+KiaW1U4j0+4YawlbqGeqmsVvyhidJo701Fdopnkh5la56PFuNobfbqNKG2yxqvQi5aCOa1VzyTVtRCJy3u5iePf/kmYqWRj18O7/G5W45xpUYprVgVtOtHSTydCyRsc1z2KuSK7SXkROJDKH9A2zDmGJlfSy2Cj3ymyY6R8Lf0ipqVU8hZcC8MdwaD0CGTKhityQwfA5rrKfzYD+k+BmGO4NB6BBwMwx3BoPQIZdobsYcpdz+bWuVrkcm1FzNHLUQYnh05XZXX9XT08SKjHNTXmqrq43cabD2/gXhjuDQegQwW6BW4bw+j7ZbbJTxV0sDZYaynRqb1m5Uy1a88mr5TxXI/zdTNn5aKjs0XX732Jdgp5aSxUkE7dCRkeTm5ouS/YWBW4cmkqMP0csz1e90etyrrXWWR2tPflNvsnyKOS2NbbgAExgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWVi64f0L7jriD5RD9RfWcrF1w/oX3HXEHyiH6i+s4uX+p2f2/RTP9hUAA7QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2pamnpZt8qYd9ZllokE8yQROkdohJFGsr0Y3VTiC4prraqmpjgbbWosjkaiqiaiJd42RXOZkbUa1MskTwIaNFxSKserWJobNVQyUyIryEAC1NIAvaue322kpHTUDZFmZnmiJxInOROnlp7l+o56T/UFPG5WuRboW0fCKiRqObopiajFNminkjfWZOY5Wqm9v25+Azrr1b1xjHcEqP7M2PJX6DtuiqbMsz0l7MIyPc9+GqVXOXNVWNutfIfddYcN1OHZK2msdJA7SRqKkSZprOURaa73NVc0Uv39rXA16IllS33cyPCux9vf5T+YyGKK+muN0Sakk3yNI0bnoqmv7TaVVmtjaSZW0ECKkblRdBNWoqMI22iq7OslRSxSP31U0nNzXLUeU7oIkWZqLll06klTHUTKkDlTPPr0MhS26trtPoOjnqNDLS3qNX6OezPLwKSOD967kV33Z/Me14LpKa3pcH0kEcKrG3PQTLPLPI/OFN0+fH5hsrxFiIi21NFOGSK5Wouh5XYY71ZJ5ZOD9dPvjUblvT25f4VJ92r7zdLZLRcGq6LfMuq0HrlkqLs0e8eicKbn8+PzCbZ7/X1t0hp5nM0H6WeTcv3VU1+008kqOVuZs9mqoolZi8mynl1JiC40NHFSOsFSroWoxVVVaurvaJ9OxnUNlbCtlkSRyZoxZVzX7NE212T/AOLVXjVMbc+zq2+K/ORtdBK9yKzS66qTvSeOJipJrZNE6jhVX/w/P56/lIdilvdlpZIODdfPpv0s96e3/SpsjXX+8Vduq444FYjXMzXSbnxnkc0OB12WTLqonhqEkZhkuudsk7jzLp9e/wCE6/zX/kMdwevfcev+7P5j2nhRcvnR+YOFFy+dH5hJFVwRXwNtchmoqua3Mci2+9jxOSx3eFulLa6yNOV0Dk9xydbq2NiufSTNamtVVi5Ie93mpkq8M0c8uWm+XNcky4nGOvXWSs8S71E68QXmI1G62+JAzhqLG56u0v8AAzFkxDV0NohporRLUNZpZSNeqI7Nyr81eUVlbdbpcaOtisNX/Y3ZqxrXO0tfKjdWwvcJ9jVJ/X7bjc4enfTWq5Tx/Gjajk8imvzomzu8jO653XvNl0M3ZWrzMvJysncefdP71/Cld5H/AJC9w7UXG5MndUWaqo9BWoiPa7qtvK1C84U3P58fmDhTc/nx+YS0tbTU0qSsZmniYz0dZPGsb35L4fwfHQlT2tL5inFUVq5KmS8il1Y75W19xbBOrFZoqupuRV1ny2fxjvWdjw3ifbsXk2sc3W0K0ioiqcT9RFcuSa1U/DtSfLYPGN9ZbOWyKpXpmtj86Fqe15fMUdC1KJmtPL5ilrfL5W0FwWGBWIzRRdbcysXE1ykRWK6PJ2peoOU/6k8vCrC/bwR7mY0ccAAdac+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaamuz6ZrmXZWUzs/0SZL1TeXjO3T619uM8i8xSYx+V0/1FM6fK31Do3YdTvIqOOZiSLlfY3vT+19uM8i8xQYzxwljsaVdpkp56hZms0JWuVNFUXNdSpyIUJn8a9YU8c31KZ09S58qNVNTCooGRxOeirkYSomdU1Ek70RHSvV6omzNVzPedynsBo/GSe2p4Ce/blPYDR+Mk9tS4n80oYvOLR9NPZZ98o275Tyv06l8ip1CJtyyy4s+UmcILX223zXHa69aavxLvUp54U0siwrZpd08LalFV+qfE3vCC1duN81w4QWrtxvmuMECLtb9kNn8Nj3Uxe6FiqrxFen0szIEp7dUTR07omqivYrkTN2arryanIdNyns/o/Fy+wpm7117rfHv9pTSblPZ9R+Ll9hToF9Hlsc0vpLd57fc7bHXtje5Xo+BVcxGqmte+cKe8pDHoXZ0dNUZ56CIuziXjLUxuK+u6eKb7ypmXlpjQtqVvOXlu0NF0/tfbjPIvMOn9r7cZ5F5jBA1O2P2N/8Oi3Ussf47kstsgW0Ppp3VD1ZLvrHLk3Li1oeGG3x58ipfGL6jEF5SOxxI7coq2NIplYmh65hfsaofF+9S1KrC/Y1Q+L96lqdvD6Nvghz7/OUAAlMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACysXXD+hfcdcQfKIfqL6zlYuuH9C+464g+UQ/UX1nFy/1Oz+36KZ/sKgAHaGAAAAAAAAAAAAAAAAAAAAAAAAAAAAOVR+rTwnU41TmtizcqJr4yu4p+il8FN3h/wCrj8T6tPXal8YhZ3vrtP8A0+yhVWiWPpvSokjVVZU4y2vTHLdp+pX93i/uocx/pv0rvD+C84/nht96lcD73t/zHeQaD/mO8h2103OXspPxN8jtni3eppnjQYoe1tHbNJyN/Ru2r3mmc36L6RvnHymt/UOPodAqdmafZa3CWsh3PpX0ELZp0mTJjti9UmfGhT79F9IzzkNFD1eC36HVfpf3df7yGMF0cq26HtV5SNRF6oecSXDFcsTo1tMKI5FRVRf+4iWpMTWikWmgtbHsVyuzeqZ/g4229yfRv8h+71J9G/yEiVVkw8tLGHY7uRyyuv7DvgCpu1Sy6rc6VlNowt3tGfvZ6WfGuzJPKRDQYdzhpblLIita2HNc07zjCcMLL2w/0buYPa+VrVYzfQxhfHDI9r37ar3F2WeHevtN/V7KmR4YWXth/o3cxdYQxJa7hiijpaeZzpX6eiisVNjHL7jCOnlR6KrV9xJLUwLG5Eemi9SsxFYbtUYhr5or5NCx87nNjRXZNTPZtKd+Erk+obUPvT3TMTJsio5XIneXM9LuGH7jPcJ5Y4mq171VF00I3Bi6fQt89CdZ6lFyT4Gs2GjVqYl+KmD4O3r+Ip/K7nPRsX9cIfF+8i8GLp9C3z0OGP77QWq600VXI5rnw6SZMVdWaoeKs8rFRyZ+ATs0UrVY7LO+ZABScMLL2w/0TuYcMLL2w/0TuY1+zzeovuN7tdP66e81mJqKprsC26GkrX0kiVCOV7M81TJ+rUqcv4GHkwvdpY3RyX+V7HJkrXaSoqeU9Ipo3X7Btvkt6b41zlcmfU6s3JxkXgzdfoG+kQ2nSVEdmtTpsaDGUsmJXu6r1PP4cK3WnibFDfZI427GtRyIn2Zm0wbbqy34fvSVdwfWLI1uirlXqckdyqTODN1+gb6RCWylmsuHLtNXN3tiRK/NF0tSIuewNlqHrZ6ZeB5JHSsbdi55de8zwzKPhhZe2X+idzH5wwsvbD/RO5jU7NN6i+4sO1weunvNrhbry36jj4rPls/jHesrsEYht1xxEynpZXPkWNy5KxU2eE0FRY6+Sple2JFa56qi6Scp1XAHJBj5q4fE5njTkme1Y8/AqjtSfLYPGN9ZM6QXD6JvnodKex18dTG90SI1r0VV0k5TppKunVq+WnvKJsMl0yIWKevLvqNKdvx08J0xviC227ET6epmc2RImqqIxV2lFDiyzySsY2oernORE/RuPmqwSrNdGrqd3HUwpAiK5L23NQAD6sfPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxxj8qp/qKZ40OMfldN9RTPHyOo9Kp9Ho/QNBnsbdYU8c31KaEz2NusKeOb6lMqT07Tyt/Tv8Dz89+3KewKj8ZJ7angJ79uU9gVH4yT21Ohn805SLzjT3TrVV+Jf6lPOz0S6daqvxL/AFKedlHWaodDwzzXAAGiW1zyu9de63+Yf7Smj3Kuz6j8XL7CmcvXXut/mH+tTR7lXZ9R+Ll9hTrf/r9hxC+k9p7+YzFfXhPFN95szGYr68J4pvvKaq9GXFB6b2FIACrL+6GVx58ipfGL6jEG3x58ipfGL6jEHSUH6dPb8zk+JfqXez5HrmF+xqh8X7y1KrC/Y1Q+L95andQ+jb4Ic2/zlAAJTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsrF1w/oX3HXEHyiL6i+s5WLrh/QvuOuIPlEX1F9Zxcv9Ts/t+imf7CoAB2hgAAAAAAAAAAAAAAAAAAAAAAAAAAACuvtshu1vSnqHPaxHo7qFRFzyUsStv8AdIrTbkqZmOe1ZEbk3brReY0eIY+yyYNbG1R4O0M5ml8yotmFqC1XOmuFPJOstNIkjEe5FRVRc9eo2vC24fRweavOee8Orf2vP+HOOHVv7Wn/AA5z54sdc7W/wOxR3Dk0t8TVXXdFvFDdbfSR09E5lVJovV7HKqa02dV3y54WXH6On8xec8kuuIqauulBVxwyI2lfpOR2Wa60XV5C44d0Ha0/4Er4qnlsw69SGN9HzH4rWytrsaPFMDcXdC9Mc2dC6e97x1Pxss888/moYzEOGKG1WtaqB8yvR6Jk9yKmv7Cw4d0Ha0/4Fbf8UUt2ti0sMEjXK9HZuyy1GUCViPajr29gnWhWN2C17ZalhSYNtk9HDM6WpRz2I5cnplrTwGxw9XS4ataW6iRr4Uer85tbs18GRiqTGlFBSQwup5lWNiNVUy4kO3Dmg7Wn/DnI5G1rlXW3sJGLw5ES9r+038+MbjFA+RsVNmxqqmbXcnhK7D26Dd7tbVqZ4KNj98VuUbHInFyuUxs+NqGWCSNKefNzVTPVxp4Svw/ialtNuWmmhke7TV2bcsteRk2Kp5TrpndCNz6PnNsqYbLfU9Lrr9W3BrWSPSNqIqK2JVRHIvLr1lJ0qtvaFL6FvMZmrxnLM6JttgyVVydvqJrVdmWvwknorF/c6Dzm/mIOz1CZuciX3WxspUU3mxsuibJc42SipJMS3WKSlhdGxV0GOYio3XxJxGnpqSlop21FLTRQTM+LJGxGubqy1KhkaWkxRSV1RWx0May1K5v0nsy9okVd1xTQ0zqipooGRMy0nZtXLNcuJ3fJpo3yP8iROnUigljijXHGvVfNNr0yru3Kj0rucz1yvl3jxjb4G3WtbC+LN0aVD9FfjbUzyK2C44sqYWTQ0MDo3pm1c2pmnnEWekxRPdIbi+gj36Fui1EkZllr/vd8xhidG52N6aKmp7PKyRrcEa6ovmm96YV3btR6VSHWQRXGVslbG2qe1NFrpk01ROTNTN9F4w7nw+e38xGob5iW5ROlo6WCRjV0VXNEyX7XEKU0vnI9Mu8mWqhvZY1z/wDyfeNKKkprdC6CmiicsuSqxiNXZ3jRdKbb2hTeibzGWulJii7wshqaCPRY7STRexP9RN6Lxh3Pg85n5id7HLG1qSJdL38ohZIxJXuWNbLa3kmrp6mopIGwU08kMTPixxuVrU8CIR7vdblHaKuSOvqWPbE5WubM5FT8TJx3zEs1dJQx0kDqiJM3s1Jkmrjzy40OtU7F1XTSU8lBCjJG6Kqj2Z5ecRtp5GPRXPTfUzdURPY5Gxr1TzS/wzeLpUWCmlnuVXLI7Tzc+dzlXq141Us5qupqYXwz1M0sb0ycx71VHJyKhire3FltomUkFBEsceeWlIzPWufzu+Ki+YmpamGmmpYGyzrlG3NF0l+xx6+B75FVj0zVepjHPFHG1HxrkiftNJ0qtvc+m9E3mM5hSipJ5rkk1LDIjJURumxFyTqth36Lxh3Pg89v5iDbqPFFsdO6ChjVZ3aTtJ7F16/73fM2MekbmrIl1tbMxkkY6VjkjWyXv5JsKWmgoZkmo4I6eVEy04mIx2XhQndMq7tyo9KpiKy8Ynt8Cz1VJBHGiomlqXX9inWOuxdLEyVlBArHojmrpN1p5xAtNLbEsie82Eqob4UjW/8AaWLL5d+HMlN00rd4SLNI+iH6OeinFnkaDpjXdu1HpXc5gko8UJdlufQMe/K3RVNNmWWWXziZJXYtiifLJb4GsYiucuk3Uif1E0sSvw4XpkiJqQQytZixxrmqr5vQ0dXTQV06z1kEdRKqIivmaj3ZeFTMYoo6alqrWsFPFFpTLnvbEbnrbyH5R3jE1wgSelo4JI1XLSzRPW451dHiW6VNKtXQxtbBIjs2Pbyp/e7xnTRvinbjemXS/wBDCplZNAqRxrdf/wA/U9BAB9MOIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPEHvWSRz12uXNT5PR/gUvfdOg/x/lPz4Fb33SoP8f5TieYzcucDtjzrMm2q6zWmrWpgYx7larcnpqNz8Ct67p0H+P8o+BW9d06Dyv/ACnivjVLKetR7VumplLjbIKqJKq1K+o0Wq+qXPJGLt40Tv8ALsPVdz+8W+x7m1FV3KpSngWaRmmrVXWr3ZJqTvGZbuaXywUFTXS3KldSRRrLVQMV2cjGoqq3ZtyzIdBYrpjKjbR2qujpbXmskdLKq6LXJqVdSLxqprq79rly3+hs4cSY2Jn1T6oUeMcXVmKq6NallOkdKr2Quha5NJqrtXNV5E5DOHo/wK3zulQ+V/MPgVvndGh8r+Y2EkYiWRTWwvPOMxmej/ArfO6ND5X8w+BW+d0aHyv5j3ms3PMDtjNQVlNfKNlLcHpFLSRpHRpFmm+KqZdVt+a3k2ltubUdRQbotJBUxLFIkci6Kr/cUsGbjN9ika9tzoWuauaLm/UvkOFVSXCx3pLV0W3p8jdNtezPJGqmzWnJmmw11cjb4dPl/jc2mpzbI7zk+Pd47Gnx9ujRW5i2+zS01TMrpYKxkkb84stWrWmvPPl2Hi56P8Ed/uf9vkutE99V+mc56vzVXa1Vep75+/Ape+6dB5X8xKx0bUyU13Neq5oebg9H+BS9906Dyv8Ayj4FL33ToPK/8pnzWbmOB2xiLTd5rTJIsLGOSVui7TRVyTvEq62iBrFq7S6SooWNyklf+67PZsTiVvFxmt+BS9906Dyv/KfVRgC7YVtU9bcK+mqLbD1c1NErs35qicacuXkInOai4mLn8/voTszTBJp07v8AG5Z4X7GqHxfvLUhWaSCa0U0lLEsULmdQzkQmnaQZxNXuQo5MnqneAATkYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK293uCx00c88T5GyP0URmXJnxmLntYmJ2h6iKq2Qm1NTDSU76iofoRsTNzuQq+F1h7oM8x3MUEdFe5JEZX3NaimX9ZGux6chK6SWztRvlU5io/1FG1yctLmu+qgZle/gclxJipPi2ukVvEuS6088+eEeK+5dL+P5y12agUn47V7mt+JO9RDlbsUujZImIFiopVVFja1q9Un4lrRX613GfeKSrbLJlpaKNVNX2oU9Rb6WsVHVELXq3ZmVLmxMuElFaP7HWMRFWZM/i5Iqp6i0pePuWzZG6aqbMVUyXKyovXZDfAyVsu9XaayKjus8lY+skayFzcsma8tflQ1p01NVR1LMcak+Vrot0AANoAAAAAAAAAAAAAAAAAAAAAAAAAAAFlYuuH9C+464g+UQ/UX1nKxdcP6F9x1xB8oh+ovrOLl/qdn9v0Uz/YVAAO0MAAAAAAAAAAAAAAAAAAAAAAAAAAAAcan9V9p2Ky/01dVW9I6CpSnlSRFV68mvUV/EmotHIirbI3KFbVLFRL5kO89Y63xLiPhLsapP6/bcVsthxHPE6KS8RuY9MnNVV1p5D5p8O4hpYWwwXaOONvxWtVck4+Q+e8uPk8vmJrf4HY8yXnczlLa1um9zWAw9cmIaCtpaWS6q59U7RarV2a0TX5Sw6T4m7tJ5V5iNaRERFWRMyVKtyqrUjW6eB9YT66XrxzfW80xkKfDN8pJJH09zjjdKucipn1S6+931ON0hxFaaNaqW66bEcjcm7df2E0sTZ5btkTOxBDM+nhs+Ncr7bm1Uy7/2gR+J/wBKnOG24lmgjmbeUykajkTNdWaZ8h8cGb4tWlZ0zi6IRMkkzXPLyHkUbI8SLImaKhlNJJKjbRrkqL0NeDKS2rE0UT5FvLVRiKurPmItqjxDdqNamK7aDUcrcnbdX2ESUrcOLmJYl7Y5HI1Y1uvgTcZKiTWxVX/1Xf6TQ9F03bEPnoUEeGamuVenda+o0P1O9uyyz+Nxd5D74E2n51R56cxm7kKxrHP0vom5gztCSOkazzrarsXnRdN2xD56FRimogkw7VNZNG5V0NSPRV+O0obXh+iq73X0cqyb3TrkzJ2vblrLWqwpY6GmfU1EtQyJmWk7SzyzXLiTvmSQwQytu5b5LoYrNPNC7yURM019hZ2aqpmWaka6ojaqRNzRXoTejKXtmLz05zzu8xWOOGNbVUSSvV3Vo9F1J9qIVGZsfh7ZVV91S/cai8TdDaPCi22U9b6Mpe2YvPTnM3gmaKK2TpJIxirLq0nInEhiMzW09swlV1DIIKyofI9cmt6pM1+1odSMhjc1VXPu2PWVr6iVr0REw7rrc13RdL2xF56Doul7Yi89DF4mw/Q2iiimpVlVzpNFdN2erLwFzwItPzqjz05jTWCnRqOV62XuN5tRUuerEYl0t13I9umhTG9xesrEasWpyuTJfimj6Lpu2YfPQpeBFp+dUeenMRbnhG2UdtqKiJ02nGxXJpPRU9Rm/s8zmpiXomhhH2mBjlVqaqupo+i6btmHz0M9fp4X4hszmysVGyZqqOTVrQjWLC1uuVmgq53Tb5JpZ6L0RNTlTk7xY8CLR86p89OY9YlPBIvlLdLpp7A5amoiSzEstl19pddF0vbMXnoOi6XtmLz0KXgRafnVPpE5ikw/h6iuclY2oWTKCRGt0XZatfMRtgp3NVyPWydxm6oqGvRisS69+xc4vnhksLmxzMcu+N1NcilpbqqmS2UrVqIkyhZtenIhW8CbTy1HpE5hwJtPLUekTmMldTLGkeJclvoeI2qSVZMKZpbUuui6btmHz0I9wqqZ1sqmpURKqwv2PTkUybcP0TsVvtirLvCM0vjdV8XPaXXAi0ctR6ROYLFBGrVVy76Bs9TKjkRiZXTU+cITwx2FrXzRtXfHanORC9bV02m1OiItqfvoUnAi0ctR6ROYqL3YqOz1VvdSrJnJNk7TdnsVO93yRrIJ5/Jct1XYidJUU1PZzUsibno4APp5wgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt6Sqhq41WKRr9H42XEpIRDKYgkfaaiNlA7odsiK5yM41z2lT06uXbch8vdUoxcLkzO0bQrImNi5Lueg5EO53Sgs9L0VcallNCrkZpvXVmvF+CmK6dXLtyQzOPblWVWHkjnnfIzf2rory5KZxVDZHo22pjNQyRsV6qmRm8a4uqMV10SzRQsZSK9kTos+raqprXNe8h6bud2+O5bnFHBI9zESaR2bdvx3Hhp77uU9gVH4yX21LOdqYLFVC9yPxJqXlDcZIndD3BrYF0kZBntk4uYtSDdqeF1HLUujRZoI3Pieu1q5Z5/ghj+ndy7bkKt0vKydmWjKftHlMy3N+Dz/p3cu25B07uXbchj2tuxL+GybocN0PdCit0S2u1vpqt8zZ6esa7POFUyb5dbvIYjcpX/wDX9F4uX2FM7fXulv8AXyPdm51TI5y8qq5czRblPZ/ReLl9hS4woka2KRb48z2SWlmtFU+pomLMlU9Vm0tjEzz1eVS1p6mCqj3yCRJG55ZodHNR7Va5M0VMlMhe6ia1V/Q9A9aeLQR2izZmVblSFL9CzjatQuH925sPtPz7TAdO7n25IOndz7ckIu2M2U2Pw2TdDX3m+W6xUyTXCqjp0fmken+85E2H8+YqxPVYsucdfVwRQvjhSFGxZ5KiK5c9a/3lNJuiV9XWUFIlRO6RGyKqIvFqMAWtKqPYj0KmqY6KRY1PXcMdjND4v3loVeGOxmh8X7y0O3h9G3wQoX+coABKYgAAAAAAAAAAAAAAAAAAAAAAAAAAAArb5eI7NSskkY9++u0G6GWpcjB72sbidoeolz5vN5Zb4nRQujkrlajooHZ5v1/7L5CioKN3RMlynRW1NUmcjOJF7x9UlDMj0qLlKlVVsXJsq56m8n4r5SepwPFeKuqlwM80raqqv+XHp1Xf/AABQFYACpxJVTUltSSnkVjt8RM05MlJI2LI9Gp1JYYllejE6ku69aqnxannJr7LLVXW1VcU0yve7qWq7izKWOwTyXWS3pKxHxtRyu4tiL7y4pMMONjlzQv6HDT443rmmfsyNoyJs9vSF2aJJForlyKhztFctik6AqEbFbo0VW1D9quXXl6yTEzQia3arURD5npoapm9zsR7c88lNSir30kuJuhUQ1KxOVFzappGua9qOauaOTNFQ/TJWy7VFnrI6G4yyVPRcrWU+WWUSZ5a/KhrT6LS1MdTHjYpb5KiKmaKAAbQAAPAAAegAAAAAAAAAAAAAAAAAAsrF1w/oX3HXEHyiL6i+s5WLrh/QvuOuIPlEX1F9Zxcv9Ts/t+imf7CoAB2hgAAAAAAAAAAAAAAAAAAAAAAAAAAACHc6unoqZJamVsTNJEzXlJhEuVJT1tMkNTE2Vmki5LylfxPD2OTFpY3KDF2pmHW5UcIbT29H+I4Q2jt6P8AEiXexWuC01UkdHG17YlVqpxKR8N2W21dgpp6ikZJI7SzcvH1SofOuXTcvmZ2vbodrzKrm8vyb2v1Id8ulDUXu1Tw1LHxwy5yKn7qaSGg4Q2jt+L8Rwes/aMf4jg9Z+0Y/wAT18lM5rWrfLwDIqpj3PTDn4jhDaO34vxKbFV3t9ZZXQ09UyR6vaui3kOGHLXQ1VxusU9M17YZUSNF/dTN3Mhf8HrT2jF+JmqU9PL1ungRotTUwr5qIt06+BwoL9amW+mY+tjRzYmoqZ7FyQkcIbR29F5T84PWntGL8Sgfa6FMax0aUzd4WLNWcWeipg1lPKrl8rqvQzfJUxI1Fw5qidS7qr/aXUkzUro1VWKiJy6iowndqCis6xVNSyN++uXJeTJC84P2jufF+I4P2jtCL8QklMjFZ5WfgerFVLIj/Jy8epDr8W0FLve8Z1Wnnnva/F2HHhd/9KqvIQsS26koKi3dCwNi05V0tHjyy5zYB6U7I2uw3vfVdjxnaZJHtV9rW0S+viYW33eSiu9bXPt87mVK5o1E+LrzId+xFJdpNGFZYoNBGuiV2pyouefq8hurncqS3U+lVy72kiK1vUqua5d5DyosaRWzOWXBbYq67HA1IUfdF1++8AAsSpB9xTSQStlierHtXNHNXJUPgAF5W3iW7Wenod6llqIXK58m3Pbzmj4X/wD0qq/8+wz2ErlSWyumlrJt6a6PRRdFVzXNORD0QpqxzI3IxzLp4211OgoGyytV7ZLLki5X00MymNY3SLG23VCvTa3jT7DjccTOrKCembbKlrpWK1FVNn4HW2dnVz8V+U0xBI6GFzbM6IuqmxG2ona68nVU0Qx9mxA62WqGjfbal7o9LNyJqXNyr7yW7GkcbmsdbahHO2Iq61/A0pm8Q9kll8Z70Eb4Z5M2a3XVfESMnp40wyZJZNE8D94X/wD0qqKmx3eW1vqnPt9RJv70cmSbNvObkESVMTWq1I8l7yVaWZzkesmadydTNPxmyJulJbKhjeVdR9cMEVEVLXU6zrjPsfd4xpa27rZSeIZ6iReQkSPwarupgnaFmWPmaJfRDHtu8jcSuuvS+o0FZo6GWvZkW3DHUqra6lMv/OQ0ZHuPWyq8S/1KeLPDIqIrO7U9SmmiRytk3XRCiZjNkjdKO2VDm8qL/sVt2ukl5qqBGUE8W9TZrpJnnmqcxc4L7H2+McaBu1PCSJLFBUWazNF3IuVNUU93yZKl9EJwAPqBwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZYw+VU/1F9ZnTQ4w+VU/1F9ZnuI+RVHpVPpFH6BoM9jbrCnjm+pTQmext1hTxzfUpnSenaeVn6d/gefnv25R2BUnjJPbU8BPftyjsCpPGSe2p0U/mHJxecae69aavxL/Uednol1601fiX+o87KGs1Q6LhvmuAANItDyu9de63x7/WppNyrs/ovqS+wpm7117rfHv9amk3Kez+i+pL7CnW/wD1+w4lfSe09+MZivrwnim+82ZjMV9eE8U33lNVejLjh/pvYUgAKsvjK48+Q0vjF9RiDb48+Q0vjF9RiDpKD9Ont+ZyvEv1LvZ8j1zC/Y1Q+L96lqVWF+xqh8X71LU7mH0bfBDmn+coABMYgAAAAAAAAAAAAAAAAAAAAAAAAArb3eoLNAx0zZXLMqsZvaIuS9/NTB72sTE7Q9RLnzeL1Hb4nwwOjkrlajooFzzfr/8AyUdDRu6KluczVZU1SZyM4mr3j9pKGd8jaq6SNqayNcmSpqybycXKvlJ5wPFeKuqnYI/NK2qqkX8uPTqv30AAKArAAAAVGJKWestyR08avdviLknJkpbn4SRyLG9HJ0JYZViej06FJhijqKOnmbURLGquTLMvABLIsj1evUTSrNIr16gAEZEc54UqIHwuVUR7Vaqp3yNaa91hmS3TtYy2xoqpUP2q5deXlUmHOppoauHeZ2abM88iwoa6SkkxN06m5TVKxLZfNU0jJGSxtkjdpMembV5UPpFzMlbrtPZaptJcppJ46p7Y6RsaIu9Ii5ZLnlyt5dhrUPotLVR1MeNilxkqI5Fuin4ADbAAAAAAAAAAAAAAAAAAAAABZWLrh/QvuOuIPlEX1F9ZysXXD+hfcdcQfKIvqL6zi5f6nZ/b9FM/2FQADtDAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZf6mupbe2SgpkqJd8RFYvJkusszjU/q/tK/iSolHIqpfI26FL1LEvbMw9XcMSVlLLTvtCNbKxWroour8T4ttViG20EdHHZ0e2PPJzkXNc1VeXvmxB857UmHDy0sdv2RcWPmrfToZGbE98p5YoZrXEySZco2rn1S+Xvnfp1ibuK3yLzn7iPshsnjf9TTTEkkkbWNdy0zIo45HyPasq5W22MRbXYgttTVTx2pXLVORzkci6ss9mvvkupxJfqOLfai1RxR55aTkXnNYUOM+x9/jGnrJ2zSojmJmJKd0EKqyRcr7ERl8xHJGkjLMxzXJmi5LrTykFeEK3pt0W1qsrW6Ojlq2Zcprrd1spfEs9SEkw7S1jlRsabGfZXSNRXSLv0Mu694lY1XOsrEaiZquS85ypcSX6ti32mtUcseeWk1F2+U09b8hn8W71FJgnrEvjnepDNHxrEr+WmVjF0ciStj5i2VF2Ic9BesSKxauJlAtMubM0Xqs/t4svxO3B+/93XeVS7r7tRWve+jJt63zPR6lVzyyz2J30IfCyydu/wCU/mMUmqFTyGZeB6sNM1y8x/ldc7GGu09clXJR1lW+o3h6tzcuaZ94ryXdp46m61U8LtKOSVXNXLLNCIX7Mmoc1It3rmAAZEYAAAN3wfv/AHed5XGEPSeFtj7e/wAp/MV9a6VMPLS+vS5Z8PbCuLmutp1tuVTcKXaOpfUsvCJM9MnSJpZqnh+wVlpv1HRy1Lr49yRNVyoiu1lrwssfbv8AlP5iJdMS2eptdTDFV6T3xq1qb29M18hpslqnPTE3LwLF8dG1i4X5/wB3+SDbLffbnb46yO9SMbJnk1XLmmSqnuOkuFbxPLHLLd9OSJc2Odmqt8B94exDaqGx09NU1W9ys0tJu9uXLNyrxIWfCyx9vf5T+Y9kkqWvVGNyvsYxx0j42q9+dkv5XUr+kGIO7rvKpXWqC93V9Q2O8SRrTv0V0nLr28xoOFlj7e/yn8xRYbvVvt81e6qqNBJpEVnUOXNNfInfMmOqFjcqtzytkYSNpklYjX5Le/ld2RKqMLXmrj3ue8pKzPPRdpKh9Nw7fmNa1l8VrWpkiIrtSFjwssfb3+U/mHCyxdvf5T+Yh5tXpg/9SflUV74//b/Jn2wXx18dakvEmm1ulp6S5bMywfh6/ParH3xXNcmSoulrQhNvduTGL7gtR/ZljyR+g7bo5bMsy+4WWPt5PRP/ACk8rqhuHC3onTqQQtpnYsb+q28roVVPhe80ke9U943pm3RbmiEevjvVnqqPfbtLKk0uWTXKmxU5y94V2Pt7/Kf+UpL/AHigudVbko5993ubquocmWapyonIe0z6h8zUkbl4HlUymZAqxPz/ALj0IAH0k4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwt43Tblc6pHuo6VrY82t0dLWme3aQOHdf2rT/wCLnMuDhVpYVW6tOgbWTtSzXZGn4d1/atP/AIuc/Uv0eIP7FdXR0sCdWj2Z5qqcWvPlMuDzssSZtSy7mXbZ1ye66bEuvoJqGRN8icxkmaxq795OU9y3KOwGk8ZL7ankNBXw3SNaK5NfUVL0SKjdsSNV1a8uLPLl2GikxfUYUwhDhyhmmhusE+m+eNrVjVjs3ZIq689acQVXOTA7U8VjW/mM800uOt0uK3q2is7qStSVsjJ89LONdSZalTv+QwHDuv7Vp/8AFzmallfNK+WRdJ73K5y8qqfJktNE7zkuYsqZWeY6xpeHNw+hh8ijhzcPoYfIpmshkY9kg9VDPt1T66l7dKBle1K+3q6okkR01W1uyFV15e15C03Kez+i+pL7CmbttxmoJFa2RyQSqiTMRE6tuvV5FU12Hqu3WO9xYsihey2Qo6NYWJnKrlRW5oirltXlCqrEwL7P4/g8wpL5bdU1T6/yewX2/wBBYKPfq2qihe9rt5SRV6tyJs9R4vct0u53Kq3+SjpGOyyyajvepVYqxVXYluMr5qmSSjZPI6ljka1FjY5dSau9km1ShPUp2K2z0uYJO9jrsWxp+Hdf2rT/AOLnHDuv7Vp/8XOZgHnZIPVQk7dU+upp+m0OJE3m6PZStiTSj3vPq3cmvMz9XRVNDKkdTC6J6ppIjuQ4IqouabTRU1VHf4OhKtHS3SV2jDO/U1rU15av6uLjPcPJ83zfl99TzF2jJ3nb7938G6wv2NUPi/eWpAslLJQ2alpZVar42ZKrdhPOzhVFiaqbIUMiKj1RdwACcwAAAAAAAAAAAAAAAAAAAAAABWXu8RWmnZppJpzqrI1YiLouy2rmYPe1jVc7Q9RLnxer0lvifDSrHLcMkWOndnm5M9f4Zr9hS0FFoVE1wlRWz1XVSs4mqq56j9o6GZZG1dykbUVrM0bKmrqeTk41J6nAcV4q6qdgZ5pWVVUi/lx6dV3/AMAAFCVoAAAAAAAAAAAAAAAAAB8SxpNC+JVVEe1Wrl3yJaax2H5UoJmsZbUzd0TJt0l4iccqmmhq4d6nYj2Z55KWFDXSUkmJunU26apWJbL5po45GSxtljcjmPRHNVONFPoyduu81mqkpbnLJNHUvbHSNjRFSJEXLJdnK3l2GsPo1LVR1MeNilzkqIqZooABtAAA8AAB6AAAAAAAAAAAACysXXD+hfcdcQfKIvqL6zlYuuH9C+464g+URfUX1nFy/wBTs/t+imf7CoAB2hgAAAAAAAAAAAAAAAAAAAAAAAAAAACtv1riu9vSmme9jUkR2bfAvOWRXX26QWmgSpqGvcxZEbkxEVc8l5V7xo8Qx9lkwa2NmjwdoZzNL5mRuGDaKkt89SyeZXRMVyIuWSnGyYUpLlaYKyWaVr5NLNG5ZanKnuJVxxhbqu3VFPHHUI+RitRXNTL1nCx4qt9ts8FJNHOskelmrGoqa3KvL3zhP+85P/6v3aHVf9jz+mG3frcmcBrf2xP+A4DUHbE/4cx98N7Vl+rqfMTnHDi1/RVXmN5yC/EO/wCBsf8Axvd8SksuHaa5VdfDNLI1KZ6Narcteau2+QuOAtB2xP8AgVNkxFR22tuE0zJlbUvRzNFqKqIiu26++hc8OLX9FVeY3nNiftnMXl6ew16bsPLTmWvnvufHASg7Yn/Ap3YdpkxO2177JvTmaWlqz2Zl3w5tX0VV5jecpnYio1xSy6aE28tZo5aKaWzLlES1nlY9ltpqeT9h8nBbVL66dS24C2/tif8ADmHAW39sT+VD74cWr6Kq8xv5hw4tX0VV5jfzEH/yHf8AA2f/AI3u+JTXrD9LaJqJInvkSeXJ2nlxZc5ruktq7nweYhmbrXSYldTutFLLJ0I5XSaaIm3LLj7yk7pnivuTB/5/UZyJM9jUV9nZ3zt4EUToGSPVrLtW1rJfxIeMqCjpKOndTU0cSueqKrG5Z6jIFzfb3XXFUpK2CKJ0D1zRmeeflUpiypmPZEiPW6lTWPY+ZVYlk9wABsGqAAAD1LpJa+0IPMQ8tN30zxZ3Ig8v/cV1c17sOF1teti14c+NuLG2+nS+5Gt9uopcY19M+mjWJkebWK3UnxeL7TQ9JbV3Pg8wzMEeJKe7z3NtrYss7dFzVVNFNmzqu8S5bziiCJ80tqgaxiZuXkTzjWmZI9UwvTROvU3YZIo2uxxrqq+b0LvpLau58HmFBe7dRQ360wx0sbI5ZFR7UbkjkzTafVNfMS1tO2oprZBJE/PRcmevJcvnEasbiWtraWrktbGvpVzYjV1Ls29V3jyKOWN/lvTr1E8sMkfkRr0/b3mm6SWvtCDzB0ktfaEHmFP0zxZ3Ig8v/cRqXEeIa1ZEprdTyLEuT8kXUvnEXInVL8xP/InWopkWyxr/AOJ3xZbaGlsjpYKSKN+m1NJrclLKgs9tfb6Z76GFznRNVVVia1yKO5rie60a0s1rjaxVRc2Lr1f1EiCuxTBBHC20QqkbUairtXJPrEqskWJGpIl7+sQtki5yu5a2sn7S86SWztCDzEI9fZray31Dm0MDXNicqKjNaLkU3CPEK1y0PS6n6IRM1jyXPLb846zV2KZ4JIXWmFGyNVqqm3JU+sYJDO1yK56f+RIs9O5qo2Nf/E+sKWyhqrI2Welilesjk0nNzLxlmtjXtc2ggRUVFRdBDM2xcTWqjSlhtcbmIqrm9devwOO0uIr9R1EDKygghbM9Goqoq560z2OJXRyyTXY9LX3ImTQxwIkka3RPVN4AD6WcOAAAAAAAAAAAAAAAD8VzWpm5UTwldd7xFbo1ibI3oyRirBE5FXTXiM1LLdr+zoS70kdPTounpQ6lVU8KryldV8QhpvOXPYKrWpdy2NbW3CGjopqnSSTemK7Ra7WuXEZvh/B3MqPOQi02GKGlqY543zaUbs0zcmXqLjJDnaj/AFG66cpMjVfXQs81MXwIPwgU6L1tqPOQvrVeIbnQsqtHedJVTQe5M0yXIr8k5CsrcO0VwqnVEzpUc7L4rkRNSeAxg/1E/F+amX33HjK6Jy2cmH4mxbIx/wARyOy25LmfRgaGons2+Mw7Eysa9U37fs+pVNmWtOVTS2S+rWo2lr97huGtXQMRdScXLxd86Ok4lDUWRFs7Y3EwuzRf59xcgAsjwAAAAAAAAAAAAAAA3CUtKqZpTRa/7iH70JTdrReYhS9M5rH+jubnTrJrj3rJdFqcWvI+uF1D9DP5G85805zE85bHWdmkXNqXTcuOhKbteLzEHQlN2vF5iFPwtofop/I3nM1jzGs1Nh9slnlmpanf2ppq1q9TkuacfeM2SMe5Gopi+CVjVcrckIOPseW6kppLZaYqOs6KilhnkTNHQqqaPJt1r5DrueUDo8IU11hg6Lne+RixuRMkTSXX+B47LK+aV8si6T3uVzl5VU973KewKk+vL7am3NEnLsasMqo9VNLSdAVbF3uOBz2ZabUYnUryHfoOl7Wi8xCsq6OW3vSqoXNhgbnJUt2q9E16s+9nybTlwwofoKjzU5zS5uHJ5uchX5xJdC56Epe1ovMQdCUva0XmIU/C+h+gqPI3nHC+h+gqPI3nHaI/WHZZvUU/cRXiy4donS1nQscz43up43sRN9c1Nmzvp5TyqwXFcbbo1PJPCykbJC5u9xa2posXlKLGl/r71fqqOqqXzU9NUzJTMc1E3tiu2au8jfIWG5T2fUf1JPYU3+WiRrfY0eY5Hpbop7FRvhpHLSVtJDBHHlHBI5qZy5auYtuhabteLzEPitoYaxiLJGjnR5rGqrsUqW3l9nToa6K+af42lGiKmS7E4ivx8vJ2hvYObmxM9i66Epu14vMQdCU3a8XmIU3C+h+hn81OccLqH6GfyJzjnx+sOyz+opbupqVjVc6CJERM16hDyfdCx3QTQyWezx0lTTVMDVdVR6nMdpLmifY1PKWW6LjarhttKlnnmpXPkckqq1vVNy2cZ46b0CI9Md7mnPiY7AqWU9cwwulhuhVfoveWpVYW7GqHxfvUtTuIPRt8EKF/nKAASmIAAAAAAAAAAAAAAAAAAAKu+XqG0RRtkSVZKhHNjViIuS9/Ne+hg97Y24nLkeolz8vF7Zb2Ohp9CavyRY6dV1uTPX+Ga/YUlFQvSplr5lXfaldJ0btjFVeI/aShmWRlVcpG1FazNElTPU3iTi5VJ5wPFeKuqnYGeaVlVVX/AC49Oq7/AOAACgK0AFTUYjoqardTSNm02rkuTUy9ZJHG+TJqXJYonyrZiXIeKLq+mb0E2NMpY0dpZ601/wCx9YZur6tnQaxoiQsz0s81XWV2MeuMHifep9YO+W1Hi/eWqxM7He3f7S7WGPsGK2dr+014AKY58AAAAAA/AfM0qQwvlcmaMarly7xAoL9S3KdYYUkRyJn1TUQkbE9zVciZISthkc1XtTJDN3K/TTXKGXe2t6FeuSIup2tNvkNTaa11wt7KlzEarlXUneXIwNX8rl+uptMMdYofC72lLWtiY2FtkLriMMbKdqtTQtwAUxQHOaJs0T41/eaqZ8mZGtNc+wyNoZ2olAiq51U9diqmzykw5VNNDVwrDOzTYvFmqFhQV0lHJibp1NumqViWy+apo4pWTRMljcjmPajmuTjRdin0ZOiu81iqFguEj5qWZUjpGRtRd7RNWvPLiVOXYa0+i0lVHVRo9il1kqYk0UAA2zwAAAAAAAAAHWmp0q6hkDnaKPXLNOI5Ey09dKf65BU+hf4L8iSJVSRqpuW9NL0qf0JVRtZSRpkyof8Avrty9fkLhGMciKjW6+8c6qkp62NI6iJJGouaIq8ZTpc5rL+jubnTOk1x73kuiicXEfPcax6rkdRgSbzU8rbf76l6jEbsaieBD90UXa1FKThZb/mTeaOFlv8AmTeaec+PXEedkm9RS60G/Mb5DzTH+6HR01NJbLUlNWJVQywzvRyo6FVTR96+QlY7xtNTYeSSzyz0lTv7U01a1epyXNOPvHissj5pXSyO0nvcrnLyqpu09npjRboakyOjXAqWU9QwS5XYYgVVVV037frKX5n8D9i8H13+0poDtqf0LfBCik89QACcwAAAAAAAAAAAAAAAAAAAAABxqmtdD1TUVM+M7FZfoK+ot6Mt1QyCbfEVXO5Ml7yldxJL0ciXtkbdC7DUsW18xvMX0bPIfu8RfRs8hlaqlxTR0stQ+6xKyJquXRTWqJydSfFvixPcqKOriusbWSZ5I5NepVT5vePnfZVw4uYljt+2eVh5S38EJGIWMbiGy6LETOZM8k/vNNLvUX0TPIZKfDuIaqeGee4wPkhXONy59Svm94kdLcV914fJ/wBpJJG1zGNSRMrkMcj2yPcsS526JsaXeYvomeQocYxsbYHq1jUXfG7EKq3PxLcqiqhiubWupXI1+miZLnns6nvEmrsGI66BYam5QSRqueiq/wDaI4OTKivemR7JULPCqMjXPLoaC3RRrbaXONv6ln7qciEneYvom+RDNMtOKY42xsu0CNaiNanIif0kLTxIl4ba+mbEmc3S0sk0UTLPkMFp8blVsibmfauW1EdGu2iGtq4Yug5v0bf1buJOQpMFsY6xrpMav6Z21O8hzdasVORWOu0CoqZL3/8ACcaTD+I6CHeaW408ceeeiiquvzTNsbUiczmJdVQjdI9Zmv5S2RF6J1NV+ii+azPwJmN+i+kb5xhb7QXRklG261jKjTkVrND91NWfEneLrgPavpKrz28xG6nia1HPfrslyVtVM9ytZHputjIXzXfK3Jc/0zvWQDR4lw/R2enhkpnyqsjlRdNyL7jOF9C9r40VuhzdRG6OVUfqAASkAAAAPXt9i+kb5yHkJv8AgPavparz28xWcQbGuHG62vS+xb8MdK3Hy230623L/fYvpG+chCvUsa2Wsye1f0TuPvGUo8O0dRiWrtr3zJDAzSaqOTSVep2rl31LjgPa/panz05jR5MEL2q5+y6Flz6iZjkaxOqaknCksbcN0qOe1F6vav8AfcW+/wAX0jPOQz3Ae1fS1PnpzFTdMOUVFdrdSRvmVlU7J6ucmabNmrvjlQTyKqP1uuntCTVFPEiOYmVk19huN/i+kZ5xmcISMbNctJyJ+lTavhOnAe1/S1Pnt5j94D2v6Wp89vMG9naxzMetumwf2p0jX4E8m/Xc0O/RfSN84/N+i+kb5yGMxBhihtdrdVQSTK9Ho3J7kVNf2E6kwXbJqOGV8tTpSRtcuT0yzVM+Qx7PBgR+PLwM+01CvVnLS6Z6iN7OH0rtNMt625/3UNMk8X0rPKZ7gNa/parz28xxq8GW2CjmmZLUq6ONzkzemWaJ4DORKeVWpj0RE0I4+0xI5cCZqq6mn36L6VnlMzi57HVNr0XI79Muxe+0g4ewxQ3W1pVVD5ker1TJjkRNX2FtDgq1xTMkbLU5tcipm9vMSQsgp50u/NF2MJnVFTTqiMREXvNgAD6ccIAAAAAAAAAAAACtvd7is1K2d0SzqsiM0GLrTUq5/gfN5vMdvjWGJzHVz2aUELkXq/8AzwlHRUjpKp90qmLHWVCZSMRepTweTlKbifE2UjbJm4xkkbE3E73biloZ5ZEqLjN0VM1c4nO2sTkLAA+eyzPmdiet1KKWV8rsTgACIiBV4iqZqW0vlgerHo5qZp4TjfrzPanw7zHG/fEXPTz4suc41D6m+YZR7IUWV7/it1Jqd3zdhhVqskd5qqWEFOrVZM+2FVKKyVtTHdIWMmcjZpWpInztZsK2ge9y1FFL0PVrq35NuXIZCyUFTLc4pI4lVsErVkXNNWs3htVsnLla6NbKbnEZOXK10a5/ep3sN7bcElppGuZLSo1j3vVP0i60zTyfiXJkrhb2VboqhNLfqZVfEiLqV2pdfkQsrLfVq0bS3BY4rgqqu8savxdufH6zrOFcVZVNwPycSRTNmbdNeqF2AC9JAAAAAAAAAAAACxxh8qpvqL6zPGhxh8qpvqL6zPHyKo9Kp9Io/QNBnsbdYk8c31KaEz2NusSeOb6lM6T07fEVn6d/gefnvu5T2BUfjJfbU8CPfdynsCo/GS+2p0M/mnJRamnuvWir8S/1Hnh6HdetFX4l/qPPCirNUOj4b5rgADSLM8rvXXuu/mH+0ppNyns+o/qSewpm7117rv5h/tKaTcp7PqP6knsKdavo/YcQvpPae+mNxX13/wD6m+82RjcV9d08U33lNV+iLjh/pvYUgAKsvzK48+Q0vjF9RiDb48+Q0vjF9RiDpKD9OhynEv1K+z5HrmFuxqh8X71LUqsLdjVD4v3qWp3UPo2+CHNv85QACUxAAAAAAAAAAAAAAAABU329R2qOKHKTf6pHNhc1qKjXJlrXPwpykb5GxtVzlyQ9RLn7eby23xPjpd7nrUy0afS6pU8BSUNDozTV0rnLJVrvjo3bI1Vc1RPKfVLQyunStuL2z1yat9bqTLiTJMk/AmqcDxXirqp2BnmlZVVSKnLj06rv/g/QAUJWgAAAwN47IZ/GJ6kN8V81kt1RUOqJKfSkcuarpuT3m5STthcquN+hqGU7lV3VCRW0bK6lfTu1aaImllrTXmKOkZR0scDdegmWlltO4U1sbsOHoanMdhwXyP0AGBGAAAAAARrh1tqfFO9RlMJddXeLU2UkbZY3RvTNrkVFTvEWktFDRS77TwaD8ss9Jy+tTchnayFzF1U34KlkcD411U+ay1RVlXT1CrorA7NERNutOYmoiN1ImR+5A1le5yIiroajpHORGquSAAGBGAAAfEsbZY1Y5EXNMs8thEtNZLYamOhlTSoXKr5KqVctBctSeVET7Sccqmmiq4HQTt0o37UzVOPPiLChrpKSTE3TqbdNUrCtl0U0cU0c8TZYno9j0za5q5oqH2ZGku0tinSnrXukpJVSOkjiYmcaJyquS8acprT6JSVcdVGj2FzdFTE3RQADcAAB4AAD0Al2nrpT/XIhLtPXSn+uQVHoX+C/Izj89DZKZTGHymn+ovrNWplMYfKaf6i+s+c1PolOuofTp7TOgAqToDP426xJ45vqU8+PQMbdYk8c31KefnRcP9AcvxX9R7EPUcD9i8H13+0poDP4H7F4Prv9pTQHdU/oW+CHMyeeoABOYAAAAAAAAAAAAAAAAAAAAAAiXGpgpaZJaiVsTNJEzcuSZksg3ehprjRpBVxb5Gj0dlpKmvXyFfxLD2OTFpY3KDF2lmHW5R3e726W0VUcdbC97olRrUfrVSNhq60FNh+mhnq4o5G6ebXOyVOrVSXwTsfaX+a/nHBOx9o/5r+c+d8ym5fL8q179DtOXV83meTpbqSunlq7fh88dPLV2/D55mb3ZLdSXm2U8FPoRVEmjI3TcuaaSJxr3y94JWPtL/Nfzh8VM1rXKrs/A9ZNVPc5qI3LxKfDdxo6e43V81THG2WVqsVzstLW7Z5TQdO7X2/B55G4J2PtL/NfzlTiaw2y3Wh1RS029yI9qaWm5dX2qZu7PUS9br4ETUqqaHRqol16+Jf9O7X29D55n33CjXG7KnomPed7yV+lq+KvGWNFhizS0MEr6PN742ucu+v1qqeE7cE7H2l/mv5zFj6aJXJ5XVOhm9lVKjVs3JUXqSundr7fp/PHTu19vweeQajC1ljppXto8laxVRd9fty8JVYXsVtuVqWeqpt8k3xW56bk1ZJyKeJFTKxX3dZPAyWaqSRGWbdfEYtudJNJQOp5mTb29znaDs8vikvhzb+15/InOXVvtNDa986Cg3rfMtPq3Ozyzy2r31Jh46aDCjMCqid9tT1tPUYlkxoir3X08Tz/ABJiGmvNPDHBFIxY3Kq6eRniwv3X6t8e71leX0LGsjRG6HNVEj3yqr1uoABKQAAAA3fDqg7Xn/Awh7CVnEHRtw4231622LjhbJXY+W62nS+5gaTEdNT4jqrk6GRY52aKNTLNPi8xccOrf2vP5E5zTEG99ZK3xLjR50MrmorNk1LHkVELHK2TddCn4dW/tefyJzlTc8SU1bdLfVxwyo2ldm5FyzXZs8hpcJdjVJ/X7bi4PebDDIqNZpdNfYeJDUTxIrpNbLp7dzL8OqDtaf8AAcOqDtef8DUGXwf8ounjk/1HjOzuY5+DS3U9f2psjWczzr9Nitv+KKW62x1LDDKxyvR2bsstROpca0MFJDC6nmV0cbWqqZcSZGrBitRDgRnLy8f8GaUs+NX8zP8At/yZnh1b+15/w5zjV41op6SaFtPMivYrUVcuNMjrH2fyeJ/0oaYzkdBErVwaoi6kcSVMyORZNFVNDEWHFFLaralLLDK9yOV2bcstZaw42oZJo40pp+qcicXL4TRGWxvG+ZtBFGmb5Hua1O+uiZRSQTzpdma95HMyopqdVR+SdxuT9MnaUulltfSOKla696ayMpJNebV155oqJszXaSLzRPwalur4WqtbeXZ1scy5tjfqVUZlllkr12quxDuHcZpmvjZfN+2fQ4vlLc0gALghAAAAAABXXu8w2OibVTxvka6RI8mZZ5qir7j4vN5Zbo1hhex1c9ulBE5F6v8A88JSUVK99W+6VLVjrKhuUjE+Kng8icZT8S4mykbZM3GEkjIkxP8AcflJRTSPSouMvRM6LnG9drW8hPP0/D55LM+Z2N63Uo5ZXSuxOP0AEREAAAZXGWt9J4He4s8MdY4frO9pS2P02nVF4Uitobj6nFTpDbTqcYKWCmVywsRunty4zsAayqq5qaqqqrdQQq2ifIqz0bkgrNjZuNE4/wACaDOOR0bkc1czKOR0bsTTvYL0lwSSie1/RFGxrZZHZZPdsVU+1FLkyNwoGVKxTdUstMunEibFdtTPyFpZL66sRtLcN7huCqq7wxq/F5eP1nf8K4q2qbgfk75l5FK2ZuJNdi6ABekgAAAAAAAAB84pxJZKmrh3i60sug1UdoyouS5lH07tfb8HpEPLXuV71e5c1cuan4fPH8Oje7EqqdVFxOSNiMRqHqfTu19vwekQqMTTxXa1pTW6RtVMkiO0Il0ly168kMGSaG4VVunWakl3qRUyz0UXV9p4zh7Y3I9q5oZP4m6Vqse3JdtSMqK1VRUyVNqKe+7lPYFR+Ml9tTyKpoKa70j6y1R730OxX1W+OXNy5Z6ta8i8h6RgvENFhncwoq+vSVYlqHx/om6S5q5y8veNl78be80uWsbs9NzX4ivNtttvmhrq6CnknhekbZHoiv1cXlPO+ndr7fg88wmJMTXLElZvldUrNHE5+8IsbW6LVXZ1KJnsTaU5DJQtksrlNiCvdBdGoep9O7X2/B546d2vt+DzzywEX4ZHupsfjEvqoWN8glZdJ6h0bkhqJXvieqanpnnmnLtQ0G5T2fUf1JPYUq6C4QXKBKK7I6d7GpFRZJopGqplryyz2N257C/3PLdPa90ijpp1bppFIvUrmmtim5i8lWO1sV72ZpI3Rfh99D3J72RxukkcjWNTNzl4k5TzrEmI7LVXRJKe6UsrN7RNJsiKnGVm6FujyNlda7HUzU8sEssFZpwsVH5dTqVc+R3IeUkC0qSts5bEsVUsD8TUuep9OrZ2/T+kQdOrZ2/T+kQ8sBF+GR7qbf4vJ6qG1xU9t3pIWW5yVTo3K56RLpK1MtqmKJdvuNVbpHOppNDfE0X9Si5p9pZ3K2UlXSPuloi3mjhTRe2Ry6Suz4s1XlQ2ompAiRrp0X+foaczu0qsqed1T+Pqb7C3Y1Q+L96lqVWFuxqh8X71LU7eH0bfBDnn+coABKYgAAAAAAAAAAAAAq73eY7XHHD1aVFUjmwK1qKiOTLJVz76oRvkaxqudoh6iXPy83ptvhfHTb3PWplo0+l1SovHl4CmoaNWSz1kqqslW7fHMdsjVc1VE8v4H5SUcz5m11yc2WvTNN9TVq2JqTV+BPOA4txVap2BnmlZV1SKnLj06rv/AIAAKIrQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADnLE2VitciLmmWzYRbTVy2CoZQSppULnK+SqlXJI1VNSeVE8pNOdRTxVlO6CZulG/amapx58Rv0NdJSSYm6dTbpqhYlsuhoopY5omyxPR7Hpm1zVzRUPoyVHdprBOsVfI59AuUdLHGxFVnhXb+KmuPo1JVR1UeNhc3RUu3QAA2wAAeAEy09dKf65DJlp66U/1yGo9C/wX5GcfnobIwGKMSWSpqot5utLJoNVHaMiLkuZE3Q90Z9re61WSeanuVPO3fnuhY5is0VXJNLPjVvEeNvcr3K5y5qq5qcL2VJWWdkdBHUrDJialz1Lp3a+34PPQdO7X2/B56HlgIvwyLdTc/F5fVQ3mJqiG7WtKa3SNqpt8R2hEukuSZ68jBqitVUVMlTaikihr6m3T7/SS73IqZZ6KLq+0uaq3014pnVdqjVnQ0auqlkVeqXLPVrXkXkNmNqU6YOm/8/Q1ZnrVrj/dt/H1NhgfsXg+u/2lNAZ/A/YvB9d/tKaA7an9C3wQ52Tz1AAJzAAAAAAAAAAAAAAAAAAAAAAFZf6qro7ektFSrUy74iaCZ7Ml16izONV+rTwlfxJUSjkVUvkblA1XVLERbZmMlxHfIo3SyWRWMYmblXSyQ+YMTXqpibNBZ98jdsc3NUXiLy99ZKzxLiNhLsapf6/bcfPccXJ5nLTWx2WCbn8vmrpfpuUFfPfK+uo6t1nla6kdpIiNXqtaLr8hY9PsQ9wH+RxpgRrVNVERY0yJUo3tVVSVbr4GSgxVdql0jILRvjolyejc1Vq9/wAike61l9u1EtLJZpWNVyLmjVXYTsKddLz41vreaYmlljgls2NMrEMMMlRDd8i5323MrBer/BTxwpY5HJGxGoqo7iTI+eFd26K6F6UJv+We969LLwGtMxJ+0GPxP+hTGOSKTEqxpkiqJo5YkbaRc1ROh8y3q/yxOjWxPRHNVF1O4yHaKm+2ijWmjs0sjdNXZuaqbf8A8G1BglUxGq3lpZSbsj8SO5q3TwMPc71fnuga6KS3aTtFOLTzy9XvLHpNibu23yrzH5jORsc1sV65IkrlXwJolvwhtHb8X4k7pHcpjomJnfpc1WxsWZ7ZZFyt1t0MTfrHV23RqauoZM6d65q3PPMpTXYxudFXUlOylqGSua9VVG8WoyJaUznuiRX6lNVsjZMqRrdAADYNUAAAG76TYn7tt8q8xhD1DhFaO3o/xK+tfI3DgbfXpcteHMidi5jradbbmZgbiGovE9sbdlSSBuk56r1K7O93ydLYMRzxOilvDHsemTmqq608hHoLrQxYvr6p9QxIJI8mP4lXqeZTQcIrT2/F+JqzPmYqYGdE6dTcgjgejsb+q/u6FLBh7EFJC2Cnu0ccbdjUVck4+Qi1rMQ0NfS0cl20nVS5NVqrknh1d80nCC09vxfiUN7ulBUX61TxVLHRwvVZHJsbrQQyTPf5bN+h7NFAyPyH7fu7yR0nxN3ab5V5jhTYZvtGsi090jjWRc35Z618hecILR2/F+I4Q2jt+L8SHnVOmD/1JuRSa4//AGM9dIcRWmiWqlu2m1HImTV16/sJMFsxJPTxzNvLUSRqORFz408B+Ypu9vrbM6GnqmSPV7V0WllQ3+1R0FPG+tjRzImtci56lyJldLyUdgzvsQoyDnK3GtrJ+4quDF96LWr6aRb+qZb5rzy8h0ntmJYKeSZ15aqRtVyoirxJ4C44Q2jt+L8ThXX61SW+oYytjVzonIia9a5EbZqhzkRzP/UlWGla1VR//sUtqhxFdqNKqK76DVcqZOXXq+wmR4avVVX0j6y5RzJFM1yIqrq1pnxHPCt3t9HZWw1FUyORHuXJS/pL/anVcLW1saqsjURNfKezSzse5GMyTuIY4qeSBFe/NU9Y9EW0W910S6LSx9Go3RSb95EyyyM9j7DVTfoKKop5oo229z5no/PNyalyTL6preI/TkIKqSGVsrVzbocmiqeStr6qpoX4uiney00rt6lo1+O9y5NzTi2vbx8RfUVWyuooaqNqtbMxHojtqZkvdEraaow7WWOGZr7lO2N0VMnxnIkjVVfI1fIVljhkp7HRwytVkjIWo5q8S5H1f/T9fUVrHySpZFXL4dSOREsTwAdNmQArb3e4LHSxzzxSSNkfoIjMs88s+M+bzeGW6J0ULo5K5Wo6KB21+v8A2XyFHQ0arUyXOduhUVKZyM4mr3in4nxRlIyyZuMJJGRNxO9wo7fOj0mucyVVSxeokXaichYAHz2WZ8rsT1upRyyuldicAAREQAAAAAAAAAAAAAAAIVbRPeq1FG9IKzUjZuNE4/wJoJI5HRORzVzJI5HRuxNO9gvSXBZKF6P6Jo2NbNI7LJ7tiqnhVC5Mlcbc2uSN+bkfAukxE41/8Qs7JfXVqJT3BsdNXOcujA3PNWomefr8h33C+Ktqm4H5OLyKZszbpr1QugAXpIAAMwAAMwUnwVYc/iWTyNHwVYc/iV/kaSwfLvxGU7r8Ji3MdiHBtDbMQW22W64PrG1q5KqImbVzyNFT7llmWBvRt6lpqjXpxua1Fbybe9kv2kOp/aDhzx7fbNfiPr9U/wBPsobMlVI2JsidTVioonTOh26+7+SiTc9sNqjdWR4ke7eE3xY10Ua/R15LrI8OEKTEbui5bnLTW5+eirMt60k1auLPad7r1orPEP8AZUl4V/ZXRfzD/bcYNme9iz3zTIlkp2RPbT6o74EX4LcOfxD+Cc4+C3Df8RfgnOSAQfiMpN+ExbqVtw3M7BSW6pqYsQOkfDE97WZN6pURVRClwngaC/W9tbWVUtLTq5zVlRqaKZd9TS3DrZVeJf6iTgn9ln/+l3tIbTKqR8Ln9UNSWijinbHriIablmHG60xLJnxamajnUYeooZUsVvujqmqVNNszFTfuVU1d4n8ZXYd/a5S/y7vYUjinfUOwqtrZk0tMyjbjTO+WfedW7l9jkaj6rEMrJ3JnI1yNza7jz17cz9+CvDn8SP8AI0s7j1zqvHP9akcjXiEqLYzbwuJyIt9SJ8FeHP4kf5GmYuWDqSHGlNYrfVvq454t802oirnk5cv8Jsiss/7XbV4mT/lyGxT1kkrlauymvVUMdOxHpnmh1h3K7GsTFqL9LDNl1catb1K8h9uwNYbDA6vbiF8zYdaxPRqNdnq1lvdeu9X41TPYo7HavwN9pCHtcj3cpeuRsdgiYznN6Je3xNTZYKeop45JXtp6RzM4pU1Nd4PxLPoKz91I/KhS0X7NrD9RPeQjafxarpl5TX3RDXj4bT1TecqWvsafoKzd1I/KhX39bda7HV11LXRzzQR6TI9JOqUqCtxF1grPF+8yj45WOejVd1MpeDU7GK5OiF7hiVbvboK64J0JDMxVR/7qrnlln9i+QvOgbN3VZ5UKKz/stsv13e08ins/GKyKRWo+5FTcLp6iNH2sTXzwTXee326RtXJCmkqMXNctWvV4ULlKK0ZdVc2IvGmaavxMfufftTu38kvtRE6X9a/6ymUvFayJGrjviS/QQ8Ppp3OZhthy8TR9A2juq3yoOgbP3Wb5UMyCD8drfWNj8DpznUXR640lsVBG2qibGj0kauar1KKvrNS2htOgm+XNrH5dU3NNSmJwn+1x/wDLL7CFrVfKpfrr6zZn4vWMRrkdqhqU/DYJXPjVPNXUs7w602yhWpbc43LpI3JzkTaVFnwnSLJUVtxuEjG1Ktkp1lRMslzXqc+LWn4FBjPrA7xjTaXHscsH8o32GGtNW1FRBjkddNuhm7h1Nzeyq3JU16/eR98HbJ3ab/hPzg7Ze7af4SmBU81vqnv/AE3QbH1iqlt1jsUtfRV7KqZjmokWaa81RPedbJaIq+ghq7jO6jZPCySNXJqdpJnqzM7i/scn+sz2kNjL2FYd/kYv+Ww2kRiwczDmimmvBKJtRycGSp3nRMPWRE68N8qFJDSU9Xc56OiqEqEgflIrNei3PLNeQ+syJuddlWJfFr7SmMLGzouVrGc/BaGmsuC98s7/AMmj4O2Xu2n+EcHbL3bT/CU4IOa31UNj/pqh2Ljg7Ze7af4TLUiyV2KrhaKRizQ0etJma9JM0TNfKWJF3O+z6/fyq+002adrJsSK22RqVPBKKnwuRl7qaLg7ZO7af4StvdFZ7VTRzNu7H6b9HJypyHAzWOetcHjfcpHDhmejMNrk03AaGCNZMN7dDb0eHqZWO6Z1jqKTPqWPREzTl1kjg9ZO7af4Tti/rjD4v3mfMHubG5W4b2Mov9P0MzEkw2v0Lng7ZO7aeVpn8ZsocOWiKsoK1tZI+dI3MVU1IrXLnq8CeU7mdxx1jj/mG+y4lp3MklRqt1I6n/T9FFE56N0Nhb7BTyQadyq3UblyVjXIiaSZbdZM4O2Xu17J94k+LQ+IKQjkVsblbhuSRcAoZmJJhtc+KCkguVVI2lqN+ghkRs0jNaMTPav2IpdJhyyonXpF80z+5j1rxV4U9TySSTsbA7Da5FT8GoapFXl4bbX/AJLjg7Zu7Kf4T84O2buyn+EpwQc1vqIbH/TVDsVtiWW9XS5UzI13ihnRiys19SquTSXk1NNUuHrIq9ecu9m0z+5h+sxf4Wf/AHSQbNS1kL8m6mpScEop2rdlrHW8Udqt8tLFT3Jkr6hytRqqmarqyRPKTqXD9DvP/wAQrVpZs/1b0yXLlMZf+yPDv82ntsNzirr076jfUYuY1sSS216GbeDULplp+Xp1zv8AM/OD1k7sp+A4PWTuyn4FODX5jfVNj/puh2IeLehbC+3tt9SlYtXKrHJ83Zls8JfUmHaLev8A4hXOpJs/1b0TZymLxP1ws38z72m8xV13/wD6095tPaxIWyYTVbwSiWodBh2zONRhqwyRO0rw1cmqqfFKjB9CxKNUZWvqaRZl3yqVc0jXRTVn5PKfs/6iT6q+o+dzf9mdz/nnezET0dRIxjpIlw226k7uF0lK9sTWXR3jl93NV0DaF/8A3VnlQ/OgbP3WZ5UMyCX8erfWNz8EpzTdAWjuszyoZbCF0nxJA+pnp0ggjl0JJGa0bqRc1VfCfZw3MOwK8/zH+lpsxcXrJY3ritaxpz8NghkY218V/oa7oGz91WeVCkxCyic5lrorjpT1bcmLG7q88+LIilSn7RsO/XX3kUXFqyoVY1fbJSafhlPTM5iJfxJDNzC0TNSS44gnjqna5GSI1XIvfzXPYfvwV4b/AIlk81he4g6+VPhT1IVppLXytXDsbDeGRPajr2uRPgrw5/Er/IwzeIcG0NtxBbbbbq91Y2tXJVREzaueWSGwKSo/aBh3x7PbQmp6ySV+Fe8gqaCOCPmJnoS6fcrs28s6NvUtNUfvxOa1Fbyfhkp3+D2wWuN9ZHiN6pAm+LEuijX6OvJdewvcR9fqn+n2UKG7daKz+Xk9lSLtsiv5a72Jk4fHg5qLbK9i4sMVNVQxyo5kVAueU7MtDPPYXPQVm7qx+VDO4S/ZPS+Pf7anI2n8Tq6VUiY/JCCKggrEWZyWVdjT9BWbuqzyoR7hDaqW21NTFco3vhhfI1madUqJmiFAR7j1sq/Ev9R43jlYrkTEZu4LTIiqTMJVkt+oW11ZH0LTq9zVlT4rctiZqaPoKzd1Y/KhmcE/srd/NO9pD5JajjFZDIrUfcgpeGU9RGj1S3Qsa2ejZeI7bQ1DKmaRmk1jVzcu1V1eBFUtIqK2rEzoivbFLoppsVUza7jQxFm/a9afFSf8p5e3HrnV+Pf7SnsnFayNrX473TuEXD6aWR0WG2HruX3QNm7qR+VB0FZu6jPKhlwQfjtb6xtfglMfl6ufQuMKGyW3RrI6mFHq9q5qjuq1eRqeU0lPQ29IWpV1rYZ8urjcqIrV5DD0v7VbH4tfVIaO9deqr6/uNmbi1YxjXo/VDTh4bTvkfEqaLqT7my0UNvlqUuUarGialcnLkR7SyCsjbUVMqQ0sjc45v3XeBTLYn7HavwJ60NDQ/s2sXi095inFax0Sy49OmRm7h9MyZIMN79epc9A2fuszyoOgbP3WZ5UM0CD8drPWNj8Epi1vy2612OrrqavjnmhjVzI8/jKRMMyreLbBX17eg4JmKqSfuqqLllmpR4h6w1niy6s37LbL9d3tPNlvFqx0CyY80U1H8Op46hIrXuhe9AWXuq3ytMvfqOnvNbJZKCtV8sStkzhXNypo8n9R9IQsFftarv5T3RkcfFKuqxMc+yW7iSfh9PSIkiJfOx2+Da0PjRs2KahFVMnsVW6l5Azc0skbdFmKZ2t4karURCZVfKpvGL6zkV/b5dLG5+FxrniU5fBvZv4sqPK0y0+GnrjOWw0NzqKqJkaPSVq5qvUoq7F75riBhT9rTv5V3sIbFPVPmVzVyyNaqo2U7WvRb5naDczsrI0V+JpoZXJ+kbk1FReRSLd8D2e10S1LcVzOycjclVE2/aXNd8un8Y71mbxl2Pv8Ywjjq5HyIxeuRLJQRxxrIi6Z2J1u3Pqeoi32tv1XSxva10LlyykReNM/s8pJ+DKxb5vnCqbT+d1OZfXDsaw//Jt9hhUnj6ySJys1PYqGOdiSaX6HH4N7N/F1R5UKrE+DLfZMPVVxpMSz1M0OhoxKqdVm9EXZ3lzLsp8WdjVX/R7bRFXPfI1qpqp5Nw5jI3ORy5IpKwxhy3Ulujrb9RSXBlZFG+Dfk1MzTNctfHmnkQuugME/w3H5P9z8r66lo8GYXSombHvlFEjc+P8ARsIZ5PUTRvVEXIypaWnnjRypn4kC0WaxYhv1xo6K2RwNolVyo/YqZ5ZJkpedA4J/hmPyf7lVua9mGI/qf6lJB7UyPhVMC6mNNFHUYkenm6WyJvQOCf4Zj8n+46BwT/DMfk/3IQNbts+5t/h9PsUFiw5QX/HV3pKalhipom6cUT88mpm1OLwms6AwT/DTPJ/uVe5t+0W+eIX2mikraauYslLM2VrVyVW8Sm5Uyyss5q6pmaFJBDK5zHpouRHxS7CFuoYZIMPpG50mSq1OLLwl4uFsNWRd4uVmhqpH9U1zE2Jsy1qYzHXWuDxvuU9Fxf8AL4fFe8xdK9IElutzNIWdoWnt5Px95W9AYI/huPyf7joDBH8Nx+T/AHIQNXtk+5ufh1NsU+PaXDkWHmutNnbSVG/tRZET93Jc02+AvqLC+HbTQU77paIat1TE17Fai6tWvavfMxjbrEnjm+pTaYhq6eCiscMszWyTUyJG1f3lyabvNkdTo9FzzNBaeJtVyreSqHDoDBH8Nx+T/cpMO2awX+SuqYbZGynt0iLKx+1zda5Jr5GqTjhuY9a8U+FPU8jglfM1yuXQzqYY6dWoxPO1vmWvQGCf4cZ/59o6AwT/AA4z/wA+0hA1u2zbm3+HU+xN6AwT/Dkf/n2mTwdhyhvF2vsklLE6mop2ubG7PUxXPXJPsaX5G3NHtjXF73rk1iMcq8iJvpuU00krHo5djRqqeKBzFYmty26AwT/DTPJ/uUuIFwrQ1FvbRWNKeWabRRzU480yXb3yTTVcFZDvtPKkjM8tJChxT1xsv8z72kUM0ssqRyLkT1FLDDCssaZp7UPTem/Sf+yVyPqJk6pXs2ZLs2jhZSdrTfgVuKevLvFtKY0n4WOVqNTLuQkjoYJGI9zc1L2ouGH6q5MuM9oV9Wxui2Vcs0TX3++pl8e3xjYLeloY+ie+dUkcmXVJlsJZm8Y/Ft/8wnuLCiq5klbGjrJshDWUEEcDnomafyejf2WyKtNcadKmV3Vo5vE1dWWvwKfL73ZUjdlbXpkirsTnIuMa2lixBBSPmak8sCOazjVM3cylNL+qf9VfUYvraqN2HGtjKGjppY+YqJfuP3DkNuxDTriaelSRlHKsCtk+OuSIuri/fL3o3DvchfInOZ/c2/Zpc/553sxHUxrHLHLZM/HMipaSCrZjlYl9NELvozDncdfw5x0ZhzuOvkTnKQGrz3bJ7jY/CKL1EIWA6d1xoK251qpPBS1Ko5jvjK3JFyTymp6Ow53Id5E5zNbnk0VPgO/TTPRkbKhVc5eLqWnanniqoGzQvR7HbFTjNurvHJ5KZeBo0NDSzx+WxLp3Ifd2udpmv1utdHQugfVuSNF1ZZquWa6y80LPak6Crrek9RF8eRuxc9acfIqGHqP2g4d/mGe0hsMSdfqn+j2EMZERsTZU1Ukjo6d87oHMTCncl+nX2kjo7Dvchfw5x0dh3uQv4c5Rg1uc/u9xt/g9F/tldiisgnxLYaK0xLRx1M6RytXLJ+b2onrU1u92m0/2Out6VE7NbpG7Fz1ptUwtx7N8M/z0f/MYa3EtbTLiiajSZvRCNaqx8fxUNyS/IZIiZ59CvjoqXtL4XMTD4IdbjcsPxWyqkbaVa5kL3IqImaKiL3yJh1lDWWeK/wA1MklG9XM3p3xs0XL3FXdutFZ4h/sqT8JfsnpvHv8A+YphGiPhWRUzQklo6eKZsTWJZ2uSFx0Zh3uQv4c46Mw73IX8OcowavPf3e43Pwii9QsrpXWJtorFgtaxypA9WP1dS7RXJdvKVGBqdJ8OMvVzRtVE2V7HMX4y8Sd7jPi5da6rxL/ZU6YSqYaTclfNUSJHGlU7Ny/WQ3YvzIXKqZouRoTUNLDOxqMSy65IaHo/Dvcf8E5zPTS2i447pKG32/oeqliXe5FTU3JrlX8EU+o5GSsbJG7SY9Ec1U40Ur7N+161eKk/5UhjSuV8iouVk6ZE1RRU9KxJIWJe9tENp0daqL+zVFC6WaLqXvTLJypx7R04sncx/wCHOVN1661XjVIgXiFU1VRHr7zabw6mc1HK3U0PTiydzH/hzmUutfLcd0O12+2SPpaaeDqo12K5NPXq7yJ5CUVVF+1ax+Ld6nmxS1tTI9Wueui9TUrKKCGNHsbndDbpW2y3/wBjqaF000Wp70yyVfKQrxf7PTWmomZbpGOazNFTLV+JAu1ZTTYiraaOZrpo39WzjQp8Q9YKv6hElbVcxI1etr/Am7HTclZUbna/tLEAFWW5QXKV8OOLBJHGsj2zNVGJ+91ewk32HFDsa1t1p7DWzwytY1rGtcrdTGpty5UOdT+0LDn8w32zeXm93Gku08EFRoRt0ck0Grl1KLxoW6SJHAxXJdFS1iidE+WqekeSot7+xDA1EmJJqaWKsw5VUlM9itlnc12UTVTW5dWxE1mos9LBR7nNJDTVKVEaVDspE4+qccr1frnUWK4Qy1Okx9LI1yaDdaK1e8ccKfsrof5l/tuMbsdTuWNLIZKkraljZVuu5+AAqi7I1x62VXiX+pSstKXat3KZLfbrfPMrqnSa+FFVdT0VdSFncetlV4l/qUn7n9VNR7mW/U79CRKl+S5Iv7ycpZ0i4YXO2Up69uOZrd0sZyndi2Cmih4K1z97YjdJWO15JlnsLPB9LJJjynrrii0Nekb06Ckbk7LQXJdev8C+4R3btr/LbzFBZ6qas3Y6aad+m/odyZ5ImyNeQlhfFI5cCWUhqY54405rsSaf5LS49c6vxz/WpGJNx651fjn+tSMVLvOUu4/MTwBS0c0lPup2yWGFZnthflGnH+jeXRWWX9r1p8TJ/wAqQ3KHN7k7lNDiOUSKu6EWpp8V0+JrnXR4frqiOplcrU0XaKJnnq1HxX9PKyikguliqLbRvy3yqkaujHr480Tj1beM3twv1zguE8UdTosY9Uamg3UnkM7i+93GqwtXQTVGnG9rUVNBqZ9UnIhsc6J8iIrfK0ua3IqWRKqO8m17d22hc7zFT4Ds0MMyTRsTJsifvbSrJtF+zexfVT3kI06xLSqb3D7LAioCuxD1grPF+8sSuxD1grPF+8ih9K3xQnn9C7wU4TxXq6bltnobdbamTep9NJIUVVcn6Tk8J8tnxY1qJwSrdSZfFd+U1eHK6ooNzOzS00mg9Vcirki6s38p9cJLv23/AJbeYsqiaJrsEjblNSwzubjhdh6e4q9zuk0cZVtbVPWCvlpHJNROTJ8XVs2+ROLjOsv61/1lI2BqiWr3WLxPO/SkfRKqrllnriJMv61/1lIK3RngbPD745L6/wDOZzABXlsU1iqJqbdRfLBAs7+h8tBPqIRKWlxZb6ytfwdrqlJ5Vemk12Sa12au+WmEv2uO/ll9hDUT4hujJ5Gtqcka9UT9G3mLiSRrI2o9LoqIc+yOSSd6xLZUVfiYS5R3W4UiwXm1TWil0kVamVq6KLxJry2m9vDWR2Kxxxv02tpkRrvnJosyUymPrxX1uGXw1E+mzfWLloNT1Iai5djmH/5NvsMI5FatMqsyTb3E0SSNq2tlzXf2KVAAKsuikxf2OT/WZ7SEi/xX+6YXwyy32mqeylpmdVCjl000GZZ5cuRHxf2OT/WZ7SG3huFVQYNw8tLLvauoYs+pRc/0beXwlrTP5dPjXov0KSsYslVgTVU/kxfROLP4RrPNdzFzufUccN0vNS+bRqpoM56VUydC7PWi+osuEd27b/y28xS4AmfPi/FMsi6T3xq5y5ZZrpKZwOiejuWlrGFS2dmHnOxXXLuO4AKcvgU+Eampp8a3zoWldUPkp3N0W7U1t1lwRdzpVbugX1U4qZfaab9F+/wKviKojWXS+f0KK00+LrZSOgdhqvnVXq7Scx2exEy2d4XSnuFxgZFfaGWywtdmyadq5Pd83Xlxa/sN3wju3bX+W3mMhujXStuFnpmVU2+NbPpImiia9FeRDYimhllTC2zl6mvJDUQwricitTobrF/XGLxfvKAv8X9cYvF+8oCuqPSqWlH6BoM7jjrFH/MN9lxojO456xM/mG+y4ko/1DTCu/TPLXGMeI7jcbTV0VlrHspoUzbG1yo7Xnr1ELonFv8ACdZ5rvynoV6udZQMo20s29o6FFVNFF4k5UKrhJdu2/8ALbzG1JNCi4ZG3VCvggqFbiidhRehBwBR09LZMQOhqkmkkaiysRP1a5O1evyHM4bmblfbcVucuaq7NV+x53Iq5LPRLk/DXI5rlRLH4ADQLQpsFT1rGYugoqN9Q6duh1GebVylRPWRLXBi620aU7sNV0+Squm5js/UX+5a90VRi2Ri5OY6NUXkX9KXPCS7dtf5beYu6iWNi4ZEui2+Rz1LFK/yolsqX+KmObTVldfLXJfKWSzugqWLTtmb+vXSbmiZ5bMm+cbbFXXp31G+oyGK7jV3DEmGeipd83ur6nqUTLN8eezwGvxV16d9RvqNefCtO1zdNtjZpsSVTmv85EzXfQpgAVhcGbxW5W1tociZqlRmicutpbYtixLVYvhulLY6ySKOBGb2xrlaq9UnJ3yrxR1ws38ynraek4hvFfQ3LeqafQZoIuWg1fWhbxyNjpmudmmafEopo3S1bmsyXJb+CHn7p8VKxyPwnVsaqa3aLtScuw0WDqOmodz+5RUtW2qYtUrle1Ni6Mer8E8p2nxFdlp5EWq/cX/028ngKvc3/ZpdP553sxHjFjfE9Y0tb4iVszJY0mXFdcu46gAqS9PwocHPuMu57eaG30M1Q+eVUR8WeaLk3VkngL4+NyqaSmwRd5onaMjKjNq5Z5dS0sqJbRvXa31KjiKXkjTe6fIoqBMW0VFHTLheul3tFTTcx2a68+Qn2WnqarGNqqbxA+1VEMn6GCVMllTlTPI03CS7dtf4G8xnqyvqa/dJw4+ql3xzXKidSicfeJYpIpJPIbZc8yGeKoii/MddqdPkX1/6+VP1k9SFcWN/6+VP1k9SFcVknnr4lzD6JvggKC4yPhxxYJI498e2Zqoz53VJqL8pKj9oOHPHs9tDZovTexTU4hlAq96fM632HFLsa1t1p7BWzxStY1rGtcrdTGpqXLlQ4zyYknp5Iq3DlVSUz2K2aoex2UTFTW5dWxE1/Yb693q4Ud3mggqNGNujkmg1cupReNCjvV/uc9jr4ZKnNklNI1yb21M0Vq942OdC56Nc3NMrmm2CpbGrmu8lc7EmyU0FJubQQ01Q2ojSZ2UicfVqQDphH9lFL49/tqczWrU/Nspt8OVFhuiWzBHuPWyq8S/1KSCPcetlV4l/qU1o/PTxN5/mqVVpS7Vu5RJb7dQTzOdU6SPhRVXU5FXYftNJiynpYoOCla/e2I3SVrteSZZ7DRYAqZqPcx36nfoPSpciLki/vJyk3hHdu2k9EzmLaomia5WSJfO5Q0kMz244Vw9CgwrSyz4/t9dco3W+ua2RG0UjcnObvb+q15LxrxcRa3HrnV+Pf7SlVQVc9buyWiaofpv3h6Z5ImrepOQtbj1zq/HP9pSCrty2KmhtUN+e9Hapr395GABWlsUiyyQbpVnlhhWaRsS5MTavxz8uMGKYsW3C4x2CunineuizRdops1pqO9J+1Wx+LX1PNndb7cqa5zww1OixrskTQavrQuVkbHC1XJdFS1ig5b5Kh/LWyot7mBrVvlbRyU90sdRbqNyJvtVI1dGNM9SrmiceSfabVsMdPgSzwwzJNGxqI2RNjtpSYwvlxqsLVsM9Rpxva1HN0Gpn1SciFpb/ANm9i8XzkSqx1O5zEsmxIiSNqmNlzXfu2IIAKsuyuxD1hrPFnCeK9XTcts9DbrbUyb1NppJCiqrk/ScnhO+IesNZ4s0OHK6poNzKzSU0m9ucrmquii6tJ/KWtK/BBi2X6FLXMx1CM3T6mWbUYsaxG8E6zUnzXflLXAdIq43lrqxVpbhJTOSWhenVRp1OSr4URF2cZb8I7t23/ls5ikwnUzVe7DXzzv05HUmt2SJnk2NOIzp3xPcvLSy2+0I6ps8bEWZ2JL+5dybVfK5vrr6zkdar5XN9dfWcioXUvW6ICnsVRNTbqL5YKdZ3pTqmgn1ULggYT/a47+Wd7KG7Q5vd4KV3El/Laq+sn1KxlLiuhu9ymbh2vqGVM7ntzjdk3qnLq1d/8D5uUd2r6RYL1ap7RSK5FWpmYuii8Sa0Tab2qxBdI6uZjanJrXuRE0G7M/AZXHt4rq3DL4aifTZvrFy0UTj7yGy2aGSVPJs7c1VgqYoVu7yU6GsvDGR2Oxxxv02NpkRrvnJos1lKW1x7G8P/AMm32GFSaFT6VSxovQN++p+FPizsaq/6PbaXBT4s7Gqv+j22mNP6ZnihJU+gf4L8i1qsMXfGWF8Px0280SW+lj0HzaX6XNjclTJP7v4nz8HeNP4hovIv5S5m7DMOfyUf/LYVpvzVWBysc29t/wDgqoKNZGJI1ytvt3e064AZT01+vVA6PO4U7NCqnReplcjtap9veQ4Ebc27L8R/U/1KSSKuSytJ+HKq47/eoABXlqVeCYaybH15SinbC9IlVVdxppNO9HuW4qt8ax0l8oomOXNURHbfNOu5t+0W9/y6+00klxNNykTK90T4FBBTrUPfZ1sKr8VKPEOH6/DVLFU4nqornTSyaEccOaK1+WeexOJFN1i/rhB4r3nnWO+tcHjfcp6Li/rhB4r3kUzkfTo+1rksDVZV8tVvbr10KAAFYXRn8bdYk8c31KaK74Hv+Iaaz1UV0pmOpYEWNZM825o1eJO8Z3G3WJPHN9Sm6vnW2z/yrfZaW0T+XTI/a5TVEfNq1jva6J8DP/B5jP8AiCj8i/lJeA5KJ1nxDFSwLHLEiMncv77kR+tPxORH3MetWKfCnqeexSJKxy2tbYhqIXwOaiuxX3JAAKgvwVWA7fcLnJimloalkG+q2N+nsXS31E4vCWpw3Mf1mLv6P/ulhReY/wBnzKriN0WP2nKk3McW0MG8017oo4889FNL8pFuVkq8N19udiaojuXRE6Npt5zTe3IqZqupOVPIW5nMUdcrL/NJ62k0NQk0uFW2v16kE9K6niV6Pvbp0N1inry7xbSnLnFPXl3i2lMV03pFLan9C3wBm8Z56FAibd/1fgaQzeMvi2/+Y5iWi/UNIeIfpnffU1WJMA4ivd7gukV1pWSwQpG1z880yVy8Tcv3iE/c/wAYsjc6S/0bmNaquREXWnH+6aPFqr01Zl9CnrUoZdcT8/mr6jZfVYXYFbexpRUbns5iPtfon/JLwbNQT7n9xfb6d0ESVaorXLnm7Rj17V4siMctzb9mlz/nnezEdSKvRGy2Qn4a5XRKq7gAGiWRVYIstxvuELxQ0VVHDHPUKxzX55KuSd4l025ni+jgbBBfaNkbPitRHav8J13Nuwq+fzK+y06l1Uz8p+G1755nPUlMs7MSOw2yy95Agtc2HsY2amv8rLhWTzNWnlhzRIuq49nHrNHiTr9U/wBHsIY+f9oOHf5hntIbDEnX6p/o9hDXqVR0DXIlr/5NqkRW1LmKt7Jr7irABWluZ68Ne7F+HmxO0ZFq2Ix3IumzJTR3nc7xJcMQyXiC70kUsjUbpOR2eSIifNy4jPXLs3w1/Ox/8xhtcTde5fqt9lC2STlU7HWvqnxKJ0POq3svbRfgZ6swPiigoqituF6paijp4nSzxNRUV8aJm5qdSmtUzQurLLSTbmsD6GB0MKzuyY5dnVqU116z1viH+ypOwl+yil8e/wBtRjSWBzkSx6sboahjFdivnmcwAVJeEe5da6rxL/ZUi4Yw3dMSbmq0NLWwxQyVCroSZ5Zo5F4k7xKuXWuq8S/2VJOCf2Wf/wCp3tIWdKuGBztluVFcmKdjN0sRotzfGMMTIo7/AETWMajWpkupE/pPqwUDrHui2+23hzay6OY+RlTHnooxY36stXIvFxncrLN+1+0+Jk/5UhLBOkzlTDbK+RBU0zqePFjv0spfXbrtVeMUhky7ddqrxikMqn+cpdx+Y3wBSaM790qzNp5EjlWNdFy8Wp5dlVR/tVsXi19Tzbok/MXwU0uJLaFF70LKt3NsTy3yrudNd6SN9S7Nyqjs8vNIdzwbiO022evu92p6uhgbpTQsRUc9vInUp6y9vPXiq8YUGIesFZ9QmSpRZEYre6/U1exubEsiP77dN9ybBU09SirTzxzI3UqxuR2XkOhzrMJVNQ5q4FbDQUyJlUNnerlc/iVNLS4igxHbsaYWt7K6419MsUkqRIkSNcukqKvzU+apH2HGt43JYmXiSMykaqL1LPDNG3E1SuJHv6HfZJkVsKJpJLl1W3VlsLm4Vi19dJVKzQV+XU555ZIie4k1FvpcNUzKW0RdDRV0enUN0lfprlt6pVy+wrTCrkS/LbohnQxrZZn5q4i3TrTW/wAvJ7KlNYb/AH9mEae10OGautp45HPbUxRvc1yq5VVNTVTjy2lzdOtFb/LyeypZYKraih3MKKWmk0H7/ImeSL++7lJ6VWpTuVyXS5r1yOdUsRi2UrIrlSSaDFqoGzOyRYt8TSR3Jly8RLOsuH8J1DZH0FtfHd5EVYJnyyaLZ1TqXKmkqZaWS7PsK7gTuh90aHyp+Qw7KyTOJ3vJUr3R5TMVPAjXivWGqorbvebbk9YFfn8TNWtzy4/jGjjoW4VsrsNsk6IZp77vyporrXPLLXycpRYJt/TypvLr+1Kqrsb2LTPaugkb835r1OWlrY3bnsLWrq562dZqh+m9UyzyRPUJv+3iSJNV1MYF7VOsv7U0OJmluVZad0SKsoLfJcJ2QqjYI0VXOzYqKupFXV4DSldh39rtN/Lv/wCWp5QZSLfZTPinoU8UP1l6rZ6uea9WySzJK5XR9FZxo9VXNURXImeWomwzw1DNOCaOVueWkxyOT8C3ujbTeq6eDElO+sippHJTNa5WaGvJfiqmexNpTVWELrPLpYKfBQ2zLJYp3qrt8416pHLsy4zJYYpVvGtl26EbamaBqJK27d0OjnaLHOy2JmRsJ0iXHe8dK/QkonugSkyzR+bdHPS4v1nJxFNf6HGGGkpXXSvp3xVUu9okSNVe/wDuoba4UVPh1jrNao+h6CREldDmrs3Z7c3Zr+6nGZJEtKxzlzVcksYOmSskaxuSJmt/vxIVVOtTVyzq3RWRyuy5ClxR2OVf1U9pC1KrFHY5WfVb7SGjCt5mr3p8yznREgcibL8iPQYixHJhe32+mwnW1EFM3qKiOORzZE18jcvxLSO40M0iRxVkD3rsa2RFVfxL2y11TQbndjfTSaDnMRFXRRdWvlKyfC+GpYXMwzblpbuvyaaWZ6tavHmjnKmzPiUsahsMkiouS/MqKWSeGJHImJvysfJVV8q3C9UmHFTQbcU0Vm2qzWvFx7OUkcC90PuhQ+Vv5D9wJDFebNV4huDN+udvm0aafPR3tMkX4qZNXau1FMY6TlLzHqiomxJNXpM3lxoqKu5dTRdJ7RBhtF31tC7VMqZK7PNdnF8bl4iAdaiolqpnTTO0pH61dkiZ+Q5FdLIr3q5S1hiSJiNQzdovNwsmPblU220S3SZ8GgsMSOVWt6hdLqUXjRE+0s6a7VC74t5pFtEiuzZHU5xq9OVEciajvufftQu38ivtRF1Vw2O+y75iakkrJoVVkLmuczRbydSqZlrNylYxsmyZlHAs7ZZHRZ56b5qV0Usc8aSRSNkYuxzVzRT4q5uhqOadE0t6jc/LlyTM+KnB+IZp3PwrNTUlnX5PDK/NzfnZq5HL8bSXaVFVb8S2jENntV+qoJqe51DYnsiy6piua1yKqNRUzR3Ea7aFXORWuRU+htu4m1rVRWqjvqXWEqNFjjx3p/pJUdB0JlqTJdHPS+zkJEj98kc/LLScqk+408Vk0rJbmbzQR5ObDnpZKuteqXNdq8pXEFVJifhTRMjYoYlazG7znZlDjPsff4xpJ4SYhq7dbIZMLVkNJSwtb0Vvb9FWaKdWq6OSJkme0i4z7H3+MabyarfDhmyU6uXoepomMnbl8Zmg1FTPi1Kuw3IVYlL5aXS5pVKSLWpy1stv5MzFcKOeRI4ayCR67GskRVJB+1WGLFNAseEaDoO7Kv6KaaV7mon72pyuTZnxFZV4U3QKKjnqprhRb3BG6R+WjnkiZr+4Q9ja/OJ2XeTfiCx5TMVF7jnJBwlxC3Cr3dDtmZvi1CdUqaKaWWj9nKaSsnWKhpbPlmltYlOkmfx0aiNzy4vildg6nimww3FUjc7wyV0TanNUybnllo/F2KvEdpJHTSPkeubnqrnL31PKleUxIU9vie0iLPItQ7wTuPgzNhvVzs2J72tss010dPmx7IWuVWJnt1IppiNubvVmLsSOauSpHmnnGdBby77HnFLq1ltyPSXVyQ5XaHpXUZ6oKhdB2jxLk7JctvkLBj2SMR8bmuY5M0c1c0UmTUeG74/ovEdE+rrctBJGvczJibEya5E414islwbi+WVz7FV0kFscqrSxyORXMj/dRc2quzvqeLTxTZxLZdlHa5YMp23706nxda1bdbZqtGaaxonU55Z68ibhmg6UUyYtbJvkl4h0XU6pkkWa56l4/i8iFFT2y8x41t+GsTTxVVPWN05IoskRzcnZdUiIqa28Rqbh/Yk6UU/6OipF0YYtuinhXWv2qZqzssS+svVNiNJErZkt5qaopBMzjrrVD433KaYzOOutUHjvcprUfp2m7X/pnF3XYnv1zrYprhhart1MxujJPKyRGMTlVVaiIdIa6jqH6EFVDK7LPJj0VTYYnqI3Tx2+tRX2+eP9PEiZK5PDtT7FMrWYWts8TWYIpW0Nx085JKiRzmrFkuadUrkzz0eLiNmVkMr1stnfA0YJ54I0VUxN+R+lVBQJja+1OG5JVpGUjOiN+a3TV2WimWWrL4/LxHzdcOY7s9sqLjU3CjWGnZpvRmiq5d7qC8w7TRUWFaHE9O3Qu9cjo6iozz025rq0V6lPiN2JxHsVP2e8r1vbbcxmq0qrQx3S++xKulwWtdE1Y9DeGaG3PPvkA/XLmqqvGfhWOcrlupdMYjG4WmXwpfbtamXqmtlhqLo2qfoyPha5d6+MibGry/gXFNdWpCnTRrbdVZrpU07tB7U4tTsl1pr2ErcskfDRYmljXRex7XNXv5PLCa3YVvMi11+t8lVXyanytke1FRNSamuRNmXEXNSkLnI2TLvOfo1nY1XR5psRWqjmo5q5ouxSvvdydabctW2JJcnImiq5bTq7BeOtJVo66iZTKv6FqqmaM4k+JyZESzWqurMbuwxip8dZE2FZXxxrotVckVvVNRq8Zrx0K4rqqKhtycTbgVGoqL0L6x2xMK26WtZKtQt/ibK5qt0d51KuSbc/1ne2Ecl108iubR6X6CkVY4W5fFampEz2rqRNpENSolWSRV6G7SQpFGm66mYxZNJTXWyTxRLNJFOr2xpteqOYqJ9pd1WIr1cbn0VdcO1NqplaiOmna5rGrlq1uaia11FXfuyPDn82ntsPQsSvpqqufa7tG6e2Oa1z4W9SqrtRc0yXaicZvosfZWJImt/ZmVj0l7a9Y9U+OSZGYgrKaqVUp6iKVW7d7ejsvIdj4q8JsqEbwEhZb5E+VLUSOdpp+7lpaX97k2lNe7FjmwWia6VtwpFgg0dLe9FXa3I1NWhyqhAlFjW8bkt3mx+JIxLStVFJNstiYxvNVE+XoXpI9JGq1unvuvZxZfF/EvrpcHXKr6IdHoLoo3LPM+bVTxWrDdBdaJm9Vt2ga6slzV2+rlnsXUm1diIRTCqdhtE3RDOhar1Wd2qnxN+ok+ovqM1hG/XqiwvV2y24dqbjDNUK91RCx7kY7JvU6mr81PKaWb9RJ9RfUfe5fPJS7ndynhdoyMrnK12WeXURk1ErUikVyXTL6kPEUcssSNWy5/Qgw3SBIW9GyRUdR/6kE0iNfGvIqLkqE4ky2jBtylWsu1rlnrpuqmkSV7dJ3LkjkRPsQqeBW6H3RofKn5DDsscucTveSdtkhynavdbqR79d3WWkjmbCkqvfo5K7I0VHZ24ItdRZY5lrG1q76sit0FbqRMsteewoMJ2d99xVcbDitG1qUESuRrHKxEfpNTNFboqupS6q62prpEkqZd8c1MkXJE1fYZSp2aLAmq6mEK9sn5n7W9FI5nLzWVFvxfZ6ykpHVc8ObmQMRVWRc9iZIqmj4yp//kbD31yKh9N7FNjiP6dfZ8zu++3OsuM1VebNPZ4ZPiyVKOYxXaupRXIiZ5Iq/YpKgqaepRVp545kTasbkdl5DQX5aC6XKa3X6J1Vb4Xo+KJqq3Rflki5tVF2K7j4ygrMJ1E72rgVIaGmRMqhtRIqq5/EqaWlxEr4oZnLgWztuhrx1E9O1OY27dzoQcO0SYjrn4hfJvDrHOmjCiaSS5dVt4tnfKzEVsxrhm2pX19wpVhWRI/0SNcua5/3U5DYrRU1gtcEdsj3htxgbLUpmrt8cqJr6rPLbxZGbYezNWRy3XpYwfUJWPbEzJOtzjcKxbhWyVTmIxX5dSi55ZIie4qrr1prP5eT2VJZEuvWms/l5PZUr41vKiruWr2o2JUTYqLBiC/R4PhtVDhirrKdsjnJUxRvcjuqVVTU1U720tornSOaxktTDHOup8LpE0mO42qm3NF1Ftgernoty+mlp36D9+emeSL++vKc5rDhKsbJNDbXpdpkVzJnSyI3fl2Oy0sstLXsy7xaVCQPkwuyUpKN88UWJiYm/I4lVea50NTRW1I80uT1gWTPXHmrW55cfxvwJPArdE7oUPlb+Q+ME0CXyovLr+1tXV2R7FpntVWpG/N+apo5I7Wxu3PYRRUasdjeqKibE83EWyMwMRUVdy8ZQtwrZVw2x61DdPfd+VNFda55Za+TlIZ1qqqatnWaok035ZZ5InqORoSyLI9XKWVPCkMaMQzM9xq7VuhUNbQ0ElfURQu0KeNFVz82vRdiKupFVdnEWkd5rpquea9WySzpK9Xx9FZsR+a60TSRM8tXlPmz/tdtPiZP+VIae6stN6rZoMSU76yGmlelOjVVmhr1/FVM9ibS0k5SwsbJtqVDFmSpkdFnZdNyohnhqGacErJW55aTHI5PwPp7tBiu5EzOVXhC6TzaeCnQUNsyyWKd6q7fONc3I5cssuMob/QYvwylK66V1O+Kql3tEhRq+HPqUNdKFXLdjksbK8Ta1LPaqKW+E6Tp2rcbOkWKS2TLA2lRM0emimvS4v1nJxFpW1K1lZJUK3R3xc8s88ibcaCmwyjrRZ4+hqGZN+ki0lfpPVcs83ZqmpqcfEVakdXIiuwN0QloYlRvNf5ylVijscq/A32kOFBiLEcmF6C302FK2ogp29RURxyKkia9epvvO+KOxyr8DfaQ1Vmrqmg3OrJJTSb250aIq6KLq18psU7mNpnK9Lpf+DVrGvdVtRi2W31UoY7jQSvRkdbTve5ckakrVVSSfc+GMKyQPZh+2Op7qqf2WWSaRWtf383Kn4KV/ArdE7fofK38hEtG1+cTsu8m7e6PKZiovd/kjV0i3C90mHFTQZcE0Vm26G3i49nKaSWLpNZ4MNtVZWUK6p11K7PNdnF8blKXAdPFeLLVYhrm79dLfNo00+at3tNFF+KnUrtXahYTzyVMzppn6b3bVyyPaj8mNIU16mNN/wBzKs66Jp3HMzVDdq+zbolbVW21y3KdYEZvESOVclazXqRf/FNKQ8Fftbrf5T/TGY8Pykd4fwZcU9E3x+inKnu9U+SV96oHWdznZxNqs41enHlpImeWryk+KWOaNJIpGyMdscxc0X7Szr4rLfal/CWmfWOp3K2DRc5miirr+KqZ7E25lNU4PxDNO6TCs1NSWdfk8Mr83N+dmrkcvxtJdpksEU3o1suymKVU0CWmbdN0Purn6Go56hG6SxRufly5JmfuE6NFjjx3pfpJUdB0JlqTXo56X2Z7CkqrfiS04itFqv1VDNT3OoZE9kWXVMVzWuRVRqKmaO4jY3GmisqrZLc3eKCLJzYc1dkq611rmu1eUz5fZY1cuq9UI1lStmRieamaopAmk32eSTLLTcrsvCZ7GfY+/wAY31l8UOM+x9/jG+s1Kb07fEsatLU7/AlriTENZbrZDJharhpaSFreit7foqzRb1aro5ImTc9pMiuFFO9I4auCR67GskRVU009U+HDVkp3O/s1RRMZUNy+OzQaipnxalXYUVVhexSwLHhGh6Du6r+hlmle5qJ+9qcrk2Z8RuzMhlkVNHfMrKeWeGJFtib8j5KqoZ0+xBDhVy7yytYrlqE6pWaKK/4vH8TLbxnWfCO6DT08k8lxodCNqudlo55ImfzCVgmnirMNPxVUM07xSzuiiqc1TRaui3LRTqV1PdtTjMY6bk3keqLbbcymrUqESKNFRV3LOsmWKjo7QmtlsZ0Okn0miiNzy4vikM+pJHSyOkeub3uVzl5VU4T1ENJC6eokSONu1y8XEV73LI+/VS2jY2KNE6IZ7DtvxHcMV3mPDlxhopUVd+WXY5uls+K4mV9VU4NmS3Yhm6Kq5G782SmTSboKqoiLno682rxE7cvljnxXiCaJyOY+LNrk400i7orw+iidH0PDNm7S0pUzVO8XFRJG2zJUyt7SipmTOc98K539nUqqWoZV0sdRGioyVqOajtuREv8AUS0lkqZ4HaEjETRcnFrQn1OB8O3eokuFRe6mnmqXLJJDGrUaxV2omrYVNFZKCxbqNmoaCtkraaSNZHLLkvVKkiZak5EQ14qWNXYmvv1sbEtdKjFa5lul+80Fkp4rfha3X2kYkVyr48qmoTWsm1daLq4k2IRydedV1qGJqaj9ScSEE06iTHIqlhSQ8uJN1MxjvrVB433KX1zsWNbdE68X29UlXS0jdKWOJV03N5ETQROPlM1jaup5KaOlZKizRy5uYm1NR6liaodS3emlaiO0Y/iu2LrXaWDXJHStxpkVcjVkrVwLmYW1Yjo7xUOgpo5kcxmmqvaiJlmicvfLYm3KKjxbTNt9ye23wxvSVJadERyuRFTLXnqycvkM/esBYet1lrKulv1XLPDC58cbnNycqJs1IQdngkW7HW7jYWrqIUtIy/eh9WGmhv8Aj+ps10YlTQRwb42FdSI7JmvNMl41LmsqJZZEhe/NkCqyNvzUTi/A+MNJluW2uZERJFkkRX5a1/SycZxMKt2G0SdPiZ0DeYrp16r7gZrB9pxRdHXduHrpT0cW+o2obMq9XnpZfuu75f1VZT0UW+1MqRszyzXlPncvejrVilzHalycip9V5LQ3ax7rbEHE7K5jb5lXWXZ2Fql1ovb31NbDk58lOmkxUcmaZKuS7F5C6hlbUQRzMz0ZGo5M9uvWWtJfH0lO2FKWCTL96RualXLgDDddM+slvtVFJUOWR8bFbkxV1qiathjhp5s0XCvUl5lVT5OTEnQqMUVlRQ2d01NIsciPamkiJsNPFR09ksdBU22JKeW6UzX1jk1767RRc1z2fHdsy2lBhS1Udq3V1ttLUvrKVlMrmvlyXSzai8hb1qqtbOmepJHZJya1Mp0SnhwIt79SOB3aqjG5LYehxMvjBsr57W2ByNlWZUY5eJ2bclNQZXENZTVF3tUUMzXviqkR7U/dXSbzENCirOip95G1xFUSmci93zQvrrasW2Bi3zEl2pq2liya9kCqr1z1Jkisam1U4zhar9SXh0jaZsrViRFdvjUTb4FXkNnfat9Hf99RjZNGNOofraurkKq52+3YvbHHc6jpalMqqxaZEbp57c80XZl+JNIsErla7J25qRJUwMRzfKbrbqQyDhCjp8R4lvFLd40qoaJNOnY5VTe10ss9WX4kLFOCrHZsPVVwob3VVFRFoaEb3Nydm9EXYnIqqauBGtwHYpGtRHup2aTk2r1KbTNkbadjpGriMJJ3VT2wqmEjVVXPWyJJUSLI9EyRVRNhFl/VP+qvqOhEr62mooFdUzNjR6Kjc+Ncirbdzt1LpcLGbIU2CLJi+7YdqEsd2pqShWpVskUyqiufotVV+IvFo8fEdajEUNinfarmss1ZSroSyRNRWuXvKuXqQu9zZVbuaXNUVU/trvZjLiC/Pgp2RdB08mimWk9uaqXNVJDzMMqHP0Uc/Lxwr3WKopMWV1TQWlk1LKsUizNbmiJsyXmLb4N8LfxJW+c38pxwDbqW37pt0t1PO6rpYKN29vlyVV6qLXycakUNLGjsSOxW6WJ566RWK1WK2/W5e1lHT2CmZR2uJKanq4kkmY1VVHOXVnr8CFafUrlWV2a59Up8ldLIsj1cpawRJFGjTM3yKsnxXZ4rdM2Gre9EhkfsY/S1KupfUXF2oMS4aRbzie5wVsEjki0afW/SVNS5K1qZZN5SqbWU1bugWBaaZsiNqmI7LiXSQ9Autc+ixHUyJGyVMmpoSa0+K0tFe2OnY2RuS/5KdGukq3uidmn+DKWm8U14ikkpmyIka5Lpoie8nne5WW04vkZPc611tdTpoMbTIjUei681zRTKYywjZsP2VtZbLxU1UyzNZoPcmWSouvUichrtpoZV8h9r9DZWtmhS0kd7dS2wNTQ3uO73C5M6IqbXI19HIq5LEvVLmmW3W1Nuewsp6marlWad+m9drizu7WxWy1b21GadMmlo6s9SbSnIqyS78KZIhLQRWZzFW6qRbr1nrfEP9lSuwrh7Gt3wrD0qvFLBbnPdoQSquaKjlz2MXjz4yVfK6lpbZURTzNY+WF6MRf3lyLbCDlbuUUqtXJd/f7amzSqrKZzlTqata1JKpjEXP5GdZiikp6xLbUNmdVRybxI9rU0Vei6Kqi57M+8XxZrdkqqRaCangZHLHvLpUb1TUVMlXPlKf4NsL/xJW+c38pHy6eXNrsJLz6qHKRuLwKu91ErLnaKRr1SGrqUimb89qq1FT8VNXc6WKyOdZ7cxKehyR+8prTSXWq5rrKHc7pIae7YrpWPWeKlzZDJJrXJHPRF8OpCaqq5c1VVXvipTkxpEnvPKRe0TOmd7tvux+GaqKe6VW6HQw2WqZS17oV3qWT4reocq56l/dzTYaRzka1XOXJqJmq8hTYdrKet3WrTLTStlZvUiZp4qQx4ffmKvcZ8UVOSid6He5w3zCLkrcUV0VcyrcrWdDa1R21VXNrTtarrT3eldUU7Xoxr1Zk9MlzyRfeaOe4voLvVqkbJkc9UylTNE18RXXLD9nxbUtr7lXvt00bEiSOnyRrmoqrpa025uVPsM3ciZVv5LiNnaadqL5zfjmR5VVsT1TiQ44EgjuOGKnEdW3fbrRVLo4KldSsbos1ZJq/fdxcZQ4twza8OpQS2y61FW6afRe17k1J9iHoOKkSO5sZGiMasSLk1Mk2qZ4Ep4lc1b36kfNdVztY5MNum5TySvnkdLK7Se7WqlXiHrBWfULLIpsTV1LDaainkma2WSPqWca6zQgRXSttuWlQqNhdfZfkfDLvi2NFRmE7m3PkhlT/Sfk1FiHFkfQFws1xoIo131JJIJFRVTVlrRPnfgbLhNdPpmejQcJrp9Mz0aG4lRTtzY2yletNVuye5FT77it3Rb5LZq610kNH0S+WDUmlkuaassslM7HdsSTMR8WEq6Ri7HNhkVF+1Gkm+VU13x9h1la5Ho6VrV0URurSTkNlXXKqs9a+gonoyCLLRarUXLNM11r31UkfyUa2RzL3IYkqcSwsfZW+6x5pc6PEl8qaZk9iuVBAi6Mr1gk0Uaqpmq5ompDSsmrrLg+CzW63y3OSKZX/omKrlRVVVXRRF2ZlpdcTXTpTWfpm/qH/uJ81T4wpWTLgqlveknR0sz43SZalbpLxbOJD3mYo7sSzE1Q95To5LSLeR2imaS54pbkrcI3BFRc9UEn5Tp07xh/C919HL+U13Ca6fTM9Gh+8J7p9Mz0aEPOpPU+ZOsFd66fD+CHhC0VNhtGIblUxzNkqqdJ1jljVmSo2Rypr27THUmJrvcERaLD01Si7N5Rz/U02V1xFcprNWxvlboup5EVNBPmqQtz+NtHgJLrB1NU2oe1HLrTLNE2bCfFHLGsjkvY1lZLBKjGrhxbZ5+0oKiuxTNBJEmEbkzTardJKeXVn/SdMF2qtst1hvVwiqI6mNHt6HqI1Y7JUyRdevj5DZ8Jrp9Mz0aFHQ3WrvW6VDba56PpnxKqtRqN2MVU1oYsla9qsp0wqZSRPY5JKtcSae34EC4XXEclxqZIMJ10sT5XOZIyGRUcmepUXR1nJl5xaxMmYTubU70Mqf6TZz3yvo6iSlgka2KByxsTQRcmouSHPhLdPpm+jQi5tMmrMyVIaxU8l+X33GQ6X3/ABXNFFcbTX0DKZ6SNdJDIqOXPvohbboOIam34rjoKagWpe+na9Ea5c11u4kTvF1wlun0zfRoZhsjr1uuWxK5d80oHNXLqdSRyKmwmifFLdiJkiXRCCaOeC0jlzvZVTX3aEJt2xNIxHMwlXua7Y5sUiov+Era62Ygv1yiWss1wt1No6L3up36Ddq5rmiJtPS6m9V1vqZKOnlRsULlYxFai5IhT4lxRdm4fq1SdvxU/cT5yGLJoWutG2ztCSSCoe3FI+7NfYRquuuFDhi32m3Wma4upFyXemOc5U168kRctpUtueKWuRzcIXFqpxpBJ+U11nqZKTCFsu8SolXVs/SvVM0XbxbE2IdOE11+nTzG8xg58bFtM27tzJjJpEvTLZm33cyHTzGP8LXX0cv5TQWe1S4O3P7097ZJFRyyo2RmhnqRPcT+E11+nTzG8xU4pv8AcarDVfBNMjo3xZOTQRDJk8KuRjEsi695jJTVCNV71RVTNO4zNJiG917UdR4dqalqpmiwtc/NOXU0+6uqxTUUssCYTuTN8ardJKeTV3/imswsiWrANruVImhUTI5j3LrRU0nLs+xCZwmuv0zPRoevdTxPsrM0PGJVzsxNkyUy+BaOpw1XPutUyZaqeB0MlPOxWOZm5FzXPX+6nFxkeS54nWRypg+4KiuVUVIJNf8AhLnDNbPiDdCudDcn77BHTLK1qIjcnIsacXeVS6diO5xOVjZm5JqTqEEj0R2KdLouncgiY5Uw0y4VTzu9fu5jWXnFzGo1uFLoiJyRSp/pJNrtl7xDf7bX3O211B0uqY3tSaF/Vppoq63ImXxTT8Jrr9M3zEHCe6/Tt8xDBKiBubGqima0tU/J7kVPvuM/jnElVSYyqbfS25alzWMXqXLmvUouxEKvpnifJF4IXDJdn6GT8pPtKJe91yXo9N80qbNcup2MTLYaeXENyhlfEyZqNY5WomgmpEJZezss5zNUuRQ9qfdjH2VuXQ80mst8vl0dJcLdX22nc3bLA/QRUTvoiazX3q73VLdbKO3WOor0pId6e6Brn5ZI1EVcmrlnkvkPjGGKLsyxOck7c98b/wCmnKaJtTLaLLa6qjcjJa6mbJOqpnpLotXj2fGU8dIjmo+35aZWPWxKx6sv+aud/v29DENumK2Lm3CNyavegk/KfTrji2tRaSXDd0jZOm9uesUqo1Has/imx4T3X6dvmIOE91+mb5iEXPpU0YTLT1q6vT79hXSQS4M3LZmujfK6OoRcpGrGq6T0MtT36/VjEfS4Zq52qiLnEx7kyXYuppcY7vlfW4VqIJ5GuY57FVEaifvIaG3vWy4Us1RQ/o5KqjiWVV16XUNXj2bVJldE6PmvbfOxro2aKXkMdhvmm3xMFcpsU19DJSphe5Qq/Lq2wSKqZKi/N7xbYPpKjDDKqpfFJNVVlPoPgkYrHNdty5c89Ww1HCa6/Tt9G3mKXCNbPfMT3xte/fEpEV8WSI3J2l3jxsiPYrYEsiZqZvjVj0fUrivkn3kUnTHFP8IXH0En5Tol6xe1Mm4VuiJyJFL+U2HCW6fTt8xvMOEt0+nb5jeYi5tL6hMsFcv/ANny/go8M2m7XbFNBfrlQ1lDJSqse9Twv6pNFdek5E+d+BX4jxNWx4tuNDSWx1SsMqp1Cqqr38kQ1vCa6fTt8xvMZrB0LLtuh36WrTSckKyatWvSaTxujnRUtdE0Q1pGTU6tcq2vkqoV/TPFP8H3D7vL+UqUw7ebzcZpbpSVtthd1Td/gejc+RM0Q9K4S3X6dvo28xm8b4pu0dtgc2due+/Rt5F7xjFNGq4YW2cpnLBMiY6h12pqhKxPfr1XVsUlBh+prGJHkroGveiLmurNGlOy7YrjdpMwncmrypDIn+k39zqJMPztp7cqRxvbpuRU0s12cZD4TXT6ZvmIRcyFuUjbqSpFUPS8LrM6IY18+Kb0xbbU4fudPDUdQ6V0Mio3v62mgv00mD9zS0wrC6Z8dTvWT00F174ufGWXCa6fTN8xDJ7o13rLhh6GKokRzW1TXIiNRNei5PeTRSQvekaJkvQgmhqI2LK5UunX7yIcN7xHUN0oMLVszeWOORyfg0i3ZcV3SkSBML3SBUcjtNtPKq+yel1kz7BDTR25d7bNGj3o7qs1yTlIvCa6/Tt9GhhzaeJ2bM0JOVVTsu2TyV9hnsMwz4Ys1xhhikq566P9XkqORyNXqURM1Vc1Kzplij+ELj6CT8peYFqprxDfKytdvk1A9HwORMtFeqXYm3YhccJbp9M3zEEjmsd/3CYlPImuen/aLhTr95mP6d4w4sL3T0Uv5S9wTZ7jNipuIrjSVVJLJE5joZonJlqRE1r4OQs+Et0+mb5iDhLdPpm+Yhj2mBvmJYzWkqXpaRUVPvYxNbii4TXyvp6OzyVO81L2folc5fjKiakTjyPrplij+ELj6GX8pY7ndPHV3DFNZMmlNDI2Vi55ZOzkXPLwoaThLdPpmejQlm7PE6zmEUDqqZvkP08Dzu02G6TXhLjdaasod4qGzRR1ELmo/qs1RFdlsyTymkxHe77V3V0tFhyrq4lY1Ekhje9vlRp84kxHc5rzY6Z8zVjnqNB6IxNaK5ie81dxrZ7JVrR0Dt7hREdoqmete+p4+TEiSPS7F0QRRK1VijW0iar3fdjBsu+LI897wnc257coZU/0iVcTYijW1VlhuVHBP8aZ8Mio3R6pNSoibURPtNlwluf0yeYg4S3T6dPMQj59MmbW2UmWmq185yKn33FTi6vlwrhbD1E2n6Iekax5O6lc0RvFkZ6O74jnZpw4UrZW7NJkT3J+DSTjm41NzrLKyqej2tqVREyRNqtzN1cquexVa0lvckcOij8lTS1r4SVyw4Elc29zXjSobIsDHWt06Hl92jxTdmRx8G7nSoxyqrm08n5UNLauicN4SrbVQ00lxlmm31qMaukqropkjURfm5l5Pia67y/9M34q/wDpoV2AaqWuwlWXqodpVtNVOZG/JERE0WcWz95THmI+P8pLNTVNzJY1jf8Anrd7vNXb7yKDplij+ELl6CT8h06eYx/he6+il/Ka/hLdPpmejQcJrp9Mz0aEaT0qfsJ1grvXT4fwRtz+yVsF7q71XQTwS1sHVRTROboLpJqzXwGJpMVXSv1UVhkqdeX6LSdr+xDf8Jrp9Mz0aGd3LqeNuFbjcUT+0U9R+jdns6lOL7Sdjo5mOcqXwms5s1PIiI7Di2zz9viVvTPFH8H3D0En5SPhay3KjvUF3udPV00lLMj44amJzNNO8ruY3nCW6fTt9GhR1t7r7jjWy0FTKjoKhytkajUTNPCYxysddlO2yqZywyNs+qXE1Pr7iLe7xiCovFRNS4YraiFypoyRxvc12pNio0hsu+LY0yZhO5tTvQyp/pNzXXastNW+ho5EZBFqa1Wo5UzTPapw4T3X6dno0IubTp5zM+viS8qrcnkP8nond06GMmpsRYpi6X19luNDEi74kkkMioqpxa0TlLzH15msUtmoYqTol76VETWqLmmSbMi34T3X6dno0Mpfaua8Y8w6ytdposjW6k0dSv7xNE+KVeWiZbEE0U8Kc1ypffr/AARY7riSViSR4SrnsXY5kMiov2o0gXKjxLeqmnZNYrlQwIujI9aeTRRqqmarmiJkiHptwuVVZ619BRPRkEWWi1Wo5UzTNda99VKu64muqWisVJmZ7w//ANNPmqYRzQsfZrLO0M3wVMjLufduvs1K2GorLLg2OzW+gluUscquTemqrlRXKvxURdmZU9MsUouaYQuXoJPymmwnVTLgmnvul/blkcxX5alTSVNmzYTOE11+mZ6NDxzmMdadt3bmUbZHtvSrhbt3/EyPTvGH8LXX0Uv5TR4Rs9TYrPiK5VMczZKunSdY5Y1YqKjZHKmvb8Yl8Jbp9Mz0aES7YiuUtnrY3ytVrqeRFTQT5qhtRDezEtfXvPH0tQrbvVFtp3fAx1Jie717UdRYemqUXZvKPfn5EO8tfiqSJ7OCNybpNVNVPLq/wl/gCNtHgFt1gTRqm1D2o7amWaJs2Fxwmun0zPRoZyLTxPwqwxi7XOzEyT5GHwbaK+0XinvVwjqYqmnc9Ep6mJzHKisVuevXl1S8XETLhdcRyXGpkgwpXSxPlc5kjIZFRyKupUXR1k6G7Vl43Srfbq2RJKeaJ2m1Go3PJj3JrTvohoJr5X0c8lLBI1sUD1jYitRckRckEr0vjmS7V07hFGvo4Fs5NV3MYy8YtjbkzClzanIkMv5R0vv+K5oorjabhQMpnpI10kD1Ry599ENhwlun0zPRoOEt0+mb6NCLtFO3NjbKSrS1T8nuRU++4qN0i/1FtxTTUNNR9EvkpGvREVc16p+rLLvGfZdcTyMR7MKV72rsc2CRUX/CWFVK+97q1m6OXT0oVYuWrUm+LxGtrLxW22sloqWVGwwu0WIrUXJPCpNLyGoj3Mvcgg7SqrEx9lb7rHmddbMQX25RLWWa4W6mVui97qeTQTaua5oiciGrq6+4UOFqC0221TXF1KqNzha5zlTXryRFyO+JcUXZuH6pUnZ8VP8A00+chYWepkpcI2y7wqjaurZlK5UzRdvFsTYh4smNmJE/LTJUCRKx+F6/mrmi/f8ABkUumKmrm3CFyRU40glT/SdOneMP4Wuvo5fymu4TXb6dno2n7wmuv07PRt5iLnUvqE/IrvXT79hX2i1y4O3Pr057ZJF0llRsjNDPU1PcZGkxDe65qOo8PVNSipmiwtc/NPsaafFN+uNVhmvglmarHxZORGInGSsLIlswDarlSpoVMqOa5y6800ncX2ITYo5I+a9MVl+9DXwTQy8lq4b5pbP5mRq6rFNVSS0/BO5M3xqt0kp5NX+Em4Ht9Xh6vS8VscyVb4nxvp52Kxzc1TJVz17ERdnGa3hLdfp2ejQpbFcKi/bo9bb7g9JIG02mjURG60azLWnhPGSI9qsp0w9VMpInRuSSrXEmiePwKqe6YmdUSOZhG4Pa56q1yQSZKmf1T8becXMbotwpdETkSKVP9JspMR3KGV8TJmo1jlaiaCbEPjhPdfp2+YhFzqVP2fMm5Nav7/v3GatdsveIMQW2vuVtrqDpfUxvak0L8nppoq63ImXxTrjjElTSYyqaCmty1L2sYvUuXNUVqLsRDQcJ7r9M3zEM1aES97rknR6b5pU2vLqdjEy2E0b4prstdES6Ia8zJqe0irZVWyqn8aEBLniZ7UVuEbgqLrRUhkVF/wAJXVFmvl9uencbbX2ynVutZYHozNNm1EQ9Klv1wpZpKeOVqRxOVjU0E2IuSGfxhim6ssL1bO1F3xv/AKbeXwGMcsSOwxNs5ciSSGdW4pnXYmaofV7u11S3Wyjt1jqLglJDvT3QNc/LJGoirki5Z5L5CnbdMVsXNuErki8qQSflNslTLabJa6qjVGS11M2SdVTPSdotXj2fGU5cJrp9M3zEI1fExbTNu7qZtjnemKndZnRPvvMi664uqUWB+GboxsvUK5YpdSL/AEmgipJcG7ldw0mOlcydr0SRqsVdJ8bSdwmuv0zfMQosa32vrMJVtPPK1Y36GaIxE2PapmyaFzkY1LIpHJT1DWLI9UVW5ou1ittVLinGDXOtu82xsDUcrqhXZTI7Zo9QuzL8UJdTuaY2rad1PUXi2viflpNWR6Z5Ln9GXkdJDR4Ssc0KOa+opInSLpLrXQbzqRd8f893lDqhsL8KMTIyZTPqWY1kXMjWa0y4X3yCmcyKrczeZ5GKrmuVPDxZ94+Pg+x/3ct3nu/6Z9bnCrLi7ESSLpJoLln9ZSVv0nz3eUSPWB13+Vi36HkcfaEwxrhw5ZdSH8H2Pu7lu893/TLrDOBbnQXSnuN6mpaqrgeuhLE93Uty1Jloom1V8pB36T6R3lG/SfSO8pGtY3oy3hkSpw+TrJfxzM5fp75cMcXeioa9IWQSqqI9EyRNSci8pbfB7j7u3b/Pd/0z63OUR+6Je0eml+hXb9ZpM3x/z3eU2J5mxW8hFumxrU8D5sTUeqYV3UpX7nVxt1TJXYhko6xJ+pTeXvz0uX4reJC3uFlxdimVtVbrrTQsiTe3JOqoue3VkxeUzWOpZOlkHVu/W8veU9ExX1FdCjF0f0f7urjMXSLhSddNuhm2JEetMnna4uu/3mZX4Psf93Lf57v+mfcO55jN8zGXC70E1K5cpY0e/qm8afq0JW+SfPd5Rvj/AJ7vKQ9tYv7EJuwSf7q/ftOmNoJ8K7m9JSUTkgdDVI39GukmTle7j8JnrThfGd6p1mpbzRtaiIqpKqouvwMU5Y4e5bE1Fcq/p27V7ym5vCrHbLRodTnToi5as9TTY5qclJcKL45mryHJOsOJUvnlknuMpWbmONa+Heaq7W2SPPS0Ve9Nf2Rky2W6e1UlRarU9lNPVt3l7s1VqvyVqKuaKuWa8hJ3x/z3eUibmjlfbsUK5dJWuzRV4tTzFsjp2rh8lG9NzN8SUrkx+Ursrr0Pn4Pce927d5z/APpj4Pce927d5z/+mTN+k+e7yjfZPnu8pF2xn+2nuJ+wS/7q/H+S2wlguts9ybcrq+mnrUa5j5oXuXNF1JqVE4u8efZ4hvWJbnTUVxjiSKscxN9RETW9yJsavIavfZPnu8pE3MkR0uLVVEVdJmvk/Wk8MrZGuW2m+ZrVELoXNu7XLLI+Pg+x53at3nO/6ZFgwBW2OsWsvklJVSSv043Qveqo9FzVV1JyoXO+yfPd5TOYplk6Y2bq3ZdE8vfaYR1HOXlMTDfqhJLSrA3nSOxInRfcXtdh3GGJKjphQXekjhcmijZVVHZp4GKR/g+x73ct3nu/6ZpMSucy7uRiq1NBupFKjfZPpHeUj7S2PyFYi26kiUj5UxteqIvTYj0+5ziyeZsd2uVBU0bv1kTXvzdxp+4nHku07bo8lXh/DFkoqGbeNB29dTrTU1OVD73yT6R3lMxjNznNt+k5Vyn418BJBO2WVG4bfL3EVRSvihV+O6p7/eTrdhHG10gdNT3qjRrXaKo9VRdicjF5T6rdzDGFc1nR11t0sca6WSyPT1RmwxWqx3SNGLopvKam6uNShmlk3l/6R3xV4zztfLdbCl07jJtGszMWNbL0XM/KS31jLZLY7BNHRrVP0k01XR0tWaquSrsaR/g9x93ct3nu/wCmdtzhyrucXN6r1SVrsncadTGSN8f9I/zg+TszlY5MS7qI4+1txxrgTSyEH4Psfd3Ld57v+manB2D6qw1rrhcHwS1ssLo5ZonuXS6pFTaicTU4ik3x/wBI7zhvj/pHecRrWNXRlvAk7A+1lkv45mQtEWJ8RVkrKK5xR/plYm+plr+xqmh+D7Hvdy3+e7/pnXc1T/8ARV7f+8lUuS/0tJO+yZfHd5TYqJmwvVuBF9hrUsD6iPEj1T2qVNuwRUYWq457i6mlq0eksMkD3LoKnhROPvE+swvjS/VL7nRXijjgny0WyuVHJkmiueTF40UqKiRzt0DDyK9VRZ2Zoq7eqQ1+IVVl7qGtcqImjqRck+Khg+RW2ndni6bGbIkcq0zMlb+5Ov3coPg/x93dt/nu/wCmdqXc3xLUSaF8r6Gspss0jbI/PS4l+InfO+m/57/OGm/57/OIlrGroxEJ0oJP9xV8Tjun1FfQ1lgt9vqd4dLG6LZqzzaibUIFDgzHFfTNqIb1RIxyqiI9zkXV4GKRLppOxthnNVX+2x7V/wDmMNriR7o71K1qqiaLdSeA2HSo2JsmFFuascD1mdCj1S3X/HtMnVbmWKJXx1d3uFvqaem6t7WyPzVu1UTqE4k5Syjtl0q7U2xWCpio0R2+NSVV0U15rryVeM43WSTpPW9W79Q/j/uqTcJKvwV00mfV7+/quP46mHMdJHzNEb06KZ8pIX8pc3P69UIHwfY+7u2/z3f9MfB9j3u7b/Pd/wBMm79J893lG/SfPd5SPtrfUQl/D5f91fj/ACWtswzJhiwXiqkWHouaicsksTnLpPRqqq60TjU89w9QYrxK1i0V1gj01cib9q2eBqmjuUsnSyr6t36l/H/dUkYH6ncuVyal6Jdr4/jITslR0Svtpvma8kLo5msxedtkQ3bnWO3sVjr3bVa5MlTTd/0znaMKTYPrI5Kl0LrlHm5k8DnKjWuRW5dUid/i4yz3yT57vKVVoe5265amuVXIsMmpdf8A6UhgyZZ0WNiYeuRJJB2a0si4+mfeS58HY3uk76+mvVEyGpXfGNe5yORF5cozn8H2Pe7lv893/TLi6SObdapEc5ESRdSLlxkTfX/Pf5xH2tqLZWISpQyOTEkipf73Pig3Ob9LPnfq2hrY2Kjo2tkfm13moRd0ysufDait9vqd436jautNWenJ3uRCbvr/AJ7/ADlKelVX7q1j0uq/Rrt8DyaCZJXKmHp7Pca9TTuhYj1dfP2+87U2Bcc1VMyeO90CMemaaTnZ/wDLOVTuZ4iWoZX3muoKqCBOra2R+kreROoQ0d5e9t3qEa5URH7MyhxDI/pBWdW79Xy98wbVeVga1EXS5ItG7BzHPVU1sufeTwR+mND27T+laOmND27T+laVvLfspb42blXVvbHj/Dz3uRrWztzVVyROqQtb/iWnfjquonPhZAxrFSdZUycug3V+PLxFDWzUVRjSyadTC6DfmpK5JEyamkm1eI1d0tO5xPcpZKqRsszstJ0dWqoupMti8hcJG10LWyJlb4lC+Rzal7otb/CxT3C4UU9tqYYayCSWSF7WMZIiq5VRURERNq5lvhqCam3MaOKeJ8b0qHqrXtyVOqcV1wtu59RW+pqrY5W10ML5KZVqHO/SImbdSrr15EyzX+nq9zylWtr6ZKvf3aTFka12Wk7LUYrGjIXIzNDLnLJUMdIll+APwj9MKHt2n9K3nHTCh7dp/St5yq5btlLzGzdBcetlV4l/qUj2K8xWncfkkRY5Jm1S/oVfkq5vQXCvolt1SjauByrE5ERJE16lP3BtLhaqwHoX2ePSWd2lH0Rov2plqRcyypW/lKjkyvn4FPXORZmq1c7Lbx6CmvVBNTRSvraZjnsRzmLM3Nqqmw/cLMdU7qFLWwNWWm3l7d+Z1TM9BdWaaiV0k3L+/wDenc5HsNztNo3Q4KC1VcUFlSJzlWWRMkerFz6pe/lxk0ULGOVYvjsQT1EkkaNmSyb95bXHrnVeOf61Ix+XC5291yqVbXUzkWV6oqSty2r3yP0xoe3af0recqXMfiXJS8je3AmaaEkqrXIyHdZtckr2sYkMmbnLkifo5Cb0xoe3af0recqKOW3VG6bblqamHoTeno+RZURqfo35dV4cjbomuR7suimlxFzFiTPqhYVWJaefFF0pZXQQxwzORkrpkyfr4iJfqymrLLUU9JURTzvREZHG9HOdrTYiF5W2fc1lrZnzuR8jnqrnNqnZKveycVV6pMD2q0VFdYl0blCiLAqzq/Jc0RdSrkupVNnkQ40c299ulzTSpmSNWOS7d+tv+DRUsT4dzyxxyMcx7W5K1yZKm3iIBIZfaOqwPaHVFxpVqcs5Gb61HN1LtTiK/pjQ9u0/pW85p1TXrKuRv0DmJAllJBW4h6xVfi1JXTGh7dp/St5yuv8AXUb7JVtZVwPcseSNbIiqpFCx3MbkuqE87m8p2fRfkS5L/Hadyayvj3ueVJ9B0WnkqIqyLn+CeU+m3a3qxF6PpUzTWm/N1fidbHSYOqsBW1t7niWTNVfG2pyci6Tss0Rc01H10k3MO/8Ae3fmLOaGKRfLyW/QpaaomibaNLp379T53PYpH7o1zrWsV1NLRuRkyJmxy6Uexdi7F8hLm/Wu8KkTBd5ttDjuvt9PWwwWaGld0Ms0iImelGuWku3a7jP2W5UG+u/ttPt+lbzmvWMdZqWNuge3G9d/nnc7Aj9MaHt2n9K3nHTGh7dp/St5yv5b9lLXG3ci4Zmig3WHvlkbGxKZeqcuSfEQ50eJqetrq5tS+CmSKZUYrpU6tM116yPY322o3S3vramFtMtOq74sqI3PQTLqsy9msu5msz1euk7SXNUq1yz84uHRsfG1smyHPtlkjme6LPNbp8jP4mniuVodT0MrKqZXtXe4XI9ypy5Ibm6NVmHbAxyK1zaRqKipkqdQwx+Io8JWO1OrMMP0Lgj0amc2+dSu3Uqqaa63q31FlsyrcaV0vQyLIiStza5WszzTPVxkUseGBWszT4k0UuOqa6RLL8OpBBG6ZUHbtP6Vo6ZUHbtP6VpWYH+qpdY27oVuMOx2b6zPaQtr9iOG2YRwrFEsUyyUsbZP0iJveUbNv/nEUeK6ulnsEzIamGR6ub1LZEVfjIaOOhwRV4Ys3Taojkl6EjVWx1WStcrG6WaIurWWlO38iz0yvn7ikrHqlTijXO2XvUh9Nbd3QpfTN5z73O4ZkxFiGp3p28TQqscmXUvTS4l4z66RbmPKv3p35j8wXfKKC+Xyh6Nhht0Easo0lka3NqKuSIq7dXfJI4WsReWt763I56h8tua21tDuCN0yoe3Kf0recdMqHtyn9K3nKflv2Uv+YzckldgSphpcc3+SaVkadCuy03Ima6TdRI6ZUPblP6VvOVeD0tNRja7uuVTAynWFdFz5UYjlzTYuZv0TXJjy6FZxFzFazPr9D7tGJaW4UjpqmSClej1akbpUzyyTXryIGK3sulBFFb3Nq5GyaSsgXTVEy25IaPpJuYd/7078xS4mfhrD9FFUYTk0KqSTQlzk3zqMlXYqrx5GyyGJsmKLXonQ1X1MzosEyZdV6m+xd1wi8V71KEs8U3e2TV8TorjSSIketWztXjXvlH0xoe3af0recrZmP5i5KWlI9vJbmSTN456xx/zDfZcXfTKh7dp/St5zP4zq6aezRshqIpHb+i5MejlyydyElIxyTtuhjXOatO5EU1WM8SQUlxs9Kx0MscsKacqSplHry1kPppbu6FL6ZvOWlytuAKtlK64VEUsiRJlvdXs8OTiB0j3MeX/i3fmNt0ET83KqL1sV0NTPGmGNLt6XP3c3p54bTiZ8sL42yZOYrmqiOTJ+zlOpwwPiCF9sxBBWV9PHGxNCmbI9rFVuTtnLxHz0yoe3Kf0qEFa16vS6Gxw1zEa6y5d5IBH6Y0PbtP6VB0xoe3af0qGjgfspaY27oR9z6tgoY8YyTSMaqNRWtc/R08kl1IcLTiKlr6NJ6manpX6SpvbpUz/E/MAssc9TiPpvUQsjc5uhpTozTRd80staZ8RadI9y/v8A3p3OXU8THraTLS1vA52nmkiziz1v78ijuSpccQ2J9AqVTYKtFlWDq9BFezLPLZsXyG5xP14d9RpjrlUYfsF7syYWmSOKpqUStV0mmmijm6Otc8tSvNNiS626W7OdFcKR7dBNbZ2r7zXqGKkCNbmnTf2m1Syo6pV7slVM9iCCP0xoO3af0recdMaDt2n9K3nK3lv2UuMbN0KTFKolfZlVUROiePwtNHjDEsEeMoaFHQ7xJTo51RvqZNXqubl4zK4nqaSorbVo1ET2pP1ei9FyTNvkNpebXueVFaj62eOaXRRNKOrVUy+xS2jYiwNbImWfzKKZ7m1TnR65e62ZUS3S3uieiV9Mq5bN9bzk7c9pqik3ObnHUwyQvWscqI9qoqpoxkeSzbmbInvjVdNrVVv9qdt8p0wdiOKqwHcOmVfTsqeiVRrHvaxyt0Y9icevM8SJGROSPNF1D53SysWRLKi5H2CN0xoe3af0recdMqDt2n9K3nKrlv2Uvcbd0JJVYFukVs3N77K50bpWzK5sTn5K7qWkzpjQdu0/pW85B3PIcO1GFbgy+TxNzny3t0+g5zdFNiZ69ZY0bXIx902+pU8Qcivjsu+m+Vj7t1+oquhinnqqeCR6LnG6VM26z5pP7dj+xT0i9EQwyfpJIuqazwqmwsekm5jyO+9O/MRIayxWLGVnp8P1DIaCd+lVrJLpIip/ecurUTRwxsfij1NeWolfFgmSybmgxB16qPCnqQrjvfLpbpbxUOjr6ZzVVMlbM1UXUnfIHTCh7cg9K3nKuRj8a5LqXUMjeW3PohIKSreyPHuHXvcjWpO3NzlyROqQs+mFD27B6RvOUddNQ1ONLFp1MS0++tSR++IiNTS414jZomOSW6p0U1OIOasC59U+ZfX/ABLTuxzXULnwtgY1itnWVMnLoNXL8fwIlwuFFPbamGGsgklkhe1jGSI5XKqakRE2qXF0tO5vNcJZKqVssy5aTo6tdFdSci8hW19u3PaK31NVbHK2ugifJTL0Qrv0iIqt1KuvXkbPIhVyOzRfqaTamdrFZa7d+ti0wxTy025dTxTxujek782vTJU6tSOfdjxBT1W55AtbcKbotZnaTHSNa7LSXLqfAROmND27B6VvOatY16y3sbnD3MSGyLlfqSCPcetlX4l/sqOmND27B6VvOR7hcKJ1tqWtq4FVYXoiJI3XqXvmvGx2NMlN2R7cC5n5Y71FadyB8qLHJM2qX9EsmSqivQ+qe9UE1LFK+spo3SMRysWZubVVNh+YNpcLVOA0ZfaiJHLO7Si6I0HKmaZasyX0j3MOVfvTvzFtPFHI5ceS92xRU08sTU5SXTv3IWHmuq91K2VlM1ZqdjJGumZ1TEXen6s01caF3cOuVV45/rUp7RcbRZ90SgoLNVRw2Z0b3yLJIioj9B/7y7NjeMnV90oHXGpcldTqizPyVJWqi6175r1bHIxqIl06G1RPasz3Lkq6+J+gj9MaHtyD0rR0xoe3IPStK7lv2UtsbdyBTSMh3UrJJI9GNbGubnLkiankq44kp5sX3KkldDFFE9dGZZUyfsKtJLfPuiWl1RUxdCrGu+P3xEamp+1c9XEaSvtG5tLXTPqHo+VXdU5lUuSr9ji4wNdE1siZW+JQcxzJ3uizW/ssUN9q6WsstRT0tTFPNIiIyOJ6Oc7WmxENVSwyQbndkjlY5j2t1tcmSpqUzt6pMD2q0z1thdlcokRYFWdX680RdSqvFmXcd9pKvA1pWe4Uq1OjnKzfWo5q69qcRg6PBArWZp8bmbZVkqWukSy/CxHBH6Y0PblP6VvOOmND25T+lbzlVgfspeY2boRsQ9YazxfvOkl/jtG5LZXxLHNNv2g+LfMlRFWRdfkTykS/19HJY6tjKqBznR5IiSIqqWFipMH1WAra29VETpM1V8banRejtJ2WaIuaai0pW/kqj0yv9ClrXf8AcIrFztl43ObLtb3MRej6XNU1pvzdX4n7gaKSXdMq62NivpZKVUbO3Wxy5MTU7ZtRfId+ke5j3/vTuc5YUvFstmP6m3UVZDBZIadd4WWRETSVGqvVL/eV3GZxQsjVVjW+XXYiqKh8rEbKltrbk2p+VS/XX1nI+Ki5UC1MqpW065vXZK3lOXTGh7dg9K3nKlWPvopfNeyyZkgrsMzRQbrL3zSNjb0MqaTlyT4iEnpjQ9uU/pW85V2OS21G6W51ZUwpSugX9IsqNbnoJlrzNyia9HOy6KV3EXMWNt16p9SSzEtPV3i5xVDoadsFQ5rHOlT9Imk7Xr8CeUhYmnhuVndT0MrKqZXtVI4XI92XLkhoKiz7mclTK6V+b1equVKpclXP6xT4hZhCx2p1Zhh+VwR6NRVlV/Urt1Kqm0kMXMR7NduhqLUzcpY5Ey362+RsLox0eHbAxyK1zaRqKipkqLoMKcn3W9UFTZLM5bjSOl6HRZEbM3NHK1meaZ6io6YUHbtP6VvOV9S16yrkWVE5qQNz3+ZIKfFnY3Vf0e20sOmFD27T+lbzlTiispZcPVLIqmGRy6GTWyIqr1aHkDHc1uXVPmZ1Lm8l+fRfkTcXXx9DhHCLaSqRMqViTNYqOXVHHqXk4yv4c2r6Kp8xvOaOPFdhwthqyq1kVXPVUkazNY5JFjc1jc80z6nW5fIcfhbtPcz/AC0LV8TZPPZfwKSKeSL0b0t3nbc3oJG3a63bTZvFdDpxt/eRFXPWfhnsMY6t1rxNerlWMnbDX5rEyJqLo5uz5dQ4bWnkqPRpzmvVwSuVLJc2qGphZixLa5oQZ7htaeSo9GnOOG1p5Kj0ac5p9kn9VSy7bT+uhOwTcobXj28zTNe5HRK1EYibdJpn7PjJsFO9tzdPNKrs2uYxuzL7CZhLGFqsuLLlc62Od1PVRq1iMjRy56SLrTPvGi+Fu0dym+iQt3RXSz23yT2FA2ZWvV0TrLddV12yMvXVcWMIko7fnE+Fd8cs6ZJls4s+U9Nxb8vh8X7zzbGuOaPEltgpqSl6HfFLpq5Go3NMlTL8S8v26RYrlVRyQMq9FrMl0o0Tj8JBPA/k4WJlsbEFS3tCPkVL9V6dxNBnuG1p+bUeYnOOG1p+bUeYnOV3ZJ/VUtu2U/rofuN+sTfHN9SkzGGKkj4P7w6ZkEUOU7NFvVomjs/EzuJMSUN1tiU9MkqPSRHdW1ETLJe/3zZt3VbFBQ0kMdFLI6KFrX75CmpURE1ayzhie2JEe3e6FPUTMdOrmOzystzP8ObX9DU+YnOafAFrmt9mv80rmK2qYkjEaq5omi7b5SN8LVn7m/5SFBhHG1ts1NfWVyVCuuDlWFI2o5E1O25qmW1DJsGFq8tqp9TCSoV6pzVRdrdPE0gM9w2tPzajzE5xw2tPzajzE5yq7JP6pd9spvXQ0JS4LuzLXDi9FR++Ss/RuYiLoqiS69fhOHDa0/NqPMTnOeB8aWrDtRe5q6KaTo1zHQtbGjtmnt16vjIb1LBKxr7pbQra6ohkVllvqRbVjOGGjRlxWeafSXNzWNyy4uNCSk0eLrjRdAKsfQUzXyb+mWaKqbMs+Q0PwtWjuZ/loZzFeOKK/VFsfTUzqdtJPpyaLUTSTNvMbDYG48TG2X4e41nVL+Xgkcjm/H3noOKOvC/UaU5W3rdFslwuCzwsqtDRROqjRF9ZX8N7T82o8xOcrZKWdXqqNLaCrgbE1FehojM4zXRjoFXinz9R14b2n5tR5ic5TYhxFQ3RtIlOkqbzLpO02omryklJTTMmRzm2QiraqF8DmtciqaXHOLdHF9HNG+ZtElMm+x6Lc1XSf/tx8RXuxpbJEVjYqnNyZJ1Cc5p6zdcsO+p0Nb5JGaOtZImouflIsu6zaZInsS2Jm5qp+qQ3HQNdbGxbleyokYipG9ETZSwwbaprRuf3KnnfG9zqpXorFVUyVsacad4jGcwlja2WXB9baq3ol1TPULIxWMRW6OixNuf91T64bWn5tR6NOc1qunmfJdEubdBUQMjVFW2fU0IM9w2tPzaj0ac44bWn5tR6NOc1eyT+ob/bKf10PvDN5S27n9+gjSRKiSZXRvaiZN1NT3EK341pI6GOOtSokqETq3NY3JdfhJeBsc2nDVmrqesgllmmnWSNEjRzcskTXr7xd/C3aO5ieiQt5okeqo9tyggmdGl43Im9yosmWJMW2q40btCKjqGaaS6nLrRdWWfIbDEfX2p/p9lDC3bHNFccW2e6MhfBT0T0WVrGIiqmlnqTjLK7boNlrrnNUxNqtB+jlnGmepqJy941qiB6xo1iZbG1S1LEnV0i5216LoWgM9w3tPzan0ac44b2n5tT6NOc0eyT+qW3baf10P28Stgxdh2Z6KrYqpj1y25JI1TpifF2hjioke+boHe25RaLc89FO/y98p6zEtvqMR2ava2beaKoZJKitTNWo9qrlr7ym1qt1yxb+u8W58jOJ0kTc/WWjInJC1r23yXL2lJLM1ahzo3Z3TPpoZmTFdBc4n2+COdJapqwsV7UREV2pM9ezWbSyW6W17msFLM9jntmcqqzPLW9eUoLruoWuvtFbRx27e5Kinkia7e0TRVzVRF/EhWPHVqt+B4bPUpUuqmSucqtYityVyrtz7546BUiVsbVTuPUqMUzXSql06l6DP8ADa08lR6NOccNrTyVHo05ys7JP6ql12yn9dC3uXWur8S/2VKigvy0G5LJTU7pI6lKnNHoiZImmhxrMY2ueinhYk+lJG5qZsTLNU8JMwdugWjDuFEt9RTSy1SSud+rRWZKvLmWFNDIyNUc3qVVbPFJI1Wr0XropCpcb0DKWJtQypdKjER6oxut2Wtdpb4PZ07x5QX2lXRpoUkjVsmp6rvbk2Jmn7ycZL+Fu09zG+iQoUx1b5N0WhxA6GSGjghcx8cbEzzVj0zyzy2uQlZA1HKrGqimvJUvczDI5HJ3Guu3Xaq8a71kQpq/HlnqK+eZjanRe9VTONOcj8NrT82o8xOcqnUk+JVwqXMdZToxEV6aGhKToplFul2apkRVayJVVG7f3zjw2tPzajzE5yDDiq2x43tt4eyZaWlaqPTQTS2O2Jn/AHkNqkp5mPVVS2SmrXVMD4kRHIuaEu5YvSHGFzfUundSK/8ARRo1ubdn/m0+KjEdFe6d9spmTNmqU0GLI1Eai9/JTSz7rlm3529W5zmZ6lfEma/iVd/3S7ddbHV0MNBvUk7NFr0jRMja5DVci4FvuaSVEjWq3EmHbrY//9k=') ->setResizeProportional(false) ->setHeight(36) ->setWidth(36) @@ -67,16 +67,18 @@ ->setOffsetY(200); $currentSlide->addShape($shape); -// Add a video to the slide -$shape = new Media(); -$shape->setName('Video') - ->setDescription('Video') - ->setPath(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? './resources/sintel_trailer-480p.wmv' : './resources/sintel_trailer-480p.ogv') - ->setResizeProportional(false) - ->setHeight(90) - ->setWidth(90) - ->setOffsetX(10) - ->setOffsetY(300); +// Add a file drawing (PNG transparent) to the slide +$oFill = new Fill(); +$oFill->setFillType(Fill::FILL_SOLID) + ->setStartColor(new Color(Color::COLOR_DARKRED)); +$shape = new Drawing\File(); +$shape->setName('PHPPresentation logo') + ->setDescription('PHPPresentation logo') + ->setPath('./resources/logo_ubuntu_transparent.png') + ->setHeight(100) + ->setOffsetX(10) + ->setOffsetY(250) + ->setFill($oFill); $currentSlide->addShape($shape); // Save file diff --git a/samples/Sample_03_Video.php b/samples/Sample_03_Video.php new file mode 100644 index 0000000000..049f50bcca --- /dev/null +++ b/samples/Sample_03_Video.php @@ -0,0 +1,33 @@ +getActiveSlide(); + +// Add a video to the slide +$shape = new Media(); +$shape->setName('Video') + ->setDescription('Video') + ->setPath(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? './resources/sintel_trailer-480p.wmv' : './resources/sintel_trailer-480p.ogv') + ->setResizeProportional(false) + ->setHeight(90) + ->setWidth(90) + ->setOffsetX(10) + ->setOffsetY(300); +$currentSlide->addShape($shape); + +// Save file +echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +if (!CLI) { + include_once 'Sample_Footer.php'; +} diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index e83c2515ff..4426d0a4b1 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -3,13 +3,13 @@ * Header file */ use PhpOffice\PhpPresentation\Autoloader; -use PhpOffice\PhpPresentation\Settings; use PhpOffice\PhpPresentation\IOFactory; use PhpOffice\PhpPresentation\Slide; use PhpOffice\PhpPresentation\PhpPresentation; use PhpOffice\PhpPresentation\AbstractShape; use PhpOffice\PhpPresentation\DocumentLayout; use PhpOffice\PhpPresentation\Shape\Drawing; +use PhpOffice\PhpPresentation\Shape\Group; use PhpOffice\PhpPresentation\Shape\RichText; use PhpOffice\PhpPresentation\Shape\RichText\BreakElement; use PhpOffice\PhpPresentation\Shape\RichText\TextElement; @@ -69,12 +69,16 @@ // Populate samples -$files = ''; +$files = array(); if ($handle = opendir('.')) { while (false !== ($file = readdir($handle))) { if (preg_match('/^Sample_\d+_/', $file)) { $name = str_replace('_', ' ', preg_replace('/(Sample_|\.php)/', '', $file)); - $files .= "
  • {$name}
  • "; + $group = substr($name, 0, 1); + if (!isset($files[$group])) { + $files[$group] = ''; + } + $files[$group] .= "
  • {$name}
  • "; } } closedir($handle); @@ -456,10 +460,12 @@ protected function getConstantName($class, $search, $startWith = '') { - \ No newline at end of file + From d008ebb5c534bbf4bf2115496ff59460877237e3 Mon Sep 17 00:00:00 2001 From: pgee70 Date: Sat, 16 Dec 2017 20:22:57 +1100 Subject: [PATCH 040/139] Update Sample_Header.php --- samples/Sample_Header.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index 84e611d1b0..c3c34fc69b 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -23,7 +23,7 @@ define('SCRIPT_FILENAME', basename($_SERVER['SCRIPT_FILENAME'], '.php')); define('IS_INDEX', SCRIPT_FILENAME == 'index'); -require_once __DIR__ . '/../src/phppresentation/Autoloader.php'; +require_once __DIR__ . '/../src/PhpPresentation/Autoloader.php'; Autoloader::register(); require_once __DIR__ . '/../../../../vendor/autoload.php'; From d250c1a1b1f0c7370628fae09e4fd3fe1314b0a0 Mon Sep 17 00:00:00 2001 From: pgee70 Date: Sat, 16 Dec 2017 20:38:16 +1100 Subject: [PATCH 041/139] Update Sample_Header.php --- samples/Sample_Header.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index c3c34fc69b..ee485afb8a 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -26,7 +26,10 @@ require_once __DIR__ . '/../src/PhpPresentation/Autoloader.php'; Autoloader::register(); -require_once __DIR__ . '/../../../../vendor/autoload.php'; +if (is_file('/../../../../vendor/autoload.php')) +{ + require_once __DIR__ . '/../../../../vendor/autoload.php'; +} // Set writers $writers = array('PowerPoint2007' => 'pptx', 'ODPresentation' => 'odp'); @@ -490,4 +493,4 @@ protected function getConstantName($class, $search, $startWith = '') { - + Date: Sat, 16 Dec 2017 20:47:16 +1100 Subject: [PATCH 042/139] Update Sample_Header.php --- samples/Sample_Header.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index ee485afb8a..975e88b283 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -26,10 +26,14 @@ require_once __DIR__ . '/../src/PhpPresentation/Autoloader.php'; Autoloader::register(); -if (is_file('/../../../../vendor/autoload.php')) +if (is_file(__DIR__. '/../../../../vendor/autoload.php')) { require_once __DIR__ . '/../../../../vendor/autoload.php'; } +else +{ + throw new Exception ('Can not find the vendor folder!'); +} // Set writers $writers = array('PowerPoint2007' => 'pptx', 'ODPresentation' => 'odp'); From bbf4f83b87f56f194b530c42234220bf76a78e14 Mon Sep 17 00:00:00 2001 From: pgee70 Date: Sat, 16 Dec 2017 20:57:17 +1100 Subject: [PATCH 043/139] Update Sample_Header.php added some checks to make sure that the sample outputs are set up correctly. --- samples/Sample_Header.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index 975e88b283..4285eb1d3e 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -34,6 +34,15 @@ { throw new Exception ('Can not find the vendor folder!'); } +// do some checks to make sure the outputs are set correctly. +if (is_dir(__DIR__.DIRECTORY_SEPARATOR.'results') === FALSE) +{ + throw new Exception ('The results folder is not present!'); +} +if (is_writable(__DIR__.DIRECTORY_SEPARATOR.'results'.DIRECTORY_SEPARATOR) === FALSE) +{ + throw new Exception ('The results folder is not writable!'); +} // Set writers $writers = array('PowerPoint2007' => 'pptx', 'ODPresentation' => 'odp'); From 47ec19e36a1914d26aa06dd60eca2f83ce33259a Mon Sep 17 00:00:00 2001 From: pgee70 Date: Sat, 16 Dec 2017 20:59:48 +1100 Subject: [PATCH 044/139] Update Sample_Header.php more checks to make sure the sample code can run --- samples/Sample_Header.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index 4285eb1d3e..aa0e4ef934 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -43,6 +43,10 @@ { throw new Exception ('The results folder is not writable!'); } +if (is_writable(__DIR__.DIRECTORY_SEPARATOR) === FALSE) +{ + throw new Exception ('The samples folder is not writable!'); +} // Set writers $writers = array('PowerPoint2007' => 'pptx', 'ODPresentation' => 'odp'); From ad87a6da7593ad1c80cbd4afe445f0b0b2d99a90 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Fri, 29 Dec 2017 22:31:01 +0100 Subject: [PATCH 045/139] Fixes some CS --- samples/Sample_Header.php | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index aa0e4ef934..6cf01f8e0e 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -26,26 +26,20 @@ require_once __DIR__ . '/../src/PhpPresentation/Autoloader.php'; Autoloader::register(); -if (is_file(__DIR__. '/../../../../vendor/autoload.php')) -{ - require_once __DIR__ . '/../../../../vendor/autoload.php'; -} -else -{ +if (is_file(__DIR__. '/../../../../vendor/autoload.php')) { + require_once __DIR__ . '/../../../../vendor/autoload.php'; +} else { throw new Exception ('Can not find the vendor folder!'); } // do some checks to make sure the outputs are set correctly. -if (is_dir(__DIR__.DIRECTORY_SEPARATOR.'results') === FALSE) -{ - throw new Exception ('The results folder is not present!'); +if (is_dir(__DIR__.DIRECTORY_SEPARATOR.'results') === FALSE) { + throw new Exception ('The results folder is not present!'); } -if (is_writable(__DIR__.DIRECTORY_SEPARATOR.'results'.DIRECTORY_SEPARATOR) === FALSE) -{ - throw new Exception ('The results folder is not writable!'); +if (is_writable(__DIR__.DIRECTORY_SEPARATOR.'results'.DIRECTORY_SEPARATOR) === FALSE) { + throw new Exception ('The results folder is not writable!'); } -if (is_writable(__DIR__.DIRECTORY_SEPARATOR) === FALSE) -{ - throw new Exception ('The samples folder is not writable!'); +if (is_writable(__DIR__.DIRECTORY_SEPARATOR) === FALSE) { + throw new Exception ('The samples folder is not writable!'); } // Set writers From ec564485e37ab67be4ca48c350ec0baf3f507387 Mon Sep 17 00:00:00 2001 From: Gabriel Caruso Date: Fri, 29 Dec 2017 20:23:02 -0200 Subject: [PATCH 046/139] Refactoring tests --- tests/PhpPresentation/Tests/PhpPresentationTest.php | 2 +- .../Tests/Shape/RichText/ParagraphTest.php | 12 ++++++------ .../Tests/Writer/AbstractWriterTest.php | 2 +- .../Tests/_includes/PhpPresentationTestCase.php | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/PhpPresentation/Tests/PhpPresentationTest.php b/tests/PhpPresentation/Tests/PhpPresentationTest.php index 06594269be..554fc3eedc 100644 --- a/tests/PhpPresentation/Tests/PhpPresentationTest.php +++ b/tests/PhpPresentation/Tests/PhpPresentationTest.php @@ -41,7 +41,7 @@ public function testConstruct() $this->assertEquals(new DocumentProperties(), $object->getDocumentProperties()); $this->assertEquals(new DocumentLayout(), $object->getLayout()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide', $object->getSlide()); - $this->assertEquals(1, count($object->getAllSlides())); + $this->assertCount(1, $object->getAllSlides()); $this->assertEquals(0, $object->getIndex($slide)); $this->assertEquals(1, $object->getSlideCount()); $this->assertEquals(0, $object->getActiveSlideIndex()); diff --git a/tests/PhpPresentation/Tests/Shape/RichText/ParagraphTest.php b/tests/PhpPresentation/Tests/Shape/RichText/ParagraphTest.php index 36f5650ef1..608389899f 100644 --- a/tests/PhpPresentation/Tests/Shape/RichText/ParagraphTest.php +++ b/tests/PhpPresentation/Tests/Shape/RichText/ParagraphTest.php @@ -147,17 +147,17 @@ public function testText() { $object = new Paragraph(); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\RichText\\Paragraph', $object->addText(new TextElement())); - $this->assertcount(1, $object->getRichTextElements()); + $this->assertCount(1, $object->getRichTextElements()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\RichText\\TextElement', $object->createText()); - $this->assertcount(2, $object->getRichTextElements()); + $this->assertCount(2, $object->getRichTextElements()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\RichText\\TextElement', $object->createText('AAA')); - $this->assertcount(3, $object->getRichTextElements()); + $this->assertCount(3, $object->getRichTextElements()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\RichText\\BreakElement', $object->createBreak()); - $this->assertcount(4, $object->getRichTextElements()); + $this->assertCount(4, $object->getRichTextElements()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\RichText\\Run', $object->createTextRun()); - $this->assertcount(5, $object->getRichTextElements()); + $this->assertCount(5, $object->getRichTextElements()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\RichText\\Run', $object->createTextRun('BBB')); - $this->assertcount(6, $object->getRichTextElements()); + $this->assertCount(6, $object->getRichTextElements()); $this->assertEquals('AAA'."\r\n".'BBB', $object->getPlainText()); $this->assertEquals('AAA'."\r\n".'BBB', (string) $object); } diff --git a/tests/PhpPresentation/Tests/Writer/AbstractWriterTest.php b/tests/PhpPresentation/Tests/Writer/AbstractWriterTest.php index 24df13079b..98ea647b89 100644 --- a/tests/PhpPresentation/Tests/Writer/AbstractWriterTest.php +++ b/tests/PhpPresentation/Tests/Writer/AbstractWriterTest.php @@ -60,6 +60,6 @@ public function testAllDrawingsIncludesMasterSlides() $writer->setPhpPresentation($presentation); $drawings = $writer->allDrawings(); - $this->assertEquals(2, count($drawings), 'Number of drawings should equal two: one from normal slide and one from master slide'); + $this->assertCount(2, $drawings, 'Number of drawings should equal two: one from normal slide and one from master slide'); } } diff --git a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php index 996f0d2c3f..b7b0779a8e 100644 --- a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php +++ b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php @@ -175,7 +175,7 @@ protected function resetPresentationFile() public function assertZipFileExists($filePath) { $this->writePresentationFile($this->oPresentation, $this->writerName); - self::assertThat(is_file($this->workDirectory . $filePath), self::isTrue()); + self::assertTrue(is_file($this->workDirectory . $filePath)); } /** @@ -184,7 +184,7 @@ public function assertZipFileExists($filePath) public function assertZipFileNotExists($filePath) { $this->writePresentationFile($this->oPresentation, $this->writerName); - self::assertThat(is_file($this->workDirectory . $filePath), self::isFalse()); + self::assertFalse(is_file($this->workDirectory . $filePath)); } /** @@ -195,7 +195,7 @@ public function assertZipXmlElementExists($filePath, $xPath) { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); - self::assertThat(!($nodeList->length == 0), self::isTrue()); + self::assertNotEquals(0, $nodeList->length); } /** @@ -206,7 +206,7 @@ public function assertZipXmlElementNotExists($filePath, $xPath) { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); - self::assertThat(!($nodeList->length == 0), self::isFalse()); + self::assertEquals(0, $nodeList->length); } /** From 3d8b447f5d6c012bbc12a4f0bd00546fc2030728 Mon Sep 17 00:00:00 2001 From: Gabriel Caruso Date: Sun, 31 Dec 2017 09:56:22 -0200 Subject: [PATCH 047/139] Trailing whitespaces Signed-off-by: Gabriel Caruso --- CHANGELOG.md | 20 +-- README.md | 300 +++++++++++++++++++++--------------------- docs/index.rst | 2 +- docs/intro.rst | 10 +- docs/references.rst | 4 +- docs/shapes_chart.rst | 2 +- docs/shapes_table.rst | 4 +- 7 files changed, 171 insertions(+), 171 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c94c2eec91..3373210c4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ ### Changes - PHP 7.1 is now supported - @Progi1984 GH-355 -- PhpOffice\PhpPresentation\Style\Color : Define only the transparency - @Progi1984 GH-370 +- PhpOffice\PhpPresentation\Style\Color : Define only the transparency - @Progi1984 GH-370 - PowerPoint2007 Reader : Background Color based on SchemeColor - @Progi1984 GH-397 ### Features @@ -29,7 +29,7 @@ ### Features - PowerPoint2007 Writer : Implemented XSD validation test case according to the ECMA/ISO standard - @k42b3 GH-307 -- PowerPoint2007 Writer : Implement visibility for axis - @kw-pr @Progi1984 GH-356 +- PowerPoint2007 Writer : Implement visibility for axis - @kw-pr @Progi1984 GH-356 - PowerPoint2007 Writer : Implement gap width in Bar(3D) Charts - @Progi1984 GH-358 ## 0.8.0 - 2017-04-03 @@ -90,16 +90,16 @@ - ODPresentation & PowerPoint2007 Writer : Add Font Support For Chart Axis - @jrking4 GH-186 - ODPresentation & PowerPoint2007 Writer : Support for video - @Progi1984 GH-123 - ODPresentation & PowerPoint2007 Writer : Support for Visibility for slides - @Progi1984 -- PowerPoint2007 Reader : Layout Management - @vincentKool @Progi1984 GH-161 -- PowerPoint2007 Reader : Slide size - @loverslcn @Progi1984 GH-246 -- PowerPoint2007 Reader : Bullet Color - @Progi1984 GH-257 -- PowerPoint2007 Reader : Line Spacing - @Progi1984 GH-257 +- PowerPoint2007 Reader : Layout Management - @vincentKool @Progi1984 GH-161 +- PowerPoint2007 Reader : Slide size - @loverslcn @Progi1984 GH-246 +- PowerPoint2007 Reader : Bullet Color - @Progi1984 GH-257 +- PowerPoint2007 Reader : Line Spacing - @Progi1984 GH-257 - PowerPoint2007 Writer : Presentation with predefined View Type - @Progi1984 GH-120 - PowerPoint2007 Writer : Implement alpha channel to Fills - @Dayjo GH-203 / @Progi1984 GH-215 - PowerPoint2007 Writer : Implement Animations - @JewrassicPark GH-214 / @Progi1984 GH-217 - PowerPoint2007 Writer : Layout Management - @vincentKool @Progi1984 GH-161 -- PowerPoint2007 Writer : Bullet Color - @piotrbelina GH-249 -- PowerPoint2007 Writer : Line Spacing - @piotrbelina GH-249 +- PowerPoint2007 Writer : Bullet Color - @piotrbelina GH-249 +- PowerPoint2007 Writer : Line Spacing - @piotrbelina GH-249 ## 0.6.0 - 2016-01-24 @@ -175,7 +175,7 @@ - PowerPoint2007 Writer : Hyperlink in table doesn't work - @Progi1984 GH-70 - PowerPoint2007 Writer : AutoFitNormal works with options (fontScale & lineSpacingReduction) - @Progi1984 @desigennaro GH-71 - PowerPoint2007 Writer : Shadow don't work for RichTextShapes - @Progi1984 GH-81 -- PowerPoint2007 Writer : Visibility of the Title doesn't work - @Progi1984 GH-107 +- PowerPoint2007 Writer : Visibility of the Title doesn't work - @Progi1984 GH-107 - Refactor findLayoutIndex to findLayoutId where it assumes the slideLayout order was sorted. IMPROVED: unit tests - @kenliau GH-95 ### Miscellaneous @@ -257,7 +257,7 @@ - QA: Prepare `.travis.yml` and `phpcs.xml` for Travis build passing - @Progi1984 @ivanlanin - QA: Initiate unit tests - @Progi1984 @ivanlanin - QA: Cleanup source code for PSR dan PHPDoc compatibility - @ivanlanin -- QA: Unit Tests - @Progi1984 & @ivanlanin +- QA: Unit Tests - @Progi1984 & @ivanlanin - Doc: Initiate documentation - @ivanlanin - Doc: Move to [Read The Docs](http://phppowerpoint.readthedocs.org) - @Progi1984 - Refactor: Change PHPPowerPoint_Shape_Shadow to PHPPowerPoint_Style_Shadow because it's a style, not a shape - @ivanlanin diff --git a/README.md b/README.md index feddca3aac..0c3edc2812 100644 --- a/README.md +++ b/README.md @@ -1,150 +1,150 @@ -# ![PHPPresentation](https://raw.githubusercontent.com/mvargasmoran/PHPPresentation/develop/docs/images/PHPPresentationLogo.png "PHPPresentation") - -[![Latest Stable Version](https://poser.pugx.org/phpoffice/phppresentation/v/stable.png)](https://packagist.org/packages/phpoffice/phppresentation) -[![Code Climate](https://codeclimate.com/github/PHPOffice/PHPPresentation/badges/gpa.svg)](https://codeclimate.com/github/PHPOffice/PHPPresentation) -[![Test Coverage](https://codeclimate.com/github/PHPOffice/PHPPresentation/badges/coverage.svg)](https://codeclimate.com/github/PHPOffice/PHPPresentation/coverage) -[![Total Downloads](https://poser.pugx.org/phpoffice/phppresentation/downloads.png)](https://packagist.org/packages/phpoffice/phppresentation) -[![License](https://poser.pugx.org/phpoffice/phppresentation/license.png)](https://packagist.org/packages/phpoffice/phppresentation) -[![BountySource](https://img.shields.io/bountysource/team/phpoffice/activity.svg)](https://www.bountysource.com/teams/phpoffice) -[![Join the chat at https://gitter.im/PHPOffice/PHPPresentation](https://img.shields.io/badge/GITTER-join%20chat-green.svg)](https://gitter.im/PHPOffice/PHPPresentation) - -Branch Master : [![Build Status](https://travis-ci.org/PHPOffice/PHPPresentation.svg?branch=master)](https://travis-ci.org/PHPOffice/PHPPresentation) [![Documentation Status](https://readthedocs.org/projects/phppresentation/badge/?version=master)](http://phppresentation.readthedocs.io/en/latest/?badge=master) -Branch Develop : [![Build Status](https://travis-ci.org/PHPOffice/PHPPresentation.svg?branch=develop)](https://travis-ci.org/PHPOffice/PHPPresentation) [![Documentation Status](https://readthedocs.org/projects/phppresentation/badge/?version=develop)](http://phppresentation.readthedocs.io/en/latest/?badge=develop) - -PHPPresentation is a library written in pure PHP that provides a set of classes to write to different presentation file formats, i.e. Microsoft [Office Open XML](http://en.wikipedia.org/wiki/Office_Open_XML) (OOXML or OpenXML) or OASIS [Open Document Format for Office Applications](http://en.wikipedia.org/wiki/OpenDocument) (OpenDocument or ODF). - -PHPPresentation is an open source project licensed under the terms of [LGPL version 3](https://github.com/PHPOffice/PHPPresentation/blob/develop/COPYING.LESSER). PHPPresentation is aimed to be a high quality software product by incorporating [continuous integration](https://travis-ci.org/PHPOffice/PHPPresentation) and [unit testing](http://phpoffice.github.io/PHPPresentation/coverage/develop/). You can learn more about PHPPresentation by reading the [Developers' Documentation](http://phppresentation.readthedocs.org/) and the [API Documentation](http://phpoffice.github.io/PHPPresentation/docs/develop/). - -Read more about PHPPresentation: - -- [Features](#features) -- [Requirements](#requirements) -- [Installation](#installation) -- [Getting started](#getting-started) -- [Contributing](#contributing) -- [Developers' Documentation](http://phppresentation.readthedocs.org/) -- [API Documentation](http://phpoffice.github.io/PHPPresentation/docs/master/) - -### Features - -- Create an in-memory presentation representation -- Set presentation meta data (author, title, description, etc) -- Add slides from scratch or from existing one -- Supports different fonts and font styles -- Supports different formatting, styles, fills, gradients -- Supports hyperlinks and rich-text strings -- Add images with different styles (positioning, rotation, shadow) -- Set printing options (header, footer, page margins, paper size, orientation) -- Set transitions between slides -- Output to different file formats: PowerPoint 2007 (.pptx), OpenDocument Presentation (.odp), Serialized Presentation) -- ... and lots of other things! - -### Requirements - -PHPPresentation requires the following: - -- PHP 5.3+ -- [Zip extension](http://php.net/manual/en/book.zip.php) -- [XML Parser extension](http://www.php.net/manual/en/xml.installation.php) -- [XMLWriter extension](http://php.net/manual/en/book.xmlwriter.php) (optional, used to write DOCX and ODT) -- [GD](http://php.net/manual/en/book.image.php) - -### Installation - -#### Composer method - -It is recommended that you install the PHPPresentation library [through composer](http://getcomposer.org/). To do so, add -the following lines to your ``composer.json``. - -```json -{ - "require": { - "phpoffice/phppresentation": "dev-master" - } -} -``` - -#### Manual download method - -Alternatively, you can download the latest release from the [releases page](https://github.com/PHPOffice/PHPPresentation/releases). -In this case, you will have to register the autoloader. -(Register autoloading is required only if you do not use composer in your project.) - -```php -require_once 'path/to/PhpPresentation/src/PhpPresentation/Autoloader.php'; -\PhpOffice\PhpPresentation\Autoloader::register(); -``` - -You will also need to download the latest PHPOffice/Common release from its [releases page](https://github.com/PHPOffice/Common/releases). -And you will also have to register its autoloader, too. - -```php -require_once 'path/to/PhpOffice/Common/src/Common/Autoloader.php'; -\PhpOffice\Common\Autoloader::register(); -``` - -## Getting started - -The following is a basic usage example of the PHPPresentation library. - -```php -// with your own install -require_once 'src/PhpPresentation/Autoloader.php'; -\PhpOffice\PhpPresentation\Autoloader::register(); -require_once 'src/Common/Autoloader.php'; -\PhpOffice\Common\Autoloader::register(); - -// with Composer -require_once 'vendor/autoload.php'; - -use PhpOffice\PhpPresentation\PhpPresentation; -use PhpOffice\PhpPresentation\IOFactory; -use PhpOffice\PhpPresentation\Style\Color; -use PhpOffice\PhpPresentation\Style\Alignment; - -$objPHPPowerPoint = new PhpPresentation(); - -// Create slide -$currentSlide = $objPHPPowerPoint->getActiveSlide(); - -// Create a shape (drawing) -$shape = $currentSlide->createDrawingShape(); -$shape->setName('PHPPresentation logo') - ->setDescription('PHPPresentation logo') - ->setPath('./resources/phppowerpoint_logo.gif') - ->setHeight(36) - ->setOffsetX(10) - ->setOffsetY(10); -$shape->getShadow()->setVisible(true) - ->setDirection(45) - ->setDistance(10); - -// Create a shape (text) -$shape = $currentSlide->createRichTextShape() - ->setHeight(300) - ->setWidth(600) - ->setOffsetX(170) - ->setOffsetY(180); -$shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_CENTER ); -$textRun = $shape->createTextRun('Thank you for using PHPPresentation!'); -$textRun->getFont()->setBold(true) - ->setSize(60) - ->setColor( new Color( 'FFE06B20' ) ); - -$oWriterPPTX = IOFactory::createWriter($objPHPPowerPoint, 'PowerPoint2007'); -$oWriterPPTX->save(__DIR__ . "/sample.pptx"); -$oWriterODP = IOFactory::createWriter($objPHPPowerPoint, 'ODPresentation'); -$oWriterODP->save(__DIR__ . "/sample.odp"); -``` - -More examples are provided in the [samples folder](samples/). You can also read the [Developers' Documentation](http://phppresentation.readthedocs.org/) and the [API Documentation](http://phpoffice.github.io/PHPPresentation/docs/master/) for more detail. - - -## Contributing - -We welcome everyone to contribute to PHPPresentation. Below are some of the things that you can do to contribute: - -- Read [our contributing guide](https://github.com/PHPOffice/PHPPresentation/blob/master/CONTRIBUTING.md) -- [Fork us](https://github.com/PHPOffice/PHPPresentation/fork) and [request a pull](https://github.com/PHPOffice/PHPPresentation/pulls) to the [develop](https://github.com/PHPOffice/PHPPresentation/tree/develop) branch -- Submit [bug reports or feature requests](https://github.com/PHPOffice/PHPPresentation/issues) to GitHub -- Follow [@PHPOffice](https://twitter.com/PHPOffice) on Twitter +# ![PHPPresentation](https://raw.githubusercontent.com/mvargasmoran/PHPPresentation/develop/docs/images/PHPPresentationLogo.png "PHPPresentation") + +[![Latest Stable Version](https://poser.pugx.org/phpoffice/phppresentation/v/stable.png)](https://packagist.org/packages/phpoffice/phppresentation) +[![Code Climate](https://codeclimate.com/github/PHPOffice/PHPPresentation/badges/gpa.svg)](https://codeclimate.com/github/PHPOffice/PHPPresentation) +[![Test Coverage](https://codeclimate.com/github/PHPOffice/PHPPresentation/badges/coverage.svg)](https://codeclimate.com/github/PHPOffice/PHPPresentation/coverage) +[![Total Downloads](https://poser.pugx.org/phpoffice/phppresentation/downloads.png)](https://packagist.org/packages/phpoffice/phppresentation) +[![License](https://poser.pugx.org/phpoffice/phppresentation/license.png)](https://packagist.org/packages/phpoffice/phppresentation) +[![BountySource](https://img.shields.io/bountysource/team/phpoffice/activity.svg)](https://www.bountysource.com/teams/phpoffice) +[![Join the chat at https://gitter.im/PHPOffice/PHPPresentation](https://img.shields.io/badge/GITTER-join%20chat-green.svg)](https://gitter.im/PHPOffice/PHPPresentation) + +Branch Master : [![Build Status](https://travis-ci.org/PHPOffice/PHPPresentation.svg?branch=master)](https://travis-ci.org/PHPOffice/PHPPresentation) [![Documentation Status](https://readthedocs.org/projects/phppresentation/badge/?version=master)](http://phppresentation.readthedocs.io/en/latest/?badge=master) +Branch Develop : [![Build Status](https://travis-ci.org/PHPOffice/PHPPresentation.svg?branch=develop)](https://travis-ci.org/PHPOffice/PHPPresentation) [![Documentation Status](https://readthedocs.org/projects/phppresentation/badge/?version=develop)](http://phppresentation.readthedocs.io/en/latest/?badge=develop) + +PHPPresentation is a library written in pure PHP that provides a set of classes to write to different presentation file formats, i.e. Microsoft [Office Open XML](http://en.wikipedia.org/wiki/Office_Open_XML) (OOXML or OpenXML) or OASIS [Open Document Format for Office Applications](http://en.wikipedia.org/wiki/OpenDocument) (OpenDocument or ODF). + +PHPPresentation is an open source project licensed under the terms of [LGPL version 3](https://github.com/PHPOffice/PHPPresentation/blob/develop/COPYING.LESSER). PHPPresentation is aimed to be a high quality software product by incorporating [continuous integration](https://travis-ci.org/PHPOffice/PHPPresentation) and [unit testing](http://phpoffice.github.io/PHPPresentation/coverage/develop/). You can learn more about PHPPresentation by reading the [Developers' Documentation](http://phppresentation.readthedocs.org/) and the [API Documentation](http://phpoffice.github.io/PHPPresentation/docs/develop/). + +Read more about PHPPresentation: + +- [Features](#features) +- [Requirements](#requirements) +- [Installation](#installation) +- [Getting started](#getting-started) +- [Contributing](#contributing) +- [Developers' Documentation](http://phppresentation.readthedocs.org/) +- [API Documentation](http://phpoffice.github.io/PHPPresentation/docs/master/) + +### Features + +- Create an in-memory presentation representation +- Set presentation meta data (author, title, description, etc) +- Add slides from scratch or from existing one +- Supports different fonts and font styles +- Supports different formatting, styles, fills, gradients +- Supports hyperlinks and rich-text strings +- Add images with different styles (positioning, rotation, shadow) +- Set printing options (header, footer, page margins, paper size, orientation) +- Set transitions between slides +- Output to different file formats: PowerPoint 2007 (.pptx), OpenDocument Presentation (.odp), Serialized Presentation) +- ... and lots of other things! + +### Requirements + +PHPPresentation requires the following: + +- PHP 5.3+ +- [Zip extension](http://php.net/manual/en/book.zip.php) +- [XML Parser extension](http://www.php.net/manual/en/xml.installation.php) +- [XMLWriter extension](http://php.net/manual/en/book.xmlwriter.php) (optional, used to write DOCX and ODT) +- [GD](http://php.net/manual/en/book.image.php) + +### Installation + +#### Composer method + +It is recommended that you install the PHPPresentation library [through composer](http://getcomposer.org/). To do so, add +the following lines to your ``composer.json``. + +```json +{ + "require": { + "phpoffice/phppresentation": "dev-master" + } +} +``` + +#### Manual download method + +Alternatively, you can download the latest release from the [releases page](https://github.com/PHPOffice/PHPPresentation/releases). +In this case, you will have to register the autoloader. +(Register autoloading is required only if you do not use composer in your project.) + +```php +require_once 'path/to/PhpPresentation/src/PhpPresentation/Autoloader.php'; +\PhpOffice\PhpPresentation\Autoloader::register(); +``` + +You will also need to download the latest PHPOffice/Common release from its [releases page](https://github.com/PHPOffice/Common/releases). +And you will also have to register its autoloader, too. + +```php +require_once 'path/to/PhpOffice/Common/src/Common/Autoloader.php'; +\PhpOffice\Common\Autoloader::register(); +``` + +## Getting started + +The following is a basic usage example of the PHPPresentation library. + +```php +// with your own install +require_once 'src/PhpPresentation/Autoloader.php'; +\PhpOffice\PhpPresentation\Autoloader::register(); +require_once 'src/Common/Autoloader.php'; +\PhpOffice\Common\Autoloader::register(); + +// with Composer +require_once 'vendor/autoload.php'; + +use PhpOffice\PhpPresentation\PhpPresentation; +use PhpOffice\PhpPresentation\IOFactory; +use PhpOffice\PhpPresentation\Style\Color; +use PhpOffice\PhpPresentation\Style\Alignment; + +$objPHPPowerPoint = new PhpPresentation(); + +// Create slide +$currentSlide = $objPHPPowerPoint->getActiveSlide(); + +// Create a shape (drawing) +$shape = $currentSlide->createDrawingShape(); +$shape->setName('PHPPresentation logo') + ->setDescription('PHPPresentation logo') + ->setPath('./resources/phppowerpoint_logo.gif') + ->setHeight(36) + ->setOffsetX(10) + ->setOffsetY(10); +$shape->getShadow()->setVisible(true) + ->setDirection(45) + ->setDistance(10); + +// Create a shape (text) +$shape = $currentSlide->createRichTextShape() + ->setHeight(300) + ->setWidth(600) + ->setOffsetX(170) + ->setOffsetY(180); +$shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_CENTER ); +$textRun = $shape->createTextRun('Thank you for using PHPPresentation!'); +$textRun->getFont()->setBold(true) + ->setSize(60) + ->setColor( new Color( 'FFE06B20' ) ); + +$oWriterPPTX = IOFactory::createWriter($objPHPPowerPoint, 'PowerPoint2007'); +$oWriterPPTX->save(__DIR__ . "/sample.pptx"); +$oWriterODP = IOFactory::createWriter($objPHPPowerPoint, 'ODPresentation'); +$oWriterODP->save(__DIR__ . "/sample.odp"); +``` + +More examples are provided in the [samples folder](samples/). You can also read the [Developers' Documentation](http://phppresentation.readthedocs.org/) and the [API Documentation](http://phpoffice.github.io/PHPPresentation/docs/master/) for more detail. + + +## Contributing + +We welcome everyone to contribute to PHPPresentation. Below are some of the things that you can do to contribute: + +- Read [our contributing guide](https://github.com/PHPOffice/PHPPresentation/blob/master/CONTRIBUTING.md) +- [Fork us](https://github.com/PHPOffice/PHPPresentation/fork) and [request a pull](https://github.com/PHPOffice/PHPPresentation/pulls) to the [develop](https://github.com/PHPOffice/PHPPresentation/tree/develop) branch +- Submit [bug reports or feature requests](https://github.com/PHPOffice/PHPPresentation/issues) to GitHub +- Follow [@PHPOffice](https://twitter.com/PHPOffice) on Twitter diff --git a/docs/index.rst b/docs/index.rst index d88c933c42..b9be7e30e5 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -39,7 +39,7 @@ PHPPresentation is a library written in pure PHP that provides a set of classes .. toctree:: :maxdepth: 2 :caption: Shapes - + shapes_chart shapes_comment shapes_drawing diff --git a/docs/intro.rst b/docs/intro.rst index 74b5bca5bf..cd386f0678 100644 --- a/docs/intro.rst +++ b/docs/intro.rst @@ -3,11 +3,11 @@ Introduction ============ -PHPPresentation is a library written in pure PHP that provides a set of -classes to write to different presentation file formats, i.e. Microsoft -`Office Open XML ` -(.pptx) and OASIS `Open Document Format for Office Applications -`__ (.odp). +PHPPresentation is a library written in pure PHP that provides a set of +classes to write to different presentation file formats, i.e. Microsoft +`Office Open XML ` +(.pptx) and OASIS `Open Document Format for Office Applications +`__ (.odp). PHPPresentation is an open source project licensed under the terms of `LGPL version 3 `__. diff --git a/docs/references.rst b/docs/references.rst index bea9c0cc40..02cbb36b93 100644 --- a/docs/references.rst +++ b/docs/references.rst @@ -8,7 +8,7 @@ OpenXML Known as "ISO/IEC 29500, Third edition, 2012-09-01" -ISO : +ISO : - `Part 1: Fundamentals and Markup Language Reference `__ @@ -32,7 +32,7 @@ OpenDocument - `Oasis OpenDocument Standard Version 1.2 `__ - + PowerPoint 97 --------------- diff --git a/docs/shapes_chart.rst b/docs/shapes_chart.rst index f5994bd3de..040dd467d9 100644 --- a/docs/shapes_chart.rst +++ b/docs/shapes_chart.rst @@ -100,7 +100,7 @@ You can define visibility for each axis (X & Y). Title ^^^^^ -By default, the title of a chart is displayed. +By default, the title of a chart is displayed. For hiding it, you define its visibility to false. .. code-block:: php diff --git a/docs/shapes_table.rst b/docs/shapes_table.rst index 32be173f4e..5d5782f440 100644 --- a/docs/shapes_table.rst +++ b/docs/shapes_table.rst @@ -20,7 +20,7 @@ A row is a child of a table. For creating a row, use `createRow` method of a Tab $tableShape = $slide->createTableShape($columns); $row = $tableShape->createRow(); - + Cells ------- A cell is a child of a row. @@ -35,7 +35,7 @@ You can access cell objects with `nextCell` method of a Row object. $cellA1 = $row->nextCell(); // Get the second cell $cellA2 = $row->nextCell(); - + You can access cell object directly. .. code-block:: php From 4ef5ce743baf9c43b2a2f62f295ee20d2dcc493e Mon Sep 17 00:00:00 2001 From: Gabriel Caruso Date: Sun, 31 Dec 2017 09:56:53 -0200 Subject: [PATCH 048/139] Remove extra lines Signed-off-by: Gabriel Caruso --- CHANGELOG.md | 1 - README.md | 1 - docs/general.rst | 1 - docs/references.rst | 1 - docs/shapes_chart.rst | 1 - docs/shapes_comment.rst | 1 - docs/shapes_drawing.rst | 1 - docs/shapes_media.rst | 1 - docs/shapes_richtext.rst | 3 --- docs/shapes_table.rst | 3 --- docs/writers.rst | 1 - 11 files changed, 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3373210c4a..b3c8b58d11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -249,7 +249,6 @@ - PowerPoint2007 Writer: Scatter chart with numerical X values not working well - @Progi1984 GH-3 - Shape RichText: Support of Vertical Alignment in PowerPoint2007 - @Progi1984 GH-35 - ### Miscellaneous - Rename PHPPowerpoint.php to PHPPowerPoint.php - @maartenba CP-1165 diff --git a/README.md b/README.md index 0c3edc2812..3a31475ba4 100644 --- a/README.md +++ b/README.md @@ -139,7 +139,6 @@ $oWriterODP->save(__DIR__ . "/sample.odp"); More examples are provided in the [samples folder](samples/). You can also read the [Developers' Documentation](http://phppresentation.readthedocs.org/) and the [API Documentation](http://phpoffice.github.io/PHPPresentation/docs/master/) for more detail. - ## Contributing We welcome everyone to contribute to PHPPresentation. Below are some of the things that you can do to contribute: diff --git a/docs/general.rst b/docs/general.rst index d24c884e73..7bf0473312 100644 --- a/docs/general.rst +++ b/docs/general.rst @@ -69,7 +69,6 @@ name. Use the following functions : $properties->setSubject('My subject'); $properties->setKeywords('my, key, word'); - Presentation Properties ----------------------- diff --git a/docs/references.rst b/docs/references.rst index 02cbb36b93..b07b356445 100644 --- a/docs/references.rst +++ b/docs/references.rst @@ -32,7 +32,6 @@ OpenDocument - `Oasis OpenDocument Standard Version 1.2 `__ - PowerPoint 97 --------------- diff --git a/docs/shapes_chart.rst b/docs/shapes_chart.rst index 040dd467d9..144798877d 100644 --- a/docs/shapes_chart.rst +++ b/docs/shapes_chart.rst @@ -229,7 +229,6 @@ You can stack multiples series in a same chart. After adding multiples series, y :width: 120px :alt: Bar::GROUPING_PERCENTSTACKED - Line ^^^^ diff --git a/docs/shapes_comment.rst b/docs/shapes_comment.rst index 6ad217b474..ec2f310ae7 100644 --- a/docs/shapes_comment.rst +++ b/docs/shapes_comment.rst @@ -27,7 +27,6 @@ Example: $oComment->setDate(time()); $oSlide->addShape($oComment); - Author ------ diff --git a/docs/shapes_drawing.rst b/docs/shapes_drawing.rst index 7777951f7c..4a1762d4ef 100644 --- a/docs/shapes_drawing.rst +++ b/docs/shapes_drawing.rst @@ -46,7 +46,6 @@ GD ->setMimeType(Drawing\Gd::MIMETYPE_DEFAULT); $oSlide->addShape($oShape); - Base64 ------ diff --git a/docs/shapes_media.rst b/docs/shapes_media.rst index ba3fddec10..efc5fc8549 100644 --- a/docs/shapes_media.rst +++ b/docs/shapes_media.rst @@ -28,7 +28,6 @@ Example: $oMedia->setName('Name of the Media'); $oSlide->addShape($oMedia); - Quirks ------ diff --git a/docs/shapes_richtext.rst b/docs/shapes_richtext.rst index e8987cb64b..15528c8f0b 100644 --- a/docs/shapes_richtext.rst +++ b/docs/shapes_richtext.rst @@ -30,7 +30,6 @@ Properties that can be set for each paragraphs are as follow. - ``lineSpacing`` see *[LineSpacing](#linespacing)* - ``font`` see *[Font](#font)* - Bullet ------ @@ -59,7 +58,6 @@ With the bullet style, you can define the char, the font, the color and the type $oParagraph->getBulletStyle()->setBulletType(Bullet::TYPE_BULLET); $oParagraph->getBulletStyle()->setBulletColor(new Color(Color::COLOR_RED)); - LineSpacing ----------- @@ -75,7 +73,6 @@ Example: $oParagraph->setLineSpacing(200); $iLineSpacing = $oParagraph->getLineSpacing(); - Run --- diff --git a/docs/shapes_table.rst b/docs/shapes_table.rst index 5d5782f440..cf8d6a3c8e 100644 --- a/docs/shapes_table.rst +++ b/docs/shapes_table.rst @@ -47,7 +47,6 @@ You can access cell object directly. // Get the second cell $cellA2 = $row->getCell(1); - Define margins of a cell ~~~~~~~~~~~~~~~~~~~~~~~~ Margins of cells are defined by margins of the first paragraph of cell. @@ -66,7 +65,6 @@ For defining margins of cell, you can use the `setMargin*` method of a Alignment ->setMarginRight(60) ->setMarginTop(80); - Define the text direction of a cell ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For defining the text direction of cell, you can use the `setTextDirection` method of the `getAlignment` method of a Cell object. @@ -79,7 +77,6 @@ The width is in pixels. $cellA1 = $row->nextCell(); $cellA1->getAlignment()->setTextDirection(\PhpOffice\PhpPresentation\Style\Alignment::TEXT_DIRECTION_VERTICAL_270); - Define the width of a cell ~~~~~~~~~~~~~~~~~~~~~~~~~~ The width of cells are defined by the width of cell of the first row. diff --git a/docs/writers.rst b/docs/writers.rst index e1105290e3..09333a3fd2 100644 --- a/docs/writers.rst +++ b/docs/writers.rst @@ -3,7 +3,6 @@ Writers ======= - ODPresentation -------------- From 3b710b39247fdaa06c8e8ef23b93f645e168bfde Mon Sep 17 00:00:00 2001 From: Gabriel Caruso Date: Tue, 16 Jan 2018 20:44:55 -0200 Subject: [PATCH 049/139] Simplify return --- src/PhpPresentation/Shape/Chart/Series.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PhpPresentation/Shape/Chart/Series.php b/src/PhpPresentation/Shape/Chart/Series.php index 63010293dd..d3f6ca5371 100644 --- a/src/PhpPresentation/Shape/Chart/Series.php +++ b/src/PhpPresentation/Shape/Chart/Series.php @@ -416,7 +416,7 @@ public function setShowPercentage($value) */ public function hasShowSeparator() { - return is_null($this->separator) ? false : true; + return !is_null($this->separator); } /** From 9a82da2870ec05730443d7035b16b62b59f6c520 Mon Sep 17 00:00:00 2001 From: Jason Kelly Date: Mon, 5 Feb 2018 12:29:22 +1300 Subject: [PATCH 050/139] Change group shape extents to reflect content width/height. Previously the group extents where calculated based on the extents of the containing shapes using the slide/container of the group as the point of reference. This would result in the group being larger than needed; especially noticable for a large X or Y offest. --- src/PhpPresentation/Shape/Group.php | 8 ++--- .../PhpPresentation/Tests/Shape/GroupTest.php | 36 ++++++++++--------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/PhpPresentation/Shape/Group.php b/src/PhpPresentation/Shape/Group.php index 8b13dd79b0..ba3207a293 100644 --- a/src/PhpPresentation/Shape/Group.php +++ b/src/PhpPresentation/Shape/Group.php @@ -145,8 +145,8 @@ public function getExtentX() { if ($this->extentX === null) { $extents = GeometryCalculator::calculateExtents($this); - $this->extentX = $extents[GeometryCalculator::X]; - $this->extentY = $extents[GeometryCalculator::Y]; + $this->extentX = $extents[GeometryCalculator::X] - $this->getOffsetX(); + $this->extentY = $extents[GeometryCalculator::Y] - $this->getOffsetY(); } return $this->extentX; @@ -161,8 +161,8 @@ public function getExtentY() { if ($this->extentY === null) { $extents = GeometryCalculator::calculateExtents($this); - $this->extentX = $extents[GeometryCalculator::X]; - $this->extentY = $extents[GeometryCalculator::Y]; + $this->extentX = $extents[GeometryCalculator::X] - $this->getOffsetX(); + $this->extentY = $extents[GeometryCalculator::Y] - $this->getOffsetY(); } return $this->extentY; diff --git a/tests/PhpPresentation/Tests/Shape/GroupTest.php b/tests/PhpPresentation/Tests/Shape/GroupTest.php index dbfa82dcda..9be88952e2 100644 --- a/tests/PhpPresentation/Tests/Shape/GroupTest.php +++ b/tests/PhpPresentation/Tests/Shape/GroupTest.php @@ -56,25 +56,25 @@ public function testAdd() public function testExtentX() { $object = new Group(); - $line1 = new Line(10, 20, 30, 40); + $line1 = new Line(10, 20, 30, 50); $object->addShape($line1); - $this->assertEquals(30, $object->getExtentX()); + $this->assertEquals(20, $object->getExtentX()); } public function testExtentY() { $object = new Group(); - $line1 = new Line(10, 20, 30, 40); + $line1 = new Line(10, 20, 30, 50); $object->addShape($line1); - $this->assertEquals(40, $object->getExtentY()); + $this->assertEquals(30, $object->getExtentY()); } public function testOffsetX() { $object = new Group(); - $line1 = new Line(10, 20, 30, 40); + $line1 = new Line(10, 20, 30, 50); $object->addShape($line1); $this->assertEquals(10, $object->getOffsetX()); @@ -86,7 +86,7 @@ public function testOffsetX() public function testOffsetY() { $object = new Group(); - $line1 = new Line(10, 20, 30, 40); + $line1 = new Line(10, 20, 30, 50); $object->addShape($line1); $this->assertEquals(20, $object->getOffsetY()); @@ -102,11 +102,13 @@ public function testExtentsAndOffsetsForOneShape() // from the extents to produce a raw width and height. $offsetX = 100; $offsetY = 100; - $extentX = 1000; - $extentY = 450; + $endX = 1000; + $endY = 450; + $extentX = $endX - $offsetX; + $extentY = $endY - $offsetY; $object = new Group(); - $line1 = new Line($offsetX, $offsetY, $extentX, $extentY); + $line1 = new Line($offsetX, $offsetY, $endX, $endY); $object->addShape($line1); $this->assertEquals($offsetX, $object->getOffsetX()); @@ -123,16 +125,18 @@ public function testExtentsAndOffsetsForTwoShapes() // combined with the above. $offsetX = 100; $offsetY = 100; - $extentX = 1000; - $extentY = 450; + $endX = 1000; + $endY = 450; $increase = 50; + $extentX = ($endX - $offsetX) + $increase; + $extentY = ($endY - $offsetY) + $increase; - $line1 = new Line($offsetX, $offsetY, $extentX, $extentY); + $line1 = new Line($offsetX, $offsetY, $endX, $endY); $line2 = new Line( $offsetX+$increase, $offsetY+$increase, - $extentX+$increase, - $extentY+$increase + $endX+$increase, + $endY+$increase ); $object = new Group(); @@ -142,7 +146,7 @@ public function testExtentsAndOffsetsForTwoShapes() $this->assertEquals($offsetX, $object->getOffsetX()); $this->assertEquals($offsetY, $object->getOffsetY()); - $this->assertEquals($extentX+$increase, $object->getExtentX()); - $this->assertEquals($extentY+$increase, $object->getExtentY()); + $this->assertEquals($extentX, $object->getExtentX()); + $this->assertEquals($extentY, $object->getExtentY()); } } From 02aa18fe645bb42a1776d5e9407dbbc6a520de0a Mon Sep 17 00:00:00 2001 From: Burak Kanber Date: Thu, 8 Feb 2018 10:52:31 -0500 Subject: [PATCH 051/139] Remove % signs from PptCharts to fix chart generation. Fixes #452 --- src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php | 4 ++-- .../Tests/Writer/PowerPoint2007/PptChartsTest.php | 2 +- tests/resources/schema/ooxml/dml-chart.xsd | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index 1628cb3e9c..bfedd4727e 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -105,7 +105,7 @@ public function writeChart(Chart $chart) // c:hPercent $hPercent = $chart->getView3D()->getHeightPercent(); - $objWriter->writeElementIf($hPercent != null, 'c:hPercent', 'val', $hPercent . '%'); + $objWriter->writeElementIf($hPercent != null, 'c:hPercent', 'val', $hPercent); // c:rotY $objWriter->startElement('c:rotY'); @@ -2322,7 +2322,7 @@ protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis, // c:lblOffset $objWriter->startElement('c:lblOffset'); - $objWriter->writeAttribute('val', '100%'); + $objWriter->writeAttribute('val', '100'); $objWriter->endElement(); } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php index 38ac1e113b..47d3ef57d9 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php @@ -988,7 +988,7 @@ public function testView3D() $element = '/c:chartSpace/c:chart/c:view3D/c:hPercent'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '100%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '100'); $oShape->getView3D()->setHeightPercent(null); $this->resetPresentationFile(); diff --git a/tests/resources/schema/ooxml/dml-chart.xsd b/tests/resources/schema/ooxml/dml-chart.xsd index 91559f2ce6..5f82ced4bc 100644 --- a/tests/resources/schema/ooxml/dml-chart.xsd +++ b/tests/resources/schema/ooxml/dml-chart.xsd @@ -194,7 +194,7 @@
    - + @@ -202,7 +202,7 @@ - + @@ -1164,7 +1164,7 @@
    - + @@ -1172,7 +1172,7 @@ - + From 4015666a7d69edf57909d5b051e27c19c0475ee4 Mon Sep 17 00:00:00 2001 From: karlos Date: Mon, 12 Feb 2018 10:03:41 +0100 Subject: [PATCH 052/139] Solve Problems with png transparencies --- src/PhpPresentation/Shape/Drawing/Gd.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/PhpPresentation/Shape/Drawing/Gd.php b/src/PhpPresentation/Shape/Drawing/Gd.php index f69b345ea9..d4509d922d 100644 --- a/src/PhpPresentation/Shape/Drawing/Gd.php +++ b/src/PhpPresentation/Shape/Drawing/Gd.php @@ -132,6 +132,10 @@ public function setMimeType($value = self::MIMETYPE_DEFAULT) public function getContents() { ob_start(); + if ($this->getMimeType() === self::MIMETYPE_DEFAULT) { + imagealphablending($this->getImageResource(), false); + imagesavealpha($this->getImageResource(), true); + } call_user_func($this->getRenderingFunction(), $this->getImageResource()); $imageContents = ob_get_contents(); ob_end_clean(); From fd711d4d6aac95d14a33be9100d7368bf9aea299 Mon Sep 17 00:00:00 2001 From: Andrey Bolonin Date: Wed, 21 Feb 2018 15:39:43 +0200 Subject: [PATCH 053/139] Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 55a0b0a80b..a74cf0feba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ php: - 5.6 - 7.0 - 7.1 + - 7.2 - hhvm matrix: From 3dea055a6326e9205c1591882d9287e9bc9c9535 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Mon, 12 Mar 2018 16:35:24 +0900 Subject: [PATCH 054/139] Use proper name for `ext-gd` `ext-gd2` is not recognized by composer and should instead be `ext-gd`. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index c8fa0c7b52..6b0bbcdfaf 100644 --- a/composer.json +++ b/composer.json @@ -34,7 +34,7 @@ "codeclimate/php-test-reporter": "dev-master" }, "suggest": { - "ext-gd2": "Required to add images" + "ext-gd": "Required to add images" }, "autoload": { "psr-4": { From 97da2d90b803867f362d201e63378221d315c2ea Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Thu, 18 Oct 2018 09:57:14 +0200 Subject: [PATCH 055/139] Create auto_assign.yml --- .github/auto_assign.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/auto_assign.yml diff --git a/.github/auto_assign.yml b/.github/auto_assign.yml new file mode 100644 index 0000000000..ae99d1af81 --- /dev/null +++ b/.github/auto_assign.yml @@ -0,0 +1,17 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: true + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - Progi1984 + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +skipKeywords: + - WIP + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 0 From d07784c877c2557a04389c04e72e74678e7bc667 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Noblot Date: Tue, 23 Oct 2018 14:32:36 +0200 Subject: [PATCH 056/139] Fix PHP Docs --- src/PhpPresentation/AbstractShape.php | 3 +- src/PhpPresentation/IOFactory.php | 7 +- src/PhpPresentation/PhpPresentation.php | 9 ++- .../PresentationProperties.php | 6 +- src/PhpPresentation/Reader/ODPresentation.php | 23 +++++-- src/PhpPresentation/Reader/PowerPoint2007.php | 14 +++- src/PhpPresentation/Reader/PowerPoint97.php | 47 ++++++++++++- src/PhpPresentation/Shape/Chart/Axis.php | 2 +- src/PhpPresentation/Shape/Chart/Legend.php | 11 ++-- src/PhpPresentation/Shape/Chart/PlotArea.php | 9 +-- src/PhpPresentation/Shape/Chart/Series.php | 4 +- src/PhpPresentation/Shape/Chart/Title.php | 3 +- .../Shape/Chart/Type/AbstractType.php | 4 +- .../Shape/Chart/Type/AbstractTypeBar.php | 4 +- src/PhpPresentation/Shape/Chart/View3D.php | 1 + src/PhpPresentation/Shape/Drawing/Base64.php | 1 + src/PhpPresentation/Shape/Drawing/File.php | 2 +- src/PhpPresentation/Shape/Drawing/ZipFile.php | 4 +- src/PhpPresentation/Shape/Group.php | 66 ++++++++++--------- src/PhpPresentation/Shape/RichText.php | 5 +- .../Shape/RichText/TextElement.php | 3 +- src/PhpPresentation/Shape/Table/Cell.php | 15 +++-- src/PhpPresentation/Shape/Table/Row.php | 2 +- src/PhpPresentation/Slide/AbstractSlide.php | 15 ++++- .../Slide/Background/Image.php | 3 +- src/PhpPresentation/Slide/Iterator.php | 1 + src/PhpPresentation/Slide/Note.php | 2 + src/PhpPresentation/Slide/SlideMaster.php | 2 + src/PhpPresentation/Style/Outline.php | 3 +- src/PhpPresentation/Style/TextStyle.php | 1 + src/PhpPresentation/Writer/AbstractWriter.php | 2 +- src/PhpPresentation/Writer/ODPresentation.php | 1 + .../Writer/ODPresentation/Content.php | 8 ++- .../Writer/ODPresentation/Meta.php | 3 +- .../Writer/ODPresentation/MetaInfManifest.php | 1 + .../Writer/ODPresentation/Mimetype.php | 3 +- .../Writer/ODPresentation/ObjectsChart.php | 7 ++ .../Writer/ODPresentation/Pictures.php | 1 + .../Writer/ODPresentation/Styles.php | 4 +- .../ODPresentation/ThumbnailsThumbnail.php | 3 +- src/PhpPresentation/Writer/PowerPoint2007.php | 1 + .../AbstractDecoratorWriter.php | 1 + .../Writer/PowerPoint2007/AbstractSlide.php | 4 ++ .../Writer/PowerPoint2007/CommentAuthors.php | 1 + .../Writer/PowerPoint2007/DocPropsApp.php | 1 + .../Writer/PowerPoint2007/DocPropsCore.php | 1 + .../Writer/PowerPoint2007/DocPropsCustom.php | 1 + .../PowerPoint2007/DocPropsThumbnail.php | 1 + .../Writer/PowerPoint2007/PptCharts.php | 2 + .../Writer/PowerPoint2007/PptComments.php | 1 + .../Writer/PowerPoint2007/PptMedia.php | 1 + .../Writer/PowerPoint2007/PptPresProps.php | 1 + .../Writer/PowerPoint2007/PptPresentation.php | 1 + .../Writer/PowerPoint2007/PptSlideLayouts.php | 1 + .../Writer/PowerPoint2007/PptSlideMasters.php | 1 + .../Writer/PowerPoint2007/PptSlides.php | 1 + .../Writer/PowerPoint2007/PptTableProps.php | 1 + .../Writer/PowerPoint2007/PptViewProps.php | 1 + .../Writer/PowerPoint2007/Relationships.php | 1 + src/PhpPresentation/Writer/Serialized.php | 1 + 60 files changed, 243 insertions(+), 86 deletions(-) diff --git a/src/PhpPresentation/AbstractShape.php b/src/PhpPresentation/AbstractShape.php index 4cece57b10..d27b79878b 100644 --- a/src/PhpPresentation/AbstractShape.php +++ b/src/PhpPresentation/AbstractShape.php @@ -143,7 +143,7 @@ public function __clone() /** * Get Container, Slide or Group * - * @return \PhpOffice\PhpPresentation\Container + * @return \PhpOffice\PhpPresentation\ShapeContainerInterface */ public function getContainer() { @@ -385,6 +385,7 @@ public function hasHyperlink() * Get Hyperlink * * @return \PhpOffice\PhpPresentation\Shape\Hyperlink + * @throws \Exception */ public function getHyperlink() { diff --git a/src/PhpPresentation/IOFactory.php b/src/PhpPresentation/IOFactory.php index 5f94f157a1..84cb3756e7 100644 --- a/src/PhpPresentation/IOFactory.php +++ b/src/PhpPresentation/IOFactory.php @@ -35,6 +35,7 @@ class IOFactory * @param PhpPresentation $phpPresentation * @param string $name * @return \PhpOffice\PhpPresentation\Writer\WriterInterface + * @throws \Exception */ public static function createWriter(PhpPresentation $phpPresentation, $name = 'PowerPoint2007') { @@ -47,6 +48,7 @@ public static function createWriter(PhpPresentation $phpPresentation, $name = 'P * * @param string $name * @return \PhpOffice\PhpPresentation\Reader\ReaderInterface + * @throws \Exception */ public static function createReader($name = '') { @@ -81,8 +83,8 @@ public static function load($pFilename) * @param string $name * @param string $type * @param \PhpOffice\PhpPresentation\PhpPresentation $phpPresentation - * @throws \Exception - * @return + * @return mixed + * @throws \ReflectionException */ private static function loadClass($class, $name, $type, PhpPresentation $phpPresentation = null) { @@ -102,6 +104,7 @@ private static function loadClass($class, $name, $type, PhpPresentation $phpPres * * @param string $class * @return bool + * @throws \ReflectionException */ private static function isConcreteClass($class) { diff --git a/src/PhpPresentation/PhpPresentation.php b/src/PhpPresentation/PhpPresentation.php index 241e0b8bf4..df64568f11 100644 --- a/src/PhpPresentation/PhpPresentation.php +++ b/src/PhpPresentation/PhpPresentation.php @@ -190,6 +190,7 @@ public function getActiveSlide() * Create slide and add it to this presentation * * @return \PhpOffice\PhpPresentation\Slide + * @throws \Exception */ public function createSlide() { @@ -340,6 +341,7 @@ public function getSlideIterator() * Create a masterslide and add it to this presentation * * @return \PhpOffice\PhpPresentation\Slide\SlideMaster + * @throws \Exception */ public function createMasterSlide() { @@ -366,6 +368,7 @@ public function addMasterSlide(SlideMaster $slide = null) * Copy presentation (!= clone!) * * @return PhpPresentation + * @throws \Exception */ public function copy() { @@ -383,7 +386,7 @@ public function copy() /** * Mark a document as final * @param bool $state - * @return PhpPresentation + * @return PresentationProperties * @deprecated for getPresentationProperties()->markAsFinal() */ public function markAsFinal($state = true) @@ -403,8 +406,8 @@ public function isMarkedAsFinal() /** * Set the zoom of the document (in percentage) - * @param float $zoom - * @return PhpPresentation + * @param int $zoom + * @return PresentationProperties * @deprecated for getPresentationProperties()->setZoom() */ public function setZoom($zoom = 1) diff --git a/src/PhpPresentation/PresentationProperties.php b/src/PhpPresentation/PresentationProperties.php index 2e69f858cd..8d5df960df 100644 --- a/src/PhpPresentation/PresentationProperties.php +++ b/src/PhpPresentation/PresentationProperties.php @@ -118,7 +118,7 @@ public function setThumbnailPath($path = '') /** * Mark a document as final * @param bool $state - * @return PhpPresentation + * @return PresentationProperties */ public function markAsFinal($state = true) { @@ -139,8 +139,8 @@ public function isMarkedAsFinal() /** * Set the zoom of the document (in percentage) - * @param float $zoom - * @return PhpPresentation + * @param int $zoom + * @return PresentationProperties */ public function setZoom($zoom = 1) { diff --git a/src/PhpPresentation/Reader/ODPresentation.php b/src/PhpPresentation/Reader/ODPresentation.php index bf659c8518..d658322292 100644 --- a/src/PhpPresentation/Reader/ODPresentation.php +++ b/src/PhpPresentation/Reader/ODPresentation.php @@ -118,8 +118,9 @@ public function load($pFilename) /** * Load PhpPresentation Serialized file * - * @param string $pFilename + * @param string $pFilename * @return \PhpOffice\PhpPresentation\PhpPresentation + * @throws \Exception */ protected function loadFile($pFilename) { @@ -191,10 +192,12 @@ protected function loadSlides() } } } - + /** * Extract style * @param \DOMElement $nodeStyle + * @return bool + * @throws \Exception */ protected function loadStyle(\DOMElement $nodeStyle) { @@ -350,6 +353,8 @@ protected function loadStyle(\DOMElement $nodeStyle) * Read Slide * * @param \DOMElement $nodeSlide + * @return bool + * @throws \Exception */ protected function loadSlide(\DOMElement $nodeSlide) { @@ -377,11 +382,12 @@ protected function loadSlide(\DOMElement $nodeSlide) } return true; } - + /** * Read Shape Drawing * * @param \DOMElement $oNodeFrame + * @throws \Exception */ protected function loadShapeDrawing(\DOMElement $oNodeFrame) { @@ -428,6 +434,7 @@ protected function loadShapeDrawing(\DOMElement $oNodeFrame) * Read Shape RichText * * @param \DOMElement $oNodeFrame + * @throws \Exception */ protected function loadShapeRichText(\DOMElement $oNodeFrame) { @@ -456,11 +463,12 @@ protected function loadShapeRichText(\DOMElement $oNodeFrame) } protected $levelParagraph = 0; - + /** * Read Paragraph * @param RichText $oShape * @param \DOMElement $oNodeParent + * @throws \Exception */ protected function readParagraph(RichText $oShape, \DOMElement $oNodeParent) { @@ -477,11 +485,12 @@ protected function readParagraph(RichText $oShape, \DOMElement $oNodeParent) $this->readParagraphItem($oParagraph, $oNodeRichTextElement); } } - + /** * Read Paragraph Item * @param Paragraph $oParagraph * @param \DOMElement $oNodeParent + * @throws \Exception */ protected function readParagraphItem(Paragraph $oParagraph, \DOMElement $oNodeParent) { @@ -512,6 +521,7 @@ protected function readParagraphItem(Paragraph $oParagraph, \DOMElement $oNodePa * * @param RichText $oShape * @param \DOMElement $oNodeParent + * @throws \Exception */ protected function readList(RichText $oShape, \DOMElement $oNodeParent) { @@ -526,12 +536,13 @@ protected function readList(RichText $oShape, \DOMElement $oNodeParent) } } } - + /** * Read List Item * @param RichText $oShape * @param \DOMElement $oNodeParent * @param \DOMElement $oNodeParagraph + * @throws \Exception */ protected function readListItem(RichText $oShape, \DOMElement $oNodeParent, \DOMElement $oNodeParagraph) { diff --git a/src/PhpPresentation/Reader/PowerPoint2007.php b/src/PhpPresentation/Reader/PowerPoint2007.php index 1083f9e523..2548b377fa 100644 --- a/src/PhpPresentation/Reader/PowerPoint2007.php +++ b/src/PhpPresentation/Reader/PowerPoint2007.php @@ -131,6 +131,7 @@ public function load($pFilename) * * @param string $pFilename * @return \PhpOffice\PhpPresentation\PhpPresentation + * @throws \Exception */ protected function loadFile($pFilename) { @@ -265,6 +266,8 @@ protected function loadViewProperties($sPart) /** * Extract all slides + * @param $sPart + * @throws \Exception */ protected function loadSlides($sPart) { @@ -302,6 +305,7 @@ protected function loadSlides($sPart) * Extract all MasterSlides * @param XMLReader $xmlReader * @param string $fileRels + * @throws \Exception */ protected function loadMasterSlides(XMLReader $xmlReader, $fileRels) { @@ -328,6 +332,7 @@ protected function loadMasterSlides(XMLReader $xmlReader, $fileRels) * Extract data from slide * @param string $sPart * @param string $baseFile + * @throws \Exception */ protected function loadSlide($sPart, $baseFile) { @@ -416,6 +421,7 @@ protected function loadSlide($sPart, $baseFile) /** * @param string $sPart * @param string $baseFile + * @throws \Exception */ protected function loadMasterSlide($sPart, $baseFile) { @@ -559,6 +565,7 @@ protected function loadMasterSlide($sPart, $baseFile) * @param string $baseFile * @param SlideMaster $oSlideMaster * @return SlideLayout|null + * @throws \Exception */ protected function loadLayoutSlide($sPart, $baseFile, SlideMaster $oSlideMaster) { @@ -632,6 +639,7 @@ protected function loadTheme($sPart, SlideMaster $oSlideMaster) * @param XMLReader $xmlReader * @param \DOMElement $oElement * @param AbstractSlide $oSlide + * @throws \Exception */ protected function loadSlideBackground(XMLReader $xmlReader, \DOMElement $oElement, AbstractSlide $oSlide) { @@ -692,6 +700,7 @@ protected function loadSlideBackground(XMLReader $xmlReader, \DOMElement $oEleme /** * @param string $baseFile * @param Slide $oSlide + * @throws \Exception */ protected function loadSlideNote($baseFile, Slide $oSlide) { @@ -711,6 +720,7 @@ protected function loadSlideNote($baseFile, Slide $oSlide) * @param XMLReader $document * @param \DOMElement $node * @param AbstractSlide $oSlide + * @throws \Exception */ protected function loadShapeDrawing(XMLReader $document, \DOMElement $node, AbstractSlide $oSlide) { @@ -1150,6 +1160,7 @@ protected function loadParagraph(XMLReader $document, \DOMElement $oElement, $oS * @param XMLReader $xmlReader * @param \DOMElement $oElement * @param Border $oBorder + * @throws \Exception */ protected function loadStyleBorder(XMLReader $xmlReader, \DOMElement $oElement, Border $oBorder) { @@ -1197,6 +1208,7 @@ protected function loadStyleColor(XMLReader $xmlReader, \DOMElement $oElement) * @param XMLReader $xmlReader * @param \DOMElement $oElement * @return null|Fill + * @throws \Exception */ protected function loadStyleFill(XMLReader $xmlReader, \DOMElement $oElement) { @@ -1240,7 +1252,6 @@ protected function loadStyleFill(XMLReader $xmlReader, \DOMElement $oElement) /** * @param string $fileRels - * @return string */ protected function loadRels($fileRels) { @@ -1265,6 +1276,7 @@ protected function loadRels($fileRels) * @param $oSlide * @param \DOMNodeList $oElements * @param XMLReader $xmlReader + * @throws \Exception * @internal param $baseFile */ protected function loadSlideShapes($oSlide, $oElements, $xmlReader) diff --git a/src/PhpPresentation/Reader/PowerPoint97.php b/src/PhpPresentation/Reader/PowerPoint97.php index 98755ab8db..c120d36efb 100644 --- a/src/PhpPresentation/Reader/PowerPoint97.php +++ b/src/PhpPresentation/Reader/PowerPoint97.php @@ -421,8 +421,9 @@ public function load($pFilename) /** * Load PhpPresentation Serialized file * - * @param string $pFilename + * @param string $pFilename * @return \PhpOffice\PhpPresentation\PhpPresentation + * @throws \Exception */ private function loadFile($pFilename) { @@ -444,6 +445,7 @@ private function loadFile($pFilename) /** * Read OLE Part * @param string $pFilename + * @throws \Exception */ private function loadOLE($pFilename) { @@ -699,6 +701,8 @@ public static function getInt4d($data, $pos) * A container record that specifies the animation and sound information for a shape. * @param string $stream * @param integer $pos + * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd772900(v=office.12).aspx */ private function readRecordAnimationInfoContainer($stream, $pos) @@ -723,6 +727,7 @@ private function readRecordAnimationInfoContainer($stream, $pos) * A container record that specifies information about the document. * @param string $stream * @param integer $pos + * @throws \Exception * @link http://msdn.microsoft.com/en-us/library/dd947357(v=office.12).aspx */ private function readRecordDocumentContainer($stream, $pos) @@ -1009,6 +1014,7 @@ private function readRecordDocumentContainer($stream, $pos) * @param string $stream * @param integer $pos * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd923801(v=office.12).aspx */ private function readRecordDrawingContainer($stream, $pos) @@ -1313,6 +1319,7 @@ private function readRecordOfficeArtClientAnchor($stream, $pos) * @param string $stream * @param integer $pos * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd910958(v=office.12).aspx */ private function readRecordOfficeArtClientTextbox($stream, $pos) @@ -1460,6 +1467,7 @@ private function readRecordOfficeArtClientTextbox($stream, $pos) * @param string $stream * @param integer $pos * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd943794(v=office.12).aspx */ private function readRecordOfficeArtSpContainer($stream, $pos) @@ -1722,6 +1730,7 @@ private function readRecordOfficeArtSpContainer($stream, $pos) * @param integer $pos * @param boolean $bInGroup * @return array + * @throws \Exception * @link : https://msdn.microsoft.com/en-us/library/dd910416(v=office.12).aspx */ private function readRecordOfficeArtSpgrContainer($stream, $pos, $bInGroup = false) @@ -1794,6 +1803,7 @@ private function readRecordOfficeArtSpgrContainer($stream, $pos, $bInGroup = fal * @param string $stream * @param integer $pos * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd950206(v=office.12).aspx */ private function readRecordOfficeArtTertiaryFOPT($stream, $pos) @@ -1858,6 +1868,7 @@ private function readRecordOfficeArtTertiaryFOPT($stream, $pos) * @param string $stream * @param integer $pos * @return array + * @throws \Exception * @link : https://msdn.microsoft.com/en-us/library/dd924455(v=office.12).aspx */ private function readRecordOfficeArtDgContainer($stream, $pos) @@ -2312,6 +2323,8 @@ private function readRecordOfficeArtSecondaryFOPT($stream, $pos) * A container record that specifies information about a shape. * @param string $stream * @param integer $pos + * @return array + * @throws \Exception * @link : https://msdn.microsoft.com/en-us/library/dd950927(v=office.12).aspx */ private function readRecordOfficeArtClientData($stream, $pos) @@ -2427,6 +2440,8 @@ private function readRecordPersistDirectoryAtom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd904856(v=office.12).aspx + * @return array + * @return array */ private function readRecordPerSlideHeadersFootersContainer($stream, $pos) { @@ -2450,6 +2465,8 @@ private function readRecordPerSlideHeadersFootersContainer($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd923930(v=office.12).aspx + * @return array + * @return array */ private function readRecordPlaceholderAtom($stream, $pos) { @@ -2473,6 +2490,8 @@ private function readRecordPlaceholderAtom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd904899(v=office.12).aspx + * @return array + * @return array */ private function readRecordRecolorInfoAtom($stream, $pos) { @@ -2496,6 +2515,8 @@ private function readRecordRecolorInfoAtom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd910800(v=office.12).aspx + * @return array + * @return array */ private function readRecordRoundTripHFPlaceholder12Atom($stream, $pos) { @@ -2519,6 +2540,8 @@ private function readRecordRoundTripHFPlaceholder12Atom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd772926(v=office.12).aspx + * @return array + * @return array */ private function readRecordRoundTripShapeId12Atom($stream, $pos) { @@ -2542,6 +2565,8 @@ private function readRecordRoundTripShapeId12Atom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd923801(v=office.12).aspx + * @return array + * @return array */ private function readRecordRoundTripSlideSyncInfo12Container($stream, $pos) { @@ -2565,6 +2590,8 @@ private function readRecordRoundTripSlideSyncInfo12Container($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd908949(v=office.12).aspx + * @return array + * @return array */ private function readRecordShapeFlags10Atom($stream, $pos) { @@ -2588,6 +2615,7 @@ private function readRecordShapeFlags10Atom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd925824(v=office.12).aspx + * @return array */ private function readRecordShapeFlagsAtom($stream, $pos) { @@ -2611,6 +2639,7 @@ private function readRecordShapeFlagsAtom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd911033(v=office.12).aspx + * @return array */ private function readRecordShapeProgBinaryTagContainer($stream, $pos) { @@ -2633,6 +2662,8 @@ private function readRecordShapeProgBinaryTagContainer($stream, $pos) * A container record that specifies programmable tags with additional shape data. * @param string $stream * @param integer $pos + * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd911266(v=office.12).aspx */ private function readRecordShapeProgTagsContainer($stream, $pos) @@ -2709,6 +2740,7 @@ private function readRecordSlideAtom($stream, $pos) * A container record that specifies a presentation slide or title master slide. * @param string $stream * @param int $pos + * @throws \Exception * @link http://msdn.microsoft.com/en-us/library/dd946323(v=office.12).aspx */ private function readRecordSlideContainer($stream, $pos) @@ -2763,6 +2795,7 @@ private function readRecordSlideContainer($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd906297(v=office.12).aspx + * @return array */ private function readRecordSlideNameAtom($stream, $pos) { @@ -2792,6 +2825,7 @@ private function readRecordSlideNameAtom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd945703(v=office.12).aspx + * @return array */ private function readRecordSlideNumberMCAtom($stream, $pos) { @@ -2815,6 +2849,7 @@ private function readRecordSlideNumberMCAtom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd951946(v=office.12).aspx + * @return array */ private function readRecordSlideProgTagsContainer($stream, $pos) { @@ -2838,6 +2873,7 @@ private function readRecordSlideProgTagsContainer($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd949420(v=office.12).aspx + * @return array */ private function readRecordSlideSchemeColorSchemeAtom($stream, $pos) { @@ -2869,6 +2905,7 @@ private function readRecordSlideSchemeColorSchemeAtom($stream, $pos) * @param string $stream * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd943408(v=office.12).aspx + * @return array */ private function readRecordSlideShowSlideInfoAtom($stream, $pos) { @@ -2947,6 +2984,8 @@ private function readRecordUserEditAtom($stream, $pos) * @param string $stream * @param int $pos * @param int $strLenRT + * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd945870(v=office.12).aspx */ private function readStructureTextCFRun($stream, $pos, $strLenRT) @@ -3061,6 +3100,9 @@ private function readStructureTextCFRun($stream, $pos, $strLenRT) * A structure that specifies the paragraph-level formatting of a run of text. * @param string $stream * @param integer $pos + * @param $strLenRT + * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd923535(v=office.12).aspx */ private function readStructureTextPFRun($stream, $pos, $strLenRT) @@ -3227,6 +3269,7 @@ private function readStructureTextPFRun($stream, $pos, $strLenRT) * @param integer $pos * @param string $strLenRT * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd909603(v=office.12).aspx */ private function readStructureTextSIRun($stream, $pos, $strLenRT) @@ -3286,6 +3329,8 @@ private function readStructureTextSIRun($stream, $pos, $strLenRT) * A structure that specifies tabbing, margins, and indentation for text. * @param string $stream * @param integer $pos + * @return array + * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd922749(v=office.12).aspx */ private function readStructureTextRuler($stream, $pos) diff --git a/src/PhpPresentation/Shape/Chart/Axis.php b/src/PhpPresentation/Shape/Chart/Axis.php index b2559bd2db..eeff28fea8 100644 --- a/src/PhpPresentation/Shape/Chart/Axis.php +++ b/src/PhpPresentation/Shape/Chart/Axis.php @@ -155,7 +155,7 @@ public function getFont() * * @param \PhpOffice\PhpPresentation\Style\Font $pFont Font * @throws \Exception - * @return \PhpOffice\PhpPresentation\Shape\RichText\Paragraph + * @return \PhpOffice\PhpPresentation\Shape\Chart\Axis */ public function setFont(Font $pFont = null) { diff --git a/src/PhpPresentation/Shape/Chart/Legend.php b/src/PhpPresentation/Shape/Chart/Legend.php index b169d69e33..989d93257a 100644 --- a/src/PhpPresentation/Shape/Chart/Legend.php +++ b/src/PhpPresentation/Shape/Chart/Legend.php @@ -152,7 +152,7 @@ public function getPosition() * Set Position * * @param string $value - * @return \PhpOffice\PhpPresentation\Shape\Chart\Title + * @return \PhpOffice\PhpPresentation\Shape\Chart\Legend */ public function setPosition($value = self::POSITION_RIGHT) { @@ -263,7 +263,7 @@ public function getFont() * * @param \PhpOffice\PhpPresentation\Style\Font $pFont Font * @throws \Exception - * @return \PhpOffice\PhpPresentation\Shape\RichText\Paragraph + * @return \PhpOffice\PhpPresentation\Shape\Chart\Legend */ public function setFont(Font $pFont = null) { @@ -285,7 +285,7 @@ public function getBorder() * Set Border * * @param \PhpOffice\PhpPresentation\Style\Border $border - * @return \PhpOffice\PhpPresentation\Shape\RichText\Paragraph + * @return \PhpOffice\PhpPresentation\Shape\Chart\Legend */ public function setBorder(Border $border) { @@ -307,7 +307,7 @@ public function getFill() * Set Fill * * @param \PhpOffice\PhpPresentation\Style\Fill $fill - * @return \PhpOffice\PhpPresentation\Shape\RichText\Paragraph + * @return \PhpOffice\PhpPresentation\Shape\Chart\Legend */ public function setFill(Fill $fill) { @@ -329,7 +329,7 @@ public function getAlignment() * Set alignment * * @param \PhpOffice\PhpPresentation\Style\Alignment $alignment - * @return \PhpOffice\PhpPresentation\Shape\RichText\Paragraph + * @return \PhpOffice\PhpPresentation\Shape\Chart\Legend */ public function setAlignment(Alignment $alignment) { @@ -374,6 +374,7 @@ public function getHashIndex() * while doing a write of a workbook and when changes are not allowed. * * @param string $value Hash index + * @return Legend */ public function setHashIndex($value) { diff --git a/src/PhpPresentation/Shape/Chart/PlotArea.php b/src/PhpPresentation/Shape/Chart/PlotArea.php index cdabff69fd..a46a3b2830 100644 --- a/src/PhpPresentation/Shape/Chart/PlotArea.php +++ b/src/PhpPresentation/Shape/Chart/PlotArea.php @@ -152,7 +152,7 @@ public function getOffsetX() * Set OffsetX (as a fraction of the chart) * * @param float|int $value - * @return \PhpOffice\PhpPresentation\Shape\Chart\Title + * @return \PhpOffice\PhpPresentation\Shape\Chart\PlotArea */ public function setOffsetX($value = 0) { @@ -175,7 +175,7 @@ public function getOffsetY() * Set OffsetY (as a fraction of the chart) * * @param float|int $value - * @return \PhpOffice\PhpPresentation\Shape\Chart\Title + * @return \PhpOffice\PhpPresentation\Shape\Chart\PlotArea */ public function setOffsetY($value = 0) { @@ -198,7 +198,7 @@ public function getWidth() * Set Width (as a fraction of the chart) * * @param float|int $value - * @return \PhpOffice\PhpPresentation\Shape\Chart\Title + * @return \PhpOffice\PhpPresentation\Shape\Chart\PlotArea */ public function setWidth($value = 0) { @@ -221,7 +221,7 @@ public function getHeight() * Set Height (as a fraction of the chart) * * @param float|int $value - * @return \PhpOffice\PhpPresentation\Shape\Chart\Title + * @return \PhpOffice\PhpPresentation\Shape\Chart\PlotArea */ public function setHeight($value = 0) { @@ -267,6 +267,7 @@ public function getHashIndex() * while doing a write of a workbook and when changes are not allowed. * * @param string $value Hash index + * @return PlotArea */ public function setHashIndex($value) { diff --git a/src/PhpPresentation/Shape/Chart/Series.php b/src/PhpPresentation/Shape/Chart/Series.php index d3f6ca5371..73cd03d4f6 100644 --- a/src/PhpPresentation/Shape/Chart/Series.php +++ b/src/PhpPresentation/Shape/Chart/Series.php @@ -477,7 +477,7 @@ public function getFont() * * @param \PhpOffice\PhpPresentation\Style\Font $pFont Font * @throws \Exception - * @return \PhpOffice\PhpPresentation\Shape\RichText\Paragraph + * @return \PhpOffice\PhpPresentation\Shape\Chart\Series */ public function setFont(Font $pFont = null) { @@ -583,8 +583,8 @@ public function setHashIndex($value) return $this; } + /** - * @return mixed * @link http://php.net/manual/en/language.oop5.cloning.php */ public function __clone() diff --git a/src/PhpPresentation/Shape/Chart/Title.php b/src/PhpPresentation/Shape/Chart/Title.php index ef5fe783a2..5643a6d20f 100644 --- a/src/PhpPresentation/Shape/Chart/Title.php +++ b/src/PhpPresentation/Shape/Chart/Title.php @@ -253,7 +253,7 @@ public function getFont() * * @param \PhpOffice\PhpPresentation\Style\Font $pFont Font * @throws \Exception - * @return \PhpOffice\PhpPresentation\Shape\RichText\Paragraph + * @return \PhpOffice\PhpPresentation\Shape\Chart\Title */ public function setFont(Font $pFont = null) { @@ -315,6 +315,7 @@ public function getHashIndex() * while doing a write of a workbook and when changes are not allowed. * * @param string $value Hash index + * @return Title */ public function setHashIndex($value) { diff --git a/src/PhpPresentation/Shape/Chart/Type/AbstractType.php b/src/PhpPresentation/Shape/Chart/Type/AbstractType.php index 9e91520b1d..e3eb3802c8 100644 --- a/src/PhpPresentation/Shape/Chart/Type/AbstractType.php +++ b/src/PhpPresentation/Shape/Chart/Type/AbstractType.php @@ -93,6 +93,7 @@ public function getHashIndex() * while doing a write of a workbook and when changes are not allowed. * * @param string $value Hash index + * @return AbstractType */ public function setHashIndex($value) { @@ -148,6 +149,8 @@ public function getData() * Set Data * * @deprecated setSeries + * @param array $value + * @return AbstractType */ public function setData($value = array()) { @@ -155,7 +158,6 @@ public function setData($value = array()) } /** - * @return mixed * @link http://php.net/manual/en/language.oop5.cloning.php */ public function __clone() diff --git a/src/PhpPresentation/Shape/Chart/Type/AbstractTypeBar.php b/src/PhpPresentation/Shape/Chart/Type/AbstractTypeBar.php index 4b2357b69a..f0a8c31985 100644 --- a/src/PhpPresentation/Shape/Chart/Type/AbstractTypeBar.php +++ b/src/PhpPresentation/Shape/Chart/Type/AbstractTypeBar.php @@ -60,7 +60,7 @@ class AbstractTypeBar extends AbstractType * Set bar orientation * * @param string $value - * @return \PhpOffice\PhpPresentation\Shape\Chart\Type\Bar + * @return \PhpOffice\PhpPresentation\Shape\Chart\Type\AbstractTypeBar */ public function setBarDirection($value = self::DIRECTION_VERTICAL) { @@ -82,7 +82,7 @@ public function getBarDirection() * Set bar grouping (stack or expanded style bar) * * @param string $value - * @return \PhpOffice\PhpPresentation\Shape\Chart\Type\Bar + * @return \PhpOffice\PhpPresentation\Shape\Chart\Type\AbstractTypeBar */ public function setBarGrouping($value = self::GROUPING_CLUSTERED) { diff --git a/src/PhpPresentation/Shape/Chart/View3D.php b/src/PhpPresentation/Shape/Chart/View3D.php index 541468fcea..dc773cc23f 100644 --- a/src/PhpPresentation/Shape/Chart/View3D.php +++ b/src/PhpPresentation/Shape/Chart/View3D.php @@ -248,6 +248,7 @@ public function getHashIndex() * while doing a write of a workbook and when changes are not allowed. * * @param string $value Hash index + * @return View3D */ public function setHashIndex($value) { diff --git a/src/PhpPresentation/Shape/Drawing/Base64.php b/src/PhpPresentation/Shape/Drawing/Base64.php index 15059763bb..6f99276923 100644 --- a/src/PhpPresentation/Shape/Drawing/Base64.php +++ b/src/PhpPresentation/Shape/Drawing/Base64.php @@ -77,6 +77,7 @@ public function getExtension() /** * @return string + * @throws \Exception */ public function getIndexedFilename() { diff --git a/src/PhpPresentation/Shape/Drawing/File.php b/src/PhpPresentation/Shape/Drawing/File.php index 1995f561ab..541f5925f9 100644 --- a/src/PhpPresentation/Shape/Drawing/File.php +++ b/src/PhpPresentation/Shape/Drawing/File.php @@ -25,7 +25,7 @@ public function getPath() * @param string $pValue File path * @param boolean $pVerifyFile Verify file * @throws \Exception - * @return \PhpOffice\PhpPresentation\Shape\Drawing + * @return \PhpOffice\PhpPresentation\Shape\Drawing\File */ public function setPath($pValue = '', $pVerifyFile = true) { diff --git a/src/PhpPresentation/Shape/Drawing/ZipFile.php b/src/PhpPresentation/Shape/Drawing/ZipFile.php index 3b8e5867b0..769f1d9ffd 100644 --- a/src/PhpPresentation/Shape/Drawing/ZipFile.php +++ b/src/PhpPresentation/Shape/Drawing/ZipFile.php @@ -25,7 +25,7 @@ public function getPath() * Set Path * * @param string $pValue File path - * @return \PhpOffice\PhpPresentation\Shape\Drawing + * @return \PhpOffice\PhpPresentation\Shape\Drawing\ZipFile */ public function setPath($pValue = '') { @@ -35,6 +35,7 @@ public function setPath($pValue = '') /** * @return string + * @throws \Exception */ public function getContents() { @@ -61,6 +62,7 @@ public function getExtension() /** * @return string + * @throws \Exception */ public function getMimeType() { diff --git a/src/PhpPresentation/Shape/Group.php b/src/PhpPresentation/Shape/Group.php index ba3207a293..e4ebdc4b3a 100644 --- a/src/PhpPresentation/Shape/Group.php +++ b/src/PhpPresentation/Shape/Group.php @@ -70,11 +70,12 @@ public function getShapeCollection() } /** - * Add shape to slide - * - * @param \PhpOffice\PhpPresentation\AbstractShape $shape - * @return \PhpOffice\PhpPresentation\AbstractShape - */ + * Add shape to slide + * + * @param \PhpOffice\PhpPresentation\AbstractShape $shape + * @return \PhpOffice\PhpPresentation\AbstractShape + * @throws \Exception + */ public function addShape(AbstractShape $shape) { $shape->setContainer($this); @@ -191,10 +192,11 @@ public function setHeight($pValue = 0) } /** - * Create rich text shape - * - * @return \PhpOffice\PhpPresentation\Shape\RichText - */ + * Create rich text shape + * + * @return \PhpOffice\PhpPresentation\Shape\RichText + * @throws \Exception + */ public function createRichTextShape() { $shape = new RichText(); @@ -204,14 +206,15 @@ public function createRichTextShape() } /** - * Create line shape - * - * @param int $fromX Starting point x offset - * @param int $fromY Starting point y offset - * @param int $toX Ending point x offset - * @param int $toY Ending point y offset - * @return \PhpOffice\PhpPresentation\Shape\Line - */ + * Create line shape + * + * @param int $fromX Starting point x offset + * @param int $fromY Starting point y offset + * @param int $toX Ending point x offset + * @param int $toY Ending point y offset + * @return \PhpOffice\PhpPresentation\Shape\Line + * @throws \Exception + */ public function createLineShape($fromX, $fromY, $toX, $toY) { $shape = new Line($fromX, $fromY, $toX, $toY); @@ -221,10 +224,11 @@ public function createLineShape($fromX, $fromY, $toX, $toY) } /** - * Create chart shape - * - * @return \PhpOffice\PhpPresentation\Shape\Chart - */ + * Create chart shape + * + * @return \PhpOffice\PhpPresentation\Shape\Chart + * @throws \Exception + */ public function createChartShape() { $shape = new Chart(); @@ -234,10 +238,11 @@ public function createChartShape() } /** - * Create drawing shape - * - * @return \PhpOffice\PhpPresentation\Shape\Drawing\File - */ + * Create drawing shape + * + * @return \PhpOffice\PhpPresentation\Shape\Drawing\File + * @throws \Exception + */ public function createDrawingShape() { $shape = new Drawing\File(); @@ -247,11 +252,12 @@ public function createDrawingShape() } /** - * Create table shape - * - * @param int $columns Number of columns - * @return \PhpOffice\PhpPresentation\Shape\Table - */ + * Create table shape + * + * @param int $columns Number of columns + * @return \PhpOffice\PhpPresentation\Shape\Table + * @throws \Exception + */ public function createTableShape($columns = 1) { $shape = new Table($columns); diff --git a/src/PhpPresentation/Shape/RichText.php b/src/PhpPresentation/Shape/RichText.php index 9782aaae8e..d7cc341523 100644 --- a/src/PhpPresentation/Shape/RichText.php +++ b/src/PhpPresentation/Shape/RichText.php @@ -229,6 +229,7 @@ public function getParagraph($index = 0) * Create paragraph * * @return \PhpOffice\PhpPresentation\Shape\RichText\Paragraph + * @throws \Exception */ public function createParagraph() { @@ -651,6 +652,7 @@ public function setInsetTop($value = 4.8) /** * Set horizontal auto shrink * @param bool $value + * @return RichText */ public function setAutoShrinkHorizontal($value = null) { @@ -668,10 +670,11 @@ public function hasAutoShrinkHorizontal() { return $this->autoShrinkHorizontal; } - + /** * Set vertical auto shrink * @param bool $value + * @return RichText */ public function setAutoShrinkVertical($value = null) { diff --git a/src/PhpPresentation/Shape/RichText/TextElement.php b/src/PhpPresentation/Shape/RichText/TextElement.php index 2cdbd499bd..e19b9b81c5 100644 --- a/src/PhpPresentation/Shape/RichText/TextElement.php +++ b/src/PhpPresentation/Shape/RichText/TextElement.php @@ -101,6 +101,7 @@ public function hasHyperlink() * Get Hyperlink * * @return \PhpOffice\PhpPresentation\Shape\Hyperlink + * @throws \Exception */ public function getHyperlink() { @@ -116,7 +117,7 @@ public function getHyperlink() * * @param \PhpOffice\PhpPresentation\Shape\Hyperlink $pHyperlink * @throws \Exception - * @return \PhpOffice\PhpPresentation\AbstractShape + * @return \PhpOffice\PhpPresentation\Shape\RichText\TextElement */ public function setHyperlink(Hyperlink $pHyperlink = null) { diff --git a/src/PhpPresentation/Shape/Table/Cell.php b/src/PhpPresentation/Shape/Table/Cell.php index d06915da21..0a184d2057 100644 --- a/src/PhpPresentation/Shape/Table/Cell.php +++ b/src/PhpPresentation/Shape/Table/Cell.php @@ -160,6 +160,7 @@ public function getParagraph($index = 0) * Create paragraph * * @return \PhpOffice\PhpPresentation\Shape\RichText\Paragraph + * @throws \Exception */ public function createParagraph() { @@ -184,7 +185,7 @@ public function createParagraph() * * @param \PhpOffice\PhpPresentation\Shape\RichText\TextElementInterface $pText Rich text element * @throws \Exception - * @return \PhpOffice\PhpPresentation\Shape\RichText + * @return \PhpOffice\PhpPresentation\Shape\Table\Cell */ public function addText(TextElementInterface $pText = null) { @@ -272,7 +273,7 @@ public function getParagraphs() * * @param \PhpOffice\PhpPresentation\Shape\RichText\Paragraph[] $paragraphs Array of paragraphs * @throws \Exception - * @return \PhpOffice\PhpPresentation\Shape\RichText + * @return \PhpOffice\PhpPresentation\Shape\Table\Cell */ public function setParagraphs($paragraphs = null) { @@ -298,7 +299,7 @@ public function getFill() * Set fill * * @param \PhpOffice\PhpPresentation\Style\Fill $fill - * @return \PhpOffice\PhpPresentation\Shape\RichText + * @return \PhpOffice\PhpPresentation\Shape\Table\Cell */ public function setFill(Fill $fill) { @@ -321,7 +322,7 @@ public function getBorders() * Set borders * * @param \PhpOffice\PhpPresentation\Style\Borders $borders - * @return \PhpOffice\PhpPresentation\Shape\RichText + * @return \PhpOffice\PhpPresentation\Shape\Table\Cell */ public function setBorders(Borders $borders) { @@ -344,7 +345,7 @@ public function getWidth() * Set width * * @param int $value - * @return \PhpOffice\PhpPresentation\Shape\RichText + * @return \PhpOffice\PhpPresentation\Shape\Table\Cell */ public function setWidth($value = 0) { @@ -367,7 +368,7 @@ public function getColSpan() * Set colSpan * * @param int $value - * @return \PhpOffice\PhpPresentation\Shape\RichText + * @return \PhpOffice\PhpPresentation\Shape\Table\Cell */ public function setColSpan($value = 0) { @@ -390,7 +391,7 @@ public function getRowSpan() * Set rowSpan * * @param int $value - * @return \PhpOffice\PhpPresentation\Shape\RichText + * @return \PhpOffice\PhpPresentation\Shape\Table\Cell */ public function setRowSpan($value = 0) { diff --git a/src/PhpPresentation/Shape/Table/Row.php b/src/PhpPresentation/Shape/Table/Row.php index fb95d8df84..18d4475371 100644 --- a/src/PhpPresentation/Shape/Table/Row.php +++ b/src/PhpPresentation/Shape/Table/Row.php @@ -160,7 +160,7 @@ public function getHeight() * Set height * * @param int $value - * @return \PhpOffice\PhpPresentation\Shape\RichText + * @return \PhpOffice\PhpPresentation\Shape\Table\Row */ public function setHeight($value = 0) { diff --git a/src/PhpPresentation/Slide/AbstractSlide.php b/src/PhpPresentation/Slide/AbstractSlide.php index fa28559d4f..3e1c5c1730 100644 --- a/src/PhpPresentation/Slide/AbstractSlide.php +++ b/src/PhpPresentation/Slide/AbstractSlide.php @@ -109,6 +109,7 @@ public function getShapeCollection() /** * Get collection of shapes * + * @param array $shapeCollection * @return AbstractSlide */ public function setShapeCollection($shapeCollection = array()) @@ -122,6 +123,7 @@ public function setShapeCollection($shapeCollection = array()) * * @param \PhpOffice\PhpPresentation\AbstractShape $shape * @return \PhpOffice\PhpPresentation\AbstractShape + * @throws \Exception */ public function addShape(AbstractShape $shape) { @@ -229,6 +231,7 @@ public function setHashIndex($value) * Create rich text shape * * @return \PhpOffice\PhpPresentation\Shape\RichText + * @throws \Exception */ public function createRichTextShape() { @@ -245,6 +248,7 @@ public function createRichTextShape() * @param int $toX Ending point x offset * @param int $toY Ending point y offset * @return \PhpOffice\PhpPresentation\Shape\Line + * @throws \Exception */ public function createLineShape($fromX, $fromY, $toX, $toY) { @@ -257,6 +261,7 @@ public function createLineShape($fromX, $fromY, $toX, $toY) * Create chart shape * * @return \PhpOffice\PhpPresentation\Shape\Chart + * @throws \Exception */ public function createChartShape() { @@ -269,6 +274,7 @@ public function createChartShape() * Create drawing shape * * @return \PhpOffice\PhpPresentation\Shape\Drawing\File + * @throws \Exception */ public function createDrawingShape() { @@ -282,6 +288,7 @@ public function createDrawingShape() * * @param int $columns Number of columns * @return \PhpOffice\PhpPresentation\Shape\Table + * @throws \Exception */ public function createTableShape($columns = 1) { @@ -294,6 +301,7 @@ public function createTableShape($columns = 1) * Creates a group within this slide * * @return \PhpOffice\PhpPresentation\Shape\Group + * @throws \Exception */ public function createGroup() { @@ -316,7 +324,8 @@ public function getParent() * Re-bind parent * * @param \PhpOffice\PhpPresentation\PhpPresentation $parent - * @return \PhpOffice\PhpPresentation\Slide + * @return \PhpOffice\PhpPresentation\Slide\AbstractSlide + * @throws \Exception */ public function rebindParent(PhpPresentation $parent) { @@ -335,7 +344,7 @@ public function getBackground() /** * @param AbstractBackground $background - * @return Slide + * @return \PhpOffice\PhpPresentation\Slide\AbstractSlide */ public function setBackground(AbstractBackground $background = null) { @@ -355,7 +364,7 @@ public function getTransition() /** * * @param \PhpOffice\PhpPresentation\Slide\Transition $transition - * @return \PhpOffice\PhpPresentation\Slide + * @return \PhpOffice\PhpPresentation\Slide\AbstractSlide */ public function setTransition(Transition $transition = null) { diff --git a/src/PhpPresentation/Slide/Background/Image.php b/src/PhpPresentation/Slide/Background/Image.php index 4aaf9b505e..12601c943b 100644 --- a/src/PhpPresentation/Slide/Background/Image.php +++ b/src/PhpPresentation/Slide/Background/Image.php @@ -44,7 +44,7 @@ public function getPath() * @param string $pValue File path * @param boolean $pVerifyFile Verify file * @throws \Exception - * @return \PhpOffice\PhpPresentation\Shape\Drawing + * @return \PhpOffice\PhpPresentation\Slide\Background\Image */ public function setPath($pValue = '', $pVerifyFile = true) { @@ -87,6 +87,7 @@ public function getExtension() /** * Get indexed filename (using image index) * + * @param $numSlide * @return string */ public function getIndexedFilename($numSlide) diff --git a/src/PhpPresentation/Slide/Iterator.php b/src/PhpPresentation/Slide/Iterator.php index 72043c1d41..66d159d784 100644 --- a/src/PhpPresentation/Slide/Iterator.php +++ b/src/PhpPresentation/Slide/Iterator.php @@ -71,6 +71,7 @@ public function rewind() * Current \PhpOffice\PhpPresentation\Slide * * @return \PhpOffice\PhpPresentation\Slide + * @throws \Exception */ public function current() { diff --git a/src/PhpPresentation/Slide/Note.php b/src/PhpPresentation/Slide/Note.php index 2dd9bb3ab6..f4af120e7a 100644 --- a/src/PhpPresentation/Slide/Note.php +++ b/src/PhpPresentation/Slide/Note.php @@ -117,6 +117,7 @@ public function getShapeCollection() * * @param \PhpOffice\PhpPresentation\AbstractShape $shape * @return \PhpOffice\PhpPresentation\AbstractShape + * @throws \Exception */ public function addShape(AbstractShape $shape) { @@ -129,6 +130,7 @@ public function addShape(AbstractShape $shape) * Create rich text shape * * @return \PhpOffice\PhpPresentation\Shape\RichText + * @throws \Exception */ public function createRichTextShape() { diff --git a/src/PhpPresentation/Slide/SlideMaster.php b/src/PhpPresentation/Slide/SlideMaster.php index ee5d6bd3b5..f06f7402ad 100644 --- a/src/PhpPresentation/Slide/SlideMaster.php +++ b/src/PhpPresentation/Slide/SlideMaster.php @@ -72,6 +72,7 @@ class SlideMaster extends AbstractSlide implements ComparableInterface, ShapeCon * Create a new slideMaster * * @param PhpPresentation $pParent + * @throws \Exception */ public function __construct(PhpPresentation $pParent = null) { @@ -101,6 +102,7 @@ public function __construct(PhpPresentation $pParent = null) * Create a slideLayout and add it to this presentation * * @return \PhpOffice\PhpPresentation\Slide\SlideLayout + * @throws \Exception */ public function createSlideLayout() { diff --git a/src/PhpPresentation/Style/Outline.php b/src/PhpPresentation/Style/Outline.php index 90c443eb22..03c7d21d4f 100644 --- a/src/PhpPresentation/Style/Outline.php +++ b/src/PhpPresentation/Style/Outline.php @@ -31,8 +31,9 @@ class Outline */ protected $width; + /** - * @return Outline + * Outline constructor. */ public function __construct() { diff --git a/src/PhpPresentation/Style/TextStyle.php b/src/PhpPresentation/Style/TextStyle.php index 2903955cca..2f41c7ae6f 100644 --- a/src/PhpPresentation/Style/TextStyle.php +++ b/src/PhpPresentation/Style/TextStyle.php @@ -40,6 +40,7 @@ class TextStyle /** * TextStyle constructor. * @param bool $default + * @throws \Exception */ public function __construct($default = true) { diff --git a/src/PhpPresentation/Writer/AbstractWriter.php b/src/PhpPresentation/Writer/AbstractWriter.php index b3a6b69857..51698c8818 100644 --- a/src/PhpPresentation/Writer/AbstractWriter.php +++ b/src/PhpPresentation/Writer/AbstractWriter.php @@ -58,7 +58,7 @@ public function getPhpPresentation() * * @param PhpPresentation $pPhpPresentation PhpPresentation object * @throws \Exception - * @return \PhpOffice\PhpPresentation\Writer\ODPresentation + * @return \PhpOffice\PhpPresentation\Writer\AbstractWriter */ public function setPhpPresentation(PhpPresentation $pPhpPresentation = null) { diff --git a/src/PhpPresentation/Writer/ODPresentation.php b/src/PhpPresentation/Writer/ODPresentation.php index 8408c29de5..027afdf645 100644 --- a/src/PhpPresentation/Writer/ODPresentation.php +++ b/src/PhpPresentation/Writer/ODPresentation.php @@ -52,6 +52,7 @@ class ODPresentation extends AbstractWriter implements WriterInterface * Create a new \PhpOffice\PhpPresentation\Writer\ODPresentation * * @param PhpPresentation $pPhpPresentation + * @throws \Exception */ public function __construct(PhpPresentation $pPhpPresentation = null) { diff --git a/src/PhpPresentation/Writer/ODPresentation/Content.php b/src/PhpPresentation/Writer/ODPresentation/Content.php index ad88a8b9ed..88fc37ac16 100644 --- a/src/PhpPresentation/Writer/ODPresentation/Content.php +++ b/src/PhpPresentation/Writer/ODPresentation/Content.php @@ -59,6 +59,7 @@ class Content extends AbstractDecoratorWriter /** * @return ZipInterface + * @throws \Exception */ public function render() { @@ -370,7 +371,8 @@ public function writeShapeMedia(XMLWriter $objWriter, Media $shape) * Write picture * * @param \PhpOffice\Common\XMLWriter $objWriter - * @param \PhpOffice\PhpPresentation\Shape\AbstractDrawingAdapter $shape + * @param AbstractDrawingAdapter $shape + * @throws \Exception */ public function writeShapeDrawing(XMLWriter $objWriter, ShapeDrawing\AbstractDrawingAdapter $shape) { @@ -418,6 +420,7 @@ public function writeShapeDrawing(XMLWriter $objWriter, ShapeDrawing\AbstractDra * * @param \PhpOffice\Common\XMLWriter $objWriter * @param \PhpOffice\PhpPresentation\Shape\RichText $shape + * @throws \Exception */ public function writeShapeTxt(XMLWriter $objWriter, RichText $shape) { @@ -616,6 +619,7 @@ public function writeShapeLine(XMLWriter $objWriter, Line $shape) * Write table Shape * @param XMLWriter $objWriter * @param Table $shape + * @throws \Exception */ public function writeShapeTable(XMLWriter $objWriter, Table $shape) { @@ -736,6 +740,7 @@ public function writeShapeChart(XMLWriter $objWriter, Chart $shape) * * @param XMLWriter $objWriter * @param Group $group + * @throws \Exception */ public function writeShapeGroup(XMLWriter $objWriter, Group $group) { @@ -1077,6 +1082,7 @@ public function writeTableStyle(XMLWriter $objWriter, Table $shape) * Write the slide note * @param XMLWriter $objWriter * @param \PhpOffice\PhpPresentation\Slide\Note $note + * @throws \Exception */ public function writeSlideNote(XMLWriter $objWriter, Note $note) { diff --git a/src/PhpPresentation/Writer/ODPresentation/Meta.php b/src/PhpPresentation/Writer/ODPresentation/Meta.php index b73dfae219..751a42082a 100644 --- a/src/PhpPresentation/Writer/ODPresentation/Meta.php +++ b/src/PhpPresentation/Writer/ODPresentation/Meta.php @@ -7,7 +7,8 @@ class Meta extends AbstractDecoratorWriter { /** - * @return ZipInterface + * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/ODPresentation/MetaInfManifest.php b/src/PhpPresentation/Writer/ODPresentation/MetaInfManifest.php index 1a2710a9be..9a263db663 100644 --- a/src/PhpPresentation/Writer/ODPresentation/MetaInfManifest.php +++ b/src/PhpPresentation/Writer/ODPresentation/MetaInfManifest.php @@ -12,6 +12,7 @@ class MetaInfManifest extends AbstractDecoratorWriter { /** * @return ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/ODPresentation/Mimetype.php b/src/PhpPresentation/Writer/ODPresentation/Mimetype.php index 342da946db..546b6f3415 100644 --- a/src/PhpPresentation/Writer/ODPresentation/Mimetype.php +++ b/src/PhpPresentation/Writer/ODPresentation/Mimetype.php @@ -5,7 +5,8 @@ class Mimetype extends AbstractDecoratorWriter { /** - * @return ZipInterface + * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php index c31cc68b30..0aec5562e9 100644 --- a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php +++ b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php @@ -49,6 +49,7 @@ class ObjectsChart extends AbstractDecoratorWriter /** * @return ZipInterface + * @throws \Exception */ public function render() { @@ -216,6 +217,7 @@ protected function writeContentPart(Chart $chart) /** * @param Chart $chart + * @throws \Exception */ private function writeAxis(Chart $chart) { @@ -274,6 +276,7 @@ protected function writeGridline($oGridlines, $styleName, $chartClass) /** * @param Chart $chart + * @throws \Exception * @todo Set function in \PhpPresentation\Shape\Chart\Axis for defining width and color of the axis */ protected function writeAxisStyle(Chart $chart) @@ -496,6 +499,7 @@ private function writeLegendStyle(Chart $chart) /** * @param Chart $chart + * @throws \Exception */ private function writePlotArea(Chart $chart) { @@ -551,6 +555,7 @@ private function writePlotArea(Chart $chart) /** * @param Chart $chart + * @throws \Exception * @link : http://books.evc-cit.info/odbook/ch08.html#chart-plot-area-section */ private function writePlotAreaStyle(Chart $chart) @@ -679,6 +684,7 @@ private function writeSeries(Chart $chart, Chart\Series $series) /** * @param Chart $chart * @param Chart\Series $series + * @throws \Exception */ private function writeSeriesStyle(Chart $chart, Chart\Series $series) { @@ -959,6 +965,7 @@ private function writeWall() /** * @param Chart $chart + * @throws \Exception */ private function writeWallStyle(Chart $chart) { diff --git a/src/PhpPresentation/Writer/ODPresentation/Pictures.php b/src/PhpPresentation/Writer/ODPresentation/Pictures.php index 32ce96819d..6ec4e54eee 100644 --- a/src/PhpPresentation/Writer/ODPresentation/Pictures.php +++ b/src/PhpPresentation/Writer/ODPresentation/Pictures.php @@ -10,6 +10,7 @@ class Pictures extends AbstractDecoratorWriter { /** * @return ZipInterface + * @throws \Exception */ public function render() diff --git a/src/PhpPresentation/Writer/ODPresentation/Styles.php b/src/PhpPresentation/Writer/ODPresentation/Styles.php index 7cbd0d4cdb..3c7fd72fc2 100644 --- a/src/PhpPresentation/Writer/ODPresentation/Styles.php +++ b/src/PhpPresentation/Writer/ODPresentation/Styles.php @@ -28,7 +28,8 @@ class Styles extends AbstractDecoratorWriter protected $arrayStrokeDash = array(); /** - * @return ZipInterface + * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { @@ -311,6 +312,7 @@ protected function writeGradientFill(XMLWriter $objWriter, Fill $oFill) * Write the background image style * @param XMLWriter $objWriter * @param Image $oBkgImage + * @param $numSlide */ protected function writeBackgroundStyle(XMLWriter $objWriter, Image $oBkgImage, $numSlide) { diff --git a/src/PhpPresentation/Writer/ODPresentation/ThumbnailsThumbnail.php b/src/PhpPresentation/Writer/ODPresentation/ThumbnailsThumbnail.php index c211761d79..b481a56724 100644 --- a/src/PhpPresentation/Writer/ODPresentation/ThumbnailsThumbnail.php +++ b/src/PhpPresentation/Writer/ODPresentation/ThumbnailsThumbnail.php @@ -5,7 +5,8 @@ class ThumbnailsThumbnail extends AbstractDecoratorWriter { /** - * @return ZipInterface + * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007.php b/src/PhpPresentation/Writer/PowerPoint2007.php index 65bbb39fd5..2b6e2c27d9 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007.php +++ b/src/PhpPresentation/Writer/PowerPoint2007.php @@ -54,6 +54,7 @@ class PowerPoint2007 extends AbstractWriter implements WriterInterface * Create a new PowerPoint2007 file * * @param PhpPresentation $pPhpPresentation + * @throws \Exception */ public function __construct(PhpPresentation $pPhpPresentation = null) { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php b/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php index 2fd94c3ec4..b01ebdda49 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php @@ -256,6 +256,7 @@ protected function writePatternFill(XMLWriter $objWriter, Fill $pFill) * Write Outline * @param XMLWriter $objWriter * @param Outline $oOutline + * @throws \Exception */ protected function writeOutline(XMLWriter $objWriter, $oOutline) { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php b/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php index b36492484a..9c09730f55 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php @@ -48,6 +48,7 @@ abstract class AbstractSlide extends AbstractDecoratorWriter * @param AbstractSlideAlias $pSlideMaster * @param $objWriter * @param $relId + * @return mixed * @throws \Exception */ protected function writeDrawingRelations(AbstractSlideAlias $pSlideMaster, $objWriter, $relId) @@ -631,6 +632,7 @@ protected function writeParagraphs(XMLWriter $objWriter, $paragraphs, $bIsPlaceh * @param \PhpOffice\Common\XMLWriter $objWriter XML Writer * @param \PhpOffice\PhpPresentation\Shape\Line $shape * @param int $shapeId + * @throws \Exception */ protected function writeShapeLine(XMLWriter $objWriter, Line $shape, $shapeId) { @@ -757,6 +759,7 @@ protected function writeShadow(XMLWriter $objWriter, $oShadow) * * @param \PhpOffice\Common\XMLWriter $objWriter XML Writer * @param \PhpOffice\PhpPresentation\AbstractShape|\PhpOffice\PhpPresentation\Shape\RichText\TextElement $shape + * @throws \Exception */ protected function writeHyperlink(XMLWriter $objWriter, $shape) { @@ -1228,6 +1231,7 @@ protected function writeShapePic(XMLWriter $objWriter, AbstractGraphic $shape, $ * @param \PhpOffice\Common\XMLWriter $objWriter XML Writer * @param \PhpOffice\PhpPresentation\Shape\Group $group * @param int $shapeId + * @throws \Exception */ protected function writeShapeGroup(XMLWriter $objWriter, Group $group, &$shapeId) { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/CommentAuthors.php b/src/PhpPresentation/Writer/PowerPoint2007/CommentAuthors.php index b730bd2019..07e5d1d317 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/CommentAuthors.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/CommentAuthors.php @@ -11,6 +11,7 @@ class CommentAuthors extends AbstractDecoratorWriter { /** * @return ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/DocPropsApp.php b/src/PhpPresentation/Writer/PowerPoint2007/DocPropsApp.php index c5a301098a..5bb8714ec3 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/DocPropsApp.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/DocPropsApp.php @@ -8,6 +8,7 @@ class DocPropsApp extends AbstractDecoratorWriter { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/DocPropsCore.php b/src/PhpPresentation/Writer/PowerPoint2007/DocPropsCore.php index dd954246a2..591f42be12 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/DocPropsCore.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/DocPropsCore.php @@ -8,6 +8,7 @@ class DocPropsCore extends AbstractDecoratorWriter { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/DocPropsCustom.php b/src/PhpPresentation/Writer/PowerPoint2007/DocPropsCustom.php index 7d49a63745..b017654f72 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/DocPropsCustom.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/DocPropsCustom.php @@ -8,6 +8,7 @@ class DocPropsCustom extends AbstractDecoratorWriter { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/DocPropsThumbnail.php b/src/PhpPresentation/Writer/PowerPoint2007/DocPropsThumbnail.php index edd79caa76..64308a41ce 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/DocPropsThumbnail.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/DocPropsThumbnail.php @@ -6,6 +6,7 @@ class DocPropsThumbnail extends AbstractDecoratorWriter { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index bfedd4727e..1f186bbaa8 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -2116,6 +2116,7 @@ protected function writeSeriesMarker(XMLWriter $objWriter, Chart\Marker $oMarker * @param Chart\Axis $oAxis * @param $typeAxis * @param Chart\Type\AbstractType $typeChart + * @throws \Exception */ protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis, Chart\Type\AbstractType $typeChart) { @@ -2359,6 +2360,7 @@ protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis, /** * @param XMLWriter $objWriter * @param Gridlines $oGridlines + * @throws \Exception */ protected function writeAxisGridlines(XMLWriter $objWriter, Gridlines $oGridlines) { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptComments.php b/src/PhpPresentation/Writer/PowerPoint2007/PptComments.php index badf1ac7e9..4c1cc19a22 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptComments.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptComments.php @@ -12,6 +12,7 @@ class PptComments extends AbstractDecoratorWriter { /** * @return ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptMedia.php b/src/PhpPresentation/Writer/PowerPoint2007/PptMedia.php index 0196e391f6..58121bec5e 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptMedia.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptMedia.php @@ -8,6 +8,7 @@ class PptMedia extends AbstractDecoratorWriter { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptPresProps.php b/src/PhpPresentation/Writer/PowerPoint2007/PptPresProps.php index df1234979c..d434e03539 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptPresProps.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptPresProps.php @@ -7,6 +7,7 @@ class PptPresProps extends AbstractDecoratorWriter { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptPresentation.php b/src/PhpPresentation/Writer/PowerPoint2007/PptPresentation.php index 5e9b3305a2..a38c016a7e 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptPresentation.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptPresentation.php @@ -9,6 +9,7 @@ class PptPresentation extends AbstractDecoratorWriter { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php index eaf3ac78ef..52f917e6f2 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php @@ -12,6 +12,7 @@ class PptSlideLayouts extends AbstractSlide { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideMasters.php b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideMasters.php index b8ce79cab0..56379c2339 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideMasters.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideMasters.php @@ -17,6 +17,7 @@ class PptSlideMasters extends AbstractSlide { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptSlides.php b/src/PhpPresentation/Writer/PowerPoint2007/PptSlides.php index 515cadbd9d..14e73d8f8c 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptSlides.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptSlides.php @@ -22,6 +22,7 @@ class PptSlides extends AbstractSlide /** * Add slides (drawings, ...) and slide relationships (drawings, ...) * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptTableProps.php b/src/PhpPresentation/Writer/PowerPoint2007/PptTableProps.php index f79a1a15aa..e9dd71d244 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptTableProps.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptTableProps.php @@ -7,6 +7,7 @@ class PptTableProps extends AbstractDecoratorWriter { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptViewProps.php b/src/PhpPresentation/Writer/PowerPoint2007/PptViewProps.php index 2c155d5c96..f014fe7b31 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptViewProps.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptViewProps.php @@ -7,6 +7,7 @@ class PptViewProps extends AbstractDecoratorWriter { /** * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/PowerPoint2007/Relationships.php b/src/PhpPresentation/Writer/PowerPoint2007/Relationships.php index fc0af80950..ccc5768592 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/Relationships.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/Relationships.php @@ -11,6 +11,7 @@ class Relationships extends AbstractDecoratorWriter /** * Add relationships to ZIP file * @return \PhpOffice\Common\Adapter\Zip\ZipInterface + * @throws \Exception */ public function render() { diff --git a/src/PhpPresentation/Writer/Serialized.php b/src/PhpPresentation/Writer/Serialized.php index da8aa403f5..c7e5bb2cd3 100644 --- a/src/PhpPresentation/Writer/Serialized.php +++ b/src/PhpPresentation/Writer/Serialized.php @@ -31,6 +31,7 @@ class Serialized extends AbstractWriter implements WriterInterface * Create a new \PhpOffice\PhpPresentation\Writer\Serialized * * @param \PhpOffice\PhpPresentation\PhpPresentation $pPhpPresentation + * @throws \Exception */ public function __construct(PhpPresentation $pPhpPresentation = null) { From 3253348a312476d8652f886e3219ad347c4b675c Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Noblot Date: Tue, 23 Oct 2018 14:38:38 +0200 Subject: [PATCH 057/139] Fix Regression PHP Docs int->float --- src/PhpPresentation/PhpPresentation.php | 4 ++-- src/PhpPresentation/PresentationProperties.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/PhpPresentation/PhpPresentation.php b/src/PhpPresentation/PhpPresentation.php index df64568f11..172babe12c 100644 --- a/src/PhpPresentation/PhpPresentation.php +++ b/src/PhpPresentation/PhpPresentation.php @@ -406,11 +406,11 @@ public function isMarkedAsFinal() /** * Set the zoom of the document (in percentage) - * @param int $zoom + * @param float $zoom * @return PresentationProperties * @deprecated for getPresentationProperties()->setZoom() */ - public function setZoom($zoom = 1) + public function setZoom($zoom = 1.0) { return $this->getPresentationProperties()->setZoom($zoom); } diff --git a/src/PhpPresentation/PresentationProperties.php b/src/PhpPresentation/PresentationProperties.php index 8d5df960df..05b6dbf82d 100644 --- a/src/PhpPresentation/PresentationProperties.php +++ b/src/PhpPresentation/PresentationProperties.php @@ -139,10 +139,10 @@ public function isMarkedAsFinal() /** * Set the zoom of the document (in percentage) - * @param int $zoom + * @param float $zoom * @return PresentationProperties */ - public function setZoom($zoom = 1) + public function setZoom($zoom = 1.0) { if (is_numeric($zoom)) { $this->zoom = (float)$zoom; From 8afafb3906819ae19a5e8e14288b6619dc1461a6 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Noblot Date: Tue, 23 Oct 2018 15:09:21 +0200 Subject: [PATCH 058/139] Fix double aray in PHPDocs Fix Typing --- src/PhpPresentation/Reader/PowerPoint97.php | 9 +-------- src/PhpPresentation/Slide/Background/Image.php | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/PhpPresentation/Reader/PowerPoint97.php b/src/PhpPresentation/Reader/PowerPoint97.php index c120d36efb..385638c839 100644 --- a/src/PhpPresentation/Reader/PowerPoint97.php +++ b/src/PhpPresentation/Reader/PowerPoint97.php @@ -2441,7 +2441,6 @@ private function readRecordPersistDirectoryAtom($stream, $pos) * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd904856(v=office.12).aspx * @return array - * @return array */ private function readRecordPerSlideHeadersFootersContainer($stream, $pos) { @@ -2466,7 +2465,6 @@ private function readRecordPerSlideHeadersFootersContainer($stream, $pos) * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd923930(v=office.12).aspx * @return array - * @return array */ private function readRecordPlaceholderAtom($stream, $pos) { @@ -2491,7 +2489,6 @@ private function readRecordPlaceholderAtom($stream, $pos) * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd904899(v=office.12).aspx * @return array - * @return array */ private function readRecordRecolorInfoAtom($stream, $pos) { @@ -2516,7 +2513,6 @@ private function readRecordRecolorInfoAtom($stream, $pos) * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd910800(v=office.12).aspx * @return array - * @return array */ private function readRecordRoundTripHFPlaceholder12Atom($stream, $pos) { @@ -2541,7 +2537,6 @@ private function readRecordRoundTripHFPlaceholder12Atom($stream, $pos) * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd772926(v=office.12).aspx * @return array - * @return array */ private function readRecordRoundTripShapeId12Atom($stream, $pos) { @@ -2566,7 +2561,6 @@ private function readRecordRoundTripShapeId12Atom($stream, $pos) * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd923801(v=office.12).aspx * @return array - * @return array */ private function readRecordRoundTripSlideSyncInfo12Container($stream, $pos) { @@ -2591,7 +2585,6 @@ private function readRecordRoundTripSlideSyncInfo12Container($stream, $pos) * @param integer $pos * @link https://msdn.microsoft.com/en-us/library/dd908949(v=office.12).aspx * @return array - * @return array */ private function readRecordShapeFlags10Atom($stream, $pos) { @@ -3100,7 +3093,7 @@ private function readStructureTextCFRun($stream, $pos, $strLenRT) * A structure that specifies the paragraph-level formatting of a run of text. * @param string $stream * @param integer $pos - * @param $strLenRT + * @param integer $strLenRT * @return array * @throws \Exception * @link https://msdn.microsoft.com/en-us/library/dd923535(v=office.12).aspx diff --git a/src/PhpPresentation/Slide/Background/Image.php b/src/PhpPresentation/Slide/Background/Image.php index 12601c943b..ca6eb542ce 100644 --- a/src/PhpPresentation/Slide/Background/Image.php +++ b/src/PhpPresentation/Slide/Background/Image.php @@ -87,7 +87,7 @@ public function getExtension() /** * Get indexed filename (using image index) * - * @param $numSlide + * @param integer $numSlide * @return string */ public function getIndexedFilename($numSlide) From 38d7c129b9147505b7a5692fd5d205bbd79ad020 Mon Sep 17 00:00:00 2001 From: Andrey Bolonin Date: Sat, 27 Oct 2018 11:13:04 +0300 Subject: [PATCH 059/139] Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index a74cf0feba..d266b16593 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,7 @@ php: - 7.0 - 7.1 - 7.2 + - 7.3 - hhvm matrix: From 2e83d0f2883e5de9bf4d9e85063496676a036e26 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Sun, 13 Jan 2019 13:58:26 +0100 Subject: [PATCH 060/139] FIXED : Validation of the composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index ce4852a68c..a2a56b0cbe 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "keywords": ["PHP","PowerPoint","LibreOffice","pptx","ppt","odp","presentations"], "homepage": "http://phpoffice.github.io", "type": "library", - "license": "LGPL", + "license": "LGPL-3.0-only", "authors": [ { "name": "Mark Baker" From d365fb18a6f7effea6201f98f67e84bf96e78cc6 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Fri, 24 May 2019 23:32:06 +0200 Subject: [PATCH 061/139] #382 Update Composer --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 4c633b3fba..5e63c5d7d1 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "phpoffice/common": "0.2.*" }, "require-dev": { - "phpunit/phpunit": "~4.8.36", + "phpunit/phpunit": "4.*", "phpdocumentor/phpdocumentor":"2.*", "phpmd/phpmd": "2.*", "sebastian/phpcpd": "2.*", From e30d9ef849ee5c9612fd06eb35e9f26bea7ecbda Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Fri, 24 May 2019 23:47:45 +0200 Subject: [PATCH 062/139] #382 : Fixes ECMA-376 --- src/PhpPresentation/Style/Color.php | 2 +- .../AbstractDecoratorWriter.php | 6 +- .../Writer/PowerPoint2007/AbstractSlide.php | 19 +- .../Writer/PowerPoint2007/PptCharts.php | 51 +- .../Writer/PowerPoint2007/PptTheme.php | 94 +- .../Writer/PowerPoint2007/PptChartsTest.php | 22 +- .../Writer/PowerPoint2007/PptSlidesTest.php | 31 +- .../_includes/PhpPresentationTestCase.php | 6 +- tests/resources/schema/ecma-376/dml-chart.xsd | 3858 ++++ .../schema/ecma-376/dml-chartDrawing.xsd | 338 + .../schema/ecma-376/dml-compatibility.xsd | 17 + .../resources/schema/ecma-376/dml-diagram.xsd | 3635 ++++ .../schema/ecma-376/dml-lockedCanvas.xsd | 10 + tests/resources/schema/ecma-376/dml-main.xsd | 9464 ++++++++++ .../resources/schema/ecma-376/dml-picture.xsd | 44 + .../ecma-376/dml-spreadsheetDrawing.xsd | 410 + .../ecma-376/dml-wordprocessingDrawing.xsd | 557 + tests/resources/schema/ecma-376/pml.xsd | 4968 +++++ tests/resources/schema/ecma-376/readme.md | 16 + .../shared-additionalCharacteristics.xsd | 71 + .../schema/ecma-376/shared-bibliography.xsd | 534 + .../ecma-376/shared-commonSimpleTypes.xsd | 4 + .../shared-customXmlDataProperties.xsd | 46 + .../shared-customXmlSchemaProperties.xsd | 34 + .../shared-documentPropertiesCustom.xsd | 212 + .../shared-documentPropertiesExtended.xsd | 175 + .../shared-documentPropertiesVariantTypes.xsd | 844 + .../resources/schema/ecma-376/shared-math.xsd | 1528 ++ .../ecma-376/shared-relationshipReference.xsd | 31 + tests/resources/schema/ecma-376/sml.xsd | 15170 ++++++++++++++++ tests/resources/schema/ecma-376/vml-main.xsd | 1733 ++ .../schema/ecma-376/vml-officeDrawing.xsd | 1642 ++ .../ecma-376/vml-presentationDrawing.xsd | 21 + .../ecma-376/vml-spreadsheetDrawing.xsd | 518 + .../ecma-376/vml-wordprocessingDrawing.xsd | 355 + tests/resources/schema/ecma-376/wml.xsd | 11334 ++++++++++++ 36 files changed, 57679 insertions(+), 121 deletions(-) create mode 100644 tests/resources/schema/ecma-376/dml-chart.xsd create mode 100644 tests/resources/schema/ecma-376/dml-chartDrawing.xsd create mode 100644 tests/resources/schema/ecma-376/dml-compatibility.xsd create mode 100644 tests/resources/schema/ecma-376/dml-diagram.xsd create mode 100644 tests/resources/schema/ecma-376/dml-lockedCanvas.xsd create mode 100644 tests/resources/schema/ecma-376/dml-main.xsd create mode 100644 tests/resources/schema/ecma-376/dml-picture.xsd create mode 100644 tests/resources/schema/ecma-376/dml-spreadsheetDrawing.xsd create mode 100644 tests/resources/schema/ecma-376/dml-wordprocessingDrawing.xsd create mode 100644 tests/resources/schema/ecma-376/pml.xsd create mode 100644 tests/resources/schema/ecma-376/readme.md create mode 100644 tests/resources/schema/ecma-376/shared-additionalCharacteristics.xsd create mode 100644 tests/resources/schema/ecma-376/shared-bibliography.xsd create mode 100644 tests/resources/schema/ecma-376/shared-commonSimpleTypes.xsd create mode 100644 tests/resources/schema/ecma-376/shared-customXmlDataProperties.xsd create mode 100644 tests/resources/schema/ecma-376/shared-customXmlSchemaProperties.xsd create mode 100644 tests/resources/schema/ecma-376/shared-documentPropertiesCustom.xsd create mode 100644 tests/resources/schema/ecma-376/shared-documentPropertiesExtended.xsd create mode 100644 tests/resources/schema/ecma-376/shared-documentPropertiesVariantTypes.xsd create mode 100644 tests/resources/schema/ecma-376/shared-math.xsd create mode 100644 tests/resources/schema/ecma-376/shared-relationshipReference.xsd create mode 100644 tests/resources/schema/ecma-376/sml.xsd create mode 100644 tests/resources/schema/ecma-376/vml-main.xsd create mode 100644 tests/resources/schema/ecma-376/vml-officeDrawing.xsd create mode 100644 tests/resources/schema/ecma-376/vml-presentationDrawing.xsd create mode 100644 tests/resources/schema/ecma-376/vml-spreadsheetDrawing.xsd create mode 100644 tests/resources/schema/ecma-376/vml-wordprocessingDrawing.xsd create mode 100644 tests/resources/schema/ecma-376/wml.xsd diff --git a/src/PhpPresentation/Style/Color.php b/src/PhpPresentation/Style/Color.php index 76fddd8c2a..6b8980d050 100644 --- a/src/PhpPresentation/Style/Color.php +++ b/src/PhpPresentation/Style/Color.php @@ -99,7 +99,7 @@ public function getAlpha() $dec = hexdec(substr($this->argb, 0, 2)); $alpha = number_format(($dec/255) * 100, 2); } - return $alpha; + return round($alpha); } /** diff --git a/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php b/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php index b01ebdda49..c8d0b7a6d9 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php @@ -130,7 +130,7 @@ protected function writeColor(XMLWriter $objWriter, Color $color, $alpha = null) // a:alpha $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', $alpha . '%'); + $objWriter->writeAttribute('val', $alpha * 1000); $objWriter->endElement(); $objWriter->endElement(); @@ -202,13 +202,13 @@ protected function writeGradientFill(XMLWriter $objWriter, Fill $pFill) $objWriter->startElement('a:gsLst'); // a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '0%'); + $objWriter->writeAttribute('pos', '0'); $this->writeColor($objWriter, $pFill->getStartColor()); $objWriter->endElement(); // a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '100%'); + $objWriter->writeAttribute('pos', '100000'); $this->writeColor($objWriter, $pFill->getEndColor()); $objWriter->endElement(); diff --git a/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php b/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php index a3a830757c..0c220f00f0 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php @@ -265,10 +265,10 @@ protected function writeShapeText(XMLWriter $objWriter, RichText $shape, $shapeI $objWriter->startElement('a:' . $shape->getAutoFit()); if ($shape->getAutoFit() == RichText::AUTOFIT_NORMAL) { if (!is_null($shape->getFontScale())) { - $objWriter->writeAttribute('fontScale', $shape->getFontScale() . '%'); + $objWriter->writeAttribute('fontScale', $shape->getFontScale() * 1000); } if (!is_null($shape->getLineSpaceReduction())) { - $objWriter->writeAttribute('lnSpcReduction', $shape->getLineSpaceReduction() . '%'); + $objWriter->writeAttribute('lnSpcReduction', $shape->getLineSpaceReduction() * 1000); } } $objWriter->endElement(); @@ -524,7 +524,7 @@ protected function writeParagraphs(XMLWriter $objWriter, $paragraphs, $bIsPlaceh $objWriter->startElement('a:lnSpc'); $objWriter->startElement('a:spcPct'); - $objWriter->writeAttribute('val', $paragraph->getLineSpacing() . "%"); + $objWriter->writeAttribute('val', $paragraph->getLineSpacing() * 1000); $objWriter->endElement(); $objWriter->endElement(); @@ -579,23 +579,14 @@ protected function writeParagraphs(XMLWriter $objWriter, $paragraphs, $bIsPlaceh // Lang $objWriter->writeAttribute('lang', ($element->getLanguage() ? $element->getLanguage() : 'en-US')); - $objWriter->writeAttributeIf($element->getFont()->isBold(), 'b', '1'); $objWriter->writeAttributeIf($element->getFont()->isItalic(), 'i', '1'); $objWriter->writeAttributeIf($element->getFont()->isStrikethrough(), 'strike', 'sngStrike'); - - // Size $objWriter->writeAttribute('sz', ($element->getFont()->getSize() * 100)); - - // Character spacing $objWriter->writeAttribute('spc', $element->getFont()->getCharacterSpacing()); - - // Underline $objWriter->writeAttribute('u', $element->getFont()->getUnderline()); - - // Superscript / subscript - $objWriter->writeAttributeIf($element->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($element->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($element->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($element->getFont()->isSubScript(), 'baseline', '-250000'); // Color - a:solidFill $objWriter->startElement('a:solidFill'); diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index 4360f362b9..7109881c6b 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -114,7 +114,7 @@ public function writeChart(Chart $chart) // c:depthPercent $objWriter->startElement('c:depthPercent'); - $objWriter->writeAttribute('val', $chart->getView3D()->getDepthPercent().'%'); + $objWriter->writeAttribute('val', $chart->getView3D()->getDepthPercent()); $objWriter->endElement(); // c:rAngAx @@ -424,14 +424,13 @@ protected function writeTitle(XMLWriter $objWriter, Title $subject) $objWriter->startElement('a:rPr'); $objWriter->writeAttribute('lang', 'en-US'); $objWriter->writeAttribute('dirty', '0'); - $objWriter->writeAttribute('b', ($subject->getFont()->isBold() ? 'true' : 'false')); $objWriter->writeAttribute('i', ($subject->getFont()->isItalic() ? 'true' : 'false')); $objWriter->writeAttribute('strike', ($subject->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($subject->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $subject->getFont()->getUnderline()); - $objWriter->writeAttributeIf($subject->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($subject->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($subject->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($subject->getFont()->isSubScript(), 'baseline', '-250000'); // Font - a:solidFill $objWriter->startElement('a:solidFill'); @@ -593,8 +592,8 @@ protected function writeLegend(XMLWriter $objWriter, Legend $subject) $objWriter->writeAttribute('strike', ($subject->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($subject->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $subject->getFont()->getUnderline()); - $objWriter->writeAttributeIf($subject->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($subject->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($subject->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($subject->getFont()->isSubScript(), 'baseline', '-250000'); // Font - a:solidFill $objWriter->startElement('a:solidFill'); @@ -885,8 +884,8 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, $includeShee $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); // a:solidFill $objWriter->startElement('a:solidFill'); @@ -972,16 +971,16 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, $includeShee // c:gapWidth $objWriter->startElement('c:gapWidth'); - $objWriter->writeAttribute('val', $subject->getGapWidthPercent() . '%'); + $objWriter->writeAttribute('val', $subject->getGapWidthPercent()); $objWriter->endElement(); // c:overlap $barGrouping = $subject->getBarGrouping(); $objWriter->startElement('c:overlap'); if ($barGrouping === Bar::GROUPING_CLUSTERED) { - $objWriter->writeAttribute('val', '0%'); + $objWriter->writeAttribute('val', '0'); } elseif ($barGrouping === Bar::GROUPING_STACKED || $barGrouping === Bar::GROUPING_PERCENTSTACKED) { - $objWriter->writeAttribute('val', '100%'); + $objWriter->writeAttribute('val', '100000'); } $objWriter->endElement(); @@ -1095,8 +1094,8 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, $include $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); // Font - a:solidFill $objWriter->startElement('a:solidFill'); @@ -1175,7 +1174,7 @@ protected function writeTypeBar3D(XMLWriter $objWriter, Bar3D $subject, $include // c:gapWidth $objWriter->startElement('c:gapWidth'); - $objWriter->writeAttribute('val', $subject->getGapWidthPercent().'%'); + $objWriter->writeAttribute('val', $subject->getGapWidthPercent()); $objWriter->endElement(); // c:axId @@ -1310,8 +1309,8 @@ protected function writeTypeDoughnut(XMLWriter $objWriter, Doughnut $subject, $i $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); // c:dLbls\c:txPr\a:p\a:pPr\a:defRPr\a:solidFill $objWriter->startElement('a:solidFill'); @@ -1443,8 +1442,8 @@ protected function writeTypePie(XMLWriter $objWriter, Pie $subject, $includeShee $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); // Font - a:solidFill $objWriter->startElement('a:solidFill'); @@ -1606,8 +1605,8 @@ protected function writeTypePie3D(XMLWriter $objWriter, Pie3D $subject, $include $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); // Font - a:solidFill $objWriter->startElement('a:solidFill'); @@ -1758,8 +1757,8 @@ protected function writeTypeLine(XMLWriter $objWriter, Line $subject, $includeSh $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); // Font - a:solidFill $objWriter->startElement('a:solidFill'); @@ -1933,8 +1932,8 @@ protected function writeTypeScatter(XMLWriter $objWriter, Scatter $subject, $inc $objWriter->writeAttribute('strike', ($series->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($series->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $series->getFont()->getUnderline()); - $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($series->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($series->getFont()->isSubScript(), 'baseline', '-250000'); // Font - a:solidFill $objWriter->startElement('a:solidFill'); @@ -2208,8 +2207,8 @@ protected function writeAxis(XMLWriter $objWriter, Chart\Axis $oAxis, $typeAxis, $objWriter->writeAttribute('strike', ($oAxis->getFont()->isStrikethrough() ? 'sngStrike' : 'noStrike')); $objWriter->writeAttribute('sz', ($oAxis->getFont()->getSize() * 100)); $objWriter->writeAttribute('u', $oAxis->getFont()->getUnderline()); - $objWriter->writeAttributeIf($oAxis->getFont()->isSuperScript(), 'baseline', '300%'); - $objWriter->writeAttributeIf($oAxis->getFont()->isSubScript(), 'baseline', '-250%'); + $objWriter->writeAttributeIf($oAxis->getFont()->isSuperScript(), 'baseline', '300000'); + $objWriter->writeAttributeIf($oAxis->getFont()->isSubScript(), 'baseline', '-250000'); // Font - a:solidFill $objWriter->startElement('a:solidFill'); diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptTheme.php b/src/PhpPresentation/Writer/PowerPoint2007/PptTheme.php index 81dd52153f..d6e5ac1054 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptTheme.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptTheme.php @@ -199,7 +199,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '0%'); + $objWriter->writeAttribute('pos', '0'); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -207,12 +207,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '50%'); + $objWriter->writeAttribute('val', '50000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '300%'); + $objWriter->writeAttribute('val', '300000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -223,7 +223,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '35%'); + $objWriter->writeAttribute('pos', '35000'); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -231,12 +231,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '37%'); + $objWriter->writeAttribute('val', '37000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '300%'); + $objWriter->writeAttribute('val', '300000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -247,7 +247,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '100%'); + $objWriter->writeAttribute('pos', '100000'); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -255,12 +255,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '15%'); + $objWriter->writeAttribute('val', '15000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '350%'); + $objWriter->writeAttribute('val', '350000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -290,7 +290,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '0%'); + $objWriter->writeAttribute('pos', '0'); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -298,12 +298,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '51%'); + $objWriter->writeAttribute('val', '51000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '130%'); + $objWriter->writeAttribute('val', '130000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -314,7 +314,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '80%'); + $objWriter->writeAttribute('pos', '80000'); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -322,12 +322,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '93%'); + $objWriter->writeAttribute('val', '93000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '130%'); + $objWriter->writeAttribute('val', '130000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -338,7 +338,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '100%'); + $objWriter->writeAttribute('pos', '100000'); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -346,12 +346,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '94%'); + $objWriter->writeAttribute('val', '94000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '135%'); + $objWriter->writeAttribute('val', '135000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -394,12 +394,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '95%'); + $objWriter->writeAttribute('val', '95000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '105%'); + $objWriter->writeAttribute('val', '105000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/ @@ -497,7 +497,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', '38%'); + $objWriter->writeAttribute('val', '38000'); // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/ $objWriter->endElement(); @@ -533,7 +533,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', '35%'); + $objWriter->writeAttribute('val', '35'); // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/ $objWriter->endElement(); @@ -569,7 +569,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha $objWriter->startElement('a:alpha'); - $objWriter->writeAttribute('val', '35%'); + $objWriter->writeAttribute('val', '35000'); // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/ $objWriter->endElement(); @@ -661,7 +661,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '0%'); + $objWriter->writeAttribute('pos', '0'); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -669,12 +669,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '40%'); + $objWriter->writeAttribute('val', '40000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '350%'); + $objWriter->writeAttribute('val', '350000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -685,7 +685,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '40%'); + $objWriter->writeAttribute('pos', '40000'); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -693,17 +693,17 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '45%'); + $objWriter->writeAttribute('val', '45000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '99%'); + $objWriter->writeAttribute('val', '99000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '350%'); + $objWriter->writeAttribute('val', '350000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -714,7 +714,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '100%'); + $objWriter->writeAttribute('pos', '100000'); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -722,12 +722,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '20%'); + $objWriter->writeAttribute('val', '20000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '255%'); + $objWriter->writeAttribute('val', '255000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -745,10 +745,10 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/a:fillToRect $objWriter->startElement('a:fillToRect'); - $objWriter->writeAttribute('b', '180%'); - $objWriter->writeAttribute('l', '50%'); - $objWriter->writeAttribute('r', '50%'); - $objWriter->writeAttribute('t', '-80%'); + $objWriter->writeAttribute('b', '180000'); + $objWriter->writeAttribute('l', '50000'); + $objWriter->writeAttribute('r', '50000'); + $objWriter->writeAttribute('t', '-80000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/ @@ -766,7 +766,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '0%'); + $objWriter->writeAttribute('pos', '0'); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -774,12 +774,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint $objWriter->startElement('a:tint'); - $objWriter->writeAttribute('val', '80%'); + $objWriter->writeAttribute('val', '80000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '300%'); + $objWriter->writeAttribute('val', '300000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -790,7 +790,7 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs $objWriter->startElement('a:gs'); - $objWriter->writeAttribute('pos', '100%'); + $objWriter->writeAttribute('pos', '100000'); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr $objWriter->startElement('a:schemeClr'); @@ -798,12 +798,12 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade $objWriter->startElement('a:shade'); - $objWriter->writeAttribute('val', '30%'); + $objWriter->writeAttribute('val', '30000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod $objWriter->startElement('a:satMod'); - $objWriter->writeAttribute('val', '200%'); + $objWriter->writeAttribute('val', '200000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/ @@ -821,10 +821,10 @@ protected function writeTheme(Slide\SlideMaster $oMasterSlide) // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/a:fillToRect $objWriter->startElement('a:fillToRect'); - $objWriter->writeAttribute('b', '50%'); - $objWriter->writeAttribute('l', '50%'); - $objWriter->writeAttribute('r', '50%'); - $objWriter->writeAttribute('t', '50%'); + $objWriter->writeAttribute('b', '50000'); + $objWriter->writeAttribute('l', '50000'); + $objWriter->writeAttribute('r', '50000'); + $objWriter->writeAttribute('t', '50000'); $objWriter->endElement(); // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/ diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php index ddb88ac330..ab5c62ba56 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php @@ -411,7 +411,7 @@ public function testTypeBar() $element = '/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser/c:tx/c:v'; $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); $element = '/c:chartSpace/c:chart/c:plotArea/c:barChart/c:gapWidth'; - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $valueGapWidthPercent.'%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $valueGapWidthPercent); $this->assertIsSchemaOOXMLValid(); } @@ -444,7 +444,7 @@ public function testTypeBar3D() $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser/c:tx/c:v'; $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:gapWidth'; - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $valueGapWidthPercent . '%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $valueGapWidthPercent); $this->assertIsSchemaOOXMLValid(); } @@ -462,7 +462,7 @@ public function testTypeBar3DSubScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250000'); $this->assertIsSchemaOOXMLValid(); } @@ -479,7 +479,7 @@ public function testTypeBar3DSuperScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300000'); $this->assertIsSchemaOOXMLValid(); } @@ -743,7 +743,7 @@ public function testTypeLineSubScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250000'); $this->assertIsSchemaOOXMLValid(); } @@ -761,7 +761,7 @@ public function testTypeLineSuperScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300000'); $this->assertIsSchemaOOXMLValid(); } @@ -869,7 +869,7 @@ public function testTypePie3DSubScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:pie3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250000'); $this->assertIsSchemaOOXMLValid(); } @@ -887,7 +887,7 @@ public function testTypePie3DSuperScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:pie3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300000'); $this->assertIsSchemaOOXMLValid(); } @@ -1053,7 +1053,7 @@ public function testTypeScatterSubScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250000'); $this->assertIsSchemaOOXMLValid(); } @@ -1071,7 +1071,7 @@ public function testTypeScatterSuperScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:scatterChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300000'); $this->assertIsSchemaOOXMLValid(); } @@ -1086,7 +1086,7 @@ public function testView3D() $element = '/c:chartSpace/c:chart/c:view3D/c:hPercent'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '100%'); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '100'); $this->assertIsSchemaOOXMLValid(); $oShape->getView3D()->setHeightPercent(null); diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php index 50c9bc2c3d..4bff0530c2 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php @@ -186,8 +186,7 @@ public function testDrawingShapeFill() $element = '/p:sld/p:cSld/p:spTree/p:pic/p:spPr/a:solidFill/a:srgbClr/a:alpha'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertZipXmlAttributeStartsWith('ppt/slides/slide1.xml', $element, 'val', $oColor->getAlpha()); - $this->assertZipXmlAttributeEndsWith('ppt/slides/slide1.xml', $element, 'val', '%'); + $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', (string)($oColor->getAlpha() * 1000)); $this->assertIsSchemaOOXMLValid(); } @@ -217,10 +216,10 @@ public function testFillGradientLinearTable() $oFill = $oCell->getFill(); $oFill->setFillType(Fill::FILL_GRADIENT_LINEAR)->setStartColor(new Color('FF' . $expected1))->setEndColor(new Color('FF' . $expected2)); - $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="0%"]/a:srgbClr'; + $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="0"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected1); - $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="100%"]/a:srgbClr'; + $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="100000"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); $this->assertIsSchemaOOXMLValid(); @@ -240,10 +239,10 @@ public function testFillGradientLinearRichText() $oFill = $oShape->getFill(); $oFill->setFillType(Fill::FILL_GRADIENT_LINEAR)->setStartColor(new Color('FF' . $expected1))->setEndColor(new Color('FF' . $expected2)); - $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="0%"]/a:srgbClr'; + $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="0"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected1); - $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="100%"]/a:srgbClr'; + $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="100000"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); $this->assertIsSchemaOOXMLValid(); @@ -263,10 +262,10 @@ public function testFillGradientPathTable() $oFill = $oCell->getFill(); $oFill->setFillType(Fill::FILL_GRADIENT_PATH)->setStartColor(new Color('FF' . $expected1))->setEndColor(new Color('FF' . $expected2)); - $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="0%"]/a:srgbClr'; + $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="0"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected1); - $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="100%"]/a:srgbClr'; + $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="100000"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); $this->assertIsSchemaOOXMLValid(); @@ -286,10 +285,10 @@ public function testFillGradientPathText() $oFill = $oShape->getFill(); $oFill->setFillType(Fill::FILL_GRADIENT_PATH)->setStartColor(new Color('FF' . $expected1))->setEndColor(new Color('FF' . $expected2)); - $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="0%"]/a:srgbClr'; + $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="0"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected1); - $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="100%"]/a:srgbClr'; + $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="100000"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); $this->assertIsSchemaOOXMLValid(); @@ -391,7 +390,7 @@ public function testListBullet() $oExpectedFont = $oRichText->getActiveParagraph()->getBulletStyle()->getBulletFont(); $oExpectedChar = $oRichText->getActiveParagraph()->getBulletStyle()->getBulletChar(); $oExpectedColor = $oRichText->getActiveParagraph()->getBulletStyle()->getBulletColor()->getRGB(); - $oExpectedAlpha = $oRichText->getActiveParagraph()->getBulletStyle()->getBulletColor()->getAlpha() . "%"; + $oExpectedAlpha = $oRichText->getActiveParagraph()->getBulletStyle()->getBulletColor()->getAlpha() * 1000; $oRichText->createTextRun('Alpha'); $oRichText->createParagraph()->createTextRun('Beta'); @@ -556,8 +555,8 @@ public function testRichTextAutoFitNormal() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr/a:normAutofit'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'fontScale', $expectedFontScale.'%'); - $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'lnSpcReduction', $expectedLnSpcReduction . '%'); + $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'fontScale', $expectedFontScale * 1000); + $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'lnSpcReduction', $expectedLnSpcReduction * 1000); $this->assertIsSchemaOOXMLValid(); } @@ -594,7 +593,7 @@ public function testRichTextLineSpacing() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:pPr/a:lnSpc/a:spcPct'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expectedLineSpacing . '%'); + $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expectedLineSpacing * 1000); $this->assertIsSchemaOOXMLValid(); } @@ -694,7 +693,7 @@ public function testStyleSubScript() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'baseline', '-250%'); + $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'baseline', '-250000'); $this->assertIsSchemaOOXMLValid(); } @@ -707,7 +706,7 @@ public function testStyleSuperScript() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'baseline', '300%'); + $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'baseline', '300000'); $this->assertIsSchemaOOXMLValid(); } diff --git a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php index 652557e8aa..2a6edc8fec 100644 --- a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php +++ b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php @@ -357,7 +357,7 @@ public function assertIsSchemaOOXMLValid() // http://schemas.openxmlformats.org/ to http://purl.oclc.org/ooxml/ // We need to use the http://purl.oclc.org/ooxml/ namespace to validate // the xml against the current schema - $xmlSource = str_replace(array( + /*$xmlSource = str_replace(array( "http://schemas.openxmlformats.org/drawingml/2006/main", "http://schemas.openxmlformats.org/drawingml/2006/chart", "http://schemas.openxmlformats.org/officeDocument/2006/relationships", @@ -367,10 +367,10 @@ public function assertIsSchemaOOXMLValid() "http://purl.oclc.org/ooxml/drawingml/chart", "http://purl.oclc.org/ooxml/officeDocument/relationships", "http://purl.oclc.org/ooxml/presentationml/main", - ), $xmlSource); + ), $xmlSource);*/ $dom->loadXML($xmlSource); - $dom->schemaValidate(__DIR__ . '/../../../resources/schema/ooxml/pml.xsd'); + $dom->schemaValidate(__DIR__ . '/../../../resources/schema/ecma-376/pml.xsd'); $error = libxml_get_last_error(); if ($error instanceof \LibXMLError) { diff --git a/tests/resources/schema/ecma-376/dml-chart.xsd b/tests/resources/schema/ecma-376/dml-chart.xsd new file mode 100644 index 0000000000..7c2a42d718 --- /dev/null +++ b/tests/resources/schema/ecma-376/dml-chart.xsd @@ -0,0 +1,3858 @@ + + + + + + + + + + + + Boolean Value + + + + + + + Floating Point Value + + + + + + + Integer Value + + + + + + + Relationship Reference + + + + + + String With Encoded Characters + + + + + + + + + + Uniform Resource Identifier + + + + + + + + Extension + + + + + + + + + Numeric Value + + + + + + Index + + + + + Number Format + + + + + + + + Format Code + + + + + Point Count + + + + + Numeric Point + + + + + + + + + + Formula + + + + + Number Cache + + + + + + + + + + + Number Reference + + + + + Number Literal + + + + + + + + + + Text Value + + + + + + Index + + + + + + + + + + + + + + + Formula + + + + + String Cache + + + + + + + + + + + String Reference + + + + + Rich Text + + + + + + + + Chart Language Tag + + + + + + + Language Code + + + + + + + + String Point + + + + + + + + + + Level + + + + + + + + + + Formula + + + + + Multi Level String Cache + + + + + + + + + + + Multi Level String Reference + + + + + Number Reference + + + + + Number Literal + + + + + + String Literal + + + + + + + + + + + + + + + + Layout Target + + + + + Inner + + + + + Outer + + + + + + + + Layout Target Value + + + + + + Layout Mode + + + + + Edge + + + + + Factor + + + + + + + + Layout Mode Value + + + + + + + + Layout Target + + + + + Left Mode + + + + + Top Mode + + + + + Width Mode + + + + + Height Mode + + + + + Left + + + + + Top + + + + + Width + + + + + Height + + + + + Chart Extensibility + + + + + + + + + Manual Layout + + + + + Chart Extensibility + + + + + + + + + Chart Text + + + + + Layout + + + + + Overlay + + + + + + + Chart Extensibility + + + + + + + X Rotation + + + + + + + + + + X Rotation Value + + + + + + Height Percent + + + + + + + + + + Height Percent Value + + + + + + Y Rotation + + + + + + + + + + Y Rotation Value + + + + + + Depth Percent + + + + + + + + + + Depth Percent Value + + + + + + Perspective + + + + + + + + + + Perspective Value + + + + + + + + X Rotation + + + + + Height Percent + + + + + Y Rotation + + + + + Depth Percent + + + + + Right Angle Axes + + + + + Perspective + + + + + Chart Extensibility + + + + + + + + + Thickness + + + + + + Picture Options + + + + + Chart Extensibility + + + + + + + + + Show Horizontal Border + + + + + Show Vertical Border + + + + + Show Outline Border + + + + + Show Legend Keys + + + + + + Text Properties + + + + + Chart Extensibility + + + + + + + Gap Amount + + + + + + + + + + Gap Size Value + + + + + + Overlap + + + + + + + + + + Overlap Value + + + + + + Bubble Scale + + + + + + + + + + Bubble Scale Value + + + + + + Size Represents + + + + + Bubble Size Represents Area + + + + + Bubble Size Represents Width + + + + + + + + Size Represents Value + + + + + + First Slice Angle + + + + + + + + + + First Slice Angle Value + + + + + + Hole Size + + + + + + + + + + Hole Size Value + + + + + + Split Type + + + + + Default Split + + + + + Custom Split + + + + + Split by Percentage + + + + + Split by Position + + + + + Split by Value + + + + + + + + Split Type Value + + + + + + + + Second Pie Point + + + + + + + Second Pie Size + + + + + + + + + + Second Pie Size Value + + + + + + + Number Format Code + + + + + Linked to Source + + + + + + Label Alignment + + + + + Center + + + + + Left + + + + + Right + + + + + + + + Label Alignment Value + + + + + + Data Label Position + + + + + Best Fit + + + + + Bottom + + + + + Center + + + + + Inside Base + + + + + Inside End + + + + + Left + + + + + Outside End + + + + + Right + + + + + Top + + + + + + + + Data Label Position Value + + + + + + + + Number Format + + + + + + + Data Label Position + + + + + Show Legend Key + + + + + Show Value + + + + + Show Category Name + + + + + Show Series Name + + + + + Show Percent + + + + + Show Bubble Size + + + + + Separator + + + + + + + + + Layout + + + + + + + + + + + Index + + + + + + Delete + + + + + + + Chart Extensibility + + + + + + + + + + Show Leader Lines + + + + + Leader Lines + + + + + + + + + Data Label + + + + + + Delete + + + + + + + Chart Extensibility + + + + + + + Marker Style + + + + + Circle + + + + + Dash + + + + + Diamond + + + + + Dot + + + + + None + + + + + Picture + + + + + Plus + + + + + Square + + + + + Star + + + + + Triangle + + + + + X + + + + + + + + Marker Style Value + + + + + + Marker Size + + + + + + + + + + Marker Size Value + + + + + + + + Symbol + + + + + Size + + + + + + Chart Extensibility + + + + + + + + + Index + + + + + Invert if Negative + + + + + Marker + + + + + 3D Bubble + + + + + Explosion + + + + + + + Chart Extensibility + + + + + + + Trendline Type + + + + + Exponential + + + + + Linear + + + + + Logarithmic + + + + + Moving Average + + + + + Polynomial + + + + + Power + + + + + + + + Trendline Type Value + + + + + + Order + + + + + + + + + + Order Value + + + + + + Period + + + + + + + + + + Period Value + + + + + + + + Layout + + + + + + Number Format + + + + + + + Chart Extensibility + + + + + + + + + Trendline Name + + + + + + Trendline Type + + + + + Polynomial Trendline Order + + + + + Period + + + + + Forward + + + + + Backward + + + + + Intercept + + + + + Display R Squared Value + + + + + Display Equation + + + + + Trendline Label + + + + + Chart Extensibility + + + + + + + Error Bar Direction + + + + + X + + + + + Y + + + + + + + + Error Bar Direction Value + + + + + + Error Bar Type + + + + + Both + + + + + Minus + + + + + Plus + + + + + + + + Error Bar Type Value + + + + + + Error Value Type + + + + + Custom Error Bars + + + + + Fixed Value + + + + + Percentage + + + + + Standard Deviation + + + + + Standard Error + + + + + + + + Error Bar Type Value + + + + + + + + Error Bar Direction + + + + + Error Bar Type + + + + + Error Bar Value Type + + + + + No End Cap + + + + + Plus + + + + + Minus + + + + + Error Bar Value + + + + + + Chart Extensibility + + + + + + + + + + + + + + Gap Width + + + + + Up Bars + + + + + Down Bars + + + + + Chart Extensibility + + + + + + + + + Index + + + + + Order + + + + + Series Text + + + + + + + + + + + Marker + + + + + Data Point + + + + + Data Labels + + + + + + Error Bars + + + + + Category Axis Data + + + + + + + Chart Extensibility + + + + + + + + + + Marker + + + + + Data Point + + + + + Data Labels + + + + + + Error Bars + + + + + + + Smoothing + + + + + Chart Extensibility + + + + + + + + + + Marker + + + + + Data Point + + + + + Data Labels + + + + + Category Axis Data + + + + + + Chart Extensibility + + + + + + + + + + Invert if Negative + + + + + + Data Point + + + + + Data Labels + + + + + Trendlines + + + + + Error Bars + + + + + Category Axis Data + + + + + + Shape + + + + + Chart Extensibility + + + + + + + + + + + Data Point + + + + + Data Labels + + + + + + Error Bars + + + + + Category Axis Data + + + + + Values + + + + + Chart Extensibility + + + + + + + + + + Explosion + + + + + Data Point + + + + + Data Labels + + + + + Category Axis Data + + + + + + Chart Extensibility + + + + + + + + + + Invert if Negative + + + + + Data Point + + + + + Data Labels + + + + + + Error Bars + + + + + X Values + + + + + Y Values + + + + + Bubble Size + + + + + 3D Bubble + + + + + Chart Extensibility + + + + + + + + + + Category Axis Data + + + + + + Chart Extensibility + + + + + + + Grouping + + + + + 100% Stacked + + + + + Standard + + + + + Stacked + + + + + + + + Grouping Value + + + + + + + + + + + + + Grouping + + + + + + + Data Labels + + + + + Drop Lines + + + + + + + + + + High Low Lines + + + + + + Show Marker + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Gap Depth + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + Line Chart Series + + + + + Data Labels + + + + + + High Low Lines + + + + + Up/Down Bars + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + Scatter Style + + + + + None + + + + + Line + + + + + Line with Markers + + + + + Marker + + + + + Smooth + + + + + Smooth with Markers + + + + + + + + Scatter Style Value + + + + + + + + Scatter Style + + + + + Vary Colors by Point + + + + + Scatter Chart Series + + + + + Data Labels + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + Radar Style + + + + + Standard + + + + + Marker + + + + + Filled + + + + + + + + Radar Style Value + + + + + + + + Radar Style + + + + + + Radar Chart Series + + + + + Data Labels + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + Bar Grouping + + + + + 100% Stacked + + + + + Clustered + + + + + Standard + + + + + Stacked + + + + + + + + Bar Grouping Value + + + + + + Bar Direction + + + + + Bar + + + + + Column + + + + + + + + Bar Direction Value + + + + + + Shape + + + + + Cone + + + + + Cone to Max + + + + + Box + + + + + Cylinder + + + + + Pyramid + + + + + Pyramid to Maximum + + + + + + + + Shape Value + + + + + + + + Bar Direction + + + + + Bar Grouping + + + + + + Bar Chart Series + + + + + Data Labels + + + + + + + + + + Gap Width + + + + + Overlap + + + + + Series Lines + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Gap Width + + + + + Gap Depth + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + Grouping + + + + + + Area Chart Series + + + + + Data Labels + + + + + Drop Lines + + + + + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Gap Depth + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Pie Chart Series + + + + + Data Labels + + + + + + + + + + First Slice Angle + + + + + Chart Extensibility + + + + + + + + + + Chart Extensibility + + + + + + + + + + First Slice Angle + + + + + Hole Size + + + + + Chart Extensibility + + + + + + + Pie of Pie or Bar of Pie Type + + + + + Pie + + + + + Bar + + + + + + + + Pie of Pie or Bar of Pie Type Value + + + + + + + + Pie of Pie or Bar of Pie Type + + + + + + Gap Width + + + + + Split Type + + + + + Split Position + + + + + Custom Split + + + + + Second Pie Size + + + + + + Chart Extensibility + + + + + + + + + + Bubble Chart Series + + + + + Data Labels + + + + + 3D Bubble + + + + + Bubble Scale + + + + + Show Negative Bubbles + + + + + Size Represents + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + + + + + + Band Format + + + + + + + + + Wireframe + + + + + Surface Chart Series + + + + + Band Formats + + + + + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + + + + Axis ID + + + + + Chart Extensibility + + + + + + + Axis Position + + + + + Bottom + + + + + Left + + + + + Right + + + + + Top + + + + + + + + Axis Position Value + + + + + + Crosses + + + + + Axis Crosses at Zero + + + + + Maximum + + + + + Minimum + + + + + + + + Crosses Value + + + + + + Cross Between + + + + + Between + + + + + Midpoint of Category + + + + + + + + Cross Between Value + + + + + + Tick Mark + + + + + Cross + + + + + Inside + + + + + None + + + + + Outside + + + + + + + + Tick Mark Value + + + + + + Tick Label Position + + + + + High + + + + + Low + + + + + Next To + + + + + None + + + + + + + + Tick Label Position Value + + + + + + Skip + + + + + + + + + Tick Skip Value + + + + + + Time Unit + + + + + Days + + + + + Months + + + + + Years + + + + + + + + Time Unit Value + + + + + + Axis Unit + + + + + + + + + Major Unit Value + + + + + + Built-In Unit + + + + + Hundreds + + + + + Thousands + + + + + Ten Thousands + + + + + Hundred Thousands + + + + + Millions + + + + + Ten Millions + + + + + Hundred Millions + + + + + Billions + + + + + Trillions + + + + + + + + Built In Unit Value + + + + + + Picture Format + + + + + Stretch + + + + + Stack + + + + + Stack and Scale + + + + + + + + Picture Format Value + + + + + + Picture Stack Unit + + + + + + + + + Picture Stack Unit + + + + + + + + Apply To Front + + + + + Apply To Sides + + + + + Apply to End + + + + + Picture Format + + + + + Picture Stack Unit + + + + + + + + + Layout + + + + + + + + + + + + + Custom Display Unit + + + + + Built in Display Unit Value + + + + + + Display Units Label + + + + + Chart Extensibility + + + + + + + Orientation + + + + + Maximum to Minimum + + + + + Minimum to Maximum + + + + + + + + Orientation Value + + + + + + Logarithmic Base + + + + + + + + + + Logarithmic Base Value + + + + + + + + Logarithmic Base + + + + + Axis Orientation + + + + + Maximum + + + + + Minimum + + + + + Chart Extensibility + + + + + + + Label Offset + + + + + + + + + + Label Offset Value + + + + + + + + Axis ID + + + + + Scaling + + + + + Delete + + + + + Axis Position + + + + + Major Gridlines + + + + + Minor Gridlines + + + + + Title + + + + + Number Format + + + + + Major Tick Mark + + + + + Minor Tick Mark + + + + + Tick Label Position + + + + + + + Crossing Axis ID + + + + + + Crosses + + + + + Crossing Value + + + + + + + + + + + Automatic Category Axis + + + + + Label Alignment + + + + + Label Offset + + + + + + Tick Mark Skip + + + + + No Multi-level Labels + + + + + Chart Extensibility + + + + + + + + + + Automatic Category Axis + + + + + Label Offset + + + + + Base Time Unit + + + + + Major Unit + + + + + Major Time Unit + + + + + Minor Unit + + + + + Minor Time Unit + + + + + Chart Extensibility + + + + + + + + + + Tick Label Skip + + + + + + Chart Extensibility + + + + + + + + + + Cross Between + + + + + Major Unit + + + + + Minor Unit + + + + + Display Units + + + + + Chart Extensibility + + + + + + + + + Layout + + + + + + Area Charts + + + + + 3D Area Charts + + + + + Line Charts + + + + + 3D Line Charts + + + + + Stock Charts + + + + + Radar Charts + + + + + Scatter Charts + + + + + Pie Charts + + + + + 3D Pie Charts + + + + + Doughnut Charts + + + + + Bar Charts + + + + + 3D Bar Charts + + + + + Pie of Pie or Bar of Pie Charts + + + + + Surface Charts + + + + + 3D Surface Charts + + + + + Bubble Charts + + + + + + + Value Axis + + + + + Category Axis Data + + + + + Date Axis + + + + + Series Axis + + + + + + Data Table + + + + + + Chart Extensibility + + + + + + + + + Index + + + + + + + Marker + + + + + Data Label + + + + + Chart Extensibility + + + + + + + + + Pivot Format + + + + + + + Legend Position + + + + + Bottom + + + + + Top Right + + + + + Left + + + + + Right + + + + + Top + + + + + + + + Legend Position Value + + + + + + + + + + + + + Index + + + + + + Delete + + + + + + + Chart Extensibility + + + + + + + + + Legend Position + + + + + Legend Entry + + + + + Layout + + + + + Overlay + + + + + + + Chart Extensibility + + + + + + + Display Blanks As + + + + + Span + + + + + Gap + + + + + Zero + + + + + + + + Display Blanks As Value + + + + + + + + + Auto Title Is Deleted + + + + + Pivot Formats + + + + + View In 3D + + + + + Floor + + + + + Side Wall + + + + + Back Wall + + + + + Plot Area + + + + + Legend + + + + + Plot Visible Only + + + + + Display Blanks As + + + + + Show Data Labels over Maximum + + + + + Chart Extensibility + + + + + + + Style + + + + + + + + + + Style Type + + + + + + + + Pivot Name + + + + + Format ID + + + + + Chart Extensibility + + + + + + + + + Chart Object + + + + + Data Cannot Be Changed + + + + + Formatting + + + + + Selection + + + + + User Interface + + + + + + + + + Odd Header + + + + + Odd Footer + + + + + Even Header + + + + + Even Footer + + + + + First Header + + + + + First Footer + + + + + + Align With Margins + + + + + Different Odd Even + + + + + Different First + + + + + + + Left + + + + + Right + + + + + Top + + + + + Bottom + + + + + Header + + + + + Footer + + + + + + Printed Page Orientation + + + + + Default Page Orientation + + + + + Portrait Page + + + + + Landscape Page + + + + + + + + + Update Automatically + + + + + + Relationship Reference + + + + + + + Page Size + + + + + First Page Number + + + + + Orientation + + + + + Black and White + + + + + Draft + + + + + Use First Page Number + + + + + Horizontal DPI + + + + + Vertical DPI + + + + + Copies + + + + + + + + Header and Footer + + + + + Page Margins + + + + + Page Setup + + + + + Legacy Drawing for Headers and Footers + + + + + + + + + 1904 Date System + + + + + Editing Language + + + + + Rounded Corners + + + + + Style + + + + + Color Map Override + + + + + Pivot Source + + + + + Protection + + + + + Chart + + + + + Shape Properties + + + + + + External Data Relationship + + + + + Print Settings + + + + + Reference to Chart Drawing Part + + + + + Chart Extensibility + + + + + + + Chart Space + + + + + User Shapes + + + + + Reference to Chart Part + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/dml-chartDrawing.xsd b/tests/resources/schema/ecma-376/dml-chartDrawing.xsd new file mode 100644 index 0000000000..ca1873367e --- /dev/null +++ b/tests/resources/schema/ecma-376/dml-chartDrawing.xsd @@ -0,0 +1,338 @@ + + + + + + + + + + + + Chart Non Visual Properties + + + + + Non-Visual Shape Drawing Properties + + + + + + + + + Non-Visual Shape Properties + + + + + Shape Properties + + + + + Shape Style + + + + + Shape Text Body + + + + + + Reference to Custom Function + + + + + Text Link + + + + + Lock Text + + + + + Publish to Server + + + + + + + + Chart Non Visual Properties + + + + + Non-Visual Connection Shape Drawing Properties + + + + + + + + + Connector Non Visual Properties + + + + + Shape Properties + + + + + Connection Shape Style + + + + + + Reference to Custom Function + + + + + Publish to Server + + + + + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + Non-Visual Picture Properties + + + + + Picture Fill + + + + + + + + Reference to Custom Function + + + + + Publish to Server + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Graphic Frame Drawing Properties + + + + + + + + + Non-Visual Graphic Frame Properties + + + + + Graphic Frame Transform + + + + + Graphical Object + + + + + + Reference to Custom Function + + + + + Publish To Server + + + + + + + + Chart Non Visual Properties + + + + + Non-Visual Group Shape Drawing Properties + + + + + + + + + Non-Visual Group Shape Properties + + + + + Group Shape Properties + + + + + + Shape + + + + + Group Shape + + + + + Graphic Frame + + + + + Connector Shape + + + + + Picture + + + + + + + + + + + Shape Definition + + + + + Group Shape + + + + + Graphic Frame + + + + + Connection Shape + + + + + + + + + Chart Marker Coordinate Value + + + + + + + + + + + Relative X Coordinate + + + + + Relative Y Coordinate + + + + + + + + + Starting Anchor Point + + + + + Ending Anchor Point + + + + + + + + + + + Shape Extent + + + + + + + + + + Relative Anchor Shape Size + + + + + Absolute Anchor Shape Size + + + + + + + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/dml-compatibility.xsd b/tests/resources/schema/ecma-376/dml-compatibility.xsd new file mode 100644 index 0000000000..dd8d5a6825 --- /dev/null +++ b/tests/resources/schema/ecma-376/dml-compatibility.xsd @@ -0,0 +1,17 @@ + + + + + + + + Shape ID + + + + + + Legacy Drawing Object + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/dml-diagram.xsd b/tests/resources/schema/ecma-376/dml-diagram.xsd new file mode 100644 index 0000000000..35ed75d2d3 --- /dev/null +++ b/tests/resources/schema/ecma-376/dml-diagram.xsd @@ -0,0 +1,3635 @@ + + + + + + + + + + + + + Language + + + + + Description Value + + + + + + + Language + + + + + Description Value + + + + + + + Category Type + + + + + Priority + + + + + + + + Color Transform Category + + + + + + + Color Application Method Type + + + + + Span + + + + + Cycle + + + + + Repeat + + + + + + + Hue Direction + + + + + Clockwise Hue Direction + + + + + Counterclockwise Hue Direction + + + + + + + + + + + Color Application Method Type + + + + + Hue Direction + + + + + + + + Fill Color List + + + + + Line Color List + + + + + Effect Color List + + + + + Text Line Color List + + + + + Text Fill Color List + + + + + Text Effect Color List + + + + + + + Name + + + + + + + + Title + + + + + Description + + + + + Color Transform Category List + + + + + Style Label + + + + + + + Unique ID + + + + + Minimum Version + + + + + + Color Transform Definitions + + + + + + + Title + + + + + Description + + + + + Color Transform Category List + + + + + + + Unique ID + + + + + Minimum Version + + + + + Resource ID + + + + + + Color Transform Header + + + + + + + Color Transform Definition Header + + + + + + + Color Transform Header List + + + + + + + + + + + + Point Type + + + + + Node + + + + + Assistant Element + + + + + Document + + + + + Presentation + + + + + Parent Transition + + + + + Sibling Transition + + + + + + + + + Property Set + + + + + Shape Properties + + + + + Text Body + + + + + + + Model Identifier + + + + + Point Type + + + + + Connection Identifier + + + + + + + + Point + + + + + + + Connection Type + + + + + Parent Of + + + + + Presentation Of + + + + + Presentation Parent Of + + + + + Unknown Relationship + + + + + + + + + + + Model Identifier + + + + + Point Type + + + + + Source Identifier + + + + + Destination Identifier + + + + + Source Position + + + + + Destination Position + + + + + Parent Transition Identifier + + + + + Sibling Transition Identifier + + + + + Presentation Identifier + + + + + + + + Connection + + + + + + + + + Point List + + + + + Connection List + + + + + Background Formatting + + + + + Whole E2O Formatting + + + + + + + + Data Model + + + + + + + + + + + + + Axis + + + + + Data Point Type + + + + + Hide Last Transition + + + + + Start + + + + + Count + + + + + Step + + + + + + + Constraint Type + + + + + For + + + + + For Name + + + + + Data Point Type + + + + + + + Reference Type + + + + + Reference For + + + + + Reference For Name + + + + + Reference Point Type + + + + + + + + + + + + Operator + + + + + Value + + + + + Factor + + + + + + + + Constraint + + + + + + + + + + + + Value + + + + + Factor + + + + + Max Value + + + + + + + + Rule + + + + + + + + + + + + + Layout Shape Type + + + + + + 1-Based Index + + + + + + + + + Adjust Handle Index + + + + + Value + + + + + + + + Shape Adjust + + + + + + + + + Shape Adjust List + + + + + + + Rotation + + + + + Shape Type + + + + + Relationship to Image Part + + + + + Z-Order Offset + + + + + Hide Geometry + + + + + Prevent Text Editing + + + + + Image Placeholder + + + + + + + Parameter Type + + + + + Value + + + + + + + + Parameter + + + + + + + Algorithm Type + + + + + Revision Number + + + + + + + + Algorithm + + + + + Shape + + + + + Presentation Of + + + + + Constraint List + + + + + Rule List + + + + + Variable List + + + + + For Each + + + + + Layout Node + + + + + Choose Element + + + + + + + Name + + + + + Style Label + + + + + Child Order + + + + + Move With + + + + + + + + Algorithm + + + + + Shape + + + + + Presentation Of + + + + + Constraint List + + + + + Rule List + + + + + For Each + + + + + Layout Node + + + + + Choose Element + + + + + + + Name + + + + + Reference + + + + + + + + + Algorithm + + + + + Shape + + + + + Presentation Of + + + + + Constraint List + + + + + Rule List + + + + + For Each + + + + + Layout Node + + + + + Choose Element + + + + + + + Name + + + + + + Function + + + + + Argument + + + + + Operator + + + + + Value + + + + + + + + Algorithm + + + + + Shape + + + + + Presentation Of + + + + + Constraint List + + + + + Rule List + + + + + For Each + + + + + Layout Node + + + + + Choose Element + + + + + Extension List + + + + + + Name + + + + + + + + If + + + + + Else + + + + + + Name + + + + + + + + Data Model + + + + + + Use Default + + + + + + + Category Type + + + + + Priority + + + + + + + + Category + + + + + + + + Language + + + + + Value + + + + + + + Language + + + + + Value + + + + + + + + Title + + + + + Description + + + + + Category List + + + + + Sample Data + + + + + Style Data + + + + + Color Transform Sample Data + + + + + Layout Node + + + + + + + Unique Identifier + + + + + Minimum Version + + + + + Default Style + + + + + + Layout Definition + + + + + + + Title + + + + + Description + + + + + Category List + + + + + + + Unique Identifier + + + + + Minimum Version + + + + + Default Style + + + + + Resource Identifier + + + + + + Layout Definition Header + + + + + + + Layout Definition Header + + + + + + + Diagram Layout Header List + + + + + + Explicit Relationship to Diagram Data Part + + + + + Explicit Relationship to Diagram Layout Definition Part + + + + + Explicit Relationship to Style Definition Part + + + + + Explicit Relationship to Diagram Colors Part + + + + + + Explicit Relationships to Diagram Parts + + + + + Parameter Values + + + + + + + + + + + Model Identifier + + + + + + + + Presentation Layout Variables + + + + + Shape Style + + + + + + Presentation Element Identifier + + + + + Presentation Name + + + + + Presentation Style Label + + + + + Presentation Style Index + + + + + Presentation Style Count + + + + + Current Diagram Type + + + + + Current Diagram Category + + + + + Current Style Type + + + + + Current Style Category + + + + + Color Transform Type Identifier + + + + + Color Transform Category + + + + + Coherent 3D Behavior + + + + + Placeholder Text + + + + + Placeholder + + + + + Custom Rotation + + + + + Custom Vertical Flip + + + + + Custom Horizontal Flip + + + + + Fixed Width Override + + + + + Fixed Height Override + + + + + Width Scale + + + + + Height Scale + + + + + Text Changed + + + + + Custom Factor Width + + + + + Custom Factor Height + + + + + Neighbor Offset Width + + + + + Neighbor Offset Height + + + + + Radius Scale + + + + + Include Angle Scale + + + + + + + + Diagram Direction Definition + + + + + Normal Direction + + + + + Reversed Direction + + + + + + + Hierarchy Branch Style Definition + + + + + Left + + + + + Right + + + + + Hanging + + + + + Standard + + + + + Initial + + + + + + + One by One Animation Value Definition + + + + + Disable One-by-One + + + + + One By One + + + + + By Branch One By One + + + + + + + Animation Level String Definition + + + + + Disable Level At Once + + + + + By Level Animation + + + + + From Center Animation + + + + + + + + Show Organization Chart User Interface Value + + + + + + Number of Nodes Definition + + + + + + + + + Maximum Children Value + + + + + + + Preferred Number of CHildren Value + + + + + + + Show Insert Bullet Value + + + + + + + Diagram Direction Value + + + + + + + Organization Chart Branch Style Value + + + + + + + One By One Animation Value + + + + + + + Level Animation Value + + + + + + Resize Handle + + + + + Exact + + + + + Relative + + + + + + + + Shape Resize Style Type + + + + + + + + Show Organization Chart User Interface + + + + + Maximum Children + + + + + Preferred Number of Children + + + + + Show Insert Bullet + + + + + Diagram Direction + + + + + Organization Chart Branch Style + + + + + One by One Animation String + + + + + Level Animation + + + + + Shape Resize Style + + + + + + + + + + + + + + + + + + + Natural Language + + + + + Description Value + + + + + + + Natural Language + + + + + Description Value + + + + + + + Category Type + + + + + Priority + + + + + + + + Category + + + + + + + + + + + + + + 3-D Scene + + + + + 3-D Shape Properties + + + + + Text Properties + + + + + Shape Style + + + + + + + Style Name + + + + + + + + Title + + + + + Style Label Description + + + + + Category List + + + + + 3-D Scene + + + + + Style Label + + + + + + + Unique Style ID + + + + + Minimum Version + + + + + + Style Definition + + + + + + + Title + + + + + Style Label Description + + + + + Category List + + + + + + + Unique Style ID + + + + + Minimum Version + + + + + Resource ID + + + + + + Style Definition Header + + + + + + + Style Definition Header + + + + + + + List of Style Definition Headers + + + + + + + + Algorithm Types + + + + + Composite + + + + + Connector Algorithm + + + + + Cycle Algorithm + + + + + Hierarchy Child Algorithm + + + + + Hierarchy Root Algorithm + + + + + Pyramid Algorithm + + + + + Linear Algorithm + + + + + Space Algorithm + + + + + Text Algorithm + + + + + Snake Algorithm + + + + + + + Axis Type + + + + + Self + + + + + Child + + + + + Descendant + + + + + Descendant or Self + + + + + Parent + + + + + Ancestor + + + + + Ancestor or Self + + + + + Follow Sibling + + + + + Preceding Sibling + + + + + Follow + + + + + Preceding + + + + + Root + + + + + None + + + + + + + Axis Type List + + + + + + Boolean Constraint + + + + + None + + + + + Equal + + + + + Greater Than or Equal to + + + + + Less Than or Equal to + + + + + + + Child Order + + + + + Bottom + + + + + Top + + + + + + + Constraint Type + + + + + Unknown + + + + + Alignment Offset + + + + + Beginning Margin + + + + + Bending Distance + + + + + Beginning Padding + + + + + Bottom + + + + + Bottom Margin + + + + + Bottom Offset + + + + + Center Height + + + + + Center X Offset + + + + + Center Width + + + + + Center Y Offset + + + + + Connection Distance + + + + + Diameter + + + + + End Margin + + + + + End Padding + + + + + Height + + + + + Arrowhead Height + + + + + Height Offset + + + + + Left + + + + + Left Margin + + + + + Left Offset + + + + + Right + + + + + Right Margin + + + + + Right Offset + + + + + Primary Font Size + + + + + Pyramid Accent Ratio + + + + + Secondary Font Size + + + + + Sibling Spacing + + + + + Secondary Sibling Spacing + + + + + Spacing + + + + + Stem Thickness + + + + + Top + + + + + Top Margin + + + + + Top Offset + + + + + User Defined A + + + + + User Defined B + + + + + User Defined C + + + + + User Defined D + + + + + User Defined E + + + + + User Defined F + + + + + User Defined G + + + + + User Defined H + + + + + User Defined I + + + + + User Defined J + + + + + User Defined K + + + + + User Defined L + + + + + User Defined M + + + + + User Defined N + + + + + User Defined O + + + + + User Defined P + + + + + User Defined Q + + + + + User Defined R + + + + + User Defined S + + + + + User Defined T + + + + + User Defined U + + + + + User Defined V + + + + + User Defined W + + + + + User Defined X + + + + + User Defined Y + + + + + User Defined Z + + + + + Width + + + + + Arrowhead Width + + + + + Width Offset + + + + + + + Constraint Relationship + + + + + Self + + + + + Child + + + + + Descendant + + + + + + + Element Type + + + + + All + + + + + Document + + + + + Node + + + + + Normal + + + + + Non Normal + + + + + Assistant + + + + + Non Assistant + + + + + Parent Transition + + + + + Presentation + + + + + Sibling Transition + + + + + + + Element Type List + + + + + + Parameter Identifier + + + + + Horizontal Alignment + + + + + Vertical Alignment + + + + + Child Direction + + + + + Child Alignment + + + + + Secondary Child Alignment + + + + + Linear Direction + + + + + Secondary Linear Direction + + + + + Start Element + + + + + Bend Point + + + + + Connection Route + + + + + Beginning Arrowhead Style + + + + + End Style + + + + + Connector Dimension + + + + + Rotation Path + + + + + Center Shape Mapping + + + + + Node Horizontal Alignment + + + + + Node Vertical Alignment + + + + + Fallback Scale + + + + + Text Direction + + + + + Pyramid Accent Position + + + + + Pyramid Accent Text Margin + + + + + Text Block Direction + + + + + Text Anchor Horizontal + + + + + Text Anchor Vertical + + + + + Text Anchor Horizontal With Children + + + + + Text Anchor Vertical With Children + + + + + Parent Text Left-to-Right Alignment + + + + + Parent Text Right-to-Left Alignment + + + + + Shape Text Left-to-Right Alignment + + + + + Shape Text Right-to-Left Alignment + + + + + Auto Text Rotation + + + + + Grow Direction + + + + + Flow Direction + + + + + Continue Direction + + + + + Breakpoint + + + + + Offset + + + + + Hierarchy Alignment + + + + + Breakpoint Fixed Value + + + + + Start Bullets At Level + + + + + Start Angle + + + + + Span Angle + + + + + Aspect Ratio + + + + + Line Spacing Parent + + + + + Line Spacing After Parent Paragraph + + + + + Line Spacing Children + + + + + Line Spacing After Children Paragraph + + + + + Route Shortest Distance + + + + + Text Alignment + + + + + Pyramid Level Node + + + + + Pyramid Accent Background Node + + + + + Pyramid Accent Text Node + + + + + Source Node + + + + + Destination Node + + + + + Beginning Points + + + + + End Points + + + + + + + Integer List + + + + + + Unsigned Integer List + + + + + + Boolean List. + + + + + + Function Type + + + + + Count + + + + + Position + + + + + Reverse Position + + + + + Position Even + + + + + Position Odd + + + + + Variable + + + + + Depth + + + + + Max Depth + + + + + + + Function Operator + + + + + Equal + + + + + Not Equal To + + + + + Greater Than + + + + + Less Than + + + + + Greater Than or Equal to + + + + + Less Than or Equal to + + + + + + + Horizontal Alignment + + + + + Left + + + + + Center + + + + + Right + + + + + None + + + + + + + Vertical Alignment + + + + + Top + + + + + Middle + + + + + Bottom + + + + + None + + + + + + + Child Direction + + + + + Horizontal + + + + + Vertical + + + + + + + Child Alignment + + + + + Top + + + + + Bottom + + + + + Left + + + + + Right + + + + + + + Secondary Child Alignment + + + + + None + + + + + Top + + + + + Bottom + + + + + Left + + + + + Right + + + + + + + Linear Direction + + + + + From Left + + + + + From Right + + + + + From Top + + + + + From Bottom + + + + + + + Secondary Linear Direction + + + + + None + + + + + From Left + + + + + From Right + + + + + From Top + + + + + From Bottom + + + + + + + Starting Element + + + + + Node + + + + + Transition + + + + + + + Rotation Path + + + + + None + + + + + Along Path + + + + + + + Center Shape Mapping + + + + + None + + + + + First Node + + + + + + + Bend Point + + + + + Beginning + + + + + Default + + + + + End + + + + + + + Connector Routing + + + + + Straight + + + + + Bending + + + + + Curve + + + + + Long Curve + + + + + + + Arrowhead Styles + + + + + Auto + + + + + Arrowhead Present + + + + + No Arrowhead + + + + + + + Connector Dimension + + + + + 1 Dimension + + + + + 2 Dimensions + + + + + Custom + + + + + + + Connector Point + + + + + Auto + + + + + Bottom Center + + + + + Center + + + + + Middle Left + + + + + Middle Right + + + + + Top Center + + + + + Bottom Left + + + + + Bottom Right + + + + + Top Left + + + + + Top Right + + + + + Radial + + + + + + + Node Horizontal Alignment + + + + + Left + + + + + Center + + + + + Right + + + + + + + Node Vertical Alignment + + + + + Top + + + + + Middle + + + + + Bottom + + + + + + + Fallback Dimension + + + + + 1 Dimension + + + + + 2 Dimensions + + + + + + + Text Direction + + + + + From Top + + + + + From Bottom + + + + + + + Pyramid Accent Position + + + + + Before + + + + + Pyramid Accent After + + + + + + + Pyramid Accent Text Margin + + + + + Step + + + + + Stack + + + + + + + Text Block Direction + + + + + Horizontal + + + + + Vertical Direction + + + + + + + Text Anchor Horizontal + + + + + None + + + + + Center + + + + + + + Text Anchor Vertical + + + + + Top + + + + + Middle + + + + + Bottom + + + + + + + Text Alignment + + + + + Left + + + + + Center + + + + + Right + + + + + + + Auto Text Rotation + + + + + None + + + + + Upright + + + + + Gravity + + + + + + + Grow Direction + + + + + Top Left + + + + + Top Right + + + + + Bottom Left + + + + + Bottom Right + + + + + + + Flow Direction + + + + + Row + + + + + Column + + + + + + + Continue Direction + + + + + Reverse Direction + + + + + Same Direction + + + + + + + Breakpoint + + + + + End of Canvas + + + + + Balanced + + + + + Fixed + + + + + + + Offset + + + + + Center + + + + + Offset + + + + + + + Hierarchy Alignment + + + + + Top Left + + + + + Top Right + + + + + Top Center Children + + + + + Top Center Descendants + + + + + Bottom Left + + + + + Bottom Right + + + + + Bottom Center Child + + + + + Bottom Center Descendant + + + + + Left Top + + + + + Left Bottom + + + + + Left Center Child + + + + + Left Center Descendant + + + + + Right Top + + + + + Right Bottom + + + + + Right Center Children + + + + + Right Center Descendants + + + + + + + Function Value + + + + + + Variable Type + + + + + Unknown + + + + + Organizational Chart Algorithm + + + + + Child Max + + + + + Child Preference + + + + + Bullets Enabled + + + + + Direction + + + + + Hierarchy Branch + + + + + Animate One + + + + + Animation Level + + + + + Resize Handles + + + + + + + Function Argument + + + + + + Output Shape Type + + + + + None + + + + + Connection + + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/dml-lockedCanvas.xsd b/tests/resources/schema/ecma-376/dml-lockedCanvas.xsd new file mode 100644 index 0000000000..e464f7e5cc --- /dev/null +++ b/tests/resources/schema/ecma-376/dml-lockedCanvas.xsd @@ -0,0 +1,10 @@ + + + + + + + Locked Canvas Container + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/dml-main.xsd b/tests/resources/schema/ecma-376/dml-main.xsd new file mode 100644 index 0000000000..21361a8d38 --- /dev/null +++ b/tests/resources/schema/ecma-376/dml-main.xsd @@ -0,0 +1,9464 @@ + + + + + + + + + + + + + + + + + + + + + Linked Relationship ID + + + + + + + + + + Linked Relationship ID + + + + + + + + + + Linked Relationship ID + + + + + + + Track + + + + + Time + + + + + + + + Audio Start Time + + + + + Audio End Time + + + + + + + + + + Audio from CD + + + + + Audio from WAV File + + + + + Audio from File + + + + + Video from File + + + + + QuickTime from File + + + + + + + + + + + + + + + Style Matrix Column Index + + + + + + Font Collection Index + + + + + Major Font + + + + + Minor Font + + + + + None + + + + + + + Theme Color Reference + + + + + Dark 1 + + + + + Light 1 + + + + + Dark 2 + + + + + Light 2 + + + + + Accent 1 + + + + + Accent 2 + + + + + Accent 3 + + + + + Accent 4 + + + + + Accent 5 + + + + + Accent 6 + + + + + Hyperlink + + + + + Followed Hyperlink + + + + + + + + + Dark 1 + + + + + Light 1 + + + + + Dark 2 + + + + + Light 2 + + + + + Accent 1 + + + + + Accent 2 + + + + + Accent 3 + + + + + Accent 4 + + + + + Accent 5 + + + + + Accent 6 + + + + + Hyperlink + + + + + Followed Hyperlink + + + + + + + Name + + + + + + + + + + Name + + + + + + + Script + + + + + Typeface + + + + + + + + Custom color + + + + + + + + + Latin Font + + + + + East Asian Font + + + + + Complex Script Font + + + + + Font + + + + + + + + + + + 3D Scene Properties + + + + + 3D properties + + + + + + + + + Major Font + + + + + Minor fonts + + + + + + + Name + + + + + + + + + + + + + + + + + + Effect Style + + + + + + + + + + + + + + Fill Style List + + + + + Line Style List + + + + + Effect Style List + + + + + Background Fill Style List + + + + + + Name + + + + + + + + + Font Scheme + + + + + Format Scheme + + + + + + + + + + + + + + + Uniform Resource Identifier + + + + + + Coordinate + + + + + + + + + Coordinate Point + + + + + + Positive Coordinate + + + + + + + + + Positive Coordinate Point + + + + + + + + Angle + + + + + + + Value + + + + + + Fixed Angle + + + + + + + + + Positive Fixed Angle + + + + + + + + + + Value + + + + + + Percentage + + + + + + + Value + + + + + + Positive Percentage + + + + + + + + + Value + + + + + + Fixed Percentage + + + + + + + + + + Value + + + + + + Positive Fixed Percentage + + + + + + + + + + Value + + + + + + + Numerator + + + + + Denominator + + + + + + + X-Axis Coordinate + + + + + Y-Axis Coordinate + + + + + + + Extent Length + + + + + Extent Width + + + + + + + + + + + + + Tint + + + + + Shade + + + + + Complement + + + + + Inverse + + + + + Gray + + + + + Alpha + + + + + Alpha Offset + + + + + Alpha Modulation + + + + + Hue + + + + + Hue Offset + + + + + Hue Modulate + + + + + Saturation + + + + + Saturation Offset + + + + + Saturation Modulation + + + + + Luminance + + + + + Luminance Offset + + + + + Luminance Modulation + + + + + Red + + + + + Red Offset + + + + + Red Modulation + + + + + Green + + + + + Green Offset + + + + + Green Modification + + + + + Blue + + + + + Blue Offset + + + + + Blue Modification + + + + + Gamma + + + + + Inverse Gamma + + + + + + + + + + + Red + + + + + Green + + + + + Blue + + + + + + Hex Binary of Length 3 + + + + + + + + + + + + Value + + + + + + + + + + Hue + + + + + Saturation + + + + + Luminance + + + + + + System Color Value + + + + + Scroll Bar System Color + + + + + Background System Color + + + + + Active Caption System Color + + + + + Inactive Caption System Color + + + + + Menu System Color + + + + + Window System Color + + + + + Window Frame System Color + + + + + Menu Text System Color + + + + + Window Text System Color + + + + + Caption Text System Color + + + + + Active Border System Color + + + + + Inactive Border System Color + + + + + Application Workspace System Color + + + + + Highlight System Color + + + + + Highlight Text System Color + + + + + Button Face System Color + + + + + Button Shadow System Color + + + + + Gray Text System Color + + + + + Button Text System Color + + + + + Inactive Caption Text System Color + + + + + Button Highlight System Color + + + + + 3D Dark System Color + + + + + 3D Light System Color + + + + + Info Text System Color + + + + + Info Back System Color + + + + + Hot Light System Color + + + + + Gradient Active Caption System Color + + + + + Gradient Inactive Caption System Color + + + + + Menu Highlight System Color + + + + + Menu Bar System Color + + + + + + + + + + + Value + + + + + Last Color + + + + + + Scheme Color + + + + + Background Color 1 + + + + + Text Color 1 + + + + + Background Color 2 + + + + + Text Color 2 + + + + + Accent Color 1 + + + + + Accent Color 2 + + + + + Accent Color 3 + + + + + Accent Color 4 + + + + + Accent Color 5 + + + + + Accent Color 6 + + + + + Hyperlink Color + + + + + Followed Hyperlink Color + + + + + Style Color + + + + + Dark Color 1 + + + + + Light Color 1 + + + + + Dark Color 2 + + + + + Light Color 2 + + + + + + + + + + + Value + + + + + + Preset Color Value + + + + + Alice Blue Preset Color + + + + + Antique White Preset Color + + + + + Aqua Preset Color + + + + + Aquamarine Preset Color + + + + + Azure Preset Color + + + + + Beige Preset Color + + + + + Bisque Preset Color + + + + + Black Preset Color + + + + + Blanched Almond Preset Color + + + + + Blue Preset Color + + + + + Blue Violet Preset Color + + + + + Brown Preset Color + + + + + Burly Wood Preset Color + + + + + Cadet Blue Preset Color + + + + + Chartreuse Preset Color + + + + + Chocolate Preset Color + + + + + Coral Preset Color + + + + + Cornflower Blue Preset Color + + + + + Cornsilk Preset Color + + + + + Crimson Preset Color + + + + + Cyan Preset Color + + + + + Dark Blue Preset Color + + + + + Dark Cyan Preset Color + + + + + Dark Goldenrod Preset Color + + + + + Dark Gray Preset Color + + + + + Dark Green Preset Color + + + + + Dark Khaki Preset Color + + + + + Dark Magenta Preset Color + + + + + Dark Olive Green Preset Color + + + + + Dark Orange Preset Color + + + + + Dark Orchid Preset Color + + + + + Dark Red Preset Color + + + + + Dark Salmon Preset Color + + + + + Dark Sea Green Preset Color + + + + + Dark Slate Blue Preset Color + + + + + Dark Slate Gray Preset Color + + + + + Dark Turquoise Preset Color + + + + + Dark Violet Preset Color + + + + + Deep Pink Preset Color + + + + + Deep Sky Blue Preset Color + + + + + Dim Gray Preset Color + + + + + Dodger Blue Preset Color + + + + + Firebrick Preset Color + + + + + Floral White Preset Color + + + + + Forest Green Preset Color + + + + + Fuchsia Preset Color + + + + + Gainsboro Preset Color + + + + + Ghost White Preset Color + + + + + Gold Preset Color + + + + + Goldenrod Preset Color + + + + + Gray Preset Color + + + + + Green Preset Color + + + + + Green Yellow Preset Color + + + + + Honeydew Preset Color + + + + + Hot Pink Preset Color + + + + + Indian Red Preset Color + + + + + Indigo Preset Color + + + + + Ivory Preset Color + + + + + Khaki Preset Color + + + + + Lavender Preset Color + + + + + Lavender Blush Preset Color + + + + + Lawn Green Preset Color + + + + + Lemon Chiffon Preset Color + + + + + Light Blue Preset Color + + + + + Light Coral Preset Color + + + + + Light Cyan Preset Color + + + + + Light Goldenrod Yellow Preset Color + + + + + Light Gray Preset Color + + + + + Light Green Preset Color + + + + + Light Pink Preset Color + + + + + Light Salmon Preset Color + + + + + Light Sea Green Preset Color + + + + + Light Sky Blue Preset Color + + + + + Light Slate Gray Preset Color + + + + + Light Steel Blue Preset Color + + + + + Light Yellow Preset Color + + + + + Lime Preset Color + + + + + Lime Green Preset Color + + + + + Linen Preset Color + + + + + Magenta Preset Color + + + + + Maroon Preset Color + + + + + Medium Aquamarine Preset Color + + + + + Medium Blue Preset Color + + + + + Medium Orchid Preset Color + + + + + Medium Purple Preset Color + + + + + Medium Sea Green Preset Color + + + + + Medium Slate Blue Preset Color + + + + + Medium Spring Green Preset Color + + + + + Medium Turquoise Preset Color + + + + + Medium Violet Red Preset Color + + + + + Midnight Blue Preset Color + + + + + Mint Cream Preset Color + + + + + Misty Rose Preset Color + + + + + Moccasin Preset Color + + + + + Navajo White Preset Color + + + + + Navy Preset Color + + + + + Old Lace Preset Color + + + + + Olive Preset Color + + + + + Olive Drab Preset Color + + + + + Orange Preset Color + + + + + Orange Red Preset Color + + + + + Orchid Preset Color + + + + + Pale Goldenrod Preset Color + + + + + Pale Green Preset Color + + + + + Pale Turquoise Preset Color + + + + + Pale Violet Red Preset Color + + + + + Papaya Whip Preset Color + + + + + Peach Puff Preset Color + + + + + Peru Preset Color + + + + + Pink Preset Color + + + + + Plum Preset Color + + + + + Powder Blue Preset Color + + + + + Purple Preset Color + + + + + Red Preset Color + + + + + Rosy Brown Preset Color + + + + + Royal Blue Preset Color + + + + + Saddle Brown Preset Color + + + + + Salmon Preset Color + + + + + Sandy Brown Preset Color + + + + + Sea Green Preset Color + + + + + Sea Shell Preset Color + + + + + Sienna Preset Color + + + + + Silver Preset Color + + + + + Sky Blue Preset Color + + + + + Slate Blue Preset Color + + + + + Slate Gray Preset Color + + + + + Snow Preset Color + + + + + Spring Green Preset Color + + + + + Steel Blue Preset Color + + + + + Tan Preset Color + + + + + Teal Preset Color + + + + + Thistle Preset Color + + + + + Tomato Preset Color + + + + + Turquoise Preset Color + + + + + Violet Preset Color + + + + + Wheat Preset Color + + + + + White Preset Color + + + + + White Smoke Preset Color + + + + + Yellow Preset Color + + + + + Yellow Green Preset Color + + + + + + + + + + + Value + + + + + + + + Extension + + + + + + + + + + + + + + Horizontal Ratio + + + + + Vertical Ratio + + + + + + + + + Offset + + + + + Extents + + + + + + Rotation + + + + + Horizontal Flip + + + + + Vertical Flip + + + + + + + + Offset + + + + + Extents + + + + + Child Offset + + + + + Child Extents + + + + + + Rotation + + + + + Horizontal Flip + + + + + Vertical Flip + + + + + + + X-Coordinate in 3D + + + + + Y-Coordinate in 3D + + + + + Z-Coordinate in 3D + + + + + + + Distance along X-axis in 3D + + + + + Distance along Y-axis in 3D + + + + + Distance along Z-axis in 3D + + + + + + + Latitude + + + + + Longitude + + + + + Revolution + + + + + + + Left Offset + + + + + Top Offset + + + + + Right Offset + + + + + Bottom Offset + + + + + + Rectangle Alignments + + + + + Rectangle Alignment Enum ( Top Left ) + + + + + Rectangle Alignment Enum ( Top ) + + + + + Rectangle Alignment Enum ( Top Right ) + + + + + Rectangle Alignment Enum ( Left ) + + + + + Rectangle Alignment Enum ( Center ) + + + + + Rectangle Alignment Enum ( Right ) + + + + + Rectangle Alignment Enum ( Bottom Left ) + + + + + Rectangle Alignment Enum ( Bottom ) + + + + + Rectangle Alignment Enum ( Bottom Right ) + + + + + + + GUID Method + + + + + + + + + + RGB Color Model - Percentage Variant + + + + + RGB Color Model - Hex Variant + + + + + Hue, Saturation, Luminance Color Model + + + + + System Color + + + + + Scheme Color + + + + + Preset Color + + + + + + + + + + + + + + + + + Black and White Mode + + + + + Color + + + + + Automatic + + + + + Gray + + + + + Light Gray + + + + + Inverse Gray + + + + + Gray and White + + + + + Black and Gray + + + + + Black and White + + + + + Black + + + + + White + + + + + Hidden + + + + + + + + Embedded Picture Reference + + + + + Linked Picture Reference + + + + + + + Embedded Audio File Relationship ID + + + + + Sound Name + + + + + Recognized Built-In Sound + + + + + + + + Hyperlink Sound + + + + + + + Drawing Object Hyperlink Target + + + + + Invalid URL + + + + + Action Setting + + + + + Target Frame + + + + + Hyperlink Tooltip + + + + + Add Hyperlink to Page History + + + + + Highlight Click + + + + + End Sounds + + + + + + Drawing Element ID + + + + + + + + + + + Disallow Shape Grouping + + + + + Disallow Shape Selection + + + + + Disallow Shape Rotation + + + + + Disallow Aspect Ratio Change + + + + + Disallow Shape Movement + + + + + Disallow Shape Resize + + + + + Disallow Shape Point Editing + + + + + Disallow Showing Adjust Handles + + + + + Disallow Arrowhead Changes + + + + + Disallow Shape Type Change + + + + + + + + + + + + + + + + + Disallow Shape Text Editing + + + + + + + + + + + Disallow Crop Changes + + + + + + + + + + Disallow Shape Grouping + + + + + Disallow Shape Ungrouping + + + + + Disallow Shape Selection + + + + + Disallow Shape Rotation + + + + + Disallow Aspect Ratio Change + + + + + Disallow Moving Shape + + + + + Disallow Shape Resizing + + + + + + + + + + Disallow Shape Grouping + + + + + Disallow Selection of Child Shapes + + + + + Disallow Shape Selection + + + + + Disallow Aspect Ratio Change + + + + + Disallow Shape Movement + + + + + Disallow Shape Resize + + + + + + + + Drawing Element On Click Hyperlink + + + + + Hyperlink for Hover + + + + + + + Unique Identifier + + + + + Name + + + + + Alternative Text for Object + + + + + Hidden + + + + + + + + Shape Locks + + + + + + + Text Box + + + + + + + + Connection Shape Locks + + + + + Connection Start + + + + + Connection End + + + + + + + + + + Picture Locks + + + + + + + Relative Resize Preferred + + + + + + + + Group Shape Locks + + + + + + + + + + Graphic Frame Locks + + + + + + + + + + + + + + Uniform Resource Identifier + + + + + + + + Graphic Object Data + + + + + + + Graphic Object + + + + + + + + Chart Animation Build Step + + + + + Category + + + + + Category Points + + + + + Series + + + + + Series Points + + + + + All Points + + + + + Grid and Legend + + + + + + + Diagram Animation Build Steps + + + + + Shape + + + + + Background + + + + + + + + Identifier + + + + + Animation Build Step + + + + + + + Series Index + + + + + Category Index + + + + + Animation Build Step + + + + + + + + Diagram to Animate + + + + + Chart to Animate + + + + + + + Animation Build Type + + + + + Animate At Once + + + + + + + Diagram only Animation Types + + + + + Elements One-by-One + + + + + Level One-by-One + + + + + Each Level at Once + + + + + + + Diagram Animation Build Type + + + + + + + Build + + + + + Reverse Animation + + + + + + Chart only Animation Types + + + + + Series + + + + + Catefory + + + + + Series Element + + + + + Category Element + + + + + + + Chart Animation Build Type + + + + + + + Build + + + + + Animate Background + + + + + + + + Build Diagram + + + + + Build Chart + + + + + + + + + + + + + + + + + + + Outline + + + + + + + + + + + + + + + + + + Shape Text Body + + + + + + Use Shape Text Rectangle + + + + + + + + + + + + + Non-Visual Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Shape + + + + + Visual Properties + + + + + Text Shape + + + + + Style + + + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Connector Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Connection Shape + + + + + Visual Properties + + + + + Shape Style + + + + + + + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + Non-Visual Properties for a Picture + + + + + Picture Fill + + + + + Shape Properties + + + + + + + + + + + + Non-Visual Graphic Frame Drawing Properties + + + + + + + + + Non-Visual Properties for a Graphic Frame + + + + + + + + + + + + + Non-Visual Group Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Group Shape + + + + + Visual Group Shape Properties + + + + + + Text shape + + + + + Shape + + + + + Connection Shape + + + + + Picture + + + + + Graphic Frame + + + + + Group shape + + + + + + + + + + + + Preset Camera Type + + + + + Legacy Oblique Top Left + + + + + Legacy Oblique Top + + + + + Legacy Oblique Top Right + + + + + Legacy Oblique Left + + + + + Legacy Oblique Front + + + + + Legacy Oblique Right + + + + + Legacy Oblique Bottom Left + + + + + Legacy Oblique Bottom + + + + + Legacy Oblique Bottom Right + + + + + Legacy Perspective Top Left + + + + + Legacy Perspective Top + + + + + Legacy Perspective Top Right + + + + + Legacy Perspective Left + + + + + Legacy Perspective Front + + + + + Legacy Perspective Right + + + + + Legacy Perspective Bottom Left + + + + + Legacy Perspective Bottom + + + + + Legacy Perspective Bottom Right + + + + + Orthographic Front + + + + + Isometric Top Up + + + + + Isometric Top Down + + + + + Isometric Bottom Up + + + + + Isometric Bottom Down + + + + + Isometric Left Up + + + + + Isometric Left Down + + + + + Isometric Right Up + + + + + Isometric Right Down + + + + + Isometric Off Axis 1 Left + + + + + Isometric Off Axis 1 Right + + + + + Isometric Off Axis 1 Top + + + + + Isometric Off Axis 2 Left + + + + + Isometric Off Axis 2 Right + + + + + Isometric Off Axis 2 Top + + + + + Isometric Off Axis 3 Left + + + + + Isometric Off Axis 3 Right + + + + + Isometric Off Axis 3 Bottom + + + + + Isometric Off Axis 4 Left + + + + + Isometric Off Axis 4 Right + + + + + Isometric Off Axis 4 Bottom + + + + + Oblique Top Left + + + + + Oblique Top + + + + + Oblique Top Right + + + + + Oblique Left + + + + + Oblique Right + + + + + Oblique Bottom Left + + + + + Oblique Bottom + + + + + Oblique Bottom Right + + + + + Perspective Front + + + + + Perspective Left + + + + + Perspective Right + + + + + Orthographic Above + + + + + Perspective Below + + + + + Perspective Above Left Facing + + + + + Perspective Above Right Facing + + + + + Perspective Contrasting Left Facing + + + + + Perspective Contrasting Right Facing + + + + + Perspective Heroic Left Facing + + + + + Perspective Heroic Right Facing + + + + + Perspective Heroic Extreme Left Facing + + + + + Perspective Heroic Extreme Right Facing + + + + + Perspective Relaxed + + + + + Perspective Relaxed Moderately + + + + + + + Field of View Angle + + + + + + + + + + + Rotation + + + + + + Preset Camera Type + + + + + Field of View + + + + + Zoom + + + + + + + + + Light Rig Direction + + + + + Top Left + + + + + Top + + + + + Top Right + + + + + Left + + + + + Right + + + + + Bottom Left + + + + + Bottom + + + + + Bottom Right + + + + + + + Light Rig Type + + + + + Legacy Flat 1 + + + + + Legacy Flat 2 + + + + + Legacy Flat 3 + + + + + Legacy Flat 4 + + + + + Legacy Normal 1 + + + + + Legacy Normal 2 + + + + + Legacy Normal 3 + + + + + Legacy Normal 4 + + + + + Legacy Harsh 1 + + + + + Legacy Harsh 2 + + + + + Legacy Harsh 3 + + + + + Legacy Harsh 4 + + + + + Three Point + + + + + Light Rig Enum ( Balanced ) + + + + + Soft + + + + + Harsh + + + + + Flood + + + + + Contrasting + + + + + Morning + + + + + Sunrise + + + + + Sunset + + + + + Chilly + + + + + Freezing + + + + + Flat + + + + + Two Point + + + + + Glow + + + + + Bright Room + + + + + + + + + Rotation + + + + + + Rig Preset + + + + + Direction + + + + + + + + + + + + + Camera + + + + + Light Rig + + + + + Backdrop Plane + + + + + + + + + + + + + Anchor Point + + + + + Normal + + + + + Up Vector + + + + + + + + + + + Bevel Presets + + + + + Relaxed Inset + + + + + Circle + + + + + Slope + + + + + Cross + + + + + Angle + + + + + Soft Round + + + + + Convex + + + + + Cool Slant + + + + + Divot + + + + + Riblet + + + + + Hard Edge + + + + + Art Deco + + + + + + + + Width + + + + + Height + + + + + Preset Bevel + + + + + + Preset Material Type + + + + + Legacy Matte + + + + + Legacy Plastic + + + + + Legacy Metal + + + + + Legacy Wireframe + + + + + Matte + + + + + Plastic + + + + + Metal + + + + + Warm Matte + + + + + Translucent Powder + + + + + Powder + + + + + Dark Edge + + + + + Soft Edge + + + + + Clear + + + + + Flat + + + + + Soft Metal + + + + + + + + + Top Bevel + + + + + Bottom Bevel + + + + + Extrusion Color + + + + + Contour Color + + + + + + + Shape Depth + + + + + Extrusion Height + + + + + Contour Width + + + + + Preset Material Type + + + + + + + Z Coordinate + + + + + + + + Apply 3D shape properties + + + + + No text in 3D scene + + + + + + + + + + + Threshold + + + + + + + + + + + + + + Amount + + + + + + + Radius + + + + + + + Alpha + + + + + + + Threshold + + + + + + + Radius + + + + + Grow Bounds + + + + + + + + Change Color From + + + + + Change Color To + + + + + + Consider Alpha Values + + + + + + + + + + + + + + + + + + + + Radius + + + + + + + + Hue + + + + + Saturation + + + + + Luminance + + + + + + + + + + Blur Radius + + + + + Distance + + + + + Direction + + + + + + + Brightness + + + + + Contrast + + + + + + + + + + Blur Radius + + + + + Shadow Offset Distance + + + + + Shadow Direction + + + + + Horizontal Scaling Factor + + + + + Vertical Scaling Factor + + + + + Horizontal Skew + + + + + Vertical Skew + + + + + Shadow Alignment + + + + + Rotate With Shape + + + + + + Preset Shadow Type + + + + + Top Left Drop Shadow + + + + + Top Right Drop Shadow + + + + + Back Left Perspective Shadow + + + + + Back Right Perspective Shadow + + + + + Bottom Left Drop Shadow + + + + + Bottom Right Drop Shadow + + + + + Front Left Perspective Shadow + + + + + Front Right Perspective Shadow + + + + + Top Left Small Drop Shadow + + + + + Top Left Large Drop Shadow + + + + + Back Left Long Perspective Shadow + + + + + Back Right Long Perspective Shadow + + + + + Top Left Double Drop Shadow + + + + + Bottom Right Small Drop Shadow + + + + + Front Left Long Perspective Shadow + + + + + Front Right LongPerspective Shadow + + + + + 3D Outer Box Shadow + + + + + 3D Inner Box Shadow + + + + + Back Center Perspective Shadow + + + + + Front Bottom Shadow + + + + + + + + + + + Preset Shadow + + + + + Distance + + + + + Direction + + + + + + + Blur Radius + + + + + Start Opacity + + + + + Start Position + + + + + End Alpha + + + + + End Position + + + + + Distance + + + + + Direction + + + + + Fade Direction + + + + + Horizontal Ratio + + + + + Vertical Ratio + + + + + Horizontal Skew + + + + + Vertical Skew + + + + + Shadow Alignment + + + + + Rotate With Shape + + + + + + + Offset X + + + + + Offset Y + + + + + + + Radius + + + + + + + Hue + + + + + Amount + + + + + + + Horizontal Ratio + + + + + Vertical Ratio + + + + + Horizontal Skew + + + + + Vertical Skew + + + + + Horizontal Shift + + + + + Vertical Shift + + + + + + + + + + + + + Angle + + + + + Scaled + + + + + + Path Shade Type + + + + + Shape + + + + + Circle + + + + + Rectangle + + + + + + + + + Fill To Rectangle + + + + + + Gradient Fill Path + + + + + + + + Linear Gradient Fill + + + + + Path Gradient + + + + + + + Tile Flip Mode + + + + + None + + + + + Horizontal + + + + + Vertical + + + + + Horizontal and Vertical + + + + + + + + + + + Position + + + + + + + + Gradient stops + + + + + + + + + Gradient Stop List + + + + + + Tile Rectangle + + + + + + Tile Flip + + + + + Rotate With Shape + + + + + + + Horizontal Offset + + + + + Vertical Offset + + + + + Horizontal Ratio + + + + + Vertical Ratio + + + + + Tile Flipping + + + + + Alignment + + + + + + + + Fill Rectangle + + + + + + + + + Tile + + + + + Stretch + + + + + + + Blip Compression Type + + + + + Email Compression + + + + + Screen Viewing Compression + + + + + Printing Compression + + + + + High Quality Printing Compression + + + + + No Compression + + + + + + + + + + Alpha Bi-Level Effect + + + + + + + + + Alpha Modulate Fixed Effect + + + + + + Bi-Level (Black/White) Effect + + + + + + + Solid Color Replacement + + + + + + + + + Luminance Effect + + + + + Tint Effect + + + + + + + + + Compression State + + + + + + + + + Source Rectangle + + + + + + + DPI Setting + + + + + Rotate With Shape + + + + + + Preset Pattern Value + + + + + 5% + + + + + 10% + + + + + 20% + + + + + 25% + + + + + 30% + + + + + 40% + + + + + 50% + + + + + 60% + + + + + 70% + + + + + 75% + + + + + 80% + + + + + 90% + + + + + Horizontal + + + + + Vertical + + + + + Light Horizontal + + + + + Light Vertical + + + + + Dark Horizontal + + + + + Dark Vertical + + + + + Narrow Horizontal + + + + + Narrow Vertical + + + + + Dashed Horizontal + + + + + Dashed Vertical + + + + + Cross + + + + + Downward Diagonal + + + + + Upward Diagonal + + + + + Light Downward Diagonal + + + + + Light Upward Diagonal + + + + + Dark Downward Diagonal + + + + + Dark Upward Diagonal + + + + + Wide Downward Diagonal + + + + + Wide Upward Diagonal + + + + + Dashed Downward Diagonal + + + + + Dashed Upward DIagonal + + + + + Diagonal Cross + + + + + Small Checker Board + + + + + Large Checker Board + + + + + Small Grid + + + + + Large Grid + + + + + Dotted Grid + + + + + Small Confetti + + + + + Large Confetti + + + + + Horizontal Brick + + + + + Diagonal Brick + + + + + Solid Diamond + + + + + Open Diamond + + + + + Dotted Diamond + + + + + Plaid + + + + + Sphere + + + + + Weave + + + + + Divot + + + + + Shingle + + + + + Wave + + + + + Trellis + + + + + Zig Zag + + + + + + + + + Foreground color + + + + + Background color + + + + + + Preset Pattern + + + + + + + + + + + + + Pattern Fill + + + + + Group Fill + + + + + + + + + + + + + + + + + Blend Mode + + + + + Overlay + + + + + Multiply + + + + + Screen + + + + + Darken + + + + + Lighten + + + + + + + + + + + Blend + + + + + + + Reference + + + + + + + + Effect Container + + + + + Effect + + + + + + Alpha Ceiling Effect + + + + + Alpha Floor Effect + + + + + Alpha Inverse Effect + + + + + Alpha Modulate Effect + + + + + + Alpha Inset/Outset Effect + + + + + Alpha Replace Effect + + + + + + Blend Effect + + + + + + Color Change Effect + + + + + + Duotone Effect + + + + + Fill + + + + + Fill Overlay Effect + + + + + Glow Effect + + + + + Gray Scale Effect + + + + + Hue Saturation Luminance Effect + + + + + Inner Shadow Effect + + + + + Luminance + + + + + Outer Shadow Effect + + + + + Preset Shadow + + + + + Reflection Effect + + + + + Relative Offset Effect + + + + + Soft Edge Effect + + + + + + Transform Effect + + + + + + + Effect Container Type + + + + + Sibling + + + + + Tree + + + + + + + + + Effect Container Type + + + + + Name + + + + + + + + + + + + + Effect to blend + + + + + + Blend Mode + + + + + + + + Blur Effect + + + + + + + + + + + + + + + + Effect Container + + + + + Effect Container + + + + + + + + + + + + + + + + Preset Shape Types + + + + + Line Shape + + + + + Line Inverse Shape + + + + + Triangle Shape + + + + + Right Triangle Shape + + + + + Rectangle Shape + + + + + Diamond Shape + + + + + Parallelogram Shape + + + + + Trapezoid Shape + + + + + Non-Isosceles Trapezoid Shape + + + + + Pentagon Shape + + + + + Hexagon Shape + + + + + Heptagon Shape + + + + + Octagon Shape + + + + + Decagon Shape + + + + + Dodecagon Shape + + + + + Four Pointed Star Shape + + + + + Five Pointed Star Shape + + + + + Six Pointed Star Shape + + + + + Seven Pointed Star Shape + + + + + Eight Pointed Star Shape + + + + + Ten Pointed Star Shape + + + + + Twelve Pointed Star Shape + + + + + Sixteen Pointed Star Shape + + + + + Twenty Four Pointed Star Shape + + + + + Thirty Two Pointed Star Shape + + + + + Round Corner Rectangle Shape + + + + + One Round Corner Rectangle Shape + + + + + Two Same-side Round Corner Rectangle Shape + + + + + Two Diagonal Round Corner Rectangle Shape + + + + + One Snip One Round Corner Rectangle Shape + + + + + One Snip Corner Rectangle Shape + + + + + Two Same-side Snip Corner Rectangle Shape + + + + + Two Diagonal Snip Corner Rectangle Shape + + + + + Plaque Shape + + + + + Ellipse Shape + + + + + Teardrop Shape + + + + + Home Plate Shape + + + + + Chevron Shape + + + + + Pie Wedge Shape + + + + + Pie Shape + + + + + Block Arc Shape + + + + + Donut Shape + + + + + No Smoking Shape + + + + + Right Arrow Shape + + + + + Left Arrow Shape + + + + + Up Arrow Shape + + + + + Down Arrow Shape + + + + + Striped Right Arrow Shape + + + + + Notched Right Arrow Shape + + + + + Bent Up Arrow Shape + + + + + Left Right Arrow Shape + + + + + Up Down Arrow Shape + + + + + Left Up Arrow Shape + + + + + Left Right Up Arrow Shape + + + + + Quad-Arrow Shape + + + + + Callout Left Arrow Shape + + + + + Callout Right Arrow Shape + + + + + Callout Up Arrow Shape + + + + + Callout Down Arrow Shape + + + + + Callout Left Right Arrow Shape + + + + + Callout Up Down Arrow Shape + + + + + Callout Quad-Arrow Shape + + + + + Bent Arrow Shape + + + + + U-Turn Arrow Shape + + + + + Circular Arrow Shape + + + + + Left Circular Arrow Shape + + + + + Left Right Circular Arrow Shape + + + + + Curved Right Arrow Shape + + + + + Curved Left Arrow Shape + + + + + Curved Up Arrow Shape + + + + + Curved Down Arrow Shape + + + + + Swoosh Arrow Shape + + + + + Cube Shape + + + + + Can Shape + + + + + Lightning Bolt Shape + + + + + Heart Shape + + + + + Sun Shape + + + + + Moon Shape + + + + + Smiley Face Shape + + + + + Irregular Seal 1 Shape + + + + + Irregular Seal 2 Shape + + + + + Folded Corner Shape + + + + + Bevel Shape + + + + + Frame Shape + + + + + Half Frame Shape + + + + + Corner Shape + + + + + Diagonal Stripe Shape + + + + + Chord Shape + + + + + Curved Arc Shape + + + + + Left Bracket Shape + + + + + Right Bracket Shape + + + + + Left Brace Shape + + + + + Right Brace Shape + + + + + Bracket Pair Shape + + + + + Brace Pair Shape + + + + + Straight Connector 1 Shape + + + + + Bent Connector 2 Shape + + + + + Bent Connector 3 Shape + + + + + Bent Connector 4 Shape + + + + + Bent Connector 5 Shape + + + + + Curved Connector 2 Shape + + + + + Curved Connector 3 Shape + + + + + Curved Connector 4 Shape + + + + + Curved Connector 5 Shape + + + + + Callout 1 Shape + + + + + Callout 2 Shape + + + + + Callout 3 Shape + + + + + Callout 1 Shape + + + + + Callout 2 Shape + + + + + Callout 3 Shape + + + + + Callout 1 with Border Shape + + + + + Callout 2 with Border Shape + + + + + Callout 3 with Border Shape + + + + + Callout 1 with Border and Accent Shape + + + + + Callout 2 with Border and Accent Shape + + + + + Callout 3 with Border and Accent Shape + + + + + Callout Wedge Rectangle Shape + + + + + Callout Wedge Round Rectangle Shape + + + + + Callout Wedge Ellipse Shape + + + + + Callout Cloud Shape + + + + + Cloud Shape + + + + + Ribbon Shape + + + + + Ribbon 2 Shape + + + + + Ellipse Ribbon Shape + + + + + Ellipse Ribbon 2 Shape + + + + + Left Right Ribbon Shape + + + + + Vertical Scroll Shape + + + + + Horizontal Scroll Shape + + + + + Wave Shape + + + + + Double Wave Shape + + + + + Plus Shape + + + + + Process Flow Shape + + + + + Decision Flow Shape + + + + + Input Output Flow Shape + + + + + Predefined Process Flow Shape + + + + + Internal Storage Flow Shape + + + + + Document Flow Shape + + + + + Multi-Document Flow Shape + + + + + Terminator Flow Shape + + + + + Preparation Flow Shape + + + + + Manual Input Flow Shape + + + + + Manual Operation Flow Shape + + + + + Connector Flow Shape + + + + + Punched Card Flow Shape + + + + + Punched Tape Flow Shape + + + + + Summing Junction Flow Shape + + + + + Or Flow Shape + + + + + Collate Flow Shape + + + + + Sort Flow Shape + + + + + Extract Flow Shape + + + + + Merge Flow Shape + + + + + Offline Storage Flow Shape + + + + + Online Storage Flow Shape + + + + + Magnetic Tape Flow Shape + + + + + Magnetic Disk Flow Shape + + + + + Magnetic Drum Flow Shape + + + + + Display Flow Shape + + + + + Delay Flow Shape + + + + + Alternate Process Flow Shape + + + + + Off-Page Connector Flow Shape + + + + + Blank Button Shape + + + + + Home Button Shape + + + + + Help Button Shape + + + + + Information Button Shape + + + + + Forward or Next Button Shape + + + + + Back or Previous Button Shape + + + + + End Button Shape + + + + + Beginning Button Shape + + + + + Return Button Shape + + + + + Document Button Shape + + + + + Sound Button Shape + + + + + Movie Button Shape + + + + + Gear 6 Shape + + + + + Gear 9 Shape + + + + + Funnel Shape + + + + + Plus Math Shape + + + + + Minus Math Shape + + + + + Multiply Math Shape + + + + + Divide Math Shape + + + + + Equal Math Shape + + + + + Not Equal Math Shape + + + + + Corner Tabs Shape + + + + + Square Tabs Shape + + + + + Plaque Tabs Shape + + + + + Chart X Shape + + + + + Chart Star Shape + + + + + Chart Plus Shape + + + + + + + Preset Text Shape Types + + + + + No Text Shape + + + + + Plain Text Shape + + + + + Stop Sign Text Shape + + + + + Triangle Text Shape + + + + + Inverted Triangle Text Shape + + + + + Chevron Text Shape + + + + + Inverted Chevron Text Shape + + + + + Inside Ring Text Shape + + + + + Outside Ring Text Shape + + + + + Upward Arch Text Shape + + + + + Downward Arch Text Shape + + + + + Circle Text Shape + + + + + Button Text Shape + + + + + Upward Pour Arch Text Shape + + + + + Downward Pour Arch Text Shape + + + + + Circle Pour Text Shape + + + + + Button Pour Text Shape + + + + + Upward Curve Text Shape + + + + + Downward Curve Text Shape + + + + + Upward Can Text Shape + + + + + Downward Can Text Shape + + + + + Wave 1 Text Shape + + + + + Wave 2 Text Shape + + + + + Double Wave 1 Text Shape + + + + + Wave 4 Text Shape + + + + + Inflate Text Shape + + + + + Deflate Text Shape + + + + + Bottom Inflate Text Shape + + + + + Bottom Deflate Text Shape + + + + + Top Inflate Text Shape + + + + + Top Deflate Text Shape + + + + + Deflate-Inflate Text Shape + + + + + Deflate-Inflate-Deflate Text Shape + + + + + Right Fade Text Shape + + + + + Left Fade Text Shape + + + + + Upward Fade Text Shape + + + + + Downward Fade Text Shape + + + + + Upward Slant Text Shape + + + + + Downward Slant Text Shape + + + + + Upward Cascade Text Shape + + + + + Downward Cascade Text Shape + + + + + + + Geometry Guide Name Properties + + + + + + Geometry Guide Formula Properties + + + + + + + Shape Guide Name + + + + + Shape Guide Formula + + + + + + + + Shape Guide + + + + + + + Adjustable Coordinate Methods + + + + + + Adjustable Angle Methods + + + + + + + X-Coordinate + + + + + Y-Coordinate + + + + + + + Left + + + + + Top + + + + + Right + + + + + Bottom Position + + + + + + + + Position + + + + + + Horizontal Adjustment Guide + + + + + Minimum Horizontal Adjustment + + + + + Maximum Horizontal Adjustment + + + + + Vertical Adjustment Guide + + + + + Minimum Vertical Adjustment + + + + + Maximum Vertical Adjustment + + + + + + + + Shape Position Coordinate + + + + + + Radial Adjustment Guide + + + + + Minimum Radial Adjustment + + + + + Maximum Radial Adjustment + + + + + Angle Adjustment Guide + + + + + Minimum Angle Adjustment + + + + + Maximum Angle Adjustment + + + + + + + + Position + + + + + + Connection Site Angle + + + + + + + + XY Adjust Handle + + + + + Polar Adjust Handle + + + + + + + + + Shape Connection Site + + + + + + + + Identifier + + + + + Index + + + + + + + + Move end point + + + + + + + + + Line end point + + + + + + + + Shape Arc Width Radius + + + + + Shape Arc Height Radius + + + + + Shape Arc Start Angle + + + + + Shape Arc Swing Angle + + + + + + + + Shape Path Point + + + + + + + + + Control points and end point + + + + + + + + Path Fill Mode + + + + + No Path Fill + + + + + Normal Path Fill + + + + + Lighten Path Fill + + + + + Lighten Path Fill Less + + + + + Darken Path Fill + + + + + Darken Path Fill Less + + + + + + + + + Close Shape Path + + + + + Move Path To + + + + + Draw Line To + + + + + Draw Arc To + + + + + Draw Quadratic Bezier Curve To + + + + + Draw Cubic Bezier Curve To + + + + + + Path Width + + + + + Path Height + + + + + Path Fill + + + + + Path Stroke + + + + + 3D Extrusion Allowed + + + + + + + + Shape Path + + + + + + + + + List of Shape Adjust Values + + + + + + Preset Shape + + + + + + + + Adjust Value List + + + + + + Preset Warp Shape + + + + + + + + Adjust Value List + + + + + List of Shape Guides + + + + + List of Shape Adjust Handles + + + + + List of Shape Connection Sites + + + + + Shape Text Rectangle + + + + + List of Shape Paths + + + + + + + + + Custom geometry + + + + + Preset geometry + + + + + + + + + Custom Geometry + + + + + Preset Text Warp + + + + + + + + + + Line End Type + + + + + None + + + + + Triangle Arrow Head + + + + + Stealth Arrow + + + + + Diamond + + + + + Oval + + + + + Arrow Head + + + + + + + Line End Width + + + + + Small + + + + + Medium + + + + + Large + + + + + + + Line End Length + + + + + Small + + + + + Medium + + + + + Large + + + + + + + + Line Head/End Type + + + + + Width of Head/End + + + + + Length of Head/End + + + + + + + + No Fill + + + + + Solid Fill + + + + + Gradient Fill + + + + + + + + + + + Miter Join Limit + + + + + + + + Round Line Join + + + + + Line Join Bevel + + + + + Miter Line Join + + + + + + + Preset Line Dash Value + + + + + Solid + + + + + Dot + + + + + Dash + + + + + Large Dash + + + + + Dash Dot + + + + + Large Dash Dot + + + + + Large Dash Dot Dot + + + + + System Dash + + + + + System Dot + + + + + System Dash Dot + + + + + System Dash Dot Dot + + + + + + + + Value + + + + + + + Dash Length + + + + + Space Length + + + + + + + + Dash Stop + + + + + + + + + Preset Dash + + + + + Custom Dash + + + + + + + End Line Cap + + + + + Round Line Cap + + + + + Square Line Cap + + + + + Flat Line Cap + + + + + + + Line Width + + + + + + + + + Alignment Type + + + + + Center Alignment + + + + + Inset Alignment + + + + + + + Compound Line Type + + + + + Single Line + + + + + Double Lines + + + + + Thick Thin Double Lines + + + + + Thin Thick Double Lines + + + + + Thin Thick Thin Triple Lines + + + + + + + + + + + + Line Head/End Style + + + + + Tail line end style + + + + + + + Line Width + + + + + Line Ending Cap Type + + + + + Compound Line Type + + + + + Stroke Alignment + + + + + + + + + Shape ID + + + + + + + + + + + + + + + 2D Transform for Individual Objects + + + + + + + + + + + + + Black and White Mode + + + + + + + + 2D Transform for Grouped Objects + + + + + + + + + + Black and White Mode + + + + + + + + + + + + + Style Matrix Index + + + + + + + + + + Identifier + + + + + + + + + + + Font Reference + + + + + + + + + + + + + + Visual Properties + + + + + + + + + + + + + Shape Default + + + + + Line Default + + + + + Text Default + + + + + + + + + + + + + + + + + Background 1 + + + + + Text 1 + + + + + Background 2 + + + + + Text 2 + + + + + Accent 1 + + + + + Accent 2 + + + + + Accent 3 + + + + + Accent 4 + + + + + Accent 5 + + + + + Accent 6 + + + + + Hyperlink + + + + + Followed Hyperlink + + + + + + + + + Master Color Mapping + + + + + Override Color Mapping + + + + + + + + + + + + + + + + Extra Color Scheme + + + + + + + + + Theme Elements + + + + + Object Defaults + + + + + Extra Color Scheme List + + + + + Custom Color List + + + + + + + Name + + + + + + + + Color Scheme + + + + + + + + + + + + Color Map + + + + + + + Theme + + + + + Theme Override + + + + + Theme Manager + + + + + + + + + + + + + Left Border Line Properties + + + + + Right Border Line Properties + + + + + Top Border Line Properties + + + + + Bottom Border Line Properties + + + + + Top-Left to Bottom-Right Border Line Properties + + + + + Bottom-Left to Top-Right Border Line Properties + + + + + Cell 3-D + + + + + + + + Left Margin + + + + + Right Margin + + + + + Top Margin + + + + + Bottom Margin + + + + + Text Direction + + + + + Anchor + + + + + Anchor Center + + + + + Horizontal Overflow + + + + + + + + + + Width + + + + + + + + Table Grid Column + + + + + + + + + Text Body + + + + + Table Cell Properties + + + + + + + Row Span + + + + + Grid Span + + + + + Horizontal Merge + + + + + Vertical Merge + + + + + + + + Table Cell + + + + + + + Height + + + + + + + + + + + Table Style + + + + + Table Style ID + + + + + + Extension List + + + + + + Right-to-Left + + + + + First Row + + + + + First Column + + + + + Last Row + + + + + Last Column + + + + + Banded Rows + + + + + Banded Columns + + + + + + + + Table Properties + + + + + Table Grid + + + + + Table Row + + + + + + + Table + + + + + + + + + + + + + + Bevel + + + + + Light Rig + + + + + + + Preset Material + + + + + + + + Fill + + + + + Fill Reference + + + + + + + + + + Line Reference + + + + + + + + + Effect + + + + + Effect Reference + + + + + + + + + Font + + + + + + + + On/Off Style Type + + + + + On + + + + + Off + + + + + Default + + + + + + + + + + + + + Bold + + + + + Italic + + + + + + + + Left Border + + + + + Right Border + + + + + Top Border + + + + + Bottom Border + + + + + Inside Horizontal Border + + + + + Inside Vertical Border + + + + + Top Left to Bottom Right Border + + + + + Top Right to Bottom Left Border + + + + + + + + + + + + + + + + Table Cell Borders + + + + + + + + + + + Table Cell Text Style + + + + + Table Cell Style + + + + + + + + + Table Background + + + + + Whole Table + + + + + Band 1 Horizontal + + + + + Band 2 Horizontal + + + + + Band 1 Vertical + + + + + Band 2 Vertical + + + + + Last Column + + + + + First Column + + + + + Last Row + + + + + Southeast Cell + + + + + Southwest Cell + + + + + First Row + + + + + Northeast Cell + + + + + Northwest Cell + + + + + + + Style ID + + + + + Name + + + + + + + + Table Style + + + + + + Default + + + + + + Table Style List + + + + + + + + + + + + Text Paragraph Properties + + + + + + End Paragraph Run Properties + + + + + + + Text Anchoring Types + + + + + Text Anchoring Type Enum ( Top ) + + + + + Text Anchor Enum ( Center ) + + + + + Text Anchor Enum ( Bottom ) + + + + + Text Anchor Enum ( Justified ) + + + + + Text Anchor Enum ( Distributed ) + + + + + + + Text Vertical Overflow + + + + + Text Overflow Enum ( Overflow ) + + + + + Text Overflow Enum ( Ellipsis ) + + + + + Text Overflow Enum ( Clip ) + + + + + + + Text Horizontal Overflow Types + + + + + Text Horizontal Overflow Enum ( Overflow ) + + + + + Text Horizontal Overflow Enum ( Clip ) + + + + + + + Vertical Text Types + + + + + Vertical Text Type Enum ( Horizontal ) + + + + + Vertical Text Type Enum ( Vertical ) + + + + + Vertical Text Type Enum ( Vertical 270 ) + + + + + Vertical Text Type Enum ( WordArt Vertical ) + + + + + Vertical Text Type Enum ( East Asian Vertical ) + + + + + Vertical Text Type Enum ( Mongolian Vertical ) + + + + + Vertical WordArt Right to Left + + + + + + + Text Wrapping Types + + + + + Text Wrapping Type Enum ( None ) + + + + + Text Wrapping Type Enum ( Square ) + + + + + + + Text Column Count + + + + + + + + + + + Default Paragraph Style + + + + + List Level 1 Text Style + + + + + List Level 2 Text Style + + + + + List Level 3 Text Style + + + + + List Level 4 Text Style + + + + + List Level 5 Text Style + + + + + List Level 6 Text Style + + + + + List Level 7 Text Style + + + + + List Level 8 Text Style + + + + + List Level 9 Text Style + + + + + + + + Text Font Scale Percentage + + + + + + + + + + Font Scale + + + + + Line Space Reduction + + + + + + + + + + No AutoFit + + + + + Normal AutoFit + + + + + Shape AutoFit + + + + + + + + + Preset Text Shape + + + + + + 3D Scene Properties + + + + + + + + Rotation + + + + + Paragraph Spacing + + + + + Text Vertical Overflow + + + + + Text Horizontal Overflow + + + + + Vertical Text + + + + + Text Wrapping Type + + + + + Left Inset + + + + + Top Inset + + + + + Right Inset + + + + + Bottom Inset + + + + + Number of Columns + + + + + Space Between Columns + + + + + Columns Right-To-Left + + + + + From WordArt + + + + + Anchor + + + + + Anchor Center + + + + + Force Anti-Alias + + + + + Text Upright + + + + + Compatible Line Spacing + + + + + + + + Body Properties + + + + + Text List Styles + + + + + Text Paragraphs + + + + + + + + + + + + Start Bullet At Number + + + + + + + + + Text Auto-number Schemes + + + + + Autonumber Enum ( alphaLcParenBoth ) + + + + + Autonumbering Enum ( alphaUcParenBoth ) + + + + + Autonumbering Enum ( alphaLcParenR ) + + + + + Autonumbering Enum ( alphaUcParenR ) + + + + + Autonumbering Enum ( alphaLcPeriod ) + + + + + Autonumbering Enum ( alphaUcPeriod ) + + + + + Autonumbering Enum ( arabicParenBoth ) + + + + + Autonumbering Enum ( arabicParenR ) + + + + + Autonumbering Enum ( arabicPeriod ) + + + + + Autonumbering Enum ( arabicPlain ) + + + + + Autonumbering Enum ( romanLcParenBoth ) + + + + + Autonumbering Enum ( romanUcParenBoth ) + + + + + Autonumbering Enum ( romanLcParenR ) + + + + + Autonumbering Enum ( romanUcParenR ) + + + + + Autonumbering Enum ( romanLcPeriod ) + + + + + Autonumbering Enum ( romanUcPeriod ) + + + + + Autonumbering Enum ( circleNumDbPlain ) + + + + + Autonumbering Enum ( circleNumWdBlackPlain ) + + + + + Autonumbering Enum ( circleNumWdWhitePlain ) + + + + + Autonumbering Enum ( arabicDbPeriod ) + + + + + Autonumbering Enum ( arabicDbPlain ) + + + + + Autonumbering Enum ( ea1ChsPeriod ) + + + + + Autonumbering Enum ( ea1ChsPlain ) + + + + + Autonumbering Enum ( ea1ChtPeriod ) + + + + + Autonumbering Enum ( ea1ChtPlain ) + + + + + Autonumbering Enum ( ea1JpnChsDbPeriod ) + + + + + Autonumbering Enum ( ea1JpnKorPlain ) + + + + + Autonumbering Enum ( ea1JpnKorPeriod ) + + + + + Autonumbering Enum ( arabic1Minus ) + + + + + Autonumbering Enum ( arabic2Minus ) + + + + + Autonumbering Enum ( hebrew2Minus ) + + + + + Autonumbering Enum ( thaiAlphaPeriod ) + + + + + Autonumbering Enum ( thaiAlphaParenR ) + + + + + Autonumbering Enum ( thaiAlphaParenBoth ) + + + + + Autonumbering Enum ( thaiNumPeriod ) + + + + + Autonumbering Enum ( thaiNumParenR ) + + + + + Autonumbering Enum ( thaiNumParenBoth ) + + + + + Autonumbering Enum ( hindiAlphaPeriod ) + + + + + Autonumbering Enum ( hindiNumPeriod ) + + + + + Autonumbering Enum ( hindiNumParenR ) + + + + + Autonumbering Enum ( hindiAlpha1Period ) + + + + + + + + + + Follow Text + + + + + Color Specified + + + + + + + Bullet Size Percentage + + + + + + + + + + + Value + + + + + + + Value + + + + + + + + Bullet Size Follows Text + + + + + Bullet Size Percentage + + + + + Bullet Size Points + + + + + + + + + + Follow text + + + + + Specified + + + + + + + + Bullet Autonumbering Type + + + + + Start Numbering At + + + + + + + Bullet Character + + + + + + + + Blip + + + + + + + + + + No Bullet + + + + + Auto-Numbered Bullet + + + + + Character Bullet + + + + + Picture Bullet + + + + + + + + + + + + Text Point + + + + + + + + + Text Non-Negative Point + + + + + + + + + Text Font Size + + + + + + + + + Panose Type + + + + + + + + Text Typeface + + + + + + + Text Typeface + + + + + Panose Setting + + + + + Similar Font Family + + + + + Similar Character Set + + + + + + Language ID + + + + + + Text Underline Types + + + + + Text Underline Enum ( None ) + + + + + Text Underline Enum ( Words ) + + + + + Text Underline Enum ( Single ) + + + + + Text Underline Enum ( Double ) + + + + + Text Underline Enum ( Heavy ) + + + + + Text Underline Enum ( Dotted ) + + + + + Text Underline Enum ( Heavy Dotted ) + + + + + Text Underline Enum ( Dashed ) + + + + + Text Underline Enum ( Heavy Dashed ) + + + + + Text Underline Enum ( Long Dashed ) + + + + + Text Underline Enum ( Heavy Long Dashed ) + + + + + Text Underline Enum ( Dot Dash ) + + + + + Text Underline Enum ( Heavy Dot Dash ) + + + + + Text Underline Enum ( Dot Dot Dash ) + + + + + Text Underline Enum ( Heavy Dot Dot Dash ) + + + + + Text Underline Enum ( Wavy ) + + + + + Text Underline Enum ( Heavy Wavy ) + + + + + Text Underline Enum ( Double Wavy ) + + + + + + + + + + + + + + Underline Follows Text + + + + + Underline Stroke + + + + + + + + + Underline Fill Properties Follow Text + + + + + Underline Fill + + + + + + + Text Strike Type + + + + + Text Strike Enum ( No Strike ) + + + + + Text Strike Enum ( Single Strike ) + + + + + Text Strike Enum ( Double Strike ) + + + + + + + Text Cap Types + + + + + Text Caps Enum ( None ) + + + + + Text Caps Enum ( Small ) + + + + + Text Caps Enum ( All ) + + + + + + + + + Line + + + + + + + Highlight Color + + + + + + + Latin Font + + + + + East Asian Font + + + + + Complex Script Font + + + + + Symbol Font + + + + + Click Hyperlink + + + + + Mouse-Over Hyperlink + + + + + + + Kumimoji + + + + + Language ID + + + + + Alternative Language + + + + + Font Size + + + + + Bold + + + + + Italics + + + + + Underline + + + + + Strikethrough + + + + + Kerning + + + + + Capitalization + + + + + Spacing + + + + + Normalize Heights + + + + + Baseline + + + + + No Proofing + + + + + Dirty + + + + + Spelling Error + + + + + SmartTag Clean + + + + + SmartTag ID + + + + + Bookmark Link Target + + + + + + + + + + + + Text Spacing Point + + + + + + + + + Text Spacing Percent + + + + + + + + + + Value + + + + + + + Value + + + + + + Text Margin + + + + + + + + + Text Indentation + + + + + + + + + Text Tab Alignment Types + + + + + Text Tab Alignment Enum ( Left) + + + + + Text Tab Alignment Enum ( Center ) + + + + + Text Tab Alignment Enum ( Right ) + + + + + Text Tab Alignment Enum ( Decimal ) + + + + + + + + Tab Position + + + + + Tab Alignment + + + + + + + + Tab Stop + + + + + + + + + Text Run Properties + + + + + + + + + Spacing Percent + + + + + Spacing Points + + + + + + + Text Alignment Types + + + + + Text Alignment Enum ( Left ) + + + + + Text Alignment Enum ( Center ) + + + + + Text Alignment Enum ( Right ) + + + + + Text Alignment Enum ( Justified ) + + + + + Text Alignment Enum ( Justified Low ) + + + + + Text Alignment Enum ( Distributed ) + + + + + Text Alignment Enum ( Thai Distributed ) + + + + + + + Font Alignment Types + + + + + Font Alignment Enum ( Automatic ) + + + + + Font Alignment Enum ( Top ) + + + + + Font Alignment Enum ( Center ) + + + + + Font Alignment Enum ( Baseline ) + + + + + Font Alignment Enum ( Bottom ) + + + + + + + Text Indent Level Type + + + + + + + + + + + Line Spacing + + + + + Space Before + + + + + Space After + + + + + + + + + Tab List + + + + + Default Text Run Properties + + + + + + + Left Margin + + + + + Right Margin + + + + + Level + + + + + Indent + + + + + Alignment + + + + + Default Tab Size + + + + + Right To Left + + + + + East Asian Line Break + + + + + Font Alignment + + + + + Latin Line Break + + + + + Hanging Punctuation + + + + + + + + Text Character Properties + + + + + Text Paragraph Properties + + + + + + + Field ID + + + + + Field Type + + + + + + + + Text Run + + + + + Text Line Break + + + + + Text Field + + + + + + + + + + + + Text Character Properties + + + + + Text String + + + + + + + + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/dml-picture.xsd b/tests/resources/schema/ecma-376/dml-picture.xsd new file mode 100644 index 0000000000..9a8247e768 --- /dev/null +++ b/tests/resources/schema/ecma-376/dml-picture.xsd @@ -0,0 +1,44 @@ + + + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + Non-Visual Picture Properties + + + + + Picture Fill + + + + + Shape Properties + + + + + + + Picture + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/dml-spreadsheetDrawing.xsd b/tests/resources/schema/ecma-376/dml-spreadsheetDrawing.xsd new file mode 100644 index 0000000000..511fc23390 --- /dev/null +++ b/tests/resources/schema/ecma-376/dml-spreadsheetDrawing.xsd @@ -0,0 +1,410 @@ + + + + + + + + + + + Locks With Sheet Flag + + + + + Prints With Sheet Flag + + + + + + + + Non-Visual Drawing Properties + + + + + Connection Non-Visual Shape Properties + + + + + + + + + Non-Visual Properties for a Shape + + + + + Shape Properties + + + + + + Shape Text Body + + + + + + Reference to Custom Function + + + + + Text Link + + + + + Lock Text Flag + + + + + Publish to Server Flag + + + + + + + + Connection Non-Visual Properties + + + + + Non-Visual Connector Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Connection Shape + + + + + Connector Shape Properties + + + + + + + Reference to Custom Function + + + + + Publish to Server Flag + + + + + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + Non-Visual Properties for a Picture + + + + + Picture Fill + + + + + + Shape Style + + + + + + Reference To Custom Function + + + + + Publish to Server Flag + + + + + + + + Connection Non-Visual Properties + + + + + Non-Visual Graphic Frame Drawing Properties + + + + + + + + + Non-Visual Properties for a Graphic Frame + + + + + 2D Transform for Graphic Frames + + + + + + + Reference To Custom Function + + + + + Publish to Server Flag + + + + + + + + Connection Non-Visual Properties + + + + + Non-Visual Group Shape Drawing Properties + + + + + + + + + Non-Visual Properties for a Group Shape + + + + + Group Shape Properties + + + + + + Shape + + + + + Group Shape + + + + + + Connection Shape + + + + + Picture + + + + + + + + + + + Shape + + + + + Group Shape + + + + + Graphic Frame + + + + + Connection Shape + + + + + + + + + Column ID + + + + + + + + Row ID + + + + + + + + + + Column) + + + + + Column Offset + + + + + Row + + + + + Row Offset + + + + + + + Resizing Behaviors + + + + + Move and Resize With Anchor Cells + + + + + Move With Cells but Do Not Resize + + + + + Do Not Move or Resize With Underlying Rows/Columns + + + + + + + + + Starting Anchor Point + + + + + Ending Anchor Point + + + + + + Client Data + + + + + + Positioning and Resizing Behaviors + + + + + + + + + + + + + + + + Position + + + + + Shape Extent + + + + + + + + + + + Two Cell Anchor Shape Size + + + + + One Cell Anchor Shape Size + + + + + Absolute Anchor Shape Size + + + + + + + + + + + + Worksheet Drawing + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/dml-wordprocessingDrawing.xsd b/tests/resources/schema/ecma-376/dml-wordprocessingDrawing.xsd new file mode 100644 index 0000000000..3955cdf0cb --- /dev/null +++ b/tests/resources/schema/ecma-376/dml-wordprocessingDrawing.xsd @@ -0,0 +1,557 @@ + + + + + + + + Additional Extent on Left Edge + + + + + Additional Extent on Top Edge + + + + + Additional Extent on Right Edge + + + + + Additional Extent on Bottom Edge + + + + + + Distance from Text + + + + + + + + Drawing Object Size + + + + + Inline Wrapping Extent + + + + + Drawing Object Non-Visual Properties + + + + + Common DrawingML Non-Visual Properties + + + + + + + Distance From Text on Top Edge + + + + + Distance From Text on Bottom Edge + + + + + Distance From Text on Left Edge + + + + + Distance From Text on Right Edge + + + + + + Text Wrapping Location + + + + + Both Sides + + + + + Left Side Only + + + + + Right Side Only + + + + + Largest Side Only + + + + + + + + + Wrapping Polygon Start + + + + + Wrapping Polygon Line End Position + + + + + + Wrapping Points Modified + + + + + + + + + Object Extents Including Effects + + + + + + Text Wrapping Location + + + + + Distance From Text (Top) + + + + + Distance From Text on Bottom Edge + + + + + Distance From Text on Left Edge + + + + + Distance From Text on Right Edge + + + + + + + + Tight Wrapping Extents Polygon + + + + + + Text Wrapping Location + + + + + Distance From Test on Left Edge + + + + + Distance From Text on Right Edge + + + + + + + + Wrapping Polygon + + + + + + Text Wrapping Location + + + + + Distance From Text on Left Edge + + + + + Distance From Text on Right Edge + + + + + + + + Wrapping Boundaries + + + + + + Distance From Text on Top Edge + + + + + Distance From Text on Bottom Edge + + + + + + + + + No Text Wrapping + + + + + Square Wrapping + + + + + Tight Wrapping + + + + + Through Wrapping + + + + + Top and Bottom Wrapping + + + + + + + + Absolute Position Offset Value + + + + + + Relative Horizontal Alignment Positions + + + + + Left Alignment + + + + + Right Alignment + + + + + Center Alignment + + + + + Inside + + + + + Outside + + + + + + + Horizontal Relative Positioning + + + + + Page Margin + + + + + Page Edge + + + + + Column + + + + + Character + + + + + Left Margin + + + + + Right Margin + + + + + Inside Margin + + + + + Outside Margin + + + + + + + + + + Relative Horizontal Alignment + + + + + Absolute Position Offset + + + + + + + Horizontal Position Relative Base + + + + + + Vertical Alignment Definition + + + + + Top + + + + + Bottom + + + + + Center Alignment + + + + + Inside + + + + + Outside + + + + + + + Vertical Relative Positioning + + + + + Page Margin + + + + + Page Edge + + + + + Paragraph + + + + + Line + + + + + Top Margin + + + + + Bottom Margin + + + + + Inside Margin + + + + + Outside Margin + + + + + + + + + + Relative Vertical Alignment + + + + + + + + Vertical Position Relative Base + + + + + + + + Simple Positioning Coordinates + + + + + Horizontal Positioning + + + + + Vertical Positioning + + + + + Inline Drawing Object Extents + + + + + + + Drawing Object Non-Visual Properties + + + + + + + + Distance From Text on Top Edge + + + + + Distance From Text on Bottom Edge + + + + + Distance From Text on Left Edge + + + + + Distance From Text on Right Edge + + + + + Page Positioning + + + + + Relative Z-Ordering Position + + + + + Display Behind Document Text + + + + + Lock Anchor + + + + + Layout In Table Cell + + + + + Hidden + + + + + Allow Objects to Overlap + + + + + + Inline DrawingML Object + + + + + Anchor for Floating DrawingML Object + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/pml.xsd b/tests/resources/schema/ecma-376/pml.xsd new file mode 100644 index 0000000000..64f4b0aa5a --- /dev/null +++ b/tests/resources/schema/ecma-376/pml.xsd @@ -0,0 +1,4968 @@ + + + + + + + + + + + + + + + + + Transition Slide Direction Type + + + + + Transition Slide Direction Enum ( Left ) + + + + + Transition Slide Direction Enum ( Up ) + + + + + Transition Slide Direction ( Right ) + + + + + Transition Slide Direction Enum ( Down ) + + + + + + + Transition Corner Direction Type + + + + + Transition Corner Direction Enum ( Left-Up ) + + + + + Transition Corner Direction Enum ( Right-Up ) + + + + + Transition Corner Direction Enum ( Left-Down ) + + + + + Transition Corner Direction Enum ( Right-Down ) + + + + + + + Transition In/Out Direction Type + + + + + Transition In/Out Direction Enum ( Out ) + + + + + Transition In/Out Direction Enum ( In ) + + + + + + + + Direction + + + + + + + Direction + + + + + + Transition Eight Direction + + + + + + + Direction + + + + + + + Transition Direction + + + + + + + Direction + + + + + + + Transition Through Black + + + + + + + Orientation + + + + + Direction + + + + + + + Spokes + + + + + + + + Sound + + + + + + Loop Sound + + + + + + + + Start Sound Action + + + + + Stop Sound Action + + + + + + + Transition Speed + + + + + low + + + + + Medium + + + + + Fast + + + + + + + + + + Blinds Slide Transition + + + + + Checker Slide Transition + + + + + Circle Slide Transition + + + + + Dissolve Slide Transition + + + + + Comb Slide Transition + + + + + Cover Slide Transition + + + + + Cut Slide Transition + + + + + Diamond Slide Transition + + + + + Fade Slide Transition + + + + + Newsflash Slide Transition + + + + + Plus Slide Transition + + + + + Pull Slide Transition + + + + + Push Slide Transition + + + + + Random Slide Transition + + + + + Random Bar Slide Transition + + + + + Split Slide Transition + + + + + Strips Slide Transition + + + + + Wedge Slide Transition + + + + + Wheel Slide Transition + + + + + Wipe Slide Transition + + + + + Zoom Slide Transition + + + + + + Sound Action + + + + + + + Transition Speed + + + + + Advance on Click + + + + + Advance after time + + + + + + Indefinite Time Declaration + + + + + Indefinite Type Enum + + + + + + + Time + + + + + + Time Node ID + + + + + + + Time + + + + + + + Value + + + + + + Iterate Type + + + + + Element + + + + + Word + + + + + Letter + + + + + + + + + Time Absolute + + + + + Time Percentage + + + + + + Iterate Type + + + + + Backwards + + + + + + + Shape ID + + + + + + + + Character Range + + + + + Paragraph Text Range + + + + + + + Chart Subelement Type + + + + + Chart Build Element Type Enum ( Grid Legend ) + + + + + Chart Build Element Type Enum ( Series ) + + + + + Chart Build Element Type Enum ( Category ) + + + + + Chart Build Element Type Enum ( Point in Series ) + + + + + Chart Build Element Type Enum ( Point in Cat ) + + + + + + + + Type + + + + + Level + + + + + + + + Background + + + + + Subshape + + + + + OLE Chart Element + + + + + Text Element + + + + + Graphic Element + + + + + + Shape ID + + + + + + + + Slide Target + + + + + Sound Target + + + + + Shape Target + + + + + Ink Target + + + + + + + + Value + + + + + + Trigger RunTime Node + + + + + Trigger RunTime Node ( First ) + + + + + Trigger RunTime Node ( Last ) + + + + + Trigger RunTime Node Enum ( All ) + + + + + + + + Value + + + + + + Trigger Event + + + + + Trigger Event Enum ( On Begin ) + + + + + Trigger Event Enum ( On End ) + + + + + Trigger Event Enum ( Begin ) + + + + + Trigger Event Enum ( End ) + + + + + Trigger Event Enum ( On Click ) + + + + + Trigger Event Enum ( On Double Click ) + + + + + Trigger Event Enum ( On Mouse Over ) + + + + + Trigger Event Enum ( On Mouse Out ) + + + + + Trigger Event Enum ( On Next ) + + + + + Trigger Event Enum ( On Previous ) + + + + + Trigger Event Enum ( On Stop Audio ) + + + + + + + + + Target Element Trigger Choice + + + + + Time Node + + + + + Runtime Node Trigger Choice + + + + + + Trigger Event + + + + + Trigger Delay + + + + + + + + Condition + + + + + + + + + Parallel Time Node + + + + + Sequence Time Node + + + + + Exclusive + + + + + Animate + + + + + Animate Color Behavior + + + + + Animate Effect + + + + + Animate Motion + + + + + Animate Rotation + + + + + Animate Scale + + + + + Command + + + + + Set Time Node Behavior + + + + + Audio + + + + + Video + + + + + + + Time Node Preset Class Type + + + + + Preset Type Enum ( Entrance ) + + + + + Exit + + + + + Preset Type Enum ( Emphasis ) + + + + + Preset Type Enum ( Path ) + + + + + Preset Type Enum ( Verb ) + + + + + Preset Type Enum ( Media Call ) + + + + + + + Time Node Restart Type + + + + + Restart Enum ( Always ) + + + + + Restart Enum ( When Not Active ) + + + + + Restart Enum ( Never ) + + + + + + + Time Node Fill Type + + + + + Remove + + + + + Freeze + + + + + TimeNode Fill Type Enum ( Hold ) + + + + + Transition + + + + + + + Time Node Sync Type + + + + + TimeNode Sync Enum ( Can Slip ) + + + + + TimeNode Sync Enum ( Locked ) + + + + + + + Time Node Master Relation + + + + + TimeNode Master Relation Enum ( Same Click ) + + + + + TimeNode Master Relation Enum ( Last Click ) + + + + + TimeNode Master Relation Enum ( Next Click ) + + + + + + + Time Node Type + + + + + Node Type Enum ( Click Effect ) + + + + + Node Type Enum ( With Effect ) + + + + + Node Type Enum ( After Effect ) + + + + + Node Type Enum ( Main Sequence ) + + + + + Node Type Enum ( Interactive Sequence ) + + + + + Node Type Enum ( Click Paragraph ) + + + + + Node Type Enum ( With Group ) + + + + + Node Type Enum ( After Group ) + + + + + Node Type Enum ( Timing Root ) + + + + + + + + + Start Conditions List + + + + + End Conditions List + + + + + EndSync + + + + + Iterate + + + + + Children Time Node List + + + + + Sub-TimeNodes List + + + + + + ID + + + + + Preset ID + + + + + Preset Types + + + + + Preset SubType + + + + + Duration + + + + + Repeat Count + + + + + Repeat Duration + + + + + Speed + + + + + Acceleration + + + + + Deceleration + + + + + Auto Reverse + + + + + Restart + + + + + Fill + + + + + Synchronization Behavior + + + + + Time Filter + + + + + Event Filter + + + + + Display + + + + + Master Relation + + + + + Build level + + + + + Group ID + + + + + After Effect + + + + + Node Type + + + + + Node Placeholder + + + + + + + + Parallel TimeNode + + + + + + + Next Action Type + + + + + Next Action Type Enum ( None ) + + + + + Next Action Type Enum ( Seek ) + + + + + + + Previous Action Type + + + + + Previous Action Type Enum ( None ) + + + + + Previous Action Type Enum ( Skip Timed ) + + + + + + + + + Common TimeNode Properties + + + + + Previous Conditions List + + + + + Next Conditions List + + + + + + Concurrent + + + + + Previous Action + + + + + Next Action + + + + + + + + Common TimeNode Properties + + + + + + + + + Attribute Name + + + + + + + Behavior Additive Type + + + + + Additive Enum ( Base ) + + + + + Additive Enum ( Sum ) + + + + + Additive Enum ( Replace ) + + + + + Additive Enum ( Multiply ) + + + + + None + + + + + + + Behavior Accumulate Type + + + + + Accumulate Enum ( None ) + + + + + Accumulate Enum ( Always ) + + + + + + + Behavior Transform Type + + + + + Point + + + + + Image + + + + + + + Behavior Override Type + + + + + Override Enum ( Normal ) + + + + + Override Enum ( Child Style ) + + + + + + + + + + Target Element + + + + + Attribute Name List + + + + + + Additive + + + + + Accumulate + + + + + Transform Type + + + + + From + + + + + To + + + + + By + + + + + Runtime Context + + + + + Override + + + + + + + Value + + + + + + + Value + + + + + + + Value + + + + + + + Value + + + + + + + + Boolean Variant + + + + + Integer + + + + + Float Value + + + + + String Value + + + + + Color Value + + + + + + + Animation Time + + + + + + + + Value + + + + + + Time + + + + + Formula + + + + + + + + Time Animate Value + + + + + + + Time List Animate Behavior Calculate Mode + + + + + Calc Mode Enum ( Discrete ) + + + + + Calc Mode Enum ( Linear ) + + + + + Calc Mode Enum ( Formula ) + + + + + + + Time List Animate Behavior Value Types + + + + + Value Type Enum ( String ) + + + + + Value Type Enum ( Number ) + + + + + Value Type Enum ( Color ) + + + + + + + + + + Time Animated Value List + + + + + + By + + + + + From + + + + + To + + + + + Calculation Mode + + + + + Value Type + + + + + + + Red + + + + + Green + + + + + Blue + + + + + + + Hue + + + + + Saturation + + + + + Lightness + + + + + + + + RGB + + + + + HSL + + + + + + + Time List Animate Color Space + + + + + Color Space Enum ( RGB ) + + + + + Color Space Enum ( HSL ) + + + + + + + Time List Animate Color Direction + + + + + Direction Enum ( Clockwise ) + + + + + Counter-Clockwise + + + + + + + + + + By + + + + + From + + + + + To + + + + + + Color Space + + + + + Direction + + + + + + Time List Animate Effect Transition + + + + + Transition Enum ( In ) + + + + + Transition Enum ( Out ) + + + + + Transition Enum ( None ) + + + + + + + + + + Progress + + + + + + Transition + + + + + Filter + + + + + Property List + + + + + + Time List Animate Motion Behavior Origin + + + + + Origin Enum ( Parent ) + + + + + Origin Enum ( Layout ) + + + + + + + Time List Animate Motion Path Edit Mode + + + + + Path Edit Mode Enum ( Relative ) + + + + + Path Edit Mode Enum ( Fixed ) + + + + + + + + X coordinate + + + + + Y coordinate + + + + + + + + + + From + + + + + + Rotation Center + + + + + + Origin + + + + + Path + + + + + Path Edit Mode + + + + + Relative Angle + + + + + Points Types + + + + + + + + + + By + + + + + From + + + + + To + + + + + + + + + By + + + + + + To + + + + + + Zoom Content + + + + + + Command Type + + + + + Command Type Enum ( Event ) + + + + + Command Type Enum ( Call ) + + + + + Command Type Enum ( Verb ) + + + + + + + + + + + Command Type + + + + + Command + + + + + + + + Common Behavior + + + + + To + + + + + + + + + Common Time Node Properties + + + + + + + Volume + + + + + Mute + + + + + Number of Slides + + + + + Show When Stopped + + + + + + + + Common Media Node Properties + + + + + + Is Narration + + + + + + + + Common Media Node Properties + + + + + + Full Screen + + + + + + + Shape ID + + + + + Group ID + + + + + Expand UI + + + + + + + + Time Node List + + + + + + Level + + + + + + + + Template Effects + + + + + + + Paragraph Build Type + + + + + All At Once + + + + + Paragraph + + + + + Custom + + + + + Whole + + + + + + + + + Template effects + + + + + + + Build Types + + + + + Build Level + + + + + Animate Background + + + + + Auto Update Animation Background + + + + + Reverse + + + + + Auto Advance Time + + + + + + Diagram Build Types + + + + + Diagram Build Type Enum ( Whole ) + + + + + Diagram Build Type Enum ( Depth By Node ) + + + + + Diagram Build Type Enum ( Depth By Branch ) + + + + + Diagram Build Type Enum ( Breadth By Node ) + + + + + Diagram Build Type Enum ( Breadth By Level ) + + + + + Diagram Build Type Enum ( Clockwise ) + + + + + Diagram Build Type Enum ( Clockwise-In ) + + + + + Diagram Build Type Enum ( Clockwise-Out ) + + + + + Diagram Build Type Enum ( Counter-Clockwise ) + + + + + Diagram Build Type Enum ( Counter-Clockwise-In ) + + + + + Diagram Build Type Enum ( Counter-Clockwise-Out ) + + + + + Diagram Build Type Enum ( In-By-Ring ) + + + + + Diagram Build Type Enum ( Out-By-Ring ) + + + + + Diagram Build Type Enum ( Up ) + + + + + Diagram Build Type Enum ( Down ) + + + + + Diagram Build Type Enum ( All At Once ) + + + + + Diagram Build Type Enum ( Custom ) + + + + + + + + + Diagram Build Types + + + + + + OLE Chart Build Type + + + + + Chart Build Type Enum ( All At Once ) + + + + + Chart Build Type Enum ( Series ) + + + + + Chart Build Type Enum ( Category ) + + + + + Chart Build Type Enum ( Series Element ) + + + + + Chart Build Type Enum ( Category Element ) + + + + + + + + + Build + + + + + Animate Background + + + + + + + + Build As One + + + + + Build Sub Elements + + + + + + + + + + Build Paragraph + + + + + Build Diagram + + + + + Build OLE Chart + + + + + Build Graphics + + + + + + + + + + Build List + + + + + + + + + + + + Name string + + + + + + Direction + + + + + Horizontal + + + + + Vertical + + + + + + + Index + + + + + + + Start + + + + + End + + + + + + + Relationship ID + + + + + + + + Presentation Slide + + + + + + + + Custom Show Identifier + + + + + + + + All Slides + + + + + Slide Range + + + + + Custom Show + + + + + + + + Relationship ID + + + + + + + Relationship ID + + + + + + + + Customer Data + + + + + Customer Data Tags + + + + + + + + + + + Uniform Resource Identifier + + + + + + + + Extension + + + + + + + + + + + + + + + + Modify + + + + + + + + + + + + + + Comment Author ID + + + + + Comment Author Name + + + + + Comment Author Initials + + + + + Index of Comment Author's last comment + + + + + Comment Author Color Index + + + + + + + + Comment Author + + + + + + + List of Comment Authors + + + + + + + Comment Position + + + + + Comment's Text Content + + + + + + + Comment Author ID + + + + + Comment Date/Time + + + + + Comment Index + + + + + + + + Comment + + + + + + + Comment List + + + + + + + + + + + + OLE Object Shape ID + + + + + OLE Object Name + + + + + Show OLE Object As Icon + + + + + Relationship ID + + + + + Image Width + + + + + Image Height + + + + + + OLE Object to Follow Color Scheme + + + + + None + + + + + Full + + + + + Text and Background + + + + + + + + + + + Color Scheme Properties for OLE Object + + + + + + + + + + Update Linked OLE Objects Automatically + + + + + + + + Embedded OLE Object or Control + + + + + Linked OLE Object or Control + + + + + + + OLE ProgID + + + + + + Global Element for OLE Objects and Controls + + + + + + + + + + + + + Embedded Control + + + + + + + + + + + + + + Slide Identifier + + + + + + + + + + + + + Slide Identifier + + + + + Relationship Identifier + + + + + + + + Slide ID + + + + + + + Slide Master ID + + + + + + + + + + + + Slide Master Identifier + + + + + Relationship Identifier + + + + + + + + Slide Master ID + + + + + + + + + + + Relationship Identifier + + + + + + + + Notes Master ID + + + + + + + + + + + Relationship Identifier + + + + + + + + Handout Master ID + + + + + + + + Relationship Identifier + + + + + + + + Embedded Font Name + + + + + Regular Embedded Font + + + + + Bold Embedded Font + + + + + Italic Embedded Font + + + + + Bold Italic Embedded Font + + + + + + + + + Embedded Font + + + + + + + + Relationship Identifier + + + + + + + + List of Presentation Slides + + + + + + + Custom Show Name + + + + + Custom Show ID + + + + + + + + Custom Show + + + + + + + Photo Album Layout Definition + + + + + Fit Photos to Slide + + + + + 1 Photo per Slide + + + + + 2 Photos per Slide + + + + + 4 Photos per Slide + + + + + 1 Photo per Slide with Titles + + + + + 2 Photos per Slide with Titles + + + + + 4 Photos per Slide with Titles + + + + + + + Photo Album Shape for Photo Mask + + + + + Rectangle Photo Frame + + + + + Rounded Rectangle Photo Frame + + + + + Simple White Photo Frame + + + + + Simple Black Photo Frame + + + + + Compound Black Photo Frame + + + + + Center Shadow Photo Frame + + + + + Soft Edge Photo Frame + + + + + + + + + + + Black and White + + + + + Show/Hide Captions + + + + + Photo Album Layout + + + + + Frame Type + + + + + + Slide Size Coordinate + + + + + + + + + Slide Size Type + + + + + Screen 4x3 + + + + + Letter + + + + + A4 + + + + + 35mm Film + + + + + Overhead + + + + + Banner + + + + + Custom + + + + + Ledger + + + + + A3 + + + + + B4ISO + + + + + B5ISO + + + + + B4JIS + + + + + B5JIS + + + + + Hagaki Card + + + + + Screen 16x9 + + + + + Screen 16x10 + + + + + + + + Extent Length + + + + + Extent Width + + + + + Type of Size + + + + + + + Language + + + + + Invalid Kinsoku Start Characters + + + + + Invalid Kinsoku End Characters + + + + + + Bookmark ID Seed + + + + + + + + + Cryptographic Provider Type + + + + + RSA AES Encryption Scheme + + + + + RSA Full Encryption Scheme + + + + + Invalid Encryption Scheme + + + + + + + Cryptographic Algorithm Classes + + + + + Hash Algorithm Class + + + + + Invalid Algorithm Class + + + + + + + Cryptographic Algorithm Type + + + + + Any Algorithm Type + + + + + Invalid Algorithm Type + + + + + + + + Cryptographic Provider Type + + + + + Cryptographic Algorithm Class + + + + + Cryptographic Algorithm Type + + + + + Cryptographic Hashing Algorithm + + + + + Iterations to Run Hashing Algorithm + + + + + Salt for Password Verifier + + + + + Password Hash + + + + + Cryptographic Provider + + + + + Cryptographic Algorithm Extensibility + + + + + Algorithm Extensibility Source + + + + + Cryptographic Provider Type Extensibility + + + + + Provider Type Extensibility Source + + + + + + + + List of Slide Master IDs + + + + + List of Notes Master IDs + + + + + List of Handout Master IDs + + + + + List of Slide IDs + + + + + Presentation Slide Size + + + + + Notes Slide Size + + + + + Smart Tags + + + + + Embedded Font List + + + + + List of Custom Shows + + + + + Photo Album Information + + + + + List of Customer Data Buckets + + + + + Kinsoku Settings + + + + + Presentation Default Text Style + + + + + Modification Verifier + + + + + Extension List + + + + + + Server Zoom + + + + + First Slide Number + + + + + Show Header and Footer Placeholders on Titles + + + + + Right-To-Left Views + + + + + Remove Personal Information on Save + + + + + Compatibility Mode + + + + + Strict First and Last Characters + + + + + Embed True Type Fonts + + + + + Save Subset Fonts + + + + + Automatically Compress Pictures + + + + + Bookmark ID Seed + + + + + + Presentation + + + + + + + + + + Web browsers supported for HTML output + + + + + Browser v4 + + + + + Browser v3 + + + + + Browser v3v4 + + + + + + + + + + + + Show Speaker Notes + + + + + Browser Support Target + + + + + HTML Output Title + + + + + Publish Path + + + + + + HTML Slide Navigation Control Colors + + + + + Non-specific Colors + + + + + Browser Colors + + + + + Presentation Text Colors + + + + + Presentation Accent Colors + + + + + White Text on Black Colors + + + + + Black Text on White Colors + + + + + + + HTML/Web Screen Size Target + + + + + HTML/Web Size Enumeration 544x376 + + + + + HTML/Web Size Enumeration 640x480 + + + + + HTML/Web Size Enumeration 720x515 + + + + + HTML/Web Size Enumeration 800x600 + + + + + HTML/Web Size Enumeration 1024x768 + + + + + HTML/Web Size Enumeration 1152x882 + + + + + HTML/Web Size Enumeration 1152x900 + + + + + HTML/Web Size Enumeration 1280x1024 + + + + + HTML/Web Size Enumeration 1600x1200 + + + + + HTML/Web Size Enumeration 1800x1400 + + + + + HTML/Web Size Enumeration 1920x1200 + + + + + + + Web Encoding + + + + + + + + + + Show animation in HTML output + + + + + Resize graphics in HTML output + + + + + Allow PNG in HTML output + + + + + Rely on VML for HTML output + + + + + Organize HTML output in folders + + + + + Use long file names in HTML output + + + + + Image size for HTML output + + + + + Encoding for HTML output + + + + + Slide Navigation Colors for HTML output + + + + + + Default print output + + + + + Slides + + + + + 1 Slide / Handout Page + + + + + 2 Slides / Handout Page + + + + + 3 Slides / Handout Page + + + + + 4 Slides / Handout Page + + + + + 6 Slides / Handout Page + + + + + 9 Slides / Handout Page + + + + + Notes + + + + + Outline + + + + + + + Print Color Mode + + + + + Black and White Mode + + + + + Grayscale Mode + + + + + Color Mode + + + + + + + + + + + Print Output + + + + + Print Color Mode + + + + + Print Hidden Slides + + + + + Scale to Fit Paper when printing + + + + + Frame slides when printing + + + + + + + Show Scroll Bar in Window + + + + + + + Restart Show + + + + + + + + Presenter Slide Show Mode + + + + + Browse Slide Show Mode + + + + + Kiosk Slide Show Mode + + + + + + + + + + + Pen Color for Slide Show + + + + + + + Loop Slide Show + + + + + Show Narration in Slide Show + + + + + Show Animation in Slide Show + + + + + Use Timings in Slide Show + + + + + + + + HTML Publishing Properties + + + + + Web Properties + + + + + Printing Properties + + + + + Presentation-wide Show Properties + + + + + Color MRU + + + + + + + + Presentation-wide Properties + + + + + + + + + + + + + + + + + + + Slide Number Placeholder + + + + + Header Placeholder + + + + + Footer Placeholder + + + + + Date/Time Placeholder + + + + + + Placeholder IDs + + + + + Title + + + + + Body + + + + + Centered Title + + + + + Subtitle + + + + + Date and Time + + + + + Slide Number + + + + + Footer + + + + + Header + + + + + Object + + + + + Chart + + + + + Table + + + + + Clip Art + + + + + Diagram + + + + + Media + + + + + Slide Image + + + + + Picture + + + + + + + Placeholder Size + + + + + Full + + + + + Half + + + + + Quarter + + + + + + + + + + + Placeholder Type + + + + + Placeholder Orientation + + + + + Placeholder Size + + + + + Placeholder Index + + + + + Placeholder has custom prompt + + + + + + + + Placeholder Shape + + + + + + Customer Data List + + + + + + + Is a Photo Album + + + + + Is User Drawn + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Drawing Properties for a Shape + + + + + Application Non-Visual Drawing Properties + + + + + + + + + Non-Visual Properties for a Shape + + + + + + Shape Style + + + + + Shape Text Body + + + + + + + Use Background Fill + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Connector Shape Drawing Properties + + + + + Application Non-Visual Drawing Properties + + + + + + + + + Non-Visual Properties for a Connection Shape + + + + + Shape Properties + + + + + Connector Shape Style + + + + + + + + + + + Non-Visual Picture Drawing Properties + + + + + + + + + + Non-Visual Properties for a Picture + + + + + Picture Fill + + + + + + + + + + + + Non-Visual Drawing Properties + + + + + Non-Visual Graphic Frame Drawing Properties + + + + + Application Non-Visual Drawing Properties + + + + + + + + + Non-Visual Properties for a Graphic Frame + + + + + 2D Transform for Graphic Frame + + + + + + Extension List with Modification Flag + + + + + + + + + Non-visual Drawing Properties + + + + + Non-Visual Group Shape Drawing Properties + + + + + Non-Visual Properties + + + + + + + + + Non-Visual Properties for a Group Shape + + + + + Group Shape Properties + + + + + + Shape + + + + + Group Shape + + + + + Graphic Frame + + + + + Connection Shape + + + + + Picture + + + + + + + + + + + Color Scheme Map + + + + + + + + + Color Scheme Map Override + + + + + + + + Show Master Shapes + + + + + Show Master Placeholder Animations + + + + + + + + + + + + Shade to Title + + + + + + + + Background Properties + + + + + Background Style Reference + + + + + + + + + + + Black and White Mode + + + + + + + + Slide Background + + + + + Shape Tree + + + + + Customer Data List + + + + + List of controls + + + + + + + Name + + + + + + + + Common slide data for slides + + + + + + Slide Transition + + + + + Slide Timing Information for a Slide + + + + + + + + Show Slide in Slide Show + + + + + + Presentation Slide + + + + + Slide Layout Type + + + + + Slide Layout Type Enumeration ( Title ) + + + + + Slide Layout Type Enumeration ( Text ) + + + + + Slide Layout Type Enumeration ( Two Column Text ) + + + + + Slide Layout Type Enumeration ( Table ) + + + + + Slide Layout Type Enumeration ( Text and Chart ) + + + + + Slide Layout Type Enumeration ( Chart and Text ) + + + + + Slide Layout Type Enumeration ( Diagram ) + + + + + Chart + + + + + Text and Clip Art + + + + + Clip Art and Text + + + + + Slide Layout Type Enumeration ( Title Only ) + + + + + Slide Layout Type Enumeration ( Blank ) + + + + + Slide Layout Type Enumeration ( Text and Object ) + + + + + Slide Layout Type Enumeration ( Object and Text ) + + + + + Object + + + + + Title and Object + + + + + Slide Layout Type Enumeration ( Text and Media ) + + + + + Slide Layout Type Enumeration ( Media and Text ) + + + + + Slide Layout Type Enumeration ( Object over Text) + + + + + Slide Layout Type Enumeration ( Text over Object) + + + + + Text and Two Objects + + + + + Two Objects and Text + + + + + Two Objects over Text + + + + + Four Objects + + + + + Vertical Text + + + + + Clip Art and Vertical Text + + + + + Vertical Title and Text + + + + + Vertical Title and Text Over Chart + + + + + Two Objects + + + + + Object and Two Object + + + + + Two Objects and Object + + + + + Slide Layout Type Enumeration ( Custom ) + + + + + Section Header + + + + + Two Text and Two Objects + + + + + Title, Object, and Caption + + + + + Picture and Caption + + + + + + + + + Common slide data for slide layouts + + + + + + Slide Transition for a Slide Layout + + + + + Slide Timing Information for a Slide Layout + + + + + Header/Footer information for a slide layout + + + + + + + + Matching Name + + + + + Slide Layout Type + + + + + Preserve Slide Layout + + + + + Is User Drawn + + + + + + Slide Layout + + + + + + + Slide Master Title Text Style + + + + + Slide Master Body Text Style + + + + + Slide Master Other Text Style + + + + + + + + Slide Layout ID + + + + + + + + + + + + ID Tag + + + + + ID Tag + + + + + + + + Slide Layout Id + + + + + + + + + Common slide data for slide masters + + + + + + List of Slide Layouts + + + + + Slide Transition for a Slide Master + + + + + Slide Timing Information for Slide Masters + + + + + Header/Footer information for a slide master + + + + + Slide Master Text Styles + + + + + + + Preserve Slide Master + + + + + + Slide Master + + + + + + + Common slide data for handout master + + + + + + Header/Footer information for a handout master + + + + + + + + Handout Master + + + + + + + Common Slide Data + + + + + + Header/Footer Information for a Notes Master + + + + + Notes Text Style + + + + + + + + Notes Master + + + + + + + Common slide data for notes slides + + + + + + + + + + Notes Slide + + + + + + + + + + + + Server's Slide File ID + + + + + Server's Slide File's modification date/time + + + + + Client Slide Insertion date/time + + + + + + Slide Synchronization Properties + + + + + + + + Name + + + + + Value + + + + + + + + Programmable Extensibility Tag + + + + + + + Programmable Tab List + + + + + + + + + + Splitter Bar State + + + + + Min + + + + + Restored + + + + + Max + + + + + + + List of View Types + + + + + Normal Slide View + + + + + Slide Master View + + + + + Notes View + + + + + Handout View + + + + + Notes Master View + + + + + Outline View + + + + + Slide Sorter View + + + + + Slide Thumbnail View + + + + + + + + Normal View Dimension Size + + + + + Auto Adjust Normal View + + + + + + + + Normal View Restored Left Properties + + + + + Normal View Restored Top Properties + + + + + + + Show Outline Icons in Normal View + + + + + Snap Vertical Splitter + + + + + State of the Vertical Splitter Bar + + + + + State of the Horizontal Splitter Bar + + + + + Prefer Single View + + + + + + + + View Scale + + + + + View Origin + + + + + + Variable Scale + + + + + + + + Base properties for Notes View + + + + + + + + + Relationship Identifier + + + + + Collapsed + + + + + + + + Presentation Slide + + + + + + + + + Common View Properties + + + + + List of Presentation Slides + + + + + + + + + + Base properties for Slide Sorter View + + + + + + + Show Formatting + + + + + + + Guide Orientation + + + + + Guide Position + + + + + + + + A Guide + + + + + + + + + Base properties for Slide View + + + + + List of Guides + + + + + + Snap Objects to Grid + + + + + Snap Objects to Objects + + + + + Show Guides in View + + + + + + + + + + + + + + Common Slide View Properties + + + + + + + + + + Normal View Properties + + + + + Slide View Properties + + + + + Outline View Properties + + + + + Notes Text View Properties + + + + + Slide Sorter View Properties + + + + + Notes View Properties + + + + + Grid Spacing + + + + + + + Last View + + + + + Show Comments + + + + + + Presentation-wide View Properties + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/readme.md b/tests/resources/schema/ecma-376/readme.md new file mode 100644 index 0000000000..dfe9d8e26d --- /dev/null +++ b/tests/resources/schema/ecma-376/readme.md @@ -0,0 +1,16 @@ +# pml.xsd + +## How do I create the file ? +* Go to http://www.ecma-international.org/publications/standards/Ecma-376.htm +* Download the file "ECMA-376 1st edition Part 4" +* Extract the directory Office Open XML 1st edition Part 2 (DOCX).zip\OpenPackagingConventions-XMLSchema.zip +* From this, create files (dml-diagram.xsd, dml-main.xsd, pml.xsd, sml.xsd) + * Incorporate xsd files based on the order of **ECMA-376, Second Edition, Part 4 - Transitional Migration Features.zip\OfficeOpenXML-XMLSchema-Transitional.zip** files + * Try to avoid duplicate imprts + +## How do valid new created xsd ? +* Fetch some files from an PPTX files (theme1.xml, ...) +* Use xmllint : +``` +$ xmllint --noout --schema pml.xsd ../../../../samples/results/theme1.xml +``` \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-additionalCharacteristics.xsd b/tests/resources/schema/ecma-376/shared-additionalCharacteristics.xsd new file mode 100644 index 0000000000..b31d676d8c --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-additionalCharacteristics.xsd @@ -0,0 +1,71 @@ + + + + + + + Single Characteristic + + + + + + + + Name of Characteristic + + + + + Relationship of Value to Name + + + + + Characteristic Value + + + + + Characteristic Grammar + + + + + + Characteristic Relationship Types + + + + + Greater Than or Equal to + + + + + Less Than or Equal To + + + + + Greater Than + + + + + Less Than + + + + + Equal To + + + + + + + Set of Additional Characteristics + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-bibliography.xsd b/tests/resources/schema/ecma-376/shared-bibliography.xsd new file mode 100644 index 0000000000..c3c60fc7d0 --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-bibliography.xsd @@ -0,0 +1,534 @@ + + + + + String Value + + + + + + + + + Bibliographic Data Source Types + + + + + Article in a Periodical + + + + + Book + + + + + Book Section + + + + + Journal Article + + + + + Conference Proceedings + + + + + Reporter + + + + + Sound Recording + + + + + Performance + + + + + Art + + + + + Document from Internet Site + + + + + Internet Site + + + + + Film + + + + + Interview + + + + + Patent + + + + + Electronic Source + + + + + Case + + + + + Miscellaneous + + + + + + + + + Person + + + + + + + + + Person's Last, or Family, Name + + + + + Person's First, or Given, Name + + + + + Person's Middle, or Other, Name + + + + + + + + + Name List + + + + + + + + + + + Corporate Author + + + + + + + + + + + Artist + + + + + Author + + + + + Book Author + + + + + Compiler + + + + + Composer + + + + + Conductor + + + + + Counsel + + + + + Director + + + + + Editor + + + + + Interviewee + + + + + Interviewer + + + + + Inventor + + + + + Performer + + + + + Producer Name + + + + + Translator + + + + + Writer + + + + + + + + + + + Abbreviated Case Number + + + + + Album Title + + + + + Contributors List + + + + + Book Title + + + + + Broadcaster + + + + + Broadcast Title + + + + + Case Number + + + + + Chapter Number + + + + + City + + + + + Comments + + + + + Conference or Proceedings Name + + + + + Country or Region + + + + + Court + + + + + Day + + + + + Day Accessed + + + + + Department + + + + + Distributor + + + + + Editor + + + + + GUID + + + + + Institution + + + + + Internet Site Title + + + + + Issue + + + + + Journal Name + + + + + Locale ID + + + + + Medium + + + + + Month + + + + + Month Accessed + + + + + Number of Volumes + + + + + Pages + + + + + Patent Number + + + + + Periodical Title + + + + + Production Company + + + + + Publication Title + + + + + Publisher + + + + + Recording Number + + + + + Reference Order + + + + + Reporter + + + + + Source Type + + + + + Short Title + + + + + Standard Number + + + + + State or Province + + + + + Station + + + + + Tag + + + + + Theater + + + + + Thesis Type + + + + + Title + + + + + Type + + + + + URL + + + + + Version + + + + + Volume + + + + + Year + + + + + Year Accessed + + + + + + + + Sources + + + + + + + Source + + + + + + Selected Style + + + + + Documentation Style Name + + + + + Uniform Resource Identifier + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-commonSimpleTypes.xsd b/tests/resources/schema/ecma-376/shared-commonSimpleTypes.xsd new file mode 100644 index 0000000000..801fadf8e3 --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-commonSimpleTypes.xsd @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-customXmlDataProperties.xsd b/tests/resources/schema/ecma-376/shared-customXmlDataProperties.xsd new file mode 100644 index 0000000000..d2e7ce9362 --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-customXmlDataProperties.xsd @@ -0,0 +1,46 @@ + + + + + 128-Bit GUID Value + + + + + + + + + Target Namespace of Associated XML Schema + + + + + + + + Associated XML Schema + + + + + + + + + Set of Associated XML Schemas + + + + + + Custom XML Data ID + + + + + + Custom XML Data Properties + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-customXmlSchemaProperties.xsd b/tests/resources/schema/ecma-376/shared-customXmlSchemaProperties.xsd new file mode 100644 index 0000000000..19de7d36fd --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-customXmlSchemaProperties.xsd @@ -0,0 +1,34 @@ + + + + + + Custom XML Schema Namespace + + + + + Resource File Location + + + + + Custom XML Schema Location + + + + + + + + Custom XML Schema Reference + + + + + + + Embedded Custom XML Schema Supplementary Data + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-documentPropertiesCustom.xsd b/tests/resources/schema/ecma-376/shared-documentPropertiesCustom.xsd new file mode 100644 index 0000000000..a28208bf86 --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-documentPropertiesCustom.xsd @@ -0,0 +1,212 @@ + + + + + + Custom File Properties + + + + + + + Custom File Property + + + + + + + + + Vector + + + + + Array + + + + + Binary Blob + + + + + Binary Blob Object + + + + + Empty + + + + + Null + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + 8-Byte Signed Integer + + + + + Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + 8-Byte Unsigned Integer + + + + + Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + Decimal + + + + + LPSTR + + + + + LPWSTR + + + + + Basic String + + + + + Date and Time + + + + + File Time + + + + + Boolean + + + + + Currency + + + + + Error Status Code + + + + + Binary Stream + + + + + Binary Stream Object + + + + + Binary Storage + + + + + Binary Storage Object + + + + + Binary Versioned Stream + + + + + Class ID + + + + + Clipboard Data + + + + + + Format ID + + + + + Property ID + + + + + Custom File Property Name + + + + + Bookmark Link Target + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-documentPropertiesExtended.xsd b/tests/resources/schema/ecma-376/shared-documentPropertiesExtended.xsd new file mode 100644 index 0000000000..eb094ef32e --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-documentPropertiesExtended.xsd @@ -0,0 +1,175 @@ + + + + + + Application Specific File Properties + + + + + + + Name of Document Template + + + + + Name of Manager + + + + + Name of Company + + + + + Total Number of Pages + + + + + Word Count + + + + + Total Number of Characters + + + + + Intended Format of Presentation + + + + + Number of Lines + + + + + Total Number of Paragraphs + + + + + Slides Metadata Element + + + + + Number of Slides Containing Notes + + + + + Total Edit Time Metadata Element + + + + + Number of Hidden Slides + + + + + Total Number of Multimedia Clips + + + + + Thumbnail Display Mode + + + + + Heading Pairs + + + + + Part Titles + + + + + Links Up-to-Date + + + + + Number of Characters (With Spaces) + + + + + Shared Document + + + + + Relative Hyperlink Base + + + + + Hyperlink List + + + + + Hyperlinks Changed + + + + + Digital Signature + + + + + Application Name + + + + + Application Version + + + + + Document Security + + + + + + + + + Vector + + + + + + + + + Vector + + + + + + + + + Binary Blob + + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-documentPropertiesVariantTypes.xsd b/tests/resources/schema/ecma-376/shared-documentPropertiesVariantTypes.xsd new file mode 100644 index 0000000000..ad5914995b --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-documentPropertiesVariantTypes.xsd @@ -0,0 +1,844 @@ + + + + + Vector Base Type Simple Type + + + + + Variant Base Type + + + + + Vector Base Type Enumeration Value + + + + + 2-Byte Signed Integer Base Type + + + + + 4-Byte Signed Integer Base Type + + + + + 8-Byte Signed Integer Base Type + + + + + 1-Byte Unsigned Integer Base Type + + + + + 2-Byte Unisigned Integer Base Type + + + + + 4-Byte Unsigned Integer Base Type + + + + + 8-Byte Unsigned Integer Base Type + + + + + 4-Byte Real Number Base Type + + + + + 8-Byte Real Number Base Type + + + + + LPSTR Base Type + + + + + LPWSTR Base Type + + + + + Basic String Base Type + + + + + Date and Time Base Type + + + + + File Time Base Type + + + + + Boolean Base Type + + + + + Currency Base Type + + + + + Error Status Code Base Type + + + + + Class ID Base Type + + + + + Clipboard Data Base Type + + + + + + + Array Base Type Simple Type + + + + + Variant Base Type + + + + + 1-Byte Signed Integer Base Type + + + + + 2-Byte Signed Integer Base Type + + + + + 4-Byte Signed Integer Base Type + + + + + Integer Base Type + + + + + 1-Byte Unsigned Integer Base Type + + + + + 2-Byte Unsigned Integer Base Type + + + + + 4-Byte Unsigned Integer Base Type + + + + + Unsigned Integer Base Type + + + + + 4-Byte Real Number Base Type + + + + + 8-Byte Real Number Base Type + + + + + Decimal Base Type + + + + + Basic String Base Type + + + + + Date and Time Base Type + + + + + Boolean Base Type + + + + + Curency Base Type + + + + + Error Status Code Base Type + + + + + + + Currency Simple Type + + + + + + + + Error Status Code Simple Type + + + + + + + + Class ID Simple Type + + + + + + + + Format Simple Type + + + + + + + + + + + + + + + + Variant + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + 8-Byte Signed Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + 8-Byte Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + LPSTR + + + + + LPWSTR + + + + + Basic String + + + + + Date and Time + + + + + File Time + + + + + Boolean + + + + + Currency + + + + + Error Status Code + + + + + Class ID + + + + + Clipboard Data + + + + + + Vector Base Type + + + + + Vector Size + + + + + + + + Variant + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + Decimal + + + + + Basic String + + + + + Date and Time + + + + + Boolean + + + + + Error Status Code + + + + + Currency + + + + + + Array Lower Bounds Attribute + + + + + Array Upper Bounds Attribute + + + + + Array Base Type + + + + + + + + Variant + + + + + Vector + + + + + Array + + + + + Binary Blob + + + + + Binary Blob Object + + + + + Empty + + + + + Null + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + 8-Byte Signed Integer + + + + + Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + 8-Byte Unsigned Integer + + + + + Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + Decimal + + + + + LPSTR + + + + + LPWSTR + + + + + Basic String + + + + + Date and Time + + + + + File Time + + + + + Boolean + + + + + Currency + + + + + Error Status Code + + + + + Binary Stream + + + + + Binary Stream Object + + + + + Binary Storage + + + + + Binary Storage Object + + + + + Binary Versioned Stream + + + + + Class ID + + + + + Clipboard Data + + + + + + + + + + VSTREAM Version Attribute + + + + + + + + + + + Format Attribute + + + + + + + + Variant + + + + + Vector + + + + + Array + + + + + Binary Blob + + + + + Binary Blob Object + + + + + Empty + + + + + Null + + + + + 1-Byte Signed Integer + + + + + 2-Byte Signed Integer + + + + + 4-Byte Signed Integer + + + + + 8-Byte Signed Integer + + + + + Integer + + + + + 1-Byte Unsigned Integer + + + + + 2-Byte Unsigned Integer + + + + + 4-Byte Unsigned Integer + + + + + 8-Byte Unsigned Integer + + + + + Unsigned Integer + + + + + 4-Byte Real Number + + + + + 8-Byte Real Number + + + + + Decimal + + + + + LPSTR + + + + + LPWSTR + + + + + Basic String + + + + + Date and Time + + + + + File Time + + + + + Boolean + + + + + Currency + + + + + Error Status Code + + + + + Binary Stream + + + + + Binary Stream Object + + + + + Binary Storage + + + + + Binary Storage Object + + + + + Binary Versioned Stream + + + + + Class ID + + + + + Clipboard Data + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-math.xsd b/tests/resources/schema/ecma-376/shared-math.xsd new file mode 100644 index 0000000000..1740e6fc56 --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-math.xsd @@ -0,0 +1,1528 @@ + + + + + + + Integer value (1 to 255) + + + + + + + + + + Value + + + + + + Integer value (-2 to 2) + + + + + + + + + + Value + + + + + + Spacing Rule + + + + + + + + + + Value + + + + + + Unsigned integer. + + + + + + + Value + + + + + + Character + + + + + + + + + value + + + + + + On Off + + + + + On + + + + + Off + + + + + + + + value + + + + + + String + + + + + + + value + + + + + + Horizontal Alignment + + + + + Left Justification + + + + + Center + + + + + Right + + + + + + + + Value + + + + + + Vertical Alignment + + + + + Top + + + + + Center (Function) + + + + + Bottom Alignment + + + + + + + + Value + + + + + + Shape (Delimiters) + + + + + Centered (Delimiters) + + + + + Match + + + + + + + + Value + + + + + + Fraction Type + + + + + Bar Fraction + + + + + Skewed + + + + + Linear Fraction + + + + + No-Bar Fraction (Stack) + + + + + + + + Value + + + + + + Limit Location + + + + + Under-Over location + + + + + Subscript-Superscript location + + + + + + + + Value + + + + + + Top-Bottom + + + + + Top + + + + + Bottom Alignment + + + + + + + + Value + + + + + + Script + + + + + Roman + + + + + Script + + + + + Fraktur + + + + + double-struck + + + + + Sans-Serif + + + + + Monospace + + + + + + + + Value + + + + + + Style + + + + + Plain + + + + + Bold + + + + + Italic + + + + + Bold-Italic + + + + + + + + Value + + + + + + + Index of Operator to Align To + + + + + + + + Script + + + + + style + + + + + + + + + Literal + + + + + + Normal Text + + + + + + + + + Break + + + + + Align + + + + + + + + + + Content Contains Significant Whitespace + + + + + + + + + + Run Properties + + + + + + + + Text + + + + + + + + + + + + + + + Accent Character + + + + + Control Properties + + + + + + + + + Accent Properties + + + + + Base + + + + + + + + + Position (Bar) + + + + + + + + + + Bar Properties + + + + + Base + + + + + + + + + Operator Emulator + + + + + No Break + + + + + Differential + + + + + Break + + + + + Alignment + + + + + + + + + + Box Properties + + + + + Base + + + + + + + + + Hide Top Edge + + + + + Hide Bottom Edge + + + + + Hide Left Edge + + + + + Hide Right Edge + + + + + Border Box Strikethrough Horizontal + + + + + Border Box Strikethrough Vertical + + + + + Border Box Strikethrough Bottom-Left to Top-Right + + + + + Border Box Strikethrough Top-Left to Bottom-Right + + + + + + + + + + Border Box Properties + + + + + Base + + + + + + + + + Delimiter Beginning Character + + + + + Delimiter Separator Character + + + + + Delimiter Ending Character + + + + + Delimiter Grow + + + + + Shape (Delimiters) + + + + + + + + + + Delimiter Properties + + + + + Base + + + + + + + + + Equation Array Base Justification + + + + + Maximum Distribution + + + + + Object Distribution + + + + + Row Spacing Rule + + + + + Row Spacing (Equation Array) + + + + + + + + + + Equation Array Properties + + + + + Element + + + + + + + + + Fraction type + + + + + + + + + + Fraction Properties + + + + + Numerator + + + + + Denominator + + + + + + + + + + + + + + Function Properties + + + + + Function Name + + + + + Base (Argument) + + + + + + + + + Group Character (Grouping Character) + + + + + Position (Group Character) + + + + + Vertical Justification + + + + + + + + + + Group-Character Properties + + + + + Base + + + + + + + + + + + + + + Lower Limit Properties + + + + + Base + + + + + Limit (Lower) + + + + + + + + + + + + + + Upper Limit Properties + + + + + Base + + + + + Limit (Upper) + + + + + + + + + Matrix Column Count + + + + + Matrix Column Justification + + + + + + + + + Matrix Column Properties + + + + + + + + + Matrix Column + + + + + + + + + Matrix Base Justification + + + + + Hide Placeholders (Matrix) + + + + + Row Spacing Rule + + + + + Matrix Column Gap Rule + + + + + Row Spacing (Matrix) + + + + + Matrix Column Spacing + + + + + Matrix Column Gap + + + + + Matrix Columns + + + + + + + + + + Element + + + + + + + + + Matrix Properties + + + + + Matrix Row + + + + + + + + + n-ary Operator Character + + + + + n-ary Limit Location + + + + + n-ary Grow + + + + + Hide Subscript (n-ary) + + + + + Hide Superscript (n-ary) + + + + + + + + + + n-ary Properties + + + + + Lower limit (n-ary) + + + + + Upper limit (n-ary) + + + + + Base (Argument) + + + + + + + + + Phantom Show + + + + + Phantom Zero Width + + + + + Phantom Zero Ascent + + + + + Phantom Zero Descent + + + + + Transparent (Phantom) + + + + + + + + + + Phantom Properties + + + + + Base + + + + + + + + + Hide Degree + + + + + + + + + + Radical Properties + + + + + Degree + + + + + Base + + + + + + + + + + + + + + Pre-Sub-Superscript Properties + + + + + Subscript (Pre-Sub-Superscript) + + + + + Superscript(Pre-Sub-Superscript function) + + + + + Base + + + + + + + + + + + + + + Subscript Properties + + + + + Base + + + + + Subscript (Subscript function) + + + + + + + + + Align Scripts + + + + + + + + + + Sub-Superscript Properties + + + + + Base + + + + + Subscript (Sub-Superscript) + + + + + Superscript (Sub-Superscript function) + + + + + + + + + + + + + + Superscript Properties + + + + + Base + + + + + Superscript (Superscript function) + + + + + + + + + Accent + + + + + Bar + + + + + Box Function + + + + + Border-Box Function + + + + + Delimiter Function + + + + + Equation-Array Function + + + + + Fraction Function + + + + + Function Apply Function + + + + + Group-Character Function + + + + + Lower-Limit Function + + + + + Upper-Limit Function + + + + + Matrix Function + + + + + n-ary Operator Function + + + + + Phantom Function + + + + + Radical Function + + + + + Pre-Sub-Superscript Function + + + + + Subscript Function + + + + + Sub-Superscript Function + + + + + Superscript Function + + + + + Run + + + + + + + + + + + + + + + Argument Size + + + + + + + + + Argument Properties + + + + + + + + + Justification + + + + + Left Justification + + + + + Right + + + + + Center (Equation) + + + + + Centered as Group (Equations) + + + + + + + + Value + + + + + + + + Justification + + + + + + + Twips measurement + + + + + + + Value + + + + + + Break Binary Operators + + + + + Before + + + + + After + + + + + Repeat + + + + + + + + Value + + + + + + Break on Binary Subtraction + + + + + Minus Minus + + + + + Minus Plus + + + + + Plus Minus + + + + + + + + Value + + + + + + + + Math Font + + + + + Break on Binary Operators + + + + + Break on Binary Subtraction + + + + + Small Fraction + + + + + Use Display Math Defaults + + + + + Left Margin + + + + + Right Margin + + + + + Default Justification + + + + + Pre-Equation Spacing + + + + + Post-Equation Spacing + + + + + Inter-Equation Spacing + + + + + Intra-Equation Spacing + + + + + + Wrap Indent + + + + + Wrap Right + + + + + + Integral Limit Locations + + + + + n-ary Limit Location + + + + + + + Math Properties + + + + + + + Office Math Paragraph Properties + + + + + Office Math + + + + + + + + + + + + + + + + + + + + Math Paragraph + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/shared-relationshipReference.xsd b/tests/resources/schema/ecma-376/shared-relationshipReference.xsd new file mode 100644 index 0000000000..938c422105 --- /dev/null +++ b/tests/resources/schema/ecma-376/shared-relationshipReference.xsd @@ -0,0 +1,31 @@ + + + + + Explicit Relationship ID + + + + + + Relationship ID + + + + + Embedded Image Relationship Target + + + + + + + + + + + + Hyperlink Target Relationship ID + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/sml.xsd b/tests/resources/schema/ecma-376/sml.xsd new file mode 100644 index 0000000000..6c0bcb301f --- /dev/null +++ b/tests/resources/schema/ecma-376/sml.xsd @@ -0,0 +1,15170 @@ + + + + + + + + + + + + + + + AutoFilter Column + + + + + Sort State for Auto Filter + + + + + + + Cell or Range Reference + + + + + + + + Filter Criteria + + + + + Top 10 + + + + + Custom Filters + + + + + Dynamic Filter + + + + + Color Filter Criteria + + + + + Icon Filter + + + + + + + Filter Column Data + + + + + Hidden AutoFilter Button + + + + + Show Filter Button + + + + + + + + Filter + + + + + Date Grouping + + + + + + Filter by Blank + + + + + Calendar Type + + + + + + + Filter Value + + + + + + + + Custom Filter Criteria + + + + + + And + + + + + + + Filter Comparison Operator + + + + + Top or Bottom Value + + + + + + + Top + + + + + Filter by Percent + + + + + Top or Bottom Value + + + + + Filter Value + + + + + + + Differential Format Record Id + + + + + Filter By Cell Color + + + + + + + Icon Set + + + + + Icon Id + + + + + + Filter Operator + + + + + Equal + + + + + Less Than + + + + + Less Than Or Equal + + + + + Not Equal + + + + + Greater Than Or Equal + + + + + Greater Than + + + + + + + + Dynamic filter type + + + + + Value + + + + + Max Value + + + + + + Dynamic Filter + + + + + Null + + + + + Above Average + + + + + Below Average + + + + + Tomorrow + + + + + Today + + + + + Yesterday + + + + + Next Week + + + + + This Week + + + + + Last Week + + + + + Next Month + + + + + This Month + + + + + Last Month + + + + + Next Quarter + + + + + This Quarter + + + + + Last Quarter + + + + + Next Year + + + + + This Year + + + + + Last Year + + + + + Year To Date + + + + + 1st Quarter + + + + + 2nd Quarter + + + + + 3rd Quarter + + + + + 4th Quarter + + + + + 1st Month + + + + + 2nd Month + + + + + 3rd Month + + + + + 4th Month + + + + + 5th Month + + + + + 6th Month + + + + + 7th Month + + + + + 8th Month + + + + + 9th Month + + + + + 10th Month + + + + + 11th Month + + + + + 12th Month + + + + + + + Icon Set Type + + + + + 3 Arrows + + + + + 3 Arrows (Gray) + + + + + 3 Flags + + + + + 3 Traffic Lights + + + + + 3 Traffic Lights Black + + + + + 3 Signs + + + + + 3 Symbols Circled + + + + + 3 Symbols + + + + + 4 Arrows + + + + + 4 Arrows (Gray) + + + + + 4 Red To Black + + + + + 4 Ratings + + + + + 4 Traffic Lights + + + + + 5 Arrows + + + + + 5 Arrows (Gray) + + + + + 5 Ratings Icon Set + + + + + 5 Quarters + + + + + + + + + Sort Condition + + + + + + + Sort by Columns + + + + + Case Sensitive + + + + + Sort Method + + + + + Sort Range + + + + + + + Descending + + + + + Sort By + + + + + Reference + + + + + Custom List + + + + + Format Id + + + + + Icon Set + + + + + Icon Id + + + + + + Sort By + + + + + Value + + + + + Sort by Cell Color + + + + + Sort by Font Color + + + + + Sort by Icon + + + + + + + Sort Method + + + + + Sort by Stroke + + + + + PinYin Sort + + + + + None + + + + + + + Calendar Type + + + + + No Calendar Type + + + + + Gregorian + + + + + Gregorian (U.S.) Calendar + + + + + Japanese Emperor Era Calendar + + + + + Taiwan Era Calendar + + + + + Korean Tangun Era Calendar + + + + + Hijri (Arabic Lunar) Calendar + + + + + Thai Calendar + + + + + Hebrew (Lunar) Calendar + + + + + Gregorian Middle East French Calendar + + + + + Gregorian Arabic Calendar + + + + + Gregorian Transliterated English Calendar + + + + + Gregorian Transliterated French Calendar + + + + + + + + Year + + + + + Month + + + + + Day + + + + + Hour + + + + + Minute + + + + + Second + + + + + Date Time Grouping + + + + + + Date Time Grouping + + + + + Group by Year + + + + + Month + + + + + Day + + + + + Group by Hour + + + + + Group by Minute + + + + + Second + + + + + + + + + Escaped String + + + + + + Cell Reference + + + + + + Cell References + + + + + + Single Cell Reference + + + + + + Reference Sequence + + + + + + Formula + + + + + + Hex Unsigned Integer + + + + + + + + Unsigned Short Hex + + + + + + + + Globally Unique Identifier + + + + + + + + + Value + + + + + + + + + + URI + + + + + + + + Extension + + + + + + + + + + + + + + + Calculation Chain Info + + + + + + + Cell + + + + + + + + + Cell Reference + + + + + Sheet Id + + + + + Child Chain + + + + + New Dependency Level + + + + + New Thread + + + + + Array + + + + + + + + + + Comments + + + + + + + Authors + + + + + List of Comments + + + + + + + + + + Author + + + + + + + + + Comment + + + + + + + + + Comment Text + + + + + + Cell Reference + + + + + Author Id + + + + + Unique Identifier for Comment + + + + + + + + XML Mapping + + + + + + + XML Schema + + + + + XML Mapping Properties + + + + + + Prefix Mappings for XPath Expressions + + + + + + + + + + Schema ID + + + + + Schema Reference + + + + + Schema Root Namespace + + + + + + + + XML Mapping + + + + + + XML Mapping ID + + + + + XML Mapping Name + + + + + Root Element Name + + + + + Schema Name + + + + + Show Validation Errors + + + + + AutoFit Table on Refresh + + + + + Append Data to Table + + + + + Preserve AutoFilter State + + + + + Preserve Cell Formatting + + + + + + + + + + Unique Identifer + + + + + Binding to External File + + + + + Reference to Connection ID + + + + + File Binding Name + + + + + XML Data Loading Behavior + + + + + + + + + + Connections + + + + + + + Connection + + + + + + + + + ODBC & OLE DB Properties + + + + + OLAP Properties + + + + + Web Query Properties + + + + + Text Import Settings + + + + + Query Parameters + + + + + Future Feature Data Storage + + + + + + Connection Id + + + + + Source Database File + + + + + Connection File + + + + + Keep Connection Open + + + + + Automatic Refresh Interval + + + + + Connection Name + + + + + Connection Description + + + + + Database Source Type + + + + + Reconnection Method + + + + + Last Refresh Version + + + + + Minimum Version Required for Refresh + + + + + Save Password + + + + + New Connection + + + + + Deleted Connection + + + + + Only Use Connection File + + + + + Background Refresh + + + + + Refresh on Open + + + + + Save Data + + + + + Reconnection Method + + + + + SSO Id + + + + + + Credentials Method + + + + + Integrated Authentication + + + + + No Credentials + + + + + Stored Credentials + + + + + Prompt Credentials + + + + + + + + Connection String + + + + + Command Text + + + + + Command Text + + + + + OLE DB Command Type + + + + + + + Local Cube + + + + + Local Cube Connection + + + + + Local Refresh + + + + + Send Locale to OLAP + + + + + Drill Through Count + + + + + OLAP Fill Formatting + + + + + OLAP Number Format + + + + + OLAP Server Font + + + + + OLAP Font Formatting + + + + + + + + Tables + + + + + + XML Source + + + + + Import XML Source Data + + + + + Parse PRE + + + + + Consecutive Delimiters + + + + + Use First Row + + + + + Created in Excel 97 + + + + + Dates as Text + + + + + Refreshed in Excel 2000 + + + + + URL + + + + + Web Post + + + + + HTML Tables Only + + + + + HTML Formatting Handling + + + + + Edit Query URL + + + + + + HTML Formatting Handling + + + + + No Formatting + + + + + Honor Rich Text + + + + + All + + + + + + + + + Parameter Properties + + + + + + Parameter Count + + + + + + + Parameter Name + + + + + SQL Data Type + + + + + Parameter Type + + + + + Refresh on Change + + + + + Parameter Prompt String + + + + + Boolean + + + + + Double + + + + + Integer + + + + + String + + + + + Cell Reference + + + + + + Parameter Type + + + + + Prompt on Refresh + + + + + Value + + + + + Parameter From Cell + + + + + + + + + No Value + + + + + Character Value + + + + + Index + + + + + + Count of Tables + + + + + + + + + Fields + + + + + + Prompt for File Name + + + + + File Type + + + + + Code Page + + + + + First Row + + + + + Source File Name + + + + + Delimited File + + + + + Decimal Separator + + + + + Thousands Separator + + + + + Tab as Delimiter + + + + + Space is Delimiter + + + + + Comma is Delimiter + + + + + Semicolon is Delimiter + + + + + Consecutive Delimiters + + + + + Qualifier + + + + + Custom Delimiter + + + + + + File Type + + + + + Macintosh + + + + + Windows (ANSI) + + + + + DOS + + + + + + + Qualifier + + + + + Double Quote + + + + + Single Quote + + + + + No Text Qualifier + + + + + + + + + Text Import Field Settings + + + + + + Count of Fields + + + + + + + Field Type + + + + + Position + + + + + + Text Field Datatype + + + + + General + + + + + Text + + + + + Month Day Year + + + + + Day Month Year + + + + + Year Month Day + + + + + Month Day Year + + + + + Day Year Month + + + + + Year Day Month + + + + + Skip Field + + + + + East Asian Year Month Day + + + + + + + + + + + + + + + PivotCache Definition + + + + + PivotCache Records + + + + + PivotTable Definition + + + + + + + PivotCache Source Description + + + + + PivotCache Fields + + + + + PivotCache Hierarchies + + + + + OLAP KPIs + + + + + Tuple Cache + + + + + Calculated Items + + + + + Calculated Members + + + + + OLAP Dimensions + + + + + OLAP Measure Groups + + + + + OLAP Measure Group + + + + + Future Feature Data Storage Area + + + + + + Relationship Identifier + + + + + Invalid Cache + + + + + Save Pivot Records + + + + + Refresh On Load + + + + + Optimize Cache for Memory + + + + + Enable PivotCache Refresh + + + + + Last Refreshed By + + + + + PivotCache Last Refreshed Date + + + + + Background Query + + + + + Missing Items Limit + + + + + PivotCache Created Version + + + + + PivotCache Last Refreshed Version + + + + + Minimum Version Required for Refresh + + + + + PivotCache Record Count + + + + + Upgrade PivotCache on Refresh + + + + + Stores Cache for OLAP Functions + + + + + Supports Subqueries + + + + + Supports Attribute Drilldown + + + + + + + + PivotCache Field + + + + + + Field Count + + + + + + + + Shared Items + + + + + Field Group Properties + + + + + Member Properties Map + + + + + Future Feature Data Storage Area + + + + + + PivotCache Field Name + + + + + PivotCache Field Caption + + + + + Property Name + + + + + Server-based Field + + + + + Unique List Retrieved + + + + + Number Format Id + + + + + Calculated Field Formula + + + + + SQL Data Type + + + + + Hierarchy + + + + + Hierarchy Level + + + + + Database Field + + + + + Member Property Count + + + + + Member Property Field + + + + + + + + Worksheet PivotCache Source + + + + + Consolidation Source + + + + + Future Feature Data Storage Area + + + + + + Cache Type + + + + + Connection Index + + + + + + PivotCache Type + + + + + Worksheet + + + + + External + + + + + Consolidation Ranges + + + + + Scenario Summary Report + + + + + + + + Reference + + + + + Named Range + + + + + Sheet Name + + + + + Relationship Id + + + + + + + + Page Item Values + + + + + Range Sets + + + + + + Auto Page + + + + + + + + Page Items + + + + + + Page Item String Count + + + + + + + + Page Item + + + + + + Page Item String Count + + + + + + + Page Item Name + + + + + + + + Range Set + + + + + + Reference and Page Item Count + + + + + + + Field Item Index Page 1 + + + + + Field Item Index Page 2 + + + + + Field Item index Page 3 + + + + + Field Item Index Page 4 + + + + + Reference + + + + + Named Range + + + + + Sheet Name + + + + + Relationship Id + + + + + + + + No Value + + + + + Numeric + + + + + Boolean + + + + + Error Value + + + + + Character Value + + + + + Date Time + + + + + + Contains Semi Mixed Data Types + + + + + Contains Non Date + + + + + Contains Date + + + + + Contains String + + + + + Contains Blank + + + + + Contains Mixed Data Types + + + + + Contains Numbers + + + + + Contains Integer + + + + + Minimum Numeric Value + + + + + Maximum Numeric Value + + + + + Minimum Date Time + + + + + Maximum Date Time Value + + + + + Shared Items Count + + + + + Long Text + + + + + + + + Tuples + + + + + Member Property Indexes + + + + + + Unused Item + + + + + Calculated Item + + + + + Caption + + + + + Member Property Count + + + + + Format Index + + + + + background Color + + + + + Foreground Color + + + + + Italic + + + + + Underline + + + + + Strikethrough + + + + + Bold + + + + + + + + OLAP Members + + + + + Member Property Index + + + + + + Value + + + + + Unused Item + + + + + Calculated Item + + + + + Caption + + + + + Member Property Count + + + + + Format Index + + + + + Background Color + + + + + Foreground Color + + + + + Italic + + + + + Underline + + + + + Strikethrough + + + + + Bold + + + + + + + + Member Property Indexes + + + + + + Value + + + + + Unused Item + + + + + Calculated Item + + + + + Caption + + + + + Member Property Count + + + + + + + + Tuples + + + + + Member Property Indexes + + + + + + Value + + + + + Unused Item + + + + + Calculated Item + + + + + Item Caption + + + + + Member Property Count + + + + + Format Index + + + + + background Color + + + + + Foreground Color + + + + + Italic + + + + + Underline + + + + + Strikethrough + + + + + Bold + + + + + + + + Tuples + + + + + Member Property Index + + + + + + Value + + + + + Unused Item + + + + + Calculated Item + + + + + Item Caption + + + + + Member Property Count + + + + + Format Index + + + + + Background Color + + + + + Foreground Color + + + + + Italic + + + + + Underline + + + + + Strikethrough + + + + + Bold + + + + + + + + Member Property Index + + + + + + Value + + + + + Unused Item + + + + + Calculated Item Value + + + + + Caption + + + + + Member Property Count + + + + + + + + Range Grouping Properties + + + + + Discrete Grouping Properties + + + + + OLAP Group Items + + + + + + Parent + + + + + Field Base + + + + + + + Source Data Set Beginning Range + + + + + Source Data Ending Range + + + + + Group By + + + + + Numeric Grouping Start Value + + + + + Numeric Grouping End Value + + + + + Date Grouping Start Value + + + + + Date Grouping End Value + + + + + Grouping Interval + + + + + + Values Group By + + + + + Group By Numeric Ranges + + + + + Seconds + + + + + Minutes + + + + + Hours + + + + + Days + + + + + Months + + + + + Quarters + + + + + Years + + + + + + + + + Element Group + + + + + + Mapping Index Count + + + + + + + + No Value + + + + + Numeric Value + + + + + Boolean + + + + + Error Value + + + + + Character Value + + + + + Date Time + + + + + + Items Created Count + + + + + + + + PivotCache Record + + + + + Future Feature Data Storage Area + + + + + + PivotCache Records Count + + + + + + + + No Value + + + + + Numeric Value + + + + + Boolean + + + + + Error Value + + + + + Character Value + + + + + Date Time + + + + + Shared Items Index + + + + + + + + + OLAP KPI + + + + + + KPI Count + + + + + + + KPI Unique Name + + + + + KPI Display Name + + + + + KPI Display Folder + + + + + KPI Measure Group Name + + + + + Parent KPI + + + + + KPI Value Unique Name + + + + + KPI Goal Unique Name + + + + + KPI Status Unique Name + + + + + KPI Trend Unique Name + + + + + KPI Weight Unique Name + + + + + Time Member KPI Unique Name + + + + + + + + PivotCache Hierarchy + + + + + + Hierarchy Count + + + + + + + + Fields Usage + + + + + OLAP Grouping Levels + + + + + Future Feature Data Storage Area + + + + + + Hierarchy Unique Name + + + + + Hierarchy Display Name + + + + + Measure Hierarchy + + + + + Set + + + + + Parent Set + + + + + KPI Icon Set + + + + + Attribute Hierarchy + + + + + Time + + + + + Key Attribute Hierarchy + + + + + Default Member Unique Name + + + + + Unique Name of 'All' + + + + + Display Name of 'All' + + + + + Dimension Unique Name + + + + + Display Folder + + + + + Measure Group Name + + + + + Measures + + + + + Levels Count + + + + + One Field + + + + + Member Value Data Type + + + + + Unbalanced + + + + + Unbalanced Group + + + + + Hidden + + + + + + + + PivotCache Field Id + + + + + + Field Count + + + + + + + Field Index + + + + + + + + OLAP Grouping Levels + + + + + + Grouping Level Count + + + + + + + + OLAP Level Groups + + + + + Future Feature Data Storage Area + + + + + + Unique Name + + + + + Grouping Level Display Name + + + + + User-Defined Group Level + + + + + Custom Roll Up + + + + + + + + OLAP Group + + + + + + Level Group Count + + + + + + + + OLAP Group Members + + + + + + Group Name + + + + + Unique Group Name + + + + + Group Caption + + + + + Parent Unique Name + + + + + Group Id + + + + + + + + OLAP Group Member + + + + + + Group Member Count + + + + + + + Group Member Unique Name + + + + + Group + + + + + + + + Entries + + + + + Sets + + + + + OLAP Query Cache + + + + + Server Formats + + + + + Future Feature Data Storage Area + + + + + + + + Culture + + + + + Format + + + + + + + + Server Format + + + + + + Format Count + + + + + + + + No Value + + + + + Numeric Value + + + + + Error Value + + + + + Character Value + + + + + + Tuple Count + + + + + + + + Tuple + + + + + + Member Name Count + + + + + + + Field Index + + + + + Hierarchy Index + + + + + Item Index + + + + + + + + OLAP Set + + + + + + Tuple Set Count + + + + + + + + Tuples + + + + + Sort By Tuple + + + + + + Number of Tuples + + + + + Maximum Rank Requested + + + + + MDX Set Definition + + + + + Set Sort Order + + + + + Query Failed + + + + + + Set Sort Order + + + + + None + + + + + Ascending + + + + + Descending + + + + + Ascending Alpha + + + + + Alphabetic Order Descending + + + + + Ascending Natural + + + + + Natural Order Descending + + + + + + + + + Query + + + + + + Cached Query Count + + + + + + + + Tuples + + + + + + MDX Query String + + + + + + + + Calculated Item + + + + + + Calculated Item Formula Count + + + + + + + + Calculated Item Location + + + + + Future Feature Data Storage Area + + + + + + Field Index + + + + + Calculated Item Formula + + + + + + + + Calculated Member + + + + + + Calculated Members Count + + + + + + + + Future Feature Data Storage Area + + + + + + Calculated Member Name + + + + + Calculated Member MDX Formula + + + + + OLAP Calculated Member Name + + + + + Hierarchy Name + + + + + Parent Name + + + + + Calculated Members Solve Order + + + + + Set + + + + + + + + PivotTable Location + + + + + PivotTable Fields + + + + + Row Fields + + + + + Row Items + + + + + Column Fields + + + + + Column Items + + + + + Page Field Items + + + + + Data Fields + + + + + PivotTable Formats + + + + + Conditional Formats + + + + + PivotChart Formats + + + + + PivotTable OLAP Hierarchies + + + + + PivotTable Style + + + + + Filters + + + + + Row OLAP Hierarchy References + + + + + Column OLAP Hierarchy References + + + + + Future Feature Data Storage Area + + + + + + Name + + + + + PivotCache Definition Id + + + + + Data On Rows + + + + + Default Data Field Position + + + + + + Data Field Header Name + + + + + Grand Totals Caption + + + + + Error Caption + + + + + Show Error + + + + + Caption for Missing Values + + + + + Show Missing + + + + + Page Header Style Name + + + + + Table Style Name + + + + + Vacated Style + + + + + PivotTable Custom String + + + + + PivotTable Last Updated Version + + + + + Minimum Refreshable Version + + + + + Asterisk Totals + + + + + Show Item Names + + + + + Allow Edit Data + + + + + Disable Field List + + + + + Show Calculated Members + + + + + Total Visual Data + + + + + Show Multiple Labels + + + + + Show Drop Down + + + + + Show Expand Collapse + + + + + Print Drill Indicators + + + + + Show Member Property ToolTips + + + + + Show ToolTips on Data + + + + + Enable PivotTable Wizard + + + + + Enable Drill Down + + + + + Enable Field Properties + + + + + Preserve Formatting + + + + + Auto Formatting + + + + + Page Wrap + + + + + Page Over Then Down + + + + + Subtotal Hidden Items + + + + + Row Grand Totals + + + + + Grand Totals On Columns + + + + + Field Print Titles + + + + + Item Print Titles + + + + + Merge Titles + + + + + Show Drop Zones + + + + + PivotCache Created Version + + + + + Indentation for Compact Axis + + + + + Show Empty Row + + + + + Show Empty Column + + + + + Show Field Headers + + + + + Compact New Fields + + + + + Outline New Fields + + + + + Outline Data Fields + + + + + Compact Data + + + + + Data Fields Published + + + + + Enable Drop Zones + + + + + Stop Immersive UI + + + + + Multiple Field Filters + + + + + Chart Format Id + + + + + Row Header Caption + + + + + Column Header Caption + + + + + Default Sort Order + + + + + MDX Subqueries Supported + + + + + Custom List AutoSort + + + + + + + Reference + + + + + First Header Row + + + + + PivotTable Data First Row + + + + + First Data Column + + + + + Rows Per Page Count + + + + + Columns Per Page + + + + + + + + PivotTable Field + + + + + + Field Count + + + + + + + + Field Items + + + + + AutoSort Scope + + + + + Future Feature Data Storage Area + + + + + + Field Name + + + + + Axis + + + + + Data Field + + + + + Custom Subtotal Caption + + + + + Show PivotField Header Drop Downs + + + + + Hidden Level + + + + + Unique Member Property + + + + + Compact + + + + + All Items Expanded + + + + + Number Format Id + + + + + Outline Items + + + + + Subtotals At Top + + + + + Drag To Row + + + + + Drag To Column + + + + + Multiple Field Filters + + + + + Drag Field to Page + + + + + Field Can Drag to Data + + + + + Drag Off + + + + + Show All Items + + + + + Insert Blank Row + + + + + Server-based Page Field + + + + + Insert Item Page Break + + + + + Auto Show + + + + + Top Auto Show + + + + + Hide New Items + + + + + Measure Filter + + + + + Inclusive Manual Filter + + + + + Items Per Page Count + + + + + Auto Sort Type + + + + + Data Source Sort + + + + + Auto Sort + + + + + Auto Show Rank By + + + + + Show Default Subtotal + + + + + Sum Subtotal + + + + + CountA + + + + + Average + + + + + Max Subtotal + + + + + Min Subtotal + + + + + Product Subtotal + + + + + Count + + + + + StdDev Subtotal + + + + + StdDevP Subtotal + + + + + Variance Subtotal + + + + + VarP Subtotal + + + + + Show Member Property in Cell + + + + + Show Member Property ToolTip + + + + + Show As Caption + + + + + Drill State + + + + + + + + Auto Sort Scope + + + + + + + + + PivotTable Field Item + + + + + + Field Count + + + + + + + Item User Caption + + + + + Item Type + + + + + Hidden + + + + + Character + + + + + Hide Details + + + + + Calculated Member + + + + + Missing + + + + + Child Items + + + + + Item Index + + + + + Expanded + + + + + Drill Across Attributes + + + + + + + + Page Field + + + + + + Page Item Count + + + + + + + + Future Feature Data Storage Area + + + + + + Field + + + + + Item Index + + + + + OLAP Hierarchy Index + + + + + Hierarchy Unique Name + + + + + Hierarchy Display Name + + + + + + + + Data Field Item + + + + + + Data Items Count + + + + + + + + Future Feature Data Storage Area + + + + + + Data Field Name + + + + + Field + + + + + Subtotal + + + + + Show Data As Display Format + + + + + 'Show Data As' Base Field + + + + + 'Show Data As' Base Setting + + + + + Number Format Id + + + + + + + + Row Items + + + + + + Items in a Row Count + + + + + + + + Column Items + + + + + + Column Item Count + + + + + + + + Row / Column Item Index + + + + + + Item Type + + + + + Repeated Items Count + + + + + Data Field Index + + + + + + + Shared Items Index + + + + + + + + Row Items + + + + + + Repeated Items Count + + + + + + + + Field + + + + + + Repeated Items Count + + + + + + + Field Index + + + + + + + + PivotTable Format + + + + + + Formats Count + + + + + + + + Pivot Table Location + + + + + Future Feature Data Storage Area + + + + + + Format Action + + + + + Format Id + + + + + + + + Conditional Formatting + + + + + + Conditional Format Count + + + + + + + + Pivot Areas + + + + + + + Conditional Formatting Scope + + + + + Conditional Formatting Rule Type + + + + + Priority + + + + + + + + Pivot Area + + + + + + Pivot Area Count + + + + + + Conditional Formatting Scope + + + + + Selection + + + + + Data Fields + + + + + Field Intersections + + + + + + + Top N Evaluation Type + + + + + Top N None + + + + + All + + + + + Row Top N + + + + + Column Top N + + + + + + + + + PivotChart Format + + + + + + Format Count + + + + + + + + Pivot Table Location Rule + + + + + + Chart Index + + + + + Pivot Format Id + + + + + Series Format + + + + + + + + OLAP Hierarchy + + + + + + OLAP Hierarchy Count + + + + + + + + OLAP Member Properties + + + + + Members + + + + + Future Feature Data Storage Area + + + + + + Outline New Levels + + + + + Multiple Field Filters + + + + + New Levels Subtotals At Top + + + + + Show In Field List + + + + + Drag To Row + + + + + Drag To Column + + + + + Drag to Page + + + + + Drag To Data + + + + + Drag Off + + + + + Inclusive Manual Filter + + + + + Hierarchy Caption + + + + + + + + Row OLAP Hierarchies + + + + + + Item Count + + + + + + + + Column OLAP Hierarchies + + + + + + Items Count + + + + + + + Hierarchy Usage + + + + + + + + OLAP Member Property + + + + + + OLAP Member Properties Count + + + + + + + OLAP Member Property Unique Name + + + + + Show Cell + + + + + Show Tooltip + + + + + Show As Caption + + + + + Name Length + + + + + Property Name Character Index + + + + + Property Name Length + + + + + Level Index + + + + + Field Index + + + + + + + + Member + + + + + + Item Count + + + + + Hierarchy Level + + + + + + + Hidden Item Name + + + + + + + + OLAP Dimension + + + + + + OLAP Dimensions Count + + + + + + + Measure + + + + + Dimension Name + + + + + Dimension Unique Name + + + + + Dimension Display Name + + + + + + + + OLAP Measure Group + + + + + + Measure Group Count + + + + + + + + OLAP Measure Group + + + + + + Measure Group Count + + + + + + + Measure Group Name + + + + + Measure Group Display Name + + + + + + + Measure Group Id + + + + + Dimension Id + + + + + + + Table Style Name + + + + + Show Row Header Formatting + + + + + Show Table Style Column Header Formatting + + + + + Show Row Stripes + + + + + Show Column Stripes + + + + + Show Last Column + + + + + + + + PivotTable Advanced Filter + + + + + + Pivot Filter Count + + + + + + + + Auto Filter + + + + + + + Field Index + + + + + Member Property Field Id + + + + + Pivot Filter Type + + + + + Evaluation Order + + + + + Pivot Filter Id + + + + + Measure Index + + + + + Measure Field Index + + + + + Pivot Filter Name + + + + + Pivot Filter Description + + + + + Label Pivot + + + + + Label Pivot Filter String Value 2 + + + + + + Show Data As + + + + + Normal Data Type + + + + + Difference + + + + + Percentage Of + + + + + Percentage Difference + + + + + Running Total + + + + + Percentage of Row + + + + + Percent of Column + + + + + Percentage of Total + + + + + Index + + + + + + + PivotItem Type + + + + + Data + + + + + Default + + + + + Sum + + + + + CountA + + + + + Average + + + + + Max + + + + + Min + + + + + Product + + + + + Count + + + + + stdDev + + + + + StdDevP + + + + + Var + + + + + VarP + + + + + Grand Total Item + + + + + Blank Pivot Item + + + + + + + PivotTable Format Types + + + + + Blank + + + + + Formatting + + + + + Drill Type + + + + + Formula Type + + + + + + + Field Sort Type + + + + + Manual Sort + + + + + Ascending + + + + + Descending + + + + + + + Pivot Filter Types + + + + + Unknown + + + + + Count + + + + + Percent + + + + + Sum + + + + + Caption Equals + + + + + Caption Not Equal + + + + + Caption Begins With + + + + + Caption Does Not Begin With + + + + + Caption Ends With + + + + + Caption Does Not End With + + + + + Caption Contains + + + + + Caption Does Not Contain + + + + + Caption Is Greater Than + + + + + Caption Is Greater Than Or Equal To + + + + + Caption Is Less Than + + + + + Caption Is Less Than Or Equal To + + + + + Caption Is Between + + + + + Caption Is Not Between + + + + + Value Equal + + + + + Value Not Equal + + + + + Value Greater Than + + + + + Value Greater Than Or Equal To + + + + + Value Less Than + + + + + Value Less Than Or Equal To + + + + + Value Between + + + + + Value Not Between + + + + + Date Equals + + + + + Date Does Not Equal + + + + + Date Older Than + + + + + Date Older Than Or Equal + + + + + Date Newer Than + + + + + Date Newer Than or Equal To + + + + + Date Between + + + + + Date Not Between + + + + + Tomorrow + + + + + Today + + + + + Yesterday + + + + + Next Week + + + + + This Week + + + + + Last Week + + + + + Next Month + + + + + This Month + + + + + Last Month + + + + + Next Quarter + + + + + This Quarter + + + + + Last Quarter + + + + + Next Year + + + + + This Year + + + + + Last Year + + + + + Year-To-Date + + + + + First Quarter + + + + + Second Quarter + + + + + Third Quarter + + + + + Fourth Quarter + + + + + January + + + + + Dates in February + + + + + Dates in March + + + + + Dates in April + + + + + Dates in May + + + + + Dates in June + + + + + Dates in July + + + + + Dates in August + + + + + Dates in September + + + + + Dates in October + + + + + Dates in November + + + + + Dates in December + + + + + + + + + + + + References + + + + + Future Feature Data Storage Area + + + + + + Field Index + + + + + Rule Type + + + + + Data Only + + + + + Labels Only + + + + + Include Row Grand Total + + + + + Include Column Grand Total + + + + + Cache Index + + + + + Outline + + + + + Offset Reference + + + + + Collapsed Levels Are Subtotals + + + + + Axis + + + + + Field Position + + + + + + Rule Type + + + + + None + + + + + Normal + + + + + Data + + + + + All + + + + + Origin + + + + + Field Button + + + + + Top Right + + + + + + + + + Reference + + + + + + Pivot Filter Count + + + + + + + + Field Item + + + + + + + Field Index + + + + + Item Index Count + + + + + Selected + + + + + Positional Reference + + + + + Relative Reference + + + + + Include Default Filter + + + + + Include Sum Filter + + + + + Include CountA Filter + + + + + Include Average Filter + + + + + Include Maximum Filter + + + + + Include Minimum Filter + + + + + Include Product Filter + + + + + Include Count Subtotal + + + + + Include StdDev Filter + + + + + Include StdDevP Filter + + + + + Include Var Filter + + + + + Include VarP Filter + + + + + + + Shared Items Index + + + + + + PivotTable Axis + + + + + Row Axis + + + + + Column Axis + + + + + Include Count Filter + + + + + Values Axis + + + + + + + + + + + + Query Table + + + + + + + QueryTable Refresh Information + + + + + Future Feature Data Storage Area + + + + + + QueryTable Name + + + + + First Row Column Titles + + + + + Row Numbers + + + + + Disable Refresh + + + + + Background Refresh + + + + + First Background Refresh + + + + + Refresh On Load + + + + + Grow Shrink Type + + + + + Fill Adjacent Formulas + + + + + Remove Data On Save + + + + + Disable Edit + + + + + Preserve Formatting On Refresh + + + + + Adjust Column Width On Refresh + + + + + Intermediate + + + + + Connection Id + + + + + + + + + Query table fields + + + + + Deleted Fields + + + + + Sort State + + + + + Future Feature Data Storage Area + + + + + + Preserve Sort & Filter Layout + + + + + Next Field Id Wrapped + + + + + Headers In Last Refresh + + + + + Minimum Refresh Version + + + + + Next field id + + + + + Columns Left + + + + + Columns Right + + + + + + + + Deleted Field + + + + + + Deleted Fields Count + + + + + + + Deleted Fields Name + + + + + + + + QueryTable Field + + + + + + Column Count + + + + + + + + Future Feature Data Storage Area + + + + + + Field Id + + + + + Name + + + + + Data Bound Column + + + + + Row Numbers + + + + + Fill This Formula On Refresh + + + + + Clipped Column + + + + + Table Column Id + + + + + + Grow Shrink Type + + + + + Insert & Delete On Refresh + + + + + Insert & Clear On Refresh + + + + + Overwrite & Clear On Refresh + + + + + + + + + + + Shared String Table + + + + + + + String Item + + + + + + + String Count + + + + + Unique String Count + + + + + + Phonetic Type + + + + + Half-Width Katakana + + + + + Full-Width Katakana + + + + + Hiragana + + + + + No Conversion + + + + + + + Phonetic Alignment Types + + + + + No Control + + + + + Left Alignment + + + + + Center Alignment + + + + + Distributed + + + + + + + + + Text + + + + + + Base Text Start Index + + + + + Base Text End Index + + + + + + + + Run Properties + + + + + Text + + + + + + + + + Font + + + + + Character Set + + + + + Font Family + + + + + Bold + + + + + Italic + + + + + Strike Through + + + + + Outline + + + + + Shadow + + + + + Condense + + + + + Extend + + + + + Text Color + + + + + Font Size + + + + + Underline + + + + + Vertical Alignment + + + + + Font Scheme + + + + + + + + + Text + + + + + Rich Text Run + + + + + Phonetic Run + + + + + Phonetic Properties + + + + + + + + Font Id + + + + + Character Type + + + + + Alignment + + + + + + + + + + + + Revision Headers + + + + + Revisions + + + + + + + Header + + + + + + Last Revision GUID + + + + + Last GUID + + + + + Shared Workbook + + + + + Disk Revisions + + + + + History + + + + + Track Revisions + + + + + Exclusive Mode + + + + + Revision Id + + + + + Version + + + + + Keep Change History + + + + + Protected + + + + + Preserve History + + + + + + + + Revision Row Column Insert Delete + + + + + Revision Cell Move + + + + + Revision Custom View + + + + + Revision Sheet Name + + + + + Revision Insert Sheet + + + + + Revision Cell Change + + + + + Revision Format + + + + + Revision AutoFormat + + + + + Revision Defined Name + + + + + Revision Cell Comment + + + + + Revision Query Table + + + + + Revision Merge Conflict + + + + + + + + Revision Id + + + + + Revision From Rejection + + + + + Revision Undo Rejected + + + + + + + + Sheet Id Map + + + + + Reviewed List + + + + + + + GUID + + + + + Date Time + + + + + Last Sheet Id + + + + + User Name + + + + + Relationship ID + + + + + Minimum Revision Id + + + + + Max Revision Id + + + + + + + + Sheet Id + + + + + + Sheet Count + + + + + + + Sheet Id + + + + + + + + Reviewed + + + + + + Reviewed Revisions Count + + + + + + + revision Id + + + + + + + Index + + + + + Expression + + + + + Reference 3D + + + + + Array Entered + + + + + Value Needed + + + + + Defined Name Formula + + + + + Cross Sheet Move + + + + + Range + + + + + Defined Name + + + + + Cell Reference + + + + + Sheet Id + + + + + + + + Undo + + + + + Revised Row Column + + + + + Revision Format + + + + + + + Sheet Id + + + + + End Of List + + + + + Reference + + + + + User Action + + + + + Edge Deleted + + + + + + + + Undo + + + + + Revision Cell Change + + + + + Revision Format + + + + + + + Sheet Id + + + + + Source + + + + + Destination + + + + + Source Sheet Id + + + + + + + GUID + + + + + User Action + + + + + + + + + + + Sheet Id + + + + + Old Sheet Name + + + + + New Sheet Name + + + + + + + + Sheet Id + + + + + Sheet Name + + + + + Sheet Position + + + + + + + + Old Cell Data + + + + + New Cell Data + + + + + Old Formatting Information + + + + + New Formatting Information + + + + + + + + Sheet Id + + + + + Old Formatting + + + + + Row Column Formatting Change + + + + + Style Revision + + + + + Formatting + + + + + Number Format Id + + + + + Quote Prefix + + + + + Old Quote Prefix + + + + + Phonetic Text + + + + + Old Phonetic Text + + + + + End of List Formula Update + + + + + + + + Formatting + + + + + + + Sheet Id + + + + + Row or Column Formatting Change + + + + + Style + + + + + Sequence Of References + + + + + Start index + + + + + Length + + + + + + + Sheet Id + + + + + + Reference + + + + + + + Sheet Id + + + + + Cell + + + + + GUID + + + + + User Action + + + + + Always Show Comment + + + + + Old Comment + + + + + Comment In Hidden Row + + + + + Hidden Column + + + + + Author + + + + + Original Comment Length + + + + + New Comment Length + + + + + + + + Formula + + + + + Old Formula + + + + + + + + Local Name Sheet Id + + + + + Custom View + + + + + Name + + + + + Function + + + + + Old Function + + + + + Function Group Id + + + + + Old Function Group Id + + + + + Shortcut Key + + + + + Old Short Cut Key + + + + + Named Range Hidden + + + + + Old Hidden + + + + + New Custom Menu + + + + + Old Custom Menu Text + + + + + Description + + + + + Old Description + + + + + New Help Topic + + + + + Old Help Topic + + + + + Status Bar + + + + + Old Status Bar + + + + + Name Comment + + + + + Old Name Comment + + + + + + + + Sheet Id + + + + + + + Sheet Id + + + + + QueryTable Reference + + + + + Field Id + + + + + + Row Column Action Type + + + + + Insert Row + + + + + Delete Row + + + + + Column Insert + + + + + Delete Column + + + + + + + Revision Action Types + + + + + Add + + + + + Delete + + + + + + + Formula Expression Type + + + + + Reference + + + + + Reference Is Error + + + + + Area + + + + + Area Error + + + + + Computed Area + + + + + + + + + + User List + + + + + + + User Information + + + + + + Active User Count + + + + + + + + + + User Revisions GUID + + + + + User Name + + + + + User Id + + + + + Date Time + + + + + + + + + + + + + + + Worksheet + + + + + Chart Sheet + + + + + Dialog Sheet + + + + + + + Sheet Properties + + + + + Macro Sheet Dimensions + + + + + Macro Sheet Views + + + + + Sheet Format Properties + + + + + Column Information + + + + + Sheet Data + + + + + Sheet Protection Options + + + + + AutoFilter + + + + + Sort State + + + + + Data Consolidation + + + + + Custom Sheet Views + + + + + Phonetic Properties + + + + + Conditional Formatting + + + + + Print Options + + + + + Page Margins + + + + + Page Setup Settings + + + + + Header Footer Settings + + + + + Horizontal Page Breaks (Row) + + + + + Vertical Page Breaks + + + + + Custom Properties + + + + + Drawing + + + + + Legacy Drawing Reference + + + + + Legacy Drawing Header Footer + + + + + Background Image + + + + + OLE Objects + + + + + Future Feature Data Storage Area + + + + + + + + + Sheet Properties + + + + + Dialog Sheet Views + + + + + Dialog Sheet Format Properties + + + + + Sheet Protection + + + + + Custom Sheet Views + + + + + Print Options + + + + + Page Margins + + + + + Page Setup Settings + + + + + Header & Footer Settings + + + + + Drawing + + + + + Legacy Drawing + + + + + Legacy Drawing Header Footer + + + + + + Future Feature Data Storage Area + + + + + + + + + Worksheet Properties + + + + + Worksheet Dimensions + + + + + Sheet Views + + + + + Sheet Format Properties + + + + + Column Information + + + + + Sheet Data + + + + + Sheet Calculation Properties + + + + + Sheet Protection + + + + + Protected Ranges + + + + + Scenarios + + + + + AutoFilter + + + + + Sort State + + + + + Data Consolidate + + + + + Custom Sheet Views + + + + + Merge Cells + + + + + Phonetic Properties + + + + + Conditional Formatting + + + + + Data Validations + + + + + Hyperlinks + + + + + Print Options + + + + + Page Margins + + + + + Page Setup Settings + + + + + Header and Footer Settings + + + + + Horizontal Page Breaks + + + + + Vertical Page Breaks + + + + + Custom Properties + + + + + Cell Watch Items + + + + + Ignored Errors + + + + + Smart Tags + + + + + Drawing + + + + + Legacy Drawing + + + + + Legacy Drawing Header Footer + + + + + Background Image + + + + + + Embedded Controls + + + + + Web Publishing Items + + + + + Table Parts + + + + + Future Feature Data Storage Area + + + + + + + + + Row + + + + + + + + Full Calculation On Load + + + + + + + Base Column Width + + + + + Default Column Width + + + + + Default Row Height + + + + + Custom Height + + + + + Hidden By Default + + + + + Thick Top Border + + + + + Thick Bottom Border + + + + + Maximum Outline Row + + + + + Column Outline Level + + + + + + + + Column Width & Formatting + + + + + + + + Minimum Column + + + + + Maximum Column + + + + + Column Width + + + + + Style + + + + + Hidden Columns + + + + + Best Fit Column Width + + + + + Custom Width + + + + + Show Phonetic Information + + + + + Outline Level + + + + + Collapsed + + + + + + Cell Span Type + + + + + + Cell Spans + + + + + + + + Cell + + + + + Future Feature Data Storage Area + + + + + + Row Index + + + + + Spans + + + + + Style Index + + + + + Custom Format + + + + + Row Height + + + + + Hidden + + + + + Custom Height + + + + + Outline Level + + + + + Collapsed + + + + + Thick Top Border + + + + + Thick Bottom + + + + + Show Phonetic + + + + + + + + Formula + + + + + Cell Value + + + + + Rich Text Inline + + + + + Future Feature Data Storage Area + + + + + + Reference + + + + + Style Index + + + + + Cell Data Type + + + + + Cell Metadata Index + + + + + Value Metadata Index + + + + + Show Phonetic + + + + + + Cell Type + + + + + Boolean + + + + + Number + + + + + Error + + + + + Shared String + + + + + String + + + + + Inline String + + + + + + + Formula Type + + + + + Normal + + + + + Array Entered + + + + + Table Formula + + + + + Shared Formula + + + + + + + + + Sheet Tab Color + + + + + Outline Properties + + + + + Page Setup Properties + + + + + + Synch Horizontal + + + + + Synch Vertical + + + + + Synch Reference + + + + + Transition Formula Evaluation + + + + + Transition Formula Entry + + + + + Published + + + + + Code Name + + + + + Filter Mode + + + + + Enable Conditional Formatting Calculations + + + + + + + Reference + + + + + + + + Worksheet View + + + + + Future Feature Data Storage Area + + + + + + + + + View Pane + + + + + Selection + + + + + PivotTable Selection + + + + + Future Feature Data Storage Area + + + + + + Window Protection + + + + + Show Formulas + + + + + Show Grid Lines + + + + + Show Headers + + + + + Show Zero Values + + + + + Right To Left + + + + + Sheet Tab Selected + + + + + Show Ruler + + + + + Show Outline Symbols + + + + + Default Grid Color + + + + + Show White Space + + + + + View Type + + + + + Top Left Visible Cell + + + + + Color Id + + + + + Zoom Scale + + + + + Zoom Scale Normal View + + + + + Zoom Scale Page Break Preview + + + + + Zoom Scale Page Layout View + + + + + Workbook View Index + + + + + + + Horizontal Split Position + + + + + Vertical Split Position + + + + + Top Left Visible Cell + + + + + Active Pane + + + + + Split State + + + + + + + + Pivot Area + + + + + + Pane + + + + + Show Header + + + + + Label + + + + + Data Selection + + + + + Extendable + + + + + Selection Count + + + + + Axis + + + + + Dimension + + + + + Start + + + + + Minimum + + + + + Maximum + + + + + Active Row + + + + + Active Column + + + + + Previous Row + + + + + Previous Column Selection + + + + + Click Count + + + + + Relationship Id + + + + + + + Pane + + + + + Active Cell Location + + + + + Active Cell Index + + + + + Sequence of References + + + + + + Pane Types + + + + + Bottom Right Pane + + + + + Top Right Pane + + + + + Bottom Left Pane + + + + + Top Left Pane + + + + + + + + + Break + + + + + + Page Break Count + + + + + Manual Break Count + + + + + + + Id + + + + + Minimum + + + + + Maximum + + + + + Manual Page Break + + + + + Pivot-Created Page Break + + + + + + Sheet View Type + + + + + Normal View + + + + + Page Break Preview + + + + + Page Layout View + + + + + + + + Apply Styles in Outline + + + + + Summary Below + + + + + Summary Right + + + + + Show Outline Symbols + + + + + + + Show Auto Page Breaks + + + + + Fit To Page + + + + + + + + Data Consolidation References + + + + + + Function Index + + + + + Use Left Column Labels + + + + + Labels In Top Row + + + + + Link + + + + + + Data Consolidation Functions + + + + + Average + + + + + Count + + + + + CountNums + + + + + Maximum + + + + + Minimum + + + + + Product + + + + + StdDev + + + + + StdDevP + + + + + Sum + + + + + Variance + + + + + VarP + + + + + + + + + Data Consolidation Reference + + + + + + Data Consolidation Reference Count + + + + + + + Reference + + + + + Named Range + + + + + Sheet Name + + + + + relationship Id + + + + + + + + Merged Cell + + + + + + Count + + + + + + + Reference + + + + + + + + Cell Smart Tags + + + + + + + + + Cell Smart Tag + + + + + + Reference + + + + + + + + Smart Tag Properties + + + + + + Smart Tag Type Index + + + + + Deleted + + + + + XML Based + + + + + + + Key Name + + + + + Value + + + + + + + Relationship id + + + + + + + Relationship Id + + + + + + + + Custom Sheet View + + + + + + + + + Pane Split Information + + + + + Selection + + + + + Horizontal Page Breaks + + + + + Vertical Page Breaks + + + + + Page Margins + + + + + Print Options + + + + + Page Setup Settings + + + + + Header Footer Settings + + + + + AutoFilter Settings + + + + + + + GUID + + + + + Print Scale + + + + + Color Id + + + + + Show Page Breaks + + + + + Show Formulas + + + + + Show Grid Lines + + + + + Show Headers + + + + + Show Outline Symbols + + + + + Show Zero Values + + + + + Fit To Page + + + + + Print Area Defined + + + + + Filtered List + + + + + Show AutoFitler Drop Down Controls + + + + + Hidden Rows + + + + + Hidden Columns + + + + + Visible State + + + + + Filter + + + + + View Type + + + + + Show Ruler + + + + + Top Left Visible Cell + + + + + + + + Data Validation + + + + + + Disable Prompts + + + + + Top Left Corner (X Coodrinate) + + + + + Top Left Corner (Y Coordinate) + + + + + Data Validation Item Count + + + + + + + + Formula 1 + + + + + Formula 2 + + + + + + Data Validation Type + + + + + Data Validation Error Style + + + + + IME Mode Enforced + + + + + Operator + + + + + Allow Blank + + + + + Show Drop Down + + + + + Show Input Message + + + + + Show Error Message + + + + + Error Alert Text + + + + + Error Message + + + + + Prompt Title + + + + + Input Prompt + + + + + Sequence of References + + + + + + Data Validation Type + + + + + None + + + + + Whole Number + + + + + Decimal + + + + + List + + + + + Date + + + + + Time + + + + + Text Length + + + + + Custom + + + + + + + Data Validation Operator + + + + + Between + + + + + Not Between + + + + + Equal + + + + + Not Equal + + + + + Less Than + + + + + Less Than Or Equal + + + + + Greater Than + + + + + Greater Than Or Equal + + + + + + + Data Validation Error Styles + + + + + Stop Icon + + + + + Warning Icon + + + + + Information Icon + + + + + + + Data Validation IME Mode + + + + + IME Mode Not Controlled + + + + + IME Off + + + + + IME On + + + + + Disabled IME Mode + + + + + Hiragana IME Mode + + + + + Full Katakana IME Mode + + + + + Half-Width Katakana + + + + + Full-Width Alpha-Numeric IME Mode + + + + + Half Alpha IME + + + + + Full Width Hangul + + + + + Half-Width Hangul IME Mode + + + + + + + Conditional Format Type + + + + + Expression + + + + + Cell Is + + + + + Color Scale + + + + + Data Bar + + + + + Icon Set + + + + + Top 10 + + + + + Unique Values + + + + + Duplicate Values + + + + + Contains Text + + + + + Does Not Contain Text + + + + + Begins With + + + + + Ends With + + + + + Contains Blanks + + + + + Contains No Blanks + + + + + Contains Errors + + + + + Contains No Errors + + + + + Time Period + + + + + Above or Below Average + + + + + + + Time Period Types + + + + + Today + + + + + Yesterday + + + + + Tomorrow + + + + + Last 7 Days + + + + + This Month + + + + + Last Month + + + + + Next Month + + + + + This Week + + + + + Last Week + + + + + Next Week + + + + + + + Conditional Format Operators + + + + + Less Than + + + + + Less Than Or Equal + + + + + Equal + + + + + Not Equal + + + + + Greater Than Or Equal + + + + + Greater Than + + + + + Between + + + + + Not Between + + + + + Contains + + + + + Does Not Contain + + + + + Begins With + + + + + Ends With + + + + + + + Conditional Format Value Object Type + + + + + Number + + + + + Percent + + + + + Maximum + + + + + Minimum + + + + + Formula + + + + + Percentile + + + + + + + + + Conditional Formatting Rule + + + + + + + PivotTable Conditional Formatting + + + + + Sequence of Refernces + + + + + + + + Formula + + + + + Color Scale + + + + + Data Bar + + + + + Icon Set + + + + + + + Type + + + + + Differential Formatting Id + + + + + Priority + + + + + Stop If True + + + + + Above Or Below Average + + + + + Top 10 Percent + + + + + Bottom N + + + + + Operator + + + + + Text + + + + + Time Period + + + + + Rank + + + + + StdDev + + + + + Equal Average + + + + + + + + Hyperlink + + + + + + + + Reference + + + + + Relationship Id + + + + + Location + + + + + Tool Tip + + + + + Display String + + + + + + + + + Formula Type + + + + + Always Calculate Array + + + + + Range of Cells + + + + + Data Table 2-D + + + + + Data Table Row + + + + + Input 1 Deleted + + + + + Input 2 Deleted + + + + + Data Table Cell 1 + + + + + Input Cell 2 + + + + + Calculate Cell + + + + + Shared Group Index + + + + + Assigns Value to Name + + + + + + + + + + Conditional Format Value Object + + + + + Color Gradiant Interpolation + + + + + + + + + Conditional Format Value Object + + + + + Data Bar Color + + + + + + Minimum Length + + + + + Maximum Length + + + + + Show Values + + + + + + + + Conditional Formatting Object + + + + + + Icon Set + + + + + Show Value + + + + + Percent + + + + + Reverse Icons + + + + + + + + + + Type + + + + + Value + + + + + Greater Than Or Equal + + + + + + + Left Page Margin + + + + + Right Page Margin + + + + + Top Page Margin + + + + + Bottom Page Margin + + + + + Header Page Margin + + + + + Footer Page Margin + + + + + + + Horizontal Centered + + + + + Vertical Centered + + + + + Print Headings + + + + + Print Grid Lines + + + + + Grid Lines Set + + + + + + + Paper Size + + + + + Print Scale + + + + + First Page Number + + + + + Fit To Width + + + + + Fit To Height + + + + + Page Order + + + + + Orientation + + + + + Use Printer Defaults + + + + + Black And White + + + + + Draft + + + + + Print Cell Comments + + + + + Use First Page Number + + + + + Print Error Handling + + + + + Horizontal DPI + + + + + Vertical DPI + + + + + Number Of Copies + + + + + Id + + + + + + Page Order + + + + + Down Then Over + + + + + Over Then Down + + + + + + + Orientation + + + + + Default + + + + + Portrait + + + + + Landscape + + + + + + + Cell Comments + + + + + None + + + + + Print Comments As Displayed + + + + + Print At End + + + + + + + + + Odd Header + + + + + Odd Page Footer + + + + + Even Page Header + + + + + Even Page Footer + + + + + First Page Header + + + + + First Page Footer + + + + + + Different Odd Even Header Footer + + + + + Different First Page + + + + + Scale Header & Footer With Document + + + + + Align Margins + + + + + + Print Errors + + + + + Display Cell Errors + + + + + Show Cell Errors As Blank + + + + + Dash Cell Errors + + + + + NA + + + + + + + + + Scenario + + + + + + Current Scenario + + + + + Last Shown Scenario + + + + + Sequence of References + + + + + + + Password + + + + + Sheet Locked + + + + + Objects Locked + + + + + Scenarios Locked + + + + + Format Cells Locked + + + + + Format Columns Locked + + + + + Format Rows Locked + + + + + Insert Columns Locked + + + + + Insert Rows Locked + + + + + Insert Hyperlinks Locked + + + + + Delete Columns Locked + + + + + Delete Rows Locked + + + + + Select Locked Cells Locked + + + + + Sort Locked + + + + + AutoFilter Locked + + + + + Pivot Tables Locked + + + + + Select Unlocked Cells Locked + + + + + + + + Protected Range + + + + + + + + Password + + + + + Sequence of References + + + + + Name + + + + + Security Descriptor + + + + + + + + Input Cells + + + + + + Scenario Name + + + + + Scenario Locked + + + + + Hidden Scenario + + + + + Changing Cell Count + + + + + User Name + + + + + Scenario Comment + + + + + + + Reference + + + + + Deleted + + + + + Undone + + + + + Value + + + + + Number Format Id + + + + + + + + Cell Watch Item + + + + + + + + Reference + + + + + + + + Chart Sheet Properties + + + + + Chart Sheet Views + + + + + Chart Sheet Protection + + + + + Custom Chart Sheet Views + + + + + + + + Drawing + + + + + + Legacy Drawing Reference in Header Footer + + + + + + + + + + + + + + Published + + + + + Code Name + + + + + + + + Chart Sheet View + + + + + + + + + + + + Sheet Tab Selected + + + + + Window Zoom Scale + + + + + Workbook View Id + + + + + Zoom To Fit + + + + + + + Password + + + + + Contents + + + + + Objects Locked + + + + + + + Paper Size + + + + + First Page Number + + + + + Orientation + + + + + Use Printer Defaults + + + + + Black And White + + + + + Draft + + + + + Use First Page Number + + + + + Horizontal DPI + + + + + Vertical DPI + + + + + Number Of Copies + + + + + Id + + + + + + + + Custom Chart Sheet View + + + + + + + + + + Chart Sheet Page Setup + + + + + + + GUID + + + + + Print Scale + + + + + Visible State + + + + + Zoom To Fit + + + + + + + + Custom Property + + + + + + + + Custom Property Name + + + + + Relationship Id + + + + + + + + OLE Object + + + + + + + + OLE ProgId + + + + + Data or View Aspect + + + + + OLE Link Moniker + + + + + OLE Update + + + + + Auto Load + + + + + Shape Id + + + + + Relationship Id + + + + + + Data View Aspect Type + + + + + Object Display Content + + + + + Object Display Icon + + + + + + + OLE Update Types + + + + + Always Update OLE + + + + + Update OLE On Call + + + + + + + + + Web Publishing Item + + + + + + Web Publishing Items Count + + + + + + + Id + + + + + Destination Bookmark + + + + + Web Source Type + + + + + Source Id + + + + + Source Object Name + + + + + Destination File Name + + + + + Title + + + + + Automatically Publish + + + + + + + + Embedded Control + + + + + + + + Shape Id + + + + + Relationship Id + + + + + Control Name + + + + + + Web Source Type + + + + + All Sheet Content + + + + + Print Area + + + + + AutoFilter + + + + + Range + + + + + Chart + + + + + PivotTable + + + + + QueryTable + + + + + Label + + + + + + + + + Ignored Error + + + + + + + + + Sequence of References + + + + + Evaluation Error + + + + + Two Digit Text Year + + + + + Number Stored As Text + + + + + Formula + + + + + Formula Range + + + + + Unlocked Formula + + + + + Empty Cell Reference + + + + + List Data Validation + + + + + Calculated Column + + + + + + Pane State + + + + + Split + + + + + Frozen + + + + + Frozen Split + + + + + + + + + Table Part + + + + + + Count + + + + + + + Relationship Id + + + + + + + + + Metadata + + + + + + + Metadata Types Collection + + + + + Metadata String Store + + + + + MDX Metadata Information + + + + + Future Metadata + + + + + Cell Metadata + + + + + Value Metadata + + + + + Future Feature Storage Area + + + + + + + + + Metadata Type Information + + + + + + Metadata Type Count + + + + + + + Metadata Type Name + + + + + Minimum Supported Version + + + + + Metadata Ghost Row + + + + + Metadata Ghost Column + + + + + Metadata Edit + + + + + Metadata Cell Value Delete + + + + + Metadata Copy + + + + + Metadata Paste All + + + + + Metadata Paste Formulas + + + + + Metadata Paste Special Values + + + + + Metadata Paste Formats + + + + + Metadata Paste Comments + + + + + Metadata Paste Data Validation + + + + + Metadata Paste Borders + + + + + Metadata Paste Column Widths + + + + + Metadata Paste Number Formats + + + + + Metadata Merge + + + + + Meatadata Split First + + + + + Metadata Split All + + + + + Metadata Insert Delete + + + + + Metadata Clear All + + + + + Metadata Clear Formats + + + + + Metadata Clear Contents + + + + + Metadata Clear Comments + + + + + Metadata Formula Assignment + + + + + Metadata Coercion + + + + + Adjust Metadata + + + + + Cell Metadata + + + + + + + + Metadata Block + + + + + + Metadata Block Count + + + + + + + + Metadata Record + + + + + + + + Metadata Record Type Index + + + + + Metadata Record Value Index + + + + + + + + Future Metadata Block + + + + + Future Feature Data Storage Area + + + + + + Metadata Type Name + + + + + Future Metadata Block Count + + + + + + + + Future Feature Storage Area + + + + + + + + + MDX Metadata Record + + + + + + MDX Metadata Record Count + + + + + + + + Tuple MDX Metadata + + + + + Set MDX Metadata + + + + + Member Property MDX Metadata + + + + + KPI MDX Metadata + + + + + + Connection Name Index + + + + + Cube Function Tag + + + + + + MDX Function Type + + + + + Cube Member + + + + + Cube Value + + + + + Cube Set + + + + + Cube Set Count + + + + + Cube Ranked Member + + + + + Cube Member Property + + + + + Cube KPI Member + + + + + + + + + Member Unique Name Index + + + + + + Member Index Count + + + + + Server Formatting Culture Currency + + + + + Server Formatting String Index + + + + + Server Formatting Built-In Number Format Index + + + + + Server Formatting Background Color + + + + + Server Formatting Foreground Color + + + + + Server Formatting Italic Font + + + + + Server Formatting Underline Font + + + + + Server Formatting Strikethrough Font + + + + + Server Formatting Bold Font + + + + + + + + Member Unique Name Index + + + + + + Set Definition Index + + + + + Sort By Member Index Count + + + + + Set Sort Order + + + + + + MDX Set Order + + + + + Unsorted + + + + + Ascending + + + + + Descending + + + + + Alpha Ascending Sort Order + + + + + Alpha Descending Sort Order + + + + + Natural Ascending + + + + + Natural Descending + + + + + + + + Member Unique Name Index + + + + + Property Name Index + + + + + + + Member Unique Name Index + + + + + KPI Index + + + + + KPI Property + + + + + + MDX KPI Property + + + + + Value + + + + + Goal + + + + + Status + + + + + Trend + + + + + Weight + + + + + Current Time Member + + + + + + + + Index Value + + + + + String is a Set + + + + + + + + MDX Metadata String + + + + + + MDX Metadata String Count + + + + + + + + + + Single Cells + + + + + + + Table Properties + + + + + + + + + Cell Properties + + + + + Future Feature Data Storage Area + + + + + + Table Id + + + + + Reference + + + + + Connection ID + + + + + + + + Column XML Properties + + + + + Future Feature Data Storage Area + + + + + + Table Field Id + + + + + Unique Table Name + + + + + + + + Future Feature Data Storage Area + + + + + + XML Map Id + + + + + XPath + + + + + XML Data Type + + + + + + + + + Style Sheet + + + + + + + Number Formats + + + + + Fonts + + + + + Fills + + + + + Borders + + + + + Formatting Records + + + + + Cell Formats + + + + + Cell Styles + + + + + Formats + + + + + Table Styles + + + + + Colors + + + + + Future Feature Data Storage Area + + + + + + + + Horizontal Alignment + + + + + Vertical Alignment + + + + + Text Rotation + + + + + Wrap Text + + + + + Indent + + + + + Relative Indent + + + + + Justify Last Line + + + + + Shrink To Fit + + + + + Reading Order + + + + + + Border Line Styles + + + + + None + + + + + Thin Border + + + + + Medium Border + + + + + Dashed + + + + + Dotted + + + + + Thick Line Border + + + + + Double Line + + + + + Hairline Border + + + + + Medium Dashed + + + + + Dash Dot + + + + + Medium Dash Dot + + + + + Dash Dot Dot + + + + + Medium Dash Dot Dot + + + + + Slant Dash Dot + + + + + + + + + Border + + + + + + Border Count + + + + + + + + Left Border + + + + + Right Border + + + + + Top Border + + + + + Bottom Border + + + + + Diagonal + + + + + Vertical Inner Border + + + + + Horizontal Inner Borders + + + + + + Diagonal Up + + + + + Diagonal Down + + + + + Outline + + + + + + + + Color + + + + + + Line Style + + + + + + + Cell Locked + + + + + Hidden Cell + + + + + + + + Font + + + + + + Font Count + + + + + + + + Fill + + + + + + Fill Count + + + + + + + + Pattern + + + + + Gradient + + + + + + + + + Foreground Color + + + + + Background Color + + + + + + Pattern Type + + + + + + + Automatic + + + + + Index + + + + + Alpha Red Green Blue Color Value + + + + + Theme Color + + + + + Tint + + + + + + Pattern Type + + + + + None + + + + + Solid + + + + + Medium Gray + + + + + Dary Gray + + + + + Light Gray + + + + + Dark Horizontal + + + + + Dark Vertical + + + + + Dark Down + + + + + Dark Up + + + + + Dark Grid + + + + + Dark Trellis + + + + + Light Horizontal + + + + + Light Vertical + + + + + Light Down + + + + + Light Up + + + + + Light Grid + + + + + Light Trellis + + + + + Gray 0.125 + + + + + Gray 0.0625 + + + + + + + + + Gradient Stop + + + + + + Gradient Fill Type + + + + + Linear Gradient Degree + + + + + Left Convergence + + + + + Right Convergence + + + + + Top Gradient Convergence + + + + + Bottom Convergence + + + + + + + + Color + + + + + + Gradient Stop Position + + + + + + Gradient Type + + + + + Linear Gradient + + + + + Path + + + + + + + Horizontal Alignment Type + + + + + General Horizontal Alignment + + + + + Left Horizontal Alignment + + + + + Centered Horizontal Alignment + + + + + Right Horizontal Alignment + + + + + Fill + + + + + Justify + + + + + Center Continuous Horizontal Alignment + + + + + Distributed Horizontal Alignment + + + + + + + Vertical Alignment Types + + + + + Align Top + + + + + Centered Vertical Alignment + + + + + Aligned To Bottom + + + + + Justified Vertically + + + + + Distributed Vertical Alignment + + + + + + + + + Number Formats + + + + + + Number Format Count + + + + + + + Number Format Id + + + + + Number Format Code + + + + + + + + Formatting Elements + + + + + + Style Count + + + + + + + + Format + + + + + + Format Count + + + + + + + + Alignment + + + + + Protection + + + + + Future Feature Data Storage Area + + + + + + Number Format Id + + + + + Font Id + + + + + Fill Id + + + + + Border Id + + + + + Format Id + + + + + Quote Prefix + + + + + Pivot Button + + + + + Apply Number Format + + + + + Apply Font + + + + + Apply Fill + + + + + Apply Border + + + + + Apply Alignment + + + + + Apply Protection + + + + + + + + Cell Style + + + + + + Style Count + + + + + + + + Future Feature Data Storage Area + + + + + + User Defined Cell Style + + + + + Format Id + + + + + Built-In Style Id + + + + + Outline Style + + + + + Hidden Style + + + + + Custom Built In + + + + + + + + Formatting + + + + + + Format Count + + + + + + + + Font Properties + + + + + Number Format + + + + + Fill + + + + + Alignment + + + + + Border Properties + + + + + Protection Properties + + + + + Future Feature Data Storage Area + + + + + + + Number Format Id + + + + + + Font Id + + + + + + Fill Id + + + + + + Border Id + + + + + + Cell Style Format Id + + + + + + Format Id + + + + + + + + Color Indexes + + + + + MRU Colors + + + + + + + + + RGB Color + + + + + + + + + Color + + + + + + + + Alpha Red Green Blue + + + + + + + + Table Style + + + + + + Table Style Count + + + + + Default Table Style + + + + + Default Pivot Style + + + + + + + + Table Style + + + + + + Table Style Name + + + + + Pivot Style + + + + + Table + + + + + Table Style Count + + + + + + + Table Style Type + + + + + Band Size + + + + + Formatting Id + + + + + + Table Style Type + + + + + Whole Table Style + + + + + Header Row Style + + + + + Total Row Style + + + + + First Column Style + + + + + Last Column Style + + + + + First Row Stripe Style + + + + + Second Row Stripe Style + + + + + First Column Stripe Style + + + + + Second Column Stipe Style + + + + + First Header Row Style + + + + + Last Header Style + + + + + First Total Row Style + + + + + Last Total Row Style + + + + + First Subtotal Column Style + + + + + Second Subtotal Column Style + + + + + Third Subtotal Column Style + + + + + First Subtotal Row Style + + + + + Second Subtotal Row Style + + + + + Third Subtotal Row Style + + + + + Blank Row Style + + + + + First Column Subheading Style + + + + + Second Column Subheading Style + + + + + Third Column Subheading Style + + + + + First Row Subheading Style + + + + + Second Row Subheading Style + + + + + Third Row Subheading Style + + + + + Page Field Labels Style + + + + + Page Field Values Style + + + + + + + + Value + + + + + + + Value + + + + + + + Value + + + + + + + String Value + + + + + + + Value + + + + + + Vertical Alignment Run Types + + + + + Baseline + + + + + Superscript + + + + + Subscript + + + + + + + + Font Scheme + + + + + + Font scheme Styles + + + + + None + + + + + Major Font + + + + + Minor Font + + + + + + + + Underline Value + + + + + + Underline Types + + + + + Single Underline + + + + + Double Underline + + + + + Accounting Single Underline + + + + + Accounting Double Underline + + + + + None + + + + + + + + + Font Name + + + + + Character Set + + + + + Font Family + + + + + Bold + + + + + Italic + + + + + Strike Through + + + + + Outline + + + + + Shadow + + + + + Condense + + + + + Extend + + + + + Text Color + + + + + Font Size + + + + + Underline + + + + + Text Vertical Alignment + + + + + Scheme + + + + + + + + Auto Format Id + + + + + Apply Number Formats + + + + + Apply Border Formats + + + + + Apply Font Formats + + + + + Apply Pattern Formats + + + + + Apply Alignment Formats + + + + + Apply Width / Height Formats + + + + + + + + + + + External Reference + + + + + + + External Workbook + + + + + DDE Connection + + + + + OLE Link + + + + + + + + + + Supporting Workbook Sheet Names + + + + + Named Links + + + + + Cached Worksheet Data + + + + + + Relationship to supporting book file path + + + + + + + + Sheet Name + + + + + + + + Sheet Name Value + + + + + + + + Defined Name + + + + + + + + Defined Name + + + + + Refers To + + + + + Sheet Id + + + + + + + + External Sheet Data Set + + + + + + + + + Row + + + + + + Sheet Id + + + + + Last Refresh Resulted in Error + + + + + + + + External Cell Data + + + + + + Row + + + + + + + + Value + + + + + + Reference + + + + + Type + + + + + Value Metadata + + + + + + + + DDE Items Collection + + + + + + Service name + + + + + Topic for DDE server + + + + + + + + DDE Item definition + + + + + + + + + DDE Name Values + + + + + + DDE Name + + + + + OLE + + + + + Advise + + + + + Data is an Image + + + + + + + + Value + + + + + + Rows + + + + + Columns + + + + + + + + DDE Link Value + + + + + + DDE Value Type + + + + + + DDE Value Types + + + + + Nil + + + + + Boolean + + + + + Real Number + + + + + Error + + + + + String + + + + + + + + + OLE Link Items + + + + + + OLE Link Relationship + + + + + OLE Link ProgID + + + + + + + + OLE Link Item + + + + + + + + OLE Name + + + + + Icon + + + + + Advise + + + + + Object is an Image + + + + + + + + + + + + Table + + + + + + + Table AutoFilter + + + + + Sort State + + + + + Table Columns + + + + + Table Style + + + + + Future Feature Data Storage Area + + + + + + Table Id + + + + + Name + + + + + Table Name + + + + + Table Comment + + + + + Reference + + + + + Table Type + + + + + Header Row Count + + + + + Insert Row Showing + + + + + Insert Row Shift + + + + + Totals Row Count + + + + + Totals Row Shown + + + + + Published + + + + + Header Row Format Id + + + + + Data Area Format Id + + + + + Totals Row Format Id + + + + + Header Row Border Format Id + + + + + Table Border Format Id + + + + + Totals Row Border Format Id + + + + + Header Row Style + + + + + Data Style Name + + + + + Totals Row Style + + + + + Connection ID + + + + + + Table Type + + + + + Worksheet + + + + + XML + + + + + Query Table + + + + + + + + Style Name + + + + + Show First Column + + + + + Show Last Column + + + + + Show Row Stripes + + + + + Show Column Stripes + + + + + + + + Table Column + + + + + + Column Count + + + + + + + + Calculated Column Formula + + + + + Totals Row Formula + + + + + XML Column Properties + + + + + Future Feature Data Storage Area + + + + + + Table Field Id + + + + + Unique Name + + + + + Column name + + + + + Totals Row Function + + + + + Totals Row Label + + + + + Query Table Field Id + + + + + Header Row Cell Format Id + + + + + Data & Insert Row Format Id + + + + + Totals Row Format Id + + + + + Header Row Cell Style + + + + + Data Area Style Name + + + + + Totals Row Style Name + + + + + + + + + Array + + + + + + + + Totals Row Function Types + + + + + None + + + + + Sum + + + + + Minimum + + + + + Maximum + + + + + Average + + + + + Non Empty Cell Count + + + + + Count Numbers + + + + + StdDev + + + + + Var + + + + + Custom Formula + + + + + + + + + Future Feature Data Storage Area + + + + + + XML Map Id + + + + + XPath + + + + + Denormalized + + + + + XML Data Type + + + + + + XML Data Types + + + + + String + + + + + Normalized String + + + + + Token + + + + + Byte + + + + + Unsigned Byte + + + + + Base 64 Encoded Binary + + + + + Hex Binary + + + + + Integer + + + + + Positive Integer + + + + + Negative Integer + + + + + Non Positive Integer + + + + + Non Negative Integer + + + + + Integer + + + + + Unsigned Integer + + + + + Long + + + + + Unsigned Long + + + + + Short + + + + + Unsigned Short + + + + + Decimal + + + + + Float + + + + + Double + + + + + Boolean + + + + + Time + + + + + Date Time + + + + + Duration + + + + + Date + + + + + gMonth + + + + + gYear + + + + + gYearMonth + + + + + gDay + + + + + gMonthDays + + + + + Name + + + + + Qname + + + + + NCName + + + + + Any URI + + + + + Language + + + + + ID + + + + + IDREF + + + + + IDREFS + + + + + ENTITY + + + + + ENTITIES + + + + + Notation + + + + + NMTOKEN + + + + + NMTOKENS + + + + + Any Type + + + + + + + + + + Volatile Dependency Types + + + + + + + Volatile Dependency Type + + + + + + + + + + Main + + + + + + Type + + + + + + + + Topic + + + + + + First String + + + + + + + + Topic Value + + + + + Strings in Subtopic + + + + + References + + + + + + Type + + + + + + + Reference + + + + + Sheet Id + + + + + + Volatile Dependency Types + + + + + Real Time Data + + + + + OLAP Formulas + + + + + + + Volatile Dependency Value Types + + + + + Boolean + + + + + Real Number + + + + + Error + + + + + String + + + + + + + + + + + Workbook + + + + + + + File Version + + + + + File Sharing + + + + + Workbook Properties + + + + + Workbook Protection + + + + + Workbook Views + + + + + Sheets + + + + + Function Groups + + + + + External References + + + + + Defined Names + + + + + Calculation Properties + + + + + OLE Size + + + + + Custom Workbook Views + + + + + PivotCaches + + + + + Smart Tag Properties + + + + + Smart Tag Types + + + + + Web Publishing Properties + + + + + File Recovery Properties + + + + + Web Publish Objects + + + + + Future Feature Data Storage Area + + + + + + + + Application Name + + + + + Last Edited Version + + + + + Lowest Edited Version + + + + + Build Version + + + + + Code Name + + + + + + + + Workbook View + + + + + + + + + + + Visibility + + + + + Minimized + + + + + Show Horizontal Scroll + + + + + Show Vertical Scroll + + + + + Show Sheet Tabs + + + + + Upper Left Corner (X Coordinate) + + + + + Upper Left Corner (Y Coordinate) + + + + + Window Width + + + + + Window Height + + + + + Sheet Tab Ratio + + + + + First Sheet + + + + + Active Sheet Index + + + + + AutoFilter Date Grouping + + + + + + Visibility Types + + + + + Visible + + + + + Hidden + + + + + Very Hidden + + + + + + + + + Custom Workbook View + + + + + + + + + + + Custom View Name + + + + + Custom View GUID + + + + + Auto Update + + + + + Merge Interval + + + + + Changes Saved Win + + + + + Only Synch + + + + + Personal View + + + + + Include Print Settings + + + + + Include Hidden Rows & Columns + + + + + Maximized + + + + + Minimized + + + + + Show Horizontal Scroll + + + + + Show Vertical Scroll + + + + + Show Sheet Tabs + + + + + Top Left Corner (X Coordinate) + + + + + Top Left Corner (Y Coordinate) + + + + + Window Width + + + + + Window Height + + + + + Sheet Tab Ratio + + + + + Active Sheet in Book View + + + + + Show Formula Bar + + + + + Show Status Bar + + + + + Show Comments + + + + + Show Objects + + + + + + Comment Display Types + + + + + No Comments + + + + + Show Comment Indicator + + + + + Show Comment & Indicator + + + + + + + Object Display Types + + + + + All + + + + + Show Placeholders + + + + + None + + + + + + + + + Sheet Information + + + + + + + + Sheet Name + + + + + Sheet Tab Id + + + + + Visible State + + + + + Relationship Id + + + + + + Sheet Visibility Types + + + + + Visible + + + + + Hidden + + + + + Very Hidden + + + + + + + + Date 1904 + + + + + Show Objects + + + + + Show Border Unselected Table + + + + + Filter Privacy + + + + + Prompted Solutions + + + + + Show Ink Annotations + + + + + Create Backup File + + + + + Save External Link Values + + + + + Update Links Behavior + + + + + Code Name + + + + + Hide Pivot Field List + + + + + Show Pivot Chart Filter + + + + + Allow Refresh Query + + + + + Publish Items + + + + + Check Compatibility On Save + + + + + Auto Compress Pictures + + + + + Refresh all Connections on Open + + + + + Default Theme Version + + + + + + Update Links Behavior Types + + + + + User Set + + + + + Never Update Links + + + + + Always Update Links + + + + + + + + Embed SmartTags + + + + + Show Smart Tags + + + + + + Smart Tag Display Types + + + + + All + + + + + None + + + + + No Smart Tag Indicator + + + + + + + + + Smart Tag Type + + + + + + + + SmartTag Namespace URI + + + + + Name + + + + + Smart Tag URL + + + + + + + Auto Recover + + + + + Crash Save + + + + + Data Extract Load + + + + + Repair Load + + + + + + + Calculation Id + + + + + Calculation Mode + + + + + Full Calculation On Load + + + + + Reference Mode + + + + + Calculation Iteration + + + + + Iteration Count + + + + + Iterative Calculation Delta + + + + + Full Precision Calculation + + + + + Calc Completed + + + + + Calculate On Save + + + + + Concurrent Calculations + + + + + Concurrent Thread Manual Count + + + + + Force Full Calculation + + + + + + Calculation Mode + + + + + Manual Calculation Mode + + + + + Automatic + + + + + Automatic Calculation (No Tables) + + + + + + + Reference Mode + + + + + A1 Mode + + + + + R1C1 Reference Mode + + + + + + + + + Defined Name + + + + + + + + + + Defined Name + + + + + Comment + + + + + Custom Menu Text + + + + + Description + + + + + Help + + + + + Status Bar + + + + + Local Name Sheet Id + + + + + Hidden Name + + + + + Function + + + + + Procedure + + + + + External Function + + + + + Function Group Id + + + + + Shortcut Key + + + + + Publish To Server + + + + + Workbook Parameter (Server) + + + + + + + + + + External Reference + + + + + + + + Relationship Id + + + + + + + Relationship Id + + + + + + + + PivotCache + + + + + + + + PivotCache Id + + + + + Relationship Id + + + + + + + Read Only Recommended + + + + + User Name + + + + + Write Reservation Password + + + + + + + Reference + + + + + + + Workbook Password + + + + + Revisions Password + + + + + Lock Structure + + + + + Lock Windows + + + + + Lock Revisions + + + + + + + Use CSS + + + + + Thicket + + + + + Enable Long File Names + + + + + VML in Browsers + + + + + Allow PNG + + + + + Target Screen Size + + + + + DPI + + + + + Code Page + + + + + + Target Screen Size Types + + + + + 544 x 376 Resolution + + + + + 640 x 480 Resolution + + + + + 720 x 512 Resolution + + + + + 800 x 600 Resolution + + + + + 1024 x 768 Resolution + + + + + 1152 x 882 Resolution + + + + + 1152 x 900 Resolution + + + + + 1280 x 1024 Resolution + + + + + 1600 x 1200 Resolution + + + + + 1800 x 1440 Resolution + + + + + 1920 x 1200 Resolution + + + + + + + + + Function Group + + + + + + Built-in Function Group Count + + + + + + + Name + + + + + + + + Web Publishing Object + + + + + + Count + + + + + + + Id + + + + + Div Id + + + + + Source Object + + + + + Destination File + + + + + Title + + + + + Auto Republish + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/vml-main.xsd b/tests/resources/schema/ecma-376/vml-main.xsd new file mode 100644 index 0000000000..784aee8f34 --- /dev/null +++ b/tests/resources/schema/ecma-376/vml-main.xsd @@ -0,0 +1,1733 @@ + + + + + + + + + + + + Unique Identifier + + + + + + + Shape Styling Properties + + + + + + + Shape Type Reference + + + + + + + Adjustment Parameters + + + + + + + Edge Path + + + + + + + Shape Fill Toggle + + + + + Fill Color + + + + + + + Image Transparency Color + + + + + + + VML Extension Handling Behavior + + + + + + + + + Hyperlink Target + + + + + Hyperlink Display Target + + + + + CSS Reference + + + + + Shape Title + + + + + Alternate Text + + + + + Coordinate Space Size + + + + + Coordinate Space Origin + + + + + Shape Bounding Polygon + + + + + Print Toggle + + + + + + + + + Fill Color Opacity + + + + + Shape Stroke Toggle + + + + + Shape Stroke Color + + + + + Shape Stroke Weight + + + + + Inset Border From Path + + + + + + + Optional String + + + + + Shape Handle Toggle + + + + + Regroup ID + + + + + Double-click Notification Toggle + + + + + Button Behavior Toggle + + + + + Hide Script Anchors + + + + + Graphical Bullet + + + + + Horizontal Rule Toggle + + + + + Horizontal Rule Standard Display Toggle + + + + + Horizontal Rule 3D Shading Toggle + + + + + Horizontal Rule Length Percentage + + + + + Horizontal Rule Alignment + + + + + Allow in Table Cell + + + + + Allow Shape Overlap + + + + + Exists In Master Slide + + + + + Border Top Color + + + + + Border Left Color + + + + + Bottom Border Color + + + + + Border Right Color + + + + + Diagram Node Layout Identifier + + + + + Diagram Node Identifier + + + + + Diagram Node Recent Layout Identifier + + + + + Text Inset Mode + + + + + + + Optional Number + + + + + Shape Connector Type + + + + + Black-and-White Mode + + + + + Pure Black-and-White Mode + + + + + Normal Black-and-White Mode + + + + + Force Dashed Outline + + + + + Embedded Object Icon Toggle + + + + + Embedded Object Toggle + + + + + Relative Resize Toggle + + + + + Clip to Wrapping Polygon + + + + + Clipping Toggle + + + + + + + + + + + + + + + Image Source + + + + + Image Left Crop + + + + + Image Top Crop + + + + + Image Right Crop + + + + + Image Bottom Crop + + + + + Image Intensity + + + + + Image Brightness + + + + + Image Gamma Correction + + + + + Image Grayscale Toggle + + + + + Image Bilevel Toggle + + + + + + + Stroke Toggle + + + + + Stroke Weight + + + + + Stroke Color + + + + + Stroke Opacity + + + + + Stroke Line Style + + + + + Miter Joint Limit + + + + + Line End Join Style + + + + + Line End Cap + + + + + Stroke Dash Pattern + + + + + Stroke Image Style + + + + + Stroke Image Location + + + + + Stroke Image Aspect Ratio + + + + + Stroke Image Size + + + + + Stoke Image Alignment + + + + + Stroke Alternate Pattern Color + + + + + Line Start Arrowhead + + + + + Line Start Arrowhead Width + + + + + Line Start Arrowhead Length + + + + + Line End Arrowhead + + + + + Line End Arrowhead Width + + + + + Line End Arrowhead Length + + + + + Original Image Reference + + + + + Alternate Image Reference + + + + + Stroke Title + + + + + Force Dashed Outline + + + + + Relationship + + + + + Inset Border From Path + + + + + Relationship to Part + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shape Definition + + + + + Shape Template + + + + + Shape Group + + + + + Document Background + + + + + + + + + + + + + + + + Encoded Package + + + + + Storage for Alternate Math Content + + + + + + + + + + + + + + + Master Element Toggle + + + + + + + + + + + + + + + + + + + + + + + + Group Diagram Type + + + + + Table Properties + + + + + Table Row Height Limits + + + + + + + + + + + + Black-and-White Mode + + + + + Pure Black-and-White Mode + + + + + Normal Black-and-White Mode + + + + + Target Screen Size + + + + + + Shape Fill Properties + + + + + Set of Formulas + + + + + Set of Handles + + + + + Image Data + + + + + Shape Path + + + + + Text Box + + + + + Shadow Effect + + + + + Line Stroke Settings + + + + + Text Layout Path + + + + + + + + + + Fill Type + + + + + Fill Toggle + + + + + Primary Color + + + + + Primary Color Opacity + + + + + Secondary Color + + + + + Fill Image Source + + + + + Hyperlink Target + + + + + Alternate Image Reference Location + + + + + Fill Image Size + + + + + Fill Image Origin + + + + + Fill Image Position + + + + + Image Aspect Ratio + + + + + Intermediate Colors + + + + + Gradient Angle + + + + + Align Image With Shape + + + + + Gradient Center + + + + + Radial Gradient Size + + + + + Radial Gradient Center + + + + + Gradient Fill Method + + + + + Detect Mouse Click + + + + + Title + + + + + Secondary Color Opacity + + + + + Recolor Fill as Picture + + + + + Rotate Fill with Shape + + + + + Relationship to Part + + + + + Relationship to Part + + + + + + + + Single Formula + + + + + + + + Equation + + + + + + + + Shape Handle + + + + + + + + Handle Position + + + + + Handle Polar Center + + + + + Handle Coordinate Mapping + + + + + Invert Handle's X Position + + + + + Invert Handle's Y Position + + + + + Handle Inversion Toggle + + + + + Handle X Position Range + + + + + Handle Y Position Range + + + + + Handle Polar Radius Range + + + + + + + + + + Embossed Color + + + + + Black Recoloring Color + + + + + Original Image Reference + + + + + Alternate Image Reference + + + + + Image Data Title + + + + + Image Embedded Object ID + + + + + Detect Mouse Click + + + + + Movie Reference + + + + + Relationship to Part + + + + + Explicit Relationship to Image Data + + + + + Explicit Relationship to Alternate Image Data + + + + + Explicit Relationship to Hyperlink Target + + + + + + + + Path Definition + + + + + Limo Stretch Point + + + + + Text Box Bounding Box + + + + + Shape Fill Toggle + + + + + Stroke Toggle + + + + + Shadow Toggle + + + + + Arrowhead Display Toggle + + + + + Gradient Shape Toggle + + + + + Text Path Toggle + + + + + Inset Stroke From Path Flag + + + + + Connection Point Type + + + + + Connection Points + + + + + Connection Point Connect Angles + + + + + Extrusion Toggle + + + + + + + + Shadow Toggle + + + + + Shadow Type + + + + + Shadow Transparency + + + + + Shadow Primary Color + + + + + Shadow Opacity + + + + + Shadow Primary Offset + + + + + Shadow Secondary Color + + + + + Shadow Secondary Offset + + + + + Shadow Origin + + + + + Shadow Perspective Matrix + + + + + + + + + + + + + + + + + + + + + + + + Text Box Inset + + + + + Text Box Single-Click Selection Toggle + + + + + Text Inset Mode + + + + + + + + + Text Path Toggle + + + + + Shape Fit Toggle + + + + + Path Fit Toggle + + + + + Text Path Trim Toggle + + + + + Text X-Scaling + + + + + Text Path Text + + + + + + Arc Segment + + + + + Bezier Curve + + + + + Image File + + + + + Line + + + + + Oval + + + + + Multiple Path Line + + + + + Rectangle + + + + + Rounded Rectangle + + + + + + + + + + + Starting Angle + + + + + Ending Angle + + + + + + + + + + + + Curve Starting Point + + + + + First Curve Control Point + + + + + Second Curve Control Point + + + + + Curve Ending Point + + + + + + + + + + + + + + + + + + + + Line Start + + + + + Line End Point + + + + + + + + + + + + + + + + + + + + Points for Compound Line + + + + + + + + + + + + + + + + + + + Rounded Corner Arc Size + + + + + + VML Extension Handling Behaviors + + + + + Not renderable + + + + + Editable + + + + + Renderable + + + + + + + Boolean Value + + + + + True + + + + + False + + + + + True + + + + + False + + + + + + + Color Type + + + + + + Shape Fill Type + + + + + Solid Fill + + + + + Linear Gradient + + + + + Radial Gradient + + + + + Tiled Image + + + + + Image Pattern + + + + + Stretch Image to Fit + + + + + + + Gradient Fill Computation Type + + + + + No Gradient Fill + + + + + Linear Fill + + + + + Sigma Fill + + + + + Application Default Fill + + + + + Linear Sigma Fill + + + + + + + Shadow Type + + + + + Single Shadow + + + + + Double Shadow + + + + + Embossed Shadow + + + + + Perspective Shadow + + + + + + + Stroke Line Style + + + + + Single Line + + + + + Two Thin Lines + + + + + Thin Line Outside Thick Line + + + + + Thick Line Outside Thin Line + + + + + Thck Line Between Thin Lines + + + + + + + Line Join Type + + + + + Round Joint + + + + + Bevel Joint + + + + + Miter Joint + + + + + + + Stroke End Cap Type + + + + + Flat End + + + + + Square End + + + + + Round End + + + + + + + Stroke Arrowhead Length + + + + + Short Arrowhead + + + + + Medium Arrowhead + + + + + Long Arrowhead + + + + + + + Stroke Arrowhead Width + + + + + Narrow Arrowhead + + + + + Medium Arrowhead + + + + + Wide Arrowhead + + + + + + + Stroke Arrowhead Type + + + + + No Arrowhead + + + + + Block Arrowhead + + + + + Classic Arrowhead + + + + + Oval Arrowhead + + + + + Diamond Arrowhead + + + + + Open Arrowhead + + + + + + + Image Scaling Behavior + + + + + Ignore Aspect Ratio + + + + + At Most + + + + + At Least + + + + + + + Boolean Value with Blank [False] State + + + + + Logical True + + + + + Logical False + + + + + Logical True + + + + + Logical False + + + + + Blank – Logical False + + + + + + + Shape Grouping Types + + + + + Shape Canvas + + + + + Organization Chart Diagram + + + + + Radial Diagram + + + + + Cycle Diagram + + + + + Pyramid Diagram + + + + + Venn Diagram + + + + + Bullseye Diagram + + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/vml-officeDrawing.xsd b/tests/resources/schema/ecma-376/vml-officeDrawing.xsd new file mode 100644 index 0000000000..fd2f2ce389 --- /dev/null +++ b/tests/resources/schema/ecma-376/vml-officeDrawing.xsd @@ -0,0 +1,1642 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + New Shape Defaults + + + + + Shape Layout Properties + + + + + Digital Signature Line + + + + + Ink + + + + + VML Diagram + + + + + + + + + + + + + Callout + + + + + Shape Protections + + + + + Most Recently Used Colors + + + + + UI Default Colors + + + + + + + Shape ID Optional Storage + + + + + Shape Styling Properties + + + + + Shape Fill Toggle + + + + + Default Fill Color + + + + + Shape Stroke Toggle + + + + + Shape Stroke Color + + + + + Allow in Table Cell + + + + + + + + Ink Data + + + + + Annotation Flag + + + + + + + + Signature Line Flag + + + + + Unique ID + + + + + Signature Provider ID + + + + + Use Signing Instructions Flag + + + + + User-specified Comments Flag + + + + + Show Signed Date Flag + + + + + Suggested Signer Line 1 + + + + + Suggested Signer Line 2 + + + + + Suggested Signer E-mail Address + + + + + Instructions for Signing + + + + + Additional Signature Information + + + + + Signature Provider Download URL + + + + + + + + Shape ID Map + + + + + Shape Grouping History + + + + + Rule Set + + + + + + + + + + Shape IDs + + + + + + + + Regroup Entry + + + + + + + + + New Group ID + + + + + Old Group ID + + + + + + + + Rule + + + + + + + + + + Shape Reference + + + + + + Rule ID + + + + + Rule Type + + + + + Alignment Rule Type + + + + + Rule Shape Reference + + + + + + + Start Point Connection Flag + + + + + End Point Connection Flag + + + + + Proxy Shape Reference + + + + + Connection Location + + + + + + + + Diagram Relationship Table + + + + + + + Diagram Style Options + + + + + Diagram Automatic Format + + + + + Diagram Reverse Direction + + + + + Diagram Automatic Layout + + + + + Diagram Layout X Scale + + + + + Diagram Layout Y Scale + + + + + Diagram Font Size + + + + + Diagram Layout Extents + + + + + Diagram Base Font Size + + + + + + + + Diagram Relationship + + + + + + + + + + Diagram Relationship Source Shape + + + + + Diagram Relationship Destination Shape + + + + + Diagram Relationship Center Shape + + + + + + + + Recent colors + + + + + + + + Default stroke color + + + + + Default fill color + + + + + Default shadow color + + + + + Default extrusion color + + + + + + Skew Transform + + + + + 3D Extrusion + + + + + + + Embedded OLE Object + + + + + Complex + + + + + Text Box Left Stroke + + + + + Text Box Top Stroke + + + + + Text Box Right Stroke + + + + + Text Box Bottom Stroke + + + + + Text Box Interior Stroke + + + + + Shape Clipping Path + + + + + Shape Fill Extended Properties + + + + + + + Skew ID + + + + + Skew Toggle + + + + + Skew Offset + + + + + Skew Origin + + + + + Skew Perspective Matrix + + + + + + + + Extrusion Toggle + + + + + Extrusion Type + + + + + Extrusion Render Mode + + + + + Extrusion Viewpoint Origin + + + + + Extrusion Viewpoint + + + + + Extrusion Direction + + + + + Extrusion Skew Angle + + + + + Extrusion Skew + + + + + Forward Extrusion + + + + + Backward Extrusion Depth + + + + + Rotation Axis + + + + + Rotation Around Axis + + + + + Rotation Toggle + + + + + Center of Rotation Toggle + + + + + Rotation Center + + + + + X-Y Rotation Angle + + + + + Extrusion Color Mode + + + + + Extrusion Color + + + + + Shininess + + + + + Specularity + + + + + Diffuse Reflection + + + + + Metallic Surface Toggle + + + + + Simulated Bevel + + + + + Faceting Quality + + + + + Shape Face Lighting Toggle + + + + + Brightness + + + + + Primary Light Position + + + + + Primary Light Intensity + + + + + Primary Light Harshness Toggle + + + + + Secondary Light Position + + + + + Secondary Light Intensity + + + + + Secondary Light Harshness Toggle + + + + + + + + Callout toggle + + + + + Callout type + + + + + Callout gap + + + + + Callout angle + + + + + Callout automatic drop toggle + + + + + Callout drop position + + + + + Callout drop distance + + + + + Callout length toggle + + + + + Callout length + + + + + Callout accent bar toggle + + + + + Callout text border toggle + + + + + Callout flip x + + + + + Callout flip y + + + + + + + + Position Lock + + + + + Selection Lock + + + + + Grouping Lock + + + + + Ungrouping Lock + + + + + Rotation Lock + + + + + Cropping Lock + + + + + Vertices Lock + + + + + Handles Lock + + + + + Text Lock + + + + + Aspect Ratio Lock + + + + + AutoShape Type Lock + + + + + + + + Embedded Object Alternate Image Request + + + + + Embedded Object Cannot Be Refreshed + + + + + WordprocessingML Field Switches + + + + + + OLE Object Type + + + + + OLE Object Application + + + + + OLE Object Shape + + + + + OLE Object Representation + + + + + OLE Object Unique ID + + + + + Relationship + + + + + OLE Update Mode + + + + + + + + + + + Stroke Toggle + + + + + Stroke Weight + + + + + Stroke Color + + + + + Stroke Alternate Pattern Color + + + + + Stroke Opacity + + + + + Stroke Line Style + + + + + Miter Joint Limit + + + + + Line End Join Style) + + + + + Line End Cap + + + + + Stroke Dash Pattern + + + + + Inset Border From Path + + + + + Stroke Image Style + + + + + Stroke Image Location + + + + + Stroke Image Aspect Ratio + + + + + Stroke Image Size + + + + + Stoke Image Alignment + + + + + Line Start Arrowhead + + + + + Line Start Arrowhead Width + + + + + Line Start Arrowhead Length + + + + + Line End Arrowhead + + + + + Line End Arrowhead Width + + + + + Line End Arrowhead Length + + + + + Original Image Reference + + + + + Alternate Image Reference + + + + + Stroke Title + + + + + Force Dashed Outline + + + + + + + Path Definition + + + + + + + + Fill Type + + + + + + Rule Type + + + + + Arc Rule + + + + + Callout Rule + + + + + Connector Rule + + + + + Alignment Rule + + + + + + + Alignment Type + + + + + Top Alignment + + + + + Middle Alignment + + + + + Bottom Alignment + + + + + Left Alignment + + + + + Center Alignment + + + + + Right Alignment + + + + + + + Black And White Modes + + + + + Color + + + + + Automatic + + + + + Grayscale + + + + + Light grayscale + + + + + Inverse Grayscale + + + + + Gray Outlines + + + + + Black And White + + + + + Black + + + + + White + + + + + Hide Object When Displayed in Black and White + + + + + Do Not Show + + + + + Black Text And Lines + + + + + + + Screen Sizes Type + + + + + 544x376 pixels + + + + + 640x480 pixels + + + + + 720x512 pixels + + + + + 800x600 pixels + + + + + 1024x768 pixels + + + + + 1152x862 pixels + + + + + + + Inset Margin Type + + + + + Automatic Margins + + + + + Custom Margins + + + + + + + Extrusion Color Types + + + + + Use Shape Fill Color + + + + + Use Custom Color + + + + + + + Color Type + + + + + + Extrusion Type + + + + + Perspective Projection + + + + + Parallel Projection + + + + + + + Extrusion Rendering Types + + + + + Solid + + + + + Wireframe + + + + + Bounding Cube + + + + + + + Extrusion Planes + + + + + XY Plane + + + + + ZX Plane + + + + + YZ Plane + + + + + + + Callout Angles + + + + + Any Angle + + + + + 30 degrees + + + + + 45 degrees + + + + + 60 degrees + + + + + 90 degrees + + + + + Automatic Angle + + + + + + + Callout Drop Location + + + + + + Callout Placement + + + + + Top placement + + + + + Center placement + + + + + Bottom placement + + + + + User-defined placement + + + + + + + Connector Type + + + + + No Connector + + + + + Straight Connector + + + + + Elbow Connector + + + + + Curved Connector + + + + + + + Alignment Type + + + + + Left Alignment + + + + + Right Alignment + + + + + Center Alignment + + + + + + + Connection Locations Type + + + + + No + + + + + Four Connections + + + + + Edit Point Connections + + + + + Custom Connections + + + + + + + Embedded Object Alternate Image Request Types + + + + + Other Image + + + + + Bitmap Image + + + + + Enhanced Metafile Image + + + + + + + OLE Connection Type + + + + + Embedded Object + + + + + Linked Object + + + + + + + OLE Object Representations + + + + + Snapshot + + + + + Icon + + + + + + + OLE Update Method Type + + + + + Server Application Update + + + + + User Update + + + + + + + 128-Bit GUID + + + + + + + + Explicit Relationship ID + + + + + + Boolean Value + + + + + True + + + + + False + + + + + True + + + + + False + + + + + + + Boolean Value with Blank [False] State + + + + + Blank – Logical False + + + + + Logical True + + + + + Logical False + + + + + Logical True + + + + + Logical False + + + + + + + Shape Fill Type + + + + + Centered Radial Gradient + + + + + Solid Fill + + + + + Image Pattern + + + + + Tiled Image + + + + + Stretch Image to Fit + + + + + Unscaled Gradient + + + + + Radial Gradient + + + + + Linear Gradient + + + + + Use Background Fill + + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/vml-presentationDrawing.xsd b/tests/resources/schema/ecma-376/vml-presentationDrawing.xsd new file mode 100644 index 0000000000..e431af9d47 --- /dev/null +++ b/tests/resources/schema/ecma-376/vml-presentationDrawing.xsd @@ -0,0 +1,21 @@ + + + + + Ink Annotation Flag + + + + + VML Diagram Text + + + + + + + Text Reference + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/vml-spreadsheetDrawing.xsd b/tests/resources/schema/ecma-376/vml-spreadsheetDrawing.xsd new file mode 100644 index 0000000000..3f04438b52 --- /dev/null +++ b/tests/resources/schema/ecma-376/vml-spreadsheetDrawing.xsd @@ -0,0 +1,518 @@ + + + + + Attached Object Data + + + + + + + Move with Cells + + + + + Resize with Cells + + + + + Anchor + + + + + Lock Toggle + + + + + Default Size Toggle + + + + + Print Toggle + + + + + Macro Disable Toggle + + + + + AutoFill + + + + + AutoLine + + + + + Automatically Size + + + + + Reference to Custom Function + + + + + Horizontal Text Alignment + + + + + Vertical Text Alignment + + + + + Text Lock + + + + + Far East Alignment Toggle + + + + + Password Edit + + + + + Default Button + + + + + Help Button + + + + + Cancel Button + + + + + Dismiss Button + + + + + Primary Keyboard Accelerator + + + + + Secondary Keyboard Accelerator + + + + + Comment Row Target + + + + + Comment Column Target + + + + + Comment Visibility Toggle + + + + + Comment's Row is Hidden + + + + + Comment's Column is Hidden + + + + + Validation Type + + + + + Multi-line + + + + + Vertical Scroll + + + + + Valid ID + + + + + List Items Source Range + + + + + Minimum Width + + + + + Selected Entry + + + + + Disable 3D + + + + + Selection Type + + + + + Multiple Selections + + + + + Callback Type + + + + + Non-linked List Item + + + + + Dropdown Style + + + + + Dropdown Color Toggle + + + + + Dropdown Maximum Lines + + + + + Checked + + + + + Linked Formula + + + + + Camera Source Range + + + + + Disable 3D + + + + + First Radio Button + + + + + Linked Formula - Group Box + + + + + Scroll bar position + + + + + Scroll Bar Minimum + + + + + Scroll Bar Maximum + + + + + Scroll Bar Increment + + + + + Scroll Bar Page Increment + + + + + Scroll Bar Orientation + + + + + Scroll Bar Width + + + + + ActiveX Control + + + + + Clipboard Format + + + + + Camera Tool + + + + + Recalculation Toggle + + + + + Font AutoScale + + + + + Dynamic Data Exchange + + + + + UI Object Toggle + + + + + HTML Script Text + + + + + HTML Script Attributes + + + + + HTML Script Language + + + + + HTML Script Location + + + + + Text Formula + + + + + + Object type + + + + + + Clipboard Format Type + + + + + WMF + + + + + EMF + + + + + Bitmap + + + + + Printer Picture + + + + + Screen Picture EMF + + + + + + + Object Type + + + + + Pushbutton + + + + + Checkbox + + + + + Dialog + + + + + Dropdown Box + + + + + Editable Text Field + + + + + Group Box + + + + + Label + + + + + Auditing Line + + + + + List Box + + + + + Movie + + + + + Comment + + + + + Image + + + + + Radio Button + + + + + Auditing Rectangle + + + + + Scroll Bar + + + + + Spin Button + + + + + Plain Shape + + + + + Group + + + + + Plain Rectangle + + + + + + + Boolean Value with Blank State + + + + + Logical True + + + + + Logical True + + + + + Logical False + + + + + Logical False + + + + + Blank - Default Value + + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/vml-wordprocessingDrawing.xsd b/tests/resources/schema/ecma-376/vml-wordprocessingDrawing.xsd new file mode 100644 index 0000000000..8b2d266abb --- /dev/null +++ b/tests/resources/schema/ecma-376/vml-wordprocessingDrawing.xsd @@ -0,0 +1,355 @@ + + + + + Top Border + + + + + Left Border + + + + + Right Border + + + + + Bottom Border + + + + + + Border Style + + + + + Border Width + + + + + Border shadow + + + + + + Text Wrapping + + + + + + Wrapping type + + + + + Wrapping side + + + + + Horizontal Positioning Base + + + + + Vertical Positioning Base + + + + + + Anchor Location Is Locked + + + + + + Border Type + + + + + No Border + + + + + Single Line Border + + + + + Thick Line Border + + + + + Double Line Border + + + + + Hairline Border + + + + + Dotted Border + + + + + pecifies a line border consisting of a dashed line around the parent object. + + + + + Dot Dash Border + + + + + Dash Dot Dot Border + + + + + Triple Line Border + + + + + Thin Thick Small Gap Border + + + + + Small thick-thin lines border + + + + + Small thin-thick-thin Lines Border + + + + + Thin Thick Line Border + + + + + Thick Thin Line Border + + + + + Thin-thick-thin Border + + + + + Thin Thick Large Gap Border + + + + + Thick Thin Large Gap Border + + + + + Large thin-thick-thin Border + + + + + Wavy Border + + + + + Double Wavy Lines Border + + + + + Small Dash Border + + + + + Stroked Dash Dot Border + + + + + 3D Embossed Border + + + + + 3D Engraved Border + + + + + Outset Border + + + + + Inset Border + + + + + + + Border Shadow Type + + + + + True + + + + + True + + + + + False + + + + + False + + + + + + + Text Wrapping Type + + + + + Top and bottom wrapping + + + + + Square wrapping + + + + + No wrapping + + + + + Tight wrapping + + + + + Through wrapping + + + + + + + Text Wrapping Side + + + + + Both sides + + + + + Left side + + + + + Right side + + + + + Largest side + + + + + + + Horizontal Anchor Type + + + + + Margin + + + + + Page + + + + + Text + + + + + Character + + + + + + + Vertical Anchor Type + + + + + Margin + + + + + Page + + + + + Text + + + + + Line + + + + + \ No newline at end of file diff --git a/tests/resources/schema/ecma-376/wml.xsd b/tests/resources/schema/ecma-376/wml.xsd new file mode 100644 index 0000000000..737611f732 --- /dev/null +++ b/tests/resources/schema/ecma-376/wml.xsd @@ -0,0 +1,11334 @@ + + + + + + + + + + + On/Off Value + + + + + True + + + + + False + + + + + True + + + + + False + + + + + False + + + + + True + + + + + + + + On/Off Value + + + + + + Four Digit Hexadecimal Number Value + + + + + + + + + Long Hexadecimal Number Value + + + + + + Two Digit Hexadecimal Number Value + + + + + + + + + Two Digit Hexadecimal Value + + + + + + Two Digit Hexadecimal Number Value + + + + + + + + + Value + + + + + + Decimal Number Value + + + + + + + Decimal Number Value + + + + + + Unsigned Decimal Number Value + + + + + + Measurement in Twentieths of a Point + + + + + + + Measurement in Twentieths of a Point + + + + + + Signed Measurement in Twentieths of a Point + + + + + + + Positive or Negative Value in Twentieths of a Point + + + + + + Measurement in Pixels + + + + + + + Measurement in Pixels + + + + + + Measurement in Half-Points + + + + + + + Half Point Measurement + + + + + + Signed Measurement in Half-Points + + + + + + + Signed Half-Point Measurement + + + + + + Standard Date and Time Storage Format + + + + + + Script Subroutine Name Value + + + + + + + + + Name of Script Function + + + + + + Measurement in Eighths of a Point + + + + + + Measurement in Points + + + + + + String + + + + + + + String Value + + + + + + Text Expansion/Compression Percentage + + + + + + + + + + Text Expansion/Compression Value + + + + + + Text Highlight Colors + + + + + Black Highlighting Color + + + + + Blue Highlighting Color + + + + + Cyan Highlighting Color + + + + + Green Highlighting Color + + + + + Magenta Highlighting Color + + + + + Red Highlighting Color + + + + + Yellow Highlighting Color + + + + + White Highlighting Color + + + + + Dark Blue Highlighting Color + + + + + Dark Cyan Highlighting Color + + + + + Dark Green Highlighting Color + + + + + Dark Magenta Highlighting Color + + + + + Dark Red Highlighting Color + + + + + Dark Yellow Highlighting Color + + + + + Dark Gray Highlighting Color + + + + + Light Gray Highlighting Color + + + + + No Text Highlighting + + + + + + + + Highlighting Color + + + + + + ‘Automatic’ Color Value + + + + + Automatically Determined Color + + + + + + + Hexadecimal Color Value + + + + + + + + Color Value + + + + + + + Run Content Color + + + + + Run Content Theme Color + + + + + Run Content Theme Color Tint + + + + + Run Content Theme Color Shade + + + + + + Two Digit Hexadecimal Language Code + + + + + + + + Language Reference + + + + + + + Language Code + + + + + + 128-Bit GUID + + + + + + + + + GUID Value + + + + + + Underline Patterns + + + + + Single Underline + + + + + Underline Non-Space Characters Only + + + + + Double Underline + + + + + Thick Underline + + + + + Dotted Underline + + + + + Thick Dotted Underline + + + + + Dashed Underline + + + + + Thick Dashed Underline + + + + + Long Dashed Underline + + + + + Thick Long Dashed Underline + + + + + Dash-Dot Underline + + + + + Thick Dash-Dot Underline + + + + + Dash-Dot-Dot Underline + + + + + Thick Dash-Dot-Dot Underline + + + + + Wave Underline + + + + + Heavy Wave Underline + + + + + Double Wave Underline + + + + + No Underline + + + + + + + + Underline Style + + + + + Underline Color + + + + + Underline Theme Color + + + + + Underline Theme Color Tint + + + + + Underline Theme Color Shade + + + + + + Animated Text Effects + + + + + Blinking Background Animation + + + + + Colored Lights Animation + + + + + Black Dashed Line Animation + + + + + Marching Red Ants + + + + + Shimmer Animation + + + + + Sparkling Lights Animation + + + + + No Animation + + + + + + + + Animated Text Effect Type + + + + + + Border Styles + + + + + No Border + + + + + No Border + + + + + Single Line Border + + + + + Single Line Border + + + + + Double Line Border + + + + + Dotted Line Border + + + + + Dashed Line Border + + + + + Dot Dash Line Border + + + + + Dot Dot Dash Line Border + + + + + Triple Line Border + + + + + Thin, Thick Line Border + + + + + Thick, Thin Line Border + + + + + Thin, Thick, Thin Line Border + + + + + Thin, Thick Line Border + + + + + Thick, Thin Line Border + + + + + Thin, Thick, Thin Line Border + + + + + Thin, Thick Line Border + + + + + Thick, Thin Line Border + + + + + Thin, Thick, Thin Line Border + + + + + Wavy Line Border + + + + + Double Wave Line Border + + + + + Dashed Line Border + + + + + Dash Dot Strokes Line Border + + + + + 3D Embossed Line Border + + + + + 3D Engraved Line Border + + + + + Outset Line Border + + + + + Inset Line Border + + + + + Apples Art Border + + + + + Arched Scallops Art Border + + + + + Baby Pacifier Art Border + + + + + Baby Rattle Art Border + + + + + Three Color Balloons Art Border + + + + + Hot Air Balloons Art Border + + + + + Black Dash Art Border + + + + + Black Dot Art Border + + + + + Black Square Art Border + + + + + Thin Line Art Border + + + + + White Dash Art Border + + + + + White Dot Art Border + + + + + White Square Art Border + + + + + Wide Inline Art Border + + + + + Wide Midline Art Border + + + + + Wide Outline Art Border + + + + + Bats Art Border + + + + + Birds Art Border + + + + + Birds Flying Art Border + + + + + Cabin Art Border + + + + + Cake Art Border + + + + + Candy Corn Art Border + + + + + Knot Work Art Border + + + + + Certificate Banner Art Border + + + + + Chain Link Art Border + + + + + Champagne Bottle Art Border + + + + + Black and White Bar Art Border + + + + + Color Checked Bar Art Border + + + + + Checkerboard Art Border + + + + + Christmas Tree Art Border + + + + + Circles And Lines Art Border + + + + + Circles and Rectangles Art Border + + + + + Wave Art Border + + + + + Clocks Art Border + + + + + Compass Art Border + + + + + Confetti Art Border + + + + + Confetti Art Border + + + + + Confetti Art Border + + + + + Confetti Streamers Art Border + + + + + Confetti Art Border + + + + + Corner Triangle Art Border + + + + + Dashed Line Art Border + + + + + Dotted Line Art Border + + + + + Maze Art Border + + + + + Butterfly Art Border + + + + + Fish Art Border + + + + + Insects Art Border + + + + + Ladybug Art Border + + + + + Cross-stitch Art Border + + + + + Cupid Art Border + + + + + Archway Art Border + + + + + Color Archway Art Border + + + + + Blocks Art Border + + + + + Gray Diamond Art Border + + + + + Double D Art Border + + + + + Diamond Art Border + + + + + Earth Art Border + + + + + Earth Art Border + + + + + Shadowed Square Art Border + + + + + Shadowed Square Art Border + + + + + Painted Egg Art Border + + + + + Fans Art Border + + + + + Film Reel Art Border + + + + + Firecracker Art Border + + + + + Flowers Art Border + + + + + Daisy Art Border + + + + + Flowers Art Border + + + + + Flowers Art Border + + + + + Pansy Art Border + + + + + Red Rose Art Border + + + + + Roses Art Border + + + + + Flowers in a Teacup Art Border + + + + + Small Flower Art Border + + + + + Gems Art Border + + + + + Gingerbread Man Art Border + + + + + Triangle Gradient Art Border + + + + + Handmade Art Border + + + + + Handmade Art Border + + + + + Heart-Shaped Balloon Art Border + + + + + Gray Heart Art Border + + + + + Hearts Art Border + + + + + Pattern Art Border + + + + + Holly Art Border + + + + + House Art Border + + + + + Circular Art Border + + + + + Ice Cream Cone Art Border + + + + + Light Bulb Art Border + + + + + Lightning Art Border + + + + + Lightning Art Border + + + + + Map Pins Art Border + + + + + Maple Leaf Art Border + + + + + Muffin Art Border + + + + + Marquee Art Border + + + + + Marquee Art Border + + + + + Moon Art Border + + + + + Mosaic Art Border + + + + + Musical Note Art Border + + + + + Patterned Art Border + + + + + Oval Art Border + + + + + Package Art Border + + + + + Black Palm Tree Art Border + + + + + Color Palm Tree Art Border + + + + + Paper Clip Art Border + + + + + Papyrus Art Border + + + + + Party Favor Art Border + + + + + Party Glass Art Border + + + + + Pencils Art Border + + + + + Character Art Border + + + + + Waving Character Border + + + + + Character With Hat Art Border + + + + + Poinsettia Art Border + + + + + Postage Stamp Art Border + + + + + Pumpkin Art Border + + + + + Push Pin Art Border + + + + + Push Pin Art Border + + + + + Pyramid Art Border + + + + + Pyramid Art Border + + + + + Quadrants Art Border + + + + + Rings Art Border + + + + + Safari Art Border + + + + + Saw tooth Art Border + + + + + Gray Saw tooth Art Border + + + + + Scared Cat Art Border + + + + + Umbrella Art Border + + + + + Shadowed Squares Art Border + + + + + Shark Tooth Art Border + + + + + Bird Tracks Art Border + + + + + Rocket Art Border + + + + + Snowflake Art Border + + + + + Snowflake Art Border + + + + + Sombrero Art Border + + + + + Southwest-themed Art Border + + + + + Stars Art Border + + + + + Stars On Top Art Border + + + + + 3-D Stars Art Border + + + + + Stars Art Border + + + + + Stars With Shadows Art Border + + + + + Sun Art Border + + + + + Whirligig Art Border + + + + + Torn Paper Art Border + + + + + Black Torn Paper Art Border + + + + + Tree Art Border + + + + + Triangle Art Border + + + + + Triangles Art Border + + + + + Tribal Art Border One + + + + + Tribal Art Border Two + + + + + Tribal Art Border Three + + + + + Tribal Art Border Four + + + + + Tribal Art Border Five + + + + + Tribal Art Border Six + + + + + Twisted Lines Art Border + + + + + Twisted Lines Art Border + + + + + Vine Art Border + + + + + Wavy Line Art Border + + + + + Weaving Angles Art Border + + + + + Weaving Braid Art Border + + + + + Weaving Ribbon Art Border + + + + + Weaving Strips Art Border + + + + + White Flowers Art Border + + + + + Woodwork Art Border + + + + + Crisscross Art Border + + + + + Triangle Art Border + + + + + Zigzag Art Border + + + + + Zigzag stitch + + + + + + + + Border Style + + + + + Border Color + + + + + Border Theme Color + + + + + Border Theme Color Tint + + + + + Border Theme Color Shade + + + + + Border Width + + + + + Border Spacing Measurement + + + + + Border Shadow + + + + + Create Frame Effect + + + + + + Shading Patterns + + + + + No Pattern + + + + + No Pattern + + + + + 100% Fill Pattern + + + + + Horizontal Stripe Pattern + + + + + Vertical Stripe Pattern + + + + + Reverse Diagonal Stripe Pattern + + + + + Diagonal Stripe Pattern + + + + + Horizontal Cross Pattern + + + + + Diagonal Cross Pattern + + + + + Thin Horizontal Stripe Pattern + + + + + Thin Vertical Stripe Pattern + + + + + Thin Reverse Diagonal Stripe Pattern + + + + + Thin Diagonal Stripe Pattern + + + + + Thin Horizontal Cross Pattern + + + + + Thin Diagonal Cross Pattern + + + + + 5% Fill Pattern + + + + + 10% Fill Pattern + + + + + 12.5% Fill Pattern + + + + + 15% Fill Pattern + + + + + 20% Fill Pattern + + + + + 25% Fill Pattern + + + + + 30% Fill Pattern + + + + + 35% Fill Pattern + + + + + 37.5% Fill Pattern + + + + + 40% Fill Pattern + + + + + 45% Fill Pattern + + + + + 50% Fill Pattern + + + + + 55% Fill Pattern + + + + + 60% Fill Pattern + + + + + 62.5% Fill Pattern + + + + + 65% Fill Pattern + + + + + 70% Fill Pattern + + + + + 75% Fill Pattern + + + + + 80% Fill Pattern + + + + + 85% Fill Pattern + + + + + 87.5% Fill Pattern + + + + + 90% Fill Pattern + + + + + 95% Fill Pattern + + + + + + + + Shading Pattern + + + + + Shading Pattern Color + + + + + Shading Pattern Theme Color + + + + + Shading Pattern Theme Color Tint + + + + + Shading Pattern Theme Color Shade + + + + + Shading Background Color + + + + + Shading Background Theme Color + + + + + Shading Background Theme Color Tint + + + + + Shading Background Theme Color Shade + + + + + + Vertical Positioning Location + + + + + Regular Vertical Positioning + + + + + Superscript + + + + + Subscript + + + + + + + + Subscript/Superscript Value + + + + + + + Value + + + + + Fit Text Run ID + + + + + + Emphasis Mark Type + + + + + No Emphasis Mark + + + + + Dot Emphasis Mark Above Characters + + + + + Comma Emphasis Mark Above Characters + + + + + Circle Emphasis Mark Above Characters + + + + + Dot Emphasis Mark Below Characters + + + + + + + + Emphasis Mark Type + + + + + + + Latin Language + + + + + East Asian Language + + + + + Complex Script Language + + + + + + Two Lines in One Enclosing Character Type + + + + + No Enclosing Brackets + + + + + Round Brackets + + + + + Square Brackets + + + + + Angle Brackets + + + + + Curly Brackets + + + + + + + + East Asian Typography Run ID + + + + + Two Lines in One + + + + + Display Brackets Around Two Lines in One + + + + + Horizontal in Vertical (Rotate Text) + + + + + Compress Rotated Text to Line Height + + + + + + Horizontal Alignment Location + + + + + Left Aligned Horizontally + + + + + Centered Horizontally + + + + + Right Aligned Horizontally + + + + + Inside + + + + + Outside + + + + + + + Vertical Alignment Location + + + + + In line With Text + + + + + Top + + + + + Centered Vertically + + + + + Bottom + + + + + Inside Anchor Extents + + + + + Outside Anchor Extents + + + + + + + Height Rule + + + + + Determine Height Based On Contents + + + + + Exact Height + + + + + Minimum Height + + + + + + + Text Wrapping around Text Frame Type + + + + + Default Text Wrapping Around Frame + + + + + No Text Wrapping Beside Frame + + + + + Allow Text Wrapping Around Frame + + + + + Tight Text Wrapping Around Frame + + + + + Through Text Wrapping Around Frame + + + + + No Text Wrapping Around Frame + + + + + + + Vertical Anchor Location + + + + + Relative To Vertical Text Extents + + + + + Relative To Margin + + + + + Relative To Page + + + + + + + Horizontal Anchor Location + + + + + Relative to Text Extents + + + + + Relative To Margin + + + + + Relative to Page + + + + + + + Text Frame Drop Cap Location + + + + + Not Drop Cap + + + + + Drop Cap Inside Margin + + + + + Drop Cap Outside Margin + + + + + + + + Drop Cap Frame + + + + + Drop Cap Vertical Height in Lines + + + + + Frame Width + + + + + Frame Height + + + + + Vertical Frame Padding + + + + + Horizontal Frame Padding + + + + + Text Wrapping Around Frame + + + + + Frame Horizontal Positioning Base + + + + + Frame Vertical Positioning Base + + + + + Absolute Horizontal Position + + + + + Relative Horizontal Position + + + + + Absolute Vertical Position + + + + + Relative Vertical Position + + + + + Frame Height Type + + + + + Lock Frame Anchor to Paragraph + + + + + + Custom Tab Stop Type + + + + + No Tab Stop + + + + + Left Tab + + + + + Centered Tab + + + + + Right Tab + + + + + Decimal Tab + + + + + Bar Tab + + + + + List Tab + + + + + + + Custom Tab Stop Leader Character + + + + + No tab stop leader + + + + + Dotted leader line + + + + + Dashed tab stop leader line + + + + + Solid leader line + + + + + Heavy solid leader line + + + + + Middle dot leader line + + + + + + + + Tab Stop Type + + + + + Tab Leader Character + + + + + Tab Stop Position + + + + + + Line Spacing Rule + + + + + Automatically Determined Line Height + + + + + Exact Line Height + + + + + Minimum Line Height + + + + + + + + Spacing Above Paragraph + + + + + Spacing Above Paragraph IN Line Units + + + + + Automatically Determine Spacing Above Paragraph + + + + + Spacing Below Paragraph + + + + + Spacing Below Paragraph in Line Units + + + + + Automatically Determine Spacing Below Paragraph + + + + + Spacing Between Lines in Paragraph + + + + + Type of Spacing Between Lines + + + + + + + Left Indentation + + + + + Left Indentation in Character Units + + + + + Right Indentation + + + + + Right Indentation in Character Units + + + + + Indentation Removed from First Line + + + + + Indentation Removed From First Line in Character Units + + + + + Additional First Line Indentation + + + + + Additional First Line Indentation in Character Units + + + + + + Horizontal Alignment Type + + + + + Align Left + + + + + Align Center + + + + + Align Right + + + + + Justified + + + + + Medium Kashida Length + + + + + Distribute All Characters Equally + + + + + Align to List Tab + + + + + Widest Kashida Length + + + + + Low Kashida Length + + + + + Thai Language Justification + + + + + + + + Alignment Type + + + + + + Document View Values + + + + + Default View + + + + + Print Layout View + + + + + Outline View + + + + + Master Document View + + + + + Draft View + + + + + Web Page View + + + + + + + + Document View Setting Value + + + + + + Magnification Preset Values + + + + + No Preset Magnification + + + + + Display One Full Page + + + + + Display Page Width + + + + + Display Text Width + + + + + + + + Zoom Type + + + + + Zoom Percentage + + + + + + + Writing Style Language + + + + + Grammatical Engine ID + + + + + Grammatical Check Engine Version + + + + + Natural Language Grammar Check + + + + + Check Stylistic Rules With Grammar + + + + + Application Name + + + + + + Proofing State Values + + + + + Check Completed + + + + + Check Not Completed + + + + + + + + Spell Checking State + + + + + Grammatical Checking State + + + + + + Document Classification Values + + + + + Default Document + + + + + Letter + + + + + E-Mail Message + + + + + + + + Document Classification Value + + + + + + Document Protection Types + + + + + No Editing Restrictions + + + + + Allow No Editing + + + + + Allow Editing of Comments + + + + + Allow Editing With Revision Tracking + + + + + Allow Editing of Form Fields + + + + + + + Cryptographic Provider Types + + + + + AES Provider + + + + + Any Provider + + + + + + + Cryptographic Algorithm Classes + + + + + Hashing + + + + + + + Cryptographic Algorithm Types + + + + + Any Type + + + + + + + + Cryptographic Provider Type + + + + + Cryptographic Algorithm Class + + + + + Cryptographic Algorithm Type + + + + + Cryptographic Hashing Algorithm + + + + + Iterations to Run Hashing Algorithm + + + + + Cryptographic Provider + + + + + Cryptographic Algorithm Extensibility + + + + + Algorithm Extensibility Source + + + + + Cryptographic Provider Type Extensibility + + + + + Provider Type Extensibility Source + + + + + Password Hash + + + + + Salt for Password Verifier + + + + + + + Document Editing Restrictions + + + + + Only Allow Formatting With Unlocked Styles + + + + + Enforce Document Protection Settings + + + + + + + Source Document Types + + + + + Catalog Source Document + + + + + Envelope Source Document + + + + + Mailing Label Source Document + + + + + Form Letter Source Document + + + + + E-Mail Source Document + + + + + Fax Source Document + + + + + + + + Mail Merge Source Document Type + + + + + + Mail Merge Data Source Type Values + + + + + Text File Data Source + + + + + Database Data Source + + + + + Spreadsheet Data Source + + + + + Query Data Source + + + + + Open Database Connectivity Data Source + + + + + Office Data Source Object Data Source + + + + + + + + Value + + + + + + Merged Document Destination Types + + + + + Send Merged Documents to New Documents + + + + + Send Merged Documents to Printer + + + + + Send Merged Documents as E-mail Messages + + + + + Send Merged Documents as Faxes + + + + + + + + Mail Merge Merged Document Type + + + + + + Merge Field Mapping Types + + + + + Field Not Mapped + + + + + Field Mapping to Data Source Column + + + + + + + + Merge Field Mapping Type + + + + + + + Display Visual Indicator Of Markup Area + + + + + Display Comments + + + + + Display Content Revisions + + + + + Display Formatting Revisions + + + + + Display Ink Annotations + + + + + + + Language For Which Custom Line Breaking Rule Applies + + + + + Characters For Custom Line Breaking Rule + + + + + + Text Flow Direction + + + + + Left to Right, Top to Bottom + + + + + Top to Bottom, Right to Left + + + + + Bottom to Top, Left to Right + + + + + Left to Right, Top to Bottom Rotated + + + + + Top to Bottom, Right to Left Rotated + + + + + Top to Bottom, Left to Right Rotated + + + + + + + + Direction of Text Flow + + + + + + Vertical Text Alignment Types + + + + + Align Text at Top + + + + + Align Text at Center + + + + + Align Text at Baseline + + + + + Align Text at Bottom + + + + + Automatically Determine Alignment + + + + + + + + Vertical Character Alignment Position + + + + + + Location of Custom XML Markup Displacing an Annotation + + + + + Displaced by Next Custom XML Markup Tag + + + + + Displaced by Previous Custom XML Markup Tag + + + + + + + Table Cell Vertical Merge Revision Type + + + + + Vertically Merged Cell + + + + + Vertically Split Cell + + + + + + + + Annotation Identifier + + + + + + + + + Annotation Author + + + + + Annotation Date + + + + + + + + + + + Revised Vertical Merge Setting + + + + + Vertical Merge Setting Removed by Revision + + + + + + + + + + + Annotation Marker Displaced By Custom XML Markup + + + + + + + + + + + Annotation Marker Relocated For Custom XML Markup + + + + + + + + + + + First Table Column Covered By Bookmark + + + + + Last Table Column Covered By Bookmark + + + + + + + + + + + Bookmark Name + + + + + + + + + + + Annotation Author + + + + + Annotation Date + + + + + + + + + + + + + + Initials of Comment Author + + + + + + + + + + + Previous Numbering Value + + + + + + + + + + + + Previous Table-Level Property Exceptions + + + + + + + + + + + + + Previous Table Cell Properties + + + + + + + + + + + + + Previous Table Row Properties + + + + + + + + + + + + + Previous Table Grid + + + + + + + + + + + + + Previous Table Properties + + + + + + + + + + + + + Previous Section Properties + + + + + + + + + + + + + Previous Paragraph Properties + + + + + + + + + + + + + Previous Run Properties + + + + + + + + + + + + + Previous Run Properties for the Paragraph Mark + + + + + + + + + + + + + + + + + + + + + Table Cell Insertion + + + + + Table Cell Deletion + + + + + Vertically Merged/Split Table Cells + + + + + + + + + Bookmark Start + + + + + Bookmark End + + + + + Move Source Location Container - Start + + + + + Move Source Location Container - End + + + + + Move Destination Location Container - Start + + + + + Move Destination Location Container - End + + + + + Comment Anchor Range Start + + + + + Comment Anchor Range End + + + + + Custom XML Markup Insertion Start + + + + + Custom XML Markup Insertion End + + + + + Custom XML Markup Deletion Start + + + + + Custom XML Markup Deletion End + + + + + Custom XML Markup Move Source Start + + + + + Custom XML Markup Move Source End + + + + + Custom XML Markup Move Destination Location Start + + + + + Custom XML Markup Move Destination Location End + + + + + + + + + Numbering Level Reference + + + + + Numbering Definition Instance Reference + + + + + Previous Paragraph Numbering Properties + + + + + Inserted Numbering Properties + + + + + + + + + Paragraph Border Above Identical Paragraphs + + + + + Left Paragraph Border + + + + + Paragraph Border Between Identical Paragraphs + + + + + Right Paragraph Border + + + + + Paragraph Border Between Identical Paragraphs + + + + + Paragraph Border Between Facing Pages + + + + + + + + + Custom Tab Stop + + + + + + + Lines To Tight Wrap Within Text Box + + + + + Do Not Tight Wrap + + + + + Tight Wrap All Lines + + + + + Tight Wrap First and Last Lines + + + + + Tight Wrap First Line + + + + + Tight Wrap Last Line + + + + + + + + Lines to Tight Wrap to Paragraph Extents + + + + + + + + Referenced Paragraph Style + + + + + Keep Paragraph With Next Paragraph + + + + + Keep All Lines On One Page + + + + + Start Paragraph on Next Page + + + + + Text Frame Properties + + + + + Allow First/Last Line to Display on a Separate Page + + + + + Numbering Definition Instance Reference + + + + + Suppress Line Numbers for Paragraph + + + + + Paragraph Borders + + + + + Paragraph Shading + + + + + Set of Custom Tab Stops + + + + + Suppress Hyphenation for Paragraph + + + + + Use East Asian Typography Rules for First and Last Character per Line + + + + + Allow Line Breaking At Character Level + + + + + Allow Punctuation to Extent Past Text Extents + + + + + Compress Punctuation at Start of a Line + + + + + Automatically Adjust Spacing of Latin and East Asian Text + + + + + Automatically Adjust Spacing of East Asian Text and Numbers + + + + + Right to Left Paragraph Layout + + + + + Automatically Adjust Right Indent When Using Document Grid + + + + + Use Document Grid Settings for Inter-Line Paragraph Spacing + + + + + Spacing Between Lines and Above/Below Paragraph + + + + + Paragraph Indentation + + + + + Ignore Spacing Above and Below When Using Identical Styles + + + + + Use Left/Right Indents as Inside/Outside Indents + + + + + Prevent Text Frames From Overlapping + + + + + Paragraph Alignment + + + + + Paragraph Text Flow Direction + + + + + Vertical Character Alignment on Line + + + + + Allow Surrounding Paragraphs to Tight Wrap to Text Box Contents + + + + + Associated Outline Level + + + + + Associated HTML div ID + + + + + Paragraph Conditional Formatting + + + + + + + + + + + Run Properties for the Paragraph Mark + + + + + Section Properties + + + + + Revision Information for Paragraph Properties + + + + + + + + + + Unique Name for Embedded Control + + + + + Associated VML Data Reference + + + + + Embedded Control Properties Relationship Reference + + + + + + + + + Background Color + + + + + Background Theme Color + + + + + Border Theme Color Tint + + + + + Border Theme Color Shade + + + + + + + + + Relationship to Part + + + + + + + + + + + + + + + + Inline Embedded Control + + + + + + Original Image Width + + + + + Original Image Height + + + + + + + + + + + + Embedded Video + + + + + Floating Embedded Control + + + + + + + + + + + Drawing Element Anchor + + + + + Inline Drawing Object + + + + + + + + + Custom Field Data + + + + + + + Field Codes + + + + + Field Should Not Be Recalculated + + + + + Field Result Invalidated + + + + + + Complex Field Character Type + + + + + Start Character + + + + + Separator Character + + + + + End Character + + + + + + + Help or Status Text Type + + + + + Literal Text + + + + + Glossary Document Entry + + + + + + + Help Text Value + + + + + + + + Status Text Value + + + + + + + + Form Field Name Value + + + + + + + + Text Box Form Field Type Values + + + + + Text Box + + + + + Number + + + + + Date + + + + + Current Time Display + + + + + Current Date Display + + + + + Field Calculation + + + + + + + + Text Box Form Field Type Values + + + + + + + Form Field Name Value + + + + + + + + Custom Field Data + + + + + Form Field Properties + + + + + Previous Numbering Field Properties + + + + + + Field Character Type + + + + + Field Should Not Be Recalculated + + + + + Field Result Invalidated + + + + + + + + Hyperlink Target Frame + + + + + Associated String + + + + + Location in Target Document + + + + + Add To Viewed Hyperlinks + + + + + Hyperlink Anchor + + + + + Hyperlink Target + + + + + + + + Form Field Name + + + + + Form Field Enabled + + + + + Recalculate Fields When Current Field Is Modified + + + + + Script Function to Execute on Form Field Entry + + + + + Script Function to Execute on Form Field Exit + + + + + Associated Help Text + + + + + Associated Status Text + + + + + + Checkbox Form Field Properties + + + + + Drop-Down List Form Field Properties + + + + + Text Box Form Field Properties + + + + + + + + + Help Text Type + + + + + Help Text Value + + + + + + + Status Text Type + + + + + Status Text Value + + + + + + + + + Checkbox Form Field Size + + + + + Automatically Size Form Field + + + + + + Default Checkbox Form Field State + + + + + Checkbox Form Field State + + + + + + + + + Drop-Down List Selection + + + + + Default Drop-Down List Item Index + + + + + Drop-Down List Entry + + + + + + + + + Text Box Form Field Type + + + + + Default Text Box Form Field String + + + + + Text Box Form Field Maximum Length + + + + + Text Box Form Field Formatting + + + + + + + Section Type + + + + + Next Page Section Break + + + + + Column Section Break + + + + + Continuous Section Break + + + + + Even Page Section Break + + + + + Odd Page Section Break + + + + + + + + Section Type Setting + + + + + + + First Page Printer Tray Code + + + + + Non-First Page Printer Tray Code + + + + + + Numbering Format + + + + + Decimal Numbers + + + + + Uppercase Roman Numerals + + + + + Lowercase Roman Numerals + + + + + Uppercase Latin Alphabet + + + + + Lowercase Latin Alphabet + + + + + Ordinal + + + + + Cardinal Text + + + + + Ordinal Text + + + + + Hexadecimal Numbering + + + + + Chicago Manual of Style + + + + + Ideographs + + + + + Japanese Counting System + + + + + AIUEO Order Hiragana + + + + + Iroha Ordered Katakana + + + + + Double Byte Arabic Numerals + + + + + Single Byte Arabic Numerals + + + + + Japanese Legal Numbering + + + + + Japanese Digital Ten Thousand Counting System + + + + + Decimal Numbers Enclosed in a Circle + + + + + Double Byte Arabic Numerals Alternate + + + + + Full-Width AIUEO Order Hiragana + + + + + Full-Width Iroha Ordered Katakana + + + + + Initial Zero Arabic Numerals + + + + + Bullet + + + + + Korean Ganada Numbering + + + + + Korean Chosung Numbering + + + + + Decimal Numbers Followed by a Period + + + + + Decimal Numbers Enclosed in Parenthesis + + + + + Decimal Numbers Enclosed in a Circle + + + + + Ideographs Enclosed in a Circle + + + + + Traditional Ideograph Format + + + + + Zodiac Ideograph Format + + + + + Traditional Zodiac Ideograph Format + + + + + Taiwanese Counting System + + + + + Traditional Legal Ideograph Format + + + + + Taiwanese Counting Thousand System + + + + + Taiwanese Digital Counting System + + + + + Chinese Counting System + + + + + Chinese Legal Simplified Format + + + + + Chinese Counting Thousand System + + + + + Korean Digital Counting System + + + + + Korean Counting System + + + + + Korean Legal Numbering + + + + + Korean Digital Counting System Alternate + + + + + Vietnamese Numerals + + + + + Lowercase Russian Alphabet + + + + + Uppercase Russian Alphabet + + + + + No Numbering + + + + + Number With Dashes + + + + + Hebrew Numerals + + + + + Hebrew Alphabet + + + + + Arabic Alphabet + + + + + Arabic Abjad Numerals + + + + + Hindi Vowels + + + + + Hindi Consonants + + + + + Hindi Numbers + + + + + Hindi Counting System + + + + + Thai Letters + + + + + Thai Numerals + + + + + Thai Counting System + + + + + + + Page Orientation + + + + + Portrait Mode + + + + + Landscape Mode + + + + + + + + Page Width + + + + + Page Height + + + + + Page Orientation + + + + + Printer Paper Code + + + + + + + Top Margin Spacing + + + + + Right Margin Spacing + + + + + Page Bottom Spacing + + + + + Left Margin Spacing + + + + + Spacing to Top of Header + + + + + Spacing to Bottom of Footer + + + + + Page Gutter Spacing + + + + + + Page Border Z-Order + + + + + Page Border Ahead of Text + + + + + Page Border Behind Text + + + + + + + Page Border Display Options + + + + + Display Page Border on All Pages + + + + + Display Page Border on First Page + + + + + Display Page Border on All Pages Except First + + + + + + + Page Border Positioning Base + + + + + Page Border Is Positioned Relative to Page Edges + + + + + Page Border Is Positioned Relative to Text Extents + + + + + + + + + Top Border + + + + + Left Border + + + + + Bottom Border + + + + + Right Border + + + + + + Z-Ordering of Page Border + + + + + Pages to Display Page Borders + + + + + Page Border Positioning + + + + + + Chapter Separator Types + + + + + Hyphen Chapter Separator + + + + + Period Chapter Separator + + + + + Colon Chapter Separator + + + + + Em Dash Chapter Separator + + + + + En Dash Chapter Separator + + + + + + + Line Numbering Restart Position + + + + + Restart Line Numbering on Each Page + + + + + Restart Line Numbering for Each Section + + + + + Continue Line Numbering From Previous Section + + + + + + + + Line Number Increments to Display + + + + + Line Numbering Starting Value + + + + + Distance Between Text and Line Numbering + + + + + Line Numbering Restart Setting + + + + + + + Page Number Format + + + + + Starting Page Number + + + + + Chapter Heading Style + + + + + Chapter Separator Character + + + + + + + Column Width + + + + + Space Before Following Column + + + + + + + + Single Column Definition + + + + + + Equal Column Widths + + + + + Spacing Between Equal Width Columns + + + + + Number of Equal Width Columns + + + + + Draw Line Between Columns + + + + + + Vertical Alignment Type + + + + + Align Top + + + + + Align Center + + + + + Vertical Justification + + + + + Align Bottom + + + + + + + + Vertical Alignment Setting + + + + + + Document Grid Types + + + + + No Document Grid + + + + + Line Grid Only + + + + + Line and Character Grid + + + + + Character Grid Only + + + + + + + + Document Grid Type + + + + + Document Grid Line Pitch + + + + + Document Grid Character Pitch + + + + + + Header or Footer Type + + + + + Even Numbered Pages Only + + + + + Default Header or Footer + + + + + First Page Only + + + + + + + Footnote or Endnote Type + + + + + Normal Footnote/Endnote + + + + + Separator + + + + + Continuation Separator + + + + + Continuation Notice Separator + + + + + + + + + + Header or Footer Type + + + + + + + + + + Header Reference + + + + + Footer Reference + + + + + + + + + + + + Section-Wide Footnote Properties + + + + + Section-Wide Endnote Properties + + + + + Section Type + + + + + Page Size + + + + + Page Margins + + + + + Paper Source Information + + + + + Page Borders + + + + + Line Numbering Settings + + + + + Page Numbering Settings + + + + + Column Definitions + + + + + Only Allow Editing of Form Fields + + + + + Vertical Text Alignment on Page + + + + + Suppress Endnotes In Document + + + + + Different First Page Headers and Footers + + + + + Text Flow Direction + + + + + Right to Left Section Layout + + + + + Gutter on Right Side of Page + + + + + Document Grid + + + + + Reference to Printer Settings Data + + + + + + + + Physical Section Mark Character Revision ID + + + + + Section Deletion Revision ID + + + + + Section Addition Revision ID + + + + + Section Properties Revision ID + + + + + + + + + + + + + + + + Revision Information for Section Properties + + + + + + + + Break Types + + + + + Page Break + + + + + Column Break + + + + + Line Break + + + + + + + Line Break Text Wrapping Restart Location + + + + + Restart On Next Line + + + + + Restart In Next Text Region When In Leftmost Position + + + + + Restart In Next Text Region When In Rightmost Position + + + + + Restart On Next Full Line + + + + + + + + Break Type + + + + + Restart Location For Text Wrapping Break + + + + + + Absolute Position Tab Alignment + + + + + Left + + + + + Center + + + + + Right + + + + + + + Absolute Position Tab Positioning Base + + + + + Relative To Text Margins + + + + + Relative To Indents + + + + + + + Absolute Position Tab Leader Character + + + + + No Leader Character + + + + + Dot Leader Character + + + + + Hyphen Leader Character + + + + + Underscore Leader Character + + + + + Centered Dot Leader Character + + + + + + + + Positional Tab Stop Alignment + + + + + Positional Tab Base + + + + + Tab Leader Character + + + + + + + Symbol Character Font + + + + + Symbol Character Code + + + + + + Proofing Error Type + + + + + Start of Region Marked as Spelling Error + + + + + End of Region Marked as Spelling Error + + + + + Start of Region Marked as Grammatical Error + + + + + End of Region Marked as Grammatical Error + + + + + + + + Proofing Error Anchor Type + + + + + + Range Permision Editing Group + + + + + No Users Have Editing Permissions + + + + + All Users Have Editing Permissions + + + + + Administrator Group + + + + + Contributors Group + + + + + Editors Group + + + + + Owners Group + + + + + Current Group + + + + + + + + Annotation ID + + + + + Annotation Displaced By Custom XML Markup + + + + + + + + + Editor Group For Range Permission + + + + + Single User For Range Permission + + + + + First Table Column Covered By Range Permission + + + + + Last Table Column Covered By Range Permission + + + + + + + + + + + Content Contains Significant Whitespace + + + + + + + + + + Break + + + + + Text + + + + + Deleted Text + + + + + Field Code + + + + + Deleted Field Code + + + + + Non Breaking Hyphen Character + + + + + Optional Hyphen Character + + + + + Date Block - Short Day Format + + + + + Date Block - Short Month Format + + + + + Date Block - Short Year Format + + + + + Date Block - Long Day Format + + + + + Date Block - Long Month Format + + + + + Date Block - Long Year Format + + + + + Comment Information Block + + + + + Footnote Reference Mark + + + + + Endnote Reference Mark + + + + + Footnote/Endnote Separator Mark + + + + + Continuation Separator Mark + + + + + Symbol Character + + + + + Page Number Block + + + + + Carriage Return + + + + + Tab Character + + + + + Inline Embedded Object + + + + + VML Object + + + + + Complex Field Character + + + + + Phonetic Guide + + + + + Footnote Reference + + + + + Endnote Reference + + + + + Comment Content Reference Mark + + + + + DrawingML Object + + + + + Absolute Position Tab Character + + + + + Position of Last Calculated Page Break + + + + + + + + + + + + Revision Identifier for Run Properties + + + + + Revision Identifier for Run Deletion + + + + + Revision Identifier for Run + + + + + + Font Type Hint + + + + + High ANSI Font + + + + + East Asian Font + + + + + Complex Script Font + + + + + + + Theme Font + + + + + Major East Asian Theme Font + + + + + Major Complex Script Theme Font + + + + + Major ASCII Theme Font + + + + + Major High ANSI Theme Font + + + + + Minor East Asian Theme Font + + + + + Minor Complex Script Theme Font + + + + + Minor ASCII Theme Font + + + + + Minor High ANSI Theme Font + + + + + + + + Font Content Type + + + + + ASCII Font + + + + + High ANSI Font + + + + + East Asian Font + + + + + Complex Script Font + + + + + ASCII Theme Font + + + + + High ANSI Theme Font + + + + + East Asian Theme Font + + + + + Complex Script Theme Font + + + + + + + + Referenced Character Style + + + + + Run Fonts + + + + + Bold + + + + + Complex Script Bold + + + + + Italics + + + + + Complex Script Italics + + + + + Display All Characters As Capital Letters + + + + + Small Caps + + + + + Single Strikethrough + + + + + Double Strikethrough + + + + + Display Character Outline + + + + + Shadow + + + + + Embossing + + + + + Imprinting + + + + + Do Not Check Spelling or Grammar + + + + + Use Document Grid Settings For Inter-Character Spacing + + + + + Hidden Text + + + + + Web Hidden Text + + + + + Run Content Color + + + + + Character Spacing Adjustment + + + + + Expanded/Compressed Text + + + + + Font Kerning + + + + + Vertically Raised or Lowered Text + + + + + Font Size + + + + + Complex Script Font Size + + + + + Text Highlighting + + + + + Underline + + + + + Animated Text Effect + + + + + Text Border + + + + + Run Shading + + + + + Manual Run Width + + + + + Subscript/Superscript Text + + + + + Right To Left Text + + + + + Use Complex Script Formatting on Run + + + + + Emphasis Mark + + + + + Languages for Run Content + + + + + East Asian Typography Settings + + + + + Paragraph Mark Is Always Hidden + + + + + Office Open XML Math + + + + + + + + + + Revision Information for Run Properties + + + + + + + + + + + + + + Run Properties + + + + + + + + + + Inserted Math Control Character + + + + + Deleted Math Control Character + + + + + + + + + + + + + + + + + + + + + + Revision Information for Run Properties on the Paragraph Mark + + + + + + + + + Inserted Paragraph + + + + + Deleted Paragraph + + + + + Move Source Paragraph + + + + + Move Destination Paragraph + + + + + + + + + External Content Import Properties + + + + + + Relationship to Part + + + + + + + + Keep Source Formatting on Import + + + + + + + Phonetic Guide Text Alignment + + + + + Center + + + + + Distribute All Characters + + + + + Distribute all Characters w/ Additional Space On Either Side + + + + + Left Aligned + + + + + Right Aligned + + + + + Vertically Aligned to Right of Base Text + + + + + + + + Phonetic Guide Text Alignment Value + + + + + + + + Phonetic Guide Text Alignment + + + + + Phonetic Guide Text Font Size + + + + + Distance Between Phonetic Guide Text and Phonetic Guide Base Text + + + + + Phonetic Guide Base Text Font Size + + + + + Language ID for Phonetic Guide + + + + + Invalidated Field Cache + + + + + + + + + Phonetic Guide Text Run + + + + + + + + + + + + + Phonetic Guide Properties + + + + + Phonetic Guide Text + + + + + Phonetic Guide Base Text + + + + + + + Locking Types + + + + + SDT Cannot Be Deleted + + + + + Contents Cannot Be Edited At Runtime + + + + + No Locking + + + + + Contents Cannot Be Edited At Runtime And SDT Cannot Be Deleted + + + + + + + + Locking Type + + + + + + + List Entry Display Text + + + + + List Entry Value + + + + + + Date Storage Format Types + + + + + Same As Display + + + + + XML Schema Date Format + + + + + XML Schema DateTime Format + + + + + + + + Date Storage Type + + + + + + Calendar Types + + + + + Gregorian + + + + + Hijri + + + + + Hebrew + + + + + Taiwan + + + + + Japanese Emperor Era + + + + + Thai + + + + + Korean Tangun Era + + + + + Saka Era + + + + + Gregorian transliterated English + + + + + Gregorian transliterated French + + + + + + + + Calendar Type Value + + + + + + + + Date Display Mask + + + + + Date Picker Language ID + + + + + Custom XML Data Date Storage Format + + + + + Date Picker Calendar Type + + + + + + Last Known Date in XML Schema DateTime Format + + + + + + + + Combo Box List Item + + + + + + Combo Box Last Saved Value + + + + + + + + Document Part Gallery Filter + + + + + Document Part Category Filter + + + + + Built-In Document Part + + + + + + + + + Drop-Down List Item + + + + + + Drop-down List Last Saved Value + + + + + + + + Document Part Reference + + + + + + + + Allow Soft Line Breaks + + + + + + + XML Namespace Prefix Mappings + + + + + XPath + + + + + Custom XML Data Storage ID + + + + + + + + Run Properties For Structured Document Tag Contents + + + + + Friendly Name + + + + + Locking Setting + + + + + Structured Document Tag Placeholder Text + + + + + Current Contents Are Placeholder Text + + + + + XML Mapping + + + + + Remove Structured Document Tag When Contents Are Edited + + + + + Unique ID + + + + + Programmatic Tag + + + + + + Equation Structured Document Tag + + + + + Combo Box Structured Document Tag + + + + + Date Structured Document Tag + + + + + Built-In Document Part Structured Document Tag + + + + + Document Part Gallery Structured Document Tag + + + + + Drop-Down List Structured Document Tag + + + + + Picture Structured Document Tag + + + + + Rich Text Structured Document Tag + + + + + Plain Text Structured Document Tag + + + + + Citation Structured Document Tag + + + + + Group Structured Document Tag + + + + + Bibliography Structured Document Tag + + + + + + + + + + Structured Document Tag End Character Run Properties + + + + + + + + + Inline-Level Custom XML Element + + + + + Inline-Level Smart Tag + + + + + Inline-Level Structured Document Tag + + + + + Text Run + + + + + + + + + + + + + Block-Level Custom XML Element + + + + + Block-Level Structured Document Tag + + + + + Paragraph + + + + + Table + + + + + + + + + + + + + Table Row + + + + + Row-Level Custom XML Element + + + + + Row-Level Structured Document Tag + + + + + + + + + + + + + Table Cell + + + + + Cell-Level Custom XML Element + + + + + Cell-Level Structured Document Tag + + + + + + + + + + + + + Structured Document Tag Properties + + + + + Structured Document Tag End Character Properties + + + + + Block-Level Structured Document Tag Content + + + + + + + + + Structured Document Tag Properties + + + + + Structured Document Tag End Character Properties + + + + + Inline-Level Structured Document Tag Content + + + + + + + + + Structured Document Tag Properties + + + + + Structured Document Tag End Character Properties + + + + + Cell-Level Structured Document Tag Content + + + + + + + + + Structured Document Tag Properties + + + + + Structured Document Tag End Character Properties + + + + + Row-Level Structured Document Tag Content + + + + + + + + Namespace + + + + + Name + + + + + Value + + + + + + + + Custom XML Element Properties + + + + + + + Custom XML Markup Namespace + + + + + Element name + + + + + + + + Smart Tag Properties + + + + + + + Smart Tag Namespace + + + + + Smart Tag Name + + + + + + + + Custom XML Element Properties + + + + + + + Custom XML Element Namespace + + + + + Custom XML Element Name + + + + + + + + Custom XML Element Placeholder Text + + + + + Custom XML Attribute + + + + + + + + + Custom XML Element Properties + + + + + + + Custom XML Element Namespace + + + + + Custom XML Element Name + + + + + + + + Custom XML Element Properties + + + + + + + Custom XML Element Namespace + + + + + Custom XML Element Name + + + + + + + + Smart Tag Property + + + + + + + + + + Simple Field + + + + + Hyperlink + + + + + Anchor for Subdocument Location + + + + + + + + + Paragraph Properties + + + + + + + Revision Identifier for Paragraph Glyph Formatting + + + + + Revision Identifier for Paragraph + + + + + Revision Identifier for Paragraph Deletion + + + + + Revision Identifier for Paragraph Properties + + + + + Default Revision Identifier for Runs + + + + + + Table Width Units + + + + + No Width + + + + + Width in Fiftieths of a Percent + + + + + Width in Twentieths of a Point + + + + + Automatically Determined Width + + + + + + + + Table Row Height + + + + + Table Row Height Type + + + + + + + Table Width Value + + + + + Table Width Type + + + + + + + Grid Column Width + + + + + + + + Grid Column Definition + + + + + + + + + + + Revision Information for Table Grid Column Definitions + + + + + + + + + + + Table Cell Top Border + + + + + Table Cell Left Border + + + + + Table Cell Bottom Border + + + + + Table Cell Right Border + + + + + Table Cell Inside Horizontal Edges Border + + + + + Table Cell Inside Vertical Edges Border + + + + + Table Cell Top Left to Bottom Right Diagonal Border + + + + + Table Cell Top Right to Bottom Left Diagonal Border + + + + + + + + + Table Cell Top Margin Exception + + + + + Table Cell Left Margin Exception + + + + + Table Cell Bottom Margin Exception + + + + + Table Cell Right Margin Exception + + + + + + + Merged Cell Type + + + + + Continue Merged Region + + + + + Start/Restart Merged Region + + + + + + + + Vertical Merge Type + + + + + + + Horizontal Merge Type + + + + + + + + Table Cell Conditional Formatting + + + + + Preferred Table Cell Width + + + + + Grid Columns Spanned by Current Table Cell + + + + + Horizontally Merged Cell + + + + + Vertically Merged Cell + + + + + Table Cell Borders + + + + + Table Cell Shading + + + + + Don't Wrap Cell Content + + + + + Single Table Cell Margins + + + + + Table Cell Text Flow Direction + + + + + Fit Text Within Cell + + + + + Table Cell Vertical Alignment + + + + + Ignore End Of Cell Marker In Row Height Calculation + + + + + + + + + + + Revision Information for Table Cell Properties + + + + + + + + + + + + + + + + + + + + Table Cell Properties + + + + + + + + Conditional Formatting Bitmask + + + + + + + + + + Conditional Formatting Bit Mask + + + + + + + + Table Row Conditional Formatting + + + + + Associated HTML div ID + + + + + Grid Columns Before First Cell + + + + + Grid Columns After Last Cell + + + + + Preferred Width Before Table Row + + + + + Preferred Width After Table Row + + + + + Table Row Cannot Break Across Pages + + + + + Table Row Height + + + + + Repeat Table Row on Every New Page + + + + + Table Row Cell Spacing + + + + + Table Row Alignment + + + + + Hidden Table Row Marker + + + + + + + + + + + Inserted Table Row + + + + + Deleted Table Row + + + + + Revision Information for Table Row Properties + + + + + + + + + + + Table-Level Property Exceptions + + + + + Table Row Properties + + + + + + + Revision Identifier for Table Row Glyph Formatting + + + + + Revision Identifier for Table Row + + + + + Revision Identifier for Table Row Deletion + + + + + Revision Identifier for Table Row Properties + + + + + + Table Layout Type + + + + + Fixed Width Table Layout + + + + + AutoFit Table Layout + + + + + + + + Table Layout Setting + + + + + + Table Overlap Setting + + + + + Floating Table Cannot Overlap + + + + + Floating Table Can Overlap + + + + + + + + Floating Table Overlap Setting + + + + + + + Distance From Left of Table to Text + + + + + (Distance From Right of Table to Text + + + + + Distance From Top of Table to Text + + + + + Distance From Bottom of Table to Text + + + + + Table Vertical Anchor + + + + + Table Horizontal Anchor + + + + + Relative Horizontal Alignment From Anchor + + + + + Absolute Horizontal Distance From Anchor + + + + + Relative Vertical Alignment from Anchor + + + + + Absolute Vertical Distance From Anchor + + + + + + + + Table Cell Top Margin Default + + + + + Table Cell Left Margin Default + + + + + Table Cell Bottom Margin Default + + + + + Table Cell Right Margin Default + + + + + + + + + Table Top Border + + + + + Table Left Border + + + + + Table Bottom Border + + + + + Table Right Border + + + + + Table Inside Horizontal Edges Border + + + + + Table Inside Vertical Edges Border + + + + + + + + + Referenced Table Style + + + + + Floating Table Positioning + + + + + Floating Table Allows Other Tables to Overlap + + + + + Visually Right to Left Table + + + + + Number of Rows in Row Band + + + + + Number of Columns in Column Band + + + + + Preferred Table Width + + + + + Table Alignment + + + + + Table Cell Spacing Default + + + + + Table Indent from Leading Margin + + + + + Table Borders + + + + + Table Shading + + + + + Table Layout + + + + + Table Cell Margin Defaults + + + + + Table Style Conditional Formatting Settings + + + + + + + + + + + Revision Information for Table Properties + + + + + + + + + + + Preferred Table Width Exception + + + + + Table Alignment Exception + + + + + Table Cell Spacing Exception + + + + + Table Indent from Leading Margin Exception + + + + + Table Borders Exceptions + + + + + Table Shading Exception + + + + + Table Layout Exception + + + + + Table Cell Margin Exceptions + + + + + Table Style Conditional Formatting Settings Exception + + + + + + + + + + + Revision Information for Table-Level Property Exceptions + + + + + + + + + + + + Table Properties + + + + + Table Grid + + + + + + + + Footnote Positioning Location + + + + + Footnotes Positioned at Page Bottom + + + + + Footnotes Positioned Beneath Text + + + + + Footnotes Positioned At End of Section + + + + + Footnotes Positioned At End of Document + + + + + + + + Footnote Position Type + + + + + + Endnote Positioning Location + + + + + Endnotes Positioned at End of Section + + + + + Endnotes Positioned at End of Document + + + + + + + + Endnote Position Type + + + + + + + Numbering Format Type + + + + + + Footnote/Endnote Numbering Restart Locations + + + + + Continue Numbering From Previous Section + + + + + Restart Numbering For Each Section + + + + + Restart Numbering On Each Page + + + + + + + + Automatic Numbering Restart Value + + + + + + + Suppress Footnote/Endnote Reference Mark + + + + + Footnote/Endnote ID Reference + + + + + + + Footnote/Endnote ID + + + + + + + + + + Footnote/Endnote Type + + + + + Footnote/Endnote ID + + + + + + + + Footnote and Endnote Numbering Starting Value + + + + + Footnote and Endnote Numbering Restart Location + + + + + + + + + Footnote Placement + + + + + Footnote Numbering Format + + + + + + + + + + Endnote Placement + + + + + Endnote Numbering Format + + + + + + + + + + + + Special Footnote List + + + + + + + + + + + + + Special Endnote List + + + + + + + + + + + Record Is Included in Mail Merge + + + + + Index of Column Containing Unique Values for Record + + + + + Unique Value for Record + + + + + + + + + Data About Single Data Source Record + + + + + + + Inclusion/Exclusion Data for Data Source + + + + + + + Merge Field Mapping + + + + + Data Source Name for Column + + + + + Predefined Merge Field Name + + + + + Index of Column Being Mapped + + + + + Merge Field Name Language ID + + + + + Use Country-Based Address Field Ordering + + + + + + + Mail Merge ODSO Data Source Types + + + + + Database Data Source + + + + + Address Book Data Source + + + + + Alternate Document Format Data Source + + + + + Alternate Document Format Data Source Two + + + + + Text File Data Source + + + + + E-Mail Program Data Source + + + + + Native Data Souce + + + + + Legacy Document Format Data Source + + + + + Aggregate Data Source + + + + + + + + Data Source Type Value + + + + + + + + UDL Connection String + + + + + Data Source Table Name + + + + + ODSO Data Source File Path + + + + + Column Delimiter for Data Source + + + + + ODSO Data Source Type + + + + + First Row of Data Source Contains Column Names + + + + + External Data Source to Merge Field Mapping + + + + + Reference to Inclusion/Exclusion Data for Data Source + + + + + + + + + Source Document Type + + + + + Query Contains Link to External Query File + + + + + Data Source Type + + + + + Data Source Connection String + + + + + Query For Data Source Records To Merge + + + + + Data Source File Path + + + + + Header Definition File Path + + + + + Remove Blank Lines from Merged Documents + + + + + Merged Document Destination + + + + + Column Containing E-mail Address + + + + + Merged E-mail or Fax Subject Line + + + + + Merged Document To E-Mail Attachment + + + + + View Merged Data Within Document + + + + + Record Currently Displayed In Merged Document + + + + + Mail Merge Error Reporting Setting + + + + + Office Data Source Object Settings + + + + + + + Target Screen Sizes for Generated Web Pages + + + + + Optimize for 544x376 + + + + + Optimize for 640x480 + + + + + Optimize for 720x512 + + + + + Optimize for 800x600 + + + + + Optimize for 1024x768 + + + + + Optimize for 1152x882 + + + + + Optimize for 1152x900 + + + + + Optimize for 1280x1024 + + + + + Optimize for 1600x1200 + + + + + Optimize for 1800x1440 + + + + + Optimize for 1920x1200 + + + + + + + + Target Screen Size Value + + + + + + + + Use Simplified Rules For Table Border Conflicts + + + + + Emulate WordPerfect 6.x Paragraph Justification + + + + + Do Not Create Custom Tab Stop for Hanging Indent + + + + + Do Not Add Leading Between Lines of Text + + + + + Add Additional Space Below Baseline For Underlined East Asian Text + + + + + Do Not Balance Text Columns within a Section + + + + + Balance Single Byte and Double Byte Characters + + + + + Do Not Center Content on Lines With Exact Line Height + + + + + Convert Backslash To Yen Sign When Entered + + + + + Underline All Trailing Spaces + + + + + Don't Justify Lines Ending in Soft Line Break + + + + + Only Expand/Condense Text By Whole Points + + + + + Emulate Word 6.0 Line Wrapping for East Asian Text + + + + + Print Body Text before Header/Footer Contents + + + + + Print Colors as Black And White without Dithering + + + + + Space width + + + + + Display Page/Column Breaks Present in Frames + + + + + Increase Priority Of Font Size During Font Substitution + + + + + Ignore Exact Line Height for Last Line on Page + + + + + Ignore Minimum and Exact Line Height for First Line on Page + + + + + Ignore Minimum Line Height for First Line on Page + + + + + Emulate WordPerfect 5.x Line Spacing + + + + + Do Not Use Space Before On First Line After a Page Break + + + + + Swap Paragraph Borders on Odd Numbered Pages + + + + + Treat Backslash Quotation Delimiter as Two Quotation Marks + + + + + Emulate WordPerfect 6.x Font Height Calculation + + + + + Emulate Word 5.x for the Macintosh Small Caps Formatting + + + + + Use Printer Metrics To Display Documents + + + + + Do Not Suppress Paragraph Borders Next To Frames + + + + + Line Wrap Trailing Spaces + + + + + Emulate Word 6.x/95/97 Footnote Placement + + + + + Emulate Word 97 Text Wrapping Around Floating Objects + + + + + Align Table Rows Independently + + + + + Ignore Width of Last Tab Stop When Aligning Paragraph If It Is Not Left Aligned + + + + + Add Document Grid Line Pitch To Lines in Table Cells + + + + + Emulate Word 95 Full-Width Character Spacing + + + + + Do Not Increase Line Height for Raised/Lowered Text + + + + + Use Fixed Paragraph Spacing for HTML Auto Setting + + + + + Ignore Space Before Table When Deciding If Table Should Wrap Floating Object + + + + + Allow Table Rows to Wrap Inline Objects Independently + + + + + Emulate Word 97 East Asian Line Breaking + + + + + Do Not Allow Floating Tables To Break Across Pages + + + + + Do Not Snap to Document Grid in Table Cells with Objects + + + + + Select Field When First or Last Character Is Selected + + + + + Use Legacy Ethiopic and Amharic Line Breaking Rules + + + + + Do Not Allow Hanging Punctuation With Character Grid + + + + + Do Not Compress Compressible Characters When Using Document Grid + + + + + Emulate Word 2002 Table Style Rules + + + + + Allow Tables to AutoFit Into Page Margins + + + + + Do Not Bypass East Asian/Complex Script Layout Code + + + + + Do Not Automatically Apply List Paragraph Style To Bulleted/Numbered Text + + + + + Ignore Hanging Indent When Creating Tab Stop After Numbering + + + + + Use Alternate Set of East Asian Line Breaking Rules + + + + + Allow Contextual Spacing of Paragraphs in Tables + + + + + Do Not Ignore Floating Objects When Calculating Paragraph Indentation + + + + + Do Not AutoFit Tables To Fit Next To Wrapped Objects + + + + + Allow Table Columns To Exceed Preferred Widths of Constituent Cells + + + + + Underline Following Character Following Numbering + + + + + Always Use Fixed Width for Hangul Characters + + + + + Always Move Paragraph Mark to Page after a Page Break + + + + + Don't Vertically Align Cells Containing Floating Objects + + + + + Don't Break Table Rows Around Floating Tables + + + + + Ignore Vertical Alignment in Textboxes + + + + + Use ANSI Kerning Pairs from Fonts + + + + + Use Cached Paragraph Information for Column Balancing + + + + + + + + Document Variable Name + + + + + Document Variable Value + + + + + + + + Single Document Variable + + + + + + + + + Original Document Revision Save ID + + + + + Single Session Revision Save ID + + + + + + + Character-Level Whitespace Compression Settings + + + + + Do Not Compress Whitespace + + + + + Compress Whitespace From Punctuation Characters + + + + + Compress Whitespace From Both Japanese Kana And Punctuation Characters + + + + + + + + Value + + + + + + + XSL Transformation Location + + + + + Local Identifier for XSL Transform + + + + + + + + Run Properties + + + + + + + + + Paragraph Properties + + + + + + + + + Default Run Properties + + + + + Default Paragraph Properties + + + + + + + Theme Color Reference + + + + + Dark 1 Theme Color Reference + + + + + Light 1 Theme Color Reference + + + + + Dark 2 Theme Color Reference + + + + + Light 2 Theme Color Reference + + + + + Accent 1 Theme Color Reference + + + + + Accent 2 Theme Color Reference + + + + + Accent 3 Theme Color Reference + + + + + Accent4 Theme Color Reference + + + + + Accent5 Theme Color Reference + + + + + Accent 6 Theme Color Reference + + + + + Hyperlink Theme Color Reference + + + + + Followed Hyperlink Theme Color Reference + + + + + + + + Background 1 Theme Color Mapping + + + + + Text 1 Theme Color Mapping + + + + + Background 2 Theme Color Mapping + + + + + Text 2 Theme Color Mapping + + + + + Accent 1 Theme Color Mapping + + + + + Accent 2 Theme Color Mapping + + + + + Accent3 Theme Color Mapping + + + + + Accent4 Theme Color Mapping + + + + + Accent5 Theme Color Mapping + + + + + Accent6 Theme Color Mapping + + + + + Hyperlink Theme Color Mapping + + + + + Followed Hyperlink Theme Color Mapping + + + + + + + Use Actual Pages, Not Virtual Pages + + + + + Virtual Page Width + + + + + Virtual Page Height + + + + + Font Size Scaling + + + + + + + Recommend Write Protection in User Interface + + + + + + + + + Write Protection + + + + + Document View Setting + + + + + Magnification Setting + + + + + Remove Personal Information from Document Properties + + + + + Remove Date and Time from Annotations + + + + + Do Not Display Visual Boundary For Header/Footer or Between Pages + + + + + Display Background Objects When Displaying Document + + + + + Print PostScript Codes With Document Text + + + + + Print Fractional Character Widths + + + + + Only Print Form Field Content + + + + + Embed TrueType Fonts + + + + + Embed Common System Fonts + + + + + Subset Fonts When Embedding + + + + + Only Save Form Field Content + + + + + Mirror Page Margins + + + + + Align Paragraph and Table Borders with Page Border + + + + + Page Border Excludes Header + + + + + Page Border Excludes Footer + + + + + Position Gutter At Top of Page + + + + + Do Not Display Visual Indication of Spelling Errors + + + + + Do Not Display Visual Indication of Grammatical Errors + + + + + Grammar Checking Settings + + + + + Spelling and Grammatical Checking State + + + + + Structured Document Tag Placeholder Text Should be Resaved + + + + + Attached Document Template + + + + + Automatically Update Styles From Document Template + + + + + Suggested Filtering for List of Document Styles + + + + + Suggested Sorting for List of Document Styles + + + + + Document Classification + + + + + Mail Merge Settings + + + + + Visibility of Annotation Types + + + + + Track Revisions to Document + + + + + Do Not Use Move Syntax When Tracking Revisions + + + + + Do Not Track Formatting Revisions When Tracking Revisions + + + + + Document Editing Restrictions + + + + + Allow Automatic Formatting to Override Formatting Protection Settings + + + + + Prevent Modification of Themes Part + + + + + Prevent Replacement of Styles Part + + + + + Distance Between Automatic Tab Stops + + + + + Automatically Hyphenate Document Contents When Displayed + + + + + Maximum Number of Consecutively Hyphenated Lines + + + + + Hyphenation Zone + + + + + Do Not Hyphenate Words in ALL CAPITAL LETTERS + + + + + Show E-Mail Message Header + + + + + Percentage of Document to Use When Generating Summary + + + + + Paragraph Style Applied to Automatically Generated Paragraphs + + + + + Default Table Style for Newly Inserted Tables + + + + + Different Even/Odd Page Headers and Footers + + + + + Reverse Book Fold Printing + + + + + Book Fold Printing + + + + + Number of Pages Per Booklet + + + + + Drawing Grid Horizontal Grid Unit Size + + + + + Drawing Grid Vertical Grid Unit Size + + + + + Distance between Horizontal Gridlines + + + + + Distance between Vertical Gridlines + + + + + Do Not Use Margins for Drawing Grid Origin + + + + + Drawing Grid Horizontal Origin Point + + + + + Drawing Grid Vertical Origin Point + + + + + Do Not Show Visual Indicator For Form Fields + + + + + Never Kern Punctuation Characters + + + + + Character-Level Whitespace Compression + + + + + Print Two Pages Per Sheet + + + + + Use Strict Kinsoku Rules for Japanese Text + + + + + Custom Set of Characters Which Cannot End a Line + + + + + Custom Set Of Characters Which Cannot Begin A Line + + + + + Generate Thumbnail For Document On Save + + + + + Do Not Validate Custom XML Markup Against Schemas + + + + + Allow Saving Document As XML File When Custom XML Markup Is Invalid + + + + + Ignore Mixed Content When Validating Custom XML Markup + + + + + Use Custom XML Element Names as Default Placeholder Text + + + + + Do Not Show Visual Indicator For Invalid Custom XML Markup + + + + + Only Save Custom XML Markup + + + + + Save Document as XML File through Custom XSL Transform + + + + + Custom XSL Transform To Use When Saving As XML File + + + + + Show Visual Indicators for Custom XML Markup Start/End Locations + + + + + Do Not Mark Custom XML Elements With No Namespace As Invalid + + + + + Automatically Recalculate Fields on Open + + + + + Default Properties for VML Objects in Header and Footer + + + + + Document-Wide Footnote Properties + + + + + Document-Wide Endnote Properties + + + + + Compatibility Settings + + + + + Document Variables + + + + + Listing of All Revision Save ID Values + + + + + properties of math in the document + + + + + Disable Features Incompatible With Earlier Word Processing Formats + + + + + Attached Custom XML Schema + + + + + Theme Font Languages + + + + + Theme Color Mappings + + + + + Do Not Include Content in Text Boxes, Footnotes, and Endnotes in Document Statistics + + + + + Do Not Automatically Compress Images + + + + + Upgrade Document on Open + + + + + Caption Settings + + + + + Freeze Document Layout + + + + + Supplementary Smart Tag Information + + + + + Custom XML Schema List + + + + + Default Properties for VML Objects in Main Document + + + + + Remove Smart Tags When Saving + + + + + Radix Point for Field Code Evaluation + + + + + List Separator for Field Code Evaluation + + + + + + + + + Root Frameset Definition + + + + + Information about HTML div Elements + + + + + Output Encoding When Saving as Web Page + + + + + Disable Features Not Supported by Target Web Browser + + + + + Utilize VML When Saving as Web Page + + + + + Allow PNG as Graphic Format + + + + + Do Not Rely on CSS for Font Face Formatting + + + + + Recommend Web Page Format over Single File Web Page Format + + + + + Do Not Place Supporting Files in Subdirectory + + + + + Do Not Use File Names Longer than 8.3 Characters + + + + + Pixels per Inch for Graphics/Images + + + + + Target Screen Size for Web Page + + + + + Save Smart Tag Data in XML Property Bag + + + + + + + Frame Scrollbar Visibility + + + + + Always Show Scrollbar + + + + + Never Show Scrollbar + + + + + Automatically Show Scrollbar As Needed + + + + + + + + Scrollbar Display Option Value + + + + + + + + Frame Size + + + + + Frame Name + + + + + Source File for Frame + + + + + Left and Right Margin for Frame + + + + + Top and Bottom Margin for Frame + + + + + Scrollbar Display Option + + + + + Frame Cannot Be Resized + + + + + Maintain Link to Existing File + + + + + + + Frameset Layout Order + + + + + Stack Frames Vertically + + + + + Stack Frames Horizontally + + + + + Do Not Stack Frames + + + + + + + + Frameset Layout Value + + + + + + + + Frameset Splitter Width + + + + + Frameset Splitter Color + + + + + Do Not Display Frameset Splitters + + + + + Frameset Splitter Border Style + + + + + + + + + Nested Frameset Size + + + + + Frameset Splitter Properties + + + + + Frameset Layout + + + + + + Nested Frameset Definition + + + + + Single Frame Properties + + + + + + + + + + Picture Numbering Symbol Properties + + + + + + Picture Numbering Symbol ID + + + + + + Content Between Numbering Symbol and Paragraph Text + + + + + Tab Between Numbering and Text + + + + + Space Between Numbering and Text + + + + + Nothing Between Numbering and Text + + + + + + + + Character Type Between Numbering and Text + + + + + + + Level Text + + + + + Level Text Is Null Character + + + + + + + Use Legacy Numbering Properties + + + + + Legacy Spacing + + + + + Legacy Indent + + + + + + + + Starting Value + + + + + Numbering Format + + + + + Restart Numbering Level Symbol + + + + + Paragraph Style's Associated Numbering Level + + + + + Display All Levels Using Arabic Numerals + + + + + Content Between Numbering Symbol and Paragraph Text + + + + + Numbering Level Text + + + + + Picture Numbering Symbol Definition Reference + + + + + Legacy Numbering Level Properties + + + + + Justification + + + + + Numbering Level Associated Paragraph Properties + + + + + Numbering Symbol Run Properties + + + + + + Numbering Level + + + + + Template Code + + + + + Tentative Numbering + + + + + + Numbering Definition Type + + + + + Single Level Numbering Definition + + + + + Multilevel Numbering Definition + + + + + Hybrid Multilevel Numbering Definition + + + + + + + + Abstract Numbering Definition Type + + + + + + + + Abstract Numbering Definition Identifier + + + + + Abstract Numbering Definition Type + + + + + Numbering Template Code + + + + + Abstract Numbering Definition Name + + + + + Numbering Style Definition + + + + + Numbering Style Reference + + + + + Numbering Level Definition + + + + + + Abstract Numbering Definition ID + + + + + + + + Numbering Level Starting Value Override + + + + + Numbering Level Override Definition + + + + + + Numbering Level ID + + + + + + + + Abstract Numbering Definition Reference + + + + + Numbering Level Definition Override + + + + + + Numbering Definition Instance ID + + + + + + + + Picture Numbering Symbol Definition + + + + + Abstract Numbering Definition + + + + + Numbering Definition Instance + + + + + Last Reviewed Abstract Numbering Definition + + + + + + + Conditional Table Style Formatting Types + + + + + Whole table formatting + + + + + First Row Conditional Formatting + + + + + Last table row formatting + + + + + First Column Conditional Formatting + + + + + Last table column formatting + + + + + Banded Column Conditional Formatting + + + + + Even Column Stripe Conditional Formatting + + + + + Banded Row Conditional Formatting + + + + + Even Row Stripe Conditional Formatting + + + + + Top right table cell formatting + + + + + Top left table cell formatting + + + + + Bottom right table cell formatting + + + + + Bottom left table cell formatting + + + + + + + + + Table Style Conditional Formatting Paragraph Properties + + + + + Table Style Conditional Formatting Run Properties + + + + + Table Style Conditional Formatting Table Properties + + + + + Table Style Conditional Formatting Table Row Properties + + + + + Table Style Conditional Formatting Table Cell Properties + + + + + + Table Style Conditional Formatting Type + + + + + + Style Types + + + + + Paragraph Style + + + + + Character Style + + + + + Table Style + + + + + Numbering Style + + + + + + + + + Primary Style Name + + + + + Alternate Style Names + + + + + Parent Style ID + + + + + Style For Next Paragraph + + + + + Linked Style Reference + + + + + Automatically Merge User Formatting Into Style Definition + + + + + Hide Style From User Interface + + + + + Optional User Interface Sorting Order + + + + + Hide Style From Main User Interface + + + + + Remove Semi-Hidden Property When Style Is Used + + + + + Primary Style + + + + + Style Cannot Be Applied + + + + + E-Mail Message Text Style + + + + + E-Mail Message Composition Style + + + + + E-Mail Message Reply Style + + + + + Revision Identifier for Style Definition + + + + + Style Paragraph Properties + + + + + Run Properties + + + + + Style Table Properties + + + + + Style Table Row Properties + + + + + Style Table Cell Properties + + + + + Style Conditional Table Formatting Properties + + + + + + Style Type + + + + + Style ID + + + + + Default Style + + + + + User-Defined Style + + + + + + + Primary Style Name + + + + + Latent Style Locking Setting + + + + + Override default sorting order + + + + + Semi hidden text override + + + + + Unhide when used + + + + + Latent Style Primary Style Setting + + + + + + + + Latent Style Exception + + + + + + Default Style Locking Setting + + + + + Default User Interface Priority Setting + + + + + Default Semi-Hidden Setting + + + + + Default Hidden Until Used Setting + + + + + Default Primary Style Setting + + + + + Latent Style Count + + + + + + + + Document Default Paragraph and Run Properties + + + + + Latent Style Information + + + + + Style Definition + + + + + + + Panose-1 Number + + + + + + + + + Value + + + + + + Font Family Value + + + + + Novelty Font + + + + + Monospace Font + + + + + Proportional Font With Serifs + + + + + Script Font + + + + + Proportional Font Without Serifs + + + + + No Font Family + + + + + + + + Font Family Value + + + + + + Font Pitch Value + + + + + Fixed Width + + + + + Proportional Width + + + + + Default + + + + + + + + Value + + + + + + + First 32 Bits of Unicode Subset Bitfield + + + + + Second 32 Bits of Unicode Subset Bitfield + + + + + Third 32 Bits of Unicode Subset Bitfield + + + + + Fourth 32 Bits of Unicode Subset Bitfield + + + + + Lower 32 Bits of Code Page Bit Field + + + + + Upper 32 Bits of Code Page Bit Field + + + + + + + + + Embedded Font Obfuscation Key + + + + + Embedded Font Is Subsetted + + + + + + + + + + Alternate Names for Font + + + + + Pansose-1 Typeface Classification Number + + + + + Character Set Supported By Font + + + + + Font Family + + + + + Raster or Vector Font + + + + + Font Pitch + + + + + Supported Unicode Subranges and Code Pages + + + + + Regular Font Style Embedding + + + + + Bold Style Font Style Embedding + + + + + Italic Font Style Embedding + + + + + Bold Italic Font Style Embedding + + + + + + Primary Font Name + + + + + + + + Properties for a Single Font + + + + + + + + + Top Border for HTML div + + + + + Left Border for HTML div + + + + + Bottom Border for HTML div + + + + + Right Border for HTML div + + + + + + + + + Data for HTML blockquote Element + + + + + Data for HTML body Element + + + + + Left Margin for HTML div + + + + + Right Margin for HTML div + + + + + Top Margin for HTML div + + + + + Bottom Margin for HTML div + + + + + Set of Borders for HTML div + + + + + Child div Elements Contained within Current div + + + + + + div Data ID + + + + + + + + Information About Single HTML div Element + + + + + + + + + + Rich Text Box Content Container + + + + + + + + + + + + + + + + + + + Anchor for Imported External Content + + + + + + + + + Proofing Error Anchor + + + + + Range Permission Start + + + + + Range Permission End + + + + + + Inserted Run Content + + + + + Deleted Run Content + + + + + Move Source Run Content + + + + + Move Destination Run Content + + + + + + + + + + + Document Final Section Properties + + + + + + + + + + + + + + Comment Content + + + + + + + Comments Collection + + + + + + + Footnote Content + + + + + + + Document Footnotes + + + + + + + Endnote Content + + + + + + + Document Endnotes + + + + + Header + + + + + Footer + + + + + + Smart Tag Namespace + + + + + Smart Tag Name + + + + + Smart Tag Supplementary URL + + + + + + Theme Color + + + + + Dark 1 Theme Color + + + + + Light 1 Theme Color + + + + + Dark 2 Theme Color + + + + + Light 2 Theme Color + + + + + Accent 1 Theme Color + + + + + Accent 2 Theme Color + + + + + Accent 3 Theme Color + + + + + Accent 4 Theme Color + + + + + Accent 5 Theme Color + + + + + Accent 6 Theme Color + + + + + Hyperlink Theme Color + + + + + Followed Hyperlink Theme Color + + + + + No Theme Color + + + + + Background 1 Theme Color + + + + + Text 1 Theme Color + + + + + Background 2 Theme Color + + + + + Text 2 Theme Color + + + + + + + Insertion Behavior Types + + + + + Insert Content At Specified Location + + + + + Ensure Entry Is In New Paragraph + + + + + Ensure Entry Is On New Page + + + + + + + + Insertion Behavior Value + + + + + + + + Entry Insertion Behavior + + + + + + + Entry Types + + + + + No Type + + + + + Normal + + + + + Automatically Replace Name With Content + + + + + AutoText User Interface Entry + + + + + AutoCorrect Entry + + + + + Form Field Help Text + + + + + Structured Document Tag Placeholder Text + + + + + + + + Type Value + + + + + + + + Entry Type + + + + + + Entry Is Of All Types + + + + + + Entry Gallery Types + + + + + Structured Document Tag Placeholder Text Gallery + + + + + All Galleries + + + + + No Gallery Classification + + + + + Document Parts Gallery + + + + + Cover Page Gallery + + + + + Equations Gallery + + + + + Footers Gallery + + + + + Headers Gallery + + + + + Page Numbers Gallery + + + + + Table Gallery + + + + + Watermark Gallery + + + + + AutoText Gallery + + + + + Text Box Gallery + + + + + Page Numbers At Top Gallery + + + + + Page Numbers At Bottom Gallery + + + + + Page Numbers At Margins Gallery + + + + + Table of Contents Gallery + + + + + Bibliography Gallery + + + + + Custom Quick Parts Gallery + + + + + Custom Cover Page Gallery + + + + + Custom Equation Gallery + + + + + Custom Footer Gallery + + + + + Custom Header Gallery + + + + + Custom Page Number Gallery + + + + + Custom Table Gallery + + + + + Custom Watermark Gallery + + + + + Custom AutoText Gallery + + + + + Custom Text Box Gallery + + + + + Custom Page Number At Top Gallery + + + + + Custom Page Number At Bottom Gallery + + + + + Custom Page Number At Margins Gallery + + + + + Custom Table of Contents Gallery + + + + + Custom Bibliography Gallery + + + + + Custom 1 Gallery + + + + + Custom 2 Gallery + + + + + Custom 3 Gallery + + + + + Custom 4 Gallery + + + + + Custom 5 Gallery + + + + + + + + Gallery Value + + + + + + + + Category Associated With Entry + + + + + Gallery Associated With Entry + + + + + + + + Name Value + + + + + Built-In Entry + + + + + + + + Entry Name + + + + + Associated Paragraph Style Name + + + + + Entry Categorization + + + + + Entry Types + + + + + Entry Insertion Behaviors + + + + + Description for Entry + + + + + Entry ID + + + + + + + + + Glossary Document Entry Properties + + + + + Contents of Glossary Document Entry + + + + + + + + + Glossary Document Entry + + + + + + + Document Settings + + + + + Web Page Settings + + + + + Font Table Root Element + + + + + Numbering Definitions + + + + + Style Definitions + + + + + Automatic Caption Positioning Values + + + + + Position Caption Above Object + + + + + Position Caption Below Object + + + + + Position Caption Left Of Object + + + + + Position Caption Right Of Object + + + + + + + + Caption Type Name + + + + + Automatic Caption Placement + + + + + Include Chapter Number in Field for Caption + + + + + Style for Chapter Headings + + + + + Do Not Include Name In Caption + + + + + Caption Numbering Format + + + + + Chapter Number/Item Index Separator + + + + + + + Identifier of Object to be Automatically Captioned + + + + + Caption Used for Automatic Captioning + + + + + + + + Single Automatic Captioning Setting + + + + + + + + + Single Caption Type Definition + + + + + Automatic Captioning Settings + + + + + + + + + Document Background + + + + + + + + + + + Document Body + + + + + + + + + + + + + List of Glossary Document Entries + + + + + + + + + Document + + + + + Glossary Document Root Element + + + \ No newline at end of file From b005ad2558b7d092be036d2de4358d36d16a9f3e Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 28 May 2019 22:03:15 +0200 Subject: [PATCH 063/139] #382 : Fixes ECMA-376 --- .../Tests/Shape/Drawing/DrawingTest.php | 4 +- .../PowerPoint2007/CommentAuthorsTest.php | 8 +- .../Writer/PowerPoint2007/DocPropsAppTest.php | 4 +- .../PowerPoint2007/DocPropsCoreTest.php | 8 +- .../PowerPoint2007/DocPropsCustomTest.php | 6 +- .../PowerPoint2007/DocPropsThumbnailTest.php | 4 +- .../Writer/PowerPoint2007/PptChartsTest.php | 108 ++++++++--------- .../Writer/PowerPoint2007/PptCommentsTest.php | 4 +- .../Writer/PowerPoint2007/PptMediaTest.php | 8 +- .../PowerPoint2007/PptPresPropsTest.php | 6 +- .../PowerPoint2007/PptPresentationTest.php | 2 +- .../Writer/PowerPoint2007/PptSlidesTest.php | 110 +++++++++--------- .../PowerPoint2007/PptTablePropsTest.php | 2 +- .../PowerPoint2007/PptViewPropsTest.php | 6 +- .../PowerPoint2007/RelationshipsTest.php | 2 +- .../Tests/Writer/PowerPoint2007Test.php | 8 +- .../_includes/PhpPresentationTestCase.php | 62 ++++++++-- 17 files changed, 196 insertions(+), 156 deletions(-) diff --git a/tests/PhpPresentation/Tests/Shape/Drawing/DrawingTest.php b/tests/PhpPresentation/Tests/Shape/Drawing/DrawingTest.php index eb520c00cb..deb3e04a8f 100644 --- a/tests/PhpPresentation/Tests/Shape/Drawing/DrawingTest.php +++ b/tests/PhpPresentation/Tests/Shape/Drawing/DrawingTest.php @@ -30,10 +30,10 @@ function function_exists($function) namespace PhpOffice\PhpPresentation\Tests\Shape\Drawing; // @codingStandardsIgnoreStart -use PhpOffice\PhpPresentation\Tests\PhpPresentationTestCase; +use PHPUnit\Framework\TestCase; // @codingStandardsIgnoreEnd -class DrawingTest extends PhpPresentationTestCase +class DrawingTest extends TestCase { public static $getimagesizefromstringExists = true; diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/CommentAuthorsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/CommentAuthorsTest.php index 0c84664496..23ed3a4023 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/CommentAuthorsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/CommentAuthorsTest.php @@ -27,13 +27,13 @@ public function testComments() $this->assertZipXmlAttributeEquals('ppt/commentAuthors.xml', $expectedElement, 'id', 0); $this->assertZipXmlAttributeEquals('ppt/commentAuthors.xml', $expectedElement, 'name', $expectedName); $this->assertZipXmlAttributeEquals('ppt/commentAuthors.xml', $expectedElement, 'initials', $expectedInitials); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testWithoutComment() { $this->assertZipFileNotExists('ppt/commentAuthors.xml'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testWithoutCommentAuthor() @@ -42,7 +42,7 @@ public function testWithoutCommentAuthor() $this->oPresentation->getActiveSlide()->addShape($oComment); $this->assertZipFileNotExists('ppt/commentAuthors.xml'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testWithSameAuthor() @@ -61,6 +61,6 @@ public function testWithSameAuthor() $this->assertZipFileExists('ppt/commentAuthors.xml'); $this->assertZipXmlElementExists('ppt/commentAuthors.xml', $expectedElement); $this->assertZipXmlElementCount('ppt/commentAuthors.xml', $expectedElement, 1); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsAppTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsAppTest.php index a4212fa690..03683ac2e8 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsAppTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsAppTest.php @@ -17,7 +17,7 @@ class DocPropsAppTest extends PhpPresentationTestCase public function testRender() { $this->assertZipFileExists('docProps/app.xml'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testCompany() @@ -29,6 +29,6 @@ public function testCompany() $this->assertZipFileExists('docProps/app.xml'); $this->assertZipXmlElementExists('docProps/app.xml', '/Properties/Company'); $this->assertZipXmlElementEquals('docProps/app.xml', '/Properties/Company', $expected); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCoreTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCoreTest.php index 9bf83df0ab..7fa2041157 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCoreTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCoreTest.php @@ -12,7 +12,7 @@ public function testRender() { $this->assertZipFileExists('docProps/core.xml'); $this->assertZipXmlElementNotExists('docProps/core.xml', '/cp:coreProperties/cp:contentStatus'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testDocumentProperties() @@ -40,7 +40,7 @@ public function testDocumentProperties() $this->assertZipXmlElementEquals('docProps/core.xml', '/cp:coreProperties/cp:keywords', $expected); $this->assertZipXmlElementExists('docProps/core.xml', '/cp:coreProperties/cp:category'); $this->assertZipXmlElementEquals('docProps/core.xml', '/cp:coreProperties/cp:category', $expected); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testMarkAsFinalTrue() @@ -49,7 +49,7 @@ public function testMarkAsFinalTrue() $this->assertZipXmlElementExists('docProps/core.xml', '/cp:coreProperties/cp:contentStatus'); $this->assertZipXmlElementEquals('docProps/core.xml', '/cp:coreProperties/cp:contentStatus', 'Final'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testMarkAsFinalFalse() @@ -57,6 +57,6 @@ public function testMarkAsFinalFalse() $this->oPresentation->getPresentationProperties()->markAsFinal(false); $this->assertZipXmlElementNotExists('docProps/core.xml', '/cp:coreProperties/cp:contentStatus'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCustomTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCustomTest.php index 3cb1e404d9..879e846ea4 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCustomTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsCustomTest.php @@ -12,7 +12,7 @@ public function testRender() { $this->assertZipFileExists('docProps/custom.xml'); $this->assertZipXmlElementNotExists('docProps/custom.xml', '/Properties/property[@name="_MarkAsFinal"]'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testMarkAsFinalTrue() @@ -23,7 +23,7 @@ public function testMarkAsFinalTrue() $this->assertZipXmlElementExists('docProps/custom.xml', '/Properties/property'); $this->assertZipXmlElementExists('docProps/custom.xml', '/Properties/property[@pid="2"][@fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}"][@name="_MarkAsFinal"]'); $this->assertZipXmlElementExists('docProps/custom.xml', '/Properties/property[@pid="2"][@fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}"][@name="_MarkAsFinal"]/vt:bool'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testMarkAsFinalFalse() @@ -31,6 +31,6 @@ public function testMarkAsFinalFalse() $this->oPresentation->getPresentationProperties()->markAsFinal(false); $this->assertZipXmlElementNotExists('docProps/custom.xml', '/Properties/property[@name="_MarkAsFinal"]'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsThumbnailTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsThumbnailTest.php index 0aad767255..a19e2038d6 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsThumbnailTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/DocPropsThumbnailTest.php @@ -15,7 +15,7 @@ class DocPropsThumbnailTest extends PhpPresentationTestCase public function testRender() { $this->assertZipFileNotExists('docProps/thumbnail.jpeg'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testFeatureThumbnail() @@ -24,6 +24,6 @@ public function testFeatureThumbnail() $this->oPresentation->getPresentationProperties()->setThumbnailPath($imagePath); $this->assertZipFileExists('docProps/thumbnail.jpeg'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php index ab5c62ba56..2ee2aaf68b 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php @@ -71,7 +71,7 @@ public function testTitleVisibilityTrue() $this->assertTrue($oShape->getTitle()->isVisible()); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '0'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTitleVisibilityFalse() @@ -88,7 +88,7 @@ public function testTitleVisibilityFalse() $this->assertFalse($oShape->getTitle()->isVisible()); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '1'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testAxisFont() @@ -129,7 +129,7 @@ public function testAxisFont() $this->assertZipXmlAttributeEquals($pathShape, $element, 'strike', 'noStrike'); $this->assertZipXmlAttributeEquals($pathShape, $element, 'u', Font::UNDERLINE_DASH); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testAxisOutline() @@ -169,7 +169,7 @@ public function testAxisOutline() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $expectedColorY); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testAxisVisibilityFalse() @@ -187,7 +187,7 @@ public function testAxisVisibilityFalse() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '1'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testAxisVisibilityTrue() @@ -205,7 +205,7 @@ public function testAxisVisibilityTrue() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '0'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeArea() @@ -226,7 +226,7 @@ public function testTypeArea() $element = '/c:chartSpace/c:chart/c:plotArea/c:areaChart/c:ser'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeAxisBounds() @@ -246,7 +246,7 @@ public function testTypeAxisBounds() $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $this->resetPresentationFile(); @@ -255,7 +255,7 @@ public function testTypeAxisBounds() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getPlotArea()->getAxisX()->setMinBounds(null); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); @@ -265,7 +265,7 @@ public function testTypeAxisBounds() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); @@ -276,7 +276,7 @@ public function testTypeAxisBounds() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeAxisTickMark() @@ -298,7 +298,7 @@ public function testTypeAxisTickMark() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', Axis::TICK_MARK_NONE); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getPlotArea()->getAxisY()->setMinorTickMark($value); $this->resetPresentationFile(); @@ -308,7 +308,7 @@ public function testTypeAxisTickMark() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getPlotArea()->getAxisY()->setMinorTickMark(); $oShape->getPlotArea()->getAxisY()->setMajorTickMark($value); @@ -319,7 +319,7 @@ public function testTypeAxisTickMark() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getPlotArea()->getAxisY()->setMinorTickMark($value); $oShape->getPlotArea()->getAxisY()->setMajorTickMark($value); @@ -330,7 +330,7 @@ public function testTypeAxisTickMark() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeAxisUnit() @@ -350,7 +350,7 @@ public function testTypeAxisUnit() $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getPlotArea()->getAxisY()->setMinorUnit($value); $this->resetPresentationFile(); @@ -359,7 +359,7 @@ public function testTypeAxisUnit() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMin, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getPlotArea()->getAxisY()->setMinorUnit(null); $oShape->getPlotArea()->getAxisY()->setMajorUnit($value); @@ -369,7 +369,7 @@ public function testTypeAxisUnit() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getPlotArea()->getAxisY()->setMinorUnit($value); $oShape->getPlotArea()->getAxisY()->setMajorUnit($value); @@ -380,7 +380,7 @@ public function testTypeAxisUnit() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $elementMax, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeBar() @@ -413,7 +413,7 @@ public function testTypeBar() $element = '/c:chartSpace/c:chart/c:plotArea/c:barChart/c:gapWidth'; $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $valueGapWidthPercent); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeBar3D() @@ -446,7 +446,7 @@ public function testTypeBar3D() $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:gapWidth'; $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $valueGapWidthPercent); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeBar3DSubScript() @@ -463,7 +463,7 @@ public function testTypeBar3DSubScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeBar3DSuperScript() @@ -480,7 +480,7 @@ public function testTypeBar3DSuperScript() $element = '/c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser/c:dLbls/c:txPr/a:p/a:pPr/a:defRPr'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeDoughnut() @@ -553,7 +553,7 @@ public function testTypeBar3DBarDirection() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', Bar3D::DIRECTION_HORIZONTAL); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeLine() @@ -575,7 +575,7 @@ public function testTypeLine() $element = '/c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:tx/c:v'; $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeLineGridlines() @@ -635,7 +635,7 @@ public function testTypeLineGridlines() $this->assertZipXmlAttributeExists('ppt/charts/' . $oShape->getIndexedFilename(), $arrayTest['expectedElementColor'], 'val'); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $arrayTest['expectedElementColor'], 'val', $expectedColor->getRGB()); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $this->resetPresentationFile(); } @@ -664,7 +664,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedEltSymbol, 'val', $expectedSymbol); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', $expectedSize); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->getMarker()->setSize(1); $oLine->setSeries(array($oSeries)); @@ -673,7 +673,7 @@ public function testTypeLineMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', 2); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->getMarker()->setSize(73); $oLine->setSeries(array($oSeries)); @@ -682,7 +682,7 @@ public function testTypeLineMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', 72); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->getMarker()->setSymbol(Marker::SYMBOL_NONE); $oLine->setSeries(array($oSeries)); @@ -691,7 +691,7 @@ public function testTypeLineMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedEltSymbol); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeLineSeriesOutline() @@ -716,7 +716,7 @@ public function testTypeLineSeriesOutline() $this->assertZipFileExists('ppt/charts/' . $oShape->getIndexedFilename()); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->setOutline($oOutline); $oLine->setSeries(array($oSeries)); @@ -727,7 +727,7 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement, 'w', $expectedWidthEmu); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement . '/a:solidFill'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeLineSubScript() @@ -745,7 +745,7 @@ public function testTypeLineSubScript() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeLineSuperScript() @@ -763,7 +763,7 @@ public function testTypeLineSuperScript() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypePie() @@ -795,7 +795,7 @@ public function testTypePie() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 0); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->setShowLegendKey(true); $this->resetPresentationFile(); @@ -804,7 +804,7 @@ public function testTypePie() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 1); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypePie3D() @@ -833,7 +833,7 @@ public function testTypePie3D() $element = '/c:chartSpace/c:chart/c:plotArea/c:pie3DChart/c:ser/c:tx/c:v'; $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, $oSeries->getTitle()); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypePie3DExplosion() @@ -853,7 +853,7 @@ public function testTypePie3DExplosion() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', $value); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypePie3DSubScript() @@ -871,7 +871,7 @@ public function testTypePie3DSubScript() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypePie3DSuperScript() @@ -889,7 +889,7 @@ public function testTypePie3DSuperScript() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeScatter() @@ -914,7 +914,7 @@ public function testTypeScatter() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 0); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->setShowLegendKey(true); $this->resetPresentationFile(); @@ -923,7 +923,7 @@ public function testTypeScatter() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', 1); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeScatterMarker() @@ -949,7 +949,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedEltSymbol, 'val', $expectedSymbol); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', $expectedSize); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->getMarker()->setSize(1); $oScatter->setSeries(array($oSeries)); @@ -958,7 +958,7 @@ public function testTypeScatterMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', 2); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->getMarker()->setSize(73); $oScatter->setSeries(array($oSeries)); @@ -967,7 +967,7 @@ public function testTypeScatterMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize, 'val', 72); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->getMarker()->setSymbol(Marker::SYMBOL_NONE); $oScatter->setSeries(array($oSeries)); @@ -976,7 +976,7 @@ public function testTypeScatterMarker() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedEltSymbol); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElementSize); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeScatterSeparator() @@ -992,14 +992,14 @@ public function testTypeScatterSeparator() $oShape->getPlotArea()->setType($oScatter); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->setSeparator($expectedSeparator); $this->resetPresentationFile(); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement); $this->assertZipXmlElementEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement, $expectedSeparator); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeScatterSeriesOutline() @@ -1026,7 +1026,7 @@ public function testTypeScatterSeriesOutline() $this->assertZipFileExists('ppt/charts/' . $oShape->getIndexedFilename()); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oSeries->setOutline($oOutline); $oScatter->setSeries(array($oSeries)); @@ -1037,7 +1037,7 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement, 'w', $expectedWidthEmu); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $expectedElement . '/a:solidFill'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeScatterSubScript() @@ -1055,7 +1055,7 @@ public function testTypeScatterSubScript() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '-250000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTypeScatterSuperScript() @@ -1073,7 +1073,7 @@ public function testTypeScatterSuperScript() $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'baseline', '300000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testView3D() @@ -1087,12 +1087,12 @@ public function testView3D() $element = '/c:chartSpace/c:chart/c:view3D/c:hPercent'; $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'val', '100'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oShape->getView3D()->setHeightPercent(null); $this->resetPresentationFile(); $this->assertZipXmlElementNotExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptCommentsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptCommentsTest.php index ad5c418216..84a89f3fd0 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptCommentsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptCommentsTest.php @@ -21,11 +21,11 @@ public function testComments() $this->assertZipFileExists('ppt/comments/comment1.xml'); $this->assertZipXmlElementExists('ppt/comments/comment1.xml', $expectedElement); $this->assertZipXmlAttributeEquals('ppt/comments/comment1.xml', $expectedElement, 'authorId', 0); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testWithoutComment() { $this->assertZipFileNotExists('ppt/comments/comment1.xml'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php index 95f31caaef..de0e11e6e0 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php @@ -21,7 +21,7 @@ public function testDrawing() $oShape->setPath(PHPPRESENTATION_TESTS_BASE_DIR.'/resources/images/PhpPresentationLogo.png'); $this->assertZipFileExists('ppt/media/' . $oShape->getIndexedFilename()); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -48,7 +48,7 @@ public function testDrawingZip() $oSlide->addShape($oDrawing); $this->assertZipFileExists('ppt/media/' . $oDrawing->getIndexedFilename()); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -78,7 +78,7 @@ public function testDrawingBase64() $oSlide->addShape($oShape); $this->assertZipFileExists('ppt/media/' . $oShape->getIndexedFilename()); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testMemoryDrawing() @@ -94,6 +94,6 @@ public function testMemoryDrawing() $oSlide->addShape($oShape); $this->assertZipFileExists('ppt/media/' . $oShape->getIndexedFilename()); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresPropsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresPropsTest.php index e2d348abe3..fcc07381d8 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresPropsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresPropsTest.php @@ -14,7 +14,7 @@ public function testRender() $element = '/p:presentationPr/p:extLst/p:ext'; $this->assertZipXmlElementExists('ppt/presProps.xml', $element); $this->assertZipXmlAttributeEquals('ppt/presProps.xml', $element, 'uri', '{E76CE94A-603C-4142-B9EB-6D1370010A27}'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testLoopContinuously() @@ -22,7 +22,7 @@ public function testLoopContinuously() $this->assertZipFileExists('ppt/presProps.xml'); $element = '/p:presentationPr/p:showPr'; $this->assertZipXmlElementNotExists('ppt/presProps.xml', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $this->oPresentation->getPresentationProperties()->setLoopContinuouslyUntilEsc(true); $this->resetPresentationFile(); @@ -32,6 +32,6 @@ public function testLoopContinuously() $this->assertZipXmlElementExists('ppt/presProps.xml', $element); $this->assertZipXmlAttributeExists('ppt/presProps.xml', $element, 'loop'); $this->assertZipXmlAttributeEquals('ppt/presProps.xml', $element, 'loop', 1); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresentationTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresentationTest.php index dbd6bf6db9..97496d2028 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresentationTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptPresentationTest.php @@ -11,6 +11,6 @@ class PptPresentationTest extends PhpPresentationTestCase public function testRender() { $this->assertZipFileExists('ppt/presentation.xml'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php index 4bff0530c2..e31731e41d 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptSlidesTest.php @@ -37,7 +37,7 @@ public function testAlignmentShapeAuto() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $element, 'anchor'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -53,7 +53,7 @@ public function testAlignmentShapeBase() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $element, 'anchor'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -69,7 +69,7 @@ public function testAlignmentShapeBottom() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'anchor', Alignment::VERTICAL_BOTTOM); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -85,7 +85,7 @@ public function testAlignmentShapeCenter() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'anchor', Alignment::VERTICAL_CENTER); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -101,7 +101,7 @@ public function testAlignmentShapeTop() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'anchor', Alignment::VERTICAL_TOP); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testAnimation() @@ -120,7 +120,7 @@ public function testAnimation() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $element = '/p:sld/p:timing/p:tnLst/p:par/p:cTn/p:childTnLst/p:seq/p:cTn/p:childTnLst/p:par/p:cTn/p:childTnLst/p:par/p:cTn/p:childTnLst/p:par'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testCommentRelationship() @@ -130,7 +130,7 @@ public function testCommentRelationship() $element = '/Relationships/Relationship[@Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"]'; $this->assertZipXmlElementExists('ppt/slides/_rels/slide1.xml.rels', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testCommentInGroupRelationship() @@ -142,7 +142,7 @@ public function testCommentInGroupRelationship() $element = '/Relationships/Relationship[@Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"]'; $this->assertZipXmlElementExists('ppt/slides/_rels/slide1.xml.rels', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testDrawingWithHyperlink() @@ -155,7 +155,7 @@ public function testDrawingWithHyperlink() $element = '/p:sld/p:cSld/p:spTree/p:pic/p:nvPicPr/p:cNvPr/a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'r:id', 'rId3'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testDrawingShapeBorder() @@ -168,7 +168,7 @@ public function testDrawingShapeBorder() $element = '/p:sld/p:cSld/p:spTree/p:pic/p:spPr/a:ln'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'cmpd', Border::LINE_DOUBLE); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testDrawingShapeFill() @@ -187,7 +187,7 @@ public function testDrawingShapeFill() $element = '/p:sld/p:cSld/p:spTree/p:pic/p:spPr/a:solidFill/a:srgbClr/a:alpha'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', (string)($oColor->getAlpha() * 1000)); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testDrawingShapeShadow() @@ -199,7 +199,7 @@ public function testDrawingShapeShadow() $element = '/p:sld/p:cSld/p:spTree/p:pic/p:spPr/a:effectLst/a:outerShdw'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testFillGradientLinearTable() @@ -222,7 +222,7 @@ public function testFillGradientLinearTable() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="100000"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -245,7 +245,7 @@ public function testFillGradientLinearRichText() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="100000"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testFillGradientPathTable() @@ -268,7 +268,7 @@ public function testFillGradientPathTable() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:gradFill/a:gsLst/a:gs[@pos="100000"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -291,7 +291,7 @@ public function testFillGradientPathText() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:gradFill/a:gsLst/a:gs[@pos="100000"]/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testFillPatternTable() @@ -314,7 +314,7 @@ public function testFillPatternTable() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:pattFill/a:bgClr/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected2); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testFillSolidTable() @@ -333,7 +333,7 @@ public function testFillSolidTable() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:tcPr/a:solidFill/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -352,7 +352,7 @@ public function testFillSolidText() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:solidFill/a:srgbClr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expected); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testHyperlink() @@ -364,7 +364,7 @@ public function testHyperlink() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr/a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testHyperlinkInternal() @@ -377,7 +377,7 @@ public function testHyperlinkInternal() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr/a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'action', 'ppaction://hlinksldjump'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testListBullet() @@ -407,7 +407,7 @@ public function testListBullet() $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element . '/a:buClr/a:srgbClr', 'val', $oExpectedColor); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:buClr/a:srgbClr/a:alpha'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element . '/a:buClr/a:srgbClr/a:alpha', 'val', $oExpectedAlpha); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testListNumeric() @@ -431,7 +431,7 @@ public function testListNumeric() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:buAutoNum'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element . '/a:buAutoNum', 'type', $oExpectedChar); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element . '/a:buAutoNum', 'startAt', $oExpectedStart); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testLine() @@ -458,7 +458,7 @@ public function testLine() $element = '/p:sld/p:cSld/p:spTree/p:cxnSp/p:spPr/a:xfrm[@flipV="1"]/a:off[@x="' . $valEmu10 . '"][@y="' . $valEmu10 . '"]'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testMedia() @@ -491,7 +491,7 @@ public function testMedia() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'uri', '{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testNote() @@ -540,7 +540,7 @@ public function testNote() $element = '/p:notes/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:t'; $this->assertZipXmlElementExists('ppt/notesSlides/notesSlide1.xml', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testRichTextAutoFitNormal() @@ -557,7 +557,7 @@ public function testRichTextAutoFitNormal() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'fontScale', $expectedFontScale * 1000); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'lnSpcReduction', $expectedLnSpcReduction * 1000); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testRichTextBreak() @@ -568,7 +568,7 @@ public function testRichTextBreak() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:br'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testRichTextHyperlink() @@ -579,7 +579,7 @@ public function testRichTextHyperlink() $element = '/p:sld/p:cSld/p:spTree/p:sp//a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testRichTextLineSpacing() @@ -594,7 +594,7 @@ public function testRichTextLineSpacing() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:pPr/a:lnSpc/a:spcPct'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'val', $expectedLineSpacing * 1000); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testRichTextRunLanguage() @@ -607,7 +607,7 @@ public function testRichTextRunLanguage() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $expectedElement); $this->assertZipXmlAttributeExists('ppt/slides/slide1.xml', $expectedElement, 'lang'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $expectedElement, 'lang', 'en-US'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oRun->setLanguage('de_DE'); $this->resetPresentationFile(); @@ -616,7 +616,7 @@ public function testRichTextRunLanguage() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $expectedElement); $this->assertZipXmlAttributeExists('ppt/slides/slide1.xml', $expectedElement, 'lang'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $expectedElement, 'lang', 'de_DE'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testRichTextShadow() @@ -628,7 +628,7 @@ public function testRichTextShadow() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:spPr/a:effectLst/a:outerShdw'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testRichTextUpright() @@ -641,7 +641,7 @@ public function testRichTextUpright() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'upright', '1'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testRichTextVertical() @@ -654,13 +654,13 @@ public function testRichTextVertical() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'vert', 'vert'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testSlideLayoutExists() { $this->assertZipFileExists('ppt/slideLayouts/slideLayout1.xml'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testStyleCharacterSpacing() @@ -674,14 +674,14 @@ public function testStyleCharacterSpacing() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spc', '0'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oRun->getFont()->setCharacterSpacing(42); $this->resetPresentationFile(); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spc', '4200'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testStyleSubScript() @@ -694,7 +694,7 @@ public function testStyleSubScript() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'baseline', '-250000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testStyleSuperScript() @@ -707,7 +707,7 @@ public function testStyleSuperScript() $element = '/p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:p/a:r/a:rPr'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'baseline', '300000'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTableWithAlignment() @@ -723,7 +723,7 @@ public function testTableWithAlignment() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $element, 'anchor'); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $element, 'vert'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oCell->getActiveParagraph()->getAlignment()->setVertical(Alignment::VERTICAL_BOTTOM); $oCell->getActiveParagraph()->getAlignment()->setTextDirection(Alignment::TEXT_DIRECTION_STACKED); @@ -732,7 +732,7 @@ public function testTableWithAlignment() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'anchor', Alignment::VERTICAL_BOTTOM); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'vert', Alignment::TEXT_DIRECTION_STACKED); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTableWithBorder() @@ -771,7 +771,7 @@ public function testTableWithBorder() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:lnT[@cmpd="' . Border::LINE_SINGLE . '"]/a:prstDash[@val="' . Border::DASH_DASHDOT . '"]'); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:lnB[@cmpd="' . Border::LINE_SINGLE . '"]'); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/a:lnB[@cmpd="' . Border::LINE_SINGLE . '"]/a:prstDash[@val="' . Border::DASH_SOLID . '"]'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTableWithCellMargin() @@ -794,7 +794,7 @@ public function testTableWithCellMargin() $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'marL', Drawing::pixelsToEmu(20)); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'marR', Drawing::pixelsToEmu(30)); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'marT', Drawing::pixelsToEmu(40)); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTableWithColspan() @@ -810,7 +810,7 @@ public function testTableWithColspan() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'gridSpan', 2); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTableWithRowspan() @@ -830,7 +830,7 @@ public function testTableWithRowspan() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '[@rowSpan="2"]'); $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '[@vMerge="1"]'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } /** @@ -850,7 +850,7 @@ public function testTableWithHyperlink() $element = '/p:sld/p:cSld/p:spTree/p:graphicFrame/a:graphic/a:graphicData/a:tbl/a:tr/a:tc/a:txBody/a:p/a:r/a:rPr/a:hlinkClick'; $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'r:id', 'rId2'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testTransition() @@ -869,22 +869,22 @@ public function testTransition() $this->assertZipXmlAttributeExists('ppt/slides/slide1.xml', $element, 'advTm'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'advTm', $value); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'advClick', '0'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oTransition->setSpeed(Transition::SPEED_FAST); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spd', 'fast'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oTransition->setSpeed(Transition::SPEED_MEDIUM); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spd', 'med'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $oTransition->setSpeed(Transition::SPEED_SLOW); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'spd', 'slow'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $rcTransition = new \ReflectionClass('PhpOffice\PhpPresentation\Slide\Transition'); $arrayConstants = $rcTransition->getConstants(); @@ -1039,14 +1039,14 @@ public function testTransition() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $element . '/p:zoom[@dir=\'out\']'); break; } - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } $oTransition->setManualTrigger(true); $this->resetPresentationFile(); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $element, 'advClick', '1'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testVisibility() @@ -1055,7 +1055,7 @@ public function testVisibility() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $expectedElement); $this->assertZipXmlAttributeNotExists('ppt/slides/slide1.xml', $expectedElement, 'show'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $this->oPresentation->getActiveSlide()->setIsVisible(false); $this->resetPresentationFile(); @@ -1063,6 +1063,6 @@ public function testVisibility() $this->assertZipXmlElementExists('ppt/slides/slide1.xml', $expectedElement); $this->assertZipXmlAttributeExists('ppt/slides/slide1.xml', $expectedElement, 'show'); $this->assertZipXmlAttributeEquals('ppt/slides/slide1.xml', $expectedElement, 'show', 0); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptTablePropsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptTablePropsTest.php index 88f9884299..5eeac021ad 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptTablePropsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptTablePropsTest.php @@ -14,6 +14,6 @@ public function testRender() $element = '/a:tblStyleLst'; $this->assertZipXmlElementExists('ppt/tableStyles.xml', $element); $this->assertZipXmlAttributeEquals('ppt/tableStyles.xml', $element, 'def', '{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptViewPropsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptViewPropsTest.php index fb65c43b37..1550aec12d 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptViewPropsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptViewPropsTest.php @@ -17,7 +17,7 @@ public function testRender() $this->assertZipXmlElementExists('ppt/viewProps.xml', $expectedElement); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', $expectedElement, 'showComments', 0); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', $expectedElement, 'lastView', PresentationProperties::VIEW_SLIDE); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testCommentVisible() @@ -29,7 +29,7 @@ public function testCommentVisible() $this->assertZipFileExists('ppt/viewProps.xml'); $this->assertZipXmlElementExists('ppt/viewProps.xml', $expectedElement); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', $expectedElement, 'showComments', 1); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testLastView() @@ -42,6 +42,6 @@ public function testLastView() $this->assertZipFileExists('ppt/viewProps.xml'); $this->assertZipXmlElementExists('ppt/viewProps.xml', $expectedElement); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', $expectedElement, 'lastView', $expectedLastView); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/RelationshipsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/RelationshipsTest.php index ad4492bbdd..912e5b8e1e 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/RelationshipsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/RelationshipsTest.php @@ -17,6 +17,6 @@ public function testCommentsAuthors() $this->oPresentation->getActiveSlide()->addShape($oComment); $this->assertZipXmlElementExists('ppt/_rels/presentation.xml.rels', '/Relationships/Relationship[@Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors"]'); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php index 88fc4fedcd..4b55103f4c 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php @@ -133,7 +133,7 @@ public function testZoom() $this->assertZipXmlElementExists('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy'); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy', 'n', 100); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy', 'd', 100); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $value = mt_rand(1, 100); $this->oPresentation->getPresentationProperties()->setZoom($value); @@ -145,7 +145,7 @@ public function testZoom() $this->assertZipXmlElementExists('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy'); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy', 'n', $value * 100); $this->assertZipXmlAttributeEquals('ppt/viewProps.xml', '/p:viewPr/p:slideViewPr/p:cSldViewPr/p:cViewPr/p:scale/a:sy', 'd', 100); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } public function testFeatureThumbnail() @@ -156,13 +156,13 @@ public function testFeatureThumbnail() $this->assertZipFileExists('_rels/.rels'); $this->assertZipXmlElementNotExists('_rels/.rels', $xPathManifest); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); $this->oPresentation->getPresentationProperties()->setThumbnailPath($imagePath); $this->resetPresentationFile(); $this->assertZipFileExists('_rels/.rels'); $this->assertZipXmlElementExists('_rels/.rels', $xPathManifest); - $this->assertIsSchemaOOXMLValid(); + $this->assertIsSchemaECMA376Valid(); } } diff --git a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php index 2a6edc8fec..913677259c 100644 --- a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php +++ b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php @@ -54,6 +54,11 @@ class PhpPresentationTestCase extends TestCase */ private $xmlInternalErrors; + /** + * @var boolean + */ + private $xmlDisableEntityLoader; + /** * @var array */ @@ -75,8 +80,9 @@ class PhpPresentationTestCase extends TestCase /** * Executed before each method of the class */ - public function setUp() + protected function setUp() { + $this->xmlDisableEntityLoader = libxml_disable_entity_loader(false); $this->workDirectory = sys_get_temp_dir() . '/PhpPresentation_Unit_Test/'; $this->oPresentation = new PhpPresentation(); $this->filePath = tempnam(sys_get_temp_dir(), 'PhpPresentation'); @@ -92,8 +98,9 @@ public function setUp() /** * Executed after each method of the class */ - public function tearDown() + protected function tearDown() { + libxml_disable_entity_loader($this->xmlDisableEntityLoader); libxml_use_internal_errors($this->xmlInternalErrors); $this->oPresentation = null; $this->resetPresentationFile(); @@ -338,6 +345,33 @@ public function assertZipXmlAttributeNotExists($filePath, $xPath, $attribute) self::assertFalse($nodeList->item(0)->hasAttribute($attribute)); } + public function assertIsSchemaECMA376Valid() + { + // validate all XML files + $path = realpath($this->workDirectory . '/ppt'); + $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path)); + + foreach ($iterator as $file) { + /** @var \SplFileInfo $file */ + if ($file->getExtension() !== 'xml') { + continue; + } + + $fileName = str_replace('\\', '/', substr($file->getRealPath(), strlen($path) + 1)); + $dom = $this->getXmlDom('ppt/' . $fileName); + $xmlSource = $dom->saveXML(); + + $dom->loadXML($xmlSource); + $dom->schemaValidate(__DIR__ . '/../../../resources/schema/ecma-376/pml.xsd'); + + $error = libxml_get_last_error(); + if ($error instanceof \LibXMLError) { + $this->failXmlError($error, $fileName, $xmlSource); + } + } + unset($iterator); + } + public function assertIsSchemaOOXMLValid() { // validate all XML files @@ -346,7 +380,7 @@ public function assertIsSchemaOOXMLValid() foreach ($iterator as $file) { /** @var \SplFileInfo $file */ - if ($file->getExtension() !== "xml") { + if ($file->getExtension() !== 'xml') { continue; } @@ -357,7 +391,7 @@ public function assertIsSchemaOOXMLValid() // http://schemas.openxmlformats.org/ to http://purl.oclc.org/ooxml/ // We need to use the http://purl.oclc.org/ooxml/ namespace to validate // the xml against the current schema - /*$xmlSource = str_replace(array( + $xmlSource = str_replace(array( "http://schemas.openxmlformats.org/drawingml/2006/main", "http://schemas.openxmlformats.org/drawingml/2006/chart", "http://schemas.openxmlformats.org/officeDocument/2006/relationships", @@ -367,10 +401,10 @@ public function assertIsSchemaOOXMLValid() "http://purl.oclc.org/ooxml/drawingml/chart", "http://purl.oclc.org/ooxml/officeDocument/relationships", "http://purl.oclc.org/ooxml/presentationml/main", - ), $xmlSource);*/ + ), $xmlSource); $dom->loadXML($xmlSource); - $dom->schemaValidate(__DIR__ . '/../../../resources/schema/ecma-376/pml.xsd'); + $dom->schemaValidate(__DIR__ . '/../../../resources/schema/ooxml/pml.xsd'); $error = libxml_get_last_error(); if ($error instanceof \LibXMLError) { @@ -399,14 +433,14 @@ public function assertIsSchemaOpenDocumentValid($version = '1.0', $triggerError $isValid = true; foreach ($iterator as $file) { /** @var \SplFileInfo $file */ - if ($file->getExtension() !== "xml") { + if ($file->getExtension() !== 'xml') { continue; } $fileName = str_replace('\\', '/', substr($file->getRealPath(), strlen($path) + 1)); $dom = $this->getXmlDom($fileName); $xmlSource = $dom->saveXML(); - + $dom->loadXML($xmlSource); $pathRNG = __DIR__ . '/../../../resources/schema/opendocument/'.$version.'/'; if (isset($this->arrayOpenDocumentRNG[$version][$fileName])) { @@ -461,9 +495,15 @@ protected function failXmlError(\LibXMLError $error, $fileName, $source, array $ $errorLine = (int)$error->line; $contents = explode("\n", $source); $lines = array(); - $lines[] = '>> ' . $contents[$errorLine - 2]; - $lines[] = '>>> ' . $contents[$errorLine - 1]; - $lines[] = '>> ' . $contents[$errorLine]; + if (isset($contents[$errorLine - 2])) { + $lines[] = '>> ' . $contents[$errorLine - 2]; + } + if (isset($contents[$errorLine - 1])) { + $lines[] = '>>> ' . $contents[$errorLine - 1]; + } + if (isset($contents[$errorLine])) { + $lines[] = '>> ' . $contents[$errorLine]; + } $paramStr = ''; if (!empty($params)) { $paramStr .= "\n" . ' - Parameters :'."\n"; From 4d3a9ff30efa789a79af3d4aa1f6c1a86218fec5 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 28 May 2019 22:32:30 +0200 Subject: [PATCH 064/139] #382 : Fixes OpenDocument --- src/PhpPresentation/Style/Color.php | 2 +- .../Writer/ODPresentation/ObjectsChart.php | 24 ++- .../ODPresentation/ObjectsChartTest.php | 141 ++++++++++++------ 3 files changed, 105 insertions(+), 62 deletions(-) diff --git a/src/PhpPresentation/Style/Color.php b/src/PhpPresentation/Style/Color.php index 6b8980d050..76fddd8c2a 100644 --- a/src/PhpPresentation/Style/Color.php +++ b/src/PhpPresentation/Style/Color.php @@ -99,7 +99,7 @@ public function getAlpha() $dec = hexdec(substr($this->argb, 0, 2)); $alpha = number_format(($dec/255) * 100, 2); } - return round($alpha); + return $alpha; } /** diff --git a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php index 0bba62bafb..2b827ba211 100644 --- a/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php +++ b/src/PhpPresentation/Writer/ODPresentation/ObjectsChart.php @@ -600,17 +600,17 @@ private function writeSeries(Chart $chart, Chart\Series $series) $this->xmlContent->startElement('chart:series'); $this->xmlContent->writeAttribute('chart:values-cell-range-address', 'table-local.$'.$this->rangeCol.'$2:.$'.$this->rangeCol.'$'.($numRange+1)); $this->xmlContent->writeAttribute('chart:label-cell-address', 'table-local.$'.$this->rangeCol.'$1'); - if ($chartType instanceof Area) { - $this->xmlContent->writeAttribute('chart:class', 'chart:area'); - } elseif ($chartType instanceof AbstractTypeBar) { - $this->xmlContent->writeAttribute('chart:class', 'chart:bar'); - } elseif ($chartType instanceof Line) { - $this->xmlContent->writeAttribute('chart:class', 'chart:line'); - } elseif ($chartType instanceof AbstractTypePie) { - $this->xmlContent->writeAttribute('chart:class', 'chart:circle'); - } elseif ($chartType instanceof Scatter) { - $this->xmlContent->writeAttribute('chart:class', 'chart:scatter'); - } + // if ($chartType instanceof Area) { + // $this->xmlContent->writeAttribute('chart:class', 'chart:area'); + // } elseif ($chartType instanceof AbstractTypeBar) { + // $this->xmlContent->writeAttribute('chart:class', 'chart:bar'); + // } elseif ($chartType instanceof Line) { + // $this->xmlContent->writeAttribute('chart:class', 'chart:line'); + // } elseif ($chartType instanceof AbstractTypePie) { + // $this->xmlContent->writeAttribute('chart:class', 'chart:circle'); + // } elseif ($chartType instanceof Scatter) { + // $this->xmlContent->writeAttribute('chart:class', 'chart:scatter'); + // } $this->xmlContent->writeAttribute('chart:style-name', 'styleSeries'.$this->numSeries); if ($chartType instanceof Area || $chartType instanceof AbstractTypeBar || $chartType instanceof Line || $chartType instanceof Scatter) { $dataPointFills = $series->getDataPointFills(); @@ -910,7 +910,6 @@ private function writeTitle(Title $oTitle) // > text:p $this->xmlContent->startElement('text:p'); $this->xmlContent->text($oTitle->getText()); - // > text:p $this->xmlContent->endElement(); // > chart:title $this->xmlContent->endElement(); @@ -945,7 +944,6 @@ private function writeWall() // chart:wall $this->xmlContent->startElement('chart:wall'); $this->xmlContent->writeAttribute('chart:style-name', 'styleWall'); - // > chart:wall $this->xmlContent->endElement(); } diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php index 0351d08400..6b0a3ddd76 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php @@ -74,7 +74,8 @@ public function testAxisFont() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'fo:font-size', '16pt'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'fo:font-family', 'Arial'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testLegend() @@ -100,7 +101,8 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows/table:table-row/table:table-cell[@office:value-type=\'string\']'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_RIGHT); $this->resetPresentationFile(); @@ -108,7 +110,8 @@ public function testLegend() $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'end'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_LEFT); $this->resetPresentationFile(); @@ -116,7 +119,8 @@ public function testLegend() $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'start'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_BOTTOM); $this->resetPresentationFile(); @@ -124,7 +128,8 @@ public function testLegend() $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'bottom'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_TOP); $this->resetPresentationFile(); @@ -132,7 +137,8 @@ public function testLegend() $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'top'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_TOPRIGHT); $this->resetPresentationFile(); @@ -140,7 +146,8 @@ public function testLegend() $element = '/office:document-content/office:body/office:chart/chart:chart/chart:legend'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'top-end'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testSeries() @@ -158,7 +165,8 @@ public function testSeries() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->setShowValue(false); $this->resetPresentationFile(); @@ -167,7 +175,8 @@ public function testSeries() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = true $oSeries->setShowValue(true); @@ -178,7 +187,8 @@ public function testSeries() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value-and-percentage'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = false $oSeries->setShowValue(false); @@ -188,7 +198,8 @@ public function testSeries() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = false $oSeries->setShowCategoryName(true); @@ -197,7 +208,8 @@ public function testSeries() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-text'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-text', 'true'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTitleVisibility() @@ -214,14 +226,15 @@ public function testTitleVisibility() $this->assertZipXmlElementExists('Object 1/content.xml', $elementTitle); $this->assertZipXmlElementExists('Object 1/content.xml', $elementStyle); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $this->assertInstanceOf('PhpOffice\PhpPresentation\Shape\Chart\Title', $oShape->getTitle()->setVisible(false)); $this->resetPresentationFile(); $this->assertZipXmlElementNotExists('Object 1/content.xml', $elementTitle); $this->assertZipXmlElementNotExists('Object 1/content.xml', $elementStyle); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeArea() @@ -239,7 +252,6 @@ public function testTypeArea() $element = '/office:document-content/office:body/office:chart/chart:chart/chart:plot-area/chart:series'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); - $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:class', 'chart:area'); $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'styleSeries0\']/style:graphic-properties'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); @@ -247,7 +259,8 @@ public function testTypeArea() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'draw:fill-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'draw:fill-color', '#93A9CE'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeAxisBounds() @@ -266,7 +279,8 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:minimum'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:maximum'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $this->resetPresentationFile(); @@ -275,7 +289,8 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:minimum'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:minimum', $value); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oShape->getPlotArea()->getAxisX()->setMinBounds(null); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); @@ -285,7 +300,8 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:maximum'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:maximum', $value); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); @@ -296,7 +312,8 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:maximum'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:maximum', $value); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBar() @@ -328,7 +345,8 @@ public function testTypeBar() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:percentage'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBarGroupingStacked() @@ -346,7 +364,8 @@ public function testTypeBarGroupingStacked() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:percentage'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBarGroupingPercentStacked() @@ -364,7 +383,8 @@ public function testTypeBarGroupingPercentStacked() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:percentage', 'true'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBarHorizontal() @@ -390,7 +410,8 @@ public function testTypeBarHorizontal() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:three-dimensional'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:right-angled-axes'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBar3D() @@ -420,7 +441,8 @@ public function testTypeBar3D() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:right-angled-axes'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:right-angled-axes', 'true'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBar3DHorizontal() @@ -448,7 +470,8 @@ public function testTypeBar3DHorizontal() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:right-angled-axes'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:right-angled-axes', 'true'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeDoughnut() @@ -474,7 +497,8 @@ public function testTypeDoughnut() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:class', 'chart:ring'); $element = '/office:document-content/office:automatic-styles/style:style/style:chart-properties/chart:label-separator/text:p'; $this->assertZipXmlElementNotExists('Object 1/content.xml', $element); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); // $oDoughnut->setHoleSize($randHoleSize); // $this->resetPresentationFile(); @@ -485,7 +509,8 @@ public function testTypeDoughnut() $element = '/office:document-content/office:automatic-styles/style:style/style:chart-properties/chart:label-separator/text:p'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlElementEquals('Object 1/content.xml', $element, $randSeparator); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeLine() @@ -521,7 +546,8 @@ public function testTypeLine() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'svg:stroke-width', '0.026cm'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'svg:stroke-color', '#878787'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeLineGridlines() @@ -595,7 +621,8 @@ public function testTypeLineGridlines() $this->assertZipXmlAttributeStartsWith('Object 1/content.xml', $expectedElementStyle, 'svg:stroke-color', '#'); $this->assertZipXmlAttributeEndsWith('Object 1/content.xml', $expectedElementStyle, 'svg:stroke-color', $expectedColor->getRGB()); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } } @@ -630,7 +657,8 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-width', $expectedSizeCm); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-height', $expectedSizeCm); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol2); $oLine->setSeries(array($oSeries)); @@ -638,7 +666,8 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'horizontal-bar'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol3); $oLine->setSeries(array($oSeries)); @@ -646,7 +675,8 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'circle'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol4); $oLine->setSeries(array($oSeries)); @@ -654,7 +684,8 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'arrow-up'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol5); $oLine->setSeries(array($oSeries)); @@ -664,7 +695,8 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-width'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-height'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeLineSeriesOutline() @@ -699,7 +731,8 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-width', '0.079cm'); $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#4a7ebb'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->setOutline($oOutline); $oLine->setSeries(array($oSeries)); @@ -711,7 +744,8 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-width', $expectedWidthCm); $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#' . $oColor->getRGB()); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypePie() @@ -741,7 +775,8 @@ public function testTypePie() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:reverse-direction', 'true'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypePie3D() @@ -771,7 +806,8 @@ public function testTypePie3D() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:reverse-direction', 'true'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypePie3DExplosion() @@ -789,7 +825,8 @@ public function testTypePie3DExplosion() $element = '/office:document-content/office:automatic-styles/style:style[@style:name=\'styleSeries0\'][@style:family=\'chart\']/style:chart-properties'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:pie-offset', $value); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeScatter() @@ -804,7 +841,8 @@ public function testTypeScatter() $element = '/office:document-content/office:body/office:chart/chart:chart'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:class', 'chart:scatter'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeScatterMarker() @@ -837,7 +875,8 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-width', $expectedSizeCm); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-height', $expectedSizeCm); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol2); $oScatter->setSeries(array($oSeries)); @@ -845,7 +884,8 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'horizontal-bar'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol3); $oScatter->setSeries(array($oSeries)); @@ -853,7 +893,8 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'circle'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol4); $oScatter->setSeries(array($oSeries)); @@ -861,7 +902,8 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'arrow-up'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol5); $oScatter->setSeries(array($oSeries)); @@ -871,7 +913,8 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-width'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-height'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeScatterSeriesOutline() @@ -905,7 +948,8 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-width', '0.079cm'); $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#4a7ebb'); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->setOutline($oOutline); $oScatter->setSeries(array($oSeries)); @@ -917,6 +961,7 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-width', $expectedWidthCm); $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#' . $oColor->getRGB()); - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } } From 1cb1a89a5b0f8c31f3d3815ca9a81d76723d2fe9 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 28 May 2019 22:59:15 +0200 Subject: [PATCH 065/139] #382 : Fixes OpenDocument --- .../ODPresentation/ObjectsChartTest.php | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php index 6b0a3ddd76..f9c3298518 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php @@ -75,7 +75,7 @@ public function testAxisFont() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'fo:font-family', 'Arial'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testLegend() @@ -102,7 +102,7 @@ public function testLegend() $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows/table:table-row/table:table-cell[@office:value-type=\'string\']'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_RIGHT); $this->resetPresentationFile(); @@ -111,7 +111,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'end'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_LEFT); $this->resetPresentationFile(); @@ -120,7 +120,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'start'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_BOTTOM); $this->resetPresentationFile(); @@ -129,7 +129,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'bottom'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_TOP); $this->resetPresentationFile(); @@ -138,7 +138,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'top'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_TOPRIGHT); $this->resetPresentationFile(); @@ -147,7 +147,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'top-end'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testSeries() @@ -166,7 +166,7 @@ public function testSeries() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->setShowValue(false); $this->resetPresentationFile(); @@ -176,7 +176,7 @@ public function testSeries() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = true $oSeries->setShowValue(true); @@ -188,7 +188,7 @@ public function testSeries() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value-and-percentage'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = false $oSeries->setShowValue(false); @@ -199,7 +199,7 @@ public function testSeries() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = false $oSeries->setShowCategoryName(true); @@ -209,7 +209,7 @@ public function testSeries() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-text'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-text', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTitleVisibility() @@ -227,14 +227,14 @@ public function testTitleVisibility() $this->assertZipXmlElementExists('Object 1/content.xml', $elementStyle); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $this->assertInstanceOf('PhpOffice\PhpPresentation\Shape\Chart\Title', $oShape->getTitle()->setVisible(false)); $this->resetPresentationFile(); $this->assertZipXmlElementNotExists('Object 1/content.xml', $elementTitle); $this->assertZipXmlElementNotExists('Object 1/content.xml', $elementStyle); - // chart:title : Element chart failed to validate attributes $this->assertIsSchemaOpenDocumentNotValid('1.2'); + // chart:title : Element chart failed to validate attributes $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeArea() @@ -260,7 +260,7 @@ public function testTypeArea() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'draw:fill-color', '#93A9CE'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeAxisBounds() @@ -280,7 +280,7 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:maximum'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $this->resetPresentationFile(); @@ -290,7 +290,7 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:minimum', $value); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oShape->getPlotArea()->getAxisX()->setMinBounds(null); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); @@ -301,7 +301,7 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:maximum', $value); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); @@ -313,7 +313,7 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:maximum', $value); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBar() @@ -346,7 +346,7 @@ public function testTypeBar() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBarGroupingStacked() @@ -365,7 +365,7 @@ public function testTypeBarGroupingStacked() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBarGroupingPercentStacked() @@ -384,7 +384,7 @@ public function testTypeBarGroupingPercentStacked() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBarHorizontal() @@ -411,7 +411,7 @@ public function testTypeBarHorizontal() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:right-angled-axes'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBar3D() @@ -442,7 +442,7 @@ public function testTypeBar3D() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:right-angled-axes', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeBar3DHorizontal() @@ -471,7 +471,7 @@ public function testTypeBar3DHorizontal() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:right-angled-axes', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeDoughnut() @@ -498,7 +498,7 @@ public function testTypeDoughnut() $element = '/office:document-content/office:automatic-styles/style:style/style:chart-properties/chart:label-separator/text:p'; $this->assertZipXmlElementNotExists('Object 1/content.xml', $element); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); // $oDoughnut->setHoleSize($randHoleSize); // $this->resetPresentationFile(); @@ -510,7 +510,7 @@ public function testTypeDoughnut() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlElementEquals('Object 1/content.xml', $element, $randSeparator); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeLine() @@ -547,7 +547,7 @@ public function testTypeLine() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'svg:stroke-color', '#878787'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeLineGridlines() @@ -622,7 +622,7 @@ public function testTypeLineGridlines() $this->assertZipXmlAttributeEndsWith('Object 1/content.xml', $expectedElementStyle, 'svg:stroke-color', $expectedColor->getRGB()); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } } @@ -658,7 +658,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-height', $expectedSizeCm); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol2); $oLine->setSeries(array($oSeries)); @@ -667,7 +667,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'horizontal-bar'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol3); $oLine->setSeries(array($oSeries)); @@ -676,7 +676,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'circle'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol4); $oLine->setSeries(array($oSeries)); @@ -685,7 +685,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'arrow-up'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol5); $oLine->setSeries(array($oSeries)); @@ -696,7 +696,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-height'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeLineSeriesOutline() @@ -732,7 +732,7 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#4a7ebb'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->setOutline($oOutline); $oLine->setSeries(array($oSeries)); @@ -745,7 +745,7 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#' . $oColor->getRGB()); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypePie() @@ -776,7 +776,7 @@ public function testTypePie() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:reverse-direction', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypePie3D() @@ -807,7 +807,7 @@ public function testTypePie3D() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:reverse-direction', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypePie3DExplosion() @@ -826,7 +826,7 @@ public function testTypePie3DExplosion() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:pie-offset', $value); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeScatter() @@ -842,7 +842,7 @@ public function testTypeScatter() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:class', 'chart:scatter'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeScatterMarker() @@ -876,7 +876,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-height', $expectedSizeCm); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol2); $oScatter->setSeries(array($oSeries)); @@ -885,7 +885,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'horizontal-bar'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol3); $oScatter->setSeries(array($oSeries)); @@ -894,7 +894,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'circle'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol4); $oScatter->setSeries(array($oSeries)); @@ -903,7 +903,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'arrow-up'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol5); $oScatter->setSeries(array($oSeries)); @@ -914,7 +914,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-height'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } public function testTypeScatterSeriesOutline() @@ -949,7 +949,7 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#4a7ebb'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); $oSeries->setOutline($oOutline); $oScatter->setSeries(array($oSeries)); @@ -962,6 +962,6 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#' . $oColor->getRGB()); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentNotValid('1.2'); + $this->assertIsSchemaOpenDocumentValid('1.2'); } } From 3ee3cb6bc2255115ab674e48e153fee1a0ca505b Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 09:46:18 +0200 Subject: [PATCH 066/139] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5e63c5d7d1..9971ffa83e 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "phpoffice/common": "0.2.*" }, "require-dev": { - "phpunit/phpunit": "4.*", + "phpunit/phpunit": ">=4.*", "phpdocumentor/phpdocumentor":"2.*", "phpmd/phpmd": "2.*", "sebastian/phpcpd": "2.*", From 1d6ea704e7f0dbb020bbb199194ff67690742e48 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 09:57:02 +0200 Subject: [PATCH 067/139] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 9971ffa83e..6ef70f13d4 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "phpoffice/common": "0.2.*" }, "require-dev": { - "phpunit/phpunit": ">=4.*", + "phpunit/phpunit": "4.*|5.*|6.*|7.*|8.*", "phpdocumentor/phpdocumentor":"2.*", "phpmd/phpmd": "2.*", "sebastian/phpcpd": "2.*", From 17d0ada4c4e310b95d75008c27ab688e8bf46dbc Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 10:13:43 +0200 Subject: [PATCH 068/139] Composer : PHPUnit --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 6ef70f13d4..fcf1b5123e 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "phpoffice/common": "0.2.*" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*|6.*|7.*|8.*", + "phpunit/phpunit": "4.*|5.*|6.*|7.*", "phpdocumentor/phpdocumentor":"2.*", "phpmd/phpmd": "2.*", "sebastian/phpcpd": "2.*", From 16a72be756b024a32d1673f09bd13925f100965f Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 11:03:01 +0200 Subject: [PATCH 069/139] #382 : Remove options not compatible with latest phpunit version --- phpunit.xml.dist | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index c22a3a0501..a9f7e2189e 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -6,8 +6,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="false" - syntaxCheck="false"> + stopOnFailure="false"> ./tests/PhpPresentation @@ -19,7 +18,7 @@ - + - \ No newline at end of file + From 4c1d272209e89ebef05fc52c76d8ff3220a465fd Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 11:27:11 +0200 Subject: [PATCH 070/139] #382 : TypeError: Argument 2 passed to PHPUnit\Framework\Assert::assertFileExists() must be of the type string, null given --- .../Tests/Writer/SerializedTest.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/PhpPresentation/Tests/Writer/SerializedTest.php b/tests/PhpPresentation/Tests/Writer/SerializedTest.php index d55fc35d1c..c81638e597 100644 --- a/tests/PhpPresentation/Tests/Writer/SerializedTest.php +++ b/tests/PhpPresentation/Tests/Writer/SerializedTest.php @@ -70,11 +70,11 @@ public function testSave() $oSlide = $oPhpPresentation->getActiveSlide(); $oImage = $oSlide->createDrawingShape(); $oImage->setPath(PHPPRESENTATION_TESTS_BASE_DIR.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'PhpPresentationLogo.png'); - $object = new Serialized($oPhpPresentation); - $file = tempnam(sys_get_temp_dir(), 'PhpPresentation_Serialized'); - - $this->assertFileExists($file, $object->save($file)); + $object = new Serialized($oPhpPresentation); + $object->save($file); + + $this->assertFileExists($file); } /** @@ -100,11 +100,13 @@ public function testSaveOverwriting() $oSlide = $oPhpPresentation->getActiveSlide(); $oImage = $oSlide->createDrawingShape(); $oImage->setPath(PHPPRESENTATION_TESTS_BASE_DIR.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'PhpPresentationLogo.png'); - $object = new Serialized($oPhpPresentation); - + $file = tempnam(sys_get_temp_dir(), 'PhpPresentation_Serialized'); file_put_contents($file, rand(1, 100)); - $this->assertFileExists($file, $object->save($file)); + $object = new Serialized($oPhpPresentation); + $object->save($file); + + $this->assertFileExists($file); } } From 23b1f9647b4c7b8af906d22b84733c4dc715f2bf Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 11:59:31 +0200 Subject: [PATCH 071/139] #382 : The each() function is deprecated. This message will be suppressed on further calls --- src/PhpPresentation/Writer/ODPresentation/Content.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PhpPresentation/Writer/ODPresentation/Content.php b/src/PhpPresentation/Writer/ODPresentation/Content.php index 869ddd3243..cb399ab177 100644 --- a/src/PhpPresentation/Writer/ODPresentation/Content.php +++ b/src/PhpPresentation/Writer/ODPresentation/Content.php @@ -640,7 +640,7 @@ public function writeShapeTable(XMLWriter $objWriter, Table $shape) $arrayCells = $firstRow->getCells(); // table:table $objWriter->startElement('table:table'); - while (each($arrayCells)) { + foreach ($arrayCells as $shapeCell) { $objWriter->startElement('table:table-column'); $objWriter->endElement(); } From 86463872dfefed864560f116a8a65f9f3fee1360 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 12:18:40 +0200 Subject: [PATCH 072/139] #382 : Error: Call to undefined method PhpOffice\PhpPresentation\Tests\Style\AlignmentTest::setExpectedException() --- tests/PhpPresentation/Tests/Style/AlignmentTest.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/PhpPresentation/Tests/Style/AlignmentTest.php b/tests/PhpPresentation/Tests/Style/AlignmentTest.php index 8c235ba2c2..aea1e6fc84 100644 --- a/tests/PhpPresentation/Tests/Style/AlignmentTest.php +++ b/tests/PhpPresentation/Tests/Style/AlignmentTest.php @@ -88,7 +88,12 @@ public function testSetGetVertical() public function testSetGetLevelExceptionMin() { $object = new Alignment(); - $this->setExpectedException('\Exception', 'Invalid value should be more than 0.'); + if (method_exists($this, 'setExpectedException')) { + $this->setExpectedException('\Exception', 'Invalid value should be more than 0.'); + } + if (method_exists($this, 'expectException')) { + $this->expectException('\Exception', 'Invalid value should be more than 0.'); + } $object->setLevel(-1); } From c4472d6df0610a3677980865507524de44fa39e6 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 12:23:52 +0200 Subject: [PATCH 073/139] #382 : PHPCS Fixes --- tests/PhpPresentation/Tests/Style/AlignmentTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/PhpPresentation/Tests/Style/AlignmentTest.php b/tests/PhpPresentation/Tests/Style/AlignmentTest.php index aea1e6fc84..9041ba0d9d 100644 --- a/tests/PhpPresentation/Tests/Style/AlignmentTest.php +++ b/tests/PhpPresentation/Tests/Style/AlignmentTest.php @@ -93,7 +93,7 @@ public function testSetGetLevelExceptionMin() } if (method_exists($this, 'expectException')) { $this->expectException('\Exception', 'Invalid value should be more than 0.'); - } + } $object->setLevel(-1); } From 1c5d885dea734acdf7b83c51f91c5d0197bba7e3 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 14:08:14 +0200 Subject: [PATCH 074/139] #382 : PHPDoc : PHP Fatal error: Uncaught Doctrine\Common\Annotations\AnnotationException --- composer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/composer.json b/composer.json index fcf1b5123e..caaa5e2c31 100644 --- a/composer.json +++ b/composer.json @@ -26,6 +26,7 @@ }, "require-dev": { "phpunit/phpunit": "4.*|5.*|6.*|7.*", + "jms/serializer": "^1.7.0", "phpdocumentor/phpdocumentor":"2.*", "phpmd/phpmd": "2.*", "sebastian/phpcpd": "2.*", From 7104afea1f9b9093fae92f913099c33294ac41c1 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 16:02:57 +0200 Subject: [PATCH 075/139] #540 : Disable documentation --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d266b16593..6990bf032a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -46,11 +46,11 @@ script: ## PHPLOC - ./vendor/bin/phploc src/ ## PHPDocumentor - - ./vendor/bin/phpdoc -q -d ./src -t ./build/docs --template="responsive-twig" + # - ./vendor/bin/phpdoc -q -d ./src -t ./build/docs --template="responsive-twig" after_script: ## PHPDocumentor - - bash .travis_shell_after_success.sh + # - bash .travis_shell_after_success.sh ## Scrutinizer - wget https://scrutinizer-ci.com/ocular.phar - php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml From dcb86c541b3200610ccb63dbbb7b6ca2a1a640f3 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Wed, 29 May 2019 16:10:53 +0200 Subject: [PATCH 076/139] #540 : Disable documentation --- composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/composer.json b/composer.json index caaa5e2c31..fcf1b5123e 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,6 @@ }, "require-dev": { "phpunit/phpunit": "4.*|5.*|6.*|7.*", - "jms/serializer": "^1.7.0", "phpdocumentor/phpdocumentor":"2.*", "phpmd/phpmd": "2.*", "sebastian/phpcpd": "2.*", From f312727b6a1b9871abcbcdd17084383225ed584e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=9C=86=E5=BB=BA?= <624508914@qq.com> Date: Mon, 10 Jun 2019 22:39:03 +0800 Subject: [PATCH 077/139] fix other image mime type --- src/PhpPresentation/Shape/Drawing/Base64.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/PhpPresentation/Shape/Drawing/Base64.php b/src/PhpPresentation/Shape/Drawing/Base64.php index 6f99276923..d5d8e96f31 100644 --- a/src/PhpPresentation/Shape/Drawing/Base64.php +++ b/src/PhpPresentation/Shape/Drawing/Base64.php @@ -21,6 +21,8 @@ class Base64 extends AbstractDrawingAdapter */ protected $arrayMimeExtension = array( 'image/jpeg' => 'jpg', + 'image/png' => 'png', + 'image/gif' => 'gif', ); /** From c95d01f853cda35b6c6f590ca7682403445298c4 Mon Sep 17 00:00:00 2001 From: Krishnaprasad MG Date: Tue, 1 Oct 2019 13:28:47 +0200 Subject: [PATCH 078/139] Drop the support for HHVM --- .travis.yml | 10 +++++----- CHANGELOG.md | 1 + phpmd.xml.dist | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6990bf032a..c94bc3e047 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,18 +2,18 @@ sudo: false language: php php: - - 5.4 - - 5.5 - 5.6 - 7.0 - 7.1 - 7.2 - 7.3 - - hhvm matrix: - allow_failures: - - php: hhvm + include: + - php: 5.4 + dist: trusty + - php: 5.5 + dist: trusty env: global: diff --git a/CHANGELOG.md b/CHANGELOG.md index b3c8b58d11..4e99e00e3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - PowerPoint2007 : Text is subscripted when set superscript to false - @qmachard GH-360 ### Changes +- Dropped support for HHVM - @sunspikes GH-556 - PHP 7.1 is now supported - @Progi1984 GH-355 - PhpOffice\PhpPresentation\Style\Color : Define only the transparency - @Progi1984 GH-370 - PowerPoint2007 Reader : Background Color based on SchemeColor - @Progi1984 GH-397 diff --git a/phpmd.xml.dist b/phpmd.xml.dist index a7143e92f8..839717fdc1 100644 --- a/phpmd.xml.dist +++ b/phpmd.xml.dist @@ -20,7 +20,7 @@ - + @@ -31,4 +31,4 @@ - \ No newline at end of file + From dad7d516c6069240f1014f510762bdf0bfeb15ce Mon Sep 17 00:00:00 2001 From: Uzi Erdenebileg Date: Sat, 5 Oct 2019 05:31:10 -0600 Subject: [PATCH 079/139] Add support for image hyperlinks --- src/PhpPresentation/Reader/PowerPoint2007.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/PhpPresentation/Reader/PowerPoint2007.php b/src/PhpPresentation/Reader/PowerPoint2007.php index 2548b377fa..f28425e1cd 100644 --- a/src/PhpPresentation/Reader/PowerPoint2007.php +++ b/src/PhpPresentation/Reader/PowerPoint2007.php @@ -734,6 +734,17 @@ protected function loadShapeDrawing(XMLReader $document, \DOMElement $node, Abst if ($oElement instanceof \DOMElement) { $oShape->setName($oElement->hasAttribute('name') ? $oElement->getAttribute('name') : ''); $oShape->setDescription($oElement->hasAttribute('descr') ? $oElement->getAttribute('descr') : ''); + + // Hyperlink + $oElementHlinkClick = $document->getElement('a:hlinkClick', $oElement); + if (is_object($oElementHlinkClick)) { + if ($oElementHlinkClick->hasAttribute('tooltip')) { + $oShape->getHyperlink()->setTooltip($oElementHlinkClick->getAttribute('tooltip')); + } + if ($oElementHlinkClick->hasAttribute('r:id') && isset($this->arrayRels[$fileRels][$oElementHlinkClick->getAttribute('r:id')]['Target'])) { + $oShape->getHyperlink()->setUrl($this->arrayRels[$fileRels][$oElementHlinkClick->getAttribute('r:id')]['Target']); + } + } } $oElement = $document->getElement('p:blipFill/a:blip', $node); From 3f54b75610689452ad03cfdd0624742cf71f14fd Mon Sep 17 00:00:00 2001 From: ulziibuyan Date: Tue, 8 Oct 2019 06:02:14 -0600 Subject: [PATCH 080/139] Update CHANGELOD.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e99e00e3a..fd9325484f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - PHP 7.1 is now supported - @Progi1984 GH-355 - PhpOffice\PhpPresentation\Style\Color : Define only the transparency - @Progi1984 GH-370 - PowerPoint2007 Reader : Background Color based on SchemeColor - @Progi1984 GH-397 +- PowerPoint2007 Reader : Support for hyperlinks under pictures - @ulziibuyan ### Features - ODPresentation Writer : Support for the position of Legend - @Progi1984 GH-355 From 28f86ef07b3d5c12ef240609fa33ed81b17923c9 Mon Sep 17 00:00:00 2001 From: Uzi Erdenebileg Date: Wed, 9 Oct 2019 00:30:30 -0600 Subject: [PATCH 081/139] Display hyperlink properties of Drawing\Gd shape --- samples/Sample_Header.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index 6cf01f8e0e..91d04e91f7 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -109,7 +109,7 @@ function write($phpPresentation, $filename, $writers) { $result = ''; - + // Write documents foreach ($writers as $writer => $extension) { $result .= date('H:i:s') . " Write to {$writer} format"; @@ -177,7 +177,7 @@ function createTemplatedSlide(PhpOffice\PhpPresentation\PhpPresentation $objPHPP { // Create slide $slide = $objPHPPresentation->createSlide(); - + // Add logo $shape = $slide->createDrawingShape(); $shape->setName('PHPPresentation logo') @@ -301,7 +301,7 @@ protected function displayPhpPresentationInfo(PhpPresentation $oPHPPpt) $this->append('
    '); $this->append('
    HashCode
    '.$oSlide->getHashCode().'
    '); $this->append('
    Slide Layout
    Layout::'.$this->getConstantName('\PhpOffice\PhpPresentation\Slide\Layout', $oSlide->getSlideLayout()).'
    '); - + $this->append('
    Offset X
    '.$oSlide->getOffsetX().'
    '); $this->append('
    Offset Y
    '.$oSlide->getOffsetY().'
    '); $this->append('
    Extent X
    '.$oSlide->getExtentX().'
    '); @@ -379,6 +379,10 @@ protected function displayShapeInfo(AbstractShape $oShape) ob_end_clean(); $this->append('
    Mime-Type
    '.$oShape->getMimeType().'
    '); $this->append('
    Image
    '); + if ($oShape->hasHyperlink()) { + $this->append('
    Hyperlink URL
    '.$oShape->getHyperlink()->getUrl().'
    '); + $this->append('
    Hyperlink Tooltip
    '.$oShape->getHyperlink()->getTooltip().'
    '); + } } elseif($oShape instanceof Drawing\AbstractDrawingAdapter) { $this->append('
    Name
    '.$oShape->getName().'
    '); $this->append('
    Description
    '.$oShape->getDescription().'
    '); @@ -449,7 +453,7 @@ protected function displayShapeInfo(AbstractShape $oShape) $this->append('
    '); $this->append(''); } - + protected function getConstantName($class, $search, $startWith = '') { $fooClass = new ReflectionClass($class); $constants = $fooClass->getConstants(); From af3810e917c86f5f95270bc5110880b4f72758f1 Mon Sep 17 00:00:00 2001 From: polidog Date: Fri, 26 Jul 2019 23:25:55 +0900 Subject: [PATCH 082/139] Fix load PowerPoint 2007 images. --- src/PhpPresentation/Reader/PowerPoint2007.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/PhpPresentation/Reader/PowerPoint2007.php b/src/PhpPresentation/Reader/PowerPoint2007.php index f28425e1cd..aa3b847acc 100644 --- a/src/PhpPresentation/Reader/PowerPoint2007.php +++ b/src/PhpPresentation/Reader/PowerPoint2007.php @@ -761,6 +761,9 @@ protected function loadShapeDrawing(XMLReader $document, \DOMElement $node, Abst $pathImage = implode('/', $pathImage); $imageFile = $this->oZip->getFromName($pathImage); if (!empty($imageFile)) { + $info = getimagesizefromstring($imageFile); + $oShape->setMimeType($info['mime']); + $oShape->setRenderingFunction(str_replace('/', '', $info['mime'])); $oShape->setImageResource(imagecreatefromstring($imageFile)); } } From 76c7f6a74d6eb749430f49367e3fc07e868f17c7 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Mon, 14 Oct 2019 21:36:23 +0200 Subject: [PATCH 083/139] Updated Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd9325484f..5838c1e3ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - PhpOffice\PhpPresentation\Style\Color : Define only the transparency - @Progi1984 GH-370 - PowerPoint2007 Reader : Background Color based on SchemeColor - @Progi1984 GH-397 - PowerPoint2007 Reader : Support for hyperlinks under pictures - @ulziibuyan +- PowerPoint2007 Reader : Load images in their initial format (and not by default in PNG) - @polidog GH-553 ### Features - ODPresentation Writer : Support for the position of Legend - @Progi1984 GH-355 From 859321fc1a60c70c913dceffa9736d424b1ad519 Mon Sep 17 00:00:00 2001 From: Sergey Date: Tue, 27 Aug 2019 08:20:53 +0300 Subject: [PATCH 084/139] Check if $this->height is zero Add zero check before divizion --- src/PhpPresentation/Shape/AbstractGraphic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PhpPresentation/Shape/AbstractGraphic.php b/src/PhpPresentation/Shape/AbstractGraphic.php index 30f7535929..efa301a547 100644 --- a/src/PhpPresentation/Shape/AbstractGraphic.php +++ b/src/PhpPresentation/Shape/AbstractGraphic.php @@ -177,7 +177,7 @@ public function setWidth($pValue = 0) public function setHeight($pValue = 0) { // Resize proportional? - if ($this->resizeProportional && $pValue != 0) { + if ($this->resizeProportional && $pValue != 0 && $this->height != 0) { $ratio = $this->width / $this->height; $this->width = (int) round($ratio * $pValue); } From f51f8a3fc1193a6c4bf60cc914086d5c081d83a7 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Mon, 14 Oct 2019 22:07:03 +0200 Subject: [PATCH 085/139] Check if $this->width is zero Add zero check before divizion --- src/PhpPresentation/Shape/AbstractGraphic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PhpPresentation/Shape/AbstractGraphic.php b/src/PhpPresentation/Shape/AbstractGraphic.php index efa301a547..982a08b228 100644 --- a/src/PhpPresentation/Shape/AbstractGraphic.php +++ b/src/PhpPresentation/Shape/AbstractGraphic.php @@ -157,7 +157,7 @@ public function setDescription($pValue = '') public function setWidth($pValue = 0) { // Resize proportional? - if ($this->resizeProportional && $pValue != 0) { + if ($this->resizeProportional && $pValue != 0 && $this->width != 0) { $ratio = $this->height / $this->width; $this->height = (int) round($ratio * $pValue); } From a4b5fcef4202842108fbefc8713dbd2535b9b126 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Mon, 14 Oct 2019 22:16:49 +0200 Subject: [PATCH 086/139] Updated Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5838c1e3ac..352e40b5f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Bugfix - PowerPoint2007 : Text is subscripted when set superscript to false - @qmachard GH-360 +- Core : Defining width & height of a shape don't return any error if width & height were equal to 0 - @surger GH-555 ### Changes - Dropped support for HHVM - @sunspikes GH-556 From 309ef3e98af9a625b995db6b4eb515ba2a7d7459 Mon Sep 17 00:00:00 2001 From: Tonis Ormisson Date: Sun, 14 Jun 2020 10:44:52 +0300 Subject: [PATCH 087/139] Fix travis composer install memory exhaustion issue --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c94bc3e047..dd6b4495d1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ addons: before_script: ## Composer - composer self-update - - composer install --prefer-source + - COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-source ## PHPDocumentor - mkdir -p build/docs - mkdir -p build/coverage From 8b9167edb21c5bb227ce9400d382d66d94f32e38 Mon Sep 17 00:00:00 2001 From: Arne Brenneisen Date: Tue, 16 Jun 2020 14:17:02 +0200 Subject: [PATCH 088/139] Add drawings to slide layouts --- src/PhpPresentation/Writer/AbstractWriter.php | 15 ++++++++++++++- .../Writer/PowerPoint2007/PptSlideLayouts.php | 14 +++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/PhpPresentation/Writer/AbstractWriter.php b/src/PhpPresentation/Writer/AbstractWriter.php index 51698c8818..b17dcc138b 100644 --- a/src/PhpPresentation/Writer/AbstractWriter.php +++ b/src/PhpPresentation/Writer/AbstractWriter.php @@ -96,8 +96,21 @@ protected function allDrawings() // Get an array of all drawings $aDrawings = array(); + // Get an array of all master slides + $aSlideMasters = $this->getPhpPresentation()->getAllMasterSlides(); + + $aSlideMasterLayouts = array_map(function ($oSlideMaster) { + return $oSlideMaster->getAllSlideLayouts(); + }, $aSlideMasters); + + // Get an array of all slide layouts + $aSlideLayouts = array(); + array_walk_recursive($aSlideMasterLayouts, function ($oSlideLayout) use (&$aSlideLayouts) { + $aSlideLayouts[] = $oSlideLayout; + }); + // Loop through PhpPresentation - foreach (array_merge($this->getPhpPresentation()->getAllSlides(), $this->getPhpPresentation()->getAllMasterSlides()) as $oSlide) { + foreach (array_merge($this->getPhpPresentation()->getAllSlides(), $aSlideMasters, $aSlideLayouts) as $oSlide) { $arrayReturn = $this->iterateCollection($oSlide->getShapeCollection()->getIterator()); $aDrawings = array_merge($aDrawings, $arrayReturn); } diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php index 52f917e6f2..c52c54a10a 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php @@ -18,7 +18,7 @@ public function render() { foreach ($this->oPresentation->getAllMasterSlides() as $oSlideMaster) { foreach ($oSlideMaster->getAllSlideLayouts() as $oSlideLayout) { - $this->oZip->addFromString('ppt/slideLayouts/_rels/slideLayout' . $oSlideLayout->layoutNr . '.xml.rels', $this->writeSlideLayoutRelationships($oSlideMaster->getRelsIndex())); + $this->oZip->addFromString('ppt/slideLayouts/_rels/slideLayout' . $oSlideLayout->layoutNr . '.xml.rels', $this->writeSlideLayoutRelationships($oSlideLayout)); $this->oZip->addFromString('ppt/slideLayouts/slideLayout' . $oSlideLayout->layoutNr . '.xml', $this->writeSlideLayout($oSlideLayout)); } } @@ -26,15 +26,14 @@ public function render() return $this->oZip; } - /** * Write slide layout relationships to XML format * - * @param int $masterId + * @param \PhpOffice\PhpPresentation\Slide\SlideLayout $oSlideLayout * @return string XML Output * @throws \Exception */ - public function writeSlideLayoutRelationships($masterId = 1) + public function writeSlideLayoutRelationships(SlideLayout $oSlideLayout) { // Create XML writer $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY); @@ -46,8 +45,13 @@ public function writeSlideLayoutRelationships($masterId = 1) $objWriter->startElement('Relationships'); $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); + $relId = 0; + // Write slideMaster relationship - $this->writeRelationship($objWriter, 1, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster', '../slideMasters/slideMaster' . $masterId . '.xml'); + $this->writeRelationship($objWriter, ++$relId, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster', '../slideMasters/slideMaster' . $oSlideLayout->getSlideMaster()->getRelsIndex() . '.xml'); + + // Write drawing relationships? + $relId = $this->writeDrawingRelations($oSlideLayout, $objWriter, ++$relId); $objWriter->endElement(); From 504133b72249835d3d172aa7518d302f0cd633bb Mon Sep 17 00:00:00 2001 From: Arne Brenneisen Date: Tue, 16 Jun 2020 14:17:13 +0200 Subject: [PATCH 089/139] Add background images to slide layouts --- .../Writer/PowerPoint2007/PptSlideLayouts.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php index c52c54a10a..fe7a694864 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideLayouts.php @@ -7,6 +7,7 @@ use PhpOffice\PhpPresentation\Slide; use PhpOffice\PhpPresentation\Slide\SlideLayout; use PhpOffice\PhpPresentation\Style\ColorMap; +use PhpOffice\PhpPresentation\Slide\Background\Image; class PptSlideLayouts extends AbstractSlide { @@ -20,6 +21,12 @@ public function render() foreach ($oSlideMaster->getAllSlideLayouts() as $oSlideLayout) { $this->oZip->addFromString('ppt/slideLayouts/_rels/slideLayout' . $oSlideLayout->layoutNr . '.xml.rels', $this->writeSlideLayoutRelationships($oSlideLayout)); $this->oZip->addFromString('ppt/slideLayouts/slideLayout' . $oSlideLayout->layoutNr . '.xml', $this->writeSlideLayout($oSlideLayout)); + + // Add background image slide + $oBkgImage = $oSlideLayout->getBackground(); + if ($oBkgImage instanceof Image) { + $this->oZip->addFromString('ppt/media/' . $oBkgImage->getIndexedFilename($oSlideLayout->getRelsIndex()), file_get_contents($oBkgImage->getPath())); + } } } @@ -53,6 +60,15 @@ public function writeSlideLayoutRelationships(SlideLayout $oSlideLayout) // Write drawing relationships? $relId = $this->writeDrawingRelations($oSlideLayout, $objWriter, ++$relId); + // Write background relationships? + $oBackground = $oSlideLayout->getBackground(); + if ($oBackground instanceof Image) { + $this->writeRelationship($objWriter, $relId, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', '../media/' . $oBackground->getIndexedFilename($oSlideLayout->getRelsIndex())); + $oBackground->relationId = 'rId' . $relId; + + $relId++; + } + $objWriter->endElement(); // Return From 7a1c35555bdaf27f0306799c5024e79c585f7d3c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 29 Apr 2021 20:34:46 +0000 Subject: [PATCH 090/139] Upgrade to GitHub-native Dependabot --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..3245e4a36c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: +- package-ecosystem: composer + directory: "/" + schedule: + interval: monthly + time: "11:00" + open-pull-requests-limit: 10 + assignees: + - Progi1984 From 7ee6e27957a524ed9b263d3dc6cc657e4f5cd368 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Mon, 31 May 2021 14:21:45 -0700 Subject: [PATCH 091/139] #605 : Fixed Stacked or PercentStacked Charts --- src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index 7109881c6b..da96dd6e24 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -980,7 +980,7 @@ protected function writeTypeBar(XMLWriter $objWriter, Bar $subject, $includeShee if ($barGrouping === Bar::GROUPING_CLUSTERED) { $objWriter->writeAttribute('val', '0'); } elseif ($barGrouping === Bar::GROUPING_STACKED || $barGrouping === Bar::GROUPING_PERCENTSTACKED) { - $objWriter->writeAttribute('val', '100000'); + $objWriter->writeAttribute('val', '100'); } $objWriter->endElement(); From 3ab8437c9bb6d908f04be5c1a9c45d16ab1ff72f Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Mon, 31 May 2021 15:04:16 -0700 Subject: [PATCH 092/139] #605 : Fixed PHPMD errors --- phpmd.xml.dist | 6 +++++ src/PhpPresentation/Reader/PowerPoint97.php | 26 +++++++++---------- src/PhpPresentation/Writer/ODPresentation.php | 6 ++--- src/PhpPresentation/Writer/PowerPoint2007.php | 6 ++--- 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/phpmd.xml.dist b/phpmd.xml.dist index 839717fdc1..2499a06587 100644 --- a/phpmd.xml.dist +++ b/phpmd.xml.dist @@ -6,12 +6,18 @@ xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"> + + + + + + diff --git a/src/PhpPresentation/Reader/PowerPoint97.php b/src/PhpPresentation/Reader/PowerPoint97.php index 385638c839..8f073e6cd5 100644 --- a/src/PhpPresentation/Reader/PowerPoint97.php +++ b/src/PhpPresentation/Reader/PowerPoint97.php @@ -568,13 +568,13 @@ private function loadCurrentUserStream() $pos += 2; // ansiUserName - $ansiUserName = ''; + // $ansiUserName = ''; do { $char = self::getInt1d($this->streamCurrentUser, $pos); if (($char >= 0x00 && $char <= 0x1F) || ($char >= 0x7F && $char <= 0x9F)) { $char = false; } else { - $ansiUserName .= chr($char); + // $ansiUserName .= chr($char); $pos += 1; } } while ($char !== false); @@ -587,13 +587,13 @@ private function loadCurrentUserStream() } // unicodeUserName - $unicodeUserName = ''; + // $unicodeUserName = ''; for ($inc = 0; $inc < $lenUserName; $inc++) { $char = self::getInt2d($this->streamCurrentUser, $pos); if (($char >= 0x00 && $char <= 0x1F) || ($char >= 0x7F && $char <= 0x9F)) { break; } - $unicodeUserName .= chr($char); + // $unicodeUserName .= chr($char); $pos += 2; } } @@ -611,11 +611,11 @@ private function loadPowerpointDocumentStream() foreach ($this->rgPersistDirEntry as $offsetDir) { $pos = $offsetDir; - $rh = $this->loadRecordHeader($this->streamPowerpointDocument, $pos); + $rHeader = $this->loadRecordHeader($this->streamPowerpointDocument, $pos); $pos += 8; - $this->inMainType = $rh['recType']; + $this->inMainType = $rHeader['recType']; $this->currentNote = null; - switch ($rh['recType']) { + switch ($rHeader['recType']) { case self::RT_DOCUMENT: $this->readRecordDocumentContainer($this->streamPowerpointDocument, $pos); break; @@ -3168,19 +3168,19 @@ private function readStructureTextPFRun($stream, $pos, $strLenRT) $arrayReturn['length'] += 2; } if ($masksData['bulletColor'] == 1) { - $red = self::getInt1d($stream, $pos + $arrayReturn['length']); + // $red = self::getInt1d($stream, $pos + $arrayReturn['length']); $arrayReturn['length'] += 1; - $green = self::getInt1d($stream, $pos + $arrayReturn['length']); + // $green = self::getInt1d($stream, $pos + $arrayReturn['length']); $arrayReturn['length'] += 1; - $blue = self::getInt1d($stream, $pos + $arrayReturn['length']); + // $blue = self::getInt1d($stream, $pos + $arrayReturn['length']); $arrayReturn['length'] += 1; $index = self::getInt1d($stream, $pos + $arrayReturn['length']); $arrayReturn['length'] += 1; if ($index == 0xFE) { - $strColor = str_pad(dechex($red), 2, STR_PAD_LEFT, '0'); - $strColor .= str_pad(dechex($green), 2, STR_PAD_LEFT, '0'); - $strColor .= str_pad(dechex($blue), 2, STR_PAD_LEFT, '0'); + // $strColor = str_pad(dechex($red), 2, STR_PAD_LEFT, '0'); + // $strColor .= str_pad(dechex($green), 2, STR_PAD_LEFT, '0'); + // $strColor .= str_pad(dechex($blue), 2, STR_PAD_LEFT, '0'); } } if ($masksData['align'] == 1) { diff --git a/src/PhpPresentation/Writer/ODPresentation.php b/src/PhpPresentation/Writer/ODPresentation.php index 027afdf645..bf3b68d941 100644 --- a/src/PhpPresentation/Writer/ODPresentation.php +++ b/src/PhpPresentation/Writer/ODPresentation.php @@ -107,12 +107,12 @@ public function save($pFilename) } $class = __NAMESPACE__ . '\\ODPresentation\\' . $oFile->getBasename('.php'); - $o = new \ReflectionClass($class); + $class = new \ReflectionClass($class); - if ($o->isAbstract() || !$o->isSubclassOf('PhpOffice\PhpPresentation\Writer\ODPresentation\AbstractDecoratorWriter')) { + if ($class->isAbstract() || !$class->isSubclassOf('PhpOffice\PhpPresentation\Writer\ODPresentation\AbstractDecoratorWriter')) { continue; } - $arrayFiles[$oFile->getBasename('.php')] = $o; + $arrayFiles[$oFile->getBasename('.php')] = $class; } ksort($arrayFiles); diff --git a/src/PhpPresentation/Writer/PowerPoint2007.php b/src/PhpPresentation/Writer/PowerPoint2007.php index 2b6e2c27d9..87e5b1bc8d 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007.php +++ b/src/PhpPresentation/Writer/PowerPoint2007.php @@ -109,12 +109,12 @@ public function save($pFilename) } $class = __NAMESPACE__ . '\\PowerPoint2007\\' . $oFile->getBasename('.php'); - $o = new \ReflectionClass($class); + $class = new \ReflectionClass($class); - if ($o->isAbstract() || !$o->isSubclassOf('PhpOffice\PhpPresentation\Writer\PowerPoint2007\AbstractDecoratorWriter')) { + if ($class->isAbstract() || !$class->isSubclassOf('PhpOffice\PhpPresentation\Writer\PowerPoint2007\AbstractDecoratorWriter')) { continue; } - $arrayFiles[$oFile->getBasename('.php')] = $o; + $arrayFiles[$oFile->getBasename('.php')] = $class; } ksort($arrayFiles); From 50890dc1e9c6b7c77acd59317cc7149571ae499d Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Mon, 31 May 2021 15:30:54 -0700 Subject: [PATCH 093/139] #605 : Fixed Travis CI --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index dd6b4495d1..167238f4a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,7 @@ matrix: env: global: - secure: "LtlUOzC8FtqgbqUTmU7EU281NSCb58UFdvnz8lelNIDltBdP4eayN/TsgNIePB4jXg2d2R56ZA6j/grhE/md6jdUkulV355H3GrH/hIZmmQ+F9+87agnwLzb9+MJbqXoiE7VvjY3zGIO09G897SUfsfu6JWEcscYFlsH6KcXM6M=" + - XDEBUG_MODE=coverage addons: apt: From adbfd5143ebcd09c0b72958f74368c340725ba65 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Mon, 31 May 2021 16:09:50 -0700 Subject: [PATCH 094/139] #634 : Added Github Actions --- .github/workflows/php.yml | 134 ++++++++++++++++++ .../ODPresentation/ObjectsChartTest.php | 97 ++++++------- 2 files changed, 183 insertions(+), 48 deletions(-) create mode 100644 .github/workflows/php.yml diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml new file mode 100644 index 0000000000..6877c3e19d --- /dev/null +++ b/.github/workflows/php.yml @@ -0,0 +1,134 @@ +name: PHPPresentation +on: [push, pull_request] +jobs: + php-cs-fixer: + name: PHP CS Fixer + runs-on: ubuntu-latest + continue-on-error: true + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + extensions: mbstring, intl, gd, xml, dom, json, fileinfo, curl, zip, iconv + - uses: actions/checkout@v2 + + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Cache Composer Directory + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + - name: Validate composer config + run: composer validate --strict + + - name: Composer Install + run: composer install --ansi --prefer-dist --no-interaction --no-progress + + #- name: Run PHPCSFixer + # run: ./vendor/bin/php-cs-fixer fix --dry-run --diff + + phpmd: + name: PHP Mess Detector + runs-on: ubuntu-latest + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + extensions: gd, xml, zip + - uses: actions/checkout@v2 + + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Cache Composer Directory + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + - name: Composer Install + run: composer install --ansi --prefer-dist --no-interaction --no-progress + + - name: Run phpmd + run: ./vendor/bin/phpmd src/,tests/ text ./phpmd.xml.dist + + phpstan: + name: PHP Static Analysis + runs-on: ubuntu-latest + continue-on-error: true + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + extensions: gd, xml, zip + - uses: actions/checkout@v2 + + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Cache Composer Directory + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + - name: Composer Install + run: composer install --ansi --prefer-dist --no-interaction --no-progress + + #- name: Run phpstan + # run: ./vendor/bin/phpstan analyse -c phpstan.neon.dist + + phpunit: + name: PHPUnit + runs-on: ubuntu-latest + strategy: + matrix: + php: ['5.6', '7.0', '7.1', '7.2', '7.3'] + ## , '7.4', '8.0', '8.1' + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: gd, xml, zip + coverage: xdebug + + - uses: actions/checkout@v2 + + - name: Get Composer Cache Directory + id: composer-cache + run: | + echo "::set-output name=dir::$(composer config cache-files-dir)" + - name: Cache Composer Directory + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-composer- + - name: Composer Install + run: composer install --ansi --prefer-dist --no-interaction --no-progress + + - name: Run phpunit + run: ./vendor/bin/phpunit -c phpunit.xml.dist --coverage-clover build/clover.xml + + - name: Upload coverage results to Coveralls + if: matrix.php-versions == '7.3' + env: + COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + wget https://github.com/php-coveralls/php-coveralls/releases/download/v2.4.3/php-coveralls.phar + chmod +x php-coveralls.phar + php php-coveralls.phar --coverage_clover=build/clover.xml --json_path=build/coveralls-upload.json -vvv diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php index f9c3298518..2b84b1fb2c 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentation/ObjectsChartTest.php @@ -75,7 +75,7 @@ public function testAxisFont() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'fo:font-family', 'Arial'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testLegend() @@ -102,7 +102,7 @@ public function testLegend() $element = '/office:document-content/office:body/office:chart/chart:chart/table:table/table:table-header-rows/table:table-row/table:table-cell[@office:value-type=\'string\']'; $this->assertZipXmlElementExists('Object 1/content.xml', $element); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_RIGHT); $this->resetPresentationFile(); @@ -111,7 +111,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'end'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_LEFT); $this->resetPresentationFile(); @@ -120,7 +120,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'start'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_BOTTOM); $this->resetPresentationFile(); @@ -129,7 +129,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'bottom'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_TOP); $this->resetPresentationFile(); @@ -138,7 +138,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'top'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oChart->getLegend()->setPosition(Legend::POSITION_TOPRIGHT); $this->resetPresentationFile(); @@ -147,7 +147,7 @@ public function testLegend() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:legend-position', 'top-end'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testSeries() @@ -166,7 +166,7 @@ public function testSeries() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->setShowValue(false); $this->resetPresentationFile(); @@ -176,7 +176,7 @@ public function testSeries() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-number'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = true $oSeries->setShowValue(true); @@ -188,7 +188,7 @@ public function testSeries() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value-and-percentage'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = false $oSeries->setShowValue(false); @@ -199,7 +199,7 @@ public function testSeries() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:data-label-text'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); // $showCategoryName = false / $showPercentage = true / $showValue = false $oSeries->setShowCategoryName(true); @@ -209,7 +209,7 @@ public function testSeries() $this->assertZipXmlAttributeExists('Object 1/content.xml', $element, 'chart:data-label-text'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-text', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTitleVisibility() @@ -227,14 +227,15 @@ public function testTitleVisibility() $this->assertZipXmlElementExists('Object 1/content.xml', $elementStyle); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $this->assertInstanceOf('PhpOffice\PhpPresentation\Shape\Chart\Title', $oShape->getTitle()->setVisible(false)); $this->resetPresentationFile(); $this->assertZipXmlElementNotExists('Object 1/content.xml', $elementTitle); $this->assertZipXmlElementNotExists('Object 1/content.xml', $elementStyle); - // chart:title : Element chart failed to validate attributes $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeArea() @@ -260,7 +261,7 @@ public function testTypeArea() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'draw:fill-color', '#93A9CE'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeAxisBounds() @@ -280,7 +281,7 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:maximum'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $this->resetPresentationFile(); @@ -290,7 +291,7 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:minimum', $value); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oShape->getPlotArea()->getAxisX()->setMinBounds(null); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); @@ -301,7 +302,7 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:maximum', $value); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oShape->getPlotArea()->getAxisX()->setMinBounds($value); $oShape->getPlotArea()->getAxisX()->setMaxBounds($value); @@ -313,7 +314,7 @@ public function testTypeAxisBounds() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:maximum', $value); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBar() @@ -346,7 +347,7 @@ public function testTypeBar() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBarGroupingStacked() @@ -365,7 +366,7 @@ public function testTypeBarGroupingStacked() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'value'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBarGroupingPercentStacked() @@ -384,7 +385,7 @@ public function testTypeBarGroupingPercentStacked() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:data-label-number', 'percentage'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBarHorizontal() @@ -411,7 +412,7 @@ public function testTypeBarHorizontal() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $element, 'chart:right-angled-axes'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBar3D() @@ -442,7 +443,7 @@ public function testTypeBar3D() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:right-angled-axes', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeBar3DHorizontal() @@ -471,7 +472,7 @@ public function testTypeBar3DHorizontal() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:right-angled-axes', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeDoughnut() @@ -498,7 +499,7 @@ public function testTypeDoughnut() $element = '/office:document-content/office:automatic-styles/style:style/style:chart-properties/chart:label-separator/text:p'; $this->assertZipXmlElementNotExists('Object 1/content.xml', $element); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); // $oDoughnut->setHoleSize($randHoleSize); // $this->resetPresentationFile(); @@ -510,7 +511,7 @@ public function testTypeDoughnut() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlElementEquals('Object 1/content.xml', $element, $randSeparator); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeLine() @@ -547,7 +548,7 @@ public function testTypeLine() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'svg:stroke-color', '#878787'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeLineGridlines() @@ -621,8 +622,8 @@ public function testTypeLineGridlines() $this->assertZipXmlAttributeStartsWith('Object 1/content.xml', $expectedElementStyle, 'svg:stroke-color', '#'); $this->assertZipXmlAttributeEndsWith('Object 1/content.xml', $expectedElementStyle, 'svg:stroke-color', $expectedColor->getRGB()); - // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + // chart:title : Element chart failed to validate attributes + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } } @@ -658,7 +659,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-height', $expectedSizeCm); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol2); $oLine->setSeries(array($oSeries)); @@ -667,7 +668,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'horizontal-bar'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol3); $oLine->setSeries(array($oSeries)); @@ -676,7 +677,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'circle'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol4); $oLine->setSeries(array($oSeries)); @@ -685,7 +686,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'arrow-up'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol5); $oLine->setSeries(array($oSeries)); @@ -696,7 +697,7 @@ public function testTypeLineMarker() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-height'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeLineSeriesOutline() @@ -732,7 +733,7 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#4a7ebb'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->setOutline($oOutline); $oLine->setSeries(array($oSeries)); @@ -745,7 +746,7 @@ public function testTypeLineSeriesOutline() $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#' . $oColor->getRGB()); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypePie() @@ -776,7 +777,7 @@ public function testTypePie() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:reverse-direction', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypePie3D() @@ -807,7 +808,7 @@ public function testTypePie3D() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:reverse-direction', 'true'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypePie3DExplosion() @@ -826,7 +827,7 @@ public function testTypePie3DExplosion() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:pie-offset', $value); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeScatter() @@ -842,7 +843,7 @@ public function testTypeScatter() $this->assertZipXmlElementExists('Object 1/content.xml', $element); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $element, 'chart:class', 'chart:scatter'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeScatterMarker() @@ -876,7 +877,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-height', $expectedSizeCm); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol2); $oScatter->setSeries(array($oSeries)); @@ -885,7 +886,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'horizontal-bar'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol3); $oScatter->setSeries(array($oSeries)); @@ -894,7 +895,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'circle'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol4); $oScatter->setSeries(array($oSeries)); @@ -903,7 +904,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'chart:symbol-name', 'arrow-up'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->getMarker()->setSymbol($expectedSymbol5); $oScatter->setSeries(array($oSeries)); @@ -914,7 +915,7 @@ public function testTypeScatterMarker() $this->assertZipXmlAttributeNotExists('Object 1/content.xml', $expectedElement, 'chart:symbol-height'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } public function testTypeScatterSeriesOutline() @@ -949,7 +950,7 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#4a7ebb'); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); $oSeries->setOutline($oOutline); $oScatter->setSeries(array($oSeries)); @@ -962,6 +963,6 @@ public function testTypeScatterSeriesOutline() $this->assertZipXmlAttributeExists('Object 1/content.xml', $expectedElement, 'svg:stroke-color'); $this->assertZipXmlAttributeEquals('Object 1/content.xml', $expectedElement, 'svg:stroke-color', '#' . $oColor->getRGB()); // chart:title : Element chart failed to validate attributes - $this->assertIsSchemaOpenDocumentValid('1.2'); + $this->assertIsSchemaOpenDocumentNotValid('1.2'); } } From 8bf50ec9f3ebcf973bfd33bea28d08d3b6a55883 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Mon, 31 May 2021 23:48:21 -0700 Subject: [PATCH 095/139] #634 : Removed Travis CI --- .codeclimate.yml | 16 -------- .scrutinizer.yml | 24 ------------ .travis.yml | 67 ---------------------------------- .travis_shell_after_success.sh | 39 -------------------- 4 files changed, 146 deletions(-) delete mode 100644 .codeclimate.yml delete mode 100644 .scrutinizer.yml delete mode 100644 .travis.yml delete mode 100644 .travis_shell_after_success.sh diff --git a/.codeclimate.yml b/.codeclimate.yml deleted file mode 100644 index 37ffdfd22d..0000000000 --- a/.codeclimate.yml +++ /dev/null @@ -1,16 +0,0 @@ -engines: - phpcodesniffer: - enabled: true - phpmd: - enabled: true - duplication: - enabled: true - config: - languages: - - php -ratings: - paths: - - src/**/* - - tests/** -exclude_paths: -- vendor/**/* diff --git a/.scrutinizer.yml b/.scrutinizer.yml deleted file mode 100644 index 6d188bee8f..0000000000 --- a/.scrutinizer.yml +++ /dev/null @@ -1,24 +0,0 @@ -filter: - excluded_paths: [ 'vendor/*', 'tests/*', 'samples/*' ] - -before_commands: - - "composer install --prefer-source --dev" - -tools: - php_code_sniffer: - enabled: true - config: - standard: PSR2 - php_mess_detector: - enabled: true - config: - ruleset: phpmd.xml.dist - external_code_coverage: - enabled: true - timeout: 900 - php_cpd: true - # php_sim: # Temporarily disabled to allow focus on things other than duplicates - # min_mass: 40 - php_pdepend: true - php_analyzer: true - sensiolabs_security_checker: true \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 167238f4a3..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,67 +0,0 @@ -sudo: false -language: php - -php: - - 5.6 - - 7.0 - - 7.1 - - 7.2 - - 7.3 - -matrix: - include: - - php: 5.4 - dist: trusty - - php: 5.5 - dist: trusty - -env: - global: - - secure: "LtlUOzC8FtqgbqUTmU7EU281NSCb58UFdvnz8lelNIDltBdP4eayN/TsgNIePB4jXg2d2R56ZA6j/grhE/md6jdUkulV355H3GrH/hIZmmQ+F9+87agnwLzb9+MJbqXoiE7VvjY3zGIO09G897SUfsfu6JWEcscYFlsH6KcXM6M=" - - XDEBUG_MODE=coverage - -addons: - apt: - packages: - - graphviz - code_climate: - repo_token: 9d5714bfd25acc27c449c2d71cfb444351a3b91c59ed1a5dc3a50732d2bf45f0 - -before_script: - ## Composer - - composer self-update - - COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-source - ## PHPDocumentor - - mkdir -p build/docs - - mkdir -p build/coverage - -script: - ## PHP_CodeSniffer - - ./vendor/bin/phpcs src/ tests/ --standard=PSR2 -n - ## PHP Copy/Paste Detector - # - ./vendor/bin/phpcpd src/ - ## PHP Mess Detector - - ./vendor/bin/phpmd src/,tests/ text ./phpmd.xml.dist - ## PHPUnit - - ./vendor/bin/phpunit -c ./ --coverage-text --coverage-html ./build/coverage - ## PHPLOC - - ./vendor/bin/phploc src/ - ## PHPDocumentor - # - ./vendor/bin/phpdoc -q -d ./src -t ./build/docs --template="responsive-twig" - -after_script: - ## PHPDocumentor - # - bash .travis_shell_after_success.sh - ## Scrutinizer - - wget https://scrutinizer-ci.com/ocular.phar - - php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml - ## CodeClimate - - ./vendor/bin/test-reporter - -notifications: - webhooks: - urls: - - https://webhooks.gitter.im/e/0dbc70ac93ba40880eef - on_success: change # options: [always|never|change] default: always - on_failure: always # options: [always|never|change] default: always - on_start: false # default: false diff --git a/.travis_shell_after_success.sh b/.travis_shell_after_success.sh deleted file mode 100644 index d3138a2485..0000000000 --- a/.travis_shell_after_success.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -echo "--DEBUG--" -echo "TRAVIS_REPO_SLUG: $TRAVIS_REPO_SLUG" -echo "TRAVIS_PHP_VERSION: $TRAVIS_PHP_VERSION" -echo "TRAVIS_PULL_REQUEST: $TRAVIS_PULL_REQUEST" - -if [ "$TRAVIS_REPO_SLUG" == "PHPOffice/PHPPresentation" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_PHP_VERSION" == "5.5" ]; then - - echo -e "Publishing PHPDoc...\n" - - cp -R build/docs $HOME/docs-latest - cp -R build/coverage $HOME/coverage-latest - - cd $HOME - git config --global user.email "travis@travis-ci.org" - git config --global user.name "travis-ci" - git clone --quiet --branch=gh-pages https://${GH_TOKEN}@github.com/PHPOffice/PHPPresentation gh-pages > /dev/null - - cd gh-pages - echo "--DEBUG : Suppression" - git rm -rf ./docs/$TRAVIS_BRANCH - - echo "--DEBUG : Dossier" - mkdir -p docs/$TRAVIS_BRANCH - mkdir -p coverage/$TRAVIS_BRANCH - - echo "--DEBUG : Copie" - cp -Rf $HOME/docs-latest/* ./docs/$TRAVIS_BRANCH/ - cp -Rf $HOME/coverage-latest/* ./coverage/$TRAVIS_BRANCH/ - - echo "--DEBUG : Git" - git add -f . - git commit -m "PHPDocumentor (Travis Build: $TRAVIS_BUILD_NUMBER - Branch: $TRAVIS_BRANCH)" - git push -fq origin gh-pages > /dev/null - - echo -e "Published PHPDoc to gh-pages.\n" - -fi From 49312ba270571819df5118a2736fd2bd20ad3d26 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Fri, 4 Jun 2021 12:34:32 -0700 Subject: [PATCH 096/139] #634 : Add support PHP 7.4 to 8.0 & Remove support PHP < 7.1 --- .github/workflows/php.yml | 50 ++----------------- .gitignore | 8 +-- README.md | 2 +- composer.json | 12 ++--- samples/Sample_Header.php | 4 +- src/PhpPresentation/Writer/Serialized.php | 3 ++ .../Tests/AbstractShapeTest.php | 10 ++-- tests/PhpPresentation/Tests/HashTableTest.php | 14 +++--- tests/PhpPresentation/Tests/IOFactoryTest.php | 10 ++-- .../Tests/PhpPresentationTest.php | 18 +++---- .../Tests/Reader/ODPresentationTest.php | 31 ++++++------ .../Tests/Reader/PowerPoint2007Test.php | 29 +++++------ .../Tests/Reader/PowerPoint97Test.php | 21 ++++---- .../Tests/Reader/SerializedTest.php | 21 ++++---- .../Tests/Shape/Chart/PlotAreaTest.php | 7 ++- .../Tests/Shape/Chart/SeriesTest.php | 6 +-- .../Tests/Shape/Chart/Type/AbstractTest.php | 6 +-- .../Tests/Shape/Chart/Type/AreaTest.php | 2 +- .../Tests/Shape/Chart/Type/Bar3DTest.php | 2 +- .../Tests/Shape/Chart/Type/BarTest.php | 2 +- .../Tests/Shape/Chart/Type/DoughnutTest.php | 2 +- .../Tests/Shape/Chart/Type/LineTest.php | 2 +- .../Tests/Shape/Chart/Type/Pie3DTest.php | 2 +- .../Tests/Shape/Chart/Type/PieTest.php | 2 +- .../Tests/Shape/Chart/Type/ScatterTest.php | 2 +- .../Tests/Shape/CommentTest.php | 6 +-- .../Tests/Shape/Drawing/Base64Test.php | 15 ++---- .../Tests/Shape/Drawing/FileTest.php | 7 ++- .../Tests/Shape/Drawing/ZipFileTest.php | 15 ++---- .../PhpPresentation/Tests/Shape/LineTest.php | 2 +- .../Tests/Shape/RichText/ParagraphTest.php | 9 ++-- .../Tests/Shape/RichTextTest.php | 28 +++++------ .../Tests/Shape/Table/CellTest.php | 21 ++++---- .../Tests/Shape/Table/RowTest.php | 14 +++--- .../PhpPresentation/Tests/Shape/TableTest.php | 7 ++- .../Tests/Slide/AbstractSlideTest.php | 4 +- .../Tests/Slide/AnimationTest.php | 8 +-- .../Tests/Slide/Background/ImageTest.php | 7 ++- .../PhpPresentation/Tests/Slide/NoteTest.php | 2 +- .../Tests/Slide/SlideMasterTest.php | 2 +- tests/PhpPresentation/Tests/SlideTest.php | 8 +-- .../Tests/Style/AlignmentTest.php | 9 ++-- .../Tests/Style/ColorMapTest.php | 6 +-- .../PhpPresentation/Tests/Style/FontTest.php | 5 +- .../Tests/Style/TextStyleTest.php | 12 ++--- .../ODPresentation/MetaInfManifestTest.php | 21 +++----- .../Tests/Writer/ODPresentationTest.php | 16 +++--- .../LayoutPack/TemplateBasedTest.php | 15 +++--- .../Writer/PowerPoint2007/PptChartsTest.php | 7 ++- .../Writer/PowerPoint2007/PptMediaTest.php | 21 +++----- .../Tests/Writer/PowerPoint2007Test.php | 24 ++++----- .../Tests/Writer/SerializedTest.php | 30 +++++------ .../_includes/PhpPresentationTestCase.php | 50 +++++++++---------- 53 files changed, 257 insertions(+), 382 deletions(-) diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 6877c3e19d..15efd109ae 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -13,17 +13,6 @@ jobs: extensions: mbstring, intl, gd, xml, dom, json, fileinfo, curl, zip, iconv - uses: actions/checkout@v2 - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache Composer Directory - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - name: Validate composer config run: composer validate --strict @@ -44,17 +33,6 @@ jobs: extensions: gd, xml, zip - uses: actions/checkout@v2 - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache Composer Directory - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - name: Composer Install run: composer install --ansi --prefer-dist --no-interaction --no-progress @@ -73,17 +51,6 @@ jobs: extensions: gd, xml, zip - uses: actions/checkout@v2 - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache Composer Directory - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - name: Composer Install run: composer install --ansi --prefer-dist --no-interaction --no-progress @@ -94,9 +61,9 @@ jobs: name: PHPUnit runs-on: ubuntu-latest strategy: + fail-fast: false matrix: - php: ['5.6', '7.0', '7.1', '7.2', '7.3'] - ## , '7.4', '8.0', '8.1' + php: ['7.1', '7.2', '7.3', '7.4', '8.0'] #, '8.1' steps: - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -107,17 +74,6 @@ jobs: - uses: actions/checkout@v2 - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "::set-output name=dir::$(composer config cache-files-dir)" - - name: Cache Composer Directory - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - name: Composer Install run: composer install --ansi --prefer-dist --no-interaction --no-progress @@ -125,7 +81,7 @@ jobs: run: ./vendor/bin/phpunit -c phpunit.xml.dist --coverage-clover build/clover.xml - name: Upload coverage results to Coveralls - if: matrix.php-versions == '7.3' + if: matrix.php == '7.3' env: COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | diff --git a/.gitignore b/.gitignore index 2e0a455edc..f83c7b3786 100644 --- a/.gitignore +++ b/.gitignore @@ -6,16 +6,10 @@ Thumbs.db Desktop.ini -### IDE Jetbrains PhpStorm -.idea -### IDE Eclipse -*.settings -*.project -*.buildpath - ### Continuous Integration build/ phpunit.xml +.phpunit.result.cache composer.phar vendor /batch_CI.bat diff --git a/README.md b/README.md index 3a31475ba4..b4aecf0475 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Read more about PHPPresentation: PHPPresentation requires the following: -- PHP 5.3+ +- PHP 7.1+ - [Zip extension](http://php.net/manual/en/book.zip.php) - [XML Parser extension](http://www.php.net/manual/en/xml.installation.php) - [XMLWriter extension](http://php.net/manual/en/book.xmlwriter.php) (optional, used to write DOCX and ODT) diff --git a/composer.json b/composer.json index fcf1b5123e..4e1fb39911 100644 --- a/composer.json +++ b/composer.json @@ -19,19 +19,15 @@ } ], "require": { - "php": ">=5.3.0", + "php": "^7.1|^8.0", "ext-xml": "*", "ext-zip": "*", "phpoffice/common": "0.2.*" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*|6.*|7.*", - "phpdocumentor/phpdocumentor":"2.*", - "phpmd/phpmd": "2.*", - "sebastian/phpcpd": "2.*", - "phploc/phploc": "2.*", - "squizlabs/php_codesniffer": "2.*", - "codeclimate/php-test-reporter": "dev-master" + "phpunit/phpunit": ">=7.0", + "phpdocumentor/phpdocumentor":"^2.0|^3.0", + "phpmd/phpmd": "2.*" }, "suggest": { "ext-gd": "Required to add images" diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index 91d04e91f7..4fb290cd58 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -26,8 +26,8 @@ require_once __DIR__ . '/../src/PhpPresentation/Autoloader.php'; Autoloader::register(); -if (is_file(__DIR__. '/../../../../vendor/autoload.php')) { - require_once __DIR__ . '/../../../../vendor/autoload.php'; +if (is_file(dirname(__DIR__). '/vendor/autoload.php')) { + require_once dirname(__DIR__) . '/vendor/autoload.php'; } else { throw new Exception ('Can not find the vendor folder!'); } diff --git a/src/PhpPresentation/Writer/Serialized.php b/src/PhpPresentation/Writer/Serialized.php index 2d57e84163..6e4aba1bd7 100644 --- a/src/PhpPresentation/Writer/Serialized.php +++ b/src/PhpPresentation/Writer/Serialized.php @@ -53,6 +53,9 @@ public function save($pFilename) if (empty($pFilename)) { throw new \Exception("Filename is empty."); } + if (!is_dir(dirname($pFilename))) { + throw new \Exception(sprintf("Could not open %s for writing.", $pFilename)); + } $oPresentation = $this->getPhpPresentation(); // Create new ZIP file and open it for writing diff --git a/tests/PhpPresentation/Tests/AbstractShapeTest.php b/tests/PhpPresentation/Tests/AbstractShapeTest.php index a6774d9d3a..b201804bbd 100644 --- a/tests/PhpPresentation/Tests/AbstractShapeTest.php +++ b/tests/PhpPresentation/Tests/AbstractShapeTest.php @@ -192,11 +192,7 @@ public function testContainer() $this->assertNull($object->getContainer()); } - /** - * @expectedException \Exception - * @expectedExceptionMessage A \PhpOffice\PhpPresentation\ShapeContainerInterface has already been assigned. Shapes can only exist on one \PhpOffice\PhpPresentation\ShapeContainerInterface. - */ - public function testContainerException() + public function testContainerException(): void { $object = new RichText(); $oSlide = new Slide(); @@ -204,6 +200,8 @@ public function testContainerException() $this->assertNull($object->getContainer()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\AbstractShape', $object->setContainer($oSlide)); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide', $object->getContainer()); - $this->assertInstanceOf('PhpOffice\\PhpPresentation\\AbstractShape', $object->setContainer(null)); + $this->expectException(\Exception::class); + $this->expectExceptionMessage('A \PhpOffice\PhpPresentation\ShapeContainerInterface has already been assigned. Shapes can only exist on one \PhpOffice\PhpPresentation\ShapeContainerInterface.'); + $object->setContainer(null); } } diff --git a/tests/PhpPresentation/Tests/HashTableTest.php b/tests/PhpPresentation/Tests/HashTableTest.php index 9b96fdde8c..ea2f822055 100644 --- a/tests/PhpPresentation/Tests/HashTableTest.php +++ b/tests/PhpPresentation/Tests/HashTableTest.php @@ -37,7 +37,7 @@ public function testConstructNull() $this->assertEquals(0, $object->count()); $this->assertNull($object->getByIndex()); $this->assertNull($object->getByHashCode()); - $this->assertInternalType('array', $object->toArray()); + $this->assertIsArray($object->toArray()); $this->assertEmpty($object->toArray()); } @@ -51,7 +51,7 @@ public function testConstructSource() )); $this->assertEquals(2, $object->count()); - $this->assertInternalType('array', $object->toArray()); + $this->assertIsArray($object->toArray()); $this->assertCount(2, $object->toArray()); } @@ -66,7 +66,7 @@ public function testAdd() $this->assertNull($object->addFromSource()); // Add From Source : Array $this->assertNull($object->addFromSource(array($oSlide))); - $this->assertInternalType('array', $object->toArray()); + $this->assertIsArray($object->toArray()); $this->assertCount(1, $object->toArray()); // Clear $this->assertNull($object->clear()); @@ -122,14 +122,12 @@ public function testRemove() $this->assertCount(1, $object->toArray()); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Invalid array parameter passed. - */ - public function testAddException() + public function testAddException(): void { $object = new HashTable(); $oSlide = new Slide(); + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid array parameter passed.'); $object->addFromSource($oSlide); } } diff --git a/tests/PhpPresentation/Tests/IOFactoryTest.php b/tests/PhpPresentation/Tests/IOFactoryTest.php index bbddb0e49a..5a666ea937 100644 --- a/tests/PhpPresentation/Tests/IOFactoryTest.php +++ b/tests/PhpPresentation/Tests/IOFactoryTest.php @@ -50,12 +50,11 @@ public function testCreateReader() /** * Test load class exception - * - * @expectedException \Exception - * @expectedExceptionMessage is not a valid reader */ public function testLoadClassException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('"" is not a valid reader'); IOFactory::createReader(); } @@ -66,12 +65,11 @@ public function testLoad() /** * Test load class exception - * - * @expectedException \Exception - * @expectedExceptionMessage Could not automatically determine \PhpOffice\PhpPresentation\Reader\ReaderInterface for file. */ public function testLoadException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not automatically determine \PhpOffice\PhpPresentation\Reader\ReaderInterface for file.'); IOFactory::load(PHPPRESENTATION_TESTS_BASE_DIR.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'images'.DIRECTORY_SEPARATOR.'PhpPresentationLogo.png'); } } diff --git a/tests/PhpPresentation/Tests/PhpPresentationTest.php b/tests/PhpPresentation/Tests/PhpPresentationTest.php index 554fc3eedc..91927ac7c8 100644 --- a/tests/PhpPresentation/Tests/PhpPresentationTest.php +++ b/tests/PhpPresentation/Tests/PhpPresentationTest.php @@ -93,36 +93,36 @@ public function testCopy() /** * Test remove slide by index exception - * - * @expectedException Exception - * @expectedExceptionMessage Slide index is out of bounds. */ public function testRemoveSlideByIndexException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Slide index is out of bounds.'); + $object = new PhpPresentation(); $object->removeSlideByIndex(1); } /** * Test get slide exception - * - * @expectedException Exception - * @expectedExceptionMessage Slide index is out of bounds. */ public function testGetSlideException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Slide index is out of bounds.'); + $object = new PhpPresentation(); $object->getSlide(1); } /** * Test set active slide index exception - * - * @expectedException Exception - * @expectedExceptionMessage Active slide index is out of bounds. */ public function testSetActiveSlideIndexException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Active slide index is out of bounds.'); + $object = new PhpPresentation(); $object->setActiveSlideIndex(1); } diff --git a/tests/PhpPresentation/Tests/Reader/ODPresentationTest.php b/tests/PhpPresentation/Tests/Reader/ODPresentationTest.php index 7cf144f802..11f73e8bc8 100644 --- a/tests/PhpPresentation/Tests/Reader/ODPresentationTest.php +++ b/tests/PhpPresentation/Tests/Reader/ODPresentationTest.php @@ -49,33 +49,30 @@ public function testCanRead() $this->assertTrue($object->canRead($file)); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Could not open for reading! File does not exist. - */ public function testLoadFileNotExists() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not open for reading! File does not exist.'); + $object = new ODPresentation(); $object->load(''); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Invalid file format for PhpOffice\PhpPresentation\Reader\ODPresentation: - */ public function testLoadFileBadFormat() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid file format for PhpOffice\PhpPresentation\Reader\ODPresentation:'); + $file = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/files/Sample_00_01.ppt'; $object = new ODPresentation(); $object->load($file); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Could not open for reading! File does not exist. - */ public function testFileSupportsNotExists() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not open for reading! File does not exist.'); + $object = new ODPresentation(); $object->fileSupportsUnserializePhpPresentation(''); } @@ -98,7 +95,7 @@ public function testLoadFile01() // Slide 1 $oSlide1 = $oPhpPresentation->getSlide(0); - $arrayShape = $oSlide1->getShapeCollection(); + $arrayShape = (array) $oSlide1->getShapeCollection(); $this->assertCount(2, $arrayShape); // Slide 1 : Shape 1 $oShape = $arrayShape[0]; @@ -144,7 +141,7 @@ public function testLoadFile01() // Slide 2 $oSlide2 = $oPhpPresentation->getSlide(1); - $arrayShape = $oSlide2->getShapeCollection(); + $arrayShape = (array) $oSlide2->getShapeCollection(); $this->assertCount(3, $arrayShape); // Slide 2 : Shape 1 $oShape = $arrayShape[0]; @@ -241,7 +238,7 @@ public function testLoadFile01() // Slide 3 $oSlide2 = $oPhpPresentation->getSlide(2); - $arrayShape = $oSlide2->getShapeCollection(); + $arrayShape = (array) $oSlide2->getShapeCollection(); $this->assertCount(3, $arrayShape); // Slide 3 : Shape 1 $oShape = $arrayShape[0]; @@ -398,7 +395,7 @@ public function testLoadFile01() // Slide 4 $oSlide3 = $oPhpPresentation->getSlide(3); - $arrayShape = $oSlide3->getShapeCollection(); + $arrayShape = (array) $oSlide3->getShapeCollection(); $this->assertCount(3, $arrayShape); // Slide 4 : Shape 1 $oShape = $arrayShape[0]; @@ -487,7 +484,7 @@ public function testIssue00141() // Slide 1 $oSlide = $oPhpPresentation->getSlide(1); - $arrayShape = $oSlide->getShapeCollection(); + $arrayShape = (array) $oSlide->getShapeCollection(); $this->assertCount(2, $arrayShape); // Slide 1 : Shape 1 $oShape = reset($arrayShape); diff --git a/tests/PhpPresentation/Tests/Reader/PowerPoint2007Test.php b/tests/PhpPresentation/Tests/Reader/PowerPoint2007Test.php index d8be520301..e5dff10fbf 100644 --- a/tests/PhpPresentation/Tests/Reader/PowerPoint2007Test.php +++ b/tests/PhpPresentation/Tests/Reader/PowerPoint2007Test.php @@ -47,33 +47,30 @@ public function testCanRead() $this->assertTrue($object->canRead($file)); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Could not open for reading! File does not exist. - */ public function testLoadFileNotExists() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not open for reading! File does not exist.'); + $object = new PowerPoint2007(); $object->load(''); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Invalid file format for PhpOffice\PhpPresentation\Reader\PowerPoint2007: - */ public function testLoadFileBadFormat() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid file format for PhpOffice\PhpPresentation\Reader\PowerPoint2007:'); + $file = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/files/Sample_00_01.ppt'; $object = new PowerPoint2007(); $object->load($file); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Could not open for reading! File does not exist. - */ public function testFileSupportsNotExists() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not open for reading! File does not exist.'); + $object = new PowerPoint2007(); $object->fileSupportsUnserializePhpPresentation(''); } @@ -102,7 +99,7 @@ public function testLoadFile01() // Slide 1 $oSlide1 = $oPhpPresentation->getSlide(0); - $arrayShape = $oSlide1->getShapeCollection(); + $arrayShape = (array) $oSlide1->getShapeCollection(); $this->assertCount(2, $arrayShape); // Slide 1 : Shape 1 $oShape = $arrayShape[0]; @@ -148,7 +145,7 @@ public function testLoadFile01() // Slide 2 $oSlide2 = $oPhpPresentation->getSlide(1); - $arrayShape = $oSlide2->getShapeCollection(); + $arrayShape = (array) $oSlide2->getShapeCollection(); $this->assertCount(3, $arrayShape); // Slide 2 : Shape 1 $oShape = $arrayShape[0]; @@ -245,7 +242,7 @@ public function testLoadFile01() // Slide 3 $oSlide2 = $oPhpPresentation->getSlide(2); - $arrayShape = $oSlide2->getShapeCollection(); + $arrayShape = (array) $oSlide2->getShapeCollection(); $this->assertCount(3, $arrayShape); // Slide 3 : Shape 1 $oShape = $arrayShape[0]; @@ -402,7 +399,7 @@ public function testLoadFile01() // Slide 4 $oSlide3 = $oPhpPresentation->getSlide(3); - $arrayShape = $oSlide3->getShapeCollection(); + $arrayShape = (array) $oSlide3->getShapeCollection(); $this->assertCount(3, $arrayShape); // Slide 4 : Shape 1 $oShape = $arrayShape[0]; diff --git a/tests/PhpPresentation/Tests/Reader/PowerPoint97Test.php b/tests/PhpPresentation/Tests/Reader/PowerPoint97Test.php index fafc54b8ec..0f4cac3bc7 100644 --- a/tests/PhpPresentation/Tests/Reader/PowerPoint97Test.php +++ b/tests/PhpPresentation/Tests/Reader/PowerPoint97Test.php @@ -50,33 +50,30 @@ public function testCantRead() $this->assertFalse($object->canRead($file)); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Could not open for reading! File does not exist. - */ public function testLoadFileNotExists() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not open for reading! File does not exist.'); + $object = new PowerPoint97(); $object->load(''); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Invalid file format for PhpOffice\PhpPresentation\Reader\PowerPoint97: - */ public function testLoadFileBadFormat() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid file format for PhpOffice\PhpPresentation\Reader\PowerPoint97:'); + $file = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/files/Sample_01_Simple.pptx'; $object = new PowerPoint97(); $object->load($file); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Could not open for reading! File does not exist. - */ public function testFileSupportsNotExists() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not open for reading! File does not exist.'); + $object = new PowerPoint97(); $object->fileSupportsUnserializePhpPresentation(''); } diff --git a/tests/PhpPresentation/Tests/Reader/SerializedTest.php b/tests/PhpPresentation/Tests/Reader/SerializedTest.php index bcc3097502..b13157f9f0 100644 --- a/tests/PhpPresentation/Tests/Reader/SerializedTest.php +++ b/tests/PhpPresentation/Tests/Reader/SerializedTest.php @@ -38,33 +38,30 @@ public function testCanRead() $this->assertTrue($object->canRead($file)); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Could not open for reading! File does not exist. - */ public function testLoadFileNotExists() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not open for reading! File does not exist.'); + $object = new Serialized(); $object->load(''); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Invalid file format for PhpOffice\PhpPresentation\Reader\Serialized: - */ public function testLoadFileBadFormat() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid file format for PhpOffice\PhpPresentation\Reader\Serialized:'); + $file = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/files/Sample_01_Simple.pptx'; $object = new Serialized(); $object->load($file); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Could not open for reading! File does not exist. - */ public function testFileSupportsNotExists() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not open for reading! File does not exist.'); + $object = new Serialized(); $object->fileSupportsUnserializePhpPresentation(''); } diff --git a/tests/PhpPresentation/Tests/Shape/Chart/PlotAreaTest.php b/tests/PhpPresentation/Tests/Shape/Chart/PlotAreaTest.php index c9a29a3fbc..d6cd3b9eeb 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/PlotAreaTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/PlotAreaTest.php @@ -89,12 +89,11 @@ public function testType() $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\AbstractType', $object->getType()); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Chart type has not been set. - */ public function testTypeException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Chart type has not been set.'); + $object = new PlotArea(); $object->getType(); } diff --git a/tests/PhpPresentation/Tests/Shape/Chart/SeriesTest.php b/tests/PhpPresentation/Tests/Shape/Chart/SeriesTest.php index 6f41611094..4f40bfd3de 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/SeriesTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/SeriesTest.php @@ -40,7 +40,7 @@ public function testConstruct() $this->assertEquals('Calibri', $object->getFont()->getName()); $this->assertEquals(9, $object->getFont()->getSize()); $this->assertEquals('Series Title', $object->getTitle()); - $this->assertInternalType('array', $object->getValues()); + $this->assertIsArray($object->getValues()); $this->assertEmpty($object->getValues()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Marker', $object->getMarker()); $this->assertNull($object->getOutline()); @@ -69,7 +69,7 @@ public function testDataPointFills() { $object = new Series(); - $this->assertInternalType('array', $object->getDataPointFills()); + $this->assertIsArray($object->getDataPointFills()); $this->assertEmpty($object->getDataPointFills()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Fill', $object->getDataPointFill(0)); @@ -236,7 +236,7 @@ public function testValue() '3' => 'd', ); - $this->assertInternalType('array', $object->getValues()); + $this->assertIsArray($object->getValues()); $this->assertEmpty($object->getValues()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Series', $object->setValues()); $this->assertEmpty($object->getValues()); diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/AbstractTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/AbstractTest.php index 8fe41e264d..b0cbc77ccc 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/Type/AbstractTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/AbstractTest.php @@ -50,14 +50,14 @@ public function testData() { $stub = $this->getMockForAbstractClass('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\AbstractType'); $this->assertEmpty($stub->getData()); - $this->assertInternalType('array', $stub->getData()); + $this->assertIsArray($stub->getData()); $arraySeries = array( new Series(), new Series() ); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\AbstractType', $stub->setData($arraySeries)); - $this->assertInternalType('array', $stub->getData()); + $this->assertIsArray($stub->getData()); $this->assertCount(count($arraySeries), $stub->getData()); } @@ -75,7 +75,7 @@ public function testClone() $clone = clone $stub; $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Chart\\Type\\AbstractType', $clone); - $this->assertInternalType('array', $stub->getData()); + $this->assertIsArray($stub->getData()); $this->assertCount(count($arraySeries), $stub->getData()); } } diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/AreaTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/AreaTest.php index 2235473def..2be0d0d25a 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/Type/AreaTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/AreaTest.php @@ -32,7 +32,7 @@ public function testData() { $object = new Area(); - $this->assertInternalType('array', $object->getSeries()); + $this->assertIsArray($object->getSeries()); $this->assertEmpty($object->getSeries()); $array = array( diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/Bar3DTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/Bar3DTest.php index f2a216f220..0a143431da 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/Type/Bar3DTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/Bar3DTest.php @@ -32,7 +32,7 @@ public function testData() { $object = new Bar3D(); - $this->assertInternalType('array', $object->getSeries()); + $this->assertIsArray($object->getSeries()); $this->assertEmpty($object->getSeries()); $array = array( diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/BarTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/BarTest.php index d558dd7b30..b386bfcbc6 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/Type/BarTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/BarTest.php @@ -32,7 +32,7 @@ public function testData() { $object = new Bar(); - $this->assertInternalType('array', $object->getSeries()); + $this->assertIsArray($object->getSeries()); $this->assertEmpty($object->getSeries()); $array = array( diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/DoughnutTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/DoughnutTest.php index 92c2a34869..7425873d3b 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/Type/DoughnutTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/DoughnutTest.php @@ -32,7 +32,7 @@ public function testData() { $object = new Doughnut(); - $this->assertInternalType('array', $object->getSeries()); + $this->assertIsArray($object->getSeries()); $this->assertEmpty($object->getSeries()); $array = array( diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/LineTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/LineTest.php index 4cbb03c784..fdd4fab85b 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/Type/LineTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/LineTest.php @@ -32,7 +32,7 @@ public function testData() { $object = new Line(); - $this->assertInternalType('array', $object->getSeries()); + $this->assertIsArray($object->getSeries()); $this->assertEmpty($object->getSeries()); $array = array( diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/Pie3DTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/Pie3DTest.php index 54abf433c8..3abc084f6a 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/Type/Pie3DTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/Pie3DTest.php @@ -32,7 +32,7 @@ public function testData() { $object = new Pie3D(); - $this->assertInternalType('array', $object->getSeries()); + $this->assertIsArray($object->getSeries()); $this->assertEmpty($object->getSeries()); $array = array( diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/PieTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/PieTest.php index f32b3a32e5..94ed8fda0c 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/Type/PieTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/PieTest.php @@ -32,7 +32,7 @@ public function testData() { $object = new Pie(); - $this->assertInternalType('array', $object->getSeries()); + $this->assertIsArray($object->getSeries()); $this->assertEmpty($object->getSeries()); $array = array( diff --git a/tests/PhpPresentation/Tests/Shape/Chart/Type/ScatterTest.php b/tests/PhpPresentation/Tests/Shape/Chart/Type/ScatterTest.php index a574601e30..ca447f1d2f 100644 --- a/tests/PhpPresentation/Tests/Shape/Chart/Type/ScatterTest.php +++ b/tests/PhpPresentation/Tests/Shape/Chart/Type/ScatterTest.php @@ -32,7 +32,7 @@ public function testData() { $object = new Scatter(); - $this->assertInternalType('array', $object->getSeries()); + $this->assertIsArray($object->getSeries()); $this->assertEmpty($object->getSeries()); $array = array( diff --git a/tests/PhpPresentation/Tests/Shape/CommentTest.php b/tests/PhpPresentation/Tests/Shape/CommentTest.php index c545f1496d..c979f992c1 100644 --- a/tests/PhpPresentation/Tests/Shape/CommentTest.php +++ b/tests/PhpPresentation/Tests/Shape/CommentTest.php @@ -33,7 +33,7 @@ public function testConstruct() $this->assertNull($object->getAuthor()); $this->assertNull($object->getText()); - $this->assertInternalType('int', $object->getDate()); + $this->assertIsInt($object->getDate()); $this->assertNull($object->getHeight()); $this->assertNull($object->getWidth()); } @@ -54,10 +54,10 @@ public function testGetSetDate() $expectedDate = time(); $object = new Comment(); - $this->assertInternalType('int', $object->getDate()); + $this->assertIsInt($object->getDate()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Comment', $object->setDate($expectedDate)); $this->assertEquals($expectedDate, $object->getDate()); - $this->assertInternalType('int', $object->getDate()); + $this->assertIsInt($object->getDate()); } public function testGetSetText() diff --git a/tests/PhpPresentation/Tests/Shape/Drawing/Base64Test.php b/tests/PhpPresentation/Tests/Shape/Drawing/Base64Test.php index 9bb1c2f8cc..0bcae7d1ee 100644 --- a/tests/PhpPresentation/Tests/Shape/Drawing/Base64Test.php +++ b/tests/PhpPresentation/Tests/Shape/Drawing/Base64Test.php @@ -27,7 +27,7 @@ */ class Base64Test extends TestCase { - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -52,12 +52,11 @@ public function testExtension() $this->assertEquals('jpg', $oDrawing->getExtension()); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Type Mime not found : "fake/fake" - */ public function testExtensionException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Type Mime not found : "fake/fake"'); + $imgData = str_replace('image/jpeg', 'fake/fake', $this->imageData); $oDrawing = new Base64(); @@ -65,9 +64,6 @@ public function testExtensionException() $oDrawing->getExtension(); } - /** - * @requires PHP 5.4 - */ public function testMimeType() { $oDrawing = new Base64(); @@ -75,9 +71,6 @@ public function testMimeType() $this->assertEquals('image/jpeg', $oDrawing->getMimeType()); } - /** - * @requires PHP 5.4 - */ public function testMimeTypeFunctionNotExists() { DrawingTest::$getimagesizefromstringExists = false; diff --git a/tests/PhpPresentation/Tests/Shape/Drawing/FileTest.php b/tests/PhpPresentation/Tests/Shape/Drawing/FileTest.php index 2321df5c17..b8459a6d56 100644 --- a/tests/PhpPresentation/Tests/Shape/Drawing/FileTest.php +++ b/tests/PhpPresentation/Tests/Shape/Drawing/FileTest.php @@ -33,12 +33,11 @@ public function testConstruct() $this->assertEmpty($object->getPath()); } - /** - * @expectedException \Exception - * @expectedExceptionMessage File not found! - */ public function testPathBasic() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('File not found!'); + $object = new File(); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Drawing\\File', $object->setPath()); } diff --git a/tests/PhpPresentation/Tests/Shape/Drawing/ZipFileTest.php b/tests/PhpPresentation/Tests/Shape/Drawing/ZipFileTest.php index d06354ab97..7d93f0887d 100644 --- a/tests/PhpPresentation/Tests/Shape/Drawing/ZipFileTest.php +++ b/tests/PhpPresentation/Tests/Shape/Drawing/ZipFileTest.php @@ -31,7 +31,7 @@ class ZipFileTest extends TestCase protected $fileKoZip; protected $fileKoFile; - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -42,12 +42,11 @@ public function setUp() $this->fileKoFile = 'zip://'.PHPPRESENTATION_TESTS_BASE_DIR.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'files'.DIRECTORY_SEPARATOR.'Sample_01_Simple.pptx#ppt/media/filenotexists.gif'; } - /** - * @expectedException \Exception - * @expectedExceptionMessage fileNotExist.pptx does not exist - */ public function testContentsException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('fileNotExist.pptx does not exist'); + $oDrawing = new ZipFile(); $oDrawing->setPath($this->fileKoZip); $oDrawing->getContents(); @@ -60,9 +59,6 @@ public function testExtension() $this->assertEquals('gif', $oDrawing->getExtension()); } - /** - * @requires PHP 5.4 - */ public function testMimeType() { $oDrawing = new ZipFile(); @@ -70,9 +66,6 @@ public function testMimeType() $this->assertEquals('image/gif', $oDrawing->getMimeType()); } - /** - * @requires PHP 5.4 - */ public function testMimeTypeFunctionNotExists() { DrawingTest::$getimagesizefromstringExists = false; diff --git a/tests/PhpPresentation/Tests/Shape/LineTest.php b/tests/PhpPresentation/Tests/Shape/LineTest.php index 01472af5f4..030081d06e 100644 --- a/tests/PhpPresentation/Tests/Shape/LineTest.php +++ b/tests/PhpPresentation/Tests/Shape/LineTest.php @@ -41,6 +41,6 @@ public function testConstruct() $this->assertEquals($value, $object->getOffsetY()); $this->assertEquals(0, $object->getWidth()); $this->assertEquals(0, $object->getHeight()); - $this->assertInternalType('string', $object->getHashCode()); + $this->assertIsString($object->getHashCode()); } } diff --git a/tests/PhpPresentation/Tests/Shape/RichText/ParagraphTest.php b/tests/PhpPresentation/Tests/Shape/RichText/ParagraphTest.php index 11118e725b..54b7e359e8 100644 --- a/tests/PhpPresentation/Tests/Shape/RichText/ParagraphTest.php +++ b/tests/PhpPresentation/Tests/Shape/RichText/ParagraphTest.php @@ -116,7 +116,7 @@ public function testLineSpacing() public function testRichTextElements() { $object = new Paragraph(); - $this->assertInternalType('array', $object->getRichTextElements()); + $this->assertIsArray($object->getRichTextElements()); $this->assertEmpty($object->getRichTextElements()); $object->createBreak(); $this->assertCount(1, $object->getRichTextElements()); @@ -130,12 +130,11 @@ public function testRichTextElements() $this->assertCount(3, $object->getRichTextElements()); } - /** - * @expectedException \Exception - * expectedExceptionMessage Invalid \PhpOffice\PhpPresentation\Shape\RichText\TextElementInterface[] array passed. - */ public function testRichTextElementsException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid \PhpOffice\PhpPresentation\Shape\RichText\TextElementInterface[] array passed.'); + $object = new Paragraph(); $object->setRichTextElements(1); } diff --git a/tests/PhpPresentation/Tests/Shape/RichTextTest.php b/tests/PhpPresentation/Tests/Shape/RichTextTest.php index 1671e4045e..c62dea38fe 100644 --- a/tests/PhpPresentation/Tests/Shape/RichTextTest.php +++ b/tests/PhpPresentation/Tests/Shape/RichTextTest.php @@ -51,22 +51,20 @@ public function testActiveParagraph() $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\RichText\\Paragraph', $object->getParagraph($value)); } - /** - * @expectedException \Exception - * expectedExceptionMessage Invalid paragraph count. - */ public function testActiveParagraphException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid paragraph count.'); + $object = new RichText(); $object->setActiveParagraph(1000); } - /** - * @expectedException \Exception - * expectedExceptionMessage Invalid paragraph count. - */ public function testGetParagraphException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid paragraph count.'); + $object = new RichText(); $object->getParagraph(1000); } @@ -80,12 +78,11 @@ public function testColumns() $this->assertEquals($value, $object->getColumns()); } - /** - * @expectedException \Exception - * expectedExceptionMessage Number of columns should be 1-16 - */ public function testColumnsException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Number of columns should be 1-16'); + $object = new RichText(); $object->setColumns(1000); } @@ -105,12 +102,11 @@ public function testParagraphs() $this->assertEquals(2, $object->getActiveParagraphIndex()); } - /** - * @expectedException \Exception - * expectedExceptionMessage Invalid \PhpOffice\PhpPresentation\Shape\RichText\Paragraph[] array passed. - */ public function testParagraphsException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid \PhpOffice\PhpPresentation\Shape\RichText\Paragraph[] array passed.'); + $object = new RichText(); $object->setParagraphs(1000); } diff --git a/tests/PhpPresentation/Tests/Shape/Table/CellTest.php b/tests/PhpPresentation/Tests/Shape/Table/CellTest.php index b06278d703..40d1d668f1 100644 --- a/tests/PhpPresentation/Tests/Shape/Table/CellTest.php +++ b/tests/PhpPresentation/Tests/Shape/Table/CellTest.php @@ -63,22 +63,20 @@ public function testActiveParagraph() $this->assertCount(1, $object->getParagraphs()); } - /** - * @expectedException \Exception - * expectedExceptionMessage Invalid paragraph count. - */ public function testActiveParagraphException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid paragraph count.'); + $object = new Cell(); $object->setActiveParagraph(1000); } - /** - * @expectedException \Exception - * expectedExceptionMessage Invalid paragraph count. - */ public function testGetParagraphException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid paragraph count.'); + $object = new Cell(); $object->getParagraph(1000); } @@ -130,12 +128,11 @@ public function testParagraphs() $this->assertEquals(2, $object->getActiveParagraphIndex()); } - /** - * @expectedException \Exception - * expectedExceptionMessage Invalid \PhpOffice\PhpPresentation\Shape\RichText\Paragraph[] array passed. - */ public function testParagraphsException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid \PhpOffice\PhpPresentation\Shape\RichText\Paragraph[] array passed.'); + $object = new Cell(); $object->setParagraphs(1000); } diff --git a/tests/PhpPresentation/Tests/Shape/Table/RowTest.php b/tests/PhpPresentation/Tests/Shape/Table/RowTest.php index 87e2574a22..dbeaa07ca2 100644 --- a/tests/PhpPresentation/Tests/Shape/Table/RowTest.php +++ b/tests/PhpPresentation/Tests/Shape/Table/RowTest.php @@ -51,12 +51,11 @@ public function testGetCell() $this->assertNull($object->getCell(1000, true)); } - /** - * @expectedException \Exception - * expectedExceptionMessage Cell number out of bounds. - */ public function testGetCellException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Cell number out of bounds.'); + $object = new Row(); $object->getCell(1); } @@ -68,12 +67,11 @@ public function testNextCell() $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Shape\\Table\\Cell', $object->nextCell()); } - /** - * @expectedException \Exception - * expectedExceptionMessage Cell count out of bounds. - */ public function testNextCellException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Cell count out of bounds.'); + $object = new Row(); $object->nextCell(); $object->nextCell(); diff --git a/tests/PhpPresentation/Tests/Shape/TableTest.php b/tests/PhpPresentation/Tests/Shape/TableTest.php index 2df8db727b..f9d88947f1 100644 --- a/tests/PhpPresentation/Tests/Shape/TableTest.php +++ b/tests/PhpPresentation/Tests/Shape/TableTest.php @@ -55,12 +55,11 @@ public function testRows() $this->assertNull($object->getRow(1, true)); } - /** - * @expectedException \Exception - * expectedExceptionMessage Row number out of bounds. - */ public function testGetRowException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Row number out of bounds.'); + $object = new Table(); $object->getRow(); } diff --git a/tests/PhpPresentation/Tests/Slide/AbstractSlideTest.php b/tests/PhpPresentation/Tests/Slide/AbstractSlideTest.php index 534ca8419b..ceec729242 100644 --- a/tests/PhpPresentation/Tests/Slide/AbstractSlideTest.php +++ b/tests/PhpPresentation/Tests/Slide/AbstractSlideTest.php @@ -35,7 +35,7 @@ public function testCollection() $array = array(); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide\\AbstractSlide', $stub->setShapeCollection($array)); - $this->assertInternalType('array', $stub->getShapeCollection()); + $this->assertIsArray($stub->getShapeCollection()); $this->assertCount(count($array), $stub->getShapeCollection()); $array = array( @@ -44,7 +44,7 @@ public function testCollection() new RichText(), ); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide\\AbstractSlide', $stub->setShapeCollection($array)); - $this->assertInternalType('array', $stub->getShapeCollection()); + $this->assertIsArray($stub->getShapeCollection()); $this->assertCount(count($array), $stub->getShapeCollection()); } } diff --git a/tests/PhpPresentation/Tests/Slide/AnimationTest.php b/tests/PhpPresentation/Tests/Slide/AnimationTest.php index 51b4ab6d4b..1ef196fa2e 100644 --- a/tests/PhpPresentation/Tests/Slide/AnimationTest.php +++ b/tests/PhpPresentation/Tests/Slide/AnimationTest.php @@ -33,16 +33,16 @@ public function testShape() $object = new Animation(); - $this->assertInternalType('array', $object->getShapeCollection()); + $this->assertIsArray($object->getShapeCollection()); $this->assertCount(0, $object->getShapeCollection()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide\\Animation', $object->addShape($oStub)); - $this->assertInternalType('array', $object->getShapeCollection()); + $this->assertIsArray($object->getShapeCollection()); $this->assertCount(1, $object->getShapeCollection()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide\\Animation', $object->setShapeCollection()); - $this->assertInternalType('array', $object->getShapeCollection()); + $this->assertIsArray($object->getShapeCollection()); $this->assertCount(0, $object->getShapeCollection()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide\\Animation', $object->setShapeCollection(array($oStub))); - $this->assertInternalType('array', $object->getShapeCollection()); + $this->assertIsArray($object->getShapeCollection()); $this->assertCount(1, $object->getShapeCollection()); } } diff --git a/tests/PhpPresentation/Tests/Slide/Background/ImageTest.php b/tests/PhpPresentation/Tests/Slide/Background/ImageTest.php index f92b4830bf..dfef506b0c 100644 --- a/tests/PhpPresentation/Tests/Slide/Background/ImageTest.php +++ b/tests/PhpPresentation/Tests/Slide/Background/ImageTest.php @@ -32,12 +32,11 @@ public function testColor() $this->assertEquals('background_' . $numSlide . '.', $object->getIndexedFilename($numSlide)); } - /** - * @expectedException \Exception - * @expectedExceptionMessage File not found : - */ public function testPathException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('File not found :'); + $object = new Image(); $object->setPath('pathDoesntExist', true); } diff --git a/tests/PhpPresentation/Tests/Slide/NoteTest.php b/tests/PhpPresentation/Tests/Slide/NoteTest.php index 58db5abaa6..41c0553bbe 100644 --- a/tests/PhpPresentation/Tests/Slide/NoteTest.php +++ b/tests/PhpPresentation/Tests/Slide/NoteTest.php @@ -52,7 +52,7 @@ public function testExtent() public function testHashCode() { $object = new Note(); - $this->assertInternalType('string', $object->getHashCode()); + $this->assertIsString($object->getHashCode()); } public function testOffset() diff --git a/tests/PhpPresentation/Tests/Slide/SlideMasterTest.php b/tests/PhpPresentation/Tests/Slide/SlideMasterTest.php index 04633cdc0c..a5e48b0ed8 100644 --- a/tests/PhpPresentation/Tests/Slide/SlideMasterTest.php +++ b/tests/PhpPresentation/Tests/Slide/SlideMasterTest.php @@ -64,7 +64,7 @@ public function testSchemeColors() $object = new SlideMaster(); - $this->assertInternalType('array', $object->getAllSchemeColors()); + $this->assertIsArray($object->getAllSchemeColors()); $this->assertCount(12, $object->getAllSchemeColors()); // Add idem value $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide\\SlideMaster', $object->addSchemeColor($mockSchemeColorAccent1)); diff --git a/tests/PhpPresentation/Tests/SlideTest.php b/tests/PhpPresentation/Tests/SlideTest.php index bc6fddce66..3a533bd805 100644 --- a/tests/PhpPresentation/Tests/SlideTest.php +++ b/tests/PhpPresentation/Tests/SlideTest.php @@ -73,16 +73,16 @@ public function testAnimations() $oStub = $this->getMockForAbstractClass('PhpOffice\PhpPresentation\Slide\Animation'); $object = new Slide(); - $this->assertInternalType('array', $object->getAnimations()); + $this->assertIsArray($object->getAnimations()); $this->assertCount(0, $object->getAnimations()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide', $object->addAnimation($oStub)); - $this->assertInternalType('array', $object->getAnimations()); + $this->assertIsArray($object->getAnimations()); $this->assertCount(1, $object->getAnimations()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide', $object->setAnimations()); - $this->assertInternalType('array', $object->getAnimations()); + $this->assertIsArray($object->getAnimations()); $this->assertCount(0, $object->getAnimations()); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Slide', $object->setAnimations(array($oStub))); - $this->assertInternalType('array', $object->getAnimations()); + $this->assertIsArray($object->getAnimations()); $this->assertCount(1, $object->getAnimations()); } diff --git a/tests/PhpPresentation/Tests/Style/AlignmentTest.php b/tests/PhpPresentation/Tests/Style/AlignmentTest.php index 9041ba0d9d..d9b3c2d06b 100644 --- a/tests/PhpPresentation/Tests/Style/AlignmentTest.php +++ b/tests/PhpPresentation/Tests/Style/AlignmentTest.php @@ -87,13 +87,10 @@ public function testSetGetVertical() */ public function testSetGetLevelExceptionMin() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Invalid value should be more than 0.'); + $object = new Alignment(); - if (method_exists($this, 'setExpectedException')) { - $this->setExpectedException('\Exception', 'Invalid value should be more than 0.'); - } - if (method_exists($this, 'expectException')) { - $this->expectException('\Exception', 'Invalid value should be more than 0.'); - } $object->setLevel(-1); } diff --git a/tests/PhpPresentation/Tests/Style/ColorMapTest.php b/tests/PhpPresentation/Tests/Style/ColorMapTest.php index 2fdcade356..d535151d23 100644 --- a/tests/PhpPresentation/Tests/Style/ColorMapTest.php +++ b/tests/PhpPresentation/Tests/Style/ColorMapTest.php @@ -25,7 +25,7 @@ class ColorMapTest extends TestCase public function testConstruct() { $object = new ColorMap(); - $this->assertInternalType('array', $object->getMapping()); + $this->assertIsArray($object->getMapping()); $this->assertEquals(ColorMap::$mappingDefault, $object->getMapping()); } @@ -33,11 +33,11 @@ public function testMapping() { $object = new ColorMap(); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\ColorMap', $object->setMapping(array())); - $this->assertInternalType('array', $object->getMapping()); + $this->assertIsArray($object->getMapping()); $this->assertCount(0, $object->getMapping()); $array = ColorMap::$mappingDefault; $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\ColorMap', $object->setMapping($array)); - $this->assertInternalType('array', $object->getMapping()); + $this->assertIsArray($object->getMapping()); $this->assertEquals(ColorMap::$mappingDefault, $object->getMapping()); } diff --git a/tests/PhpPresentation/Tests/Style/FontTest.php b/tests/PhpPresentation/Tests/Style/FontTest.php index f6546ff384..2b268f0fac 100644 --- a/tests/PhpPresentation/Tests/Style/FontTest.php +++ b/tests/PhpPresentation/Tests/Style/FontTest.php @@ -49,11 +49,12 @@ public function testConstruct() /** * Test get/set color - * @expectedException \Exception - * @expectedExceptionMessage $pValue must be an instance of \PhpOffice\PhpPresentation\Style\Color */ public function testSetGetColorException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('$pValue must be an instance of \PhpOffice\PhpPresentation\Style\Color'); + $object = new Font(); $this->assertInstanceOf('PhpOffice\\PhpPresentation\\Style\\Font', $object->setColor()); } diff --git a/tests/PhpPresentation/Tests/Style/TextStyleTest.php b/tests/PhpPresentation/Tests/Style/TextStyleTest.php index 55e98a6b72..51bfbe889d 100644 --- a/tests/PhpPresentation/Tests/Style/TextStyleTest.php +++ b/tests/PhpPresentation/Tests/Style/TextStyleTest.php @@ -32,7 +32,7 @@ public function testConstructDefaultTrue() $object = new TextStyle(); $arrayBodyStyle = $object->getBodyStyle(); - $this->assertInternalType('array', $arrayBodyStyle); + $this->assertIsArray($arrayBodyStyle); $this->assertCount(1, $arrayBodyStyle); $this->assertArrayHasKey(1, $arrayBodyStyle); $this->assertNull($object->getBodyStyleAtLvl(0)); @@ -47,7 +47,7 @@ public function testConstructDefaultTrue() $this->assertEquals('tx1', $oParagraph->getFont()->getColor()->getValue()); $arrayOtherStyle = $object->getOtherStyle(); - $this->assertInternalType('array', $arrayOtherStyle); + $this->assertIsArray($arrayOtherStyle); $this->assertCount(1, $arrayOtherStyle); $this->assertArrayHasKey(0, $arrayOtherStyle); $this->assertInstanceOf('PhpOffice\PhpPresentation\Shape\RichText\Paragraph', $object->getOtherStyleAtLvl(0)); @@ -60,7 +60,7 @@ public function testConstructDefaultTrue() $this->assertEquals('tx1', $oParagraph->getFont()->getColor()->getValue()); $arrayTitleStyle = $object->getTitleStyle(); - $this->assertInternalType('array', $arrayTitleStyle); + $this->assertIsArray($arrayTitleStyle); $this->assertCount(1, $arrayTitleStyle); $this->assertArrayHasKey(1, $arrayTitleStyle); $this->assertNull($object->getTitleStyleAtLvl(0)); @@ -77,11 +77,11 @@ public function testConstructDefaultFalse() { $object = new TextStyle(false); - $this->assertInternalType('array', $object->getBodyStyle()); + $this->assertIsArray($object->getBodyStyle()); $this->assertCount(0, $object->getBodyStyle()); - $this->assertInternalType('array', $object->getOtherStyle()); + $this->assertIsArray($object->getOtherStyle()); $this->assertCount(0, $object->getOtherStyle()); - $this->assertInternalType('array', $object->getTitleStyle()); + $this->assertIsArray($object->getTitleStyle()); $this->assertCount(0, $object->getTitleStyle()); } diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentation/MetaInfManifestTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentation/MetaInfManifestTest.php index 671d8027b3..198f0e411f 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentation/MetaInfManifestTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentation/MetaInfManifestTest.php @@ -29,12 +29,11 @@ public function testDrawing() $this->assertIsSchemaOpenDocumentValid('1.2'); } - /** - * @expectedException \Exception - * @expectedExceptionMessage does not exist - */ public function testDrawingException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('does not exist'); + $oSlide = $this->oPresentation->getActiveSlide(); $oShape = $oSlide->createDrawingShape(); $oShape->setPath(PHPPRESENTATION_TESTS_BASE_DIR.'/resources/images/filedoesntexist.png', false); @@ -59,9 +58,6 @@ public function testMemoryDrawing() $this->assertIsSchemaOpenDocumentValid('1.2'); } - /** - * @requires PHP 5.4 - */ public function testDrawingZip() { $oSlide = $this->oPresentation->getActiveSlide(); @@ -76,13 +72,11 @@ public function testDrawingZip() $this->assertIsSchemaOpenDocumentValid('1.2'); } - /** - * @expectedException \Exception - * @expectedExceptionMessage does not exist - * @requires PHP 5.4 - */ public function testDrawingZipException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('does not exist'); + $oShape = new Drawing\ZipFile(); $oShape->setPath('zip://'.PHPPRESENTATION_TESTS_BASE_DIR.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'files'.DIRECTORY_SEPARATOR.'filedoesntexist.zip', false); $this->oPresentation->getActiveSlide()->addShape($oShape); @@ -90,9 +84,6 @@ public function testDrawingZipException() $this->writePresentationFile($this->oPresentation, 'ODPresentation'); } - /** - * @requires PHP 5.4 - */ public function testDrawingBase64() { $oShape = new Drawing\Base64(); diff --git a/tests/PhpPresentation/Tests/Writer/ODPresentationTest.php b/tests/PhpPresentation/Tests/Writer/ODPresentationTest.php index 3cbcade42f..68c3af7f22 100644 --- a/tests/PhpPresentation/Tests/Writer/ODPresentationTest.php +++ b/tests/PhpPresentation/Tests/Writer/ODPresentationTest.php @@ -54,24 +54,24 @@ public function testSave() /** * Test get PhpPresentation exception - * - * @expectedException \Exception - * @expectedExceptionMessage Filename is empty */ public function testSaveEmpty() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Filename is empty'); + $object = new ODPresentation(); $object->save(''); } /** * Test get PhpPresentation exception - * - * @expectedException \Exception - * @expectedExceptionMessage No PhpPresentation assigned. */ public function testGetPhpPresentationException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('No PhpPresentation assigned.'); + $object = new ODPresentation(); $object->getPhpPresentation(); } @@ -91,11 +91,11 @@ public function testSetGetUseDiskCaching() /** * Test set/get disk caching exception - * - * @expectedException \Exception */ public function testSetUseDiskCachingException() { + $this->expectException(\Exception::class); + $object = new ODPresentation($this->oPresentation); $object->setUseDiskCaching(true, 'foo'); } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/LayoutPack/TemplateBasedTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/LayoutPack/TemplateBasedTest.php index 0c4baeac63..0ffa92ee47 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/LayoutPack/TemplateBasedTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/LayoutPack/TemplateBasedTest.php @@ -41,11 +41,10 @@ public function testFindLayout() } } - /** - * @expectedException \Exception - */ public function testFindLayoutException() { + $this->expectException(\Exception::class); + $file = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/files/Sample_00_01.pptx'; $templateBased = new TemplateBased($file); $name = 'Invalid'; @@ -64,11 +63,10 @@ public function testFindLayoutId() } } - /** - * @expectedException \Exception - */ public function testFindLayoutIdException() { + $this->expectException(\Exception::class); + $file = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/files/Sample_00_01.pptx'; $templateBased = new TemplateBased($file); $name = 'Invalid'; @@ -84,11 +82,10 @@ public function testFindLayoutName() } } - /** - * @expectedException \Exception - */ public function testFindLayoutNameException() { + $this->expectException(\Exception::class); + $oLayout = new PackDefault(); $oLayout->findLayoutName(1000); } diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php index 2ee2aaf68b..ccfefe0e86 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php @@ -38,12 +38,11 @@ class PptChartsTest extends PhpPresentationTestCase 'E' => 2, ); - /** - * @expectedException Exception - * @expectedExceptionMessage The chart type provided could not be rendered - */ public function testPlotAreaBadType() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('The chart type provided could not be rendered'); + $oSlide = $this->oPresentation->getActiveSlide(); $oShape = $oSlide->createChartShape(); $oShape->setResizeProportional(false)->setHeight(550)->setWidth(700)->setOffsetX(120)->setOffsetY(80); diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php index de0e11e6e0..83135e5c5e 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptMediaTest.php @@ -24,12 +24,11 @@ public function testDrawing() $this->assertIsSchemaECMA376Valid(); } - /** - * @expectedException \Exception - * @expectedExceptionMessage does not exist - */ public function testDrawingException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('does not exist'); + $oSlide = $this->oPresentation->getActiveSlide(); $oShape = $oSlide->createDrawingShape(); $oShape->setPath(PHPPRESENTATION_TESTS_BASE_DIR.'/resources/images/filedoesntexist.png', false); @@ -37,9 +36,6 @@ public function testDrawingException() $this->writePresentationFile($this->oPresentation, 'PowerPoint2007'); } - /** - * @requires PHP 5.4 - */ public function testDrawingZip() { $oSlide = $this->oPresentation->getActiveSlide(); @@ -51,13 +47,11 @@ public function testDrawingZip() $this->assertIsSchemaECMA376Valid(); } - /** - * @expectedException \Exception - * @expectedExceptionMessage does not exist - * @requires PHP 5.4 - */ public function testDrawingZipException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('does not exist'); + $oDrawing = new Drawing\ZipFile(); $oDrawing->setPath('zip://'.PHPPRESENTATION_TESTS_BASE_DIR.DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'files'.DIRECTORY_SEPARATOR.'filedoesntexist.zip#secondpath', false); @@ -67,9 +61,6 @@ public function testDrawingZipException() $this->writePresentationFile($this->oPresentation, 'PowerPoint2007'); } - /** - * @requires PHP 5.4 - */ public function testDrawingBase64() { $oSlide = $this->oPresentation->getActiveSlide(); diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php index 4b55103f4c..bd7c0f2ae7 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007Test.php @@ -45,36 +45,36 @@ public function testSave() /** * Test save with empty filename - * - * @expectedException \Exception - * @expectedExceptionMessage Filename is empty */ public function testSaveEmptyException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Filename is empty'); + $object = new PowerPoint2007($this->oPresentation); $object->save(''); } /** * Test save with empty assignation - * - * @expectedException \Exception - * @expectedExceptionMessage No PhpPresentation assigned. */ public function testSaveUnassignedException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('No PhpPresentation assigned.'); + $object = new PowerPoint2007(); $object->save('filename.pptx'); } /** * Test get PhpPresentation exception - * - * @expectedException \Exception - * @expectedExceptionMessage No PhpPresentation assigned. */ public function testGetPhpPresentationException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('No PhpPresentation assigned.'); + $object = new PowerPoint2007(); $object->getPhpPresentation(); } @@ -98,12 +98,12 @@ public function testDiskCaching() /** * Test set/get disk caching exception - * - * @expectedException \Exception - * @expectedExceptionMessage Directory does not exist: foo */ public function testCachingException() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Directory does not exist: foo'); + $object = new PowerPoint2007($this->oPresentation); $object->setUseDiskCaching(true, 'foo'); } diff --git a/tests/PhpPresentation/Tests/Writer/SerializedTest.php b/tests/PhpPresentation/Tests/Writer/SerializedTest.php index c81638e597..63c6980bd4 100644 --- a/tests/PhpPresentation/Tests/Writer/SerializedTest.php +++ b/tests/PhpPresentation/Tests/Writer/SerializedTest.php @@ -34,32 +34,29 @@ public function testConstruct() $this->assertInstanceOf('PhpOffice\\PhpPresentation\\PhpPresentation', $object->getPhpPresentation()); } - /** - * @expectedException \Exception - * @expectedExceptionMessage No PhpPresentation assigned. - */ public function testEmptyConstruct() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('No PhpPresentation assigned.'); + $object = new Serialized(); $object->getPhpPresentation(); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Filename is empty. - */ public function testSaveEmpty() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Filename is empty.'); + $object = new Serialized(new PhpPresentation()); $object->save(''); } - /** - * @expectedException \Exception - * @expectedExceptionMessage No PhpPresentation assigned. - */ public function testSaveNoObject() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('No PhpPresentation assigned.'); + $object = new Serialized(); $object->save('file.phpppt'); } @@ -77,12 +74,11 @@ public function testSave() $this->assertFileExists($file); } - /** - * @expectedException \Exception - * @expectedExceptionMessage Could not open - */ public function testSaveNotExistingDir() { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Could not open'); + $oPhpPresentation = new PhpPresentation(); $oSlide = $oPhpPresentation->getActiveSlide(); $oImage = $oSlide->createDrawingShape(); @@ -91,7 +87,7 @@ public function testSaveNotExistingDir() $file = tempnam(sys_get_temp_dir(), 'PhpPresentation_Serialized'); - $this->assertFileExists($file, $object->save($file.DIRECTORY_SEPARATOR.'test'.DIRECTORY_SEPARATOR.'test')); + $object->save($file.DIRECTORY_SEPARATOR.'test'.DIRECTORY_SEPARATOR.'test'); } public function testSaveOverwriting() diff --git a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php index 913677259c..e387ab110d 100644 --- a/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php +++ b/tests/PhpPresentation/Tests/_includes/PhpPresentationTestCase.php @@ -80,7 +80,7 @@ class PhpPresentationTestCase extends TestCase /** * Executed before each method of the class */ - protected function setUp() + protected function setUp(): void { $this->xmlDisableEntityLoader = libxml_disable_entity_loader(false); $this->workDirectory = sys_get_temp_dir() . '/PhpPresentation_Unit_Test/'; @@ -98,7 +98,7 @@ protected function setUp() /** * Executed after each method of the class */ - protected function tearDown() + protected function tearDown(): void { libxml_disable_entity_loader($this->xmlDisableEntityLoader); libxml_use_internal_errors($this->xmlInternalErrors); @@ -111,7 +111,7 @@ protected function tearDown() * * @param string $dir */ - private function deleteDir($dir) + private function deleteDir(string $dir): void { foreach (scandir($dir) as $file) { if ($file === '.' || $file === '..') { @@ -126,7 +126,7 @@ private function deleteDir($dir) rmdir($dir); } - protected function getXmlDom($file) + protected function getXmlDom(string $file): \DOMDocument { $baseFile = $file; if (null !== $this->xmlDom && $file === $this->xmlFile) { @@ -172,7 +172,7 @@ private function getXmlNodeList($file, $xpath) * @param PhpPresentation $oPhpPresentation * @param string $writerName */ - protected function writePresentationFile(PhpPresentation $oPhpPresentation, $writerName) + protected function writePresentationFile(PhpPresentation $oPhpPresentation, $writerName): void { if (is_file($this->filePath)) { return; @@ -189,7 +189,7 @@ protected function writePresentationFile(PhpPresentation $oPhpPresentation, $wri } } - protected function resetPresentationFile() + protected function resetPresentationFile(): void { $this->xmlFile = null; $this->xmlDom = null; @@ -208,7 +208,7 @@ protected function resetPresentationFile() /** * @param string $filePath */ - public function assertZipFileExists($filePath) + public function assertZipFileExists($filePath): void { $this->writePresentationFile($this->oPresentation, $this->writerName); self::assertTrue(is_file($this->workDirectory . $filePath)); @@ -217,7 +217,7 @@ public function assertZipFileExists($filePath) /** * @param string $filePath */ - public function assertZipFileNotExists($filePath) + public function assertZipFileNotExists($filePath): void { $this->writePresentationFile($this->oPresentation, $this->writerName); self::assertFalse(is_file($this->workDirectory . $filePath)); @@ -227,7 +227,7 @@ public function assertZipFileNotExists($filePath) * @param string $filePath * @param string $xPath */ - public function assertZipXmlElementExists($filePath, $xPath) + public function assertZipXmlElementExists($filePath, $xPath): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); @@ -238,7 +238,7 @@ public function assertZipXmlElementExists($filePath, $xPath) * @param string $filePath * @param string $xPath */ - public function assertZipXmlElementNotExists($filePath, $xPath) + public function assertZipXmlElementNotExists($filePath, $xPath): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); @@ -250,7 +250,7 @@ public function assertZipXmlElementNotExists($filePath, $xPath) * @param string $xPath * @param mixed $value */ - public function assertZipXmlElementEquals($filePath, $xPath, $value) + public function assertZipXmlElementEquals($filePath, $xPath, $value): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); @@ -262,7 +262,7 @@ public function assertZipXmlElementEquals($filePath, $xPath, $value) * @param string $xPath * @param int $num */ - public function assertZipXmlElementCount($filePath, $xPath, $num) + public function assertZipXmlElementCount($filePath, $xPath, $num): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); @@ -275,7 +275,7 @@ public function assertZipXmlElementCount($filePath, $xPath, $num) * @param string $attribute * @param mixed $value */ - public function assertZipXmlAttributeEquals($filePath, $xPath, $attribute, $value) + public function assertZipXmlAttributeEquals($filePath, $xPath, $attribute, $value): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); @@ -288,7 +288,7 @@ public function assertZipXmlAttributeEquals($filePath, $xPath, $attribute, $valu * @param string $attribute * @param mixed $value */ - public function assertZipXmlAttributeStartsWith($filePath, $xPath, $attribute, $value) + public function assertZipXmlAttributeStartsWith($filePath, $xPath, $attribute, $value): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); @@ -301,7 +301,7 @@ public function assertZipXmlAttributeStartsWith($filePath, $xPath, $attribute, $ * @param string $attribute * @param mixed $value */ - public function assertZipXmlAttributeEndsWith($filePath, $xPath, $attribute, $value) + public function assertZipXmlAttributeEndsWith($filePath, $xPath, $attribute, $value): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); @@ -314,11 +314,11 @@ public function assertZipXmlAttributeEndsWith($filePath, $xPath, $attribute, $va * @param string $attribute * @param mixed $value */ - public function assertZipXmlAttributeContains($filePath, $xPath, $attribute, $value) + public function assertZipXmlAttributeContains($filePath, $xPath, $attribute, $value): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); - self::assertContains($value, $nodeList->item(0)->getAttribute($attribute)); + self::assertStringContainsString($value, $nodeList->item(0)->getAttribute($attribute)); } /** @@ -326,7 +326,7 @@ public function assertZipXmlAttributeContains($filePath, $xPath, $attribute, $va * @param string $xPath * @param string $attribute */ - public function assertZipXmlAttributeExists($filePath, $xPath, $attribute) + public function assertZipXmlAttributeExists($filePath, $xPath, $attribute): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); @@ -338,14 +338,14 @@ public function assertZipXmlAttributeExists($filePath, $xPath, $attribute) * @param string $xPath * @param string $attribute */ - public function assertZipXmlAttributeNotExists($filePath, $xPath, $attribute) + public function assertZipXmlAttributeNotExists($filePath, $xPath, $attribute): void { $this->writePresentationFile($this->oPresentation, $this->writerName); $nodeList = $this->getXmlNodeList($filePath, $xPath); self::assertFalse($nodeList->item(0)->hasAttribute($attribute)); } - public function assertIsSchemaECMA376Valid() + public function assertIsSchemaECMA376Valid(): void { // validate all XML files $path = realpath($this->workDirectory . '/ppt'); @@ -372,7 +372,7 @@ public function assertIsSchemaECMA376Valid() unset($iterator); } - public function assertIsSchemaOOXMLValid() + public function assertIsSchemaOOXMLValid(): void { // validate all XML files $path = realpath($this->workDirectory . '/ppt'); @@ -419,11 +419,11 @@ public function assertIsSchemaOOXMLValid() * @param boolean $triggerError * @return boolean */ - public function assertIsSchemaOpenDocumentValid($version = '1.0', $triggerError = true) + public function assertIsSchemaOpenDocumentValid($version = '1.0', $triggerError = true): bool { if (!array_key_exists($version, $this->arrayOpenDocumentRNG)) { self::fail('assertIsSchemaOpenDocumentValid > Use a valid version'); - return; + return false; } // validate all XML files @@ -462,7 +462,7 @@ public function assertIsSchemaOpenDocumentValid($version = '1.0', $triggerError return $isValid; } - public function assertIsSchemaOpenDocumentNotValid($version = '1.0') + public function assertIsSchemaOpenDocumentNotValid($version = '1.0'): void { $isValid = $this->assertIsSchemaOpenDocumentValid($version, false); if ($isValid) { @@ -476,7 +476,7 @@ public function assertIsSchemaOpenDocumentNotValid($version = '1.0') * @param string $source * @param array $params */ - protected function failXmlError(\LibXMLError $error, $fileName, $source, array $params = array()) + protected function failXmlError(\LibXMLError $error, $fileName, $source, array $params = array()): void { switch ($error->level) { case LIBXML_ERR_WARNING: From 524fd59b39bd0efcfdfdace7624eac9cb502c5ad Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Sun, 6 Jun 2021 12:47:08 -0700 Subject: [PATCH 097/139] #634 : Fixed links --- README.md | 20 ++++++++++---------- docs/intro.rst | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index b4aecf0475..adcde37635 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,19 @@ # ![PHPPresentation](https://raw.githubusercontent.com/mvargasmoran/PHPPresentation/develop/docs/images/PHPPresentationLogo.png "PHPPresentation") [![Latest Stable Version](https://poser.pugx.org/phpoffice/phppresentation/v/stable.png)](https://packagist.org/packages/phpoffice/phppresentation) -[![Code Climate](https://codeclimate.com/github/PHPOffice/PHPPresentation/badges/gpa.svg)](https://codeclimate.com/github/PHPOffice/PHPPresentation) -[![Test Coverage](https://codeclimate.com/github/PHPOffice/PHPPresentation/badges/coverage.svg)](https://codeclimate.com/github/PHPOffice/PHPPresentation/coverage) +[![Coverage Status](https://coveralls.io/repos/github/PHPOffice/PHPPresentation/badge.svg?branch=develop)](https://coveralls.io/github/PHPOffice/PHPPresentation?branch=develop) [![Total Downloads](https://poser.pugx.org/phpoffice/phppresentation/downloads.png)](https://packagist.org/packages/phpoffice/phppresentation) [![License](https://poser.pugx.org/phpoffice/phppresentation/license.png)](https://packagist.org/packages/phpoffice/phppresentation) [![BountySource](https://img.shields.io/bountysource/team/phpoffice/activity.svg)](https://www.bountysource.com/teams/phpoffice) -[![Join the chat at https://gitter.im/PHPOffice/PHPPresentation](https://img.shields.io/badge/GITTER-join%20chat-green.svg)](https://gitter.im/PHPOffice/PHPPresentation) +[![Join the chat at https://gitter.im/PHPOffice/PHPPresentation](https://img.shields.io/badge/Gitter-join%20chat-green.svg)](https://gitter.im/PHPOffice/PHPPresentation) -Branch Master : [![Build Status](https://travis-ci.org/PHPOffice/PHPPresentation.svg?branch=master)](https://travis-ci.org/PHPOffice/PHPPresentation) [![Documentation Status](https://readthedocs.org/projects/phppresentation/badge/?version=master)](http://phppresentation.readthedocs.io/en/latest/?badge=master) -Branch Develop : [![Build Status](https://travis-ci.org/PHPOffice/PHPPresentation.svg?branch=develop)](https://travis-ci.org/PHPOffice/PHPPresentation) [![Documentation Status](https://readthedocs.org/projects/phppresentation/badge/?version=develop)](http://phppresentation.readthedocs.io/en/latest/?badge=develop) +Branch Master : [![PHPPresentation](https://github.com/PHPOffice/PHPPresentation/actions/workflows/php.yml/badge.svg?branch=master)](https://github.com/PHPOffice/PHPPresentation/actions/workflows/php.yml) [![Documentation Status](https://readthedocs.org/projects/phppresentation/badge/?version=master)](http://phppresentation.readthedocs.io/en/latest/?badge=master) + +Branch Develop : [![PHPPresentation](https://github.com/PHPOffice/PHPPresentation/actions/workflows/php.yml/badge.svg?branch=develop)](https://github.com/PHPOffice/PHPPresentation/actions/workflows/php.yml) [![Documentation Status](https://readthedocs.org/projects/phppresentation/badge/?version=develop)](http://phppresentation.readthedocs.io/en/latest/?badge=develop) PHPPresentation is a library written in pure PHP that provides a set of classes to write to different presentation file formats, i.e. Microsoft [Office Open XML](http://en.wikipedia.org/wiki/Office_Open_XML) (OOXML or OpenXML) or OASIS [Open Document Format for Office Applications](http://en.wikipedia.org/wiki/OpenDocument) (OpenDocument or ODF). -PHPPresentation is an open source project licensed under the terms of [LGPL version 3](https://github.com/PHPOffice/PHPPresentation/blob/develop/COPYING.LESSER). PHPPresentation is aimed to be a high quality software product by incorporating [continuous integration](https://travis-ci.org/PHPOffice/PHPPresentation) and [unit testing](http://phpoffice.github.io/PHPPresentation/coverage/develop/). You can learn more about PHPPresentation by reading the [Developers' Documentation](http://phppresentation.readthedocs.org/) and the [API Documentation](http://phpoffice.github.io/PHPPresentation/docs/develop/). +PHPPresentation is an open source project licensed under the terms of [LGPL version 3](https://github.com/PHPOffice/PHPPresentation/blob/develop/COPYING.LESSER). PHPPresentation is aimed to be a high quality software product by incorporating [continuous integration](https://github.com/PHPOffice/PHPPresentation/actions/workflows/php.yml) and [unit testing](https://coveralls.io/github/PHPOffice/PHPPresentation). You can learn more about PHPPresentation by reading the [Developers' Documentation](http://phppresentation.readthedocs.org/) and the [API Documentation](http://phpoffice.github.io/PHPPresentation/docs/develop/). Read more about PHPPresentation: @@ -44,10 +44,10 @@ Read more about PHPPresentation: PHPPresentation requires the following: - PHP 7.1+ -- [Zip extension](http://php.net/manual/en/book.zip.php) -- [XML Parser extension](http://www.php.net/manual/en/xml.installation.php) -- [XMLWriter extension](http://php.net/manual/en/book.xmlwriter.php) (optional, used to write DOCX and ODT) -- [GD](http://php.net/manual/en/book.image.php) +- [ZIP Extension](http://php.net/manual/en/book.zip.php) +- [XML Parser Extension](http://www.php.net/manual/en/xml.installation.php) +- [XMLWriter Extension](http://php.net/manual/en/book.xmlwriter.php) (optional, used to write DOCX and ODT) +- [GD Extension](http://php.net/manual/en/book.image.php) ### Installation diff --git a/docs/intro.rst b/docs/intro.rst index cd386f0678..3a0a69c75b 100644 --- a/docs/intro.rst +++ b/docs/intro.rst @@ -12,7 +12,7 @@ classes to write to different presentation file formats, i.e. Microsoft PHPPresentation is an open source project licensed under the terms of `LGPL version 3 `__. PHPPresentation is aimed to be a high quality software product by incorporating -`continuous integration `__ and +`continuous integration `__ and `unit testing `__. You can learn more about PHPPresentation by reading this Developers' Documentation and the `API Documentation `__. From 076780289f650de8519eeb1d40a77c37993fca36 Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Sun, 6 Jun 2021 12:49:36 -0700 Subject: [PATCH 098/139] #634 : Enable PHPCSFixer --- .github/workflows/php.yml | 10 +- .gitignore | 1 + .php-cs-fixer.dist.php | 11 + samples/Sample_01_Complex.php | 12 +- samples/Sample_02_Serialized.php | 12 +- samples/Sample_03_Image.php | 20 +- samples/Sample_04_Table.php | 24 +- samples/Sample_05_Chart.php | 190 +++---- samples/Sample_05_Chart_with_PHPExcel.php | 210 ++++---- samples/Sample_06_Fill.php | 28 +- samples/Sample_07_Border.php | 66 +-- samples/Sample_08_Group.php | 6 +- samples/Sample_10_Transition.php | 6 +- samples/Sample_12_Reader_ODPresentation.php | 2 +- samples/Sample_12_Reader_PowerPoint2007.php | 2 +- samples/Sample_12_Reader_PowerPoint97.php | 2 +- samples/Sample_13_MarkAsFinal.php | 2 +- samples/Sample_14_Zoom.php | 2 +- samples/Sample_15_Background.php | 4 +- samples/Sample_16_Thumbnail.php | 4 +- samples/Sample_17_Comment.php | 2 +- samples/Sample_19_SlideMaster.php | 3 +- samples/Sample_20_ExternalSlide.php | 3 +- samples/Sample_Header.php | 66 +-- samples/index.php | 4 +- src/PhpPresentation/Autoloader.php | 4 +- src/PhpPresentation/DocumentLayout.php | 38 +- src/PhpPresentation/GeometryCalculator.php | 4 +- src/PhpPresentation/HashTable.php | 2 +- .../PresentationProperties.php | 25 +- src/PhpPresentation/Reader/ODPresentation.php | 36 +- src/PhpPresentation/Reader/PowerPoint97.php | 481 +++++++++--------- src/PhpPresentation/Shape/AbstractGraphic.php | 4 +- src/PhpPresentation/Shape/Chart.php | 4 +- src/PhpPresentation/Shape/Chart/Axis.php | 12 +- src/PhpPresentation/Shape/Chart/Legend.php | 18 +- src/PhpPresentation/Shape/Chart/Marker.php | 20 +- src/PhpPresentation/Shape/Chart/PlotArea.php | 10 +- src/PhpPresentation/Shape/Chart/Series.php | 18 +- src/PhpPresentation/Shape/Chart/Title.php | 4 +- .../Shape/Chart/Type/AbstractType.php | 2 +- .../Shape/Chart/Type/AbstractTypeBar.php | 12 +- .../Shape/Chart/Type/AbstractTypePie.php | 8 +- src/PhpPresentation/Shape/Drawing/Gd.php | 16 +- src/PhpPresentation/Shape/Media.php | 1 - src/PhpPresentation/Shape/Placeholder.php | 14 +- src/PhpPresentation/Shape/RichText.php | 30 +- .../Slide/AbstractBackground.php | 1 - src/PhpPresentation/Slide/AbstractSlide.php | 1 + src/PhpPresentation/Slide/Animation.php | 1 + src/PhpPresentation/Slide/Layout.php | 22 +- src/PhpPresentation/Slide/Note.php | 8 +- src/PhpPresentation/Slide/SlideLayout.php | 1 + src/PhpPresentation/Slide/SlideMaster.php | 1 + src/PhpPresentation/Slide/Transition.php | 100 ++-- src/PhpPresentation/Style/Alignment.php | 30 +- src/PhpPresentation/Style/Border.php | 34 +- src/PhpPresentation/Style/Bullet.php | 90 ++-- src/PhpPresentation/Style/Color.php | 20 +- src/PhpPresentation/Style/ColorMap.php | 24 +- src/PhpPresentation/Style/Fill.php | 46 +- src/PhpPresentation/Style/Font.php | 46 +- src/PhpPresentation/Style/Shadow.php | 16 +- .../Writer/ODPresentation/Content.php | 2 +- .../Writer/ODPresentation/Meta.php | 2 +- .../Writer/ODPresentation/Pictures.php | 2 +- .../Writer/PowerPoint2007/AbstractSlide.php | 9 +- .../LayoutPack/TemplateBased.php | 2 +- .../Writer/PowerPoint2007/PptPresProps.php | 1 + .../Writer/PowerPoint2007/PptSlideMasters.php | 1 + .../Writer/PowerPoint2007/PptTableProps.php | 1 + .../Writer/PowerPoint2007/PptViewProps.php | 1 + .../Tests/PhpPresentationTest.php | 2 +- .../Tests/Shape/Chart/PlotAreaTest.php | 2 +- .../Tests/Shape/Drawing/Base64Test.php | 2 +- .../Tests/Shape/Drawing/FileTest.php | 2 +- .../Tests/Shape/Drawing/ZipFileTest.php | 2 +- .../Tests/Shape/RichText/ParagraphTest.php | 2 +- .../Tests/Shape/RichTextTest.php | 4 +- .../Tests/Shape/Table/CellTest.php | 6 +- .../Tests/Shape/Table/RowTest.php | 4 +- .../PhpPresentation/Tests/Shape/TableTest.php | 2 +- .../Tests/Slide/Background/ImageTest.php | 2 +- .../Tests/Style/AlignmentTest.php | 2 +- .../PhpPresentation/Tests/Style/FontTest.php | 2 +- .../Writer/ODPresentation/ContentTest.php | 60 +-- .../ODPresentation/MetaInfManifestTest.php | 8 +- .../ODPresentation/ObjectsChartTest.php | 36 +- .../Writer/ODPresentation/StylesTest.php | 16 +- .../Tests/Writer/ODPresentationTest.php | 6 +- .../LayoutPack/TemplateBasedTest.php | 6 +- .../Writer/PowerPoint2007/PptChartsTest.php | 6 +- .../Writer/PowerPoint2007/PptMediaTest.php | 4 +- .../Writer/PowerPoint2007/PptSlidesTest.php | 2 +- .../Tests/Writer/PowerPoint2007Test.php | 8 +- .../Tests/Writer/SerializedTest.php | 14 +- .../_includes/PhpPresentationTestCase.php | 4 +- 97 files changed, 1079 insertions(+), 1042 deletions(-) create mode 100644 .php-cs-fixer.dist.php diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 15efd109ae..961f014978 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -4,7 +4,6 @@ jobs: php-cs-fixer: name: PHP CS Fixer runs-on: ubuntu-latest - continue-on-error: true steps: - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -17,10 +16,13 @@ jobs: run: composer validate --strict - name: Composer Install - run: composer install --ansi --prefer-dist --no-interaction --no-progress + run: composer global require friendsofphp/php-cs-fixer + + - name: Add environment path + run: export PATH="$PATH:$HOME/.composer/vendor/bin" - #- name: Run PHPCSFixer - # run: ./vendor/bin/php-cs-fixer fix --dry-run --diff + - name: Run PHPCSFixer + run: php-cs-fixer fix --dry-run --diff phpmd: name: PHP Mess Detector diff --git a/.gitignore b/.gitignore index f83c7b3786..afe22ddd18 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ Desktop.ini ### Continuous Integration build/ phpunit.xml +.php-cs-fixer.cache .phpunit.result.cache composer.phar vendor diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 0000000000..0b7c5b3107 --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,11 @@ +setUsingCache(true) + ->getFinder() + ->in(__DIR__) + ->exclude('vendor'); + +return $config; \ No newline at end of file diff --git a/samples/Sample_01_Complex.php b/samples/Sample_01_Complex.php index ec492a85c8..72e6aaeba1 100644 --- a/samples/Sample_01_Complex.php +++ b/samples/Sample_01_Complex.php @@ -7,7 +7,7 @@ include_once 'Sample_Header.php'; -$colorBlack = new Color( 'FF000000' ); +$colorBlack = new Color('FF000000'); // Create new PHPPresentation object echo date('H:i:s') . ' Create new PHPPresentation object'.EOL; @@ -38,7 +38,7 @@ $shape->setWidth(600); $shape->setOffsetX(10); $shape->setOffsetY(400); -$shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_LEFT ); +$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); $textRun = $shape->createTextRun('Introduction to'); $textRun->getFont()->setBold(true); @@ -102,7 +102,7 @@ ->setWidth(930) ->setOffsetX(10) ->setOffsetY(50); -$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT ); +$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); $textRun = $shape->createTextRun('What\'s the point?'); $textRun->getFont()->setBold(true) @@ -154,7 +154,7 @@ ->setWidth(930) ->setOffsetX(10) ->setOffsetY(50); -$shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_LEFT ); +$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); $textRun = $shape->createTextRun('Need more info?'); $textRun->getFont()->setBold(true) @@ -168,7 +168,7 @@ ->setWidth(930) ->setOffsetX(10) ->setOffsetY(130); -$shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_LEFT ); +$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT); $textRun = $shape->createTextRun('Check the project site on GitHub:'); $textRun->getFont()->setSize(36) @@ -185,5 +185,5 @@ // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_02_Serialized.php b/samples/Sample_02_Serialized.php index 42cbc2d065..495b988b83 100644 --- a/samples/Sample_02_Serialized.php +++ b/samples/Sample_02_Serialized.php @@ -15,9 +15,9 @@ echo date('H:i:s') . ' Set properties'.EOL; $objPHPPresentation->getDocumentProperties()->setCreator('PHPOffice') ->setLastModifiedBy('PHPPresentation Team') - ->setTitle('Sample 02 Title') - ->setSubject('Sample 02 Subject') - ->setDescription('Sample 02 Description') + ->setTitle('Sample 02 Title') + ->setSubject('Sample 02 Subject') + ->setDescription('Sample 02 Description') ->setKeywords('office 2007 openxml libreoffice odt php') ->setCategory('Sample Category'); @@ -45,11 +45,11 @@ ->setWidth(600) ->setOffsetX(170) ->setOffsetY(180); -$shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_CENTER ); +$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); $textRun = $shape->createTextRun('Thank you for using PHPPresentation!'); $textRun->getFont()->setBold(true) ->setSize(60) - ->setColor( new Color( 'FFE06B20' ) ); + ->setColor(new Color('FFE06B20')); // Save serialized file $basename = basename(__FILE__, '.php'); @@ -64,5 +64,5 @@ // Save file echo write($objPHPPresentationLoaded, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_03_Image.php b/samples/Sample_03_Image.php index 2f97888641..a26f69f6ad 100644 --- a/samples/Sample_03_Image.php +++ b/samples/Sample_03_Image.php @@ -19,7 +19,7 @@ echo date('H:i:s') . ' Generate an image'.EOL; $gdImage = @imagecreatetruecolor(140, 20) or die('Cannot Initialize new GD image stream'); $textColor = imagecolorallocate($gdImage, 255, 255, 255); -imagestring($gdImage, 1, 5, 5, 'Created with PHPPresentation', $textColor); +imagestring($gdImage, 1, 5, 5, 'Created with PHPPresentation', $textColor); // Add a generated drawing to the slide echo date('H:i:s') . ' Add a drawing to the slide'.EOL; @@ -59,7 +59,7 @@ $shape = new Drawing\Base64(); $shape->setName('PHPPresentation logo') ->setDescription('PHPPresentation logo') - ->setData('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAtAFAAMBIgACEQEDEQH/xAAcAAEAAwEBAQEBAAAAAAAAAAAABAUGAwcCAQj/xABdEAABAwICAwYQCgcGBQIFBQEAAQIDBAUGERIhMQcTFkFR0RQVIjU2VFVhcXORkpOxssEXMjRSU3KBlKHSIzM3QlZ0giRioqPC4aSz0+LwQ2QlY2XD8SZFR4OERv/EABsBAQACAwEBAAAAAAAAAAAAAAADBQIEBgEH/8QAQREAAQMCBAMDCgUDAwQDAQEAAAECAwQREiExUQUTQRRhcSIyM1KBkaGxwfAVIzRC0TZy4QZT8RYkkqIlQ2KCNf/aAAwDAQACEQMRAD8A+eklo7l0f3dnMOklo7l0f3dnMTQddy2bIVeJ25C6SWjuXR/d2cw6SWjuXR/d2cxNA5bNkPMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7t5iaBy2bIMTtzhT0VJSaXQtLDBp5aW9xo3PLlyO4BkiImh5cAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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') + ->setData('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAtAFAAMBIgACEQEDEQH/xAAcAAEAAwEBAQEBAAAAAAAAAAAABAUGAwcCAQj/xABdEAABAwICAwYQCgcGBQIFBQEAAQIDBAUGERIhMQcTFkFR0RQVIjU2VFVhcXORkpOxssEXMjRSU3KBlKHSIzM3QlZ0giRioqPC4aSz0+LwQ2QlY2XD8SZFR4OERv/EABsBAQACAwEBAAAAAAAAAAAAAAADBQIEBgEH/8QAQREAAQMCBAMDCgUDAwQDAQEAAAECAwQREiExUQUTQRRhcSIyM1KBkaGxwfAVIzRC0TZy4QZT8RYkkqIlQ2KCNf/aAAwDAQACEQMRAD8A+eklo7l0f3dnMOklo7l0f3dnMTQddy2bIVeJ25C6SWjuXR/d2cw6SWjuXR/d2cxNA5bNkPMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7s5iaBy2bIMTtyF0ktHcuj+7s5h0ktHcuj+7t5iaBy2bIMTtzhT0VJSaXQtLDBp5aW9xo3PLlyO4BkiImh5cAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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') ->setResizeProportional(false) ->setHeight(36) ->setWidth(36) @@ -70,19 +70,19 @@ // Add a file drawing (PNG transparent) to the slide $oFill = new Fill(); $oFill->setFillType(Fill::FILL_SOLID) - ->setStartColor(new Color(Color::COLOR_DARKRED)); + ->setStartColor(new Color(Color::COLOR_DARKRED)); $shape = new Drawing\File(); $shape->setName('PHPPresentation logo') - ->setDescription('PHPPresentation logo') - ->setPath('./resources/logo_ubuntu_transparent.png') - ->setHeight(100) - ->setOffsetX(10) - ->setOffsetY(250) - ->setFill($oFill); + ->setDescription('PHPPresentation logo') + ->setPath('./resources/logo_ubuntu_transparent.png') + ->setHeight(100) + ->setOffsetX(10) + ->setOffsetY(250) + ->setFill($oFill); $currentSlide->addShape($shape); // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_04_Table.php b/samples/Sample_04_Table.php index 6cc6f3bff3..5ed2ef3b4a 100644 --- a/samples/Sample_04_Table.php +++ b/samples/Sample_04_Table.php @@ -51,7 +51,7 @@ ->setLineStyle(Border::LINE_SINGLE) ->setDashStyle(Border::DASH_DASH); $cell->getActiveParagraph()->getAlignment() - ->setMarginLeft(10); + ->setMarginLeft(10); // Add row echo date('H:i:s') . ' Add row'.EOL; @@ -79,20 +79,20 @@ echo date('H:i:s') . ' Add row'.EOL; $row = $shape->createRow(); $row->getFill()->setFillType(Fill::FILL_SOLID) - ->setStartColor(new Color('FFE06B20')) + ->setStartColor(new Color('FFE06B20')) ->setEndColor(new Color('FFE06B20')); $oCell = $row->nextCell(); $oCell->createTextRun('R2C1'); $oCell->getActiveParagraph()->getAlignment() - ->setMarginLeft(30) - ->setTextDirection(\PhpOffice\PhpPresentation\Style\Alignment::TEXT_DIRECTION_VERTICAL_270); + ->setMarginLeft(30) + ->setTextDirection(\PhpOffice\PhpPresentation\Style\Alignment::TEXT_DIRECTION_VERTICAL_270); $oCell = $row->nextCell(); $oCell->createTextRun('R2C2'); $oCell->getActiveParagraph()->getAlignment() - ->setMarginBottom(10) - ->setMarginTop(20) - ->setMarginRight(30) - ->setMarginLeft(40); + ->setMarginBottom(10) + ->setMarginTop(20) + ->setMarginRight(30) + ->setMarginLeft(40); $oCell = $row->nextCell(); $oCell->createTextRun('R2C3'); @@ -100,7 +100,7 @@ echo date('H:i:s') . ' Add row'.EOL; $row = $shape->createRow(); $row->getFill()->setFillType(Fill::FILL_SOLID) - ->setStartColor(new Color('FFE06B20')) + ->setStartColor(new Color('FFE06B20')) ->setEndColor(new Color('FFE06B20')); $oCell = $row->nextCell(); $oCell->createTextRun('R3C1'); @@ -114,7 +114,7 @@ echo date('H:i:s') . ' Add row'.EOL; $row = $shape->createRow(); $row->getFill()->setFillType(Fill::FILL_SOLID) - ->setStartColor(new Color('FFE06B20')) + ->setStartColor(new Color('FFE06B20')) ->setEndColor(new Color('FFE06B20')); $cellC1 = $row->nextCell(); $textRunC1 = $cellC1->createTextRun('Link'); @@ -140,5 +140,5 @@ // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; -} \ No newline at end of file + include_once 'Sample_Footer.php'; +} diff --git a/samples/Sample_05_Chart.php b/samples/Sample_05_Chart.php index db7540d074..ad21b399f2 100644 --- a/samples/Sample_05_Chart.php +++ b/samples/Sample_05_Chart.php @@ -17,7 +17,8 @@ use PhpOffice\PhpPresentation\Style\Fill; use PhpOffice\PhpPresentation\Style\Shadow; -function fnSlide_Area(PhpPresentation $objPHPPresentation) { +function fnSlide_Area(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; @@ -66,7 +67,8 @@ function fnSlide_Area(PhpPresentation $objPHPPresentation) { $shape->getLegend()->getFont()->setItalic(true); } -function fnSlide_Bar(PhpPresentation $objPHPPresentation) { +function fnSlide_Bar(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; @@ -119,7 +121,8 @@ function fnSlide_Bar(PhpPresentation $objPHPPresentation) { $shape->getLegend()->getFont()->setItalic(true); } -function fnSlide_BarHorizontal(PhpPresentation $objPHPPresentation) { +function fnSlide_BarHorizontal(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; @@ -154,77 +157,79 @@ function fnSlide_BarHorizontal(PhpPresentation $objPHPPresentation) { $shape->getLegend()->getFont()->setItalic(true); } -function fnSlide_BarStacked(PhpPresentation $objPHPPresentation) { +function fnSlide_BarStacked(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; // Create templated slide - echo EOL . date( 'H:i:s' ) . ' Create templated slide' . EOL; - $currentSlide = createTemplatedSlide( $objPHPPresentation ); + echo EOL . date('H:i:s') . ' Create templated slide' . EOL; + $currentSlide = createTemplatedSlide($objPHPPresentation); // Generate sample data for first chart - echo date( 'H:i:s' ) . ' Generate sample data for chart' . EOL; + echo date('H:i:s') . ' Generate sample data for chart' . EOL; $series1Data = array('Jan' => 133, 'Feb' => 99, 'Mar' => 191, 'Apr' => 205, 'May' => 167, 'Jun' => 201, 'Jul' => 240, 'Aug' => 226, 'Sep' => 255, 'Oct' => 264, 'Nov' => 283, 'Dec' => 293); $series2Data = array('Jan' => 266, 'Feb' => 198, 'Mar' => 271, 'Apr' => 305, 'May' => 267, 'Jun' => 301, 'Jul' => 340, 'Aug' => 326, 'Sep' => 344, 'Oct' => 364, 'Nov' => 383, 'Dec' => 379); $series3Data = array('Jan' => 233, 'Feb' => 146, 'Mar' => 238, 'Apr' => 175, 'May' => 108, 'Jun' => 257, 'Jul' => 199, 'Aug' => 201, 'Sep' => 88, 'Oct' => 147, 'Nov' => 287, 'Dec' => 105); // Create a bar chart (that should be inserted in a shape) - echo date( 'H:i:s' ) . ' Create a stacked bar chart (that should be inserted in a chart shape)' . EOL; + echo date('H:i:s') . ' Create a stacked bar chart (that should be inserted in a chart shape)' . EOL; $StackedBarChart = new Bar(); - $series1 = new Series( '2009', $series1Data ); + $series1 = new Series('2009', $series1Data); $series1->setShowSeriesName(false); - $series1->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FF4F81BD' ) ); - $series1->getFont()->getColor()->setRGB( '00FF00' ); + $series1->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF4F81BD')); + $series1->getFont()->getColor()->setRGB('00FF00'); $series1->setShowValue(true); $series1->setShowPercentage(false); - $series2 = new Series( '2010', $series2Data ); + $series2 = new Series('2010', $series2Data); $series2->setShowSeriesName(false); - $series2->getFont()->getColor()->setRGB( 'FF0000' ); - $series2->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FFC0504D' ) ); + $series2->getFont()->getColor()->setRGB('FF0000'); + $series2->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFC0504D')); $series2->setShowValue(true); $series2->setShowPercentage(false); - $series3 = new Series( '2011', $series3Data ); + $series3 = new Series('2011', $series3Data); $series3->setShowSeriesName(false); - $series3->getFont()->getColor()->setRGB( 'FF0000' ); - $series3->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FF804DC0' ) ); + $series3->getFont()->getColor()->setRGB('FF0000'); + $series3->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF804DC0')); $series3->setShowValue(true); $series3->setShowPercentage(false); - $StackedBarChart->addSeries( $series1 ); - $StackedBarChart->addSeries( $series2 ); - $StackedBarChart->addSeries( $series3 ); - $StackedBarChart->setBarGrouping( Bar::GROUPING_STACKED ); + $StackedBarChart->addSeries($series1); + $StackedBarChart->addSeries($series2); + $StackedBarChart->addSeries($series3); + $StackedBarChart->setBarGrouping(Bar::GROUPING_STACKED); // Create a shape (chart) - echo date( 'H:i:s' ) . ' Create a shape (chart)' . EOL; + echo date('H:i:s') . ' Create a shape (chart)' . EOL; $shape = $currentSlide->createChartShape(); - $shape->setName( 'PHPPresentation Monthly Downloads' ) + $shape->setName('PHPPresentation Monthly Downloads') ->setResizeProportional(false) - ->setHeight( 550 ) - ->setWidth( 700 ) - ->setOffsetX( 120 ) - ->setOffsetY( 80 ); - $shape->setShadow( $oShadow ); - $shape->setFill( $oFill ); - $shape->getBorder()->setLineStyle( Border::LINE_SINGLE ); - $shape->getTitle()->setText( 'PHPPresentation Monthly Downloads' ); + ->setHeight(550) + ->setWidth(700) + ->setOffsetX(120) + ->setOffsetY(80); + $shape->setShadow($oShadow); + $shape->setFill($oFill); + $shape->getBorder()->setLineStyle(Border::LINE_SINGLE); + $shape->getTitle()->setText('PHPPresentation Monthly Downloads'); $shape->getTitle()->getFont()->setItalic(true); - $shape->getTitle()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_RIGHT ); - $shape->getPlotArea()->getAxisX()->setTitle( 'Month' ); - $shape->getPlotArea()->getAxisY()->setTitle( 'Downloads' ); - $shape->getPlotArea()->setType( $StackedBarChart ); - $shape->getLegend()->getBorder()->setLineStyle( Border::LINE_SINGLE ); + $shape->getTitle()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT); + $shape->getPlotArea()->getAxisX()->setTitle('Month'); + $shape->getPlotArea()->getAxisY()->setTitle('Downloads'); + $shape->getPlotArea()->setType($StackedBarChart); + $shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE); $shape->getLegend()->getFont()->setItalic(true); } -function fnSlide_BarPercentStacked(PhpPresentation $objPHPPresentation) { +function fnSlide_BarPercentStacked(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; // Create templated slide - echo EOL . date( 'H:i:s' ) . ' Create templated slide' . EOL; - $currentSlide = createTemplatedSlide( $objPHPPresentation ); + echo EOL . date('H:i:s') . ' Create templated slide' . EOL; + $currentSlide = createTemplatedSlide($objPHPPresentation); // Generate sample data for first chart - echo date( 'H:i:s' ) . ' Generate sample data for chart' . EOL; + echo date('H:i:s') . ' Generate sample data for chart' . EOL; $series1Data = array('Jan' => 133, 'Feb' => 99, 'Mar' => 191, 'Apr' => 205, 'May' => 167, 'Jun' => 201, 'Jul' => 240, 'Aug' => 226, 'Sep' => 255, 'Oct' => 264, 'Nov' => 283, 'Dec' => 293); $Series1Sum = array_sum($series1Data); foreach ($series1Data as $CatName => $Value) { @@ -236,64 +241,65 @@ function fnSlide_BarPercentStacked(PhpPresentation $objPHPPresentation) { $series2Data[$CatName] = round($Value / $Series2Sum, 2); } $series3Data = array('Jan' => 233, 'Feb' => 146, 'Mar' => 238, 'Apr' => 175, 'May' => 108, 'Jun' => 257, 'Jul' => 199, 'Aug' => 201, 'Sep' => 88, 'Oct' => 147, 'Nov' => 287, 'Dec' => 105); - $Series3Sum = array_sum( $series3Data ); + $Series3Sum = array_sum($series3Data); foreach ($series3Data as $CatName => $Value) { - $series3Data[$CatName] = round($Value / $Series3Sum,2); + $series3Data[$CatName] = round($Value / $Series3Sum, 2); } // Create a bar chart (that should be inserted in a shape) - echo date( 'H:i:s' ) . ' Create a percent stacked horizontal bar chart (that should be inserted in a chart shape)' . EOL; + echo date('H:i:s') . ' Create a percent stacked horizontal bar chart (that should be inserted in a chart shape)' . EOL; $PercentStackedBarChartHoriz = new Bar(); - $series1 = new Series( '2009', $series1Data ); + $series1 = new Series('2009', $series1Data); $series1->setShowSeriesName(false); - $series1->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FF4F81BD' ) ); - $series1->getFont()->getColor()->setRGB( '00FF00' ); + $series1->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF4F81BD')); + $series1->getFont()->getColor()->setRGB('00FF00'); $series1->setShowValue(true); $series1->setShowPercentage(false); // Set Data Label Format For Chart To Display Percent - $series1->setDlblNumFormat( '#%' ); - $series2 = new Series( '2010', $series2Data ); + $series1->setDlblNumFormat('#%'); + $series2 = new Series('2010', $series2Data); $series2->setShowSeriesName(false); - $series2->getFont()->getColor()->setRGB( 'FF0000' ); - $series2->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FFC0504D' ) ); + $series2->getFont()->getColor()->setRGB('FF0000'); + $series2->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FFC0504D')); $series2->setShowValue(true); $series2->setShowPercentage(false); - $series2->setDlblNumFormat( '#%' ); - $series3 = new Series( '2011', $series3Data ); + $series2->setDlblNumFormat('#%'); + $series3 = new Series('2011', $series3Data); $series3->setShowSeriesName(false); - $series3->getFont()->getColor()->setRGB( 'FF0000' ); - $series3->getFill()->setFillType( Fill::FILL_SOLID )->setStartColor( new Color( 'FF804DC0' ) ); + $series3->getFont()->getColor()->setRGB('FF0000'); + $series3->getFill()->setFillType(Fill::FILL_SOLID)->setStartColor(new Color('FF804DC0')); $series3->setShowValue(true); $series3->setShowPercentage(false); - $series3->setDlblNumFormat( '#%' ); - $PercentStackedBarChartHoriz->addSeries( $series1 ); - $PercentStackedBarChartHoriz->addSeries( $series2 ); - $PercentStackedBarChartHoriz->addSeries( $series3 ); - $PercentStackedBarChartHoriz->setBarGrouping( Bar::GROUPING_PERCENTSTACKED ); - $PercentStackedBarChartHoriz->setBarDirection( Bar3D::DIRECTION_HORIZONTAL ); + $series3->setDlblNumFormat('#%'); + $PercentStackedBarChartHoriz->addSeries($series1); + $PercentStackedBarChartHoriz->addSeries($series2); + $PercentStackedBarChartHoriz->addSeries($series3); + $PercentStackedBarChartHoriz->setBarGrouping(Bar::GROUPING_PERCENTSTACKED); + $PercentStackedBarChartHoriz->setBarDirection(Bar3D::DIRECTION_HORIZONTAL); // Create a shape (chart) - echo date( 'H:i:s' ) . ' Create a shape (chart)' . EOL; + echo date('H:i:s') . ' Create a shape (chart)' . EOL; $shape = $currentSlide->createChartShape(); - $shape->setName( 'PHPPresentation Monthly Downloads' ) + $shape->setName('PHPPresentation Monthly Downloads') ->setResizeProportional(false) - ->setHeight( 550 ) - ->setWidth( 700 ) - ->setOffsetX( 120 ) - ->setOffsetY( 80 ); - $shape->setShadow( $oShadow ); - $shape->setFill( $oFill ); - $shape->getBorder()->setLineStyle( Border::LINE_SINGLE ); - $shape->getTitle()->setText( 'PHPPresentation Monthly Downloads' ); + ->setHeight(550) + ->setWidth(700) + ->setOffsetX(120) + ->setOffsetY(80); + $shape->setShadow($oShadow); + $shape->setFill($oFill); + $shape->getBorder()->setLineStyle(Border::LINE_SINGLE); + $shape->getTitle()->setText('PHPPresentation Monthly Downloads'); $shape->getTitle()->getFont()->setItalic(true); - $shape->getTitle()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_RIGHT ); - $shape->getPlotArea()->getAxisX()->setTitle( 'Month' ); - $shape->getPlotArea()->getAxisY()->setTitle( 'Downloads' ); - $shape->getPlotArea()->setType( $PercentStackedBarChartHoriz ); - $shape->getLegend()->getBorder()->setLineStyle( Border::LINE_SINGLE ); + $shape->getTitle()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT); + $shape->getPlotArea()->getAxisX()->setTitle('Month'); + $shape->getPlotArea()->getAxisY()->setTitle('Downloads'); + $shape->getPlotArea()->setType($PercentStackedBarChartHoriz); + $shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE); $shape->getLegend()->getFont()->setItalic(true); } -function fnSlide_Bar3D(PhpPresentation $objPHPPresentation) { +function fnSlide_Bar3D(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; @@ -346,19 +352,20 @@ function fnSlide_Bar3D(PhpPresentation $objPHPPresentation) { $shape->getLegend()->getFont()->setItalic(true); } -function fnSlide_Bar3DHorizontal(PhpPresentation $objPHPPresentation) { +function fnSlide_Bar3DHorizontal(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; - + // Create a bar chart (that should be inserted in a shape) echo date('H:i:s') . ' Create a horizontal bar chart (that should be inserted in a chart shape) '.EOL; $bar3DChartHorz = clone $objPHPPresentation->getSlide(5)->getShapeCollection()->offsetGet(1)->getPlotArea()->getType(); $bar3DChartHorz->setBarDirection(Bar3D::DIRECTION_HORIZONTAL); - + // Create templated slide echo EOL.date('H:i:s') . ' Create templated slide'.EOL; $currentSlide = createTemplatedSlide($objPHPPresentation); - + // Create a shape (chart) echo date('H:i:s') . ' Create a shape (chart)'.EOL; $shape = $currentSlide->createChartShape(); @@ -439,18 +446,19 @@ function fnSlide_Doughnut(PhpPresentation $objPHPPresentation) $shape->getLegend()->setPosition(\PhpOffice\PhpPresentation\Shape\Chart\Legend::POSITION_LEFT); } -function fnSlide_Pie3D(PhpPresentation $objPHPPresentation) { +function fnSlide_Pie3D(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; - + // Create templated slide echo EOL.date('H:i:s') . ' Create templated slide'.EOL; $currentSlide = createTemplatedSlide($objPHPPresentation); - + // Generate sample data for second chart echo date('H:i:s') . ' Generate sample data for chart'.EOL; $seriesData = array('Monday' => 12, 'Tuesday' => 15, 'Wednesday' => 13, 'Thursday' => 17, 'Friday' => 14, 'Saturday' => 9, 'Sunday' => 7); - + // Create a pie chart (that should be inserted in a shape) echo date('H:i:s') . ' Create a pie chart (that should be inserted in a chart shape)'.EOL; $pie3DChart = new Pie3D(); @@ -487,7 +495,8 @@ function fnSlide_Pie3D(PhpPresentation $objPHPPresentation) { $shape->getLegend()->getFont()->setItalic(true); } -function fnSlide_Pie(PhpPresentation $objPHPPresentation) { +function fnSlide_Pie(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; @@ -537,18 +546,19 @@ function fnSlide_Pie(PhpPresentation $objPHPPresentation) { $shape->getLegend()->getFont()->setItalic(true); } -function fnSlide_Scatter(PhpPresentation $objPHPPresentation) { +function fnSlide_Scatter(PhpPresentation $objPHPPresentation) +{ global $oFill; global $oShadow; - + // Create templated slide echo EOL.date('H:i:s') . ' Create templated slide'.EOL; $currentSlide = createTemplatedSlide($objPHPPresentation); // local function - + // Generate sample data for fourth chart echo date('H:i:s') . ' Generate sample data for chart'.EOL; $seriesData = array('Monday' => 0.1, 'Tuesday' => 0.33333, 'Wednesday' => 0.4444, 'Thursday' => 0.5, 'Friday' => 0.4666, 'Saturday' => 0.3666, 'Sunday' => 0.1666); - + // Create a scatter chart (that should be inserted in a shape) echo date('H:i:s') . ' Create a scatter chart (that should be inserted in a chart shape)'.EOL; $lineChart = new Scatter(); @@ -557,7 +567,7 @@ function fnSlide_Scatter(PhpPresentation $objPHPPresentation) { $series->getMarker()->setSymbol(\PhpOffice\PhpPresentation\Shape\Chart\Marker::SYMBOL_DASH); $series->getMarker()->setSize(10); $lineChart->addSeries($series); - + // Create a shape (chart) echo date('H:i:s') . ' Create a shape (chart)'.EOL; $shape = $currentSlide->createChartShape(); diff --git a/samples/Sample_05_Chart_with_PHPExcel.php b/samples/Sample_05_Chart_with_PHPExcel.php index e10a4eda43..bcc1422b72 100644 --- a/samples/Sample_05_Chart_with_PHPExcel.php +++ b/samples/Sample_05_Chart_with_PHPExcel.php @@ -11,112 +11,112 @@ use PhpOffice\PhpPresentation\Style\Border; if (!class_exists('PHPExcel')) { - echo('PHPExcel has not been loaded. Include PHPExcel.php in your script, e.g. require_once \'PHPExcel.php\'.'); + echo('PHPExcel has not been loaded. Include PHPExcel.php in your script, e.g. require_once \'PHPExcel.php\'.'); } else { - // Create new PHPPresentation object - echo date('H:i:s') . ' Create new PHPPresentation object'.EOL; - $objPHPPresentation = new PhpPresentation(); - - // Set properties - echo date('H:i:s') . ' Set properties'.EOL; - $objPHPPresentation->getDocumentProperties()->setCreator('PHPOffice') - ->setLastModifiedBy('PHPPresentation Team') - ->setTitle('Sample 08 Title') - ->setSubject('Sample 08 Subject') - ->setDescription('Sample 08 Description') - ->setKeywords('office 2007 openxml libreoffice odt php') - ->setCategory('Sample Category'); - - // Remove first slide - echo date('H:i:s') . ' Remove first slide'.EOL; - $objPHPPresentation->removeSlideByIndex(0); - - // Create templated slide - echo date('H:i:s') . ' Create templated slide'.EOL; - $currentSlide = createTemplatedSlide($objPHPPresentation); // local function - - // Generate sample data for first chart - echo date('H:i:s') . ' Generate sample data for first chart'.EOL; - $series1Data = array('Jan' => 133, 'Feb' => 99, 'Mar' => 191, 'Apr' => 205, 'May' => 167, 'Jun' => 201, 'Jul' => 240, 'Aug' => 226, 'Sep' => 255, 'Oct' => 264, 'Nov' => 283, 'Dec' => 293); - $series2Data = array('Jan' => 266, 'Feb' => 198, 'Mar' => 271, 'Apr' => 305, 'May' => 267, 'Jun' => 301, 'Jul' => 340, 'Aug' => 326, 'Sep' => 344, 'Oct' => 364, 'Nov' => 383, 'Dec' => 379); - - // Create a bar chart (that should be inserted in a shape) - echo date('H:i:s') . ' Create a bar chart (that should be inserted in a chart shape)'.EOL; - $bar3DChart = new Bar3D(); - $bar3DChart->addSeries( new Series('2009', $series1Data) ); - $bar3DChart->addSeries( new Series('2010', $series2Data) ); - - // Create a shape (chart) - echo date('H:i:s') . ' Create a shape (chart)'.EOL; - $shape = $currentSlide->createChartShape(); - $shape->setName('PHPPresentation Monthly Downloads') - ->setResizeProportional(false) - ->setHeight(550) - ->setWidth(700) - ->setOffsetX(120) - ->setOffsetY(80) - ->setIncludeSpreadsheet(true); - $shape->getShadow()->setVisible(true) - ->setDirection(45) - ->setDistance(10); - $shape->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR) - ->setStartColor(new Color('FFCCCCCC')) - ->setEndColor(new Color('FFFFFFFF')) - ->setRotation(270); - $shape->getBorder()->setLineStyle(Border::LINE_SINGLE); - $shape->getTitle()->setText('PHPPresentation Monthly Downloads'); - $shape->getTitle()->getFont()->setItalic(true); - $shape->getPlotArea()->getAxisX()->setTitle('Month'); - $shape->getPlotArea()->getAxisY()->setTitle('Downloads'); - $shape->getPlotArea()->setType($bar3DChart); - $shape->getView3D()->setRightAngleAxes(true); - $shape->getView3D()->setRotationX(20); - $shape->getView3D()->setRotationY(20); - $shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE); - $shape->getLegend()->getFont()->setItalic(true); - - // Create templated slide - echo date('H:i:s') . ' Create templated slide'.EOL; - $currentSlide = createTemplatedSlide($objPHPPresentation); // local function - - // Generate sample data for second chart - echo date('H:i:s') . ' Generate sample data for second chart'.EOL; - $seriesData = array('Monday' => 12, 'Tuesday' => 15, 'Wednesday' => 13, 'Thursday' => 17, 'Friday' => 14, 'Saturday' => 9, 'Sunday' => 7); - - // Create a pie chart (that should be inserted in a shape) - echo date('H:i:s') . ' Create a pie chart (that should be inserted in a chart shape)'.EOL; - $pie3DChart = new Pie3D(); - $pie3DChart->addSeries( new Series('Downloads', $seriesData) ); - - // Create a shape (chart) - echo date('H:i:s') . ' Create a shape (chart)'.EOL; - $shape = $currentSlide->createChartShape(); - $shape->setName('PHPPresentation Daily Downloads') - ->setResizeProportional(false) - ->setHeight(550) - ->setWidth(700) - ->setOffsetX(120) - ->setOffsetY(80) - ->setIncludeSpreadsheet(true); - $shape->getShadow()->setVisible(true) - ->setDirection(45) - ->setDistance(10); - $shape->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR) - ->setStartColor(new Color('FFCCCCCC')) - ->setEndColor(new Color('FFFFFFFF')) - ->setRotation(270); - $shape->getBorder()->setLineStyle(Border::LINE_SINGLE); - $shape->getTitle()->setText('PHPPresentation Daily Downloads'); - $shape->getTitle()->getFont()->setItalic(true); - $shape->getPlotArea()->setType($pie3DChart); - $shape->getView3D()->setRotationX(30); - $shape->getView3D()->setPerspective(30); - $shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE); - $shape->getLegend()->getFont()->setItalic(true); - - // Save file - echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); + // Create new PHPPresentation object + echo date('H:i:s') . ' Create new PHPPresentation object'.EOL; + $objPHPPresentation = new PhpPresentation(); + + // Set properties + echo date('H:i:s') . ' Set properties'.EOL; + $objPHPPresentation->getDocumentProperties()->setCreator('PHPOffice') + ->setLastModifiedBy('PHPPresentation Team') + ->setTitle('Sample 08 Title') + ->setSubject('Sample 08 Subject') + ->setDescription('Sample 08 Description') + ->setKeywords('office 2007 openxml libreoffice odt php') + ->setCategory('Sample Category'); + + // Remove first slide + echo date('H:i:s') . ' Remove first slide'.EOL; + $objPHPPresentation->removeSlideByIndex(0); + + // Create templated slide + echo date('H:i:s') . ' Create templated slide'.EOL; + $currentSlide = createTemplatedSlide($objPHPPresentation); // local function + + // Generate sample data for first chart + echo date('H:i:s') . ' Generate sample data for first chart'.EOL; + $series1Data = array('Jan' => 133, 'Feb' => 99, 'Mar' => 191, 'Apr' => 205, 'May' => 167, 'Jun' => 201, 'Jul' => 240, 'Aug' => 226, 'Sep' => 255, 'Oct' => 264, 'Nov' => 283, 'Dec' => 293); + $series2Data = array('Jan' => 266, 'Feb' => 198, 'Mar' => 271, 'Apr' => 305, 'May' => 267, 'Jun' => 301, 'Jul' => 340, 'Aug' => 326, 'Sep' => 344, 'Oct' => 364, 'Nov' => 383, 'Dec' => 379); + + // Create a bar chart (that should be inserted in a shape) + echo date('H:i:s') . ' Create a bar chart (that should be inserted in a chart shape)'.EOL; + $bar3DChart = new Bar3D(); + $bar3DChart->addSeries(new Series('2009', $series1Data)); + $bar3DChart->addSeries(new Series('2010', $series2Data)); + + // Create a shape (chart) + echo date('H:i:s') . ' Create a shape (chart)'.EOL; + $shape = $currentSlide->createChartShape(); + $shape->setName('PHPPresentation Monthly Downloads') + ->setResizeProportional(false) + ->setHeight(550) + ->setWidth(700) + ->setOffsetX(120) + ->setOffsetY(80) + ->setIncludeSpreadsheet(true); + $shape->getShadow()->setVisible(true) + ->setDirection(45) + ->setDistance(10); + $shape->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR) + ->setStartColor(new Color('FFCCCCCC')) + ->setEndColor(new Color('FFFFFFFF')) + ->setRotation(270); + $shape->getBorder()->setLineStyle(Border::LINE_SINGLE); + $shape->getTitle()->setText('PHPPresentation Monthly Downloads'); + $shape->getTitle()->getFont()->setItalic(true); + $shape->getPlotArea()->getAxisX()->setTitle('Month'); + $shape->getPlotArea()->getAxisY()->setTitle('Downloads'); + $shape->getPlotArea()->setType($bar3DChart); + $shape->getView3D()->setRightAngleAxes(true); + $shape->getView3D()->setRotationX(20); + $shape->getView3D()->setRotationY(20); + $shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE); + $shape->getLegend()->getFont()->setItalic(true); + + // Create templated slide + echo date('H:i:s') . ' Create templated slide'.EOL; + $currentSlide = createTemplatedSlide($objPHPPresentation); // local function + + // Generate sample data for second chart + echo date('H:i:s') . ' Generate sample data for second chart'.EOL; + $seriesData = array('Monday' => 12, 'Tuesday' => 15, 'Wednesday' => 13, 'Thursday' => 17, 'Friday' => 14, 'Saturday' => 9, 'Sunday' => 7); + + // Create a pie chart (that should be inserted in a shape) + echo date('H:i:s') . ' Create a pie chart (that should be inserted in a chart shape)'.EOL; + $pie3DChart = new Pie3D(); + $pie3DChart->addSeries(new Series('Downloads', $seriesData)); + + // Create a shape (chart) + echo date('H:i:s') . ' Create a shape (chart)'.EOL; + $shape = $currentSlide->createChartShape(); + $shape->setName('PHPPresentation Daily Downloads') + ->setResizeProportional(false) + ->setHeight(550) + ->setWidth(700) + ->setOffsetX(120) + ->setOffsetY(80) + ->setIncludeSpreadsheet(true); + $shape->getShadow()->setVisible(true) + ->setDirection(45) + ->setDistance(10); + $shape->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR) + ->setStartColor(new Color('FFCCCCCC')) + ->setEndColor(new Color('FFFFFFFF')) + ->setRotation(270); + $shape->getBorder()->setLineStyle(Border::LINE_SINGLE); + $shape->getTitle()->setText('PHPPresentation Daily Downloads'); + $shape->getTitle()->getFont()->setItalic(true); + $shape->getPlotArea()->setType($pie3DChart); + $shape->getView3D()->setRotationX(30); + $shape->getView3D()->setPerspective(30); + $shape->getLegend()->getBorder()->setLineStyle(Border::LINE_SINGLE); + $shape->getLegend()->getFont()->setItalic(true); + + // Save file + echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); } if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_06_Fill.php b/samples/Sample_06_Fill.php index 563f00baff..6a4f994b9a 100644 --- a/samples/Sample_06_Fill.php +++ b/samples/Sample_06_Fill.php @@ -26,43 +26,43 @@ $currentSlide = $objPHPPresentation->getActiveSlide(); -for($inc = 1 ; $inc <= 4 ; $inc++){ +for ($inc = 1 ; $inc <= 4 ; $inc++) { // Create a shape (text) echo date('H:i:s') . ' Create a shape (rich text)'.EOL; $shape = $currentSlide->createRichTextShape() ->setHeight(200) ->setWidth(300); - if($inc == 1 || $inc == 3){ + if ($inc == 1 || $inc == 3) { $shape->setOffsetX(10); } else { $shape->setOffsetX(320); } - if($inc == 1 || $inc == 2){ + if ($inc == 1 || $inc == 2) { $shape->setOffsetY(10); } else { $shape->setOffsetY(220); } - $shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_CENTER ); - + $shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + switch ($inc) { - case 1 : + case 1: $shape->getFill()->setFillType(Fill::FILL_NONE); break; - case 2 : - $shape->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR)->setRotation(90)->setStartColor(new Color( 'FF4672A8' ))->setEndColor(new Color( 'FF000000' )); + case 2: + $shape->getFill()->setFillType(Fill::FILL_GRADIENT_LINEAR)->setRotation(90)->setStartColor(new Color('FF4672A8'))->setEndColor(new Color('FF000000')); break; - case 3 : - $shape->getFill()->setFillType(Fill::FILL_GRADIENT_PATH)->setRotation(90)->setStartColor(new Color( 'FF4672A8' ))->setEndColor(new Color( 'FF000000' )); + case 3: + $shape->getFill()->setFillType(Fill::FILL_GRADIENT_PATH)->setRotation(90)->setStartColor(new Color('FF4672A8'))->setEndColor(new Color('FF000000')); break; - case 4 : - $shape->getFill()->setFillType(Fill::FILL_SOLID)->setRotation(90)->setStartColor(new Color( 'FF4672A8' ))->setEndColor(new Color( 'FF4672A8' )); + case 4: + $shape->getFill()->setFillType(Fill::FILL_SOLID)->setRotation(90)->setStartColor(new Color('FF4672A8'))->setEndColor(new Color('FF4672A8')); break; } - + $textRun = $shape->createTextRun('Use PHPPresentation!'); $textRun->getFont()->setBold(true) ->setSize(30) - ->setColor( new Color('FFE06B20') ); + ->setColor(new Color('FFE06B20')); } // Save file diff --git a/samples/Sample_07_Border.php b/samples/Sample_07_Border.php index a6402fd58a..53b9975f24 100644 --- a/samples/Sample_07_Border.php +++ b/samples/Sample_07_Border.php @@ -22,42 +22,42 @@ for ($inc = 1; $inc <= 4; $inc++) { - // Create a shape (text) - echo date('H:i:s') . ' Create a shape (rich text)' . EOL; - $shape = $currentSlide->createRichTextShape()->setHeight(200)->setWidth(300); - if ($inc == 1 || $inc == 3) { - $shape->setOffsetX(10); - } else { - $shape->setOffsetX(320); - } - if ($inc == 1 || $inc == 2) { - $shape->setOffsetY(10); - } else { - $shape->setOffsetY(220); - } - $shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); - - switch ($inc) { - case 1: - $shape->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_SOLID)->setLineStyle(Border::LINE_DOUBLE); - break; - case 2: - $shape->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_DASH)->setLineStyle(Border::LINE_SINGLE); - break; - case 3: - $shape->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_DOT)->setLineStyle(Border::LINE_THICKTHIN); - break; - case 4: - $shape->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_LARGEDASHDOT)->setLineStyle(Border::LINE_THINTHICK); - break; - } - - $textRun = $shape->createTextRun('Use PHPPresentation!'); - $textRun->getFont()->setBold(true)->setSize(30)->setColor(new Color('FFE06B20')); + // Create a shape (text) + echo date('H:i:s') . ' Create a shape (rich text)' . EOL; + $shape = $currentSlide->createRichTextShape()->setHeight(200)->setWidth(300); + if ($inc == 1 || $inc == 3) { + $shape->setOffsetX(10); + } else { + $shape->setOffsetX(320); + } + if ($inc == 1 || $inc == 2) { + $shape->setOffsetY(10); + } else { + $shape->setOffsetY(220); + } + $shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); + + switch ($inc) { + case 1: + $shape->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_SOLID)->setLineStyle(Border::LINE_DOUBLE); + break; + case 2: + $shape->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_DASH)->setLineStyle(Border::LINE_SINGLE); + break; + case 3: + $shape->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_DOT)->setLineStyle(Border::LINE_THICKTHIN); + break; + case 4: + $shape->getBorder()->setColor(new Color('FF4672A8'))->setDashStyle(Border::DASH_LARGEDASHDOT)->setLineStyle(Border::LINE_THINTHICK); + break; + } + + $textRun = $shape->createTextRun('Use PHPPresentation!'); + $textRun->getFont()->setBold(true)->setSize(30)->setColor(new Color('FFE06B20')); } // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_08_Group.php b/samples/Sample_08_Group.php index 55b35f4c33..cd6dd3cb45 100644 --- a/samples/Sample_08_Group.php +++ b/samples/Sample_08_Group.php @@ -44,14 +44,14 @@ ->setWidth(600) ->setOffsetX(170) ->setOffsetY(180); -$shape->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_CENTER ); +$shape->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); $textRun = $shape->createTextRun('Thank you for using PHPPresentation!'); $textRun->getFont()->setBold(true) ->setSize(60) - ->setColor( new Color( 'FFE06B20' ) ); + ->setColor(new Color('FFE06B20')); // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_10_Transition.php b/samples/Sample_10_Transition.php index 9a760fc97e..41b307303c 100644 --- a/samples/Sample_10_Transition.php +++ b/samples/Sample_10_Transition.php @@ -46,11 +46,11 @@ ->setWidth(600) ->setOffsetX(170) ->setOffsetY(180); -$shapeRichText->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_CENTER ); +$shapeRichText->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); $textRun = $shapeRichText->createTextRun('Thank you for using PHPPresentation!'); $textRun->getFont()->setBold(true) ->setSize(60) - ->setColor( new Color( 'FFE06B20' ) ); + ->setColor(new Color('FFE06B20')); $oTransition = new Transition(); $oTransition->setManualTrigger(false); @@ -67,5 +67,5 @@ // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_12_Reader_ODPresentation.php b/samples/Sample_12_Reader_ODPresentation.php index acb582956b..38da04278c 100644 --- a/samples/Sample_12_Reader_ODPresentation.php +++ b/samples/Sample_12_Reader_ODPresentation.php @@ -14,5 +14,5 @@ $oTree = new PhpPptTree($oPHPPresentation); echo $oTree->display(); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_12_Reader_PowerPoint2007.php b/samples/Sample_12_Reader_PowerPoint2007.php index 0093615477..d2ead06390 100644 --- a/samples/Sample_12_Reader_PowerPoint2007.php +++ b/samples/Sample_12_Reader_PowerPoint2007.php @@ -14,5 +14,5 @@ $oTree = new PhpPptTree($oPHPPresentation); echo $oTree->display(); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_12_Reader_PowerPoint97.php b/samples/Sample_12_Reader_PowerPoint97.php index bcc780ce7d..a21a55f200 100644 --- a/samples/Sample_12_Reader_PowerPoint97.php +++ b/samples/Sample_12_Reader_PowerPoint97.php @@ -14,5 +14,5 @@ $oTree = new PhpPptTree($oPHPPresentation); echo $oTree->display(); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_13_MarkAsFinal.php b/samples/Sample_13_MarkAsFinal.php index 0556ff0d16..83af22338b 100644 --- a/samples/Sample_13_MarkAsFinal.php +++ b/samples/Sample_13_MarkAsFinal.php @@ -22,5 +22,5 @@ // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_14_Zoom.php b/samples/Sample_14_Zoom.php index 9b76917792..bbfddd00c8 100644 --- a/samples/Sample_14_Zoom.php +++ b/samples/Sample_14_Zoom.php @@ -22,5 +22,5 @@ // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_15_Background.php b/samples/Sample_15_Background.php index 7d7c054220..4bde887c73 100644 --- a/samples/Sample_15_Background.php +++ b/samples/Sample_15_Background.php @@ -5,7 +5,7 @@ use PhpOffice\PhpPresentation\PhpPresentation; use PhpOffice\PhpPresentation\Slide\Background\Color; use PhpOffice\PhpPresentation\Style\Color as StyleColor; -use \PhpOffice\PhpPresentation\Slide\Background\Image; +use PhpOffice\PhpPresentation\Slide\Background\Image; // Create new PHPPresentation object echo date('H:i:s') . ' Create new PHPPresentation object' . EOL; @@ -39,5 +39,5 @@ // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_16_Thumbnail.php b/samples/Sample_16_Thumbnail.php index 15c33fbe84..b92ba92a23 100644 --- a/samples/Sample_16_Thumbnail.php +++ b/samples/Sample_16_Thumbnail.php @@ -5,7 +5,7 @@ use PhpOffice\PhpPresentation\PhpPresentation; use PhpOffice\PhpPresentation\Slide\Background\Color; use PhpOffice\PhpPresentation\Style\Color as StyleColor; -use \PhpOffice\PhpPresentation\Slide\Background\Image; +use PhpOffice\PhpPresentation\Slide\Background\Image; // Create new PHPPresentation object echo date('H:i:s') . ' Create new PHPPresentation object' . EOL; @@ -23,5 +23,5 @@ // Save file echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); if (!CLI) { - include_once 'Sample_Footer.php'; + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_17_Comment.php b/samples/Sample_17_Comment.php index 727d72bc6d..1f1ec2d37a 100644 --- a/samples/Sample_17_Comment.php +++ b/samples/Sample_17_Comment.php @@ -5,7 +5,7 @@ use PhpOffice\PhpPresentation\PhpPresentation; use PhpOffice\PhpPresentation\Slide\Background\Color; use PhpOffice\PhpPresentation\Style\Color as StyleColor; -use \PhpOffice\PhpPresentation\Slide\Background\Image; +use PhpOffice\PhpPresentation\Slide\Background\Image; // Create new PHPPresentation object echo date('H:i:s') . ' Create new PHPPresentation object' . EOL; diff --git a/samples/Sample_19_SlideMaster.php b/samples/Sample_19_SlideMaster.php index 3fe68add2e..ef1ac4b52b 100644 --- a/samples/Sample_19_SlideMaster.php +++ b/samples/Sample_19_SlideMaster.php @@ -1,4 +1,5 @@ setWidth(600) ->setOffsetX(170) ->setOffsetY(180); -$oShapeRichText->getActiveParagraph()->getAlignment()->setHorizontal( Alignment::HORIZONTAL_CENTER ); +$oShapeRichText->getActiveParagraph()->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER); $textRun = $oShapeRichText->createTextRun('Thank you for using PHPPresentation!'); $textRun->getFont()->setBold(true) ->setSize(60) - ->setColor( new Color( 'FFE06B20' ) ); + ->setColor(new Color('FFE06B20')); @@ -194,7 +194,8 @@ function createTemplatedSlide(PhpOffice\PhpPresentation\PhpPresentation $objPHPP return $slide; } -class PhpPptTree { +class PhpPptTree +{ protected $oPhpPresentation; protected $htmlOutput; @@ -238,7 +239,7 @@ protected function displayPhpPresentation(PhpPresentation $oPHPPpt) $this->append('