summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRandy Morgan <[email protected]>2011-11-20 23:22:04 +0900
committerRandy Morgan <[email protected]>2011-11-20 23:22:04 +0900
commite53f04284618713b0a90b7a691425c380e829476 (patch)
tree801fea138160f9af426d62bf94ad5bf97123ece9
downloadcaxlsx-e53f04284618713b0a90b7a691425c380e829476.tar.gz
caxlsx-e53f04284618713b0a90b7a691425c380e829476.zip
first commit
-rw-r--r--.yardoc/checksums49
-rw-r--r--.yardoc/objects/root.datbin0 -> 406709 bytes
-rw-r--r--.yardoc/proxy_typesbin0 -> 38 bytes
-rw-r--r--LICENSE22
-rw-r--r--README.md70
-rw-r--r--Rakefile13
-rw-r--r--assets/example.rb90
-rw-r--r--assets/multi_chart.xlsxbin0 -> 39673 bytes
-rw-r--r--axlsx-1.0.0.gembin0 -> 151040 bytes
-rw-r--r--axlsx-1.0.1.a.gembin0 -> 160768 bytes
-rw-r--r--axlsx.gemspec21
-rw-r--r--example1.xlsxbin0 -> 5039 bytes
-rw-r--r--lib/axlsx.rb38
-rw-r--r--lib/axlsx/content_type/content_type.rb23
-rw-r--r--lib/axlsx/content_type/default.rb32
-rw-r--r--lib/axlsx/content_type/override.rb30
-rw-r--r--lib/axlsx/doc_props/app.rb148
-rw-r--r--lib/axlsx/doc_props/core.rb34
-rw-r--r--lib/axlsx/drawing/axis.rb78
-rw-r--r--lib/axlsx/drawing/bar_3D_chart.rb138
-rw-r--r--lib/axlsx/drawing/bar_series.rb91
-rw-r--r--lib/axlsx/drawing/cat_axis.rb58
-rw-r--r--lib/axlsx/drawing/chart.rb120
-rw-r--r--lib/axlsx/drawing/drawing.rb121
-rw-r--r--lib/axlsx/drawing/graphic_frame.rb55
-rw-r--r--lib/axlsx/drawing/marker.rb57
-rw-r--r--lib/axlsx/drawing/pie_3D_chart.rb59
-rw-r--r--lib/axlsx/drawing/pie_series.rb88
-rw-r--r--lib/axlsx/drawing/scaling.rb53
-rw-r--r--lib/axlsx/drawing/series.rb70
-rw-r--r--lib/axlsx/drawing/title.rb69
-rw-r--r--lib/axlsx/drawing/two_cell_anchor.rb88
-rw-r--r--lib/axlsx/drawing/val_axis.rb34
-rw-r--r--lib/axlsx/drawing/view_3D.rb72
-rw-r--r--lib/axlsx/package.rb181
-rw-r--r--lib/axlsx/rels/relationship.rb43
-rw-r--r--lib/axlsx/rels/relationships.rb25
-rw-r--r--lib/axlsx/stylesheet/border.rb52
-rw-r--r--lib/axlsx/stylesheet/border_pr.rb65
-rw-r--r--lib/axlsx/stylesheet/cell_alignment.rb96
-rw-r--r--lib/axlsx/stylesheet/cell_protection.rb33
-rw-r--r--lib/axlsx/stylesheet/cell_style.rb60
-rw-r--r--lib/axlsx/stylesheet/color.rb57
-rw-r--r--lib/axlsx/stylesheet/fill.rb31
-rw-r--r--lib/axlsx/stylesheet/font.rb128
-rw-r--r--lib/axlsx/stylesheet/gradient_fill.rb70
-rw-r--r--lib/axlsx/stylesheet/gradient_stop.rb31
-rw-r--r--lib/axlsx/stylesheet/num_fmt.rb61
-rw-r--r--lib/axlsx/stylesheet/pattern_fill.rb64
-rw-r--r--lib/axlsx/stylesheet/styles.rb296
-rw-r--r--lib/axlsx/stylesheet/table_style.rb44
-rw-r--r--lib/axlsx/stylesheet/table_style_element.rb66
-rw-r--r--lib/axlsx/stylesheet/table_styles.rb39
-rw-r--r--lib/axlsx/stylesheet/xf.rb117
-rw-r--r--lib/axlsx/util/constants.rb189
-rw-r--r--lib/axlsx/util/simple_typed_list.rb150
-rw-r--r--lib/axlsx/util/validators.rb132
-rw-r--r--lib/axlsx/workbook/workbook.rb131
-rw-r--r--lib/axlsx/workbook/worksheet/cell.rb184
-rw-r--r--lib/axlsx/workbook/worksheet/row.rb92
-rw-r--r--lib/axlsx/workbook/worksheet/worksheet.rb193
-rw-r--r--lib/schema/dc.xsd118
-rw-r--r--lib/schema/dcmitype.xsd50
-rw-r--r--lib/schema/dcterms.xsd331
-rw-r--r--lib/schema/dml-chart.xsd1499
-rw-r--r--lib/schema/dml-chartDrawing.xsd146
-rw-r--r--lib/schema/dml-compatibility.xsd14
-rw-r--r--lib/schema/dml-diagram.xsd1091
-rw-r--r--lib/schema/dml-lockedCanvas.xsd11
-rw-r--r--lib/schema/dml-main.xsd3048
-rw-r--r--lib/schema/dml-picture.xsd23
-rw-r--r--lib/schema/dml-spreadsheetDrawing.xsd185
-rw-r--r--lib/schema/dml-wordprocessingDrawing.xsd185
-rw-r--r--lib/schema/opc-contentTypes.xsd42
-rw-r--r--lib/schema/opc-coreProperties.xsd50
-rw-r--r--lib/schema/opc-digSig.xsd49
-rw-r--r--lib/schema/opc-relationships.xsd33
-rw-r--r--lib/schema/pml.xsd1676
-rw-r--r--lib/schema/shared-additionalCharacteristics.xsd28
-rw-r--r--lib/schema/shared-bibliography.xsd144
-rw-r--r--lib/schema/shared-commonSimpleTypes.xsd166
-rw-r--r--lib/schema/shared-customXmlDataProperties.xsd25
-rw-r--r--lib/schema/shared-customXmlSchemaProperties.xsd18
-rw-r--r--lib/schema/shared-documentPropertiesCustom.xsd59
-rw-r--r--lib/schema/shared-documentPropertiesExtended.xsd56
-rw-r--r--lib/schema/shared-documentPropertiesVariantTypes.xsd195
-rw-r--r--lib/schema/shared-math.xsd582
-rw-r--r--lib/schema/shared-relationshipReference.xsd25
-rw-r--r--lib/schema/sml.xsd4430
-rw-r--r--lib/schema/vml-main.xsd569
-rw-r--r--lib/schema/vml-officeDrawing.xsd509
-rw-r--r--lib/schema/vml-presentationDrawing.xsd12
-rw-r--r--lib/schema/vml-spreadsheetDrawing.xsd108
-rw-r--r--lib/schema/vml-wordprocessingDrawing.xsd96
-rw-r--r--lib/schema/wml.xsd3644
-rw-r--r--lib/schema/xml.xsd117
-rw-r--r--test.xlsxbin0 -> 3078 bytes
-rw-r--r--test/content_type/tc_content_type.rb81
-rw-r--r--test/content_type/tc_default.rb40
-rw-r--r--test/content_type/tc_override.rb40
-rw-r--r--test/doc_props/tc_app.rb19
-rw-r--r--test/doc_props/tc_core.rb34
-rw-r--r--test/drawing/tc_axis.rb39
-rw-r--r--test/drawing/tc_bar_3D_chart.rb66
-rw-r--r--test/drawing/tc_bar_series.rb34
-rw-r--r--test/drawing/tc_cat_axis.rb32
-rw-r--r--test/drawing/tc_chart.rb59
-rw-r--r--test/drawing/tc_drawing.rb71
-rw-r--r--test/drawing/tc_graphic_frame.rb26
-rw-r--r--test/drawing/tc_marker.rb45
-rw-r--r--test/drawing/tc_pie_3D_chart.rb33
-rw-r--r--test/drawing/tc_pie_series.rb35
-rw-r--r--test/drawing/tc_scaling.rb37
-rw-r--r--test/drawing/tc_series.rb24
-rw-r--r--test/drawing/tc_title.rb34
-rw-r--r--test/drawing/tc_two_cell_anchor.rb37
-rw-r--r--test/drawing/tc_val_axis.rb20
-rw-r--r--test/drawing/tc_view_3D.rb46
-rw-r--r--test/rels/tc_relationship.rb16
-rw-r--r--test/rels/tc_relationships.rb32
-rw-r--r--test/stylesheet/tc_border.rb38
-rw-r--r--test/stylesheet/tc_border_pr.rb33
-rw-r--r--test/stylesheet/tc_cell_alignment.rb77
-rw-r--r--test/stylesheet/tc_cell_protection.rb30
-rw-r--r--test/stylesheet/tc_cell_style.rb58
-rw-r--r--test/stylesheet/tc_color.rb38
-rw-r--r--test/stylesheet/tc_fill.rb19
-rw-r--r--test/stylesheet/tc_font.rb114
-rw-r--r--test/stylesheet/tc_gradient_fill.rb65
-rw-r--r--test/stylesheet/tc_gradient_stop.rb32
-rw-r--r--test/stylesheet/tc_num_fmt.rb31
-rw-r--r--test/stylesheet/tc_pattern_fill.rb38
-rw-r--r--test/stylesheet/tc_styles.rb64
-rw-r--r--test/stylesheet/tc_table_style.rb37
-rw-r--r--test/stylesheet/tc_table_style_element.rb37
-rw-r--r--test/stylesheet/tc_table_styles.rb30
-rw-r--r--test/stylesheet/tc_xf.rb121
-rw-r--r--test/tc_package.rb70
-rw-r--r--test/util/tc_simple_typed_list.rb66
-rw-r--r--test/util/tc_validators.rb76
-rw-r--r--test/workbook/tc_workbook.rb53
-rw-r--r--test/workbook/worksheet/tc_cell.rb78
-rw-r--r--test/workbook/worksheet/tc_row.rb30
-rw-r--r--test/workbook/worksheet/tc_worksheet.rb85
-rw-r--r--unzip/[Content_Types].xml18
-rw-r--r--unzip/_rels/.rels6
-rw-r--r--unzip/docProps/app.xml2
-rw-r--r--unzip/docProps/core.xml6
-rw-r--r--unzip/test.zipbin0 -> 9905 bytes
-rw-r--r--unzip/xl/_rels/workbook.xml.rels7
-rw-r--r--unzip/xl/charts/chart1.xml106
-rw-r--r--unzip/xl/charts/chart2.xml74
-rw-r--r--unzip/xl/charts/chart3.xml74
-rw-r--r--unzip/xl/drawings/_rels/drawing1.xml.rels4
-rw-r--r--unzip/xl/drawings/_rels/drawing2.xml.rels4
-rw-r--r--unzip/xl/drawings/_rels/drawing3.xml.rels4
-rw-r--r--unzip/xl/drawings/drawing1.xml33
-rw-r--r--unzip/xl/drawings/drawing2.xml33
-rw-r--r--unzip/xl/drawings/drawing3.xml33
-rw-r--r--unzip/xl/styles.xml70
-rw-r--r--unzip/xl/workbook.xml9
-rw-r--r--unzip/xl/worksheets/_rels/sheet1.xml.rels4
-rw-r--r--unzip/xl/worksheets/_rels/sheet2.xml.rels4
-rw-r--r--unzip/xl/worksheets/_rels/sheet3.xml.rels4
-rw-r--r--unzip/xl/worksheets/sheet1.xml2
-rw-r--r--unzip/xl/worksheets/sheet2.xml2
-rw-r--r--unzip/xl/worksheets/sheet3.xml2
167 files changed, 26506 insertions, 0 deletions
diff --git a/.yardoc/checksums b/.yardoc/checksums
new file mode 100644
index 00000000..011df864
--- /dev/null
+++ b/.yardoc/checksums
@@ -0,0 +1,49 @@
+lib/axlsx/stylesheet/table_styles.rb 04b778652c29d612f63e93080d06c3936e48d765
+lib/axlsx/stylesheet/table_style.rb b592135b8b02969a29bd24c28a13282f6af76f30
+lib/axlsx/drawing/pie_3D_chart.rb 9a93a6fcf43122ed41f522f50b9d0d0340be1688
+lib/axlsx/stylesheet/border_pr.rb 09dcb61ec7b0cf49f2da4c4f8ccba8f7e0df7b07
+lib/axlsx/stylesheet/color.rb 4927aaebe27dda42d78bb7baf9a44edc1753c77f
+lib/axlsx/drawing/marker.rb 3507738522c02a3733a01f115d9ef22fae4ea542
+lib/axlsx/util/constants.rb e5d73c830c4e7068b02ddce6ca1bd009da3778b8
+lib/axlsx/stylesheet/cell_protection.rb ce494f9add6de0a51407ddd9122fffe95759a48a
+lib/axlsx/stylesheet/cell_style.rb 46c6ff183bce5c6b1ab6228823257d638007b03c
+lib/axlsx/drawing/series.rb 76a9b00ab44c4b9553a017aa25f7f504c2b41484
+lib/axlsx/package.rb eea7499e09e0936eeb8e08d10823f05990722023
+lib/axlsx/stylesheet/cell_alignment.rb f67f6a0bc16bf13669ed7b18714e4de23825ed94
+lib/axlsx/content_type/default.rb 8ec0d9d1e6bf261735739823acd460c271e3f5ed
+lib/axlsx/drawing/title.rb 7069b1c32bd209addd9808be005dae176819b8e0
+lib/axlsx/drawing/axis.rb 5316065040d08d4f15e5da2751a2ee90185dad61
+lib/axlsx/stylesheet/table_style_element.rb bee66d743e3113fb14adc7ebdecbeb606bfb49fc
+lib/axlsx/content_type/content_type.rb 6c576e1618f99f7163fffa6b6e89e964653dcb5f
+lib/axlsx/stylesheet/num_fmt.rb dc830c6540465afa824881efa2f1ce4070957c47
+lib/axlsx/rels/relationships.rb 9c741e180796259bb378a789fd484fa1d8f04425
+lib/axlsx.rb 7d8c589a0bdc16acf8774ae1b77d5177b030a80c
+lib/axlsx/drawing/graphic_frame.rb 5ff7476b8fa3e2101fde200d1c65844084fb42f7
+lib/axlsx/content_type/override.rb 72245683bca868f181d709a515f9152485653229
+lib/axlsx/drawing/pie_series.rb 76c67a0227e913fb14eb70d756323974718e204a
+lib/axlsx/drawing/bar_series.rb a8a1648a1bec8d3d4bc07786f2c55c0c0d658e15
+lib/axlsx/stylesheet/gradient_fill.rb 5fd260ec2b94ab75a970159035528548a9d21cd6
+lib/axlsx/workbook/worksheet/row.rb f866a98341ce4e604908e42d00f2af09e58c75d2
+lib/axlsx/util/simple_typed_list.rb 2ae647d5305acd9181c3303d5638db46d190b786
+lib/axlsx/workbook/workbook.rb ec98ed826e6c3ca9c6e3303dbfbe00c0b5fb9aee
+lib/axlsx/stylesheet/fill.rb 35966285f5d759d63451005ceae3a5ae5ba2ceca
+lib/axlsx/drawing/view_3D.rb aca4d987f0c2cd5d0a653c96ac2bc1df9392583a
+lib/axlsx/stylesheet/xf.rb e3d6e2e4c3b0b33c91de4c3db16c73aca3db4473
+lib/axlsx/drawing/two_cell_anchor.rb cc320f580ff9c639daa670f7ba1a1648bf26c157
+lib/axlsx/stylesheet/styles.rb 3679a8fe86270bdef96f02bcf76f2eac27b1c2ef
+lib/axlsx/drawing/val_axis.rb 710e67120c1262ef4cbbb56b632a568731df3215
+lib/axlsx/drawing/cat_axis.rb bf9eae6efae39b003a98b44cc437e6e9b4c51985
+lib/axlsx/stylesheet/font.rb 8b002d5fcba2fb0979858517f5254aadf96c7e58
+lib/axlsx/util/validators.rb 2320eee50ceee29cc0dbab95721a6c633dc660e1
+lib/axlsx/doc_props/app.rb 52f01e985a33253987177798d4e79ed208649b30
+lib/axlsx/workbook/worksheet/worksheet.rb 1af6b7e4a54b41e770709c26ad7100ed516448b8
+lib/axlsx/workbook/worksheet/cell.rb 939623ffc2065e9ec26bc56d9e289d9137fe57d3
+lib/axlsx/stylesheet/border.rb 517bfcb43380919ce7abef494d5d3e50911b7c19
+lib/axlsx/rels/relationship.rb a160c998acf7fd0ab8195ea6162b1eb2eab4963c
+lib/axlsx/drawing/drawing.rb cdb97d463eb539baf96a105493aca17d7ddf57e5
+lib/axlsx/drawing/chart.rb 41dce85f81b7f5d5df3493597c1560d0f0c50c62
+lib/axlsx/stylesheet/gradient_stop.rb de34e289aeccb4abd9a3b7e60e816a0b12ffacff
+lib/axlsx/doc_props/core.rb 90ebc8086f6606af02275c27068c359a5647faf0
+lib/axlsx/drawing/bar_3D_chart.rb 68a516574b727bf9fc7e030d13060eaf7e36221e
+lib/axlsx/drawing/scaling.rb d3b59eed1897dc2b07bb41b2245c6e4b3e274d7e
+lib/axlsx/stylesheet/pattern_fill.rb 817cf55beb3db160b2b56edb6c94de1ecf1ecee7
diff --git a/.yardoc/objects/root.dat b/.yardoc/objects/root.dat
new file mode 100644
index 00000000..98988407
--- /dev/null
+++ b/.yardoc/objects/root.dat
Binary files differ
diff --git a/.yardoc/proxy_types b/.yardoc/proxy_types
new file mode 100644
index 00000000..97e24d35
--- /dev/null
+++ b/.yardoc/proxy_types
Binary files differ
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..2033adef
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2011 Randy Morgan
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..82bb8ebd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,70 @@
+Axlsx: Office Open XML Spreadsheet Generation
+====================================
+
+**IRC**: [irc.freenode.net / #axlsx](irc://irc.freenode.net/axlsx)
+**Git**: [http://github.com/randym/axlsx](http://github.com/randym/axlsx)
+**Author**: Randy Morgan
+**Copyright**: 2011
+**License**: MIT License
+**Latest Version**: 1.0.0
+**Release Date**: November 20th 2011
+
+Synopsis
+--------
+
+Axlsx is an Office Open XML Spreadsheet generator for the Ruby programming language.
+It enables the you to generate 100% valid xlsx files that include customised styling 3D pie, bar and line charts. Below is a summary of salient features.
+
+Feature List
+------------
+
+**1. Author xlsx documents: Axlsx is made to let you easily and quickly generate profesional xlsx based reports that can be validated before serialiation.
+
+**2. Generate 3D Pie and Bar Charts: With Axlsx chart generation and management is as easy as a few lines of code. You can build charts based off data in your worksheet or generate charts without any data in your sheet at all.
+
+**3. Custom Styles: With guaranteed document validity, you can style borders, alignment, fills, fonts, and number formats in a single line of code. Those styles can be applied to an entire row, or a single cell anywhere in your workbook.
+
+**4. Automatic type support: Axlsx will automatically determine the type of data you are generating. In this release Float, Integer, String and Time types are automatically identified and serialized to your spreadsheet.
+
+Installing
+----------
+
+To install Axlsx, use the following command:
+
+ $ gem install axlsx
+
+Usage
+-----
+
+Generating a workbook with styles and a chart:
+ p = Axlsx::Package.new do |package|
+ package.workbook.add_worksheet do |sheet|
+ sheet.add_row ["First", "Second", "Third"], :style => Axlsx::STYLE_THIN_BORDER
+ sheet.add_row [1, 2, 3], :style => Axlsx::STYLE_THIN_BORDER
+ sheet.add_chart(Axlsx::Bar3DChart, :start_at => [0,2], :end_at => [5, 15], :title=>"example 1: Chart") do |chart|
+ chart.add_series :data=>sheet.rows.last.cells, :labels=> sheet.rows.first.cells
+ end
+ end
+ package.serialize("example1.xlsx")
+ end
+
+
+### Documentation
+This gem is 100% documented with YARD, an exceptional documentation library. To see documentation for this, and all the gems installed on your system use:
+
+ yard server -g
+
+
+### Specs
+This gem has 100% test coverage. To execute tests for this gem, simply run rake in the gem directory.
+
+Changelog
+---------
+
+- **October.10.11**: 0.1.0 release
+
+Copyright
+---------
+
+Axlsx &copy; 2011 by [Randy Morgan](mailto:[email protected]). Axlsx is
+licensed under the MIT license. Please see the {file:LICENSE} document for more information.
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 00000000..57d0e0a6
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,13 @@
+require 'rake/testtask'
+
+# gems not loading? try this
+#RUBYOPT="rubygems"
+#export RUBYOPT
+
+Rake::TestTask.new do |t|
+ t.libs << 'test'
+ t.test_files = FileList['test/**/tc_*.rb']
+ t.verbose = true
+end
+
+task :default => :test \ No newline at end of file
diff --git a/assets/example.rb b/assets/example.rb
new file mode 100644
index 00000000..51864903
--- /dev/null
+++ b/assets/example.rb
@@ -0,0 +1,90 @@
+require 'rubygems'
+require 'axlsx'
+
+p = Axlsx::Package.new do |package|
+ package.workbook.add_worksheet do |sheet|
+ sheet.add_row ["First", "Second", "Third"], :style => Axlsx::STYLE_THIN_BORDER
+ sheet.add_row [1, 2, 3], :style => Axlsx::STYLE_THIN_BORDER
+ sheet.add_chart(Axlsx::Bar3DChart, :start_at => [0,2], :end_at => [5, 15], :title=>"example 1: Chart") do |chart|
+ chart.add_series :data=>sheet.rows.last.cells, :labels=> sheet.rows.first.cells
+ end
+ end
+ package.serialize("example1.xlsx")
+end
+
+
+wb =Axlsx::Workbook.new(:date1904=>true)
+p = Axlsx::Package.new(:workbook=>wb)
+
+styles = wb.styles
+
+header_style = styles.add_style(:bg_color=>"FF000000", :fg_color=>"FFFFFFFF", :sz=>14, :alignment=>{:horizontal=>:center})
+table_title = styles.add_style :sz=>22
+date_time = styles.add_style(:num_fmt=>Axlsx::NUM_FMT_YYYYMMDDHHMMSS)
+date = styles.add_style :num_fmt=>Axlsx::NUM_FMT_YYYYMMDD
+bordered = styles.add_style :border=>Axlsx::STYLE_THIN_BORDER
+
+wb.add_worksheet do |sheet|
+ sheet.name = "Example 1"
+ # add cells as a row
+ sheet.add_row ['Example 1 Styling and Bar Chart'], :style=>table_title
+ sheet.add_row ["Formatted Time Stamp", Time.now],:style=>[nil, date_time]
+ # adding cells one at a time
+ sheet.add_row do |row|
+ row.add_cell "Formatted Date"
+ row.add_cell Time.now, :style => date, :type=>:time
+ end
+
+ # Bar 3D Chart
+ sheet.add_row
+ label_row = sheet.add_row ["0 ~ 10", "11 ~ 20", "21 ~ 60"], :style=>header_style
+ data_row = sheet.add_row [12, 60, 25], :style=>bordered
+ sheet.add_chart(Axlsx::Bar3DChart, :show_legend=>false) do |chart|
+ chart.title = Axlsx::Title.new(sheet.rows.first.cells.first)
+ chart.add_series :data => data_row.cells, :labels => label_row.cells
+ chart.start_at.coord(0, 7)
+ chart.end_at.coord(3, 17)
+ end
+
+end
+
+# Blocks are not required
+percent = styles.add_style :num_fmt=>Axlsx::NUM_FMT_PERCENT, :border=>Axlsx::STYLE_THIN_BORDER
+wb.add_worksheet(:name=>"Example 2") do |sheet|
+ sheet.add_row ["Example 2 - Styling and Pie Chart"], :style=>table_title
+ label_row = sheet.add_row(["Summer", "Fall", "Winter", "Spring"], :style=>header_style)
+ data_row = sheet.add_row [0.5, 0.2, 0.2, 0.1], :style=>percent
+ chart = sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,4], :end_at => [4,14], :title => "Pie Consumption per Season") do |chart|
+ chart.add_series :data => data_row.cells, :labels=>label_row.cells
+ end
+end
+# Charts can be build with out data in the sheet
+wb.add_worksheet(:name=>"Example 3") do |ws|
+ ws.add_row ["Charts can be build without any data in the worksheet"]
+ ws.add_chart(Axlsx::Pie3DChart, :title=>"free chart 1") do |chart|
+ chart.start_at.coord(0,2)
+ chart.end_at.coord(3,12)
+ chart.add_series :data => [13,54,1], :labels=>["nothing","in","the sheet"]
+ end
+ ws.add_chart(Axlsx::Pie3DChart) do |chart|
+ chart.start_at.coord(0,13)
+ chart.end_at.coord(3,23)
+ chart.add_series :data => [1,4,5], :labels=>["nothing","in","the sheet"], :title=>"free chart 2"
+ end
+end
+
+# wb.add_worksheet(:name=>"Example 4") do |sheet|
+# sheet.add_row ["lots of data!"]
+# (1..100).each do |i|
+# cells = (1..50).map { |i| rand(5 ** 10) }
+# sheet.add_row cells
+# end
+# end
+
+errors = p.validate
+if errors.empty?
+ p.serialize('test.xlsx')
+else
+ puts errors.to_s
+end
+
diff --git a/assets/multi_chart.xlsx b/assets/multi_chart.xlsx
new file mode 100644
index 00000000..2390e68c
--- /dev/null
+++ b/assets/multi_chart.xlsx
Binary files differ
diff --git a/axlsx-1.0.0.gem b/axlsx-1.0.0.gem
new file mode 100644
index 00000000..cc6a3774
--- /dev/null
+++ b/axlsx-1.0.0.gem
Binary files differ
diff --git a/axlsx-1.0.1.a.gem b/axlsx-1.0.1.a.gem
new file mode 100644
index 00000000..5ab37e38
--- /dev/null
+++ b/axlsx-1.0.1.a.gem
Binary files differ
diff --git a/axlsx.gemspec b/axlsx.gemspec
new file mode 100644
index 00000000..84681a16
--- /dev/null
+++ b/axlsx.gemspec
@@ -0,0 +1,21 @@
+require File.expand_path(File.dirname(__FILE__) + '/lib/axlsx/util/constants.rb')
+Gem::Specification.new do |s|
+ s.name = 'axlsx'
+ s.version = Axlsx::VERSION
+ s.date = Time.now.strftime('%Y-%m-%d')
+ s.summary = "Author fully validated xlsx files with custom charts and styles"
+ s.platform = Gem::Platform::RUBY
+ s.description = <<-EOF
+ axslx allows you to easily and skillfully create Office Open XML Spreadsheet documents. It supports multiple worksheets, custom styles, cusomizable charts and allows you to validate your xlsx package before serialization.
+EOF
+ s.authors = ["Randy Morgan"]
+ s.email = '[email protected]'
+ s.files = Dir.glob("{docs,lib,test,schema}/**/*") + ['LICENSE', 'README.md', 'Rakefile']
+ s.has_rdoc = 'yard'
+ s.homepage = ""
+ s.add_runtime_dependency 'nokogiri', '~> 1'
+ s.add_runtime_dependency 'active_support', '~> 3'
+ s.add_runtime_dependency 'rmagick', '~> 2.12'
+ s.add_runtime_dependency 'rubyzip', '~> 0.9.4'
+
+end
diff --git a/example1.xlsx b/example1.xlsx
new file mode 100644
index 00000000..32a97979
--- /dev/null
+++ b/example1.xlsx
Binary files differ
diff --git a/lib/axlsx.rb b/lib/axlsx.rb
new file mode 100644
index 00000000..3a665740
--- /dev/null
+++ b/lib/axlsx.rb
@@ -0,0 +1,38 @@
+require 'axlsx/util/simple_typed_list.rb'
+require 'axlsx/util/constants.rb'
+require 'axlsx/util/validators.rb'
+require 'axlsx/stylesheet/styles.rb'
+
+require 'axlsx/doc_props/app.rb'
+require 'axlsx/doc_props/core.rb'
+require 'axlsx/content_type/content_type.rb'
+require 'axlsx/rels/relationships.rb'
+
+require 'axlsx/drawing/drawing.rb'
+require 'axlsx/workbook/workbook.rb'
+require 'axlsx/package.rb'
+
+
+module Axlsx
+
+ #required gems
+ require 'Nokogiri'
+ require 'active_support/core_ext/object/instance_variables'
+ require 'active_support/inflector'
+ require 'rmagick'
+ require 'zip/zip'
+
+ #core dependencies
+ require 'bigdecimal'
+ require 'time'
+ require 'CGI'
+
+ # determines the cell range for the items provided
+ def self.cell_range(items)
+ return "" unless items.first.is_a? Cell
+ "#{items.first.row.worksheet.name}!" +
+ "#{items.first.r_abs}:#{items.last.r_abs}"
+ end
+
+
+end
diff --git a/lib/axlsx/content_type/content_type.rb b/lib/axlsx/content_type/content_type.rb
new file mode 100644
index 00000000..ac75a0d4
--- /dev/null
+++ b/lib/axlsx/content_type/content_type.rb
@@ -0,0 +1,23 @@
+module Axlsx
+ require 'axlsx/content_type/default.rb'
+ require 'axlsx/content_type/override.rb'
+
+ # ContentTypes used in the package. This is automatcially managed by the package package.
+ class ContentType < SimpleTypedList
+
+ def initialize
+ super [Override, Default]
+ end
+
+ # Generates the xml document for [Content_Types].xml
+ # @return [String] The document as a string.
+ def to_xml()
+ builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
+ xml.Types(:xmlns => Axlsx::XML_NS_T) {
+ each { |type| type.to_xml(xml) }
+ }
+ end
+ builder.to_xml
+ end
+ end
+end
diff --git a/lib/axlsx/content_type/default.rb b/lib/axlsx/content_type/default.rb
new file mode 100644
index 00000000..c82e5f7d
--- /dev/null
+++ b/lib/axlsx/content_type/default.rb
@@ -0,0 +1,32 @@
+module Axlsx
+ # An default content part. These parts are automatically created by for you based on the content of your package.
+ class Default
+
+ # The extension of the content type.
+ # @return [String]
+ attr_accessor :Extension
+
+ # @return [String] ContentType The type of content. TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, DRAWING_CT are allowed
+ attr_accessor :ContentType
+
+ #Creates a new Default object
+ # @option options [String] Extension
+ # @option options [String] ContentType
+ # @raise [ArgumentError] An argument error is raised if both Extension and ContentType are not specified.
+ def initialize(options={})
+ raise ArgumentError, "Extension and ContentType are required" unless options[:Extension] && options[:ContentType]
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+ def Extension=(v) Axlsx::validate_string v; @Extension = v end
+ def ContentType=(v) Axlsx::validate_content_type v; @ContentType = v end
+
+ # Serializes the object to xml
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.Default(self.instance_values)
+ end
+ end
+end
diff --git a/lib/axlsx/content_type/override.rb b/lib/axlsx/content_type/override.rb
new file mode 100644
index 00000000..4d1b008f
--- /dev/null
+++ b/lib/axlsx/content_type/override.rb
@@ -0,0 +1,30 @@
+module Axlsx
+ # An override content part. These parts are automatically created by for you based on the content of your package.
+ class Override
+
+ # @return [String] ContentType The type of content. TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, DRAWING_CT are allowed
+ attr_accessor :ContentType
+
+ # @return [String] PartName The name and location of the part.
+ attr_accessor :PartName
+
+ #Creates a new Override object
+ # @option options [String] PartName
+ # @option options [String] ContentType
+ # @raise [ArgumentError] An argument error is raised if both PartName and ContentType are not specified.
+ def initialize(options={})
+ raise ArgumentError, "PartName and ContentType are required" unless options[:PartName] && options[:ContentType]
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+ def PartName=(v) Axlsx::validate_string v; @PartName = v end
+ def ContentType=(v) Axlsx::validate_content_type v; @ContentType = v end
+
+ # Serializes the Override object to xml
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ def to_xml(xml)
+ xml.Override(self.instance_values)
+ end
+ end
+end
diff --git a/lib/axlsx/doc_props/app.rb b/lib/axlsx/doc_props/app.rb
new file mode 100644
index 00000000..77e7ea42
--- /dev/null
+++ b/lib/axlsx/doc_props/app.rb
@@ -0,0 +1,148 @@
+# -*- coding: utf-8 -*-
+module Axlsx
+ # App represents the app.xml document. The attributes for this object are primarily managed by the application the end user uses to edit the document. None of the attributes are required to serialize a valid xlsx object.
+ # @see shared-documentPropertiesExtended.xsd
+ # @note Support is not implemented for the following complex types:
+ #
+ # HeadingPairs (VectorVariant),
+ # TitlesOfParts (VectorLpstr),
+ # HLinks (VectorVariant),
+ # DigSig (DigSigBlob)
+ class App
+
+ # @return [String] The name of the document template.
+ attr_accessor :Template
+
+ # @return [String] The name of the manager for the document.
+ attr_accessor :Manager
+
+ # @return [String] The name of the company generating the document.
+ attr_accessor :Company
+
+ # @return [Integer] The number of pages in the document.
+ attr_accessor :Pages
+
+ # @return [Integer] The number of words in the document.
+ attr_accessor :Words
+
+ # @return [Integer] The number of characters in the document.
+ attr_accessor :Characters
+
+ # @return [String] The intended format of the presentation.
+ attr_accessor :PresentationFormat
+
+ # @return [Integer] The number of lines in the document.
+ attr_accessor :Lines
+
+ # @return [Integer] The number of paragraphs in the document
+ attr_accessor :Paragraphs
+
+ # @return [Intger] The number of slides in the document.
+ attr_accessor :Slides
+
+ # @return [Integer] The number of slides that have notes.
+ attr_accessor :Notes
+
+ # @return [Integer] The total amount of time spent editing.
+ attr_accessor :TotalTime
+
+ # @return [Integer] The number of hidden slides.
+ attr_accessor :HiddenSlides
+
+ # @return [Integer] The total number multimedia clips
+ attr_accessor :MMClips
+
+ # @return [Boolean] The display mode for the document thumbnail.
+ attr_accessor :ScaleCrop
+
+ # @return [Boolean] The links in the document are up to date.
+ attr_accessor :LinksUpToDate
+
+ # @return [Integer] The number of characters in the document including spaces.
+ attr_accessor :CharactersWithSpaces
+
+ # @return [Boolean] Indicates if the document is shared.
+ attr_accessor :ShareDoc
+
+ # @return [String] The base for hyper links in the document.
+ attr_accessor :HyperLinkBase
+
+ # @return [Boolean] Indicates that the hyper links in the document have been changed.
+ attr_accessor :HyperlinksChanged
+
+ # @return [String] The name of the application
+ attr_accessor :Application
+
+ # @return [String] The version of the application.
+ attr_accessor :AppVersion
+
+ # @return [Integer] Document security
+ attr_accessor :DocSecurity
+
+ # Creates an App object
+ # @option options [String] Template
+ # @option options [String] Manager
+ # @option options [Integer] Pages
+ # @option options [Integer] Words
+ # @option options [Integer] Characters
+ # @option options [String] PresentationFormat
+ # @option options [Integer] Lines
+ # @option options [Integer] Paragraphs
+ # @option options [Integer] Slides
+ # @option options [Integer] Notes
+ # @option options [Integer] TotalTime
+ # @option options [Integer] HiddenSlides
+ # @option options [Integer] MMClips
+ # @option options [Boolean] ScaleCrop
+ # @option options [Boolean] LinksUpToDate
+ # @option options [Integer] CharactersWithSpaces
+ # @option options [Boolean] ShareDoc
+ # @option options [String] HyperLinkBase
+ # @option options [String] HyperlinksChanged
+ # @option options [String] Application
+ # @option options [String] AppVersion
+ # @option options [Integer] DocSecurity
+ def initalize(options={})
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? o[0]
+ end
+ end
+
+ def Template=(v) Axlsx::validate_string v; @Template = v; end
+ def Manager=(v) Axlsx::validate_string v; @Manager = v; end
+ def Company=(v) Axlsx::validate_string v; @Company = v; end
+ def Pages=(v) Axlsx::validate_int v; @Pages = v; end
+ def Words=(v) Axlsx::validate_int v; @Words = v; end
+ def Characters=(v) Axlsx::validate_int v; @Characters = v; end
+ def PresentationFormat=(v) Axlsx::validate_string v; @PresentationFormat = v; end
+ def Lines=(v) Axlsx::validate_int v; @Lines = v; end
+ def Paragraphs=(v) Axlsx::validate_int v; @Paragraphs = v; end
+ def Slides=(v) Axlsx::validate_int v; @Slides = v; end
+ def Notes=(v) Axlsx::validate_int v; @Notes = v; end
+ def TotalTime=(v) Axlsx::validate_int v; @TotalTime = v; end
+ def HiddenSlides=(v) Axlsx::validate_int v; @HiddenSlides = v; end
+ def MMClips=(v) Axlsx::validate_int v; @MMClips = v; end
+ def ScaleCrop=(v) Axlsx::validate_boolean v; @ScaleCrop = v; end
+ def LinksUpToDate=(v) Axlsx::validate_boolean v; @LinksUpToDate = v; end
+ def CharactersWithSpaces=(v) Axlsx::validate_int v; @CharactersWithSpaces = v; end
+ def ShareDoc=(v) Axlsx::validate_boolean v; @ShareDoc = v; end
+ def HyperLinkBase=(v) Axlsx::validate_string v; @HyperLinkBase = v; end
+ def HyperlinksChanged=(v) Axlsx::validate_boolean v; @HyperlinksChanged = v; end
+ def Application=(v) Axlsx::validate_string v; @Application = v; end
+ def AppVersion=(v) Axlsx::validate_string v; @AppVersion = v; end
+ def DocSecurity=(v) Axlsx::validate_int v; @DocSecurity = v; end
+
+ # Generate an app.xml document
+ # @return [String] The document as a string
+ def to_xml()
+ builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
+ xml.send(:Properties, :xmlns => APP_NS, :'xmlns:vt' => APP_NS_VT) {
+ self.instance_values.each do |name, value|
+ xml.send("ap:#{name}", value)
+ end
+ }
+ end
+ builder.to_xml
+ end
+ end
+end
diff --git a/lib/axlsx/doc_props/core.rb b/lib/axlsx/doc_props/core.rb
new file mode 100644
index 00000000..6743ba34
--- /dev/null
+++ b/lib/axlsx/doc_props/core.rb
@@ -0,0 +1,34 @@
+module Axlsx
+ # The core object for the package.
+ # @note Packages manage their own core object.
+ # @see Package#core
+ class Core
+ # The author of the document. By default this is 'axlsx'
+ # @return [String]
+ attr_accessor :creator
+
+ # Creates a new Core object.
+ # @option options [String] creator
+ def initialize(options={})
+ @creator = options[:creator] || 'axlsx'
+ end
+
+ # Serializes the core object. The created dcterms item is set to the current time when this method is called.
+ # @return [String]
+ def to_xml()
+ builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
+ xml.send('cp:coreProperties',
+ :"xmlns:cp" => CORE_NS,
+ :'xmlns:dc' => CORE_NS_DC,
+ :'xmlns:dcmitype'=>CORE_NS_DCMIT,
+ :'xmlns:dcterms'=>CORE_NS_DCT,
+ :'xmlns:xsi'=>CORE_NS_XSI) {
+ xml['dc'].creator self.creator
+ xml['dcterms'].created Time.now.strftime('%Y-%m-%dT%H:%M:%S'), :'xsi:type'=>"dcterms:W3CDTF"
+ xml['cp'].revision 0
+ }
+ end
+ builder.to_xml
+ end
+ end
+end
diff --git a/lib/axlsx/drawing/axis.rb b/lib/axlsx/drawing/axis.rb
new file mode 100644
index 00000000..facc2a67
--- /dev/null
+++ b/lib/axlsx/drawing/axis.rb
@@ -0,0 +1,78 @@
+module Axlsx
+ # the access class defines common properties and values for chart axis
+ class Axis
+
+
+ # the id of the axis
+ # @return [Integer]
+ attr_reader :axId
+
+ # The perpendicular axis
+ # @return [Integer]
+ attr_reader :crossAx
+
+ # The scaling of the axis
+ # @return [Scaling]
+ attr_reader :scaling
+
+ # The position of the axis
+ # must be one of [:l, :r, :t, :b]
+ # @return [Symbol]
+ attr_accessor :axPos
+
+ # the position of the tick labels
+ # must be one of [:nextTo, :high, :low]
+ # @return [Symbol]
+ attr_accessor :tickLblPos
+
+
+ # The number format format code for this axis
+ # @return [String]
+ attr_accessor :format_code
+
+ # specifies how the perpendicular axis is crossed
+ # must be one of [:autoZero, :min, :max]
+ # @return [Symbol]
+ attr_accessor :crosses
+
+ # Creates an Axis object
+ # @param [Integer] axId the id of this axis
+ # @param [Integer] crossAx the id of the perpendicular axis
+ # @option options [Symbol] axPos
+ # @option options [Symbol] crosses
+ # @option options [Symbol] tickLblPos
+ def initialize(axId, crossAx, options={})
+ Axlsx::validate_unsigned_int(axId)
+ Axlsx::validate_unsigned_int(crossAx)
+ @axId = axId
+ @crossAx = crossAx
+ self.axPos = :l
+ self.tickLblPos = :nextTo
+ @scaling = Scaling.new(:orientation=>:minMax)
+ @formatCode = ""
+ self.crosses = :autoZero
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ def axPos=(v) RestrictionValidator.validate "#{self.class}.axPos", [:l, :r, :b, :t], v; @axPos = v; end
+ def tickLblPos=(v) RestrictionValidator.validate "#{self.class}.tickLblPos", [:nextTo, :high, :low], v; @tickLblPos = v; end
+ def format_code=(v) Axlsx::validate_string(v); @formatCode = v; end
+ def crosses=(v) RestrictionValidator.validate "#{self.class}.crosses", [:autoZero, :min, :max], v; @crosses = v; end
+
+ # Serializes the common axis
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.send('c:axId', :val=>@axId)
+ @scaling.to_xml(xml)
+ xml.send('c:axPos', :val=>@axPos)
+ xml.send('c:majorGridlines')
+ xml.send('c:numFmt', :formatCode => @format_code, :sourceLinked=>"1")
+ xml.send('c:tickLblPos', :val=>@tickLblPos)
+ xml.send('c:crossAx', :val=>@crossAx)
+ xml.send('c:crosses', :val=>@crosses)
+ end
+ end
+end
diff --git a/lib/axlsx/drawing/bar_3D_chart.rb b/lib/axlsx/drawing/bar_3D_chart.rb
new file mode 100644
index 00000000..2bb7d88b
--- /dev/null
+++ b/lib/axlsx/drawing/bar_3D_chart.rb
@@ -0,0 +1,138 @@
+module Axlsx
+
+ # The Bar3DChart is a three dimentional barchart (who would have guessed?) that you can add to your worksheet.
+ # @example Creating a chart
+ # # This example creates two charts in a single sheet.
+ # # The first uses data directly fed to the sheet, while the second references cells withing the worksheet for data.
+ #
+ # require "rubygems" # if that is your preferred way to manage gems!
+ # require "axlsx"
+ #
+ # p = Axlsx::Package.new
+ # ws = p.workbook.add_worksheet
+ # ws.add_row :values => ["This is a chart with no data in the sheet"]
+ #
+ # chart = ws.add_chart(Axlsx::Bar3DChart, :start_at=> [0,1], :end_at=>[0,6], :title=>"Most Popular Pets")
+ # chart.add_series :data => [1, 9, 10], :labels => ["Slimy Reptiles", "Fuzzy Bunnies", "Rottweiler"]
+ #
+ # ws.add_row :values => ["This chart uses the data below"]
+ # title_row = ws.add_row :values => ["Least Popular Pets"]
+ # label_row = ws.add_row :values => ["", "Dry Skinned Reptiles", "Bald Cats", "Violent Parrots"]
+ # data_row = ws.add_row :values => ["Votes", 6, 4, 1]
+ #
+ # chart = ws.add_chart(Axlsx::Pie3DChart, :start_at => [0,11], :end_at =>[0,16], :title => title_row.cells.last)
+ # chart.add_series :data => data_row.cells[(1..-1)], :labels => label_row.cells
+ #
+ # f = File.open('example_pie_3d_chart.xlsx', 'w')
+ # p.serialize(f)
+ #
+ # @see Worksheet#add_chart
+ # @see Worksheet#add_row
+ # @see Chart#add_series
+ # @see Series
+ # @see Package#serialize
+ class Bar3DChart < Chart
+
+ # the category axis
+ # @return [CatAxis]
+ attr_reader :catAxis
+
+ # the category axis
+ # @return [ValAxis]
+ attr_reader :valAxis
+
+ # The direction of the bars in the chart
+ # must be one of [:bar, :col]
+ # @return [Symbol]
+ attr_accessor :barDir
+
+ # space between bar or column clusters, as a percentage of the bar or column width.
+ # @return [String]
+ attr_accessor :gapDepth
+
+ # space between bar or column clusters, as a percentage of the bar or column width.
+ # @return [String]
+ attr_accessor :gapWidth
+
+ #grouping for a column, line, or area chart.
+ # must be one of [:percentStacked, :clustered, :standard, :stacked]
+ # @return [Symbol]
+ attr_accessor :grouping
+
+ # The shabe of the bars or columns
+ # must be one of [:percentStacked, :clustered, :standard, :stacked]
+ # @return [Symbol]
+ attr_accessor :shape
+
+ # validation regex for gap amount percent
+ GAP_AMOUNT_PERCENT = /0*(([0-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)%/
+
+ # Creates a new bar chart object
+ # @param [GraphicFrame] frame The workbook that owns this chart.
+ # @option options [Cell, String] title
+ # @option options [Boolean] show_legend
+ # @option options [Symbol] barDir
+ # @option options [Symbol] grouping
+ # @option options [String] gapWidth
+ # @option options [String] gapDepth
+ # @option options [Symbol] shape
+ def initialize(frame, options={})
+ super(frame, options)
+ @series_type = BarSeries
+ @barDir = :bar
+ @grouping = :clustered
+ @catAxId = rand(8 ** 8)
+ @valAxId = rand(8 ** 8)
+ @catAxis = CatAxis.new(@catAxId, @valAxId)
+ @valAxis = ValAxis.new(@valAxId, @catAxId)
+ @view3D = View3D.new(:rAngAx=>1)
+ end
+
+ def barDir=(v)
+ RestrictionValidator.validate "Bar3DChart.barDir", [:bar, :col], v
+ @barDir = v
+ end
+
+
+ def grouping=(v)
+ RestrictionValidator.validate "Bar3DChart.grouping", [:percentStacked, :clustered, :standard, :stacked], v
+ @grouping = v
+ end
+
+ def gapWidth=(v)
+ RegexValidator.validate "Bar3DChart.gapWidth", GAP_AMOUNT_PERCENT, v
+ @gapWidth=(v)
+ end
+
+ def gapDepth=(v)
+ RegexValidator.validate "Bar3DChart.gapWidth", GAP_AMOUNT_PERCENT, v
+ @gapDepth=(v)
+ end
+
+ def shape=(v)
+ RestrictionValidator.validate "Bar3DChart.shape", [:cone, :coneToMax, :box, :cylinder, :pyramid, :pyramidToMax], v
+ @shape = v
+ end
+
+ # Serializes the bar chart
+ # @return [String]
+ def to_xml
+ super() do |xml|
+ xml.send('c:bar3DChart') {
+ xml.send('c:barDir', :val => barDir)
+ xml.send('c:grouping', :val=>grouping)
+ xml.send('c:varyColors', :val=>1)
+ @series.each { |ser| ser.to_xml(xml) }
+ xml.send('c:gapWidth', :val=>@gapWidth) unless @gapWidth.nil?
+ xml.send('c:gapDepth', :val=>@gapDepth) unless @gapDepth.nil?
+ xml.send('c:shape', :val=>@shape) unless @shape.nil?
+ xml.send('c:axId', :val=>@catAxId)
+ xml.send('c:axId', :val=>@valAxId)
+ xml.send('c:axId', :val=>0)
+ }
+ @catAxis.to_xml(xml)
+ @valAxis.to_xml(xml)
+ end
+ end
+ end
+end
diff --git a/lib/axlsx/drawing/bar_series.rb b/lib/axlsx/drawing/bar_series.rb
new file mode 100644
index 00000000..cc2bbf57
--- /dev/null
+++ b/lib/axlsx/drawing/bar_series.rb
@@ -0,0 +1,91 @@
+module Axlsx
+ # A BarSeries defines the title, data and labels for bar charts
+ # @note The recommended way to manage series is to use Chart#add_series
+ # @see Worksheet#add_chart
+ # @see Chart#add_series
+ class BarSeries < Series
+
+
+ # The data for this series.
+ # @return [Array, SimpleTypedList]
+ attr_reader :data
+
+ # The labels for this series.
+ # @return [Array, SimpleTypedList]
+ attr_reader :labels
+
+ # The shabe of the bars or columns
+ # must be one of [:percentStacked, :clustered, :standard, :stacked]
+ # @return [Symbol]
+ attr_accessor :shape
+
+ # Creates a new series
+ # @option options [Array, SimpleTypedList] data
+ # @option options [Array, SimpleTypedList] labels
+ # @option options [String] title
+ # @option options [String] shape
+ # @param [Chart] chart
+ def initialize(chart, options={})
+ @shape = :box
+ super(chart, options)
+ self.data = options[:data] || []
+ self.labels = options[:labels] || []
+ end
+
+ def shape=(v)
+ RestrictionValidator.validate "BarSeries.shape", [:cone, :coneToMax, :box, :cylinder, :pyramid, :pyramidToMax], v
+ @shape = v
+ end
+
+ # Serializes the series
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ super(xml) do |xml|
+ if !labels.empty?
+ xml.send('c:cat') {
+ xml.send('c:strRef') {
+ xml.send('c:f', Axlsx::cell_range(labels))
+ xml.send('c:strCache') {
+ xml.send('c:ptCount', :val=>labels.size)
+ labels.each_with_index do |cell, index|
+ v = cell.is_a?(Cell) ? cell.value : cell
+ xml.send('c:pt', :idx=>index) {
+ xml.send('c:v', v)
+ }
+ end
+ }
+ }
+ }
+ end
+ xml.send('c:val') {
+ xml.send('c:numRef') {
+ xml.send('c:f', Axlsx::cell_range(data))
+ xml.send('c:numCache') {
+ xml.send('c:formatCode', 'General')
+ xml.send('c:ptCount', :val=>data.size)
+ data.each_with_index do |cell, index|
+ v = cell.is_a?(Cell) ? cell.value : cell
+ xml.send('c:pt', :idx=>index) {
+ xml.send('c:v', v)
+ }
+ end
+ }
+ }
+ }
+ end
+ end
+
+
+ private
+
+
+ # assigns the data for this series
+ def data=(v) DataTypeValidator.validate "Series.data", [Array, SimpleTypedList], v; @data = v; end
+
+ # assigns the labels for this series
+ def labels=(v) DataTypeValidator.validate "Series.labels", [Array, SimpleTypedList], v; @labels = v; end
+
+ end
+
+end
diff --git a/lib/axlsx/drawing/cat_axis.rb b/lib/axlsx/drawing/cat_axis.rb
new file mode 100644
index 00000000..f2458ffc
--- /dev/null
+++ b/lib/axlsx/drawing/cat_axis.rb
@@ -0,0 +1,58 @@
+module Axlsx
+ #A CatAxis object defines a chart category axis
+ class CatAxis < Axis
+ # From the docs: This element specifies that this axis is a date or text axis based on the data that is used for the axis labels, not a specific choice.
+ # @return [Boolean]
+ attr_accessor :auto
+
+ # specifies how the perpendicular axis is crossed
+ # must be one of [:ctr, :l, :r]
+ # @return [Symbol]
+ attr_accessor :lblAlgn
+
+ # The offset of the labels
+ # must be between a string between 0 and 1000
+ # @return [Integer]
+ attr_accessor :lblOffset
+
+ # regex for validating label offset
+ LBL_OFFSET_REGEX = /0*(([0-9])|([1-9][0-9])|([1-9][0-9][0-9])|1000)%/
+
+ # Creates a new CatAxis object
+ # @param [Integer] axId the id of this axis
+ # @param [Integer] crossAx the id of the perpendicular axis
+ # @option options [Symbol] axPos
+ # @option options [Symbol] tickLblPos
+ # @option options [Symbol] crosses
+ # @option options [Boolean] auto
+ # @option options [Symbol] lblAlgn
+ # @option options [Integer] lblOffset
+ def initialize(axId, crossAx, options={})
+ super(axId, crossAx, options)
+ self.auto = true
+ self.lblAlgn = :ctr
+ self.lblOffset = "100%"
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ def auto=(v) Axlsx::validate_boolean(v); @auto = v; end
+ def lblAlgn=(v) RestrictionValidator.validate "#{self.class}.lblAlgn", [:ctr, :l, :r], v; @lblAlgn = v; end
+ def lblOffset=(v) RegexValidator.validate "#{self.class}.lblOffset", LBL_OFFSET_REGEX, v; @lblOffset = v; end
+
+ # Serializes the category axis
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.send('c:catAx') {
+ super(xml)
+ xml.send('c:auto', :val=>@auto)
+ xml.send('c:lblAlgn', :val=>@lblAlgn)
+ xml.send('c:lblOffset', :val=>@lblOffset)
+ }
+ end
+ end
+
+
+end
diff --git a/lib/axlsx/drawing/chart.rb b/lib/axlsx/drawing/chart.rb
new file mode 100644
index 00000000..764e90e4
--- /dev/null
+++ b/lib/axlsx/drawing/chart.rb
@@ -0,0 +1,120 @@
+module Axlsx
+ # A Chart is the superclass for specific charts
+ # @note Worksheet#add_chart is the recommended way to create charts for your worksheets.
+ class Chart
+
+ # The title object for the chart.
+ # @return [Title]
+ attr_accessor :title
+
+ # The 3D view properties for the chart
+ attr_accessor :view3D
+
+ # A reference to the graphic frame that owns this chart
+ # @return [GraphicFrame]
+ attr_reader :graphic_frame
+
+ # A collection of series objects that are applied to the chart
+ # @return [SimpleTypedList]
+ attr_reader :series
+
+ # The type of series to use for this chart
+ # @return [Series]
+ attr_reader :series_type
+
+ # The index of this chart in the workbooks charts collection
+ # @return [Integer]
+ attr_reader :index
+
+ # The part name for this chart
+ # @return [String]
+ attr_reader :pn
+
+ #TODO data labels!
+ #attr_accessor :dLabls
+
+ # The starting marker for this chart
+ # @return [Marker]
+ attr_reader :start_at
+
+ # The ending marker for this chart
+ # @return [Marker]
+ attr_reader :end_at
+
+ # Show the legend in the chart
+ # @return [Boolean]
+ attr_accessor :show_legend
+
+ # Creates a new chart object
+ # @param [GraphicalFrame] frame The frame that holds this chart.
+ # @option options [Cell, String] title
+ # @option options [Boolean] show_legend
+ def initialize(frame, options={})
+ @graphic_frame=frame
+ @graphic_frame.anchor.drawing.worksheet.workbook.charts << self
+ @series = SimpleTypedList.new Series
+ @show_legend = true
+ @series_type = Series
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ yield self if block_given?
+ end
+
+ def index
+ @graphic_frame.anchor.drawing.worksheet.workbook.charts.index(self)
+ end
+
+ def pn
+ "#{CHART_PN % (index+1)}"
+ end
+
+ def view3D=(v) DataTypeValidator.validate "#{self.class}.view3D", View3D, v; @view3D = v; end
+
+ def title=(v)
+ v = Title.new(v) if v.is_a?(String) || v.is_a?(Cell)
+ DataTypeValidator.validate "#{self.class}.title", Title, v
+ @title = v
+ end
+
+ def show_legend=(v) Axlsx::validate_boolean(v); @show_legend = v; end
+
+ # Adds a new series to the chart's series collection.
+ # @return [Series]
+ # @see Series
+ def add_series(options={})
+ @series_type.new(self, options)
+ @series.last
+ end
+
+ # Chart Serialization
+ # serializes the chart
+ def to_xml
+ builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
+ xml.send('c:chartSpace',:'xmlns:c' => XML_NS_C, :'xmlns:a' => XML_NS_A) {
+ xml.send('c:chart') {
+ @title.to_xml(xml) unless @title.nil?
+ @view3D.to_xml(xml) unless @view3D.nil?
+ xml.send('c:plotArea') {
+ xml.send('c:layout')
+ yield xml if block_given?
+ }
+ if @show_legend
+ xml.send('c:legend') {
+ xml.send('c:legendPos', :val => "r")
+ xml.send('c:layout')
+ }
+ end
+ }
+ }
+ end
+ builder.to_xml
+ end
+
+ private
+
+ def start_at=(v) DataTypeValidator.validate "#{self.class}.start_at", Marker, v; @start_at = v; end
+ def end_at=(v) DataTypeValidator.validate "#{self.class}.end_at", Marker, v; @end_at = v; end
+
+ end
+end
diff --git a/lib/axlsx/drawing/drawing.rb b/lib/axlsx/drawing/drawing.rb
new file mode 100644
index 00000000..69c0d9cc
--- /dev/null
+++ b/lib/axlsx/drawing/drawing.rb
@@ -0,0 +1,121 @@
+module Axlsx
+ require 'axlsx/drawing/series.rb'
+ require 'axlsx/drawing/pie_series.rb'
+ require 'axlsx/drawing/bar_series.rb'
+
+ require 'axlsx/drawing/axis.rb'
+ require 'axlsx/drawing/cat_axis.rb'
+ require 'axlsx/drawing/val_axis.rb'
+ require 'axlsx/drawing/view_3D.rb'
+ require 'axlsx/drawing/scaling.rb'
+ require 'axlsx/drawing/title.rb'
+
+ require 'axlsx/drawing/graphic_frame.rb'
+ require 'axlsx/drawing/marker.rb'
+ require 'axlsx/drawing/two_cell_anchor.rb'
+
+ require 'axlsx/drawing/chart.rb'
+ require 'axlsx/drawing/pie_3D_chart.rb'
+ require 'axlsx/drawing/bar_3D_chart.rb'
+
+ # A Drawing is a canvas for charts. Each worksheet has a single drawing that can specify multiple anchors which reference charts.
+ # @note The recommended way to manage drawings is to use the Worksheet.add_chart method, specifying the chart class, start and end marker locations.
+ # @see Worksheet#add_chart
+ # @see TwoCellAnchor
+ # @see Chart
+ class Drawing
+
+ # The worksheet that owns the drawing
+ # @return [Worksheet]
+ attr_reader :worksheet
+
+
+ # A collection of anchors for this drawing
+ # @return [SimpleTypedList]
+ attr_reader :anchors
+
+ # An array of charts that are associated with this drawing's anchors
+ # @return [Array]
+ attr_reader :charts
+
+ # The index of this drawing in the owning workbooks's drawings collection.
+ # @return [Integer]
+ attr_reader :index
+
+ # The relation reference id for this drawing
+ # @return [String]
+ attr_reader :rId
+
+ # The part name for this drawing
+ # @return [String]
+ attr_reader :pn
+
+ # The relational part name for this drawing
+ # @return [String]
+ attr_reader :rels_pn
+
+ # The drawing's relationships.
+ # @return [Relationships]
+ attr_reader :relationships
+
+ # Creates a new Drawing object
+ # @param [Worksheet] worksheet The worksheet that owns this drawing
+ def initialize(worksheet)
+ DataTypeValidator.validate "Drawing.worksheet", Worksheet, worksheet
+ @worksheet = worksheet
+ @worksheet.workbook.drawings << self
+ @anchors = SimpleTypedList.new TwoCellAnchor
+ end
+
+
+ # Adds a chart to the drawing.
+ # @note The recommended way to manage charts is to use Worksheet.add_chart.
+ # @param [Chart] chart_type The class of the chart to be added to the drawing
+ # @param [Hash] options
+ def add_chart(chart_type, options={})
+ DataTypeValidator.validate "Drawing.chart_type", Chart, chart_type
+ TwoCellAnchor.new(self, chart_type, options)
+ @anchors.last.graphic_frame.chart
+ end
+
+ def charts
+ @anchors.map { |a| a.graphic_frame.chart }
+ end
+
+ def index
+ @worksheet.workbook.drawings.index(self)
+ end
+
+ def rId
+ "rId#{index+1}"
+ end
+
+ def pn
+ "#{DRAWING_PN % (index+1)}"
+ end
+
+ def rels_pn
+ "#{DRAWING_RELS_PN % (index+1)}"
+ end
+
+ def relationships
+ r = Relationships.new
+ @anchors.each do |anchor|
+ chart = anchor.graphic_frame.chart
+ r << Relationship.new(CHART_R, "../#{chart.pn}")
+ end
+ r
+ end
+
+ # Serializes the drawing
+ # @return [String]
+ def to_xml
+ builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
+ xml.send('xdr:wsDr', :'xmlns:xdr'=>XML_NS_XDR, :'xmlns:a'=>XML_NS_A) {
+ anchors.each {|anchor| anchor.to_xml(xml) }
+ }
+ end
+ builder.to_xml
+ end
+ end
+end
diff --git a/lib/axlsx/drawing/graphic_frame.rb b/lib/axlsx/drawing/graphic_frame.rb
new file mode 100644
index 00000000..3fe71976
--- /dev/null
+++ b/lib/axlsx/drawing/graphic_frame.rb
@@ -0,0 +1,55 @@
+module Axlsx
+ # A graphic frame defines a container for a chart object
+ # @note The recommended way to manage charts is Worksheet#add_chart
+ # @see Worksheet#add_chart
+ class GraphicFrame
+
+ #TODO add in support for other graphical objects, primarily images.
+
+ # A reference to the chart object associated with this frame
+ # @return [Chart]
+ attr_reader :chart
+
+ # A anchor that holds this frame
+ # @return [TwoCellAnchor]
+ attr_reader :anchor
+
+ # The relationship id for this graphic
+ # @return [String]
+ attr_reader :rId
+
+ # Creates a new GraphicFrame object
+ # @param [TwoCellAnchor] anchor
+ # @param [Class] chart_type
+ def initialize(anchor, chart_type, options)
+ @anchor = anchor
+ @chart = chart_type.new(self, options)
+ end
+
+ def rId
+ "rId#{@anchor.index+1}"
+ end
+
+ # Serializes the graphic frame
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.send('xdr:graphicFrame') {
+ xml.send('xdr:nvGraphicFramePr') {
+ xml.send('xdr:cNvPr', :id=>2, :name=>chart.title)
+ xml.send('xdr:cNvGraphicFramePr')
+ }
+ xml.send('xdr:xfrm') {
+ xml.send('a:off', :x=>0, :y=>0)
+ xml.send('a:ext', :cx=>0, :cy=>0)
+ }
+ xml.send('a:graphic') {
+ xml.send('a:graphicData', :uri=>XML_NS_C) {
+ xml.send('c:chart', :'xmlns:c'=>XML_NS_C, :'xmlns:r'=>XML_NS_R, :'r:id'=>rId)
+ }
+ }
+ }
+
+ end
+ end
+end
diff --git a/lib/axlsx/drawing/marker.rb b/lib/axlsx/drawing/marker.rb
new file mode 100644
index 00000000..019c14d9
--- /dev/null
+++ b/lib/axlsx/drawing/marker.rb
@@ -0,0 +1,57 @@
+module Axlsx
+ # The Marker class defines a point in the worksheet that drawing anchors attach to.
+ # @note The recommended way to manage markers is Worksheet#add_chart Markers are created for a two cell anchor based on the :start and :end options.
+ # @see Worksheet#add_chart
+ class Marker
+
+ # The column this marker anchors to
+ # @return [Integer]
+ attr_accessor :col
+
+ # The offset distance from this marker's column
+ # @return [Integer]
+ attr_accessor :colOff
+
+ # The row this marker anchors to
+ # @return [Integer]
+ attr_accessor :row
+
+ # The offset distance from this marker's row
+ # @return [Integer]
+ attr_accessor :rowOff
+
+ # Creates a new Marker object
+ # @option options [Integer] col
+ # @option options [Integer] colOff
+ # @option options [Integer] row
+ # @option options [Integer] rowOff
+ def initialize(options={})
+ @col, @colOff, @row, @rowOff = 0, 0, 0, 0
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? o[0]
+ end
+ end
+
+ def col=(v) Axlsx::validate_unsigned_int v; @col = v end
+ def colOff=(v) Axlsx::validate_int v; @colOff = v end
+ def row=(v) Axlsx::validate_unsigned_int v; @row = v end
+ def rowOff=(v) Axlsx::validate_int v; @rowOff = v end
+
+ # shortcut to set the column, row position for this marker
+ # @param col the column for the marker
+ # @param row the row of the marker
+ def coord(col, row)
+ self.col = col
+ self.row = row
+ end
+ # Serializes the marker
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ [:col, :colOff, :row, :rowOff].each do |k|
+ xml.send("xdr:#{k.to_s}", self.send(k))
+ end
+ end
+ end
+
+end
diff --git a/lib/axlsx/drawing/pie_3D_chart.rb b/lib/axlsx/drawing/pie_3D_chart.rb
new file mode 100644
index 00000000..b6b4ff1b
--- /dev/null
+++ b/lib/axlsx/drawing/pie_3D_chart.rb
@@ -0,0 +1,59 @@
+module Axlsx
+
+
+ # The Pie3DChart is a three dimentional piechart (who would have guessed?) that you can add to your worksheet.
+ # @example Creating a chart
+ # # This example creates two charts in a single sheet.
+ # # The first uses data directly fed to the sheet, while the second references cells withing the worksheet for data.
+ #
+ # require "rubygems" # if that is your preferred way to manage gems!
+ # require "axlsx"
+ #
+ # p = Axlsx::Package.new
+ # ws = p.workbook.add_worksheet
+ # ws.add_row :values => ["This is a chart with no data in the sheet"]
+ #
+ # chart = ws.add_chart(Axlsx::Pie3DChart, :start_at=> [0,1], :end_at=>[0,6], :title=>"Most Popular Pets")
+ # chart.add_series :data => [1, 9, 10], :labels => ["Slimy Reptiles", "Fuzzy Bunnies", "Rottweiler"]
+ #
+ # ws.add_row :values => ["This chart uses the data below"]
+ # title_row = ws.add_row :values => ["Least Popular Pets"]
+ # label_row = ws.add_row :values => ["", "Dry Skinned Reptiles", "Bald Cats", "Violent Parrots"]
+ # data_row = ws.add_row :values => ["Votes", 6, 4, 1]
+ #
+ # chart = ws.add_chart(Axlsx::Pie3DChart, :start_at => [0,11], :end_at =>[0,16], :title => title_row.cells.last)
+ # chart.add_series :data => data_row.cells[(1..-1)], :labels => label_row.cells
+ #
+ # f = File.open('example_pie_3d_chart.xlsx', 'w')
+ # p.serialize(f)
+ #
+ # @see Worksheet#add_chart
+ # @see Worksheet#add_row
+ # @see Chart#add_series
+ # @see Series
+ # @see Package#serialize
+ class Pie3DChart < Chart
+
+
+ # Creates a new pie chart object
+ # @param [Workbook] workbook The workbook that owns this chart.
+ # @option options [Cell, String] title
+ def initialize(workbook, options={})
+ super(workbook, options)
+ # this charts series type
+ @series_type = PieSeries
+ @view3D = View3D.new(:rotX => 30, :perspective => 30)
+ end
+
+ # Serializes the pie chart
+ # @return [String]
+ def to_xml
+ super() do |xml|
+ xml.send('c:pie3DChart') {
+ xml.send('c:varyColors', :val=>1)
+ @series.each { |ser| ser.to_xml(xml) }
+ }
+ end
+ end
+ end
+end
diff --git a/lib/axlsx/drawing/pie_series.rb b/lib/axlsx/drawing/pie_series.rb
new file mode 100644
index 00000000..98b61728
--- /dev/null
+++ b/lib/axlsx/drawing/pie_series.rb
@@ -0,0 +1,88 @@
+module Axlsx
+ # A PieSeries defines the title, data and labels for pie charts
+ # @note The recommended way to manage series is to use Chart#add_series
+ # @see Worksheet#add_chart
+ # @see Chart#add_series
+ class PieSeries < Series
+
+ # The data for this series.
+ # @return [Array, SimpleTypedList]
+ attr_reader :data
+
+
+ # The labels for this series.
+ # @return [Array, SimpleTypedList]
+ attr_reader :labels
+
+
+ # The explosion for this series
+ # @return [Array, SimpleTypedList]
+ attr_accessor :explosion
+
+ # Creates a new series
+ # @option options [Array, SimpleTypedList] data
+ # @option options [Array, SimpleTypedList] labels
+ # @option options [String] title
+ # @option options [Integer] explosion
+ # @param [Chart] chart
+ def initialize(chart, options={})
+ super(chart, options)
+ self.data = options[:data] || []
+ self.labels = options[:labels] || []
+ end
+
+ def explosion=(v) Axlsx::validate_unsigned_int(v); @explosion = v; end
+ # Serializes the series
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ super(xml) do |xml|
+ xml.send('c:explosion', :val=>@explosion) unless @explosion.nil?
+ if !labels.empty?
+ xml.send('c:cat') {
+ xml.send('c:strRef') {
+ xml.send('c:f', Axlsx::cell_range(labels))
+ xml.send('c:strCache') {
+ xml.send('c:ptCount', :val=>labels.size)
+ labels.each_with_index do |cell, index|
+ v = cell.is_a?(Cell) ? cell.value : cell
+ xml.send('c:pt', :idx=>index) {
+ xml.send('c:v', v)
+ }
+ end
+ }
+ }
+ }
+ end
+ xml.send('c:val') {
+ xml.send('c:numRef') {
+ xml.send('c:f', Axlsx::cell_range(data))
+ xml.send('c:numCache') {
+ xml.send('c:formatCode', 'General')
+ xml.send('c:ptCount', :val=>data.size)
+ data.each_with_index do |cell, index|
+ v = cell.is_a?(Cell) ? cell.value : cell
+ xml.send('c:pt', :idx=>index) {
+ xml.send('c:v', v)
+ }
+ end
+ }
+ }
+ }
+
+ end
+ end
+
+
+ private
+
+
+ # assigns the data for this series
+ def data=(v) DataTypeValidator.validate "Series.data", [Array, SimpleTypedList], v; @data = v; end
+
+ # assigns the labels for this series
+ def labels=(v) DataTypeValidator.validate "Series.labels", [Array, SimpleTypedList], v; @labels = v; end
+
+ end
+
+end
diff --git a/lib/axlsx/drawing/scaling.rb b/lib/axlsx/drawing/scaling.rb
new file mode 100644
index 00000000..c0665463
--- /dev/null
+++ b/lib/axlsx/drawing/scaling.rb
@@ -0,0 +1,53 @@
+module Axlsx
+ # The Scaling class defines axis scaling
+ class Scaling
+
+ # logarithmic base for a logarithmic axis.
+ # must be between 2 and 1000
+ # @return [Integer]
+ attr_accessor :logBase
+
+ # the orientation of the axis
+ # must be one of [:minMax, :maxMin]
+ # @return [Symbol]
+ attr_accessor :orientation
+
+ # the maximum scaling
+ # @return [Float]
+ attr_accessor :max
+
+ # the minimu scaling
+ # @return [Float]
+ attr_accessor :min
+
+ # creates a new Scaling object
+ # @option options [Integer, Fixnum] logBase
+ # @option options [Symbol] orientation
+ # @option options [Float] max
+ # @option options [Float] min
+ def initialize(options={})
+ @orientation = :minMax
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ def logBase=(v) DataTypeValidator.validate "Scaling.logBase", [Integer, Fixnum], v, lambda { |v| v >= 2 && v <= 1000}; @logBase = v; end
+ def orientation=(v) RestrictionValidator.validate "Scaling.orientation", [:minMax, :maxMin], v; @orientation = v; end
+ def max=(v) DataTypeValidator.validate "Scaling.max", Float, v; @max = v; end
+ def min=(v) DataTypeValidator.validate "Scaling.min", Float, v; @min = v; end
+
+ # Serializes the axId
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.send('c:scaling') {
+ xml.send('c:logBase', :val=> @logBase) unless @logBase.nil?
+ xml.send('c:orientation', :val=> @orientation) unless @orientation.nil?
+ xml.send('c:min', :val => @min) unless @min.nil?
+ xml.send('c:max', :val => @max) unless @max.nil?
+ }
+ end
+
+ end
+end
diff --git a/lib/axlsx/drawing/series.rb b/lib/axlsx/drawing/series.rb
new file mode 100644
index 00000000..ef446921
--- /dev/null
+++ b/lib/axlsx/drawing/series.rb
@@ -0,0 +1,70 @@
+module Axlsx
+ # A Series defines the title, data and labels for chart data.
+ # @note The recommended way to manage series is to use Chart#add_series
+ # @see Worksheet#add_chart
+ # @see Chart#add_series
+ class Series
+
+ # The chart that owns this series
+ # @return [Chart]
+ attr_reader :chart
+
+ # The index of this series in the chart's series.
+ # @return [Integer]
+ attr_reader :index
+
+ # The order of this series in the chart's series.
+ # @return [Integer]
+ attr_accessor :order
+
+ # The title of the series
+ # @return [String]
+ attr_accessor :title
+
+ # Creates a new series
+ # @param [Chart] chart
+ # @option options [Integer] order
+ # @option options [String] title
+ def initialize(chart, options={})
+ self.chart = chart
+ @chart.series << self
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ # retrieves the series index in the chart's series collection
+ def index
+ @chart.series.index(self)
+ end
+
+ def order=(v) Axlsx::validate_unsigned_int(v); @order = v; end
+
+ def order
+ @order || index
+ end
+
+ def title=(v) Axlsx::validate_string(v); @title = v; end
+
+ private
+
+ # assigns the chart for this series
+ def chart=(v) DataTypeValidator.validate "Series.chart", Chart, v; @chart = v; end
+
+ # Serializes the series
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.send('c:ser') {
+ xml.send('c:idx', :val=>index)
+ xml.send('c:order', :val=>order || index)
+ xml.send('c:tx') {
+ xml.send('c:v', self.title)
+ }
+ yield xml if block_given?
+ }
+ end
+
+ end
+
+end
diff --git a/lib/axlsx/drawing/title.rb b/lib/axlsx/drawing/title.rb
new file mode 100644
index 00000000..496f5f7b
--- /dev/null
+++ b/lib/axlsx/drawing/title.rb
@@ -0,0 +1,69 @@
+module Axlsx
+ # A Title stores information about the title of a chart
+ class Title
+
+ # The text to be shown. Setting this property directly with a string will remove the cell reference.
+ # @return [String]
+ attr_accessor :text
+
+ # The cell that holds the text for the title. Setting this property will automatically update the text attribute.
+ # @return [Cell]
+ attr_accessor :cell
+
+ # Creates a new Title object
+ # @param [String, Cell] title The cell or string to be used for the chart's title
+ def initialize(title="")
+ self.cell = title if title.is_a?(Cell)
+ self.text = title.to_s unless title.is_a?(Cell)
+ end
+
+ def text=(v)
+ DataTypeValidator.validate 'Title.text', String, v
+ @text = v
+ @cell = nil
+ v
+ end
+
+ def cell=(v)
+ DataTypeValidator.validate 'Title.text', Cell, v
+ @cell = v
+ @text = v.value.to_s
+ v
+ end
+
+ # Not implemented at this time.
+ #def tx=(v) DataTypeValidator.validate 'Title.tx', Tx, v; @tx=v; end
+ #def layout=(v) DataTypeValidator.validate 'Title.layout', Layout, v; @layout = v; end
+ #def overlay=(v) Axlsx::validate_boolean v; @overlay=v; end
+ #def spPr=(v) DataTypeValidator.validate 'Title.spPr', SpPr, v; @spPr = v; end
+
+ # Serializes the chart title
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.send('c:title') {
+ xml.send('c:tx') {
+ xml.send('c:strRef') {
+ xml.send('c:f', range)
+ xml.send('c:strCache') {
+ xml.send('c:ptCount', :val=>1)
+ xml.send('c:pt', :idx=>0) {
+ xml.send('c:v', @text)
+ }
+ }
+ }
+ }
+ }
+ end
+
+ private
+
+ # returns the excel style abslute reference for the title when title is a Cell object
+ # @return [String]
+ def range
+ return "" unless @data.is_a?(Cell)
+ "#{@data.row.worksheet.name}!#{data.row.r_abs}"
+ end
+
+ end
+end
diff --git a/lib/axlsx/drawing/two_cell_anchor.rb b/lib/axlsx/drawing/two_cell_anchor.rb
new file mode 100644
index 00000000..aa9c04aa
--- /dev/null
+++ b/lib/axlsx/drawing/two_cell_anchor.rb
@@ -0,0 +1,88 @@
+module Axlsx
+ # This class details the anchor points for drawings.
+ # @note The recommended way to manage drawings and charts is Worksheet#add_chart. Anchors are specified by the :start_at and :end_at options to that method.
+ # @see Worksheet#add_chart
+ class TwoCellAnchor
+
+ # A marker that defines the from cell anchor. The default from column and row are 0 and 0 respectively
+ # @return [Marker]
+ attr_reader :from
+ # A marker that returns the to cell anchor. The default to column and row are 5 and 10 respectively
+ # @return [Marker]
+ attr_reader :to
+
+ # The frame for your chart
+ # @return [GraphicFrame]
+ attr_reader :graphic_frame
+
+ # The drawing that holds this anchor
+ # @return [Drawing]
+ attr_reader :drawing
+
+ # The index of this anchor in the drawing
+ # @return [Integer]
+ attr_reader :index
+
+ # Creates a new TwoCellAnchor object
+ # @param [Drawing] drawing
+ # @param [Chart] chart
+ # @option options [Array] start_at
+ # @option options [Array] end_at
+ def initialize(drawing, chart_type, options)
+ @drawing = drawing
+ drawing.anchors << self
+
+ @from, @to = Marker.new, Marker.new(:col => 5, :row=>10)
+ @graphic_frame = GraphicFrame.new(self, chart_type, options)
+
+ self.start_at(options[:start_at][0], options[:start_at][1]) if options[:start_at].is_a?(Array)
+ self.end_at(options[:end_at][0], options[:end_at][1]) if options[:end_at].is_a?(Array)
+ # passing a reference to our start and end markers for convenience
+ # this lets us access the markers directly from the chart.
+ @graphic_frame.chart.send(:start_at=, @from)
+ @graphic_frame.chart.send(:end_at=, @to)
+ end
+
+ def index
+ @drawing.anchors.index(self)
+ end
+
+
+ # This is a short cut method to set the start anchor position
+ # @param [Integer] x The column
+ # @param [Integer] y The row
+ # @return [Marker]
+ def start_at(x, y)
+ @from.col = x
+ @from.row = y
+ @from
+ end
+
+ # This is a short cut method to set the end anchor position
+ # @param [Integer] x The column
+ # @param [Integer] y The row
+ # @return [Marker]
+ def end_at(x, y)
+ @to.col = x
+ @to.row = y
+ @to
+ end
+
+ # Serializes the two cell anchor
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ #build it for now, break it down later!
+ xml.send('xdr:twoCellAnchor') {
+ xml.send('xdr:from') {
+ from.to_xml(xml)
+ }
+ xml.send('xdr:to') {
+ to.to_xml(xml)
+ }
+ @graphic_frame.to_xml(xml)
+ xml.send('xdr:clientData')
+ }
+ end
+ end
+end
diff --git a/lib/axlsx/drawing/val_axis.rb b/lib/axlsx/drawing/val_axis.rb
new file mode 100644
index 00000000..fae6adec
--- /dev/null
+++ b/lib/axlsx/drawing/val_axis.rb
@@ -0,0 +1,34 @@
+module Axlsx
+ # the ValAxis class defines a chart value axis.
+ class ValAxis < Axis
+
+ # This element specifies whether the value axis crosses the category axis between categories.
+ # must be one of [:between, :midCat]
+ # @return [Symbol]
+ attr_accessor :crossBetween
+
+ # Creates a new ValAxis object
+ # @param [Integer] axId the id of this axis
+ # @param [Integer] crossAx the id of the perpendicular axis
+ # @option options [Symbol] axPos
+ # @option options [Symbol] crosses
+ # @option options [Symbol] tickLblPos
+ # @option options [Symbol] crossesBetween
+ def initialize(axId, crossAx, options={})
+ @crossBetween = :between
+ super(axId, crossAx, options)
+ end
+
+ def crossBetween=(v) RestrictionValidator.validate "ValAxis.crossBetween", [:between, :midCat], v; @crossBetween = v; end
+
+ # Serializes the value axis
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.send('c:valAx') {
+ super(xml)
+ xml.send('c:crossBetween', :val=>@crossBetween)
+ }
+ end
+ end
+end
diff --git a/lib/axlsx/drawing/view_3D.rb b/lib/axlsx/drawing/view_3D.rb
new file mode 100644
index 00000000..36a869cf
--- /dev/null
+++ b/lib/axlsx/drawing/view_3D.rb
@@ -0,0 +1,72 @@
+module Axlsx
+ # 3D attributes for a chart.
+ class View3D
+ # x rotation for the chart
+ # must be between -90 and 90
+ # @return [Integer]
+ attr_accessor :rotX
+
+ # height of chart as % of chart
+ # must be between 5% and 500%
+ # @return [String]
+ attr_accessor :hPercent
+
+ # y rotation for the chart
+ # must be between 0 and 360
+ # @return [Integer]
+ attr_accessor :rotY
+
+ # depth or chart as % of chart width
+ # must be between 20% and 2000%
+ # @return [String]
+ attr_accessor :depthPercent
+
+ # Chart axis are at right angles
+ # @return [Boolean]
+ attr_accessor :rAngAx
+
+ # field of view angle
+ # @return [Integer]
+ attr_accessor :perspective
+
+ # Creates a new View3D for charts
+ # @option options [Integer] rotX
+ # @option options [String] hPercent
+ # @option options [Integer] rotY
+ # @option options [String] depthPercent
+ # @option options [Boolean] rAngAx
+ # @option options [Integer] perspective
+ def initialize(options={})
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ # Validation for hPercent
+ H_PERCENT_REGEX = /0*(([5-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)%/
+
+ # validation for depthPercent
+ DEPTH_PERCENT_REGEX = /0*(([2-9][0-9])|([1-9][0-9][0-9])|(1[0-9][0-9][0-9])|2000)%/
+
+ def rotX=(v) DataTypeValidator.validate "#{self.class}.rotX", [Integer, Fixnum], v, lambda {|v| v >= -90 && v <= 90 }; @rotX = v; end
+ def hPercent=(v) RegexValidator.validate "#{self.class}.rotX", H_PERCENT_REGEX, v; @hPercent = v; end
+ def rotY=(v) DataTypeValidator.validate "#{self.class}.rotY", [Integer, Fixnum], v, lambda {|v| v >= 0 && v <= 360 }; @rotY = v; end
+ def depthPercent=(v) RegexValidator.validate "#{self.class}.depthPercent", DEPTH_PERCENT_REGEX, v; @depthPercent = v; end
+ def rAngAx=(v) Axlsx::validate_boolean(v); @rAngAx = v; end
+ def perspective=(v) DataTypeValidator.validate "#{self.class}.perspective", [Integer, Fixnum], v, lambda {|v| v >= 0 && v <= 240 }; @perspective = v; end
+
+ # Serializes the view3D properties
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.send('c:view3D') {
+ xml.send('c:rotX', :val=>@rotX) unless @rotX.nil?
+ xml.send('c:hPercent', :val=>@hPercent) unless @hPercent.nil?
+ xml.send('c:rotY', :val=>@rotY) unless @rotY.nil?
+ xml.send('c:depthPercent', :val=>@depthPercent) unless @depthPercent.nil?
+ xml.send('c:rAngAx', :val=>@rAngAx) unless @rAngAx.nil?
+ xml.send('c:perspective', :val=>@perspective) unless @perspective.nil?
+ }
+ end
+ end
+end
diff --git a/lib/axlsx/package.rb b/lib/axlsx/package.rb
new file mode 100644
index 00000000..25656d04
--- /dev/null
+++ b/lib/axlsx/package.rb
@@ -0,0 +1,181 @@
+# -*- coding: utf-8 -*-
+# Create Office Open XML Spreadsheets (xlsx) with safe and full control over cell styles, automatically resized column widths and 3D pie charts.
+module Axlsx
+ # Package is responsible for managing all the bits and peices that Open Office XML requires to make a valid
+ # xlsx document including valdation and serialization.
+ class Package
+
+ # The workbook this package will serialize or validate.
+ # @attribute
+ # @return [Workbook] If no workbook instance has been assigned with this package a new Workbook instance is returned.
+ # @raise ArgumentError if workbook parameter is not a Workbook instance.
+ # @note As there are multiple ways to instantiate a workbook for the package,
+ # here are a few examples:
+ # # assign directly during package instanciation
+ # wb = Package.new(:workbook => Workbook.new).workbook
+ #
+ # # get a fresh workbook automatically from the package
+ # wb = Pacakge.new().workbook
+ # # # set the workbook after creating the package
+ # wb = Package.new().workbook = Workbook.new
+ attr_accessor :workbook
+
+ # Initializes your package
+ #
+ # @param [Hash] options A hash that you can use to specify the author and workbook for this package.
+ # @option options [String] :author The author of the document
+ # @example Package.new :author => 'you!', :workbook => Workbook.new
+ def initialize(options={})
+ @core, @app = Core.new, App.new
+ @core.creator = options[:author] || @core.creator
+ yield self if block_given?
+ end
+
+ def workbook=(workbook) DataTypeValidator.validate "Package.workbook", Workbook, workbook; @workbook = workbook; end
+
+ def workbook
+ @workbook || @workbook = Workbook.new
+ end
+
+ # Serialize your workbook to disk as an xlsx document.
+ #
+ # @param [File] output The file you want to serialize your package to
+ # @param [Boolean] confirm_valid Validate the package prior to serialization.
+ # @return [Boolean] False if confirm_valid and validation errors exist. True if the package was serialized
+ # @note A tremendous amount of effort has gone into ensuring that you cannot create invalid xlsx documents.
+ # confirm_valid should be used in the rare case that you cannot open the serialized file.
+ # @see Package#validate
+ # @example
+ # # This is how easy it is to create a valid xlsx file. Of course you might want to add a sheet or two, and maybe some data, styles and charts.
+ # # Take a look at the README for an example of how to do it!
+ # f = File.open('test.xlsx', 'w')
+ # Package.new.serialize(f)
+ #
+ # # You will find a file called test.xlsx
+ def serialize(output, confirm_valid=false)
+ return false unless !confirm_valid || self.validate.empty?
+ f = File.new(output, "w")
+ Zip::ZipOutputStream.open(f.path) do |zip|
+ parts.each{ |part| zip.put_next_entry(part[:entry]); zip.puts(part[:doc]) }
+ end
+ true
+ end
+
+ # Validate all parts of the package against xsd schema.
+ # @return [Array] An array of all validation errors found.
+ # @note This gem includes all schema from OfficeOpenXML-XMLSchema-Transitional.zip and OpenPackagingConventions-XMLSchema.zip
+ # as per ECMA-376, Third edition. opc schema require an internet connection to import remote schema from dublin core for dc,
+ # dcterms and xml namespaces. Those remote schema are included in this gem, and the original files have been altered to
+ # refer to the local versions.
+ #
+ # If by chance you are able to creat a package that does not validate it indicates that the internal
+ # validation is not robust enough and needs to be improved. Please report your errors to the gem author.
+ # @see http://www.ecma-international.org/publications/standards/Ecma-376.htm
+ # @example
+ # # The following will output any error messages found in serialization.
+ # p = Axlsx::Package.new
+ # # ... code to create sheets, charts, styles etc.
+ # p.validate.each { |error| puts error.message }
+ def validate
+ errors = []
+ parts.each { |part| errors.concat validate_single_doc(part[:schema], part[:doc]) }
+ errors
+ end
+
+ private
+
+ # The parts of a package
+ # @return [Array] An array of hashes that define the entry, document and schema for each part of the package.
+ # @private
+ def parts
+ @parts = [
+ {:entry => RELS_PN, :doc => relationships.to_xml, :schema => RELS_XSD},
+ {:entry => CORE_PN, :doc => @core.to_xml, :schema => CORE_XSD},
+ {:entry => APP_PN, :doc => @app.to_xml, :schema => APP_XSD},
+ {:entry => WORKBOOK_RELS_PN, :doc => workbook.relationships.to_xml, :schema => RELS_XSD},
+ {:entry => WORKBOOK_PN, :doc => workbook.to_xml, :schema => SML_XSD},
+ {:entry => CONTENT_TYPES_PN, :doc => content_types.to_xml, :schema => CONTENT_TYPES_XSD},
+ {:entry => "xl/#{STYLES_PN}", :doc => workbook.styles.to_xml, :schema => SML_XSD}
+ ]
+ workbook.drawings.each do |drawing|
+ @parts << {:entry => "xl/#{drawing.rels_pn}", :doc => drawing.relationships.to_xml, :schema => RELS_XSD}
+ @parts << {:entry => "xl/#{drawing.pn}", :doc => drawing.to_xml, :schema => DRAWING_XSD}
+ end
+
+ workbook.charts.each do |chart|
+ @parts << {:entry => "xl/#{chart.pn}", :doc => chart.to_xml, :schema => DRAWING_XSD}
+ end
+
+ workbook.worksheets.each do |sheet|
+ @parts << {:entry => "xl/#{sheet.rels_pn}", :doc => sheet.relationships.to_xml, :schema => RELS_XSD}
+ @parts << {:entry => "xl/#{sheet.pn}", :doc => sheet.to_xml, :schema => SML_XSD}
+ end
+ @parts
+ end
+
+ # Performs xsd validation for a signle document
+ #
+ # @param [String] schema path to the xsd schema to be used in validation.
+ # @param [String] doc The xml text to be validated
+ # @return [Array] An array of all validation errors encountered.
+ # @private
+ def validate_single_doc(schema, doc)
+ schema = Nokogiri::XML::Schema(File.open(schema))
+ doc = Nokogiri::XML(doc)
+
+ errors = []
+ schema.validate(doc).each do |error|
+ errors << error
+ end
+ errors
+ end
+
+ # Appends override objects for drawings, charts, and sheets as they exist in your workbook to the default content types.
+ # @return [ContentType]
+ # @private
+ def content_types
+ c_types = base_content_types
+ workbook.drawings.each do |drawing|
+ c_types << Axlsx::Override.new(:PartName => "/xl/#{drawing.pn}",
+ :ContentType => DRAWING_CT)
+ end
+ workbook.charts.each do |chart|
+ c_types << Axlsx::Override.new(:PartName => "/xl/#{chart.pn}",
+ :ContentType => CHART_CT)
+ end
+ workbook.worksheets.each do |sheet|
+ c_types << Axlsx::Override.new(:PartName => "/xl/#{sheet.pn}",
+ :ContentType => WORKSHEET_CT)
+ end
+ c_types
+ end
+
+ # Creates the minimum content types for generating a valid xlsx document.
+ # @return [ContentType]
+ # @private
+ def base_content_types
+ c_types = ContentType.new()
+ c_types << Default.new(:ContentType => RELS_CT, :Extension => RELS_EX)
+ c_types << Default.new(:Extension => XML_EX, :ContentType => XML_CT)
+ c_types << Override.new(:PartName => "/#{APP_PN}", :ContentType => APP_CT)
+ c_types << Override.new(:PartName => "/#{CORE_PN}", :ContentType => CORE_CT)
+ c_types << Override.new(:PartName => "/xl/#{STYLES_PN}", :ContentType => STYLES_CT)
+ c_types << Axlsx::Override.new(:PartName => "/#{WORKBOOK_PN}", :ContentType => WORKBOOK_CT)
+ c_types.lock
+ c_types
+ end
+
+ # Creates the relationships required for a valid xlsx document
+ # @return [Relationships]
+ # @private
+ def relationships
+ rels = Axlsx::Relationships.new
+ rels << Relationship.new(WORKBOOK_R, WORKBOOK_PN)
+ rels << Relationship.new(CORE_R, CORE_PN)
+ rels << Relationship.new(APP_R, APP_PN)
+ rels.lock
+ rels
+ end
+ end
+end
+
diff --git a/lib/axlsx/rels/relationship.rb b/lib/axlsx/rels/relationship.rb
new file mode 100644
index 00000000..57b9afc0
--- /dev/null
+++ b/lib/axlsx/rels/relationship.rb
@@ -0,0 +1,43 @@
+module Axlsx
+ # A relationship defines a reference between package parts.
+ # @note Packages automatcially manage relationships.
+ class Relationship
+
+ # The location of the relationship target
+ # @return [String]
+ attr_accessor :Target
+
+ # The type of relationship
+ # @note Supported types are defined as constants in Axlsx:
+ # @see XML_NS_R
+ # @see TABLE_R
+ # @see WORKBOOK_R
+ # @see WORKSHEET_R
+ # @see APP_R
+ # @see RELS_R
+ # @see CORE_R
+ # @see STYLES_R
+ # @see CHART_R
+ # @see DRAWING_R
+ # @return [String]
+ attr_accessor :Type
+ def initialize(type, target)
+ self.Target=target
+ self.Type=type
+ end
+
+ def Target=(v) Axlsx::validate_string v; @Target = v end
+ def Type=(v) Axlsx::validate_relationship_type v; @Type = v end
+
+ # Serializes the relationship
+ # TODO: use object.rId to get this infomation
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @param [String] rId the reference id of the object.
+ # @return [String]
+ def to_xml(xml, rId)
+ h = self.instance_values
+ h[:Id] = rId
+ xml.Relationship(h)
+ end
+ end
+end
diff --git a/lib/axlsx/rels/relationships.rb b/lib/axlsx/rels/relationships.rb
new file mode 100644
index 00000000..9ee334a5
--- /dev/null
+++ b/lib/axlsx/rels/relationships.rb
@@ -0,0 +1,25 @@
+module Axlsx
+require 'axlsx/rels/relationship.rb'
+
+ # Relationships are a collection of Relations that define how package parts are related.
+ # @note The package automatically manages releationships.
+ class Relationships < SimpleTypedList
+
+ # Creates a new Relationships collection based on SimpleTypedList
+ def initialize
+ super Relationship
+ end
+
+ # Serializes the relationships document.
+ # @return [String]
+ def to_xml()
+ builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
+ xml.Relationships(:xmlns => Axlsx::RELS_R) {
+ each_with_index { |rel, index| rel.to_xml(xml, "rId#{index+1}") }
+ }
+ end
+ builder.to_xml
+ end
+
+ end
+end
diff --git a/lib/axlsx/stylesheet/border.rb b/lib/axlsx/stylesheet/border.rb
new file mode 100644
index 00000000..167b42c9
--- /dev/null
+++ b/lib/axlsx/stylesheet/border.rb
@@ -0,0 +1,52 @@
+module Axlsx
+ # This class details a border used in Office Open XML spreadsheet styles.
+ class Border
+
+ # @return [Boolean] The diagonal up property for the border that indicates if the border should include a diagonal line from the bottom left to the top right of the cell.
+ attr_accessor :diagonalUp
+
+ # @return [Boolean] The diagonal down property for the border that indicates if the border should include a diagonal line from the top left to the top right of the cell.
+ attr_accessor :diagonalDown
+
+ # @return [Boolean] The outline property for the border indicating that top, left, right and bottom borders should only be applied to the outside border of a range of cells.
+ attr_accessor :outline
+
+ # @return [SimpleTypedList] A list of BorderPr objects for this border.
+ attr_reader :prs
+
+ # Creates a new Border object
+ # @option options [Boolean] diagonalUp
+ # @option options [Boolean] diagonalDown
+ # @option options [Boolean] outline
+ # @example Making a border
+ # p = Package.new
+ # red_border = Border.new
+ # [:left, :right, :top, :bottom].each do |item|
+ # red_border.prs << BorderPr.new(:name=>item, :style=>:thin, :color=>Color.new(:rgb=>"FFFF0000")) #
+ # end
+ # # this sets red_border to be the index for the created border.
+ # red_border = p.workbook.styles.@borders << red_border
+ # #used in row creation as follows. This will add a red border to each of the cells in the row.
+ # p.workbook.add_worksheet.rows << :values=>[1,2,3] :style=>red_border
+ def initialize(options={})
+ @prs = SimpleTypedList.new BorderPr
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ def diagonalUp=(v) Axlsx::validate_boolean v; @diagonalUp = v end
+ def diagonalDown=(v) Axlsx::validate_boolean v; @diagonalDown = v end
+ def outline=(v) Axlsx::validate_boolean v; @outline = v end
+
+ # Serializes the border element
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ def to_xml(xml)
+ xml.border(self.instance_values.select{ |k,v| [:diagonalUp, :diagonalDown, :outline].include? k }) {
+ [:start, :end, :left, :right, :top, :bottom, :diagonal, :vertical, :horizontal].each do |k|
+ @prs.select { |pr| pr.name == k }.each { |pr| pr.to_xml(xml) }
+ end
+ }
+ end
+ end
+end
diff --git a/lib/axlsx/stylesheet/border_pr.rb b/lib/axlsx/stylesheet/border_pr.rb
new file mode 100644
index 00000000..63a1f9de
--- /dev/null
+++ b/lib/axlsx/stylesheet/border_pr.rb
@@ -0,0 +1,65 @@
+module Axlsx
+ # A border part.
+ class BorderPr
+
+ # @return [Color] The color of this border part.
+ attr_accessor :color
+
+ # @return [Symbol] The syle of this border part.
+ # @note
+ # The following are allowed
+ # :none
+ # :thin
+ # :medium
+ # :dashed
+ # :dotted
+ # :thick
+ # :double
+ # :hair
+ # :mediumDashed
+ # :dashDot
+ # :mediumDashDot
+ # :dashDotDot
+ # :mediumDashDotDot
+ # :slantDashDot
+ attr_accessor :style
+
+ # @return [Symbol] The name of this border part
+ # @note
+ # The following are allowed
+ # :start
+ # :end
+ # :left
+ # :right
+ # :top
+ # :bottom
+ # :diagonal
+ # :vertical
+ # :horizontal
+ attr_accessor :name
+
+ # Creates a new Border Part Object
+ # @option options [Color] color
+ # @option options [Symbol] name
+ # @option options [Symbol] style
+ # @see Axlsx::Border
+ def initialize(options={})
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ def name=(v) RestrictionValidator.validate "BorderPr.name", [:start, :end, :left, :right, :top, :bottom, :diagonal, :vertical, :horizontal], v; @name = v end
+ def color=(v) DataTypeValidator.validate(:color, Color, v); @color = v end
+ def style=(v) RestrictionValidator.validate "BorderPr.style", [:none, :thin, :medium, :dashed, :dotted, :thick, :double, :hair, :mediumDashed, :dashDot, :mediumDashDot, :dashDotDot, :mediumDashDotDot, :slantDashDot], v; @style = v end
+
+ # Serializes the border part
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.send(@name, :style=>@style) {
+ @color.to_xml(xml) if @color.is_a? Color
+ }
+ end
+ end
+end
diff --git a/lib/axlsx/stylesheet/cell_alignment.rb b/lib/axlsx/stylesheet/cell_alignment.rb
new file mode 100644
index 00000000..071ce68f
--- /dev/null
+++ b/lib/axlsx/stylesheet/cell_alignment.rb
@@ -0,0 +1,96 @@
+module Axlsx
+ # CellAlignment stores information about the cell alignment of a style Xf Object.
+ # @note Using Styles#add_style is the recommended way to manage cell alignment.
+ # @see Styles#add_style
+ class CellAlignment
+ # The horizontal alignment of the cell.
+ # @note
+ # The horizontal cell alignement style must be one of
+ # :general
+ # :left
+ # :center
+ # :right
+ # :fill
+ # :justify
+ # :centerContinuous
+ # :distributed
+ # @return [Symbol]
+ attr_accessor :horizontal
+
+ # The vertical alignment of the cell.
+ # @note
+ # The vertical cell allingment style must be one of the following:
+ # :top
+ # :center
+ # :bottom
+ # :justify
+ # :distributed
+ # @return [Symbol]
+ attr_accessor :vertical
+
+ # The textRotation of the cell.
+ # @return [Integer]
+ attr_accessor :textRotation
+
+ # Indicate if the text of the cell should wrap
+ # @return [Boolean]
+ attr_accessor :wrapText
+
+ # The amount of indent
+ # @return [Integer]
+ attr_accessor :indent
+
+ # The amount of relativeIndent
+ # @return [Integer]
+ attr_accessor :relativeIndent
+
+ # Indicate if the last line should be justified.
+ # @return [Boolean]
+ attr_accessor :justifyLastLine
+
+ # Indicate if the text should be shrunk to the fit in the cell.
+ # @return [Boolean]
+ attr_accessor :shrinkToFit
+
+ # The reading order of the text
+ # 0 Context Dependent
+ # 1 Left-to-Right
+ # 2 Right-to-Left
+ # @return [Integer]
+ attr_accessor :readingOrder
+
+ # Create a new cell_alignment object
+ # @option options [Symbol] horizontal
+ # @option options [Symbol] vertical
+ # @option options [Integer] textRotation
+ # @option options [Boolean] wrapText
+ # @option options [Integer] indent
+ # @option options [Integer] relativeIndent
+ # @option options [Boolean] justifyLastLine
+ # @option options [Boolean] shrinkToFit
+ # @option options [Integer] readingOrder
+ def initialize(options={})
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ def horizontal=(v) Axlsx::validate_horizontal_alignment v; @horizontal = v end
+ def vertical=(v) Axlsx::validate_vertical_alignment v; @vertical = v end
+ def textRotation=(v) Axlsx::validate_unsigned_int v; @textRotation = v end
+ def wrapText=(v) Axlsx::validate_boolean v; @wrapText = v end
+ def indent=(v) Axlsx::validate_unsigned_int v; @indent = v end
+ def relativeIndent=(v) Axlsx::validate_int v; @relativeIndent = v end
+ def justifyLastLine=(v) Axlsx::validate_boolean v; @justifyLastLine = v end
+ def shrinkToFit=(v) Axlsx::validate_boolean v; @shrinkToFit = v end
+ def readingOrder=(v) Axlsx::validate_unsigned_int v; @readingOrder = v end
+
+ # Serializes the cell alignment
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.alignment(self.instance_values)
+ end
+
+ end
+end
diff --git a/lib/axlsx/stylesheet/cell_protection.rb b/lib/axlsx/stylesheet/cell_protection.rb
new file mode 100644
index 00000000..7f0f4db8
--- /dev/null
+++ b/lib/axlsx/stylesheet/cell_protection.rb
@@ -0,0 +1,33 @@
+module Axlsx
+ # CellProtection stores information about locking or hiding cells in spreadsheet.
+ # @note Using Styles#add_style is the recommended way to manage cell protection.
+ # @see Styles#add_style
+ class CellProtection
+
+ # specifies locking for cells that have the style containing this protection
+ # @return [Boolean]
+ attr_accessor :hidden
+
+ # specifies if the cells that have the style containing this protection
+ # @return [Boolean]
+ attr_accessor :locked
+
+ # Creates a new CellProtection
+ # @option options [Boolean] hidden value for hidden protection
+ # @option options [Boolean] locked value for locked protection
+ def initialize(options={})
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+ def hidden=(v) Axlsx::validate_boolean v; @hidden = v end
+ def locked=(v) Axlsx::validate_boolean v; @locked = v end
+
+ # Serializes the cell protection
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.protection(self.instance_values)
+ end
+ end
+end
diff --git a/lib/axlsx/stylesheet/cell_style.rb b/lib/axlsx/stylesheet/cell_style.rb
new file mode 100644
index 00000000..11272075
--- /dev/null
+++ b/lib/axlsx/stylesheet/cell_style.rb
@@ -0,0 +1,60 @@
+module Axlsx
+ # CellStyle defines named styles that reference defined formatting records and can be used in your worksheet.
+ # @note Using Styles#add_style is the recommended way to manage cell styling.
+ # @see Styles#add_style
+ class CellStyle
+ # The name of this cell style
+ # @return [String]
+ attr_accessor :name
+
+ # The formatting record id this named style utilizes
+ # @return [Integer]
+ # @see Axlsx::Xf
+ attr_accessor :xfId
+
+ # The buildinId to use when this named style is applied
+ # @return [Integer]
+ # @see Axlsx::NumFmt
+ attr_accessor :builtinId
+
+ # Determines if this formatting is for an outline style, and what level of the outline it is to be applied to.
+ # @return [Integer]
+ attr_accessor :iLevel
+
+ # Determines if this named style should show in the list of styles when using excel
+ # @return [Boolean]
+ attr_accessor :hidden
+
+ # Indicates that the build in style reference has been customized.
+ # @return [Boolean]
+ attr_accessor :customBuiltin
+
+ # Creats a new CellStyle object
+ # @option options [String] name
+ # @option options [Integer] xfId
+ # @option options [Integer] buildinId
+ # @option options [Integer] iLevel
+ # @option options [Boolean] hidden
+ # @option options [Boolean] customBuiltIn
+ def initialize(options={})
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? o[0]
+ end
+ end
+
+ def name=(v) Axlsx::validate_string v; @name = v end
+ def xfId=(v) Axlsx::validate_unsigned_int v; @xfId = v end
+ def builtinId=(v) Axlsx::validate_unsigned_int v; @builtinId = v end
+ def iLevel=(v) Axlsx::validate_unsigned_int v; @iLevel = v end
+ def hidden=(v) Axlsx::validate_boolean v; @hidden = v end
+ def customBuiltin=(v) Axlsx::validate_boolean v; @customBuiltin = v end
+
+ # Serializes the cell style
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.cellStyle(self.instance_values)
+ end
+ end
+
+end
diff --git a/lib/axlsx/stylesheet/color.rb b/lib/axlsx/stylesheet/color.rb
new file mode 100644
index 00000000..34567cd1
--- /dev/null
+++ b/lib/axlsx/stylesheet/color.rb
@@ -0,0 +1,57 @@
+module Axlsx
+ # The color class represents a color used for borders, fills an fonts
+ class Color
+ # Determines if the color is system color dependant
+ # @return [Boolean]
+ attr_accessor :auto
+
+ # Backwards compatability color index
+ # return [Integer]
+ #attr_accessor :indexed
+
+ # The color as defined in rgb terms.
+ # @note
+ # rgb colors need to conform to ST_UnsignedIntHex. That basically means put 'FF' before you color
+ # @example rgb colors
+ # "FF000000" is black
+ # "FFFFFFFF" is white
+ # @return [String]
+ attr_accessor :rgb
+
+ # no support for theme just yet
+ # @return [Integer]
+ #attr_accessor :theme
+
+ # The tint value.
+ # @note valid values are between -1.0 and 1.0
+ # @return [Float]
+ attr_accessor :tint
+
+ # Creates a new Color object
+ # @option options [Boolean] auto
+ # @option options [String] rgb
+ # @option options [Float] tint
+ def initialize(options={})
+ @rgb = "FF000000"
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? o[0]
+ end
+ end
+
+ def auto=(v) Axlsx::validate_boolean v; @auto = v end
+ def rgb=(v) Axlsx::validate_string v; @rgb = v end
+ def tint=(v) Axlsx::validate_float v; @tint = v end
+
+ # This version does not support themes
+ # def theme=(v) Axlsx::validate_unsigned_integer v; @theme = v end
+
+ # Indexed colors are for backward compatability which I am choosing not to support
+ # def indexed=(v) Axlsx::validate_unsigned_integer v; @indexed = v end
+
+
+ # Serializes the color
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml) xml.color(self.instance_values) end
+ end
+end
diff --git a/lib/axlsx/stylesheet/fill.rb b/lib/axlsx/stylesheet/fill.rb
new file mode 100644
index 00000000..b7477a88
--- /dev/null
+++ b/lib/axlsx/stylesheet/fill.rb
@@ -0,0 +1,31 @@
+module Axlsx
+ # The Fill is a formatting object that manages the background color, and pattern for cells.
+ # @note The recommended way to manage styles in your workbook is to use Styles#add_style.
+ # @see Styles#add_style
+ # @see PatternFill
+ # @see GradientFill
+ class Fill
+
+ # The type of fill
+ # @return [PatternFill, GradientFill]
+ attr_accessor :fill_type
+
+ # Creates a new Fill object
+ # @param [PatternFill, GradientFill] fill_type
+ # @raise [ArgumentError] if the fill_type parameter is not a PatternFill or a GradientFill instance
+ def initialize(fill_type)
+ self.fill_type = fill_type
+ end
+
+ # Serializes the fill
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.fill { @fill_type.to_xml(xml) }
+ end
+
+ def fill_type=(v) DataTypeValidator.validate "Fill.fill_type", [PatternFill, GradientFill], v; @fill_type = v; end
+
+
+ end
+end
diff --git a/lib/axlsx/stylesheet/font.rb b/lib/axlsx/stylesheet/font.rb
new file mode 100644
index 00000000..fbd369a3
--- /dev/null
+++ b/lib/axlsx/stylesheet/font.rb
@@ -0,0 +1,128 @@
+module Axlsx
+ # The Font class details a font instance for use in styling cells.
+ # @note The recommended way to manage fonts, and other styles is Styles#add_style
+ # @see Styles#add_style
+ class Font
+ # The name of the font
+ # @return [String]
+ attr_accessor :name
+
+ # The charset of the font
+ # @return [Integer]
+ # @note
+ # The following values are defined in the OOXML specification and are OS dependant values
+ # 0 ANSI_CHARSET
+ # 1 DEFAULT_CHARSET
+ # 2 SYMBOL_CHARSET
+ # 77 MAC_CHARSET
+ # 128 SHIFTJIS_CHARSET
+ # 129 HANGUL_CHARSET
+ # 130 JOHAB_CHARSET
+ # 134 GB2312_CHARSET
+ # 136 CHINESEBIG5_CHARSET
+ # 161 GREEK_CHARSET
+ # 162 TURKISH_CHARSET
+ # 163 VIETNAMESE_CHARSET
+ # 177 HEBREW_CHARSET
+ # 178 ARABIC_CHARSET
+ # 186 BALTIC_CHARSET
+ # 204 RUSSIAN_CHARSET
+ # 222 THAI_CHARSET
+ # 238 EASTEUROPE_CHARSET
+ # 255 OEM_CHARSET
+ attr_accessor :charset
+
+ # The font's family
+ # @note
+ # The following are defined OOXML specification
+ # 0 Not applicable.
+ # 1 Roman
+ # 2 Swiss
+ # 3 Modern
+ # 4 Script
+ # 5 Decorative
+ # 6..14 Reserved for future use
+ # @return [Integer]
+ attr_accessor :family
+
+ # Indicates if the font should be rendered in *bold*
+ # @return [Boolean]
+ attr_accessor :b
+
+ # Indicates if the font should be rendered italicized
+ # @return [Boolean]
+ attr_accessor :i
+
+ # Indicates if the font should be rendered with a strikthrough
+ # @return [Boolean]
+ attr_accessor :strike
+
+ # Indicates if the font should be rendered with an outline
+ # @return [Boolean]
+ attr_accessor :outline
+
+ # Indicates if the font should be rendered with a shadow
+ # @return [Boolean]
+ attr_accessor :shadow
+
+ # Indicates if the font should be condensed
+ # @return [Boolean]
+ attr_accessor :condense
+
+ # The font's extend property
+ # @return [Boolean]
+ attr_accessor :extend
+
+ # The color of the font
+ # @return [Color]
+ attr_accessor :color
+
+ # The size of the font.
+ # @return [Integer]
+ attr_accessor :sz
+
+ # Creates a new Font
+ # @option options [String] name
+ # @option options [Integer] charset
+ # @option options [Integer] family
+ # @option options [Integer] family
+ # @option options [Boolean] b
+ # @option options [Boolean] i
+ # @option options [Boolean] strike
+ # @option options [Boolean] outline
+ # @option options [Boolean] shadow
+ # @option options [Boolean] condense
+ # @option options [Boolean] extend
+ # @option options [Color] color
+ # @option options [Integer] sz
+ def initialize(options={})
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? o[0]
+ end
+ end
+
+ def name=(v) Axlsx::validate_string v; @name = v end
+ def charset=(v) Axlsx::validate_unsigned_int v; @charset = v end
+ def family=(v) Axlsx::validate_unsigned_int v; @family = v end
+ def b=(v) Axlsx::validate_boolean v; @b = v end
+ def i=(v) Axlsx::validate_boolean v; @i = v end
+ def strike=(v) Axlsx::validate_boolean v; @strike = v end
+ def outline=(v) Axlsx::validate_boolean v; @outline = v end
+ def shadow=(v) Axlsx::validate_boolean v; @shadow = v end
+ def condense=(v) Axlsx::validate_boolean v; @condense = v end
+ def extend=(v) Axlsx::validate_boolean v; @extend = v end
+ def color=(v) DataTypeValidator.validate "Font.color", Color, v; @color=v end
+ def sz=(v) Axlsx::validate_unsigned_int v; @sz=v end
+
+ # Serializes the fill
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.font {
+ self.instance_values.each do |k, v|
+ v.is_a?(Color) ? v.to_xml(xml) : xml.send(k, {:val => v})
+ end
+ }
+ end
+ end
+end
diff --git a/lib/axlsx/stylesheet/gradient_fill.rb b/lib/axlsx/stylesheet/gradient_fill.rb
new file mode 100644
index 00000000..8fc41a5d
--- /dev/null
+++ b/lib/axlsx/stylesheet/gradient_fill.rb
@@ -0,0 +1,70 @@
+# -*- coding: utf-8 -*-
+module Axlsx
+ # A GradientFill defines the color and positioning for gradiant cell fill.
+ # @see Open Office XML Part 1 §18.8.24
+ class GradientFill
+
+ # The type of gradient.
+ # @note
+ # valid options are
+ # :linear
+ # :path
+ # @return [Symbol]
+ attr_accessor :type
+
+ # Angle of the linear gradient
+ # @return [Float]
+ attr_accessor :degree
+
+ # Percentage format left
+ # @return [Float]
+ attr_accessor :left
+
+ # Percentage format right
+ # @return [Float]
+ attr_accessor :right
+
+ # Percentage format top
+ # @return [Float]
+ attr_accessor :top
+
+ # Percentage format bottom
+ # @return [Float]
+ attr_accessor :bottom
+
+ # Collection of stop objects
+ # @return [SimpleTypedList]
+ attr_reader :stop
+
+ # Creates a new GradientFill object
+ # @option options [Symbol] type
+ # @option options [Float] degree
+ # @option options [Float] left
+ # @option options [Float] right
+ # @option options [Float] top
+ # @option options [Float] bottom
+ def initialize(options={})
+ options[:type] ||= :linear
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? o[0]
+ end
+ @stop = SimpleTypedList.new GradientStop
+ end
+
+ def type=(v) Axlsx::validate_gradient_type v; @type = v end
+ def degree=(v) Axlsx::validate_float v; @degree = v end
+ def left=(v) DataTypeValidator.validate "GradientFill.left", Float, v, lambda { |v| v >= 0.0 && v <= 1.0}; @left = v end
+ def right=(v) DataTypeValidator.validate "GradientFill.right", Float, v, lambda { |v| v >= 0.0 && v <= 1.0}; @right = v end
+ def top=(v) DataTypeValidator.validate "GradientFill.top", Float, v, lambda { |v| v >= 0.0 && v <= 1.0}; @top = v end
+ def bottom=(v) DataTypeValidator.validate "GradientFill.bottom", Float, v, lambda { |v| v >= 0.0 && v <= 1.0}; @bottom= v end
+
+ # Serializes the gradientFill
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.gradientFill(self.instance_values.reject { |k,v| k.to_sym == :stop }) {
+ @stop.each { |s| s.to_xml(xml) }
+ }
+ end
+ end
+end
diff --git a/lib/axlsx/stylesheet/gradient_stop.rb b/lib/axlsx/stylesheet/gradient_stop.rb
new file mode 100644
index 00000000..22786fcb
--- /dev/null
+++ b/lib/axlsx/stylesheet/gradient_stop.rb
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+module Axlsx
+ # The GradientStop object represents a color point in a gradient.
+ # @see Open Office XML Part 1 §18.8.24
+ class GradientStop
+ # The color for this gradient stop
+ # @return [Color]
+ # @see Color
+ attr_accessor :color
+
+ # The position of the color
+ # @return [Float]
+ attr_accessor :position
+
+ # Creates a new GradientStop object
+ # @param [Color] color
+ # @param [Float] position
+ def initialize(color, position)
+ self.color = color
+ self.position = position
+ end
+
+ def color=(v) DataTypeValidator.validate "GradientStop.color", Color, v; @color=v end
+ def position=(v) DataTypeValidator.validate "GradientStop.position", Float, v, lambda { |v| v >= 0 && v <= 1}; @position = v end
+
+ # Serializes the gradientStop
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml) xml.stop(:position => self.position) {self.color.to_xml(xml)} end
+ end
+end
diff --git a/lib/axlsx/stylesheet/num_fmt.rb b/lib/axlsx/stylesheet/num_fmt.rb
new file mode 100644
index 00000000..826599b6
--- /dev/null
+++ b/lib/axlsx/stylesheet/num_fmt.rb
@@ -0,0 +1,61 @@
+module Axlsx
+ # A NumFmt object defines an identifier and formatting code for data in cells.
+ # @note The recommended way to manage styles is Styles#add_style
+ class NumFmt
+ # @return [Integer] An unsinged integer referencing a standard or custom number format.
+ # @note
+ # These are the known formats I can dig up. The constant NUM_FMT_PERCENT is 9, and uses the default % formatting. Axlsx also defines a few formats for date and time that are commonly used in asia as NUM_FMT_YYYYMMDD and NUM_FRM_YYYYMMDDHHMMSS.
+ # 1 0
+ # 2 0.00
+ # 3 #,##0
+ # 4 #,##0.00
+ # 5 $#,##0_);($#,##0)
+ # 6 $#,##0_);[Red]($#,##0)
+ # 7 $#,##0.00_);($#,##0.00)
+ # 8 $#,##0.00_);[Red]($#,##0.00)
+ # 9 0%
+ # 10 0.00%
+ # 11 0.00E+00
+ # 12 # ?/?
+ # 13 # ??/??
+ # 14 m/d/yyyy
+ # 15 d-mmm-yy
+ # 16 d-mmm
+ # 17 mmm-yy
+ # 18 h:mm AM/PM
+ # 19 h:mm:ss AM/PM
+ # 20 h:mm
+ # 21 h:mm:ss
+ # 22 m/d/yyyy h:mm
+ # 37 #,##0_);(#,##0)
+ # 38 #,##0_);[Red](#,##0)
+ # 39 #,##0.00_);(#,##0.00)
+ # 40 #,##0.00_);[Red](#,##0.00)
+ # 45 mm:ss
+ # 46 [h]:mm:ss
+ # 47 mm:ss.0
+ # 48 ##0.0E+0
+ # 49 @
+ # @see Axlsx
+ attr_accessor :numFmtId
+
+ # @return [String] The formatting to use for this number format.
+ # @see http://support.microsoft.com/kb/264372
+ attr_accessor :formatCode
+ def initialize(options={})
+ @numFmtId = 0
+ @formatCode = ""
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? o[0]
+ end
+ end
+
+ def numFmtId=(v) Axlsx::validate_unsigned_int v; @numFmtId = v end
+ def formatCode=(v) Axlsx::validate_string v; @formatCode = v end
+
+ # Creates a numFmt element applying the instance values of this object as attributes.
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ def to_xml(xml) xml.numFmt(self.instance_values) end
+
+ end
+end
diff --git a/lib/axlsx/stylesheet/pattern_fill.rb b/lib/axlsx/stylesheet/pattern_fill.rb
new file mode 100644
index 00000000..7d674e27
--- /dev/null
+++ b/lib/axlsx/stylesheet/pattern_fill.rb
@@ -0,0 +1,64 @@
+module Axlsx
+ # A PatternFill is the pattern and solid fill styling for a cell.
+ # @note The recommended way to manage styles is with Styles#add_style
+ # @see Style#add_style
+ class PatternFill
+
+ # The color to use for the the background in solid fills.
+ # @return [Color]
+ attr_accessor :fgColor
+
+ # The color to use for the background of the fill when the type is not solid.
+ # @return [Color]
+ attr_accessor :bgColor
+
+ # The pattern type to use
+ # @note
+ # patternType must be one of
+ # :none
+ # :solid
+ # :mediumGray
+ # :darkGray
+ # :lightGray
+ # :darkHorizontal
+ # :darkVertical
+ # :darkDown
+ # :darkUp
+ # :darkGrid
+ # :darkTrellis
+ # :lightHorizontal
+ # :lightVertical
+ # :lightDown
+ # :lightUp
+ # :lightGrid
+ # :lightTrellis
+ # :gray125
+ # :gray0625
+ # @see Office Open XML Part 1 18.18.55
+ attr_accessor :patternType
+
+ # Creates a new PatternFill Object
+ # @option options [Symbol] patternType
+ # @option options [Color] fgColor
+ # @option options [Color] bgColor
+ def initialize(options={})
+ @patternType = :none
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ def fgColor=(v) DataTypeValidator.validate "PatternFill.fgColor", Color, v; @fgColor=v end
+ def bgColor=(v) DataTypeValidator.validate "PatternFill.bgColor", Color, v; @bgColor=v end
+ def patternType=(v) Axlsx::validate_pattern_type v; @patternType = v end
+
+ # Serializes the pattern fill
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.patternFill(:patternType => self.patternType) {
+ self.instance_values.reject { |k,v| k.to_sym == :patternType }.each { |k,v| xml.send(k, v.instance_values) }
+ }
+ end
+ end
+end
diff --git a/lib/axlsx/stylesheet/styles.rb b/lib/axlsx/stylesheet/styles.rb
new file mode 100644
index 00000000..6f428ecd
--- /dev/null
+++ b/lib/axlsx/stylesheet/styles.rb
@@ -0,0 +1,296 @@
+# -*- coding: utf-8 -*-
+module Axlsx
+ require 'axlsx/stylesheet/border.rb'
+ require 'axlsx/stylesheet/border_pr.rb'
+ require 'axlsx/stylesheet/cell_alignment.rb'
+ require 'axlsx/stylesheet/cell_style.rb'
+ require 'axlsx/stylesheet/color.rb'
+ require 'axlsx/stylesheet/fill.rb'
+ require 'axlsx/stylesheet/font.rb'
+ require 'axlsx/stylesheet/gradient_fill.rb'
+ require 'axlsx/stylesheet/gradient_stop.rb'
+ require 'axlsx/stylesheet/num_fmt.rb'
+ require 'axlsx/stylesheet/pattern_fill.rb'
+ require 'axlsx/stylesheet/table_style.rb'
+ require 'axlsx/stylesheet/table_styles.rb'
+ require 'axlsx/stylesheet/table_style_element.rb'
+ require 'axlsx/stylesheet/xf.rb'
+ require 'axlsx/stylesheet/cell_protection.rb'
+
+ #The Styles class manages worksheet styles
+ # In addition to creating the require style objects for a valid xlsx package, this class provides the key mechanism for adding styles to your workbook, and safely applying them to the cells of your worksheet.
+ # All portions of the stylesheet are implemented here exception colors, which specify legacy and modified pallete colors, and exLst, whic is used as a future feature data storage area.
+ # @see Office Open XML Part 1 18.8.11 for gory details on how this stuff gets put together
+ # @see Styles#add_style
+ # @note The recommended way to manage styles is with add_style
+ class Styles
+ # numFmts for your styles.
+ # The default styles, which change based on the system local, are as follows.
+ # id formatCode
+ # 0 General
+ # 1 0
+ # 2 0.00
+ # 3 #,##0
+ # 4 #,##0.00
+ # 9 0%
+ # 10 0.00%
+ # 11 0.00E+00
+ # 12 # ?/?
+ # 13 # ??/??
+ # 14 mm-dd-yy
+ # 15 d-mmm-yy
+ # 16 d-mmm
+ # 17 mmm-yy
+ # 18 h:mm AM/PM
+ # 19 h:mm:ss AM/PM
+ # 20 h:mm
+ # 21 h:mm:ss
+ # 22 m/d/yy h:mm
+ # 37 #,##0 ;(#,##0)
+ # 38 #,##0 ;[Red](#,##0)
+ # 39 #,##0.00;(#,##0.00)
+ # 40 #,##0.00;[Red](#,##0.00)
+ # 45 mm:ss
+ # 46 [h]:mm:ss
+ # 47 mmss.0
+ # 48 ##0.0E+0
+ # 49 @
+ # Axlsx also defines the following constants which you can use in add_style.
+ # NUM_FMT_PERCENT formats to "0%"
+ # NUM_FMT_YYYYMMDD formats to "yyyy/mm/dd"
+ # NUM_FMT_YYYYMMDDHHMMSS formats to "yyyy/mm/dd hh:mm:ss"
+ # @see Office Open XML Part 1 - 18.8.31 for more information on creating number formats
+ # @return [SimpleTypedList]
+ # @note The recommended way to manage styles is with add_style
+ # @see Styles#add_style
+ attr_reader :numFmts
+
+ # The collection of fonts used in this workbook
+ # @return [SimpleTypedList]
+ # @note The recommended way to manage styles is with add_style
+ # @see Styles#add_style
+ attr_reader :fonts
+
+ # The collection of fills used in this workbook
+ # @return [SimpleTypedList]
+ # @note The recommended way to manage styles is with add_style
+ # @see Styles#add_style
+ attr_reader :fills
+
+ # The collection of borders used in this workbook
+ # Axlsx predefines THIN_BORDER which can be used to put a border around all of your cells.
+ # @return [SimpleTypedList]
+ # @note The recommended way to manage styles is with add_style
+ # @see Styles#add_style
+ attr_reader :borders
+
+ # The collection of master formatting records for named cell styles, which means records defined in cellStyles, in the workbook
+ # @return [SimpleTypedList]
+ # @note The recommended way to manage styles is with add_style
+ # @see Styles#add_style
+ attr_reader :cellStyleXfs
+
+ # The collection of named styles, referencing cellStyleXfs items in the workbook.
+ # @return [SimpleTypedList]
+ # @note The recommended way to manage styles is with add_style
+ # @see Styles#add_style
+ attr_reader :cellStyles
+
+ # The collection of master formatting records. This is the list that you will actually use in styling a workbook.
+ # @return [SimpleTypedList]
+ # @note The recommended way to manage styles is with add_style
+ # @see Styles#add_style
+ attr_reader :cellXfs
+
+ # The collection of non-cell formatting records used in the worksheet.
+ # @return [SimpleTypedList]
+ # @note The recommended way to manage styles is with add_style
+ # @see Styles#add_style
+ attr_reader :dxfs
+
+ # The collection of table styles that will be available to the user in the excel UI
+ # @return [SimpleTypedList]
+ # @note The recommended way to manage styles is with add_style
+ # @see Styles#add_style
+ attr_reader :tableStyles
+
+ # Creates a new Styles object and prepopulates it with the requires objects to generate a valid package style part.
+ def initialize()
+ load_default_styles
+ end
+
+ # Drastically simplifies style creation and management.
+ # @return [Integer]
+ # @option options [String] fg_color The text color
+ # @option options [Integer] sz The text size
+ # @option options [Boolean] b Indicates if the text should be bold
+ # @option options [Boolean] i Indicates if the text should be italicised
+ # @option options [Boolean] strike Indicates if the text should be rendered with a strikethrough
+ # @option options [Boolean] strike Indicates if the text should be rendered with a shadow
+ # @option options [Integer] charset The character set to use.
+ # @option options [Integer] family The font family to use.
+ # @option options [String] name The name of the font to use
+ # @option options [Integer] num_fmt The number format to apply
+ # @option options [String] format_code The formatting to apply. If this is specified, num_fmt is ignored.
+ # @option options [Integer] border The border style to use.
+ # @option options [String] bg_color The background color to apply to the cell
+ # @option options [Boolean] hidden Indicates if the cell should be hidden
+ # @option options [Boolean] locked Indicates if the cell should be locked
+ # @option options [Hash] alignment A hash defining any of the attributes used in CellAlignment
+ # @see CellAlignment
+ #
+ # @example You Got Style
+ # require "rubygems" # if that is your preferred way to manage gems!
+ # require "axlsx"
+ #
+ # p = Axlsx::Package.new
+ # ws = p.workbook.add_worksheet
+ #
+ # # black text on a white background at 14pt with thin borders!
+ # title = ws.style.add_style(:bg_color => "FFFF0000", :fg_color=>"#FF000000", :sz=>14, :border=>Axlsx::STYLE_THIN_BORDER
+ #
+ # ws.add_row :values => ["Least Popular Pets"]
+ # ws.add_row :values => ["", "Dry Skinned Reptiles", "Bald Cats", "Violent Parrots"], :style=>title
+ # ws.add_row :values => ["Votes", 6, 4, 1], :style=>Axlsx::STYLE_THIN_BORDER
+ # f = File.open('example_you_got_style.xlsx', 'w')
+ # p.serialize(f)
+ #
+ # @example Styling specifically
+ # # an example of applying specific styles to specific cells
+ # require "rubygems" # if that is your preferred way to manage gems!
+ # require "axlsx"
+ #
+ # p = Axlsx::Package.new
+ # ws = p.workbook.add_worksheet
+ #
+ # # define your styles
+ # title = ws.style.add_style(:bg_color => "FFFF0000",
+ # :fg_color=>"#FF000000",
+ # :border=>Axlsx::STYLE_THIN_BORDER,
+ # :alignment=>{:horizontal => :center})
+ #
+ # date_time = ws.style.add_style(:num_fmt => Axlsx::NUM_FMT_YYYYMMDDHHMMSS,
+ # :border=>Axlsx::STYLE_THIN_BORDER)
+ #
+ # percent = ws.style.add_style(:num_fmt => Axlsx::NUM_FMT_PERCENT,
+ # :border=>Axlsx::STYLE_THIN_BORDER)
+ #
+ # currency = ws.style.add_style(:format_code=>"Â¥#,##0;[Red]Â¥-#,##0",
+ # :border=>Axlsx::STYLE_THIN_BORDER)
+ #
+ # # build your rows
+ # ws.add_row :values => ["Genreated At:", Time.now], :styles=>[nil, date_time]
+ # ws.add_row :values => ["Previous Year Quarterly Profits (JPY)"], :style=>title
+ # ws.add_row :values => ["Quarter", "Profit", "% of Total"], :style=>title
+ # ws.add_row :values => ["Q1", 4000, 40], :style=>[title, currency, percent]
+ # ws.add_row :values => ["Q2", 3000, 30], :style=>[title, currency, percent]
+ # ws.add_row :values => ["Q3", 1000, 10], :style=>[title, currency, percent]
+ # ws.add_row :values => ["Q4", 2000, 20], :style=>[title, currency, percent]
+ # f = File.open('example_you_got_style.xlsx', 'w')
+ # p.serialize(f)
+ def add_style(options={})
+
+ numFmtId = if options[:format_code]
+ n = @numFmts.map{ |f| f.numFmtId }.max + 1
+ numFmts << NumFmt.new(:numFmtId => n, :formatCode=> options[:format_code])
+ n
+ else
+ options[:num_fmt] || 0
+ end
+
+ borderId = options[:border] || 0
+ raise ArgumentError, "Invalid borderId" unless borderId < borders.size
+
+ fill = if options[:bg_color]
+ color = Color.new(:rgb=>options[:bg_color])
+ pattern = PatternFill.new(:patternType =>:solid, :fgColor=>color)
+ fills << Fill.new(pattern)
+ else
+ 0
+ end
+
+ fontId = if (options.values_at(:fg_color, :sz, :b, :i, :strike, :outline, :shadow, :charset, :family, :font_name).length)
+ font = Font.new()
+ [:b, :i, :strike, :outline, :shadow, :charset, :family, :sz].each { |k| font.send("#{k}=", options[k]) unless options[k].nil? }
+ font.color = Color.new(:rgb => options[:fg_color]) unless options[:fg_color].nil?
+ font.name = options[:font_name] unless options[:font_name].nil?
+ fonts << font
+ else
+ 0
+ end
+
+ applyProtection = (options[:hidden] || options[:locked]) ? 1 : 0
+
+ xf = Xf.new(:fillId => fill, :fontId=>fontId, :applyFill=>1, :applyFont=>1, :numFmtId=>numFmtId, :borderId=>borderId, :applyProtection=>applyProtection)
+
+ if options[:alignment]
+ xf.alignment = CellAlignment.new(options[:alignment])
+ end
+
+ if applyProtection
+ xf.protection = CellProtection.new(options)
+ end
+
+ cellXfs << xf
+ end
+
+ # Serializes the styles document
+ # @return [String]
+ def to_xml()
+ builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
+ xml.styleSheet(:xmlns => XML_NS) {
+ [:numFmts, :fonts, :fills, :borders, :cellStyleXfs, :cellXfs, :dxfs, :tableStyles].each do |key|
+ self.instance_values[key.to_s].to_xml(xml)
+ end
+ }
+ end
+ builder.to_xml
+ end
+
+ private
+ # Creates the default set of styles the exel requires to be valid as well as setting up the
+ # Axlsx::STYLE_THIN_BORDER
+ def load_default_styles
+ @numFmts = SimpleTypedList.new NumFmt
+ @numFmts << NumFmt.new(:numFmtId => NUM_FMT_YYYYMMDD, :formatCode=> "yyyy/mm/dd")
+ @numFmts << NumFmt.new(:numFmtId => NUM_FMT_YYYYMMDDHHMMSS, :formatCode=> "yyyy/mm/dd hh:mm:ss")
+
+ @numFmts.lock
+
+ @fonts = SimpleTypedList.new Font
+ @fonts << Font.new(:name => "Arial", :sz => 11, :family=>1)
+ @fonts.lock
+
+ @fills = SimpleTypedList.new Fill
+ @fills << Fill.new(Axlsx::PatternFill.new(:patternType=>:none))
+ @fills << Fill.new(Axlsx::PatternFill.new(:patternType=>:gray125))
+ @fills.lock
+
+ @borders = SimpleTypedList.new Border
+ @borders << Border.new
+ black_border = Border.new
+ [:left, :right, :top, :bottom].each do |item|
+ black_border.prs << BorderPr.new(:name=>item, :style=>:thin, :color=>Color.new(:rgb=>"FF000000"))
+ end
+ @borders << black_border
+ @borders.lock
+
+ @cellStyleXfs = SimpleTypedList.new Xf, "cellStyleXfs"
+ @cellStyleXfs << Xf.new(:borderId=>0, :xfId=>0, :numFmtId=>0, :fontId=>0, :fillId=>0)
+ @cellStyleXfs.lock
+
+ @cellStyles = SimpleTypedList.new CellStyle
+ @cellStyles << CellStyle.new(:name =>"標準", :builtinId =>0, :xfId=>0)
+ @cellStyles.lock
+
+ @cellXfs = SimpleTypedList.new Xf, "cellXfs"
+ @cellXfs << Xf.new(:borderId=>0, :xfId=>0, :numFmtId=>0, :fontId=>0, :fillId=>0)
+ @cellXfs << Xf.new(:borderId=>1, :xfId=>0, :numFmtId=>0, :fontId=>0, :fillId=>0)
+ @cellXfs.lock
+
+ @dxfs = SimpleTypedList.new(Xf, "dxfs"); @dxfs.lock
+ @tableStyles = TableStyles.new(:defaultTableStyle => "TableStyleMedium9", :defaultPivotStyle => "PivotStyleLight16"); @tableStyles.lock
+ end
+ end
+end
+
diff --git a/lib/axlsx/stylesheet/table_style.rb b/lib/axlsx/stylesheet/table_style.rb
new file mode 100644
index 00000000..ca138b1f
--- /dev/null
+++ b/lib/axlsx/stylesheet/table_style.rb
@@ -0,0 +1,44 @@
+module Axlsx
+ # A single table style definition and is a collection for tableStyleElements
+ # @note Table are not supported in this version and only the defaults required for a valid workbook are created.
+ class TableStyle < SimpleTypedList
+
+ # The name of this table style
+ # @return [string]
+ attr_accessor :name
+
+ # indicates if this style should be applied to pivot tables
+ # @return [Boolean]
+ attr_accessor :pivot
+
+ # indicates if this style should be applied to tables
+ # @return [Boolean]
+ attr_accessor :table
+
+ # creates a new TableStyle object
+ # @raise [ArgumentError] if name option is not provided.
+ # @param [String] name
+ # @option options [Boolean] pivot
+ # @option options [Boolean] table
+ def initialize(name, options={})
+ self.name = name
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? o[0]
+ end
+ super TableStyleElement
+ end
+
+ def name=(v) Axlsx::validate_string v; @name=v end
+ def pivot=(v) Axlsx::validate_boolean v; @pivot=v end
+ def table=(v) Axlsx::validate_boolean v; @table=v end
+
+ # Serializes the table style
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ attr = self.instance_values.select { |k, v| [:name, :pivot, :table].include? k }
+ attr[:count] = self.size
+ xml.tableStyle(attr) { self.each { |table_style_el| table_style_el.to_xml(xml) } }
+ end
+ end
+end
diff --git a/lib/axlsx/stylesheet/table_style_element.rb b/lib/axlsx/stylesheet/table_style_element.rb
new file mode 100644
index 00000000..146a6bad
--- /dev/null
+++ b/lib/axlsx/stylesheet/table_style_element.rb
@@ -0,0 +1,66 @@
+module Axlsx
+ # an element of style that belongs to a table style.
+ # @note tables and table styles are not supported in this version. This class exists in preparation for that support.
+ class TableStyleElement
+ # The type of style element. The following type are allowed
+ # :wholeTable
+ # :headerRow
+ # :totalRow
+ # :firstColumn
+ # :lastColumn
+ # :firstRowStripe
+ # :secondRowStripe
+ # :firstColumnStripe
+ # :secondColumnStripe
+ # :firstHeaderCell
+ # :lastHeaderCell
+ # :firstTotalCell
+ # :lastTotalCell
+ # :firstSubtotalColumn
+ # :secondSubtotalColumn
+ # :thirdSubtotalColumn
+ # :firstSubtotalRow
+ # :secondSubtotalRow
+ # :thirdSubtotalRow
+ # :blankRow
+ # :firstColumnSubheading
+ # :secondColumnSubheading
+ # :thirdColumnSubheading
+ # :firstRowSubheading
+ # :secondRowSubheading
+ # :thirdRowSubheading
+ # :pageFieldLabels
+ # :pageFieldValues
+ # @return [Symbol]
+ attr_accessor :type
+
+ # Number of rows or columns used in striping when the type is firstRowStripe, secondRowStripe, firstColumnStripe, or secondColumnStripe.
+ # @return [Integer]
+ attr_accessor :size
+
+ # The dxfId this style element points to
+ # @return [Integer]
+ attr_accessor :dxfId
+
+ # creates a new TableStyleElement object
+ # @option options [Symbol] type
+ # @option options [Integer] size
+ # @option options [Integer] dxfId
+ def initialize(options={})
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? o[0]
+ end
+ end
+
+ def type=(v) Axlsx::validate_table_element_type v; @type = v end
+ def size=(v) Axlsx::validate_unsigned_int v; @size = v end
+ def dxfId=(v) Axlsx::validate_unsigned_int v; @dxfId = v end
+
+ # Serializes the table style element
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.tableStyleElement self.instance_values
+ end
+ end
+end
diff --git a/lib/axlsx/stylesheet/table_styles.rb b/lib/axlsx/stylesheet/table_styles.rb
new file mode 100644
index 00000000..cc2005f6
--- /dev/null
+++ b/lib/axlsx/stylesheet/table_styles.rb
@@ -0,0 +1,39 @@
+module Axlsx
+ # TableStyles represents a collection of style definitions for table styles and pivot table styles.
+ # @note Support for custom table styles does not exist in this version. Many of the classes required are defined in preparation for future release. Please do not attempt to add custom table styles.
+ class TableStyles < SimpleTypedList
+
+ # The default table style. The default value is 'TableStyleMedium9'
+ # @return [String]
+ #
+ attr_accessor :defaultTableStyle
+
+ # The default pivot table style. The default value is 'PivotStyleLight6'
+ # @return [String]
+ attr_accessor :defaultPivotStyle
+
+ # Creates a new TableStyles object that is a container for TableStyle objects
+ # @option options [String] defaultTableStyle
+ # @option options [String] defaultPivotStyle
+ def initialize(options={})
+ @defaultTableStyle = options[:defaultTableStyle] || "TableStyleMedium9"
+ @defaultPivotStyle = options[:defaultPivotStyle] || "PivotStyleLight16"
+ super TableStyle
+ end
+
+ def defaultTableStyle=(v) Axlsx::validate_string(v); @defaultTableStyle = v; end
+ def defaultPivotStyle=(v) Axlsx::validate_string(v); @defaultPivotStyle = v; end
+
+ # Serializes the table styles element
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ attr = self.instance_values.reject {|k, v| ![:defaultTableStyle, :defaultPivotStyle].include?(k.to_sym) }
+ attr[:count] = self.size
+ xml.tableStyles(attr) {
+ self.each { |table_style| table_style.to_xml(xml) }
+ }
+ end
+ end
+
+end
diff --git a/lib/axlsx/stylesheet/xf.rb b/lib/axlsx/stylesheet/xf.rb
new file mode 100644
index 00000000..905eda2c
--- /dev/null
+++ b/lib/axlsx/stylesheet/xf.rb
@@ -0,0 +1,117 @@
+module Axlsx
+ # The Xf class defines a formatting record for use in Styles
+ class Xf
+ #does not support extList (ExtensionList)
+
+ # The cell alignment for this style
+ # @return [CellAlignment]
+ # @see CellAlignment
+ attr_accessor :alignment
+
+ # The cell protection for this style
+ # @return [CellProtection]
+ # @see CellProtection
+ attr_accessor :protection
+
+ # id of the numFmt to apply to this style
+ # @return [Integer]
+ attr_accessor :numFmtId
+
+ # index (0 based) of the font to be used in this style
+ # @return [Integer]
+ attr_accessor :fontId
+
+ # index (0 based) of the fill to be used in this style
+ # @return [Integer]
+ attr_accessor :fillId
+
+ # index (0 based) of the border to be used in this style
+ # @return [Integer]
+ attr_accessor :borderId
+
+ # index (0 based) of cellStylesXfs item to be used in this style. Only applies to cellXfs items
+ # @return [Integer]
+ attr_accessor :xfId
+
+ # indecates if text should be prefixed by a single quote in the cell
+ # @return [Boolean]
+ attr_accessor :quotePrefix
+
+ # indicates if the cell has a pivot table drop down button
+ # @return [Boolean]
+ attr_accessor :pivotButton
+
+ # indicates if the numFmtId should be applied
+ # @return [Boolean]
+ attr_accessor :applyNumberFormat
+
+ # indicates if the fontId should be applied
+ # @return [Boolean]
+ attr_accessor :applyFont
+
+ # indicates if the fillId should be applied
+ # @return [Boolean]
+ attr_accessor :applyFill
+
+ # indicates if the borderId should be applied
+ # @return [Boolean]
+ attr_accessor :applyBorder
+
+ # Indicates if the alignment options should be applied
+ # @return [Boolean]
+ attr_accessor :applyAlignment
+
+ # Indicates if the protection options should be applied
+ # @return [Boolean]
+ attr_accessor :applyProtection
+
+ # Creates a new Xf object
+ # @option [Integer] numFmtId
+ # @option [Integer] fontId
+ # @option [Integer] fillId
+ # @option [Integer] borderId
+ # @option [Integer] xfId
+ # @option [Boolean] quotePrefix
+ # @option [Boolean] pivotButton
+ # @option [Boolean] applyNumberFormat
+ # @option [Boolean] applyFont
+ # @option [Boolean] applyFill
+ # @option [Boolean] applyBorder
+ # @option [Boolean] applyAlignment
+ # @option [Boolean] applyProtection
+ # @option [CellAlignment] alignment
+ # @option [CellProtection] protection
+ def initialize(options={})
+ options.each do |o|
+ self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
+ end
+ end
+
+ def alignment=(v) DataTypeValidator.validate "Xf.alignment", CellAlignment, v; @alignment = v end
+ def protection=(v) DataTypeValidator.validate "Xf.protection", CellProtection, v; @protection = v end
+
+ def numFmtId=(v) Axlsx::validate_unsigned_int v; @numFmtId = v end
+ def fontId=(v) Axlsx::validate_unsigned_int v; @fontId = v end
+ def fillId=(v) Axlsx::validate_unsigned_int v; @fillId = v end
+ def borderId=(v) Axlsx::validate_unsigned_int v; @borderId = v end
+ def xfId=(v) Axlsx::validate_unsigned_int v; @xfId = v end
+ def quotePrefix=(v) Axlsx::validate_boolean v; @quotePrefix = v end
+ def pivotButton=(v) Axlsx::validate_boolean v; @pivotButton = v end
+ def applyNumberFormat=(v) Axlsx::validate_boolean v; @applyNumberFormat = v end
+ def applyFont=(v) Axlsx::validate_boolean v; @applyFont = v end
+ def applyFill=(v) Axlsx::validate_boolean v; @applyFill = v end
+ def applyBorder=(v) Axlsx::validate_boolean v; @applyBorder = v end
+ def applyAlignment=(v) Axlsx::validate_boolean v; @applyAlignment = v end
+ def applyProtection=(v) Axlsx::validate_boolean v; @applyProtection = v end
+
+ # Serializes the xf elemen
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.xf(self.instance_values.reject { |k, v| [:alignment, :protection, :extList, :name].include? k.to_sym}) {
+ alignment.to_xml(xml) if self.alignment
+ protection.to_xml(xml) if self.protection
+ }
+ end
+ end
+end
diff --git a/lib/axlsx/util/constants.rb b/lib/axlsx/util/constants.rb
new file mode 100644
index 00000000..8a2a002e
--- /dev/null
+++ b/lib/axlsx/util/constants.rb
@@ -0,0 +1,189 @@
+module Axlsx
+
+ # version
+ VERSION="1.0.1.a"
+
+ # XML Encoding
+ ENCODING = "UTF-8"
+
+ # spreadsheetML namespace
+ XML_NS = "http://schemas.openxmlformats.org/spreadsheetml/2006/main"
+
+ # content-types namespace
+ XML_NS_T = "http://schemas.openxmlformats.org/package/2006/content-types"
+
+ # extended-properties namespace
+ APP_NS = "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
+
+ # doc props namespace
+ APP_NS_VT = "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
+
+ # core properties namespace
+ CORE_NS = "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
+
+ # dc elements (core) namespace
+ CORE_NS_DC = "http://purl.org/dc/elements/1.1/"
+
+ # dcmit (core) namespcace
+ CORE_NS_DCMIT = "http://purl.org/dc/dcmitype/"
+
+ # dc terms namespace
+ CORE_NS_DCT = "http://purl.org/dc/terms/"
+
+ # xml schema namespace
+ CORE_NS_XSI = "http://www.w3.org/2001/XMLSchema-instance"
+
+ # spreadsheet drawing namespace
+ XML_NS_XDR = "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
+
+ # drawing namespace
+ XML_NS_A = "http://schemas.openxmlformats.org/drawingml/2006/main"
+
+ # chart namespace
+ XML_NS_C = "http://schemas.openxmlformats.org/drawingml/2006/chart"
+
+ # relationships namespace
+ XML_NS_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+
+
+ # relationships name space
+ RELS_R = "http://schemas.openxmlformats.org/package/2006/relationships"
+
+ # table rels namespace
+ TABLE_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"
+
+ # workbook rels namespace
+ WORKBOOK_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
+
+ # worksheet rels namespace
+ WORKSHEET_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"
+
+ # app rels namespace
+ APP_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"
+
+ # core rels namespace
+ CORE_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/metadata/core-properties"
+
+ # styles rels namespace
+ STYLES_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"
+
+ # drawing rels namespace
+ DRAWING_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"
+
+ # chart rels namespace
+ CHART_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"
+
+ # table content type
+ TABLE_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"
+
+ # workbook content type
+ WORKBOOK_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"
+
+ # app content type
+ APP_CT = "application/vnd.openxmlformats-officedocument.extended-properties+xml"
+
+ # rels content type
+ RELS_CT = "application/vnd.openxmlformats-package.relationships+xml"
+
+ # styles content type
+ STYLES_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"
+
+ # xml content type
+ XML_CT = "application/xml"
+
+ # worksheet content type
+ WORKSHEET_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
+
+ # shared strings content type
+ SHARED_STRINGS_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"
+
+ # core content type
+ CORE_CT = "application/vnd.openxmlformats-package.core-properties+xml"
+
+ # chart content type
+ CHART_CT = "application/vnd.openxmlformats-officedocument.drawingml.chart+xml"
+
+ #drawing content type
+ DRAWING_CT = "application/vnd.openxmlformats-officedocument.drawing+xml"
+
+ # xml content type extensions
+ XML_EX = "xml"
+
+ # rels content type extension
+ RELS_EX = "rels"
+
+ # workbook part
+ WORKBOOK_PN = "xl/workbook.xml"
+
+ # styles part
+ STYLES_PN = "styles.xml"
+
+ # app part
+ APP_PN = "docProps/app.xml"
+
+ # core part
+ CORE_PN = "docProps/core.xml"
+
+ # content types part
+ CONTENT_TYPES_PN = "[Content_Types].xml"
+
+ # rels part
+ RELS_PN = "_rels/.rels"
+
+ # workbook rels part
+ WORKBOOK_RELS_PN = "xl/_rels/workbook.xml.rels"
+
+ # worksheet part
+ WORKSHEET_PN = "worksheets/sheet%d.xml"
+
+ # worksheet rels part
+ WORKSHEET_RELS_PN = "worksheets/_rels/sheet%d.xml.rels"
+
+ # drawing part
+ DRAWING_PN = "drawings/drawing%d.xml"
+
+ # drawing rels part
+ DRAWING_RELS_PN = "drawings/_rels/drawing%d.xml.rels"
+
+ # chart part
+ CHART_PN = "charts/chart%d.xml"
+
+ # App validation schema
+ APP_XSD = "lib/schema/shared-documentPropertiesExtended.xsd"
+
+ # core validation schema
+ CORE_XSD = "lib/schema/opc-coreProperties.xsd"
+
+ # content types validation schema
+ CONTENT_TYPES_XSD = "lib/schema/opc-contentTypes.xsd"
+
+ # rels validation schema
+ RELS_XSD = "lib/schema/opc-relationships.xsd"
+
+ # spreadsheetML validation schema
+ SML_XSD = "lib/schema/sml.xsd"
+
+ # drawing validation schema
+ DRAWING_XSD = "lib/schema/dml-spreadsheetDrawing.xsd"
+
+ # number format id for pecentage formatting using the default formatting id.
+ NUM_FMT_PERCENT = 9
+
+ # number format id for date format like 2011/11/13
+ NUM_FMT_YYYYMMDD = 100
+
+ # number format id for time format the creates 2011/11/13 12:23:10
+ NUM_FMT_YYYYMMDDHHMMSS = 101
+
+ # cellXfs id for thin borders around the cell
+ STYLE_THIN_BORDER = 1
+
+ # error messages RestrictionValidor
+ ERR_RESTRICTION = "Invalid Data: %s. %s must be one of %s."
+
+ # error message DataTypeValidator
+ ERR_TYPE = "Invalid Data %s for %s. must be %s."
+
+ # error message for RegexValidator
+ ERR_REGEX = "Invalid Data. %s does not match %s."
+end
diff --git a/lib/axlsx/util/simple_typed_list.rb b/lib/axlsx/util/simple_typed_list.rb
new file mode 100644
index 00000000..7bb656cd
--- /dev/null
+++ b/lib/axlsx/util/simple_typed_list.rb
@@ -0,0 +1,150 @@
+module Axlsx
+ # A SimpleTypedList is a type restrictive collection that allows some of the methods from Array and supports basic xml serialization.
+ # @private
+ class SimpleTypedList
+ # The class constants of allowed types
+ # @return [Array]
+ attr_reader :allowed_types
+
+ # The index below which items cannot be removed
+ # @return [Integer]
+ attr_reader :locked_at
+
+ # The tag name to use when serializing this object
+ # by default the parent node for all items in the list is the classname of the first allowed type with the first letter in lowercase.
+ # @return [String]
+ attr_reader :serialize_as
+
+ # Creats a new typed list
+ # @param [Array, Class] type An array of Class objects or a single Class object
+ # @param [String] serialize The tag name to use in serialization
+ # @raise [ArgumentError] if all members of type are not Class objects
+ def initialize type, serialize_as=nil
+ if type.is_a? Array
+ type.each { |item| raise ArgumentError, "All members of type must be Class objects" unless item.is_a? Class }
+ @allowed_types = type
+ else
+ raise ArgumentError, "Type must be a Class object or array of Class objects" unless type.is_a? Class
+ @allowed_types = [type]
+ end
+ @list = []
+ @locked_at = nil
+ @serialize_as = serialize_as
+ end
+
+ # Lock this list at the current size
+ # @return [self]
+ def lock
+ @locked_at = @list.size
+ self
+ end
+
+ # Unlock the list
+ # @return [self]
+ def unlock
+ @locked_at = nil
+ self
+ end
+
+ # Concat operator
+ # @param [Any] v the data to be added
+ # @raise [ArgumentError] if the value being added is not one fo the allowed types
+ # @return [Integer] returns the index of the item added.
+ def <<(v)
+ DataTypeValidator.validate "SimpleTypedList.<<", @allowed_types, v
+ @list << v
+ @list.size - 1
+ end
+
+ # alternate of << method
+ # @see <<
+ def push(v)
+ self.<< v
+ end
+
+ # delete the item from the list
+ # @param [Any] v The item to be deleted.
+ # @raise [ArgumentError] if the item's index is protected by locking
+ # @return [Any] The item deleted
+ def delete(v)
+ return unless @list.include? v
+ raise ArgumentError, "Item is protected and cannot be deleted" if protected? @list.index(v)
+ @list.delete v
+ end
+
+ # delete the item from the list at the index position provided
+ # @raise [ArgumentError] if the index is protected by locking
+ # @return [Any] The item deleted
+ def delete_at(index)
+ @list[index]
+ raise ArgumentError, "Item is protected and cannot be deleted" if protected? index
+ @list.delete_at index
+ end
+
+ # positional assignment. Adds the item at the index specified
+ # @param [Integer] index
+ # @param [Any] v
+ # @raise [ArgumentError] if the index is protected by locking
+ # @raise [ArgumentError] if the item is not one of the allowed types
+ def []=(index, v)
+ DataTypeValidator.validate "SimpleTypedList.<<", @allowed_types, v
+ raise ArgumentError, "Item is protected and cannot be changed" if protected? index
+ @list[index] = v
+ v
+ end
+
+ # determines if the index is protected
+ # @param [Integer] index
+ def protected? index
+ return false unless @locked_at.is_a? Fixnum
+ index < @locked_at
+ end
+
+ # method_mission override to pass allowed methods to the list.
+ # @note
+ # the following methods are not allowed
+ # :replace
+ # :insert
+ # :collect!
+ # :map!
+ # :pop
+ # :delete_if
+ # :reverse!
+ # :shift
+ # :shuffle!
+ # :slice!
+ # :sort!
+ # :uniq!
+ # :unshift
+ # :zip
+ # :flatten!
+ # :fill
+ # :drop
+ # :drop_while
+ # :delete_if
+ # :clear
+ # :concat
+ def method_missing(meth, *args, &block)
+ raise ArgumentError, "#{meth} not supported" if [:replace, :insert, :collect!, :map!, :pop, :delete_if, :reverse!, :shift, :shuffle!, :slice!, :sort!, :uniq!, :unshift, :zip, :flatten!, :fill, :drop, :drop_while, :delete_if, :clear, :concat].include? meth.to_sym
+ if @list.respond_to? meth
+ @list.send(meth, *args, &block)
+ else
+ super
+ end
+ end
+
+ # Serializes the list
+ # If the serialize_as property is set, it is used as the parent node name.
+ # If the serialize_as property is nil, the first item in the list of allowed_types will be used, having the first letter of the class changed to lower case.
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ classname = @allowed_types[0].name.split('::').last
+ el_name = serialize_as || (classname[0,1].downcase + classname[1..-1]).pluralize
+ xml.send(el_name, :count=>@list.size) {
+ @list.each { |item| item.to_xml(xml) }
+ }
+ end
+ end
+
+end
diff --git a/lib/axlsx/util/validators.rb b/lib/axlsx/util/validators.rb
new file mode 100644
index 00000000..01a1850a
--- /dev/null
+++ b/lib/axlsx/util/validators.rb
@@ -0,0 +1,132 @@
+module Axlsx
+ # Validate a value against a specific list of allowed values.
+ class RestrictionValidator
+ # Perform validation
+ # @param [String] name The name of what is being validatied. This is included in the error message
+ # @param [Array] choices The list of choices to validate against
+ # @param [Any] v The value to be validated
+ # @raise [ArgumentError] Raised if the value provided is not in the list of choices.
+ # @return [Boolean] true if validation succeeds.
+ def self.validate(name, choices, v)
+ raise ArgumentError, (ERR_RESTRICTION % [v.to_s, name, choices.inspect]) unless choices.include?(v)
+ true
+ end
+ end
+
+ # Validates the value against the regular expression provided.
+ class RegexValidator
+ # @param [String] name The name of what is being validated. This is included in the output when the value is invalid
+ # @param [Regexp] regex The regular expression to evaluate
+ # @param [Any] v The value to validate.
+ def self.validate(name, regex, v)
+ raise ArgumentError, (ERR_REGEX % [v.inspect, regex.to_s]) unless (v.respond_to?(:=~) && v =~ regex)
+ end
+ end
+ # Validate that the class of the value provided is either an instance or the class of the allowed types and that any specified additional validation returns true.
+ class DataTypeValidator
+ # Perform validation
+ # @param [String] name The name of what is being validated. This is included in the error message
+ # @param [Array, Class] types A single class or array of classes that the value is validated against.
+ # @param [Block] other Any block that must evaluate to true for the value to be valid
+ # @raise [ArugumentError] Raised if the class of the value provided is not in the specified array of types or the block passed returns false
+ # @return [Boolean] true if validation succeeds.
+ # @see validate_boolean
+ def self.validate(name, types, v, other= lambda{|v| true })
+ types = [types] unless types.is_a? Array
+ valid_type = false
+ if v.class == Class
+ types.each { |t| valid_type = true if v.ancestors.include?(t) }
+ else
+ types.each { |t| valid_type = true if v.is_a?(t) }
+ end
+ raise ArgumentError, (ERR_TYPE % [v.inspect, name, types.inspect]) unless (other.call(v) && valid_type)
+ end
+ true
+ end
+
+ # Requires that the value is a Fixnum or Integer and is greater or equal to 0
+ # @param [Any] v The value validated
+ # @raise [ArgumentError] raised if the value is not a Fixnum or Integer value greater or equal to 0
+ # @return [Boolean] true if the data is valid
+ def self.validate_unsigned_int(v)
+ DataTypeValidator.validate(:unsigned_int, [Fixnum, Integer], v, lambda { |v| v.respond_to?(:>=) && v >= 0 })
+ end
+
+ # Requires that the value is a Fixnum or Integer
+ # @param [Any] v The value validated
+ def self.validate_int(v)
+ DataTypeValidator.validate :unsigned_int, [Fixnum, Integer], v
+ end
+
+ # Requires that the value is a form that can be evaluated as a boolean in an xml document.
+ # The value must be an instance of Fixnum, String, Integer, Symbol, TrueClass or FalseClass and
+ # it must be one of 0, 1, "true", "false", :true, :false, true, false, "0", or "1"
+ # @param [Any] v The value validated
+ def self.validate_boolean(v)
+ DataTypeValidator.validate(:boolean, [Fixnum, String, Integer, Symbol, TrueClass, FalseClass], v, lambda { |v| [0, 1, "true", "false", :true, :false, true, false, "0", "1"].include?(v) })
+ end
+
+ # Requires that the value is a String
+ # @param [Any] v The value validated
+ def self.validate_string(v)
+ DataTypeValidator.validate :string, String, v
+ end
+
+ # Requires that the value is a Float
+ # @param [Any] v The value validated
+ def self.validate_float(v)
+ DataTypeValidator.validate :float, Float, v
+ end
+
+ # Requires that the value is valid pattern type.
+ # valid pattern types must be one of :none, :solid, :mediumGray, :darkGray, :lightGray, :darkHorizontal, :darkVertical, :darkDown,
+ # :darkUp, :darkGrid, :darkTrellis, :lightHorizontal, :lightVertical, :lightDown, :lightUp, :lightGrid, :lightTrellis, :gray125, or :gray0625.
+ # @param [Any] v The value validated
+ def self.validate_pattern_type(v)
+ RestrictionValidator.validate :pattern_type, [:none, :solid, :mediumGray, :darkGray, :lightGray, :darkHorizontal, :darkVertical, :darkDown, :darkUp, :darkGrid,
+ :darkTrellis, :lightHorizontal, :lightVertical, :lightDown, :lightUp, :lightGrid, :lightTrellis, :gray125, :gray0625], v
+ end
+
+ # Requires that the value is a gradient_type.
+ # valid types are :linear and :path
+ # @param [Any] v The value validated
+ def self.validate_gradient_type(v)
+ RestrictionValidator.validate :gradient_type, [:linear, :path], v
+ end
+
+ # Requires that the value is a valid horizontal_alignment
+ # :general, :left, :center, :right, :fill, :justify, :centerContinuous, :distributed are allowed
+ # @param [Any] v The value validated
+ def self.validate_horizontal_alignment(v)
+ RestrictionValidator.validate :horizontal_alignment, [:general, :left, :center, :right, :fill, :justify, :centerContinuous, :distributed], v
+ end
+
+ # Requires that the value is a valid vertical_alignment
+ # :top, :center, :bottom, :justify, :distributed are allowed
+ # @param [Any] v The value validated
+ def self.validate_vertical_alignment(v)
+ RestrictionValidator.validate :vertical_alignment, [:top, :center, :bottom, :justify, :distributed], v
+ end
+
+ # Requires that the value is a valid content_type
+ # TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, DRAWING_CT are allowed
+ # @param [Any] v The value validated
+ def self.validate_content_type(v)
+ RestrictionValidator.validate :content_type, [TABLE_CT, WORKBOOK_CT, APP_CT, RELS_CT, STYLES_CT, XML_CT, WORKSHEET_CT, SHARED_STRINGS_CT, CORE_CT, CHART_CT, DRAWING_CT], v
+ end
+
+ # Requires that the value is a valid relationship_type
+ # XML_NS_R, TABLE_R, WORKBOOK_R, WORKSHEET_R, APP_R, RELS_R, CORE_R, STYLES_R, CHART_R, DRAWING_R are allowed
+ # @param [Any] v The value validated
+ def self.validate_relationship_type(v)
+ RestrictionValidator.validate :relationship_type, [XML_NS_R, TABLE_R, WORKBOOK_R, WORKSHEET_R, APP_R, RELS_R, CORE_R, STYLES_R, CHART_R, DRAWING_R], v
+ end
+
+ # Requires that the value is a valid table element type
+ # :wholeTable, :headerRow, :totalRow, :firstColumn, :lastColumn, :firstRowStripe, :secondRowStripe, :firstColumnStripe, :secondColumnStripe, :firstHeaderCell, :lastHeaderCell, :firstTotalCell, :lastTotalCell, :firstSubtotalColumn, :secondSubtotalColumn, :thirdSubtotalColumn, :firstSubtotalRow, :secondSubtotalRow, :thirdSubtotalRow, :blankRow, :firstColumnSubheading, :secondColumnSubheading, :thirdColumnSubheading, :firstRowSubheading, :secondRowSubheading, :thirdRowSubheading, :pageFieldLabels, :pageFieldValues are allowed
+ # @param [Any] v The value validated
+ def self.validate_table_element_type(v)
+ RestrictionValidator.validate :table_element_type, [:wholeTable, :headerRow, :totalRow, :firstColumn, :lastColumn, :firstRowStripe, :secondRowStripe, :firstColumnStripe, :secondColumnStripe, :firstHeaderCell, :lastHeaderCell, :firstTotalCell, :lastTotalCell, :firstSubtotalColumn, :secondSubtotalColumn, :thirdSubtotalColumn, :firstSubtotalRow, :secondSubtotalRow, :thirdSubtotalRow, :blankRow, :firstColumnSubheading, :secondColumnSubheading, :thirdColumnSubheading, :firstRowSubheading, :secondRowSubheading, :thirdRowSubheading, :pageFieldLabels, :pageFieldValues], v
+ end
+
+end
diff --git a/lib/axlsx/workbook/workbook.rb b/lib/axlsx/workbook/workbook.rb
new file mode 100644
index 00000000..00da5247
--- /dev/null
+++ b/lib/axlsx/workbook/workbook.rb
@@ -0,0 +1,131 @@
+# -*- coding: utf-8 -*-
+module Axlsx
+
+require 'axlsx/workbook/worksheet/cell.rb'
+require 'axlsx/workbook/worksheet/row.rb'
+require 'axlsx/workbook/worksheet/worksheet.rb'
+
+ # The Workbook class is an xlsx workbook that manages worksheets, charts, drawings and styles.
+ # The following parts of the Office Open XML spreadsheet specification are not implimented in this version.
+ #
+ # bookViews
+ # calcPr
+ # customWorkbookViews
+ # definedNames
+ # externalReferences
+ # extLst
+ # fileRecoveryPr
+ # fileSharing
+ # fileVersion
+ # functionGroups
+ # oleSize
+ # pivotCaches
+ # smartTagPr
+ # smartTagTypes
+ # webPublishing
+ # webPublishObjects
+ # workbookProtection
+ # workbookPr*
+ #
+ # *workbookPr is only supported to the extend of date1904
+ class Workbook
+
+ # A collection of worksheets associated with this workbook.
+ # @note The recommended way to manage worksheets is add_worksheet
+ # @see Workbook#add_worksheet
+ # @see Worksheet
+ # @return [SimpleTypedList]
+ attr_reader :worksheets
+
+ # A colllection of charts associated with this workbook
+ # @note The recommended way to manage charts is Worksheet#add_chart
+ # @see Worksheet#add_chart
+ # @see Chart
+ # @return [SimpleTypedList]
+ attr_reader :charts
+
+ # A colllection of drawings associated with this workbook
+ # @note The recommended way to manage drawings is Worksheet#add_chart
+ # @see Worksheet#add_chart
+ # @see Drawing
+ # @return [SimpleTypedList]
+ attr_reader :drawings
+
+ # The styles associated with this workbook
+ # @note The recommended way to manage styles is Styles#add_style
+ # @see Style#add_style
+ # @see Style
+ # @return [Styles]
+ attr_reader :styles
+
+ # The workbook relationships. This is managed automatically by the workbook
+ # @return [Relationships]
+ attr_reader :relationships
+
+ # Instance level access to the class variable 1904
+ # @return [Boolean]
+ attr_accessor :date1904
+
+
+ # Indicates if the epoc date for serialization should be 1904. If false, 1900 is used.
+ @@date1904 = false
+
+ # Creates a new Workbook
+ # @option options [Boolean] date1904
+ def initialize(options={})
+ @styles = Styles.new
+ @worksheets = SimpleTypedList.new Worksheet
+ @drawings = SimpleTypedList.new Drawing
+ @charts = SimpleTypedList.new Chart
+ self.date1904= options[:date1904] unless options[:date1904].nil?
+ yield self if block_given?
+ end
+
+ def date1904=(v) Axlsx::validate_boolean v; @@date1904 = v; end
+ def date1904() @@date1904; end
+
+ # Sets the date1904 attribute to the provided boolean
+ # @return [Boolean]
+ def self.date1904=(v) Axlsx::validate_boolean v; @@date1904 = v; end
+
+ # retrieves the date1904 attribute
+ # @return [Boolean]
+ def self.date1904() @@date1904; end
+
+ # Adds a worksheet to this workbook
+ # @return [Worksheet]
+ # @option options [String] name The name of the worksheet.
+ # @see Worksheet#initialize
+ def add_worksheet(options={})
+ worksheet = Worksheet.new(self, options)
+ yield worksheet if block_given?
+ worksheet
+ end
+
+ def relationships
+ r = Relationships.new
+ @worksheets.each do |sheet|
+ r << Relationship.new(WORKSHEET_R, WORKSHEET_PN % (r.size+1))
+ end
+ r << Relationship.new(STYLES_R, STYLES_PN)
+ r
+ end
+
+ # Serializes the workbook document
+ # @return [String]
+ def to_xml()
+ add_worksheet unless worksheets.size > 0
+ builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
+ xml.workbook(:xmlns => XML_NS, :'xmlns:r' => XML_NS_R) {
+ xml.workbookPr(:date1904=>@@date1904)
+ xml.sheets {
+ @worksheets.each_with_index do |sheet, index|
+ xml.sheet(:name=>sheet.name, :sheetId=>index+1, :"r:id"=>sheet.rId)
+ end
+ }
+ }
+ end
+ builder.to_xml(:indent=>0)
+ end
+ end
+end
diff --git a/lib/axlsx/workbook/worksheet/cell.rb b/lib/axlsx/workbook/worksheet/cell.rb
new file mode 100644
index 00000000..72eb6177
--- /dev/null
+++ b/lib/axlsx/workbook/worksheet/cell.rb
@@ -0,0 +1,184 @@
+module Axlsx
+ # A cell in a worksheet.
+ # Cell stores inforamation requried to serialize a single worksheet cell to xml. You must provde the Row that the cell belongs to and the cells value. The data type will automatically be determed if you do not specify the :type option. The default style will be applied if you do not supply the :style option. Changing the cell's type will recast the value to the type specified. Altering the cell's value via the property accessor will also automatically cast the provided value to the cell's type.
+ # @example Manually creating and manipulating Cell objects
+ # ws = Workbook.new.add_worksheet
+ # # This is the simple, and recommended way to create cells. Data types will automatically be determined for you.
+ # ws.add_row :values => [1,"fish",Time.now]
+ #
+ # # but you can also do this
+ # r = ws.add_row
+ # r.add_cell 1
+ #
+ # # or even this
+ # r = ws.add_row
+ # c = Cell.new row, 1, :value=>integer
+ #
+ # # cells can also be accessed via Row#cells. The example here changes the cells type, which will automatically updated the value from 1 to 1.0
+ # r.cells.last.type = :float
+ #
+ # @note The recommended way to generate cells is via Worksheet#add_row
+ #
+ # @see Worksheet#add_row
+ class Cell
+
+ # The index of the cellXfs item to be applied to this cell.
+ # @return [Integer]
+ # @see Axlsx::Styles
+ attr_accessor :style
+
+ # The row this cell belongs to.
+ # @return [Row]
+ attr_reader :row
+
+ # The cell's data type. Currently only four types are supported, :time, :float, :integer and :string.
+ # Changing the type for a cell will recast the value into that type. If no type option is specified in the constructor, the type is
+ # automatically determed.
+ # @see Cell#cell_type_from_value
+ # @return [Symbol] The type of data this cell's value is cast to.
+ # @raise [ArgumentExeption] Cell.type must be one of [:time, :float, :integer, :string]
+ # @note
+ # If the value provided cannot be cast into the type specified, type is changed to :string and the following logic is applied.
+ # :string to :integer or :float, type coversions always return 0 or 0.0
+ # :string, :integer, or :float to :time conversions always return the original value as a string and set the cells type to :string.
+ # No support is currently implemented for parsing time strings.
+ #
+ attr_accessor :type
+
+ # The value of this cell.
+ # @return casted value based on cell's type attribute.
+ attr_accessor :value
+
+ # @param [Row] row The row this cell belongs to.
+ # @param [Any] value The value associated with this cell.
+ # @option options [Symbol] type The intended data type for this cell. If not specified the data type will be determined internally based on the vlue provided.
+ # @option options [Integer] style The index of the cellXfs item to be applied to this cell. If not specified, the default style (0) will be applied.
+ def initialize(row, value="", options={})
+ self.row=row
+ #reference for validation
+ @styles = row.worksheet.workbook.styles
+ @type= options[:type] || cell_type_from_value(value)
+ self.style = options[:style] || 0
+ @value = cast_value(value)
+ @row.cells << self
+ end
+
+ # @return [Integer] The index of the cell in the containing row.
+ def index
+ @row.cells.index(self)
+ end
+
+ # @return [String] The alpha(column)numeric(row) reference for this sell.
+ # @example Relative Cell Reference
+ # ws.rows.first.cells.first.r #=> "A1"
+ def r
+ "#{col_ref}#{@row.index+1}"
+ end
+
+ # @return [String] The absolute alpha(column)numeric(row) reference for this sell.
+ # @example Absolute Cell Reference
+ # ws.rows.first.cells.first.r #=> "$A$1"
+ def r_abs
+ "$#{r.split('').join('$')}"
+ end
+
+ # @return [Integer] The cellXfs item index applied to this cell.
+ # @raise [ArgumentError] Invalid cellXfs id if the value provided is not within cellXfs items range.
+ def style=(v)
+ Axlsx::validate_unsigned_int(v)
+ count = @styles.cellXfs.size
+ raise ArgumentError, "Invalid cellXfs id" unless v < count
+ @style = v
+ end
+
+ def type=(v)
+ RestrictionValidator.validate "Cell.type", [:time, :float, :integer, :string], v
+ @type=v
+ self.value = @value
+ end
+
+ def value=(v)
+ #TODO: consider doing value based type determination first?
+ @value = cast_value(v)
+ end
+
+ # Serializes the cell
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String] xml text for the cell
+ # @note
+ # Shared Strings are not used in this library. All values are set directly in the each sheet.
+ def to_xml(xml)
+ if @type == :string
+ #NOTE not sure why, but xml.t @v renders the text as html entities of unicode data
+ xml.c(:r => r, :t=>:inlineStr, :s=>style) { xml.is { xml << "<t>#{value}</t>" } }
+ else
+ xml.c(:r => r, :s => style) { xml.v value }
+ end
+ end
+
+ private
+
+ # assigns the owning row for this cell.
+ def row=(v) DataTypeValidator.validate "Cell.row", Row, v; @row=v end
+
+ # converts the column index into alphabetical values.
+ # @note This follows the standard spreadsheet convention of naming columns A to Z, followed by AA to AZ etc.
+ # @return [String]
+ def col_ref
+ chars = []
+ index = self.index
+ while index >= 26 do
+ chars << ((index % 26) + 65).chr
+ index /= 26
+ end
+ chars << ((chars.empty? ? index : index-1) + 65).chr
+ chars.reverse.join
+ end
+
+ # Determines the cell type based on the cell value.
+ # @note This is only used when a cell is created but no :type option is specified, the following rules apply:
+ # 1. If the value is an instance of Time, the type is set to :time
+ # 2. :float and :integer types are determined by regular expression matching.
+ # 3. Anything that does not meet either of the above is determined to be :string.
+ # @return [Symbol] The determined type
+ def cell_type_from_value(v)
+ if v.is_a? Time
+ :time
+ elsif v.to_s.match(/\A[+-]?\d+?\Z/) #numeric
+ :integer
+ elsif v.to_s.match(/\A[+-]?\d+\.\d+?\Z/) #float
+ :float
+ else
+ :string
+ end
+ end
+
+ # Cast the value into this cells data type.
+ # @note
+ # About Time - Time in OOXML is *different* from what you might expect. The history as to why is interesting, but you can safely assume that if you are generating docs on a mac, you will want to specify Workbook.1904 as true when using time typed values.
+ # @see Axlsx#date1904
+ def cast_value(v)
+ if @type == :time && v.is_a?(Time)
+ #todo consider a time parsing method to convert strings to time
+ epoc = Workbook.date1904 ? Time.local(1904,1,1,0,0,0,0,v.zone) : Time.local(1900,1,1,0,0,0,0,v.zone)
+ ((v - epoc) /60.0/60.0/24.0).to_f
+ elsif @type == :float
+ v.to_f
+ elsif @type == :integer
+ v.to_i
+ else
+ @type = :string
+ v.to_s
+ # curious as to why this would be the cells responsibility
+ # convert your values before passing them in wankers! CGI.unescapeHTML(v.to_s).to_xs
+ # to revert, load this once when the gem is loaded.
+ # unless String.method_defined? :to_xs
+ # require 'fast_xs' #dep
+ # class String
+ # alias_method :to_xs, :fast_xs
+ # end
+ # end
+ end
+ end
+ end
+end
diff --git a/lib/axlsx/workbook/worksheet/row.rb b/lib/axlsx/workbook/worksheet/row.rb
new file mode 100644
index 00000000..27e60f38
--- /dev/null
+++ b/lib/axlsx/workbook/worksheet/row.rb
@@ -0,0 +1,92 @@
+module Axlsx
+ # A Row is a single row in a worksheet.
+ # @note The recommended way to manage rows and cells is to use Worksheet#add_row
+ # @see Worksheet#add_row
+ class Row
+
+ # The worksheet this row belongs to
+ # @return [Worksheet]
+ attr_reader :worksheet
+
+ # The cells this row holds
+ # @return [SimpleTypedList]
+ attr_reader :cells
+
+ # The index of this row in the worksheet
+ # @return [Integer]
+ attr_reader :index
+
+ # Creates a new row. New Cell objects are created based on the values, types and style options.
+ # A new cell is created for each item in the values array. style and types options are applied as follows:
+ # If the types option is defined and is a symbol it is applied to all the cells created.
+ # If the types option is an array, cell types are applied by index for each cell
+ # If the types option is not set, the cell will automatically determine its type.
+ # If the style option is defined and is an Integer, it is applied to all cells created.
+ # If the style option is an array, style is applied by index for each cell.
+ # If the style option is not defined, the default style (0) is applied to each cell.
+ # @param [Worksheet] worksheet
+ # @option options [Array] values
+ # @option options [Array, Symbol] types
+ # @option options [Array, Integer] style
+ # @see Row#array_to_cells
+ # @see Cell
+ def initialize(worksheet, values=[], options={})
+ self.worksheet = worksheet
+ @cells = SimpleTypedList.new Cell
+ @worksheet.rows << self
+ array_to_cells(values, options)
+ end
+
+ def index
+ worksheet.rows.index(self)
+ end
+
+ # Serializes the row
+ # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
+ # @return [String]
+ def to_xml(xml)
+ xml.row(:r => index+1) { @cells.each { |cell| cell.to_xml(xml) } }
+ end
+
+ # Adds a singel sell to the row based on the data provided and updates the worksheet's autofit data.
+ # @return [Cell]
+ def add_cell(value="", options={})
+ c = Cell.new(self, value, options)
+ update_auto_fit_data
+ c
+ end
+
+
+ private
+
+ # assigns the owning worksheet for this row
+ def worksheet=(v) DataTypeValidator.validate "Row.worksheet", Worksheet, v; @worksheet=v; end
+
+ # Tell the worksheet to update autofit data for the columns based on this row's cells.
+ # @return [SimpleTypedList]
+ def update_auto_fit_data
+ worksheet.send(:update_auto_fit_data, self.cells)
+ end
+
+ # Converts values, types, and style options into cells and associates them with this row.
+ # A new cell is created for each item in the values array.
+ # If value option is defined and is a symbol it is applied to all the cells created.
+ # If the value option is an array, cell types are applied by index for each cell
+ # If the style option is defined and is an Integer, it is applied to all cells created.
+ # If the style option is an array, style is applied by index for each cell.
+ # @option options [Array] values
+ # @option options [Array, Symbol] types
+ # @option options [Array, Integer] style
+ def array_to_cells(values, options={})
+ values = values
+ DataTypeValidator.validate 'Row.array_to_cells', Array, values
+ types, style = options[:types], options[:style]
+ values.each_with_index do |value, index|
+ cell_style = style.is_a?(Array) ? style[index] : style
+ cell_type = types.is_a?(Array)? types[index] : types
+ Cell.new(self, value, :style=>cell_style, :type=>cell_type)
+ end
+ end
+ end
+
+end
diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb
new file mode 100644
index 00000000..4cc9d783
--- /dev/null
+++ b/lib/axlsx/workbook/worksheet/worksheet.rb
@@ -0,0 +1,193 @@
+# -*- coding: utf-8 -*-
+module Axlsx
+
+ # The Worksheet class represents a worksheet in the workbook.
+ class Worksheet
+
+ # The name of the worksheet
+ # @return [String]
+ attr_accessor :name
+
+ # The workbook that owns this worksheet
+ # @return [Workbook]
+ attr_reader :workbook
+
+ # The worksheet relationships. This is managed automatically by the worksheet
+ # @return [Relationships]
+ attr_reader :relationships
+
+ # The rows in this worksheet
+ # @note The recommended way to manage rows is Worksheet#add_row
+ # @return [SimpleTypedList]
+ # @see Worksheet#add_row
+ attr_reader :rows
+
+ # The drawing associated with this worksheet.
+ # @note the recommended way to work with drawings and charts is Worksheet#add_chart
+ # @return [Drawing]
+ # @see Worksheet#add_chart
+ attr_reader :drawing
+
+ # An array of content based calculated column widths.
+ # @note a single auto fit data item is a hash with :longest => [String] and :sz=> [Integer] members.
+ # @return [Array] of Hash
+ attr_reader :auto_fit_data
+
+ # The part name of this worksheet
+ # @return [String]
+ attr_reader :pn
+
+ # The relationship part name of this worksheet
+ # @return [String]
+ attr_reader :rels_pn
+
+ # The relationship Id of thiw worksheet
+ # @return [String]
+ attr_reader :rId
+
+ # The index of this worksheet in the owning Workbook's worksheets list.
+ # @return [Integer]
+ attr_reader :index
+
+ # TODO Merge Cells
+ # attr_reader :merge_cells
+
+ # Creates a new worksheet.
+ # @note the recommended way to manage worksheets is Workbook#add_worksheet
+ # @see Workbook#add_worksheet
+ # @option options [String] name The name of this sheet.
+ def initialize(wb, options={})
+ @rows = SimpleTypedList.new Row
+ self.workbook = wb
+ @workbook.worksheets << self
+ @auto_fit_data = []
+ self.name = options[:name] || "Sheet" + (index+1).to_s
+ @magick_draw = Magick::Draw.new
+ end
+
+
+ def name=(v) DataTypeValidator.validate "Worksheet.name", String, v; @name=v end
+
+ def pn
+ "#{WORKSHEET_PN % (index+1)}"
+ end
+
+ def rels_pn
+ "#{WORKSHEET_RELS_PN % (index+1)}"
+ end
+
+ def rId
+ "rId#{index+1}"
+ end
+
+ def index
+ @workbook.worksheets.index(self)
+ end
+
+ def drawing
+ @drawing || @drawing = Axlsx::Drawing.new(self)
+ end
+
+ # Adds a row to the worksheet and updates auto fit data
+ # @return [Row]
+ # @option options [Array] values
+ # @option options [Array, Symbol] types
+ # @option options [Array, Integer] style
+ def add_row(values=[], options={})
+ Row.new(self, values, options)
+ update_auto_fit_data @rows.last.cells
+ yield @rows.last if block_given?
+ @rows.last
+ end
+
+ # Adds a chart to this worksheets drawing.
+ # @param [Class] chart_type
+ # @option options [Array] start_at
+ # @option options [Array] end_at
+ # @option options [Cell, String] title
+ def add_chart(chart_type, options={})
+ chart = drawing.add_chart(chart_type, options)
+ yield chart if block_given?
+ chart
+ end
+
+ # Serializes the worksheet document
+ # @return [String]
+ def to_xml
+ builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
+ xml.worksheet(:xmlns => XML_NS, :'xmlns:r' => XML_NS_R) {
+ if @auto_fit_data.size > 0
+ xml.cols {
+ @auto_fit_data.each_with_index do |col, index|
+ min_max = index+1
+ xml.col(:min=>min_max, :max=>min_max, :width => auto_width(col), :customWidth=>"true")
+ end
+ }
+ end
+ xml.sheetData {
+ @rows.each do |row|
+ row.to_xml(xml)
+ end
+ }
+ xml.drawing :"r:id"=>"rId1" if @drawing
+ }
+ end
+ builder.to_xml(:indent=>0, :save_with=>0)
+ end
+
+ # The worksheet's relationships.
+ def relationships
+ r = Relationships.new
+ r << Relationship.new(DRAWING_R, "../#{@drawing.pn}") if @drawing
+ r
+ end
+
+ private
+
+ # assigns the owner workbook for this worksheet
+ def workbook=(v) DataTypeValidator.validate "Worksheet.workbook", Workbook, v; @workbook = v; end
+
+ # Updates auto fit data.
+ # Autofit data attempts to determine the cell in a column that has the greatest width by comparing the length of the text multiplied by the size of the font.
+ # @return [Array] of Cell objects
+ # @param [Array] cells an array of cells
+ def update_auto_fit_data(cells)
+ styles = self.workbook.styles
+ cellXfs, fonts = styles.cellXfs, styles.fonts
+ sz = fonts[0].sz
+
+ cells.each_with_index do |item, index|
+ col = @auto_fit_data[index] || {:longest=>"", :sz=>sz}
+ cell_xf = cellXfs[item.style]
+ font = fonts[cell_xf.fontId || 0]
+ sz = font.sz || sz
+
+ if (col[:longest].scan(/./mu).size * col[:sz]) < (item.value.to_s.scan(/./mu).size * sz)
+ col[:sz] = sz
+ col[:longest] = item.value.to_s
+ end
+ @auto_fit_data[index] = col
+ end
+ cells
+ end
+
+ # Determines the proper width for a column based on content.
+ # @note
+ # From ECMA docs
+ # Column width measured as the number of characters of the maximum digit width of the numbers 0 .. 9 as
+ # rendered in the normal style's font. There are 4 pixels of margin padding (two on each side), plus 1 pixel padding for the gridlines.
+ # width = Truncate([{Number of Characters} * {Maximum Digit Width} + {5 pixel padding}]/{Maximum Digit Width}*256)/256
+ # @return [Float]
+ # @param [Hash] A hash of auto_fit_data
+ def auto_width(col)
+ mdw = 6.0 # maximum digit with is always 6.0 in testable fonts so instead of beating RMagick every time, I am hardcoding it here.
+ mdw_count = 0
+ best_guess = 1.5 #direct testing shows the results of the documented formula to be a bit too small. This is a best guess scaling
+ font_scale = col[:sz].to_f / (self.workbook.styles.fonts[0].sz.to_f || 11.0)
+ col[:longest].scan(/./mu).each do |i|
+ mdw_count +=1 if @magick_draw.get_type_metrics(i).width >= mdw
+ end
+ ((mdw_count * mdw + 5) / mdw * 256) / 256.0 * best_guess * font_scale
+ end
+ end
+end
diff --git a/lib/schema/dc.xsd b/lib/schema/dc.xsd
new file mode 100644
index 00000000..b8315e7e
--- /dev/null
+++ b/lib/schema/dc.xsd
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://purl.org/dc/elements/1.1/"
+ targetNamespace="http://purl.org/dc/elements/1.1/"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ DCMES 1.1 XML Schema
+ XML Schema for http://purl.org/dc/elements/1.1/ namespace
+
+ Created 2003-04-02
+
+ Created by
+
+ Tim Cole ([email protected])
+ Tom Habing ([email protected])
+ Jane Hunter ([email protected])
+ Pete Johnston ([email protected]),
+ Carl Lagoze ([email protected])
+
+ This schema declares XML elements for the 15 DC elements from the
+ http://purl.org/dc/elements/1.1/ namespace.
+
+ It defines a complexType SimpleLiteral which permits mixed content
+ and makes the xml:lang attribute available. It disallows child elements by
+ use of minOcccurs/maxOccurs.
+
+ However, this complexType does permit the derivation of other complexTypes
+ which would permit child elements.
+
+ All elements are declared as substitutable for the abstract element any,
+ which means that the default type for all elements is dc:SimpleLiteral.
+
+ </xs:documentation>
+
+ </xs:annotation>
+
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ </xs:import>
+
+ <xs:complexType name="SimpleLiteral">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ This is the default type for all of the DC elements.
+ It permits text content only with optional
+ xml:lang attribute.
+ Text is allowed because mixed="true", but sub-elements
+ are disallowed because minOccurs="0" and maxOccurs="0"
+ are on the xs:any tag.
+
+ This complexType allows for restriction or extension permitting
+ child elements.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent mixed="true">
+ <xs:restriction base="xs:anyType">
+ <xs:sequence>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="xml:lang" use="optional"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="any" type="SimpleLiteral" abstract="true"/>
+
+ <xs:element name="title" substitutionGroup="any"/>
+ <xs:element name="creator" substitutionGroup="any"/>
+ <xs:element name="subject" substitutionGroup="any"/>
+ <xs:element name="description" substitutionGroup="any"/>
+ <xs:element name="publisher" substitutionGroup="any"/>
+ <xs:element name="contributor" substitutionGroup="any"/>
+ <xs:element name="date" substitutionGroup="any"/>
+ <xs:element name="type" substitutionGroup="any"/>
+ <xs:element name="format" substitutionGroup="any"/>
+ <xs:element name="identifier" substitutionGroup="any"/>
+ <xs:element name="source" substitutionGroup="any"/>
+ <xs:element name="language" substitutionGroup="any"/>
+ <xs:element name="relation" substitutionGroup="any"/>
+ <xs:element name="coverage" substitutionGroup="any"/>
+ <xs:element name="rights" substitutionGroup="any"/>
+
+ <xs:group name="elementsGroup">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ This group is included as a convenience for schema authors
+ who need to refer to all the elements in the
+ http://purl.org/dc/elements/1.1/ namespace.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="any"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:complexType name="elementContainer">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ This complexType is included as a convenience for schema authors who need to define a root
+ or container element for all of the DC elements.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:choice>
+ <xs:group ref="elementsGroup"/>
+ </xs:choice>
+ </xs:complexType>
+
+
+</xs:schema>
diff --git a/lib/schema/dcmitype.xsd b/lib/schema/dcmitype.xsd
new file mode 100644
index 00000000..54d9da00
--- /dev/null
+++ b/lib/schema/dcmitype.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://purl.org/dc/dcmitype/"
+ targetNamespace="http://purl.org/dc/dcmitype/"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ DCMI Type Vocabulary XML Schema
+ XML Schema for http://purl.org/dc/dcmitype/ namespace
+
+ Created 2003-04-02
+
+ Created by
+
+ Tim Cole ([email protected])
+ Tom Habing ([email protected])
+ Jane Hunter ([email protected])
+ Pete Johnston ([email protected]),
+ Carl Lagoze ([email protected])
+
+ This schema defines a simpleType which enumerates
+ the allowable values for the DCMI Type Vocabulary.
+ </xs:documentation>
+
+
+ </xs:annotation>
+
+
+ <xs:simpleType name="DCMIType">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:Name">
+ <xs:enumeration value="Collection"/>
+ <xs:enumeration value="Dataset"/>
+ <xs:enumeration value="Event"/>
+ <xs:enumeration value="Image"/>
+ <xs:enumeration value="InteractiveResource"/>
+ <xs:enumeration value="Service"/>
+ <xs:enumeration value="Software"/>
+ <xs:enumeration value="Sound"/>
+ <xs:enumeration value="Text"/>
+ <xs:enumeration value="PhysicalObject"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+</xs:schema> \ No newline at end of file
diff --git a/lib/schema/dcterms.xsd b/lib/schema/dcterms.xsd
new file mode 100644
index 00000000..055a6edf
--- /dev/null
+++ b/lib/schema/dcterms.xsd
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:dcmitype="http://purl.org/dc/dcmitype/"
+ targetNamespace="http://purl.org/dc/terms/"
+ xmlns="http://purl.org/dc/terms/"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ DCterms XML Schema
+ XML Schema for http://purl.org/dc/terms/ namespace
+
+ Created 2003-04-02
+
+ Created by
+
+ Tim Cole ([email protected])
+ Tom Habing ([email protected])
+ Jane Hunter ([email protected])
+ Pete Johnston ([email protected]),
+ Carl Lagoze ([email protected])
+
+ This schema declares XML elements for the DC elements and
+ DC element refinements from the http://purl.org/dc/terms/ namespace.
+
+ It reuses the complexType dc:SimpleLiteral, imported from the dc.xsd
+ schema, which permits simple element content, and makes the xml:lang
+ attribute available.
+
+ This complexType permits the derivation of other complexTypes
+ which would permit child elements.
+
+ DC elements are declared as substitutable for the abstract element dc:any, and
+ DC element refinements are defined as substitutable for the base elements
+ which they refine.
+
+ This means that the default type for all XML elements (i.e. all DC elements and
+ element refinements) is dc:SimpleLiteral.
+
+ Encoding schemes are defined as complexTypes which are restrictions
+ of the dc:SimpleLiteral complexType. These complexTypes restrict
+ values to an appropriates syntax or format using data typing,
+ regular expressions, or enumerated lists.
+
+ In order to specify one of these encodings an xsi:type attribute must
+ be used in the instance document.
+
+ Also, note that one shortcoming of this approach is that any type can be
+ applied to any of the elements or refinements. There is no convenient way
+ to restrict types to specific elements using this approach.
+
+ </xs:documentation>
+
+ </xs:annotation>
+
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ </xs:import>
+
+ <xs:import namespace="http://purl.org/dc/elements/1.1/"
+ schemaLocation="dc.xsd"/>
+
+ <xs:import namespace="http://purl.org/dc/dcmitype/"
+ schemaLocation="dcmitype.xsd"/>
+
+ <xs:element name="alternative" substitutionGroup="dc:title"/>
+
+ <xs:element name="tableOfContents" substitutionGroup="dc:description"/>
+ <xs:element name="abstract" substitutionGroup="dc:description"/>
+
+ <xs:element name="created" substitutionGroup="dc:date"/>
+ <xs:element name="valid" substitutionGroup="dc:date"/>
+ <xs:element name="available" substitutionGroup="dc:date"/>
+ <xs:element name="issued" substitutionGroup="dc:date"/>
+ <xs:element name="modified" substitutionGroup="dc:date"/>
+ <xs:element name="dateAccepted" substitutionGroup="dc:date"/>
+ <xs:element name="dateCopyrighted" substitutionGroup="dc:date"/>
+ <xs:element name="dateSubmitted" substitutionGroup="dc:date"/>
+
+ <xs:element name="extent" substitutionGroup="dc:format"/>
+ <xs:element name="medium" substitutionGroup="dc:format"/>
+
+ <xs:element name="isVersionOf" substitutionGroup="dc:relation"/>
+ <xs:element name="hasVersion" substitutionGroup="dc:relation"/>
+ <xs:element name="isReplacedBy" substitutionGroup="dc:relation"/>
+ <xs:element name="replaces" substitutionGroup="dc:relation"/>
+ <xs:element name="isRequiredBy" substitutionGroup="dc:relation"/>
+ <xs:element name="requires" substitutionGroup="dc:relation"/>
+ <xs:element name="isPartOf" substitutionGroup="dc:relation"/>
+ <xs:element name="hasPart" substitutionGroup="dc:relation"/>
+ <xs:element name="isReferencedBy" substitutionGroup="dc:relation"/>
+ <xs:element name="references" substitutionGroup="dc:relation"/>
+ <xs:element name="isFormatOf" substitutionGroup="dc:relation"/>
+ <xs:element name="hasFormat" substitutionGroup="dc:relation"/>
+ <xs:element name="conformsTo" substitutionGroup="dc:relation"/>
+
+ <xs:element name="spatial" substitutionGroup="dc:coverage"/>
+ <xs:element name="temporal" substitutionGroup="dc:coverage"/>
+
+ <xs:element name="audience" substitutionGroup="dc:any"/>
+
+ <xs:element name="mediator" substitutionGroup="audience"/>
+ <xs:element name="educationLevel" substitutionGroup="audience"/>
+
+ <xs:element name="accessRights" substitutionGroup="dc:rights"/>
+
+ <xs:element name="bibliographicCitation" substitutionGroup="dc:identifier"/>
+
+ <xs:complexType name="LCSH">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="MESH">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="DDC">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="LCC">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="UDC">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="Period">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="W3CDTF">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:union memberTypes="xs:gYear xs:gYearMonth xs:date xs:dateTime"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="DCMIType">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="dcmitype:DCMIType"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="IMT">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="URI">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:anyURI"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="ISO639-2">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="RFC1766">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:language"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="RFC3066">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:language"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="Point">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="ISO3166">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="Box">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="TGN">
+ <xs:simpleContent>
+ <xs:restriction base="dc:SimpleLiteral">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:attribute ref="xml:lang" use="prohibited"/>
+ </xs:restriction>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:group name="elementsAndRefinementsGroup">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ This group is included as a convenience for schema authors
+ who need to refer to all the DC elements and element refinements
+ in the http://purl.org/dc/elements/1.1/ and
+ http://purl.org/dc/terms namespaces.
+ N.B. Refinements available via substitution groups.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="dc:any" />
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:complexType name="elementOrRefinementContainer">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+ This is included as a convenience for schema authors who need to define a root
+ or container element for all of the DC elements and element refinements.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:choice>
+ <xs:group ref="elementsAndRefinementsGroup"/>
+ </xs:choice>
+ </xs:complexType>
+
+
+</xs:schema>
diff --git a/lib/schema/dml-chart.xsd b/lib/schema/dml-chart.xsd
new file mode 100644
index 00000000..bc325f9f
--- /dev/null
+++ b/lib/schema/dml-chart.xsd
@@ -0,0 +1,1499 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
+ xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ xmlns="http://schemas.openxmlformats.org/drawingml/2006/chart"
+ xmlns:cdr="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"
+ xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/chart"
+ elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ schemaLocation="shared-relationshipReference.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
+ schemaLocation="dml-main.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"
+ schemaLocation="dml-chartDrawing.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:complexType name="CT_Boolean">
+ <xsd:attribute name="val" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Double">
+ <xsd:attribute name="val" type="xsd:double" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_UnsignedInt">
+ <xsd:attribute name="val" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RelId">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Extension">
+ <xsd:sequence>
+ <xsd:any processContents="lax"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="xsd:token"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExtensionList">
+ <xsd:sequence>
+ <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumVal">
+ <xsd:sequence>
+ <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="idx" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="formatCode" type="s:ST_Xstring" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumData">
+ <xsd:sequence>
+ <xsd:element name="formatCode" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ptCount" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pt" type="CT_NumVal" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumRef">
+ <xsd:sequence>
+ <xsd:element name="f" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="numCache" type="CT_NumData" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumDataSource">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="numRef" type="CT_NumRef" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="numLit" type="CT_NumData" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StrVal">
+ <xsd:sequence>
+ <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="idx" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StrData">
+ <xsd:sequence>
+ <xsd:element name="ptCount" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pt" type="CT_StrVal" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StrRef">
+ <xsd:sequence>
+ <xsd:element name="f" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="strCache" type="CT_StrData" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Tx">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="strRef" type="CT_StrRef" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="rich" type="a:CT_TextBody" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextLanguageID">
+ <xsd:attribute name="val" type="s:ST_Lang" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Lvl">
+ <xsd:sequence>
+ <xsd:element name="pt" type="CT_StrVal" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MultiLvlStrData">
+ <xsd:sequence>
+ <xsd:element name="ptCount" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MultiLvlStrRef">
+ <xsd:sequence>
+ <xsd:element name="f" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="multiLvlStrCache" type="CT_MultiLvlStrData" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AxDataSource">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="multiLvlStrRef" type="CT_MultiLvlStrRef" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="numRef" type="CT_NumRef" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="numLit" type="CT_NumData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="strRef" type="CT_StrRef" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="strLit" type="CT_StrData" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SerTx">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="strRef" type="CT_StrRef" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LayoutTarget">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="inner"/>
+ <xsd:enumeration value="outer"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LayoutTarget">
+ <xsd:attribute name="val" type="ST_LayoutTarget" default="outer"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LayoutMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="edge"/>
+ <xsd:enumeration value="factor"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LayoutMode">
+ <xsd:attribute name="val" type="ST_LayoutMode" default="factor"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ManualLayout">
+ <xsd:sequence>
+ <xsd:element name="layoutTarget" type="CT_LayoutTarget" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="xMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="yMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="wMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="x" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="y" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="w" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="h" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Layout">
+ <xsd:sequence>
+ <xsd:element name="manualLayout" type="CT_ManualLayout" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Title">
+ <xsd:sequence>
+ <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="overlay" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_RotX">
+ <xsd:restriction base="xsd:byte">
+ <xsd:minInclusive value="-90"/>
+ <xsd:maxInclusive value="90"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_RotX">
+ <xsd:attribute name="val" type="ST_RotX" default="0"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_HPercent">
+ <xsd:union memberTypes="ST_HPercentWithSymbol ST_HPercentUShort"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HPercentWithSymbol">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0*(([5-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HPercentUShort">
+ <xsd:restriction base="xsd:unsignedShort">
+ <xsd:minInclusive value="5"/>
+ <xsd:maxInclusive value="500"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_HPercent">
+ <xsd:attribute name="val" type="ST_HPercent" default="100%"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_RotY">
+ <xsd:restriction base="xsd:unsignedShort">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="360"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_RotY">
+ <xsd:attribute name="val" type="ST_RotY" default="0"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DepthPercent">
+ <xsd:union memberTypes="ST_DepthPercentWithSymbol ST_DepthPercentUShort"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DepthPercentWithSymbol">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0*(([2-9][0-9])|([1-9][0-9][0-9])|(1[0-9][0-9][0-9])|2000)%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DepthPercentUShort">
+ <xsd:restriction base="xsd:unsignedShort">
+ <xsd:minInclusive value="20"/>
+ <xsd:maxInclusive value="2000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DepthPercent">
+ <xsd:attribute name="val" type="ST_DepthPercent" default="100%"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Perspective">
+ <xsd:restriction base="xsd:unsignedByte">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="240"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Perspective">
+ <xsd:attribute name="val" type="ST_Perspective" default="30"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_View3D">
+ <xsd:sequence>
+ <xsd:element name="rotX" type="CT_RotX" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hPercent" type="CT_HPercent" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rotY" type="CT_RotY" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="depthPercent" type="CT_DepthPercent" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rAngAx" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="perspective" type="CT_Perspective" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Surface">
+ <xsd:sequence>
+ <xsd:element name="thickness" type="CT_Thickness" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Thickness">
+ <xsd:union memberTypes="ST_ThicknessPercent xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ThicknessPercent">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="([0-9]+)%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Thickness">
+ <xsd:attribute name="val" type="ST_Thickness" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DTable">
+ <xsd:sequence>
+ <xsd:element name="showHorzBorder" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showVertBorder" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showOutline" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showKeys" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_GapAmount">
+ <xsd:union memberTypes="ST_GapAmountPercent ST_GapAmountUShort"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_GapAmountPercent">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0*(([0-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_GapAmountUShort">
+ <xsd:restriction base="xsd:unsignedShort">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="500"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_GapAmount">
+ <xsd:attribute name="val" type="ST_GapAmount" default="150%"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Overlap">
+ <xsd:union memberTypes="ST_OverlapPercent ST_OverlapByte"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OverlapPercent">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="(-?0*(([0-9])|([1-9][0-9])|100))%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OverlapByte">
+ <xsd:restriction base="xsd:byte">
+ <xsd:minInclusive value="-100"/>
+ <xsd:maxInclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Overlap">
+ <xsd:attribute name="val" type="ST_Overlap" default="0%"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BubbleScale">
+ <xsd:union memberTypes="ST_BubbleScalePercent ST_BubbleScaleUInt"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_BubbleScalePercent">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0*(([0-9])|([1-9][0-9])|([1-2][0-9][0-9])|300)%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_BubbleScaleUInt">
+ <xsd:restriction base="xsd:unsignedInt">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="300"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_BubbleScale">
+ <xsd:attribute name="val" type="ST_BubbleScale" default="100%"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SizeRepresents">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="area"/>
+ <xsd:enumeration value="w"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SizeRepresents">
+ <xsd:attribute name="val" type="ST_SizeRepresents" default="area"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FirstSliceAng">
+ <xsd:restriction base="xsd:unsignedShort">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="360"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FirstSliceAng">
+ <xsd:attribute name="val" type="ST_FirstSliceAng" default="0"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_HoleSize">
+ <xsd:union memberTypes="ST_HoleSizePercent ST_HoleSizeUByte"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HoleSizePercent">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0*([1-9]|([1-8][0-9])|90)%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HoleSizeUByte">
+ <xsd:restriction base="xsd:unsignedByte">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxInclusive value="90"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_HoleSize">
+ <xsd:attribute name="val" type="ST_HoleSize" default="10%"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SplitType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="cust"/>
+ <xsd:enumeration value="percent"/>
+ <xsd:enumeration value="pos"/>
+ <xsd:enumeration value="val"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SplitType">
+ <xsd:attribute name="val" type="ST_SplitType" default="auto"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustSplit">
+ <xsd:sequence>
+ <xsd:element name="secondPiePt" type="CT_UnsignedInt" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SecondPieSize">
+ <xsd:union memberTypes="ST_SecondPieSizePercent ST_SecondPieSizeUShort"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SecondPieSizePercent">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0*(([5-9])|([1-9][0-9])|(1[0-9][0-9])|200)%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SecondPieSizeUShort">
+ <xsd:restriction base="xsd:unsignedShort">
+ <xsd:minInclusive value="5"/>
+ <xsd:maxInclusive value="200"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SecondPieSize">
+ <xsd:attribute name="val" type="ST_SecondPieSize" default="75%"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumFmt">
+ <xsd:attribute name="formatCode" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="sourceLinked" type="xsd:boolean"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LblAlgn">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="r"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LblAlgn">
+ <xsd:attribute name="val" type="ST_LblAlgn" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DLblPos">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="bestFit"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="inBase"/>
+ <xsd:enumeration value="inEnd"/>
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="outEnd"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="t"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DLblPos">
+ <xsd:attribute name="val" type="ST_DLblPos" use="required"/>
+ </xsd:complexType>
+ <xsd:group name="EG_DLblShared">
+ <xsd:sequence>
+ <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dLblPos" type="CT_DLblPos" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showLegendKey" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showVal" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showCatName" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showSerName" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showPercent" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showBubbleSize" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="separator" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="Group_DLbl">
+ <xsd:sequence>
+ <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_DLblShared" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_DLbl">
+ <xsd:sequence>
+ <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:choice>
+ <xsd:element name="delete" type="CT_Boolean" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="Group_DLbl" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="Group_DLbls">
+ <xsd:sequence>
+ <xsd:group ref="EG_DLblShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="showLeaderLines" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="leaderLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_DLbls">
+ <xsd:sequence>
+ <xsd:element name="dLbl" type="CT_DLbl" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:choice>
+ <xsd:element name="delete" type="CT_Boolean" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="Group_DLbls" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MarkerStyle">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="circle"/>
+ <xsd:enumeration value="dash"/>
+ <xsd:enumeration value="diamond"/>
+ <xsd:enumeration value="dot"/>
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="picture"/>
+ <xsd:enumeration value="plus"/>
+ <xsd:enumeration value="square"/>
+ <xsd:enumeration value="star"/>
+ <xsd:enumeration value="triangle"/>
+ <xsd:enumeration value="x"/>
+ <xsd:enumeration value="auto"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MarkerStyle">
+ <xsd:attribute name="val" type="ST_MarkerStyle" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MarkerSize">
+ <xsd:restriction base="xsd:unsignedByte">
+ <xsd:minInclusive value="2"/>
+ <xsd:maxInclusive value="72"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MarkerSize">
+ <xsd:attribute name="val" type="ST_MarkerSize" default="5"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Marker">
+ <xsd:sequence>
+ <xsd:element name="symbol" type="CT_MarkerStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="size" type="CT_MarkerSize" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DPt">
+ <xsd:sequence>
+ <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="invertIfNegative" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bubble3D" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="explosion" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TrendlineType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="exp"/>
+ <xsd:enumeration value="linear"/>
+ <xsd:enumeration value="log"/>
+ <xsd:enumeration value="movingAvg"/>
+ <xsd:enumeration value="poly"/>
+ <xsd:enumeration value="power"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TrendlineType">
+ <xsd:attribute name="val" type="ST_TrendlineType" default="linear"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Order">
+ <xsd:restriction base="xsd:unsignedByte">
+ <xsd:minInclusive value="2"/>
+ <xsd:maxInclusive value="6"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Order">
+ <xsd:attribute name="val" type="ST_Order" default="2"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Period">
+ <xsd:restriction base="xsd:unsignedInt">
+ <xsd:minInclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Period">
+ <xsd:attribute name="val" type="ST_Period" default="2"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TrendlineLbl">
+ <xsd:sequence>
+ <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Trendline">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trendlineType" type="CT_TrendlineType" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="order" type="CT_Order" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="period" type="CT_Period" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="forward" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="backward" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="intercept" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dispRSqr" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dispEq" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trendlineLbl" type="CT_TrendlineLbl" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ErrDir">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="x"/>
+ <xsd:enumeration value="y"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ErrDir">
+ <xsd:attribute name="val" type="ST_ErrDir" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ErrBarType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="both"/>
+ <xsd:enumeration value="minus"/>
+ <xsd:enumeration value="plus"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ErrBarType">
+ <xsd:attribute name="val" type="ST_ErrBarType" default="both"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ErrValType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="cust"/>
+ <xsd:enumeration value="fixedVal"/>
+ <xsd:enumeration value="percentage"/>
+ <xsd:enumeration value="stdDev"/>
+ <xsd:enumeration value="stdErr"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ErrValType">
+ <xsd:attribute name="val" type="ST_ErrValType" default="fixedVal"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ErrBars">
+ <xsd:sequence>
+ <xsd:element name="errDir" type="CT_ErrDir" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="errBarType" type="CT_ErrBarType" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="errValType" type="CT_ErrValType" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="noEndCap" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="plus" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="minus" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="val" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_UpDownBar">
+ <xsd:sequence>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_UpDownBars">
+ <xsd:sequence>
+ <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="upBars" type="CT_UpDownBar" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="downBars" type="CT_UpDownBar" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_SerShared">
+ <xsd:sequence>
+ <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="order" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="tx" type="CT_SerTx" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_LineSer">
+ <xsd:sequence>
+ <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="smooth" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ScatterSer">
+ <xsd:sequence>
+ <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="2"/>
+ <xsd:element name="xVal" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="yVal" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="smooth" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RadarSer">
+ <xsd:sequence>
+ <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BarSer">
+ <xsd:sequence>
+ <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="invertIfNegative" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AreaSer">
+ <xsd:sequence>
+ <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="2"/>
+ <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PieSer">
+ <xsd:sequence>
+ <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="explosion" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BubbleSer">
+ <xsd:sequence>
+ <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="invertIfNegative" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="2"/>
+ <xsd:element name="xVal" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="yVal" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bubbleSize" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bubble3D" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SurfaceSer">
+ <xsd:sequence>
+ <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Grouping">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="percentStacked"/>
+ <xsd:enumeration value="standard"/>
+ <xsd:enumeration value="stacked"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Grouping">
+ <xsd:attribute name="val" type="ST_Grouping" default="standard"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ChartLines">
+ <xsd:sequence>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_LineChartShared">
+ <xsd:sequence>
+ <xsd:element name="grouping" type="CT_Grouping" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ser" type="CT_LineSer" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dropLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_LineChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_LineChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hiLowLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="upDownBars" type="CT_UpDownBars" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="marker" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="smooth" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Line3DChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_LineChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gapDepth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="3" maxOccurs="3"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StockChart">
+ <xsd:sequence>
+ <xsd:element name="ser" type="CT_LineSer" minOccurs="3" maxOccurs="4"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dropLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hiLowLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="upDownBars" type="CT_UpDownBars" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ScatterStyle">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="line"/>
+ <xsd:enumeration value="lineMarker"/>
+ <xsd:enumeration value="marker"/>
+ <xsd:enumeration value="smooth"/>
+ <xsd:enumeration value="smoothMarker"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ScatterStyle">
+ <xsd:attribute name="val" type="ST_ScatterStyle" default="marker"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ScatterChart">
+ <xsd:sequence>
+ <xsd:element name="scatterStyle" type="CT_ScatterStyle" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ser" type="CT_ScatterSer" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_RadarStyle">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="standard"/>
+ <xsd:enumeration value="marker"/>
+ <xsd:enumeration value="filled"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_RadarStyle">
+ <xsd:attribute name="val" type="ST_RadarStyle" default="standard"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RadarChart">
+ <xsd:sequence>
+ <xsd:element name="radarStyle" type="CT_RadarStyle" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ser" type="CT_RadarSer" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BarGrouping">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="percentStacked"/>
+ <xsd:enumeration value="clustered"/>
+ <xsd:enumeration value="standard"/>
+ <xsd:enumeration value="stacked"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_BarGrouping">
+ <xsd:attribute name="val" type="ST_BarGrouping" default="clustered"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BarDir">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="bar"/>
+ <xsd:enumeration value="col"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_BarDir">
+ <xsd:attribute name="val" type="ST_BarDir" default="col"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Shape">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="cone"/>
+ <xsd:enumeration value="coneToMax"/>
+ <xsd:enumeration value="box"/>
+ <xsd:enumeration value="cylinder"/>
+ <xsd:enumeration value="pyramid"/>
+ <xsd:enumeration value="pyramidToMax"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Shape">
+ <xsd:attribute name="val" type="ST_Shape" default="box"/>
+ </xsd:complexType>
+ <xsd:group name="EG_BarChartShared">
+ <xsd:sequence>
+ <xsd:element name="barDir" type="CT_BarDir" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="grouping" type="CT_BarGrouping" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ser" type="CT_BarSer" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_BarChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_BarChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="overlap" type="CT_Overlap" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="serLines" type="CT_ChartLines" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Bar3DChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_BarChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="gapDepth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="3"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_AreaChartShared">
+ <xsd:sequence>
+ <xsd:element name="grouping" type="CT_Grouping" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ser" type="CT_AreaSer" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dropLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_AreaChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_AreaChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Area3DChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_AreaChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gapDepth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="3"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_PieChartShared">
+ <xsd:sequence>
+ <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ser" type="CT_PieSer" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_PieChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="firstSliceAng" type="CT_FirstSliceAng" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Pie3DChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DoughnutChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="firstSliceAng" type="CT_FirstSliceAng" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="holeSize" type="CT_HoleSize" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_OfPieType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="pie"/>
+ <xsd:enumeration value="bar"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_OfPieType">
+ <xsd:attribute name="val" type="ST_OfPieType" default="pie"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OfPieChart">
+ <xsd:sequence>
+ <xsd:element name="ofPieType" type="CT_OfPieType" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="splitType" type="CT_SplitType" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="splitPos" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="custSplit" type="CT_CustSplit" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="secondPieSize" type="CT_SecondPieSize" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="serLines" type="CT_ChartLines" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BubbleChart">
+ <xsd:sequence>
+ <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ser" type="CT_BubbleSer" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bubble3D" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bubbleScale" type="CT_BubbleScale" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showNegBubbles" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sizeRepresents" type="CT_SizeRepresents" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BandFmt">
+ <xsd:sequence>
+ <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BandFmts">
+ <xsd:sequence>
+ <xsd:element name="bandFmt" type="CT_BandFmt" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_SurfaceChartShared">
+ <xsd:sequence>
+ <xsd:element name="wireframe" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ser" type="CT_SurfaceSer" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="bandFmts" type="CT_BandFmts" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_SurfaceChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_SurfaceChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="3"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Surface3DChart">
+ <xsd:sequence>
+ <xsd:group ref="EG_SurfaceChartShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="3" maxOccurs="3"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_AxPos">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="t"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_AxPos">
+ <xsd:attribute name="val" type="ST_AxPos" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Crosses">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="autoZero"/>
+ <xsd:enumeration value="max"/>
+ <xsd:enumeration value="min"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Crosses">
+ <xsd:attribute name="val" type="ST_Crosses" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_CrossBetween">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="between"/>
+ <xsd:enumeration value="midCat"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_CrossBetween">
+ <xsd:attribute name="val" type="ST_CrossBetween" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TickMark">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="cross"/>
+ <xsd:enumeration value="in"/>
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="out"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TickMark">
+ <xsd:attribute name="val" type="ST_TickMark" default="cross"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TickLblPos">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="high"/>
+ <xsd:enumeration value="low"/>
+ <xsd:enumeration value="nextTo"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TickLblPos">
+ <xsd:attribute name="val" type="ST_TickLblPos" default="nextTo"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Skip">
+ <xsd:restriction base="xsd:unsignedInt">
+ <xsd:minInclusive value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Skip">
+ <xsd:attribute name="val" type="ST_Skip" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TimeUnit">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="days"/>
+ <xsd:enumeration value="months"/>
+ <xsd:enumeration value="years"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TimeUnit">
+ <xsd:attribute name="val" type="ST_TimeUnit" default="days"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_AxisUnit">
+ <xsd:restriction base="xsd:double">
+ <xsd:minExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_AxisUnit">
+ <xsd:attribute name="val" type="ST_AxisUnit" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BuiltInUnit">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="hundreds"/>
+ <xsd:enumeration value="thousands"/>
+ <xsd:enumeration value="tenThousands"/>
+ <xsd:enumeration value="hundredThousands"/>
+ <xsd:enumeration value="millions"/>
+ <xsd:enumeration value="tenMillions"/>
+ <xsd:enumeration value="hundredMillions"/>
+ <xsd:enumeration value="billions"/>
+ <xsd:enumeration value="trillions"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_BuiltInUnit">
+ <xsd:attribute name="val" type="ST_BuiltInUnit" default="thousands"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PictureFormat">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="stretch"/>
+ <xsd:enumeration value="stack"/>
+ <xsd:enumeration value="stackScale"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PictureFormat">
+ <xsd:attribute name="val" type="ST_PictureFormat" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PictureStackUnit">
+ <xsd:restriction base="xsd:double">
+ <xsd:minExclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PictureStackUnit">
+ <xsd:attribute name="val" type="ST_PictureStackUnit" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PictureOptions">
+ <xsd:sequence>
+ <xsd:element name="applyToFront" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="applyToSides" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="applyToEnd" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pictureFormat" type="CT_PictureFormat" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pictureStackUnit" type="CT_PictureStackUnit" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DispUnitsLbl">
+ <xsd:sequence>
+ <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DispUnits">
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element name="custUnit" type="CT_Double" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="builtInUnit" type="CT_BuiltInUnit" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:element name="dispUnitsLbl" type="CT_DispUnitsLbl" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Orientation">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="maxMin"/>
+ <xsd:enumeration value="minMax"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Orientation">
+ <xsd:attribute name="val" type="ST_Orientation" default="minMax"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LogBase">
+ <xsd:restriction base="xsd:double">
+ <xsd:minInclusive value="2"/>
+ <xsd:maxInclusive value="1000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LogBase">
+ <xsd:attribute name="val" type="ST_LogBase" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Scaling">
+ <xsd:sequence>
+ <xsd:element name="logBase" type="CT_LogBase" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="orientation" type="CT_Orientation" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="max" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="min" type="CT_Double" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LblOffset">
+ <xsd:union memberTypes="ST_LblOffsetPercent ST_LblOffsetUShort"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_LblOffsetPercent">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0*(([0-9])|([1-9][0-9])|([1-9][0-9][0-9])|1000)%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_LblOffsetUShort">
+ <xsd:restriction base="xsd:unsignedShort">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="1000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LblOffset">
+ <xsd:attribute name="val" type="ST_LblOffset" default="100%"/>
+ </xsd:complexType>
+ <xsd:group name="EG_AxShared">
+ <xsd:sequence>
+ <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="scaling" type="CT_Scaling" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="delete" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="axPos" type="CT_AxPos" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="majorGridlines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="minorGridlines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="title" type="CT_Title" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="majorTickMark" type="CT_TickMark" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="minorTickMark" type="CT_TickMark" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tickLblPos" type="CT_TickLblPos" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="crossAx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="crosses" type="CT_Crosses" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="crossesAt" type="CT_Double" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_CatAx">
+ <xsd:sequence>
+ <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="auto" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lblAlgn" type="CT_LblAlgn" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lblOffset" type="CT_LblOffset" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tickLblSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tickMarkSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="noMultiLvlLbl" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DateAx">
+ <xsd:sequence>
+ <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="auto" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lblOffset" type="CT_LblOffset" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="baseTimeUnit" type="CT_TimeUnit" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="majorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="majorTimeUnit" type="CT_TimeUnit" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="minorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="minorTimeUnit" type="CT_TimeUnit" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SerAx">
+ <xsd:sequence>
+ <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="tickLblSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tickMarkSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ValAx">
+ <xsd:sequence>
+ <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="crossBetween" type="CT_CrossBetween" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="majorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="minorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dispUnits" type="CT_DispUnits" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PlotArea">
+ <xsd:sequence>
+ <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/>
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="areaChart" type="CT_AreaChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="area3DChart" type="CT_Area3DChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lineChart" type="CT_LineChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="line3DChart" type="CT_Line3DChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="stockChart" type="CT_StockChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="radarChart" type="CT_RadarChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="scatterChart" type="CT_ScatterChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="pieChart" type="CT_PieChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="pie3DChart" type="CT_Pie3DChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="doughnutChart" type="CT_DoughnutChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="barChart" type="CT_BarChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="bar3DChart" type="CT_Bar3DChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="ofPieChart" type="CT_OfPieChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="surfaceChart" type="CT_SurfaceChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="surface3DChart" type="CT_Surface3DChart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="bubbleChart" type="CT_BubbleChart" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="valAx" type="CT_ValAx" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="catAx" type="CT_CatAx" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="dateAx" type="CT_DateAx" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="serAx" type="CT_SerAx" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:element name="dTable" type="CT_DTable" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotFmt">
+ <xsd:sequence>
+ <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dLbl" type="CT_DLbl" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotFmts">
+ <xsd:sequence>
+ <xsd:element name="pivotFmt" type="CT_PivotFmt" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LegendPos">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="tr"/>
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="t"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LegendPos">
+ <xsd:attribute name="val" type="ST_LegendPos" default="r"/>
+ </xsd:complexType>
+ <xsd:group name="EG_LegendEntryData">
+ <xsd:sequence>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_LegendEntry">
+ <xsd:sequence>
+ <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:choice>
+ <xsd:element name="delete" type="CT_Boolean" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="EG_LegendEntryData" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Legend">
+ <xsd:sequence>
+ <xsd:element name="legendPos" type="CT_LegendPos" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="legendEntry" type="CT_LegendEntry" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="overlay" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DispBlanksAs">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="span"/>
+ <xsd:enumeration value="gap"/>
+ <xsd:enumeration value="zero"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DispBlanksAs">
+ <xsd:attribute name="val" type="ST_DispBlanksAs" default="zero"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Chart">
+ <xsd:sequence>
+ <xsd:element name="title" type="CT_Title" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="autoTitleDeleted" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pivotFmts" type="CT_PivotFmts" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="view3D" type="CT_View3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="floor" type="CT_Surface" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sideWall" type="CT_Surface" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="backWall" type="CT_Surface" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="plotArea" type="CT_PlotArea" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="legend" type="CT_Legend" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="plotVisOnly" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dispBlanksAs" type="CT_DispBlanksAs" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showDLblsOverMax" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Style">
+ <xsd:restriction base="xsd:unsignedByte">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxInclusive value="48"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Style">
+ <xsd:attribute name="val" type="ST_Style" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotSource">
+ <xsd:sequence>
+ <xsd:element name="name" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fmtId" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Protection">
+ <xsd:sequence>
+ <xsd:element name="chartObject" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="data" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="formatting" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="selection" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="userInterface" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_HeaderFooter">
+ <xsd:sequence>
+ <xsd:element name="oddHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="oddFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="evenHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="evenFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="firstHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="firstFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="alignWithMargins" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="differentOddEven" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="differentFirst" type="xsd:boolean" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageMargins">
+ <xsd:attribute name="l" type="xsd:double" use="required"/>
+ <xsd:attribute name="r" type="xsd:double" use="required"/>
+ <xsd:attribute name="t" type="xsd:double" use="required"/>
+ <xsd:attribute name="b" type="xsd:double" use="required"/>
+ <xsd:attribute name="header" type="xsd:double" use="required"/>
+ <xsd:attribute name="footer" type="xsd:double" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PageSetupOrientation">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="portrait"/>
+ <xsd:enumeration value="landscape"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ExternalData">
+ <xsd:sequence>
+ <xsd:element name="autoUpdate" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageSetup">
+ <xsd:attribute name="paperSize" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="paperHeight" type="s:ST_PositiveUniversalMeasure" use="optional"/>
+ <xsd:attribute name="paperWidth" type="s:ST_PositiveUniversalMeasure" use="optional"/>
+ <xsd:attribute name="firstPageNumber" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="orientation" type="ST_PageSetupOrientation" use="optional"
+ default="default"/>
+ <xsd:attribute name="blackAndWhite" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="draft" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="useFirstPageNumber" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="horizontalDpi" type="xsd:int" use="optional" default="600"/>
+ <xsd:attribute name="verticalDpi" type="xsd:int" use="optional" default="600"/>
+ <xsd:attribute name="copies" type="xsd:unsignedInt" use="optional" default="1"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PrintSettings">
+ <xsd:sequence>
+ <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="legacyDrawingHF" type="CT_RelId" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ChartSpace">
+ <xsd:sequence>
+ <xsd:element name="date1904" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lang" type="CT_TextLanguageID" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="roundedCorners" type="CT_Boolean" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="style" type="CT_Style" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="clrMapOvr" type="a:CT_ColorMapping" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pivotSource" type="CT_PivotSource" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="protection" type="CT_Protection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="chart" type="CT_Chart" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="externalData" type="CT_ExternalData" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="printSettings" type="CT_PrintSettings" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="userShapes" type="CT_RelId" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="chartSpace" type="CT_ChartSpace"/>
+ <xsd:element name="userShapes" type="cdr:CT_Drawing"/>
+ <xsd:element name="chart" type="CT_RelId"/>
+</xsd:schema>
diff --git a/lib/schema/dml-chartDrawing.xsd b/lib/schema/dml-chartDrawing.xsd
new file mode 100644
index 00000000..afa4f463
--- /dev/null
+++ b/lib/schema/dml-chartDrawing.xsd
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
+ xmlns="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"
+ targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing"
+ elementFormDefault="qualified">
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
+ schemaLocation="dml-main.xsd"/>
+ <xsd:complexType name="CT_ShapeNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Shape">
+ <xsd:sequence>
+ <xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="macro" type="xsd:string" use="optional"/>
+ <xsd:attribute name="textlink" type="xsd:string" use="optional"/>
+ <xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ConnectorNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Connector">
+ <xsd:sequence>
+ <xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="macro" type="xsd:string" use="optional"/>
+ <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PictureNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Picture">
+ <xsd:sequence>
+ <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="macro" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GraphicFrameNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
+ minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GraphicFrame">
+ <xsd:sequence>
+ <xsd:element name="nvGraphicFramePr" type="CT_GraphicFrameNonVisual" minOccurs="1"
+ maxOccurs="1"/>
+ <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="macro" type="xsd:string" use="optional"/>
+ <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupShapeNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupShape">
+ <xsd:sequence>
+ <xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="sp" type="CT_Shape"/>
+ <xsd:element name="grpSp" type="CT_GroupShape"/>
+ <xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
+ <xsd:element name="cxnSp" type="CT_Connector"/>
+ <xsd:element name="pic" type="CT_Picture"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_ObjectChoices">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="sp" type="CT_Shape"/>
+ <xsd:element name="grpSp" type="CT_GroupShape"/>
+ <xsd:element name="graphicFrame" type="CT_GraphicFrame"/>
+ <xsd:element name="cxnSp" type="CT_Connector"/>
+ <xsd:element name="pic" type="CT_Picture"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:simpleType name="ST_MarkerCoordinate">
+ <xsd:restriction base="xsd:double">
+ <xsd:minInclusive value="0.0"/>
+ <xsd:maxInclusive value="1.0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Marker">
+ <xsd:sequence>
+ <xsd:element name="x" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="y" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RelSizeAnchor">
+ <xsd:sequence>
+ <xsd:element name="from" type="CT_Marker"/>
+ <xsd:element name="to" type="CT_Marker"/>
+ <xsd:group ref="EG_ObjectChoices"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AbsSizeAnchor">
+ <xsd:sequence>
+ <xsd:element name="from" type="CT_Marker"/>
+ <xsd:element name="ext" type="a:CT_PositiveSize2D"/>
+ <xsd:group ref="EG_ObjectChoices"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_Anchor">
+ <xsd:choice>
+ <xsd:element name="relSizeAnchor" type="CT_RelSizeAnchor"/>
+ <xsd:element name="absSizeAnchor" type="CT_AbsSizeAnchor"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_Drawing">
+ <xsd:sequence>
+ <xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/lib/schema/dml-compatibility.xsd b/lib/schema/dml-compatibility.xsd
new file mode 100644
index 00000000..eb3fd3ee
--- /dev/null
+++ b/lib/schema/dml-compatibility.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.openxmlformats.org/drawingml/2006/compatibility"
+ 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/compatibility">
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
+ schemaLocation="dml-main.xsd"/>
+ <xsd:complexType name="CT_Compat">
+ <xsd:attribute name="spid" type="a:ST_ShapeID" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="legacyDrawing" type="CT_Compat"/>
+</xsd:schema>
diff --git a/lib/schema/dml-diagram.xsd b/lib/schema/dml-diagram.xsd
new file mode 100644
index 00000000..cfd0e87f
--- /dev/null
+++ b/lib/schema/dml-diagram.xsd
@@ -0,0 +1,1091 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ 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">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ schemaLocation="shared-relationshipReference.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
+ schemaLocation="dml-main.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:complexType name="CT_CTName">
+ <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="val" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CTDescription">
+ <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="val" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CTCategory">
+ <xsd:attribute name="type" type="xsd:anyURI" use="required"/>
+ <xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CTCategories">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="cat" type="CT_CTCategory" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ClrAppMethod">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="span"/>
+ <xsd:enumeration value="cycle"/>
+ <xsd:enumeration value="repeat"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HueDir">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="cw"/>
+ <xsd:enumeration value="ccw"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Colors">
+ <xsd:sequence>
+ <xsd:group ref="a:EG_ColorChoice" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="meth" type="ST_ClrAppMethod" use="optional" default="span"/>
+ <xsd:attribute name="hueDir" type="ST_HueDir" use="optional" default="cw"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CTStyleLabel">
+ <xsd:sequence>
+ <xsd:element name="fillClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="linClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="effectClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txLinClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txFillClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txEffectClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorTransform">
+ <xsd:sequence>
+ <xsd:element name="title" type="CT_CTName" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="desc" type="CT_CTDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="catLst" type="CT_CTCategories" minOccurs="0"/>
+ <xsd:element name="styleLbl" type="CT_CTStyleLabel" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="minVer" type="xsd:string" use="optional"
+ default="http://schemas.openxmlformats.org/drawingml/2006/diagram"/>
+ </xsd:complexType>
+ <xsd:element name="colorsDef" type="CT_ColorTransform"/>
+ <xsd:complexType name="CT_ColorTransformHeader">
+ <xsd:sequence>
+ <xsd:element name="title" type="CT_CTName" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="desc" type="CT_CTDescription" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="catLst" type="CT_CTCategories" minOccurs="0"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="uniqueId" type="xsd:string" use="required"/>
+ <xsd:attribute name="minVer" type="xsd:string" use="optional"
+ default="http://schemas.openxmlformats.org/drawingml/2006/diagram"/>
+ <xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:element name="colorsDefHdr" type="CT_ColorTransformHeader"/>
+ <xsd:complexType name="CT_ColorTransformHeaderLst">
+ <xsd:sequence>
+ <xsd:element name="colorsDefHdr" type="CT_ColorTransformHeader" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="colorsDefHdrLst" type="CT_ColorTransformHeaderLst"/>
+ <xsd:simpleType name="ST_PtType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="node"/>
+ <xsd:enumeration value="asst"/>
+ <xsd:enumeration value="doc"/>
+ <xsd:enumeration value="pres"/>
+ <xsd:enumeration value="parTrans"/>
+ <xsd:enumeration value="sibTrans"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Pt">
+ <xsd:sequence>
+ <xsd:element name="prSet" type="CT_ElemPropSet" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="t" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="modelId" type="ST_ModelId" use="required"/>
+ <xsd:attribute name="type" type="ST_PtType" use="optional" default="node"/>
+ <xsd:attribute name="cxnId" type="ST_ModelId" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PtList">
+ <xsd:sequence>
+ <xsd:element name="pt" type="CT_Pt" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_CxnType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="parOf"/>
+ <xsd:enumeration value="presOf"/>
+ <xsd:enumeration value="presParOf"/>
+ <xsd:enumeration value="unknownRelationship"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Cxn">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="modelId" type="ST_ModelId" use="required"/>
+ <xsd:attribute name="type" type="ST_CxnType" use="optional" default="parOf"/>
+ <xsd:attribute name="srcId" type="ST_ModelId" use="required"/>
+ <xsd:attribute name="destId" type="ST_ModelId" use="required"/>
+ <xsd:attribute name="srcOrd" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="destOrd" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="parTransId" type="ST_ModelId" use="optional" default="0"/>
+ <xsd:attribute name="sibTransId" type="ST_ModelId" use="optional" default="0"/>
+ <xsd:attribute name="presId" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CxnList">
+ <xsd:sequence>
+ <xsd:element name="cxn" type="CT_Cxn" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataModel">
+ <xsd:sequence>
+ <xsd:element name="ptLst" type="CT_PtList"/>
+ <xsd:element name="cxnLst" type="CT_CxnList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bg" type="a:CT_BackgroundFormatting" minOccurs="0"/>
+ <xsd:element name="whole" type="a:CT_WholeE2oFormatting" minOccurs="0"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="dataModel" type="CT_DataModel"/>
+ <xsd:attributeGroup name="AG_IteratorAttributes">
+ <xsd:attribute name="axis" type="ST_AxisTypes" use="optional" default="none"/>
+ <xsd:attribute name="ptType" type="ST_ElementTypes" use="optional" default="all"/>
+ <xsd:attribute name="hideLastTrans" type="ST_Booleans" use="optional" default="true"/>
+ <xsd:attribute name="st" type="ST_Ints" use="optional" default="1"/>
+ <xsd:attribute name="cnt" type="ST_UnsignedInts" use="optional" default="0"/>
+ <xsd:attribute name="step" type="ST_Ints" use="optional" default="1"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_ConstraintAttributes">
+ <xsd:attribute name="type" type="ST_ConstraintType" use="required"/>
+ <xsd:attribute name="for" type="ST_ConstraintRelationship" use="optional" default="self"/>
+ <xsd:attribute name="forName" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="ptType" type="ST_ElementType" use="optional" default="all"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_ConstraintRefAttributes">
+ <xsd:attribute name="refType" type="ST_ConstraintType" use="optional" default="none"/>
+ <xsd:attribute name="refFor" type="ST_ConstraintRelationship" use="optional" default="self"/>
+ <xsd:attribute name="refForName" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="refPtType" type="ST_ElementType" use="optional" default="all"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="CT_Constraint">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_ConstraintAttributes"/>
+ <xsd:attributeGroup ref="AG_ConstraintRefAttributes"/>
+ <xsd:attribute name="op" type="ST_BoolOperator" use="optional" default="none"/>
+ <xsd:attribute name="val" type="xsd:double" use="optional" default="0"/>
+ <xsd:attribute name="fact" type="xsd:double" use="optional" default="1"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Constraints">
+ <xsd:sequence>
+ <xsd:element name="constr" type="CT_Constraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumericRule">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_ConstraintAttributes"/>
+ <xsd:attribute name="val" type="xsd:double" use="optional" default="NaN"/>
+ <xsd:attribute name="fact" type="xsd:double" use="optional" default="NaN"/>
+ <xsd:attribute name="max" type="xsd:double" use="optional" default="NaN"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Rules">
+ <xsd:sequence>
+ <xsd:element name="rule" type="CT_NumericRule" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PresentationOf">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_IteratorAttributes"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LayoutShapeType" final="restriction">
+ <xsd:union memberTypes="a:ST_ShapeType ST_OutputShapeType"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Index1">
+ <xsd:restriction base="xsd:unsignedInt">
+ <xsd:minInclusive value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Adj">
+ <xsd:attribute name="idx" type="ST_Index1" use="required"/>
+ <xsd:attribute name="val" type="xsd:double" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AdjLst">
+ <xsd:sequence>
+ <xsd:element name="adj" type="CT_Adj" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Shape">
+ <xsd:sequence>
+ <xsd:element name="adjLst" type="CT_AdjLst" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="rot" type="xsd:double" use="optional" default="0"/>
+ <xsd:attribute name="type" type="ST_LayoutShapeType" use="optional" default="none"/>
+ <xsd:attribute ref="r:blip" use="optional"/>
+ <xsd:attribute name="zOrderOff" type="xsd:int" use="optional" default="0"/>
+ <xsd:attribute name="hideGeom" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="lkTxEntry" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="blipPhldr" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Parameter">
+ <xsd:attribute name="type" type="ST_ParameterId" use="required"/>
+ <xsd:attribute name="val" type="ST_ParameterVal" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Algorithm">
+ <xsd:sequence>
+ <xsd:element name="param" type="CT_Parameter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_AlgorithmType" use="required"/>
+ <xsd:attribute name="rev" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LayoutNode">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="varLst" type="CT_LayoutVariablePropertySet" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="forEach" type="CT_ForEach"/>
+ <xsd:element name="layoutNode" type="CT_LayoutNode"/>
+ <xsd:element name="choose" type="CT_Choose"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="styleLbl" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="chOrder" type="ST_ChildOrderType" use="optional" default="b"/>
+ <xsd:attribute name="moveWith" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ForEach">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="forEach" type="CT_ForEach"/>
+ <xsd:element name="layoutNode" type="CT_LayoutNode"/>
+ <xsd:element name="choose" type="CT_Choose"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="ref" type="xsd:string" use="optional" default=""/>
+ <xsd:attributeGroup ref="AG_IteratorAttributes"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_When">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="forEach" type="CT_ForEach"/>
+ <xsd:element name="layoutNode" type="CT_LayoutNode"/>
+ <xsd:element name="choose" type="CT_Choose"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ <xsd:attributeGroup ref="AG_IteratorAttributes"/>
+ <xsd:attribute name="func" type="ST_FunctionType" use="required"/>
+ <xsd:attribute name="arg" type="ST_FunctionArgument" use="optional" default="none"/>
+ <xsd:attribute name="op" type="ST_FunctionOperator" use="required"/>
+ <xsd:attribute name="val" type="ST_FunctionValue" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Otherwise">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="forEach" type="CT_ForEach"/>
+ <xsd:element name="layoutNode" type="CT_LayoutNode"/>
+ <xsd:element name="choose" type="CT_Choose"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Choose">
+ <xsd:sequence>
+ <xsd:element name="if" type="CT_When" maxOccurs="unbounded"/>
+ <xsd:element name="else" type="CT_Otherwise" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SampleData">
+ <xsd:sequence>
+ <xsd:element name="dataModel" type="CT_DataModel" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="useDef" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Category">
+ <xsd:attribute name="type" type="xsd:anyURI" use="required"/>
+ <xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Categories">
+ <xsd:sequence>
+ <xsd:element name="cat" type="CT_Category" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Name">
+ <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="val" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Description">
+ <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="val" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DiagramDefinition">
+ <xsd:sequence>
+ <xsd:element name="title" type="CT_Name" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="desc" type="CT_Description" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="catLst" type="CT_Categories" minOccurs="0"/>
+ <xsd:element name="sampData" type="CT_SampleData" minOccurs="0"/>
+ <xsd:element name="styleData" type="CT_SampleData" minOccurs="0"/>
+ <xsd:element name="clrData" type="CT_SampleData" minOccurs="0"/>
+ <xsd:element name="layoutNode" type="CT_LayoutNode"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="minVer" type="xsd:string" use="optional"
+ default="http://schemas.openxmlformats.org/drawingml/2006/diagram"/>
+ <xsd:attribute name="defStyle" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:element name="layoutDef" type="CT_DiagramDefinition"/>
+ <xsd:complexType name="CT_DiagramDefinitionHeader">
+ <xsd:sequence>
+ <xsd:element name="title" type="CT_Name" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="desc" type="CT_Description" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="catLst" type="CT_Categories" minOccurs="0"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="uniqueId" type="xsd:string" use="required"/>
+ <xsd:attribute name="minVer" type="xsd:string" use="optional"
+ default="http://schemas.openxmlformats.org/drawingml/2006/diagram"/>
+ <xsd:attribute name="defStyle" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:element name="layoutDefHdr" type="CT_DiagramDefinitionHeader"/>
+ <xsd:complexType name="CT_DiagramDefinitionHeaderLst">
+ <xsd:sequence>
+ <xsd:element name="layoutDefHdr" type="CT_DiagramDefinitionHeader" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="layoutDefHdrLst" type="CT_DiagramDefinitionHeaderLst"/>
+ <xsd:complexType name="CT_RelIds">
+ <xsd:attribute ref="r:dm" use="required"/>
+ <xsd:attribute ref="r:lo" use="required"/>
+ <xsd:attribute ref="r:qs" use="required"/>
+ <xsd:attribute ref="r:cs" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="relIds" type="CT_RelIds"/>
+ <xsd:simpleType name="ST_ParameterVal">
+ <xsd:union
+ memberTypes="ST_DiagramHorizontalAlignment ST_VerticalAlignment ST_ChildDirection ST_ChildAlignment ST_SecondaryChildAlignment ST_LinearDirection ST_SecondaryLinearDirection ST_StartingElement ST_BendPoint ST_ConnectorRouting ST_ArrowheadStyle ST_ConnectorDimension ST_RotationPath ST_CenterShapeMapping ST_NodeHorizontalAlignment ST_NodeVerticalAlignment ST_FallbackDimension ST_TextDirection ST_PyramidAccentPosition ST_PyramidAccentTextMargin ST_TextBlockDirection ST_TextAnchorHorizontal ST_TextAnchorVertical ST_DiagramTextAlignment ST_AutoTextRotation ST_GrowDirection ST_FlowDirection ST_ContinueDirection ST_Breakpoint ST_Offset ST_HierarchyAlignment xsd:int xsd:double xsd:boolean xsd:string ST_ConnectorPoint"
+ />
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ModelId">
+ <xsd:union memberTypes="xsd:int s:ST_Guid"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PrSetCustVal">
+ <xsd:union memberTypes="s:ST_Percentage xsd:int"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ElemPropSet">
+ <xsd:sequence>
+ <xsd:element name="presLayoutVars" type="CT_LayoutVariablePropertySet" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="presAssocID" type="ST_ModelId" use="optional"/>
+ <xsd:attribute name="presName" type="xsd:string" use="optional"/>
+ <xsd:attribute name="presStyleLbl" type="xsd:string" use="optional"/>
+ <xsd:attribute name="presStyleIdx" type="xsd:int" use="optional"/>
+ <xsd:attribute name="presStyleCnt" type="xsd:int" use="optional"/>
+ <xsd:attribute name="loTypeId" type="xsd:string" use="optional"/>
+ <xsd:attribute name="loCatId" type="xsd:string" use="optional"/>
+ <xsd:attribute name="qsTypeId" type="xsd:string" use="optional"/>
+ <xsd:attribute name="qsCatId" type="xsd:string" use="optional"/>
+ <xsd:attribute name="csTypeId" type="xsd:string" use="optional"/>
+ <xsd:attribute name="csCatId" type="xsd:string" use="optional"/>
+ <xsd:attribute name="coherent3DOff" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="phldrT" type="xsd:string" use="optional"/>
+ <xsd:attribute name="phldr" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="custAng" type="xsd:int" use="optional"/>
+ <xsd:attribute name="custFlipVert" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="custFlipHor" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="custSzX" type="xsd:int" use="optional"/>
+ <xsd:attribute name="custSzY" type="xsd:int" use="optional"/>
+ <xsd:attribute name="custScaleX" type="ST_PrSetCustVal" use="optional"/>
+ <xsd:attribute name="custScaleY" type="ST_PrSetCustVal" use="optional"/>
+ <xsd:attribute name="custT" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="custLinFactX" type="ST_PrSetCustVal" use="optional"/>
+ <xsd:attribute name="custLinFactY" type="ST_PrSetCustVal" use="optional"/>
+ <xsd:attribute name="custLinFactNeighborX" type="ST_PrSetCustVal" use="optional"/>
+ <xsd:attribute name="custLinFactNeighborY" type="ST_PrSetCustVal" use="optional"/>
+ <xsd:attribute name="custRadScaleRad" type="ST_PrSetCustVal" use="optional"/>
+ <xsd:attribute name="custRadScaleInc" type="ST_PrSetCustVal" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Direction" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="norm"/>
+ <xsd:enumeration value="rev"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HierBranchStyle" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="hang"/>
+ <xsd:enumeration value="std"/>
+ <xsd:enumeration value="init"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AnimOneStr" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="one"/>
+ <xsd:enumeration value="branch"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AnimLvlStr" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="lvl"/>
+ <xsd:enumeration value="ctr"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_OrgChart">
+ <xsd:attribute name="val" type="xsd:boolean" default="false" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_NodeCount">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="-1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ChildMax">
+ <xsd:attribute name="val" type="ST_NodeCount" default="-1" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ChildPref">
+ <xsd:attribute name="val" type="ST_NodeCount" default="-1" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BulletEnabled">
+ <xsd:attribute name="val" type="xsd:boolean" default="false" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Direction">
+ <xsd:attribute name="val" type="ST_Direction" default="norm" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_HierBranchStyle">
+ <xsd:attribute name="val" type="ST_HierBranchStyle" default="std" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AnimOne">
+ <xsd:attribute name="val" type="ST_AnimOneStr" default="one" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AnimLvl">
+ <xsd:attribute name="val" type="ST_AnimLvlStr" default="none" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ResizeHandlesStr" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="exact"/>
+ <xsd:enumeration value="rel"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ResizeHandles">
+ <xsd:attribute name="val" type="ST_ResizeHandlesStr" default="rel" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LayoutVariablePropertySet">
+ <xsd:sequence>
+ <xsd:element name="orgChart" type="CT_OrgChart" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="chMax" type="CT_ChildMax" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="chPref" type="CT_ChildPref" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bulletEnabled" type="CT_BulletEnabled" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dir" type="CT_Direction" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hierBranch" type="CT_HierBranchStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="animOne" type="CT_AnimOne" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="animLvl" type="CT_AnimLvl" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="resizeHandles" type="CT_ResizeHandles" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SDName">
+ <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="val" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SDDescription">
+ <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="val" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SDCategory">
+ <xsd:attribute name="type" type="xsd:anyURI" use="required"/>
+ <xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SDCategories">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="cat" type="CT_SDCategory" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextProps">
+ <xsd:sequence>
+ <xsd:group ref="a:EG_Text3D" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StyleLabel">
+ <xsd:sequence>
+ <xsd:element name="scene3d" type="a:CT_Scene3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sp3d" type="a:CT_Shape3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txPr" type="CT_TextProps" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StyleDefinition">
+ <xsd:sequence>
+ <xsd:element name="title" type="CT_SDName" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="desc" type="CT_SDDescription" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="catLst" type="CT_SDCategories" minOccurs="0"/>
+ <xsd:element name="scene3d" type="a:CT_Scene3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="styleLbl" type="CT_StyleLabel" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="minVer" type="xsd:string" use="optional"
+ default="http://schemas.openxmlformats.org/drawingml/2006/diagram"/>
+ </xsd:complexType>
+ <xsd:element name="styleDef" type="CT_StyleDefinition"/>
+ <xsd:complexType name="CT_StyleDefinitionHeader">
+ <xsd:sequence>
+ <xsd:element name="title" type="CT_SDName" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="desc" type="CT_SDDescription" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="catLst" type="CT_SDCategories" minOccurs="0"/>
+ <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="uniqueId" type="xsd:string" use="required"/>
+ <xsd:attribute name="minVer" type="xsd:string" use="optional"
+ default="http://schemas.openxmlformats.org/drawingml/2006/diagram"/>
+ <xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:element name="styleDefHdr" type="CT_StyleDefinitionHeader"/>
+ <xsd:complexType name="CT_StyleDefinitionHeaderLst">
+ <xsd:sequence>
+ <xsd:element name="styleDefHdr" type="CT_StyleDefinitionHeader" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="styleDefHdrLst" type="CT_StyleDefinitionHeaderLst"/>
+ <xsd:simpleType name="ST_AlgorithmType" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="composite"/>
+ <xsd:enumeration value="conn"/>
+ <xsd:enumeration value="cycle"/>
+ <xsd:enumeration value="hierChild"/>
+ <xsd:enumeration value="hierRoot"/>
+ <xsd:enumeration value="pyra"/>
+ <xsd:enumeration value="lin"/>
+ <xsd:enumeration value="sp"/>
+ <xsd:enumeration value="tx"/>
+ <xsd:enumeration value="snake"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AxisType" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="self"/>
+ <xsd:enumeration value="ch"/>
+ <xsd:enumeration value="des"/>
+ <xsd:enumeration value="desOrSelf"/>
+ <xsd:enumeration value="par"/>
+ <xsd:enumeration value="ancst"/>
+ <xsd:enumeration value="ancstOrSelf"/>
+ <xsd:enumeration value="followSib"/>
+ <xsd:enumeration value="precedSib"/>
+ <xsd:enumeration value="follow"/>
+ <xsd:enumeration value="preced"/>
+ <xsd:enumeration value="root"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AxisTypes">
+ <xsd:list itemType="ST_AxisType"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_BoolOperator" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="equ"/>
+ <xsd:enumeration value="gte"/>
+ <xsd:enumeration value="lte"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ChildOrderType" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="t"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ConstraintType" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="alignOff"/>
+ <xsd:enumeration value="begMarg"/>
+ <xsd:enumeration value="bendDist"/>
+ <xsd:enumeration value="begPad"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="bMarg"/>
+ <xsd:enumeration value="bOff"/>
+ <xsd:enumeration value="ctrX"/>
+ <xsd:enumeration value="ctrXOff"/>
+ <xsd:enumeration value="ctrY"/>
+ <xsd:enumeration value="ctrYOff"/>
+ <xsd:enumeration value="connDist"/>
+ <xsd:enumeration value="diam"/>
+ <xsd:enumeration value="endMarg"/>
+ <xsd:enumeration value="endPad"/>
+ <xsd:enumeration value="h"/>
+ <xsd:enumeration value="hArH"/>
+ <xsd:enumeration value="hOff"/>
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="lMarg"/>
+ <xsd:enumeration value="lOff"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="rMarg"/>
+ <xsd:enumeration value="rOff"/>
+ <xsd:enumeration value="primFontSz"/>
+ <xsd:enumeration value="pyraAcctRatio"/>
+ <xsd:enumeration value="secFontSz"/>
+ <xsd:enumeration value="sibSp"/>
+ <xsd:enumeration value="secSibSp"/>
+ <xsd:enumeration value="sp"/>
+ <xsd:enumeration value="stemThick"/>
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="tMarg"/>
+ <xsd:enumeration value="tOff"/>
+ <xsd:enumeration value="userA"/>
+ <xsd:enumeration value="userB"/>
+ <xsd:enumeration value="userC"/>
+ <xsd:enumeration value="userD"/>
+ <xsd:enumeration value="userE"/>
+ <xsd:enumeration value="userF"/>
+ <xsd:enumeration value="userG"/>
+ <xsd:enumeration value="userH"/>
+ <xsd:enumeration value="userI"/>
+ <xsd:enumeration value="userJ"/>
+ <xsd:enumeration value="userK"/>
+ <xsd:enumeration value="userL"/>
+ <xsd:enumeration value="userM"/>
+ <xsd:enumeration value="userN"/>
+ <xsd:enumeration value="userO"/>
+ <xsd:enumeration value="userP"/>
+ <xsd:enumeration value="userQ"/>
+ <xsd:enumeration value="userR"/>
+ <xsd:enumeration value="userS"/>
+ <xsd:enumeration value="userT"/>
+ <xsd:enumeration value="userU"/>
+ <xsd:enumeration value="userV"/>
+ <xsd:enumeration value="userW"/>
+ <xsd:enumeration value="userX"/>
+ <xsd:enumeration value="userY"/>
+ <xsd:enumeration value="userZ"/>
+ <xsd:enumeration value="w"/>
+ <xsd:enumeration value="wArH"/>
+ <xsd:enumeration value="wOff"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ConstraintRelationship" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="self"/>
+ <xsd:enumeration value="ch"/>
+ <xsd:enumeration value="des"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ElementType" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="all"/>
+ <xsd:enumeration value="doc"/>
+ <xsd:enumeration value="node"/>
+ <xsd:enumeration value="norm"/>
+ <xsd:enumeration value="nonNorm"/>
+ <xsd:enumeration value="asst"/>
+ <xsd:enumeration value="nonAsst"/>
+ <xsd:enumeration value="parTrans"/>
+ <xsd:enumeration value="pres"/>
+ <xsd:enumeration value="sibTrans"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ElementTypes">
+ <xsd:list itemType="ST_ElementType"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ParameterId" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="horzAlign"/>
+ <xsd:enumeration value="vertAlign"/>
+ <xsd:enumeration value="chDir"/>
+ <xsd:enumeration value="chAlign"/>
+ <xsd:enumeration value="secChAlign"/>
+ <xsd:enumeration value="linDir"/>
+ <xsd:enumeration value="secLinDir"/>
+ <xsd:enumeration value="stElem"/>
+ <xsd:enumeration value="bendPt"/>
+ <xsd:enumeration value="connRout"/>
+ <xsd:enumeration value="begSty"/>
+ <xsd:enumeration value="endSty"/>
+ <xsd:enumeration value="dim"/>
+ <xsd:enumeration value="rotPath"/>
+ <xsd:enumeration value="ctrShpMap"/>
+ <xsd:enumeration value="nodeHorzAlign"/>
+ <xsd:enumeration value="nodeVertAlign"/>
+ <xsd:enumeration value="fallback"/>
+ <xsd:enumeration value="txDir"/>
+ <xsd:enumeration value="pyraAcctPos"/>
+ <xsd:enumeration value="pyraAcctTxMar"/>
+ <xsd:enumeration value="txBlDir"/>
+ <xsd:enumeration value="txAnchorHorz"/>
+ <xsd:enumeration value="txAnchorVert"/>
+ <xsd:enumeration value="txAnchorHorzCh"/>
+ <xsd:enumeration value="txAnchorVertCh"/>
+ <xsd:enumeration value="parTxLTRAlign"/>
+ <xsd:enumeration value="parTxRTLAlign"/>
+ <xsd:enumeration value="shpTxLTRAlignCh"/>
+ <xsd:enumeration value="shpTxRTLAlignCh"/>
+ <xsd:enumeration value="autoTxRot"/>
+ <xsd:enumeration value="grDir"/>
+ <xsd:enumeration value="flowDir"/>
+ <xsd:enumeration value="contDir"/>
+ <xsd:enumeration value="bkpt"/>
+ <xsd:enumeration value="off"/>
+ <xsd:enumeration value="hierAlign"/>
+ <xsd:enumeration value="bkPtFixedVal"/>
+ <xsd:enumeration value="stBulletLvl"/>
+ <xsd:enumeration value="stAng"/>
+ <xsd:enumeration value="spanAng"/>
+ <xsd:enumeration value="ar"/>
+ <xsd:enumeration value="lnSpPar"/>
+ <xsd:enumeration value="lnSpAfParP"/>
+ <xsd:enumeration value="lnSpCh"/>
+ <xsd:enumeration value="lnSpAfChP"/>
+ <xsd:enumeration value="rtShortDist"/>
+ <xsd:enumeration value="alignTx"/>
+ <xsd:enumeration value="pyraLvlNode"/>
+ <xsd:enumeration value="pyraAcctBkgdNode"/>
+ <xsd:enumeration value="pyraAcctTxNode"/>
+ <xsd:enumeration value="srcNode"/>
+ <xsd:enumeration value="dstNode"/>
+ <xsd:enumeration value="begPts"/>
+ <xsd:enumeration value="endPts"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Ints">
+ <xsd:list itemType="xsd:int"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_UnsignedInts">
+ <xsd:list itemType="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Booleans">
+ <xsd:list itemType="xsd:boolean"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FunctionType" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="cnt"/>
+ <xsd:enumeration value="pos"/>
+ <xsd:enumeration value="revPos"/>
+ <xsd:enumeration value="posEven"/>
+ <xsd:enumeration value="posOdd"/>
+ <xsd:enumeration value="var"/>
+ <xsd:enumeration value="depth"/>
+ <xsd:enumeration value="maxDepth"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FunctionOperator" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="equ"/>
+ <xsd:enumeration value="neq"/>
+ <xsd:enumeration value="gt"/>
+ <xsd:enumeration value="lt"/>
+ <xsd:enumeration value="gte"/>
+ <xsd:enumeration value="lte"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DiagramHorizontalAlignment" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_VerticalAlignment" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="mid"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ChildDirection" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="horz"/>
+ <xsd:enumeration value="vert"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ChildAlignment" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="r"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SecondaryChildAlignment" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="r"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_LinearDirection" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="fromL"/>
+ <xsd:enumeration value="fromR"/>
+ <xsd:enumeration value="fromT"/>
+ <xsd:enumeration value="fromB"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SecondaryLinearDirection" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="fromL"/>
+ <xsd:enumeration value="fromR"/>
+ <xsd:enumeration value="fromT"/>
+ <xsd:enumeration value="fromB"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_StartingElement" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="node"/>
+ <xsd:enumeration value="trans"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_RotationPath" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="alongPath"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CenterShapeMapping" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="fNode"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_BendPoint" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="beg"/>
+ <xsd:enumeration value="def"/>
+ <xsd:enumeration value="end"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ConnectorRouting" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="stra"/>
+ <xsd:enumeration value="bend"/>
+ <xsd:enumeration value="curve"/>
+ <xsd:enumeration value="longCurve"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ArrowheadStyle" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="arr"/>
+ <xsd:enumeration value="noArr"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ConnectorDimension" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="1D"/>
+ <xsd:enumeration value="2D"/>
+ <xsd:enumeration value="cust"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ConnectorPoint" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="bCtr"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="midL"/>
+ <xsd:enumeration value="midR"/>
+ <xsd:enumeration value="tCtr"/>
+ <xsd:enumeration value="bL"/>
+ <xsd:enumeration value="bR"/>
+ <xsd:enumeration value="tL"/>
+ <xsd:enumeration value="tR"/>
+ <xsd:enumeration value="radial"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_NodeHorizontalAlignment" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="r"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_NodeVerticalAlignment" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="mid"/>
+ <xsd:enumeration value="b"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FallbackDimension" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="1D"/>
+ <xsd:enumeration value="2D"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextDirection" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="fromT"/>
+ <xsd:enumeration value="fromB"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PyramidAccentPosition" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="bef"/>
+ <xsd:enumeration value="aft"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PyramidAccentTextMargin" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="step"/>
+ <xsd:enumeration value="stack"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextBlockDirection" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="horz"/>
+ <xsd:enumeration value="vert"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextAnchorHorizontal" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="ctr"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextAnchorVertical" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="mid"/>
+ <xsd:enumeration value="b"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DiagramTextAlignment" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="r"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AutoTextRotation" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="upr"/>
+ <xsd:enumeration value="grav"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_GrowDirection" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="tL"/>
+ <xsd:enumeration value="tR"/>
+ <xsd:enumeration value="bL"/>
+ <xsd:enumeration value="bR"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FlowDirection" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="row"/>
+ <xsd:enumeration value="col"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ContinueDirection" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="revDir"/>
+ <xsd:enumeration value="sameDir"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Breakpoint" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="endCnv"/>
+ <xsd:enumeration value="bal"/>
+ <xsd:enumeration value="fixed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Offset" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="off"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HierarchyAlignment" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="tL"/>
+ <xsd:enumeration value="tR"/>
+ <xsd:enumeration value="tCtrCh"/>
+ <xsd:enumeration value="tCtrDes"/>
+ <xsd:enumeration value="bL"/>
+ <xsd:enumeration value="bR"/>
+ <xsd:enumeration value="bCtrCh"/>
+ <xsd:enumeration value="bCtrDes"/>
+ <xsd:enumeration value="lT"/>
+ <xsd:enumeration value="lB"/>
+ <xsd:enumeration value="lCtrCh"/>
+ <xsd:enumeration value="lCtrDes"/>
+ <xsd:enumeration value="rT"/>
+ <xsd:enumeration value="rB"/>
+ <xsd:enumeration value="rCtrCh"/>
+ <xsd:enumeration value="rCtrDes"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FunctionValue" final="restriction">
+ <xsd:union
+ memberTypes="xsd:int xsd:boolean ST_Direction ST_HierBranchStyle ST_AnimOneStr ST_AnimLvlStr ST_ResizeHandlesStr"
+ />
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_VariableType" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="orgChart"/>
+ <xsd:enumeration value="chMax"/>
+ <xsd:enumeration value="chPref"/>
+ <xsd:enumeration value="bulEnabled"/>
+ <xsd:enumeration value="dir"/>
+ <xsd:enumeration value="hierBranch"/>
+ <xsd:enumeration value="animOne"/>
+ <xsd:enumeration value="animLvl"/>
+ <xsd:enumeration value="resizeHandles"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FunctionArgument" final="restriction">
+ <xsd:union memberTypes="ST_VariableType"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OutputShapeType" final="restriction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="conn"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/schema/dml-lockedCanvas.xsd b/lib/schema/dml-lockedCanvas.xsd
new file mode 100644
index 00000000..687eea82
--- /dev/null
+++ b/lib/schema/dml-lockedCanvas.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ 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">
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
+ schemaLocation="dml-main.xsd"/>
+ <xsd:element name="lockedCanvas" type="a:CT_GvmlGroupShape"/>
+</xsd:schema>
diff --git a/lib/schema/dml-main.xsd b/lib/schema/dml-main.xsd
new file mode 100644
index 00000000..74e736b2
--- /dev/null
+++ b/lib/schema/dml-main.xsd
@@ -0,0 +1,3048 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ 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">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ schemaLocation="shared-relationshipReference.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/diagram"
+ schemaLocation="dml-diagram.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/chart"
+ schemaLocation="dml-chart.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/picture"
+ schemaLocation="dml-picture.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/compatibility"
+ schemaLocation="dml-compatibility.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas"
+ schemaLocation="dml-lockedCanvas.xsd"/>
+ <xsd:complexType name="CT_AudioFile">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:link" use="required"/>
+ <xsd:attribute name="contentType" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_VideoFile">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:link" use="required"/>
+ <xsd:attribute name="contentType" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_QuickTimeFile">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:link" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AudioCDTime">
+ <xsd:attribute name="track" type="xsd:unsignedByte" use="required"/>
+ <xsd:attribute name="time" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AudioCD">
+ <xsd:sequence>
+ <xsd:element name="st" type="CT_AudioCDTime" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="end" type="CT_AudioCDTime" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_Media">
+ <xsd:choice>
+ <xsd:element name="audioCd" type="CT_AudioCD"/>
+ <xsd:element name="wavAudioFile" type="CT_EmbeddedWAVAudioFile"/>
+ <xsd:element name="audioFile" type="CT_AudioFile"/>
+ <xsd:element name="videoFile" type="CT_VideoFile"/>
+ <xsd:element name="quickTimeFile" type="CT_QuickTimeFile"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:element name="videoFile" type="CT_VideoFile"/>
+ <xsd:simpleType name="ST_StyleMatrixColumnIndex">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FontCollectionIndex">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="major"/>
+ <xsd:enumeration value="minor"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ColorSchemeIndex">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="dk1"/>
+ <xsd:enumeration value="lt1"/>
+ <xsd:enumeration value="dk2"/>
+ <xsd:enumeration value="lt2"/>
+ <xsd:enumeration value="accent1"/>
+ <xsd:enumeration value="accent2"/>
+ <xsd:enumeration value="accent3"/>
+ <xsd:enumeration value="accent4"/>
+ <xsd:enumeration value="accent5"/>
+ <xsd:enumeration value="accent6"/>
+ <xsd:enumeration value="hlink"/>
+ <xsd:enumeration value="folHlink"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ColorScheme">
+ <xsd:sequence>
+ <xsd:element name="dk1" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lt1" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="dk2" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lt2" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="accent1" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="accent2" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="accent3" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="accent4" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="accent5" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="accent6" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hlink" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="folHlink" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomColor">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SupplementalFont">
+ <xsd:attribute name="script" type="xsd:string" use="required"/>
+ <xsd:attribute name="typeface" type="ST_TextTypeface" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomColorList">
+ <xsd:sequence>
+ <xsd:element name="custClr" type="CT_CustomColor" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontCollection">
+ <xsd:sequence>
+ <xsd:element name="latin" type="CT_TextFont" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="ea" type="CT_TextFont" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cs" type="CT_TextFont" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="font" type="CT_SupplementalFont" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EffectStyleItem">
+ <xsd:sequence>
+ <xsd:group ref="EG_EffectProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontScheme">
+ <xsd:sequence>
+ <xsd:element name="majorFont" type="CT_FontCollection" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="minorFont" type="CT_FontCollection" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FillStyleList">
+ <xsd:sequence>
+ <xsd:group ref="EG_FillProperties" minOccurs="3" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LineStyleList">
+ <xsd:sequence>
+ <xsd:element name="ln" type="CT_LineProperties" minOccurs="3" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EffectStyleList">
+ <xsd:sequence>
+ <xsd:element name="effectStyle" type="CT_EffectStyleItem" minOccurs="3" maxOccurs="unbounded"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BackgroundFillStyleList">
+ <xsd:sequence>
+ <xsd:group ref="EG_FillProperties" minOccurs="3" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StyleMatrix">
+ <xsd:sequence>
+ <xsd:element name="fillStyleLst" type="CT_FillStyleList" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lnStyleLst" type="CT_LineStyleList" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="effectStyleLst" type="CT_EffectStyleList" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="bgFillStyleLst" type="CT_BackgroundFillStyleList" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BaseStyles">
+ <xsd:sequence>
+ <xsd:element name="clrScheme" type="CT_ColorScheme" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fontScheme" type="CT_FontScheme" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fmtScheme" type="CT_StyleMatrix" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OfficeArtExtension">
+ <xsd:sequence>
+ <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="xsd:token" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Coordinate">
+ <xsd:union memberTypes="ST_CoordinateUnqualified s:ST_UniversalMeasure"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CoordinateUnqualified">
+ <xsd:restriction base="xsd:long">
+ <xsd:minInclusive value="-27273042329600"/>
+ <xsd:maxInclusive value="27273042316900"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Coordinate32">
+ <xsd:union memberTypes="ST_Coordinate32Unqualified s:ST_UniversalMeasure"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Coordinate32Unqualified">
+ <xsd:restriction base="xsd:int"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PositiveCoordinate">
+ <xsd:restriction base="xsd:long">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="27273042316900"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PositiveCoordinate32">
+ <xsd:restriction base="ST_Coordinate32Unqualified">
+ <xsd:minInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Angle">
+ <xsd:restriction base="xsd:int"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Angle">
+ <xsd:attribute name="val" type="ST_Angle" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FixedAngle">
+ <xsd:restriction base="ST_Angle">
+ <xsd:minExclusive value="-5400000"/>
+ <xsd:maxExclusive value="5400000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PositiveFixedAngle">
+ <xsd:restriction base="ST_Angle">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxExclusive value="21600000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PositiveFixedAngle">
+ <xsd:attribute name="val" type="ST_PositiveFixedAngle" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Percentage">
+ <xsd:union memberTypes="ST_PercentageDecimal s:ST_Percentage"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PercentageDecimal">
+ <xsd:restriction base="xsd:int"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Percentage">
+ <xsd:attribute name="val" type="ST_Percentage" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PositivePercentage">
+ <xsd:union memberTypes="ST_PositivePercentageDecimal s:ST_PositivePercentage"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PositivePercentageDecimal">
+ <xsd:restriction base="ST_PercentageDecimal">
+ <xsd:minInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PositivePercentage">
+ <xsd:attribute name="val" type="ST_PositivePercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FixedPercentage">
+ <xsd:union memberTypes="ST_FixedPercentageDecimal s:ST_FixedPercentage"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FixedPercentageDecimal">
+ <xsd:restriction base="ST_PercentageDecimal">
+ <xsd:minInclusive value="-100000"/>
+ <xsd:maxInclusive value="100000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FixedPercentage">
+ <xsd:attribute name="val" type="ST_FixedPercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PositiveFixedPercentage">
+ <xsd:union memberTypes="ST_PositiveFixedPercentageDecimal s:ST_PositiveFixedPercentage"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PositiveFixedPercentageDecimal">
+ <xsd:restriction base="ST_PercentageDecimal">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="100000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PositiveFixedPercentage">
+ <xsd:attribute name="val" type="ST_PositiveFixedPercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Ratio">
+ <xsd:attribute name="n" type="xsd:long" use="required"/>
+ <xsd:attribute name="d" type="xsd:long" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Point2D">
+ <xsd:attribute name="x" type="ST_Coordinate" use="required"/>
+ <xsd:attribute name="y" type="ST_Coordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PositiveSize2D">
+ <xsd:attribute name="cx" type="ST_PositiveCoordinate" use="required"/>
+ <xsd:attribute name="cy" type="ST_PositiveCoordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ComplementTransform"/>
+ <xsd:complexType name="CT_InverseTransform"/>
+ <xsd:complexType name="CT_GrayscaleTransform"/>
+ <xsd:complexType name="CT_GammaTransform"/>
+ <xsd:complexType name="CT_InverseGammaTransform"/>
+ <xsd:group name="EG_ColorTransform">
+ <xsd:choice>
+ <xsd:element name="tint" type="CT_PositiveFixedPercentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="shade" type="CT_PositiveFixedPercentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="comp" type="CT_ComplementTransform" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="inv" type="CT_InverseTransform" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gray" type="CT_GrayscaleTransform" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alpha" type="CT_PositiveFixedPercentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaOff" type="CT_FixedPercentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaMod" type="CT_PositivePercentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hue" type="CT_PositiveFixedAngle" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hueOff" type="CT_Angle" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hueMod" type="CT_PositivePercentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="sat" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="satOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="satMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lum" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lumOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lumMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="red" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="redOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="redMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="green" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="greenOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="greenMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blue" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blueOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blueMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gamma" type="CT_GammaTransform" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="invGamma" type="CT_InverseGammaTransform" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_ScRgbColor">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="r" type="ST_Percentage" use="required"/>
+ <xsd:attribute name="g" type="ST_Percentage" use="required"/>
+ <xsd:attribute name="b" type="ST_Percentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SRgbColor">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="val" type="s:ST_HexColorRGB" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_HslColor">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="hue" type="ST_PositiveFixedAngle" use="required"/>
+ <xsd:attribute name="sat" type="ST_Percentage" use="required"/>
+ <xsd:attribute name="lum" type="ST_Percentage" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SystemColorVal">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="scrollBar"/>
+ <xsd:enumeration value="background"/>
+ <xsd:enumeration value="activeCaption"/>
+ <xsd:enumeration value="inactiveCaption"/>
+ <xsd:enumeration value="menu"/>
+ <xsd:enumeration value="window"/>
+ <xsd:enumeration value="windowFrame"/>
+ <xsd:enumeration value="menuText"/>
+ <xsd:enumeration value="windowText"/>
+ <xsd:enumeration value="captionText"/>
+ <xsd:enumeration value="activeBorder"/>
+ <xsd:enumeration value="inactiveBorder"/>
+ <xsd:enumeration value="appWorkspace"/>
+ <xsd:enumeration value="highlight"/>
+ <xsd:enumeration value="highlightText"/>
+ <xsd:enumeration value="btnFace"/>
+ <xsd:enumeration value="btnShadow"/>
+ <xsd:enumeration value="grayText"/>
+ <xsd:enumeration value="btnText"/>
+ <xsd:enumeration value="inactiveCaptionText"/>
+ <xsd:enumeration value="btnHighlight"/>
+ <xsd:enumeration value="3dDkShadow"/>
+ <xsd:enumeration value="3dLight"/>
+ <xsd:enumeration value="infoText"/>
+ <xsd:enumeration value="infoBk"/>
+ <xsd:enumeration value="hotLight"/>
+ <xsd:enumeration value="gradientActiveCaption"/>
+ <xsd:enumeration value="gradientInactiveCaption"/>
+ <xsd:enumeration value="menuHighlight"/>
+ <xsd:enumeration value="menuBar"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SystemColor">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="val" type="ST_SystemColorVal" use="required"/>
+ <xsd:attribute name="lastClr" type="s:ST_HexColorRGB" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SchemeColorVal">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="bg1"/>
+ <xsd:enumeration value="tx1"/>
+ <xsd:enumeration value="bg2"/>
+ <xsd:enumeration value="tx2"/>
+ <xsd:enumeration value="accent1"/>
+ <xsd:enumeration value="accent2"/>
+ <xsd:enumeration value="accent3"/>
+ <xsd:enumeration value="accent4"/>
+ <xsd:enumeration value="accent5"/>
+ <xsd:enumeration value="accent6"/>
+ <xsd:enumeration value="hlink"/>
+ <xsd:enumeration value="folHlink"/>
+ <xsd:enumeration value="phClr"/>
+ <xsd:enumeration value="dk1"/>
+ <xsd:enumeration value="lt1"/>
+ <xsd:enumeration value="dk2"/>
+ <xsd:enumeration value="lt2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SchemeColor">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="val" type="ST_SchemeColorVal" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PresetColorVal">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="aliceBlue"/>
+ <xsd:enumeration value="antiqueWhite"/>
+ <xsd:enumeration value="aqua"/>
+ <xsd:enumeration value="aquamarine"/>
+ <xsd:enumeration value="azure"/>
+ <xsd:enumeration value="beige"/>
+ <xsd:enumeration value="bisque"/>
+ <xsd:enumeration value="black"/>
+ <xsd:enumeration value="blanchedAlmond"/>
+ <xsd:enumeration value="blue"/>
+ <xsd:enumeration value="blueViolet"/>
+ <xsd:enumeration value="brown"/>
+ <xsd:enumeration value="burlyWood"/>
+ <xsd:enumeration value="cadetBlue"/>
+ <xsd:enumeration value="chartreuse"/>
+ <xsd:enumeration value="chocolate"/>
+ <xsd:enumeration value="coral"/>
+ <xsd:enumeration value="cornflowerBlue"/>
+ <xsd:enumeration value="cornsilk"/>
+ <xsd:enumeration value="crimson"/>
+ <xsd:enumeration value="cyan"/>
+ <xsd:enumeration value="darkBlue"/>
+ <xsd:enumeration value="darkCyan"/>
+ <xsd:enumeration value="darkGoldenrod"/>
+ <xsd:enumeration value="darkGray"/>
+ <xsd:enumeration value="darkGrey"/>
+ <xsd:enumeration value="darkGreen"/>
+ <xsd:enumeration value="darkKhaki"/>
+ <xsd:enumeration value="darkMagenta"/>
+ <xsd:enumeration value="darkOliveGreen"/>
+ <xsd:enumeration value="darkOrange"/>
+ <xsd:enumeration value="darkOrchid"/>
+ <xsd:enumeration value="darkRed"/>
+ <xsd:enumeration value="darkSalmon"/>
+ <xsd:enumeration value="darkSeaGreen"/>
+ <xsd:enumeration value="darkSlateBlue"/>
+ <xsd:enumeration value="darkSlateGray"/>
+ <xsd:enumeration value="darkSlateGrey"/>
+ <xsd:enumeration value="darkTurquoise"/>
+ <xsd:enumeration value="darkViolet"/>
+ <xsd:enumeration value="dkBlue"/>
+ <xsd:enumeration value="dkCyan"/>
+ <xsd:enumeration value="dkGoldenrod"/>
+ <xsd:enumeration value="dkGray"/>
+ <xsd:enumeration value="dkGrey"/>
+ <xsd:enumeration value="dkGreen"/>
+ <xsd:enumeration value="dkKhaki"/>
+ <xsd:enumeration value="dkMagenta"/>
+ <xsd:enumeration value="dkOliveGreen"/>
+ <xsd:enumeration value="dkOrange"/>
+ <xsd:enumeration value="dkOrchid"/>
+ <xsd:enumeration value="dkRed"/>
+ <xsd:enumeration value="dkSalmon"/>
+ <xsd:enumeration value="dkSeaGreen"/>
+ <xsd:enumeration value="dkSlateBlue"/>
+ <xsd:enumeration value="dkSlateGray"/>
+ <xsd:enumeration value="dkSlateGrey"/>
+ <xsd:enumeration value="dkTurquoise"/>
+ <xsd:enumeration value="dkViolet"/>
+ <xsd:enumeration value="deepPink"/>
+ <xsd:enumeration value="deepSkyBlue"/>
+ <xsd:enumeration value="dimGray"/>
+ <xsd:enumeration value="dimGrey"/>
+ <xsd:enumeration value="dodgerBlue"/>
+ <xsd:enumeration value="firebrick"/>
+ <xsd:enumeration value="floralWhite"/>
+ <xsd:enumeration value="forestGreen"/>
+ <xsd:enumeration value="fuchsia"/>
+ <xsd:enumeration value="gainsboro"/>
+ <xsd:enumeration value="ghostWhite"/>
+ <xsd:enumeration value="gold"/>
+ <xsd:enumeration value="goldenrod"/>
+ <xsd:enumeration value="gray"/>
+ <xsd:enumeration value="grey"/>
+ <xsd:enumeration value="green"/>
+ <xsd:enumeration value="greenYellow"/>
+ <xsd:enumeration value="honeydew"/>
+ <xsd:enumeration value="hotPink"/>
+ <xsd:enumeration value="indianRed"/>
+ <xsd:enumeration value="indigo"/>
+ <xsd:enumeration value="ivory"/>
+ <xsd:enumeration value="khaki"/>
+ <xsd:enumeration value="lavender"/>
+ <xsd:enumeration value="lavenderBlush"/>
+ <xsd:enumeration value="lawnGreen"/>
+ <xsd:enumeration value="lemonChiffon"/>
+ <xsd:enumeration value="lightBlue"/>
+ <xsd:enumeration value="lightCoral"/>
+ <xsd:enumeration value="lightCyan"/>
+ <xsd:enumeration value="lightGoldenrodYellow"/>
+ <xsd:enumeration value="lightGray"/>
+ <xsd:enumeration value="lightGrey"/>
+ <xsd:enumeration value="lightGreen"/>
+ <xsd:enumeration value="lightPink"/>
+ <xsd:enumeration value="lightSalmon"/>
+ <xsd:enumeration value="lightSeaGreen"/>
+ <xsd:enumeration value="lightSkyBlue"/>
+ <xsd:enumeration value="lightSlateGray"/>
+ <xsd:enumeration value="lightSlateGrey"/>
+ <xsd:enumeration value="lightSteelBlue"/>
+ <xsd:enumeration value="lightYellow"/>
+ <xsd:enumeration value="ltBlue"/>
+ <xsd:enumeration value="ltCoral"/>
+ <xsd:enumeration value="ltCyan"/>
+ <xsd:enumeration value="ltGoldenrodYellow"/>
+ <xsd:enumeration value="ltGray"/>
+ <xsd:enumeration value="ltGrey"/>
+ <xsd:enumeration value="ltGreen"/>
+ <xsd:enumeration value="ltPink"/>
+ <xsd:enumeration value="ltSalmon"/>
+ <xsd:enumeration value="ltSeaGreen"/>
+ <xsd:enumeration value="ltSkyBlue"/>
+ <xsd:enumeration value="ltSlateGray"/>
+ <xsd:enumeration value="ltSlateGrey"/>
+ <xsd:enumeration value="ltSteelBlue"/>
+ <xsd:enumeration value="ltYellow"/>
+ <xsd:enumeration value="lime"/>
+ <xsd:enumeration value="limeGreen"/>
+ <xsd:enumeration value="linen"/>
+ <xsd:enumeration value="magenta"/>
+ <xsd:enumeration value="maroon"/>
+ <xsd:enumeration value="medAquamarine"/>
+ <xsd:enumeration value="medBlue"/>
+ <xsd:enumeration value="medOrchid"/>
+ <xsd:enumeration value="medPurple"/>
+ <xsd:enumeration value="medSeaGreen"/>
+ <xsd:enumeration value="medSlateBlue"/>
+ <xsd:enumeration value="medSpringGreen"/>
+ <xsd:enumeration value="medTurquoise"/>
+ <xsd:enumeration value="medVioletRed"/>
+ <xsd:enumeration value="mediumAquamarine"/>
+ <xsd:enumeration value="mediumBlue"/>
+ <xsd:enumeration value="mediumOrchid"/>
+ <xsd:enumeration value="mediumPurple"/>
+ <xsd:enumeration value="mediumSeaGreen"/>
+ <xsd:enumeration value="mediumSlateBlue"/>
+ <xsd:enumeration value="mediumSpringGreen"/>
+ <xsd:enumeration value="mediumTurquoise"/>
+ <xsd:enumeration value="mediumVioletRed"/>
+ <xsd:enumeration value="midnightBlue"/>
+ <xsd:enumeration value="mintCream"/>
+ <xsd:enumeration value="mistyRose"/>
+ <xsd:enumeration value="moccasin"/>
+ <xsd:enumeration value="navajoWhite"/>
+ <xsd:enumeration value="navy"/>
+ <xsd:enumeration value="oldLace"/>
+ <xsd:enumeration value="olive"/>
+ <xsd:enumeration value="oliveDrab"/>
+ <xsd:enumeration value="orange"/>
+ <xsd:enumeration value="orangeRed"/>
+ <xsd:enumeration value="orchid"/>
+ <xsd:enumeration value="paleGoldenrod"/>
+ <xsd:enumeration value="paleGreen"/>
+ <xsd:enumeration value="paleTurquoise"/>
+ <xsd:enumeration value="paleVioletRed"/>
+ <xsd:enumeration value="papayaWhip"/>
+ <xsd:enumeration value="peachPuff"/>
+ <xsd:enumeration value="peru"/>
+ <xsd:enumeration value="pink"/>
+ <xsd:enumeration value="plum"/>
+ <xsd:enumeration value="powderBlue"/>
+ <xsd:enumeration value="purple"/>
+ <xsd:enumeration value="red"/>
+ <xsd:enumeration value="rosyBrown"/>
+ <xsd:enumeration value="royalBlue"/>
+ <xsd:enumeration value="saddleBrown"/>
+ <xsd:enumeration value="salmon"/>
+ <xsd:enumeration value="sandyBrown"/>
+ <xsd:enumeration value="seaGreen"/>
+ <xsd:enumeration value="seaShell"/>
+ <xsd:enumeration value="sienna"/>
+ <xsd:enumeration value="silver"/>
+ <xsd:enumeration value="skyBlue"/>
+ <xsd:enumeration value="slateBlue"/>
+ <xsd:enumeration value="slateGray"/>
+ <xsd:enumeration value="slateGrey"/>
+ <xsd:enumeration value="snow"/>
+ <xsd:enumeration value="springGreen"/>
+ <xsd:enumeration value="steelBlue"/>
+ <xsd:enumeration value="tan"/>
+ <xsd:enumeration value="teal"/>
+ <xsd:enumeration value="thistle"/>
+ <xsd:enumeration value="tomato"/>
+ <xsd:enumeration value="turquoise"/>
+ <xsd:enumeration value="violet"/>
+ <xsd:enumeration value="wheat"/>
+ <xsd:enumeration value="white"/>
+ <xsd:enumeration value="whiteSmoke"/>
+ <xsd:enumeration value="yellow"/>
+ <xsd:enumeration value="yellowGreen"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PresetColor">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="val" type="ST_PresetColorVal" use="required"/>
+ </xsd:complexType>
+ <xsd:group name="EG_OfficeArtExtensionList">
+ <xsd:sequence>
+ <xsd:element name="ext" type="CT_OfficeArtExtension" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_OfficeArtExtensionList">
+ <xsd:sequence>
+ <xsd:group ref="EG_OfficeArtExtensionList" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Scale2D">
+ <xsd:sequence>
+ <xsd:element name="sx" type="CT_Ratio" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="sy" type="CT_Ratio" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Transform2D">
+ <xsd:sequence>
+ <xsd:element name="off" type="CT_Point2D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ext" type="CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="rot" type="ST_Angle" use="optional" default="0"/>
+ <xsd:attribute name="flipH" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="flipV" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupTransform2D">
+ <xsd:sequence>
+ <xsd:element name="off" type="CT_Point2D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ext" type="CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="chOff" type="CT_Point2D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="chExt" type="CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="rot" type="ST_Angle" use="optional" default="0"/>
+ <xsd:attribute name="flipH" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="flipV" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Point3D">
+ <xsd:attribute name="x" type="ST_Coordinate" use="required"/>
+ <xsd:attribute name="y" type="ST_Coordinate" use="required"/>
+ <xsd:attribute name="z" type="ST_Coordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Vector3D">
+ <xsd:attribute name="dx" type="ST_Coordinate" use="required"/>
+ <xsd:attribute name="dy" type="ST_Coordinate" use="required"/>
+ <xsd:attribute name="dz" type="ST_Coordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SphereCoords">
+ <xsd:attribute name="lat" type="ST_PositiveFixedAngle" use="required"/>
+ <xsd:attribute name="lon" type="ST_PositiveFixedAngle" use="required"/>
+ <xsd:attribute name="rev" type="ST_PositiveFixedAngle" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RelativeRect">
+ <xsd:attribute name="l" type="ST_Percentage" use="optional" default="0%"/>
+ <xsd:attribute name="t" type="ST_Percentage" use="optional" default="0%"/>
+ <xsd:attribute name="r" type="ST_Percentage" use="optional" default="0%"/>
+ <xsd:attribute name="b" type="ST_Percentage" use="optional" default="0%"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_RectAlignment">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="tl"/>
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="tr"/>
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="bl"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="br"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:group name="EG_ColorChoice">
+ <xsd:choice>
+ <xsd:element name="scrgbClr" type="CT_ScRgbColor" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="srgbClr" type="CT_SRgbColor" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hslClr" type="CT_HslColor" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="sysClr" type="CT_SystemColor" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="schemeClr" type="CT_SchemeColor" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="prstClr" type="CT_PresetColor" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_Color">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorMRU">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BlackWhiteMode">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="clr"/>
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="gray"/>
+ <xsd:enumeration value="ltGray"/>
+ <xsd:enumeration value="invGray"/>
+ <xsd:enumeration value="grayWhite"/>
+ <xsd:enumeration value="blackGray"/>
+ <xsd:enumeration value="blackWhite"/>
+ <xsd:enumeration value="black"/>
+ <xsd:enumeration value="white"/>
+ <xsd:enumeration value="hidden"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:attributeGroup name="AG_Blob">
+ <xsd:attribute ref="r:embed" use="optional" default=""/>
+ <xsd:attribute ref="r:link" use="optional" default=""/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="CT_EmbeddedWAVAudioFile">
+ <xsd:attribute ref="r:embed" use="required"/>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Hyperlink">
+ <xsd:sequence>
+ <xsd:element name="snd" type="CT_EmbeddedWAVAudioFile" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:id" use="optional"/>
+ <xsd:attribute name="invalidUrl" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="action" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="tgtFrame" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="tooltip" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="history" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="highlightClick" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="endSnd" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DrawingElementId">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:attributeGroup name="AG_Locking">
+ <xsd:attribute name="noGrp" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noSelect" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noRot" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noChangeAspect" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noMove" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noResize" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noEditPoints" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noAdjustHandles" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noChangeArrowheads" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noChangeShapeType" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="CT_ConnectorLocking">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_Locking"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ShapeLocking">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_Locking"/>
+ <xsd:attribute name="noTextEdit" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PictureLocking">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_Locking"/>
+ <xsd:attribute name="noCrop" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupLocking">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="noGrp" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noUngrp" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noSelect" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noRot" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noChangeAspect" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noMove" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noResize" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GraphicalObjectFrameLocking">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="noGrp" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noDrilldown" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noSelect" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noChangeAspect" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noMove" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="noResize" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NonVisualDrawingProps">
+ <xsd:sequence>
+ <xsd:element name="hlinkClick" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hlinkHover" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="ST_DrawingElementId" use="required"/>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="descr" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="title" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NonVisualDrawingShapeProps">
+ <xsd:sequence>
+ <xsd:element name="spLocks" type="CT_ShapeLocking" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="txBox" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NonVisualConnectorProperties">
+ <xsd:sequence>
+ <xsd:element name="cxnSpLocks" type="CT_ConnectorLocking" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="stCxn" type="CT_Connection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="endCxn" type="CT_Connection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NonVisualPictureProperties">
+ <xsd:sequence>
+ <xsd:element name="picLocks" type="CT_PictureLocking" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="preferRelativeResize" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NonVisualGroupDrawingShapeProps">
+ <xsd:sequence>
+ <xsd:element name="grpSpLocks" type="CT_GroupLocking" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NonVisualGraphicFrameProperties">
+ <xsd:sequence>
+ <xsd:element name="graphicFrameLocks" type="CT_GraphicalObjectFrameLocking" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GraphicalObjectData">
+ <xsd:sequence>
+ <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="strict"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="xsd:token" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GraphicalObject">
+ <xsd:sequence>
+ <xsd:element name="graphicData" type="CT_GraphicalObjectData"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="graphic" type="CT_GraphicalObject"/>
+ <xsd:simpleType name="ST_ChartBuildStep">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="category"/>
+ <xsd:enumeration value="ptInCategory"/>
+ <xsd:enumeration value="series"/>
+ <xsd:enumeration value="ptInSeries"/>
+ <xsd:enumeration value="allPts"/>
+ <xsd:enumeration value="gridLegend"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DgmBuildStep">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="sp"/>
+ <xsd:enumeration value="bg"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_AnimationDgmElement">
+ <xsd:attribute name="id" type="s:ST_Guid" use="optional"
+ default="{00000000-0000-0000-0000-000000000000}"/>
+ <xsd:attribute name="bldStep" type="ST_DgmBuildStep" use="optional" default="sp"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AnimationChartElement">
+ <xsd:attribute name="seriesIdx" type="xsd:int" use="optional" default="-1"/>
+ <xsd:attribute name="categoryIdx" type="xsd:int" use="optional" default="-1"/>
+ <xsd:attribute name="bldStep" type="ST_ChartBuildStep" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AnimationElementChoice">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="dgm" type="CT_AnimationDgmElement"/>
+ <xsd:element name="chart" type="CT_AnimationChartElement"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_AnimationBuildType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="allAtOnce"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AnimationDgmOnlyBuildType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="one"/>
+ <xsd:enumeration value="lvlOne"/>
+ <xsd:enumeration value="lvlAtOnce"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AnimationDgmBuildType">
+ <xsd:union memberTypes="ST_AnimationBuildType ST_AnimationDgmOnlyBuildType"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_AnimationDgmBuildProperties">
+ <xsd:attribute name="bld" type="ST_AnimationDgmBuildType" use="optional" default="allAtOnce"/>
+ <xsd:attribute name="rev" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_AnimationChartOnlyBuildType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="series"/>
+ <xsd:enumeration value="category"/>
+ <xsd:enumeration value="seriesEl"/>
+ <xsd:enumeration value="categoryEl"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AnimationChartBuildType">
+ <xsd:union memberTypes="ST_AnimationBuildType ST_AnimationChartOnlyBuildType"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_AnimationChartBuildProperties">
+ <xsd:attribute name="bld" type="ST_AnimationChartBuildType" use="optional" default="allAtOnce"/>
+ <xsd:attribute name="animBg" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AnimationGraphicalObjectBuildProperties">
+ <xsd:choice>
+ <xsd:element name="bldDgm" type="CT_AnimationDgmBuildProperties"/>
+ <xsd:element name="bldChart" type="CT_AnimationChartBuildProperties"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BackgroundFormatting">
+ <xsd:sequence>
+ <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WholeE2oFormatting">
+ <xsd:sequence>
+ <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlUseShapeRectangle"/>
+ <xsd:complexType name="CT_GvmlTextShape">
+ <xsd:sequence>
+ <xsd:element name="txBody" type="CT_TextBody" minOccurs="1" maxOccurs="1"/>
+ <xsd:choice>
+ <xsd:element name="useSpRect" type="CT_GvmlUseShapeRectangle" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlShapeNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvSpPr" type="CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlShape">
+ <xsd:sequence>
+ <xsd:element name="nvSpPr" type="CT_GvmlShapeNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="txSp" type="CT_GvmlTextShape" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlConnectorNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvCxnSpPr" type="CT_NonVisualConnectorProperties" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlConnector">
+ <xsd:sequence>
+ <xsd:element name="nvCxnSpPr" type="CT_GvmlConnectorNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlPictureNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvPicPr" type="CT_NonVisualPictureProperties" minOccurs="1" maxOccurs="1"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlPicture">
+ <xsd:sequence>
+ <xsd:element name="nvPicPr" type="CT_GvmlPictureNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blipFill" type="CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlGraphicFrameNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGraphicFramePr" type="CT_NonVisualGraphicFrameProperties" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlGraphicalObjectFrame">
+ <xsd:sequence>
+ <xsd:element name="nvGraphicFramePr" type="CT_GvmlGraphicFrameNonVisual" minOccurs="1"
+ maxOccurs="1"/>
+ <xsd:element ref="graphic" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlGroupShapeNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGrpSpPr" type="CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GvmlGroupShape">
+ <xsd:sequence>
+ <xsd:element name="nvGrpSpPr" type="CT_GvmlGroupShapeNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="grpSpPr" type="CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="txSp" type="CT_GvmlTextShape"/>
+ <xsd:element name="sp" type="CT_GvmlShape"/>
+ <xsd:element name="cxnSp" type="CT_GvmlConnector"/>
+ <xsd:element name="pic" type="CT_GvmlPicture"/>
+ <xsd:element name="graphicFrame" type="CT_GvmlGraphicalObjectFrame"/>
+ <xsd:element name="grpSp" type="CT_GvmlGroupShape"/>
+ </xsd:choice>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PresetCameraType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="legacyObliqueTopLeft"/>
+ <xsd:enumeration value="legacyObliqueTop"/>
+ <xsd:enumeration value="legacyObliqueTopRight"/>
+ <xsd:enumeration value="legacyObliqueLeft"/>
+ <xsd:enumeration value="legacyObliqueFront"/>
+ <xsd:enumeration value="legacyObliqueRight"/>
+ <xsd:enumeration value="legacyObliqueBottomLeft"/>
+ <xsd:enumeration value="legacyObliqueBottom"/>
+ <xsd:enumeration value="legacyObliqueBottomRight"/>
+ <xsd:enumeration value="legacyPerspectiveTopLeft"/>
+ <xsd:enumeration value="legacyPerspectiveTop"/>
+ <xsd:enumeration value="legacyPerspectiveTopRight"/>
+ <xsd:enumeration value="legacyPerspectiveLeft"/>
+ <xsd:enumeration value="legacyPerspectiveFront"/>
+ <xsd:enumeration value="legacyPerspectiveRight"/>
+ <xsd:enumeration value="legacyPerspectiveBottomLeft"/>
+ <xsd:enumeration value="legacyPerspectiveBottom"/>
+ <xsd:enumeration value="legacyPerspectiveBottomRight"/>
+ <xsd:enumeration value="orthographicFront"/>
+ <xsd:enumeration value="isometricTopUp"/>
+ <xsd:enumeration value="isometricTopDown"/>
+ <xsd:enumeration value="isometricBottomUp"/>
+ <xsd:enumeration value="isometricBottomDown"/>
+ <xsd:enumeration value="isometricLeftUp"/>
+ <xsd:enumeration value="isometricLeftDown"/>
+ <xsd:enumeration value="isometricRightUp"/>
+ <xsd:enumeration value="isometricRightDown"/>
+ <xsd:enumeration value="isometricOffAxis1Left"/>
+ <xsd:enumeration value="isometricOffAxis1Right"/>
+ <xsd:enumeration value="isometricOffAxis1Top"/>
+ <xsd:enumeration value="isometricOffAxis2Left"/>
+ <xsd:enumeration value="isometricOffAxis2Right"/>
+ <xsd:enumeration value="isometricOffAxis2Top"/>
+ <xsd:enumeration value="isometricOffAxis3Left"/>
+ <xsd:enumeration value="isometricOffAxis3Right"/>
+ <xsd:enumeration value="isometricOffAxis3Bottom"/>
+ <xsd:enumeration value="isometricOffAxis4Left"/>
+ <xsd:enumeration value="isometricOffAxis4Right"/>
+ <xsd:enumeration value="isometricOffAxis4Bottom"/>
+ <xsd:enumeration value="obliqueTopLeft"/>
+ <xsd:enumeration value="obliqueTop"/>
+ <xsd:enumeration value="obliqueTopRight"/>
+ <xsd:enumeration value="obliqueLeft"/>
+ <xsd:enumeration value="obliqueRight"/>
+ <xsd:enumeration value="obliqueBottomLeft"/>
+ <xsd:enumeration value="obliqueBottom"/>
+ <xsd:enumeration value="obliqueBottomRight"/>
+ <xsd:enumeration value="perspectiveFront"/>
+ <xsd:enumeration value="perspectiveLeft"/>
+ <xsd:enumeration value="perspectiveRight"/>
+ <xsd:enumeration value="perspectiveAbove"/>
+ <xsd:enumeration value="perspectiveBelow"/>
+ <xsd:enumeration value="perspectiveAboveLeftFacing"/>
+ <xsd:enumeration value="perspectiveAboveRightFacing"/>
+ <xsd:enumeration value="perspectiveContrastingLeftFacing"/>
+ <xsd:enumeration value="perspectiveContrastingRightFacing"/>
+ <xsd:enumeration value="perspectiveHeroicLeftFacing"/>
+ <xsd:enumeration value="perspectiveHeroicRightFacing"/>
+ <xsd:enumeration value="perspectiveHeroicExtremeLeftFacing"/>
+ <xsd:enumeration value="perspectiveHeroicExtremeRightFacing"/>
+ <xsd:enumeration value="perspectiveRelaxed"/>
+ <xsd:enumeration value="perspectiveRelaxedModerately"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FOVAngle">
+ <xsd:restriction base="ST_Angle">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="10800000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Camera">
+ <xsd:sequence>
+ <xsd:element name="rot" type="CT_SphereCoords" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="prst" type="ST_PresetCameraType" use="required"/>
+ <xsd:attribute name="fov" type="ST_FOVAngle" use="optional"/>
+ <xsd:attribute name="zoom" type="ST_PositivePercentage" use="optional" default="100%"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LightRigDirection">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="tl"/>
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="tr"/>
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="bl"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="br"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_LightRigType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="legacyFlat1"/>
+ <xsd:enumeration value="legacyFlat2"/>
+ <xsd:enumeration value="legacyFlat3"/>
+ <xsd:enumeration value="legacyFlat4"/>
+ <xsd:enumeration value="legacyNormal1"/>
+ <xsd:enumeration value="legacyNormal2"/>
+ <xsd:enumeration value="legacyNormal3"/>
+ <xsd:enumeration value="legacyNormal4"/>
+ <xsd:enumeration value="legacyHarsh1"/>
+ <xsd:enumeration value="legacyHarsh2"/>
+ <xsd:enumeration value="legacyHarsh3"/>
+ <xsd:enumeration value="legacyHarsh4"/>
+ <xsd:enumeration value="threePt"/>
+ <xsd:enumeration value="balanced"/>
+ <xsd:enumeration value="soft"/>
+ <xsd:enumeration value="harsh"/>
+ <xsd:enumeration value="flood"/>
+ <xsd:enumeration value="contrasting"/>
+ <xsd:enumeration value="morning"/>
+ <xsd:enumeration value="sunrise"/>
+ <xsd:enumeration value="sunset"/>
+ <xsd:enumeration value="chilly"/>
+ <xsd:enumeration value="freezing"/>
+ <xsd:enumeration value="flat"/>
+ <xsd:enumeration value="twoPt"/>
+ <xsd:enumeration value="glow"/>
+ <xsd:enumeration value="brightRoom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LightRig">
+ <xsd:sequence>
+ <xsd:element name="rot" type="CT_SphereCoords" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="rig" type="ST_LightRigType" use="required"/>
+ <xsd:attribute name="dir" type="ST_LightRigDirection" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Scene3D">
+ <xsd:sequence>
+ <xsd:element name="camera" type="CT_Camera" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lightRig" type="CT_LightRig" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="backdrop" type="CT_Backdrop" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Backdrop">
+ <xsd:sequence>
+ <xsd:element name="anchor" type="CT_Point3D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="norm" type="CT_Vector3D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="up" type="CT_Vector3D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BevelPresetType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="relaxedInset"/>
+ <xsd:enumeration value="circle"/>
+ <xsd:enumeration value="slope"/>
+ <xsd:enumeration value="cross"/>
+ <xsd:enumeration value="angle"/>
+ <xsd:enumeration value="softRound"/>
+ <xsd:enumeration value="convex"/>
+ <xsd:enumeration value="coolSlant"/>
+ <xsd:enumeration value="divot"/>
+ <xsd:enumeration value="riblet"/>
+ <xsd:enumeration value="hardEdge"/>
+ <xsd:enumeration value="artDeco"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Bevel">
+ <xsd:attribute name="w" type="ST_PositiveCoordinate" use="optional" default="76200"/>
+ <xsd:attribute name="h" type="ST_PositiveCoordinate" use="optional" default="76200"/>
+ <xsd:attribute name="prst" type="ST_BevelPresetType" use="optional" default="circle"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PresetMaterialType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="legacyMatte"/>
+ <xsd:enumeration value="legacyPlastic"/>
+ <xsd:enumeration value="legacyMetal"/>
+ <xsd:enumeration value="legacyWireframe"/>
+ <xsd:enumeration value="matte"/>
+ <xsd:enumeration value="plastic"/>
+ <xsd:enumeration value="metal"/>
+ <xsd:enumeration value="warmMatte"/>
+ <xsd:enumeration value="translucentPowder"/>
+ <xsd:enumeration value="powder"/>
+ <xsd:enumeration value="dkEdge"/>
+ <xsd:enumeration value="softEdge"/>
+ <xsd:enumeration value="clear"/>
+ <xsd:enumeration value="flat"/>
+ <xsd:enumeration value="softmetal"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Shape3D">
+ <xsd:sequence>
+ <xsd:element name="bevelT" type="CT_Bevel" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bevelB" type="CT_Bevel" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extrusionClr" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="contourClr" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="z" type="ST_Coordinate" use="optional" default="0"/>
+ <xsd:attribute name="extrusionH" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="contourW" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="prstMaterial" type="ST_PresetMaterialType" use="optional"
+ default="warmMatte"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FlatText">
+ <xsd:attribute name="z" type="ST_Coordinate" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:group name="EG_Text3D">
+ <xsd:choice>
+ <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="flatTx" type="CT_FlatText" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_AlphaBiLevelEffect">
+ <xsd:attribute name="thresh" type="ST_PositiveFixedPercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AlphaCeilingEffect"/>
+ <xsd:complexType name="CT_AlphaFloorEffect"/>
+ <xsd:complexType name="CT_AlphaInverseEffect">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AlphaModulateFixedEffect">
+ <xsd:attribute name="amt" type="ST_PositivePercentage" use="optional" default="100%"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AlphaOutsetEffect">
+ <xsd:attribute name="rad" type="ST_Coordinate" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AlphaReplaceEffect">
+ <xsd:attribute name="a" type="ST_PositiveFixedPercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BiLevelEffect">
+ <xsd:attribute name="thresh" type="ST_PositiveFixedPercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BlurEffect">
+ <xsd:attribute name="rad" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="grow" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorChangeEffect">
+ <xsd:sequence>
+ <xsd:element name="clrFrom" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="clrTo" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="useA" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorReplaceEffect">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DuotoneEffect">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="2" maxOccurs="2"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GlowEffect">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="rad" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GrayscaleEffect"/>
+ <xsd:complexType name="CT_HSLEffect">
+ <xsd:attribute name="hue" type="ST_PositiveFixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="sat" type="ST_FixedPercentage" use="optional" default="0%"/>
+ <xsd:attribute name="lum" type="ST_FixedPercentage" use="optional" default="0%"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_InnerShadowEffect">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="blurRad" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LuminanceEffect">
+ <xsd:attribute name="bright" type="ST_FixedPercentage" use="optional" default="0%"/>
+ <xsd:attribute name="contrast" type="ST_FixedPercentage" use="optional" default="0%"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OuterShadowEffect">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="blurRad" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="sx" type="ST_Percentage" use="optional" default="100%"/>
+ <xsd:attribute name="sy" type="ST_Percentage" use="optional" default="100%"/>
+ <xsd:attribute name="kx" type="ST_FixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="ky" type="ST_FixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="algn" type="ST_RectAlignment" use="optional" default="b"/>
+ <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PresetShadowVal">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="shdw1"/>
+ <xsd:enumeration value="shdw2"/>
+ <xsd:enumeration value="shdw3"/>
+ <xsd:enumeration value="shdw4"/>
+ <xsd:enumeration value="shdw5"/>
+ <xsd:enumeration value="shdw6"/>
+ <xsd:enumeration value="shdw7"/>
+ <xsd:enumeration value="shdw8"/>
+ <xsd:enumeration value="shdw9"/>
+ <xsd:enumeration value="shdw10"/>
+ <xsd:enumeration value="shdw11"/>
+ <xsd:enumeration value="shdw12"/>
+ <xsd:enumeration value="shdw13"/>
+ <xsd:enumeration value="shdw14"/>
+ <xsd:enumeration value="shdw15"/>
+ <xsd:enumeration value="shdw16"/>
+ <xsd:enumeration value="shdw17"/>
+ <xsd:enumeration value="shdw18"/>
+ <xsd:enumeration value="shdw19"/>
+ <xsd:enumeration value="shdw20"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PresetShadowEffect">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="prst" type="ST_PresetShadowVal" use="required"/>
+ <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ReflectionEffect">
+ <xsd:attribute name="blurRad" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="stA" type="ST_PositiveFixedPercentage" use="optional" default="100%"/>
+ <xsd:attribute name="stPos" type="ST_PositiveFixedPercentage" use="optional" default="0%"/>
+ <xsd:attribute name="endA" type="ST_PositiveFixedPercentage" use="optional" default="0%"/>
+ <xsd:attribute name="endPos" type="ST_PositiveFixedPercentage" use="optional" default="100%"/>
+ <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="fadeDir" type="ST_PositiveFixedAngle" use="optional" default="5400000"/>
+ <xsd:attribute name="sx" type="ST_Percentage" use="optional" default="100%"/>
+ <xsd:attribute name="sy" type="ST_Percentage" use="optional" default="100%"/>
+ <xsd:attribute name="kx" type="ST_FixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="ky" type="ST_FixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="algn" type="ST_RectAlignment" use="optional" default="b"/>
+ <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RelativeOffsetEffect">
+ <xsd:attribute name="tx" type="ST_Percentage" use="optional" default="0%"/>
+ <xsd:attribute name="ty" type="ST_Percentage" use="optional" default="0%"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SoftEdgesEffect">
+ <xsd:attribute name="rad" type="ST_PositiveCoordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TintEffect">
+ <xsd:attribute name="hue" type="ST_PositiveFixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="amt" type="ST_FixedPercentage" use="optional" default="0%"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TransformEffect">
+ <xsd:attribute name="sx" type="ST_Percentage" use="optional" default="100%"/>
+ <xsd:attribute name="sy" type="ST_Percentage" use="optional" default="100%"/>
+ <xsd:attribute name="kx" type="ST_FixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="ky" type="ST_FixedAngle" use="optional" default="0"/>
+ <xsd:attribute name="tx" type="ST_Coordinate" use="optional" default="0"/>
+ <xsd:attribute name="ty" type="ST_Coordinate" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NoFillProperties"/>
+ <xsd:complexType name="CT_SolidColorFillProperties">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LinearShadeProperties">
+ <xsd:attribute name="ang" type="ST_PositiveFixedAngle" use="optional"/>
+ <xsd:attribute name="scaled" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PathShadeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="shape"/>
+ <xsd:enumeration value="circle"/>
+ <xsd:enumeration value="rect"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PathShadeProperties">
+ <xsd:sequence>
+ <xsd:element name="fillToRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="path" type="ST_PathShadeType" use="optional"/>
+ </xsd:complexType>
+ <xsd:group name="EG_ShadeProperties">
+ <xsd:choice>
+ <xsd:element name="lin" type="CT_LinearShadeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="path" type="CT_PathShadeProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_TileFlipMode">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="x"/>
+ <xsd:enumeration value="y"/>
+ <xsd:enumeration value="xy"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_GradientStop">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="pos" type="ST_PositiveFixedPercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GradientStopList">
+ <xsd:sequence>
+ <xsd:element name="gs" type="CT_GradientStop" minOccurs="2" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GradientFillProperties">
+ <xsd:sequence>
+ <xsd:element name="gsLst" type="CT_GradientStopList" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_ShadeProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tileRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="flip" type="ST_TileFlipMode" use="optional"/>
+ <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TileInfoProperties">
+ <xsd:attribute name="tx" type="ST_Coordinate" use="optional"/>
+ <xsd:attribute name="ty" type="ST_Coordinate" use="optional"/>
+ <xsd:attribute name="sx" type="ST_Percentage" use="optional"/>
+ <xsd:attribute name="sy" type="ST_Percentage" use="optional"/>
+ <xsd:attribute name="flip" type="ST_TileFlipMode" use="optional"/>
+ <xsd:attribute name="algn" type="ST_RectAlignment" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StretchInfoProperties">
+ <xsd:sequence>
+ <xsd:element name="fillRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_FillModeProperties">
+ <xsd:choice>
+ <xsd:element name="tile" type="CT_TileInfoProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="stretch" type="CT_StretchInfoProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_BlipCompression">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="email"/>
+ <xsd:enumeration value="screen"/>
+ <xsd:enumeration value="print"/>
+ <xsd:enumeration value="hqprint"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Blip">
+ <xsd:sequence>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="alphaBiLevel" type="CT_AlphaBiLevelEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaCeiling" type="CT_AlphaCeilingEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaFloor" type="CT_AlphaFloorEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaInv" type="CT_AlphaInverseEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaMod" type="CT_AlphaModulateEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaModFix" type="CT_AlphaModulateFixedEffect" minOccurs="1"
+ maxOccurs="1"/>
+ <xsd:element name="alphaRepl" type="CT_AlphaReplaceEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="biLevel" type="CT_BiLevelEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blur" type="CT_BlurEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="clrChange" type="CT_ColorChangeEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="clrRepl" type="CT_ColorReplaceEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="duotone" type="CT_DuotoneEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fillOverlay" type="CT_FillOverlayEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="grayscl" type="CT_GrayscaleEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hsl" type="CT_HSLEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lum" type="CT_LuminanceEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="tint" type="CT_TintEffect" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_Blob"/>
+ <xsd:attribute name="cstate" type="ST_BlipCompression" use="optional" default="none"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BlipFillProperties">
+ <xsd:sequence>
+ <xsd:element name="blip" type="CT_Blip" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="srcRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_FillModeProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="dpi" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PresetPatternVal">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="pct5"/>
+ <xsd:enumeration value="pct10"/>
+ <xsd:enumeration value="pct20"/>
+ <xsd:enumeration value="pct25"/>
+ <xsd:enumeration value="pct30"/>
+ <xsd:enumeration value="pct40"/>
+ <xsd:enumeration value="pct50"/>
+ <xsd:enumeration value="pct60"/>
+ <xsd:enumeration value="pct70"/>
+ <xsd:enumeration value="pct75"/>
+ <xsd:enumeration value="pct80"/>
+ <xsd:enumeration value="pct90"/>
+ <xsd:enumeration value="horz"/>
+ <xsd:enumeration value="vert"/>
+ <xsd:enumeration value="ltHorz"/>
+ <xsd:enumeration value="ltVert"/>
+ <xsd:enumeration value="dkHorz"/>
+ <xsd:enumeration value="dkVert"/>
+ <xsd:enumeration value="narHorz"/>
+ <xsd:enumeration value="narVert"/>
+ <xsd:enumeration value="dashHorz"/>
+ <xsd:enumeration value="dashVert"/>
+ <xsd:enumeration value="cross"/>
+ <xsd:enumeration value="dnDiag"/>
+ <xsd:enumeration value="upDiag"/>
+ <xsd:enumeration value="ltDnDiag"/>
+ <xsd:enumeration value="ltUpDiag"/>
+ <xsd:enumeration value="dkDnDiag"/>
+ <xsd:enumeration value="dkUpDiag"/>
+ <xsd:enumeration value="wdDnDiag"/>
+ <xsd:enumeration value="wdUpDiag"/>
+ <xsd:enumeration value="dashDnDiag"/>
+ <xsd:enumeration value="dashUpDiag"/>
+ <xsd:enumeration value="diagCross"/>
+ <xsd:enumeration value="smCheck"/>
+ <xsd:enumeration value="lgCheck"/>
+ <xsd:enumeration value="smGrid"/>
+ <xsd:enumeration value="lgGrid"/>
+ <xsd:enumeration value="dotGrid"/>
+ <xsd:enumeration value="smConfetti"/>
+ <xsd:enumeration value="lgConfetti"/>
+ <xsd:enumeration value="horzBrick"/>
+ <xsd:enumeration value="diagBrick"/>
+ <xsd:enumeration value="solidDmnd"/>
+ <xsd:enumeration value="openDmnd"/>
+ <xsd:enumeration value="dotDmnd"/>
+ <xsd:enumeration value="plaid"/>
+ <xsd:enumeration value="sphere"/>
+ <xsd:enumeration value="weave"/>
+ <xsd:enumeration value="divot"/>
+ <xsd:enumeration value="shingle"/>
+ <xsd:enumeration value="wave"/>
+ <xsd:enumeration value="trellis"/>
+ <xsd:enumeration value="zigZag"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PatternFillProperties">
+ <xsd:sequence>
+ <xsd:element name="fgClr" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bgClr" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="prst" type="ST_PresetPatternVal" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupFillProperties"/>
+ <xsd:group name="EG_FillProperties">
+ <xsd:choice>
+ <xsd:element name="noFill" type="CT_NoFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="solidFill" type="CT_SolidColorFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gradFill" type="CT_GradientFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blipFill" type="CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="pattFill" type="CT_PatternFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="grpFill" type="CT_GroupFillProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_FillProperties">
+ <xsd:sequence>
+ <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FillEffect">
+ <xsd:sequence>
+ <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BlendMode">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="over"/>
+ <xsd:enumeration value="mult"/>
+ <xsd:enumeration value="screen"/>
+ <xsd:enumeration value="darken"/>
+ <xsd:enumeration value="lighten"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FillOverlayEffect">
+ <xsd:sequence>
+ <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="blend" type="ST_BlendMode" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EffectReference">
+ <xsd:attribute name="ref" type="xsd:token" use="required"/>
+ </xsd:complexType>
+ <xsd:group name="EG_Effect">
+ <xsd:choice>
+ <xsd:element name="cont" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="effect" type="CT_EffectReference" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaBiLevel" type="CT_AlphaBiLevelEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaCeiling" type="CT_AlphaCeilingEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaFloor" type="CT_AlphaFloorEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaInv" type="CT_AlphaInverseEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaMod" type="CT_AlphaModulateEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaModFix" type="CT_AlphaModulateFixedEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaOutset" type="CT_AlphaOutsetEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="alphaRepl" type="CT_AlphaReplaceEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="biLevel" type="CT_BiLevelEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blend" type="CT_BlendEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blur" type="CT_BlurEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="clrChange" type="CT_ColorChangeEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="clrRepl" type="CT_ColorReplaceEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="duotone" type="CT_DuotoneEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fill" type="CT_FillEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fillOverlay" type="CT_FillOverlayEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="glow" type="CT_GlowEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="grayscl" type="CT_GrayscaleEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hsl" type="CT_HSLEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="innerShdw" type="CT_InnerShadowEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lum" type="CT_LuminanceEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="outerShdw" type="CT_OuterShadowEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="prstShdw" type="CT_PresetShadowEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="reflection" type="CT_ReflectionEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="relOff" type="CT_RelativeOffsetEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="softEdge" type="CT_SoftEdgesEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="tint" type="CT_TintEffect" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="xfrm" type="CT_TransformEffect" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_EffectContainerType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="sib"/>
+ <xsd:enumeration value="tree"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_EffectContainer">
+ <xsd:group ref="EG_Effect" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:attribute name="type" type="ST_EffectContainerType" use="optional" default="sib"/>
+ <xsd:attribute name="name" type="xsd:token" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AlphaModulateEffect">
+ <xsd:sequence>
+ <xsd:element name="cont" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BlendEffect">
+ <xsd:sequence>
+ <xsd:element name="cont" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="blend" type="ST_BlendMode" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EffectList">
+ <xsd:sequence>
+ <xsd:element name="blur" type="CT_BlurEffect" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="fillOverlay" type="CT_FillOverlayEffect" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="glow" type="CT_GlowEffect" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="innerShdw" type="CT_InnerShadowEffect" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="outerShdw" type="CT_OuterShadowEffect" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="prstShdw" type="CT_PresetShadowEffect" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="reflection" type="CT_ReflectionEffect" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="softEdge" type="CT_SoftEdgesEffect" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_EffectProperties">
+ <xsd:choice>
+ <xsd:element name="effectLst" type="CT_EffectList" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="effectDag" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_EffectProperties">
+ <xsd:sequence>
+ <xsd:group ref="EG_EffectProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="blip" type="CT_Blip"/>
+ <xsd:simpleType name="ST_ShapeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="line"/>
+ <xsd:enumeration value="lineInv"/>
+ <xsd:enumeration value="triangle"/>
+ <xsd:enumeration value="rtTriangle"/>
+ <xsd:enumeration value="rect"/>
+ <xsd:enumeration value="diamond"/>
+ <xsd:enumeration value="parallelogram"/>
+ <xsd:enumeration value="trapezoid"/>
+ <xsd:enumeration value="nonIsoscelesTrapezoid"/>
+ <xsd:enumeration value="pentagon"/>
+ <xsd:enumeration value="hexagon"/>
+ <xsd:enumeration value="heptagon"/>
+ <xsd:enumeration value="octagon"/>
+ <xsd:enumeration value="decagon"/>
+ <xsd:enumeration value="dodecagon"/>
+ <xsd:enumeration value="star4"/>
+ <xsd:enumeration value="star5"/>
+ <xsd:enumeration value="star6"/>
+ <xsd:enumeration value="star7"/>
+ <xsd:enumeration value="star8"/>
+ <xsd:enumeration value="star10"/>
+ <xsd:enumeration value="star12"/>
+ <xsd:enumeration value="star16"/>
+ <xsd:enumeration value="star24"/>
+ <xsd:enumeration value="star32"/>
+ <xsd:enumeration value="roundRect"/>
+ <xsd:enumeration value="round1Rect"/>
+ <xsd:enumeration value="round2SameRect"/>
+ <xsd:enumeration value="round2DiagRect"/>
+ <xsd:enumeration value="snipRoundRect"/>
+ <xsd:enumeration value="snip1Rect"/>
+ <xsd:enumeration value="snip2SameRect"/>
+ <xsd:enumeration value="snip2DiagRect"/>
+ <xsd:enumeration value="plaque"/>
+ <xsd:enumeration value="ellipse"/>
+ <xsd:enumeration value="teardrop"/>
+ <xsd:enumeration value="homePlate"/>
+ <xsd:enumeration value="chevron"/>
+ <xsd:enumeration value="pieWedge"/>
+ <xsd:enumeration value="pie"/>
+ <xsd:enumeration value="blockArc"/>
+ <xsd:enumeration value="donut"/>
+ <xsd:enumeration value="noSmoking"/>
+ <xsd:enumeration value="rightArrow"/>
+ <xsd:enumeration value="leftArrow"/>
+ <xsd:enumeration value="upArrow"/>
+ <xsd:enumeration value="downArrow"/>
+ <xsd:enumeration value="stripedRightArrow"/>
+ <xsd:enumeration value="notchedRightArrow"/>
+ <xsd:enumeration value="bentUpArrow"/>
+ <xsd:enumeration value="leftRightArrow"/>
+ <xsd:enumeration value="upDownArrow"/>
+ <xsd:enumeration value="leftUpArrow"/>
+ <xsd:enumeration value="leftRightUpArrow"/>
+ <xsd:enumeration value="quadArrow"/>
+ <xsd:enumeration value="leftArrowCallout"/>
+ <xsd:enumeration value="rightArrowCallout"/>
+ <xsd:enumeration value="upArrowCallout"/>
+ <xsd:enumeration value="downArrowCallout"/>
+ <xsd:enumeration value="leftRightArrowCallout"/>
+ <xsd:enumeration value="upDownArrowCallout"/>
+ <xsd:enumeration value="quadArrowCallout"/>
+ <xsd:enumeration value="bentArrow"/>
+ <xsd:enumeration value="uturnArrow"/>
+ <xsd:enumeration value="circularArrow"/>
+ <xsd:enumeration value="leftCircularArrow"/>
+ <xsd:enumeration value="leftRightCircularArrow"/>
+ <xsd:enumeration value="curvedRightArrow"/>
+ <xsd:enumeration value="curvedLeftArrow"/>
+ <xsd:enumeration value="curvedUpArrow"/>
+ <xsd:enumeration value="curvedDownArrow"/>
+ <xsd:enumeration value="swooshArrow"/>
+ <xsd:enumeration value="cube"/>
+ <xsd:enumeration value="can"/>
+ <xsd:enumeration value="lightningBolt"/>
+ <xsd:enumeration value="heart"/>
+ <xsd:enumeration value="sun"/>
+ <xsd:enumeration value="moon"/>
+ <xsd:enumeration value="smileyFace"/>
+ <xsd:enumeration value="irregularSeal1"/>
+ <xsd:enumeration value="irregularSeal2"/>
+ <xsd:enumeration value="foldedCorner"/>
+ <xsd:enumeration value="bevel"/>
+ <xsd:enumeration value="frame"/>
+ <xsd:enumeration value="halfFrame"/>
+ <xsd:enumeration value="corner"/>
+ <xsd:enumeration value="diagStripe"/>
+ <xsd:enumeration value="chord"/>
+ <xsd:enumeration value="arc"/>
+ <xsd:enumeration value="leftBracket"/>
+ <xsd:enumeration value="rightBracket"/>
+ <xsd:enumeration value="leftBrace"/>
+ <xsd:enumeration value="rightBrace"/>
+ <xsd:enumeration value="bracketPair"/>
+ <xsd:enumeration value="bracePair"/>
+ <xsd:enumeration value="straightConnector1"/>
+ <xsd:enumeration value="bentConnector2"/>
+ <xsd:enumeration value="bentConnector3"/>
+ <xsd:enumeration value="bentConnector4"/>
+ <xsd:enumeration value="bentConnector5"/>
+ <xsd:enumeration value="curvedConnector2"/>
+ <xsd:enumeration value="curvedConnector3"/>
+ <xsd:enumeration value="curvedConnector4"/>
+ <xsd:enumeration value="curvedConnector5"/>
+ <xsd:enumeration value="callout1"/>
+ <xsd:enumeration value="callout2"/>
+ <xsd:enumeration value="callout3"/>
+ <xsd:enumeration value="accentCallout1"/>
+ <xsd:enumeration value="accentCallout2"/>
+ <xsd:enumeration value="accentCallout3"/>
+ <xsd:enumeration value="borderCallout1"/>
+ <xsd:enumeration value="borderCallout2"/>
+ <xsd:enumeration value="borderCallout3"/>
+ <xsd:enumeration value="accentBorderCallout1"/>
+ <xsd:enumeration value="accentBorderCallout2"/>
+ <xsd:enumeration value="accentBorderCallout3"/>
+ <xsd:enumeration value="wedgeRectCallout"/>
+ <xsd:enumeration value="wedgeRoundRectCallout"/>
+ <xsd:enumeration value="wedgeEllipseCallout"/>
+ <xsd:enumeration value="cloudCallout"/>
+ <xsd:enumeration value="cloud"/>
+ <xsd:enumeration value="ribbon"/>
+ <xsd:enumeration value="ribbon2"/>
+ <xsd:enumeration value="ellipseRibbon"/>
+ <xsd:enumeration value="ellipseRibbon2"/>
+ <xsd:enumeration value="leftRightRibbon"/>
+ <xsd:enumeration value="verticalScroll"/>
+ <xsd:enumeration value="horizontalScroll"/>
+ <xsd:enumeration value="wave"/>
+ <xsd:enumeration value="doubleWave"/>
+ <xsd:enumeration value="plus"/>
+ <xsd:enumeration value="flowChartProcess"/>
+ <xsd:enumeration value="flowChartDecision"/>
+ <xsd:enumeration value="flowChartInputOutput"/>
+ <xsd:enumeration value="flowChartPredefinedProcess"/>
+ <xsd:enumeration value="flowChartInternalStorage"/>
+ <xsd:enumeration value="flowChartDocument"/>
+ <xsd:enumeration value="flowChartMultidocument"/>
+ <xsd:enumeration value="flowChartTerminator"/>
+ <xsd:enumeration value="flowChartPreparation"/>
+ <xsd:enumeration value="flowChartManualInput"/>
+ <xsd:enumeration value="flowChartManualOperation"/>
+ <xsd:enumeration value="flowChartConnector"/>
+ <xsd:enumeration value="flowChartPunchedCard"/>
+ <xsd:enumeration value="flowChartPunchedTape"/>
+ <xsd:enumeration value="flowChartSummingJunction"/>
+ <xsd:enumeration value="flowChartOr"/>
+ <xsd:enumeration value="flowChartCollate"/>
+ <xsd:enumeration value="flowChartSort"/>
+ <xsd:enumeration value="flowChartExtract"/>
+ <xsd:enumeration value="flowChartMerge"/>
+ <xsd:enumeration value="flowChartOfflineStorage"/>
+ <xsd:enumeration value="flowChartOnlineStorage"/>
+ <xsd:enumeration value="flowChartMagneticTape"/>
+ <xsd:enumeration value="flowChartMagneticDisk"/>
+ <xsd:enumeration value="flowChartMagneticDrum"/>
+ <xsd:enumeration value="flowChartDisplay"/>
+ <xsd:enumeration value="flowChartDelay"/>
+ <xsd:enumeration value="flowChartAlternateProcess"/>
+ <xsd:enumeration value="flowChartOffpageConnector"/>
+ <xsd:enumeration value="actionButtonBlank"/>
+ <xsd:enumeration value="actionButtonHome"/>
+ <xsd:enumeration value="actionButtonHelp"/>
+ <xsd:enumeration value="actionButtonInformation"/>
+ <xsd:enumeration value="actionButtonForwardNext"/>
+ <xsd:enumeration value="actionButtonBackPrevious"/>
+ <xsd:enumeration value="actionButtonEnd"/>
+ <xsd:enumeration value="actionButtonBeginning"/>
+ <xsd:enumeration value="actionButtonReturn"/>
+ <xsd:enumeration value="actionButtonDocument"/>
+ <xsd:enumeration value="actionButtonSound"/>
+ <xsd:enumeration value="actionButtonMovie"/>
+ <xsd:enumeration value="gear6"/>
+ <xsd:enumeration value="gear9"/>
+ <xsd:enumeration value="funnel"/>
+ <xsd:enumeration value="mathPlus"/>
+ <xsd:enumeration value="mathMinus"/>
+ <xsd:enumeration value="mathMultiply"/>
+ <xsd:enumeration value="mathDivide"/>
+ <xsd:enumeration value="mathEqual"/>
+ <xsd:enumeration value="mathNotEqual"/>
+ <xsd:enumeration value="cornerTabs"/>
+ <xsd:enumeration value="squareTabs"/>
+ <xsd:enumeration value="plaqueTabs"/>
+ <xsd:enumeration value="chartX"/>
+ <xsd:enumeration value="chartStar"/>
+ <xsd:enumeration value="chartPlus"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextShapeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="textNoShape"/>
+ <xsd:enumeration value="textPlain"/>
+ <xsd:enumeration value="textStop"/>
+ <xsd:enumeration value="textTriangle"/>
+ <xsd:enumeration value="textTriangleInverted"/>
+ <xsd:enumeration value="textChevron"/>
+ <xsd:enumeration value="textChevronInverted"/>
+ <xsd:enumeration value="textRingInside"/>
+ <xsd:enumeration value="textRingOutside"/>
+ <xsd:enumeration value="textArchUp"/>
+ <xsd:enumeration value="textArchDown"/>
+ <xsd:enumeration value="textCircle"/>
+ <xsd:enumeration value="textButton"/>
+ <xsd:enumeration value="textArchUpPour"/>
+ <xsd:enumeration value="textArchDownPour"/>
+ <xsd:enumeration value="textCirclePour"/>
+ <xsd:enumeration value="textButtonPour"/>
+ <xsd:enumeration value="textCurveUp"/>
+ <xsd:enumeration value="textCurveDown"/>
+ <xsd:enumeration value="textCanUp"/>
+ <xsd:enumeration value="textCanDown"/>
+ <xsd:enumeration value="textWave1"/>
+ <xsd:enumeration value="textWave2"/>
+ <xsd:enumeration value="textDoubleWave1"/>
+ <xsd:enumeration value="textWave4"/>
+ <xsd:enumeration value="textInflate"/>
+ <xsd:enumeration value="textDeflate"/>
+ <xsd:enumeration value="textInflateBottom"/>
+ <xsd:enumeration value="textDeflateBottom"/>
+ <xsd:enumeration value="textInflateTop"/>
+ <xsd:enumeration value="textDeflateTop"/>
+ <xsd:enumeration value="textDeflateInflate"/>
+ <xsd:enumeration value="textDeflateInflateDeflate"/>
+ <xsd:enumeration value="textFadeRight"/>
+ <xsd:enumeration value="textFadeLeft"/>
+ <xsd:enumeration value="textFadeUp"/>
+ <xsd:enumeration value="textFadeDown"/>
+ <xsd:enumeration value="textSlantUp"/>
+ <xsd:enumeration value="textSlantDown"/>
+ <xsd:enumeration value="textCascadeUp"/>
+ <xsd:enumeration value="textCascadeDown"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_GeomGuideName">
+ <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_GeomGuideFormula">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_GeomGuide">
+ <xsd:attribute name="name" type="ST_GeomGuideName" use="required"/>
+ <xsd:attribute name="fmla" type="ST_GeomGuideFormula" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GeomGuideList">
+ <xsd:sequence>
+ <xsd:element name="gd" type="CT_GeomGuide" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_AdjCoordinate">
+ <xsd:union memberTypes="ST_Coordinate ST_GeomGuideName"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AdjAngle">
+ <xsd:union memberTypes="ST_Angle ST_GeomGuideName"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_AdjPoint2D">
+ <xsd:attribute name="x" type="ST_AdjCoordinate" use="required"/>
+ <xsd:attribute name="y" type="ST_AdjCoordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GeomRect">
+ <xsd:attribute name="l" type="ST_AdjCoordinate" use="required"/>
+ <xsd:attribute name="t" type="ST_AdjCoordinate" use="required"/>
+ <xsd:attribute name="r" type="ST_AdjCoordinate" use="required"/>
+ <xsd:attribute name="b" type="ST_AdjCoordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_XYAdjustHandle">
+ <xsd:sequence>
+ <xsd:element name="pos" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="gdRefX" type="ST_GeomGuideName" use="optional"/>
+ <xsd:attribute name="minX" type="ST_AdjCoordinate" use="optional"/>
+ <xsd:attribute name="maxX" type="ST_AdjCoordinate" use="optional"/>
+ <xsd:attribute name="gdRefY" type="ST_GeomGuideName" use="optional"/>
+ <xsd:attribute name="minY" type="ST_AdjCoordinate" use="optional"/>
+ <xsd:attribute name="maxY" type="ST_AdjCoordinate" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PolarAdjustHandle">
+ <xsd:sequence>
+ <xsd:element name="pos" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="gdRefR" type="ST_GeomGuideName" use="optional"/>
+ <xsd:attribute name="minR" type="ST_AdjCoordinate" use="optional"/>
+ <xsd:attribute name="maxR" type="ST_AdjCoordinate" use="optional"/>
+ <xsd:attribute name="gdRefAng" type="ST_GeomGuideName" use="optional"/>
+ <xsd:attribute name="minAng" type="ST_AdjAngle" use="optional"/>
+ <xsd:attribute name="maxAng" type="ST_AdjAngle" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ConnectionSite">
+ <xsd:sequence>
+ <xsd:element name="pos" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="ang" type="ST_AdjAngle" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AdjustHandleList">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="ahXY" type="CT_XYAdjustHandle" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="ahPolar" type="CT_PolarAdjustHandle" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ConnectionSiteList">
+ <xsd:sequence>
+ <xsd:element name="cxn" type="CT_ConnectionSite" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Connection">
+ <xsd:attribute name="id" type="ST_DrawingElementId" use="required"/>
+ <xsd:attribute name="idx" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Path2DMoveTo">
+ <xsd:sequence>
+ <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Path2DLineTo">
+ <xsd:sequence>
+ <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Path2DArcTo">
+ <xsd:attribute name="wR" type="ST_AdjCoordinate" use="required"/>
+ <xsd:attribute name="hR" type="ST_AdjCoordinate" use="required"/>
+ <xsd:attribute name="stAng" type="ST_AdjAngle" use="required"/>
+ <xsd:attribute name="swAng" type="ST_AdjAngle" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Path2DQuadBezierTo">
+ <xsd:sequence>
+ <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="2" maxOccurs="2"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Path2DCubicBezierTo">
+ <xsd:sequence>
+ <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="3" maxOccurs="3"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Path2DClose"/>
+ <xsd:simpleType name="ST_PathFillMode">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="norm"/>
+ <xsd:enumeration value="lighten"/>
+ <xsd:enumeration value="lightenLess"/>
+ <xsd:enumeration value="darken"/>
+ <xsd:enumeration value="darkenLess"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Path2D">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="close" type="CT_Path2DClose" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="moveTo" type="CT_Path2DMoveTo" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lnTo" type="CT_Path2DLineTo" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="arcTo" type="CT_Path2DArcTo" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="quadBezTo" type="CT_Path2DQuadBezierTo" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cubicBezTo" type="CT_Path2DCubicBezierTo" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:attribute name="w" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="h" type="ST_PositiveCoordinate" use="optional" default="0"/>
+ <xsd:attribute name="fill" type="ST_PathFillMode" use="optional" default="norm"/>
+ <xsd:attribute name="stroke" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="extrusionOk" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Path2DList">
+ <xsd:sequence>
+ <xsd:element name="path" type="CT_Path2D" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PresetGeometry2D">
+ <xsd:sequence>
+ <xsd:element name="avLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="prst" type="ST_ShapeType" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PresetTextShape">
+ <xsd:sequence>
+ <xsd:element name="avLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="prst" type="ST_TextShapeType" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomGeometry2D">
+ <xsd:sequence>
+ <xsd:element name="avLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="gdLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ahLst" type="CT_AdjustHandleList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cxnLst" type="CT_ConnectionSiteList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rect" type="CT_GeomRect" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pathLst" type="CT_Path2DList" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_Geometry">
+ <xsd:choice>
+ <xsd:element name="custGeom" type="CT_CustomGeometry2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="prstGeom" type="CT_PresetGeometry2D" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_TextGeometry">
+ <xsd:choice>
+ <xsd:element name="custGeom" type="CT_CustomGeometry2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="prstTxWarp" type="CT_PresetTextShape" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_LineEndType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="triangle"/>
+ <xsd:enumeration value="stealth"/>
+ <xsd:enumeration value="diamond"/>
+ <xsd:enumeration value="oval"/>
+ <xsd:enumeration value="arrow"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_LineEndWidth">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="sm"/>
+ <xsd:enumeration value="med"/>
+ <xsd:enumeration value="lg"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_LineEndLength">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="sm"/>
+ <xsd:enumeration value="med"/>
+ <xsd:enumeration value="lg"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LineEndProperties">
+ <xsd:attribute name="type" type="ST_LineEndType" use="optional"/>
+ <xsd:attribute name="w" type="ST_LineEndWidth" use="optional"/>
+ <xsd:attribute name="len" type="ST_LineEndLength" use="optional"/>
+ </xsd:complexType>
+ <xsd:group name="EG_LineFillProperties">
+ <xsd:choice>
+ <xsd:element name="noFill" type="CT_NoFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="solidFill" type="CT_SolidColorFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gradFill" type="CT_GradientFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="pattFill" type="CT_PatternFillProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_LineJoinBevel"/>
+ <xsd:complexType name="CT_LineJoinRound"/>
+ <xsd:complexType name="CT_LineJoinMiterProperties">
+ <xsd:attribute name="lim" type="ST_PositivePercentage" use="optional"/>
+ </xsd:complexType>
+ <xsd:group name="EG_LineJoinProperties">
+ <xsd:choice>
+ <xsd:element name="round" type="CT_LineJoinRound" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="bevel" type="CT_LineJoinBevel" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="miter" type="CT_LineJoinMiterProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_PresetLineDashVal">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="solid"/>
+ <xsd:enumeration value="dot"/>
+ <xsd:enumeration value="dash"/>
+ <xsd:enumeration value="lgDash"/>
+ <xsd:enumeration value="dashDot"/>
+ <xsd:enumeration value="lgDashDot"/>
+ <xsd:enumeration value="lgDashDotDot"/>
+ <xsd:enumeration value="sysDash"/>
+ <xsd:enumeration value="sysDot"/>
+ <xsd:enumeration value="sysDashDot"/>
+ <xsd:enumeration value="sysDashDotDot"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PresetLineDashProperties">
+ <xsd:attribute name="val" type="ST_PresetLineDashVal" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DashStop">
+ <xsd:attribute name="d" type="ST_PositivePercentage" use="required"/>
+ <xsd:attribute name="sp" type="ST_PositivePercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DashStopList">
+ <xsd:sequence>
+ <xsd:element name="ds" type="CT_DashStop" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_LineDashProperties">
+ <xsd:choice>
+ <xsd:element name="prstDash" type="CT_PresetLineDashProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="custDash" type="CT_DashStopList" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_LineCap">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="rnd"/>
+ <xsd:enumeration value="sq"/>
+ <xsd:enumeration value="flat"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_LineWidth">
+ <xsd:restriction base="ST_Coordinate32Unqualified">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="20116800"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PenAlignment">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="in"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CompoundLine">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="sng"/>
+ <xsd:enumeration value="dbl"/>
+ <xsd:enumeration value="thickThin"/>
+ <xsd:enumeration value="thinThick"/>
+ <xsd:enumeration value="tri"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LineProperties">
+ <xsd:sequence>
+ <xsd:group ref="EG_LineFillProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_LineDashProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_LineJoinProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="headEnd" type="CT_LineEndProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tailEnd" type="CT_LineEndProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="w" type="ST_LineWidth" use="optional"/>
+ <xsd:attribute name="cap" type="ST_LineCap" use="optional"/>
+ <xsd:attribute name="cmpd" type="ST_CompoundLine" use="optional"/>
+ <xsd:attribute name="algn" type="ST_PenAlignment" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ShapeID">
+ <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ShapeProperties">
+ <xsd:sequence>
+ <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_Geometry" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="bwMode" type="ST_BlackWhiteMode" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupShapeProperties">
+ <xsd:sequence>
+ <xsd:element name="xfrm" type="CT_GroupTransform2D" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="bwMode" type="ST_BlackWhiteMode" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StyleMatrixReference">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="idx" type="ST_StyleMatrixColumnIndex" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontReference">
+ <xsd:sequence>
+ <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="idx" type="ST_FontCollectionIndex" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ShapeStyle">
+ <xsd:sequence>
+ <xsd:element name="lnRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fillRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="effectRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fontRef" type="CT_FontReference" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DefaultShapeDefinition">
+ <xsd:sequence>
+ <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="bodyPr" type="CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lstStyle" type="CT_TextListStyle" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ObjectStyleDefaults">
+ <xsd:sequence>
+ <xsd:element name="spDef" type="CT_DefaultShapeDefinition" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lnDef" type="CT_DefaultShapeDefinition" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txDef" type="CT_DefaultShapeDefinition" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EmptyElement"/>
+ <xsd:complexType name="CT_ColorMapping">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="bg1" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="tx1" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="bg2" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="tx2" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="accent1" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="accent2" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="accent3" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="accent4" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="accent5" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="accent6" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="hlink" type="ST_ColorSchemeIndex" use="required"/>
+ <xsd:attribute name="folHlink" type="ST_ColorSchemeIndex" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorMappingOverride">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="masterClrMapping" type="CT_EmptyElement"/>
+ <xsd:element name="overrideClrMapping" type="CT_ColorMapping"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorSchemeAndMapping">
+ <xsd:sequence>
+ <xsd:element name="clrScheme" type="CT_ColorScheme" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="clrMap" type="CT_ColorMapping" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorSchemeList">
+ <xsd:sequence>
+ <xsd:element name="extraClrScheme" type="CT_ColorSchemeAndMapping" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OfficeStyleSheet">
+ <xsd:sequence>
+ <xsd:element name="themeElements" type="CT_BaseStyles" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="objectDefaults" type="CT_ObjectStyleDefaults" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extraClrSchemeLst" type="CT_ColorSchemeList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="custClrLst" type="CT_CustomColorList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BaseStylesOverride">
+ <xsd:sequence>
+ <xsd:element name="clrScheme" type="CT_ColorScheme" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="fontScheme" type="CT_FontScheme" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="fmtScheme" type="CT_StyleMatrix" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ClipboardStyleSheet">
+ <xsd:sequence>
+ <xsd:element name="themeElements" type="CT_BaseStyles" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="clrMap" type="CT_ColorMapping" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="theme" type="CT_OfficeStyleSheet"/>
+ <xsd:element name="themeOverride" type="CT_BaseStylesOverride"/>
+ <xsd:element name="themeManager" type="CT_EmptyElement"/>
+ <xsd:complexType name="CT_TableCellProperties">
+ <xsd:sequence>
+ <xsd:element name="lnL" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lnR" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lnT" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lnB" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lnTlToBr" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lnBlToTr" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cell3D" type="CT_Cell3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="headers" type="CT_Headers" minOccurs="0"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="marL" type="ST_Coordinate32" use="optional" default="91440"/>
+ <xsd:attribute name="marR" type="ST_Coordinate32" use="optional" default="91440"/>
+ <xsd:attribute name="marT" type="ST_Coordinate32" use="optional" default="45720"/>
+ <xsd:attribute name="marB" type="ST_Coordinate32" use="optional" default="45720"/>
+ <xsd:attribute name="vert" type="ST_TextVerticalType" use="optional" default="horz"/>
+ <xsd:attribute name="anchor" type="ST_TextAnchoringType" use="optional" default="t"/>
+ <xsd:attribute name="anchorCtr" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="horzOverflow" type="ST_TextHorzOverflowType" use="optional" default="clip"
+ />
+ </xsd:complexType>
+ <xsd:complexType name="CT_Headers">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="header" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableCol">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="w" type="ST_Coordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableGrid">
+ <xsd:sequence>
+ <xsd:element name="gridCol" type="CT_TableCol" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableCell">
+ <xsd:sequence>
+ <xsd:element name="txBody" type="CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tcPr" type="CT_TableCellProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="rowSpan" type="xsd:int" use="optional" default="1"/>
+ <xsd:attribute name="gridSpan" type="xsd:int" use="optional" default="1"/>
+ <xsd:attribute name="hMerge" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="vMerge" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="id" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableRow">
+ <xsd:sequence>
+ <xsd:element name="tc" type="CT_TableCell" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="h" type="ST_Coordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableProperties">
+ <xsd:sequence>
+ <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="tableStyle" type="CT_TableStyle"/>
+ <xsd:element name="tableStyleId" type="s:ST_Guid"/>
+ </xsd:choice>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="rtl" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="firstRow" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="firstCol" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="lastRow" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="lastCol" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="bandRow" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="bandCol" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Table">
+ <xsd:sequence>
+ <xsd:element name="tblPr" type="CT_TableProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblGrid" type="CT_TableGrid" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="tr" type="CT_TableRow" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="tbl" type="CT_Table"/>
+ <xsd:complexType name="CT_Cell3D">
+ <xsd:sequence>
+ <xsd:element name="bevel" type="CT_Bevel" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lightRig" type="CT_LightRig" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="prstMaterial" type="ST_PresetMaterialType" use="optional" default="plastic"
+ />
+ </xsd:complexType>
+ <xsd:group name="EG_ThemeableFillStyle">
+ <xsd:choice>
+ <xsd:element name="fill" type="CT_FillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fillRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_ThemeableLineStyle">
+ <xsd:choice>
+ <xsd:element name="ln" type="CT_LineProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lnRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:group name="EG_ThemeableEffectStyle">
+ <xsd:choice>
+ <xsd:element name="effect" type="CT_EffectProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="effectRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_ThemeableFontStyles">
+ <xsd:choice>
+ <xsd:element name="font" type="CT_FontCollection" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="fontRef" type="CT_FontReference" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_OnOffStyleType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="on"/>
+ <xsd:enumeration value="off"/>
+ <xsd:enumeration value="def"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TableStyleTextStyle">
+ <xsd:sequence>
+ <xsd:group ref="EG_ThemeableFontStyles" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="b" type="ST_OnOffStyleType" use="optional" default="def"/>
+ <xsd:attribute name="i" type="ST_OnOffStyleType" use="optional" default="def"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableCellBorderStyle">
+ <xsd:sequence>
+ <xsd:element name="left" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="right" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="top" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bottom" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="insideH" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="insideV" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tl2br" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tr2bl" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableBackgroundStyle">
+ <xsd:sequence>
+ <xsd:group ref="EG_ThemeableFillStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_ThemeableEffectStyle" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableStyleCellStyle">
+ <xsd:sequence>
+ <xsd:element name="tcBdr" type="CT_TableCellBorderStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_ThemeableFillStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cell3D" type="CT_Cell3D" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TablePartStyle">
+ <xsd:sequence>
+ <xsd:element name="tcTxStyle" type="CT_TableStyleTextStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tcStyle" type="CT_TableStyleCellStyle" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableStyle">
+ <xsd:sequence>
+ <xsd:element name="tblBg" type="CT_TableBackgroundStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="wholeTbl" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="band1H" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="band2H" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="band1V" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="band2V" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lastCol" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="firstCol" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lastRow" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="seCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="swCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="firstRow" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="neCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="nwCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="styleId" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="styleName" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableStyleList">
+ <xsd:sequence>
+ <xsd:element name="tblStyle" type="CT_TableStyle" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="def" type="s:ST_Guid" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="tblStyleLst" type="CT_TableStyleList"/>
+ <xsd:complexType name="CT_TextParagraph">
+ <xsd:sequence>
+ <xsd:element name="pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_TextRun" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="endParaRPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextAnchoringType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="just"/>
+ <xsd:enumeration value="dist"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextVertOverflowType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="overflow"/>
+ <xsd:enumeration value="ellipsis"/>
+ <xsd:enumeration value="clip"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextHorzOverflowType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="overflow"/>
+ <xsd:enumeration value="clip"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextVerticalType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="horz"/>
+ <xsd:enumeration value="vert"/>
+ <xsd:enumeration value="vert270"/>
+ <xsd:enumeration value="wordArtVert"/>
+ <xsd:enumeration value="eaVert"/>
+ <xsd:enumeration value="mongolianVert"/>
+ <xsd:enumeration value="wordArtVertRtl"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextWrappingType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="square"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextColumnCount">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxInclusive value="16"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextListStyle">
+ <xsd:sequence>
+ <xsd:element name="defPPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl1pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl2pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl3pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl4pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl5pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl6pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl7pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl8pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="lvl9pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextFontScalePercentOrPercentString">
+ <xsd:union memberTypes="ST_TextFontScalePercent s:ST_Percentage"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextFontScalePercent">
+ <xsd:restriction base="ST_PercentageDecimal">
+ <xsd:minInclusive value="1000"/>
+ <xsd:maxInclusive value="100000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextNormalAutofit">
+ <xsd:attribute name="fontScale" type="ST_TextFontScalePercentOrPercentString" use="optional"
+ default="100%"/>
+ <xsd:attribute name="lnSpcReduction" type="ST_TextSpacingPercentOrPercentString" use="optional"
+ default="0%"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextShapeAutofit"/>
+ <xsd:complexType name="CT_TextNoAutofit"/>
+ <xsd:group name="EG_TextAutofit">
+ <xsd:choice>
+ <xsd:element name="noAutofit" type="CT_TextNoAutofit"/>
+ <xsd:element name="normAutofit" type="CT_TextNormalAutofit"/>
+ <xsd:element name="spAutoFit" type="CT_TextShapeAutofit"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_TextBodyProperties">
+ <xsd:sequence>
+ <xsd:element name="prstTxWarp" type="CT_PresetTextShape" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_TextAutofit" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_Text3D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="rot" type="ST_Angle" use="optional"/>
+ <xsd:attribute name="spcFirstLastPara" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="vertOverflow" type="ST_TextVertOverflowType" use="optional"/>
+ <xsd:attribute name="horzOverflow" type="ST_TextHorzOverflowType" use="optional"/>
+ <xsd:attribute name="vert" type="ST_TextVerticalType" use="optional"/>
+ <xsd:attribute name="wrap" type="ST_TextWrappingType" use="optional"/>
+ <xsd:attribute name="lIns" type="ST_Coordinate32" use="optional"/>
+ <xsd:attribute name="tIns" type="ST_Coordinate32" use="optional"/>
+ <xsd:attribute name="rIns" type="ST_Coordinate32" use="optional"/>
+ <xsd:attribute name="bIns" type="ST_Coordinate32" use="optional"/>
+ <xsd:attribute name="numCol" type="ST_TextColumnCount" use="optional"/>
+ <xsd:attribute name="spcCol" type="ST_PositiveCoordinate32" use="optional"/>
+ <xsd:attribute name="rtlCol" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="fromWordArt" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="anchor" type="ST_TextAnchoringType" use="optional"/>
+ <xsd:attribute name="anchorCtr" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="forceAA" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="upright" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="compatLnSpc" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextBody">
+ <xsd:sequence>
+ <xsd:element name="bodyPr" type="CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lstStyle" type="CT_TextListStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="p" type="CT_TextParagraph" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextBulletStartAtNum">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxInclusive value="32767"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextAutonumberScheme">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="alphaLcParenBoth"/>
+ <xsd:enumeration value="alphaUcParenBoth"/>
+ <xsd:enumeration value="alphaLcParenR"/>
+ <xsd:enumeration value="alphaUcParenR"/>
+ <xsd:enumeration value="alphaLcPeriod"/>
+ <xsd:enumeration value="alphaUcPeriod"/>
+ <xsd:enumeration value="arabicParenBoth"/>
+ <xsd:enumeration value="arabicParenR"/>
+ <xsd:enumeration value="arabicPeriod"/>
+ <xsd:enumeration value="arabicPlain"/>
+ <xsd:enumeration value="romanLcParenBoth"/>
+ <xsd:enumeration value="romanUcParenBoth"/>
+ <xsd:enumeration value="romanLcParenR"/>
+ <xsd:enumeration value="romanUcParenR"/>
+ <xsd:enumeration value="romanLcPeriod"/>
+ <xsd:enumeration value="romanUcPeriod"/>
+ <xsd:enumeration value="circleNumDbPlain"/>
+ <xsd:enumeration value="circleNumWdBlackPlain"/>
+ <xsd:enumeration value="circleNumWdWhitePlain"/>
+ <xsd:enumeration value="arabicDbPeriod"/>
+ <xsd:enumeration value="arabicDbPlain"/>
+ <xsd:enumeration value="ea1ChsPeriod"/>
+ <xsd:enumeration value="ea1ChsPlain"/>
+ <xsd:enumeration value="ea1ChtPeriod"/>
+ <xsd:enumeration value="ea1ChtPlain"/>
+ <xsd:enumeration value="ea1JpnChsDbPeriod"/>
+ <xsd:enumeration value="ea1JpnKorPlain"/>
+ <xsd:enumeration value="ea1JpnKorPeriod"/>
+ <xsd:enumeration value="arabic1Minus"/>
+ <xsd:enumeration value="arabic2Minus"/>
+ <xsd:enumeration value="hebrew2Minus"/>
+ <xsd:enumeration value="thaiAlphaPeriod"/>
+ <xsd:enumeration value="thaiAlphaParenR"/>
+ <xsd:enumeration value="thaiAlphaParenBoth"/>
+ <xsd:enumeration value="thaiNumPeriod"/>
+ <xsd:enumeration value="thaiNumParenR"/>
+ <xsd:enumeration value="thaiNumParenBoth"/>
+ <xsd:enumeration value="hindiAlphaPeriod"/>
+ <xsd:enumeration value="hindiNumPeriod"/>
+ <xsd:enumeration value="hindiNumParenR"/>
+ <xsd:enumeration value="hindiAlpha1Period"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextBulletColorFollowText"/>
+ <xsd:group name="EG_TextBulletColor">
+ <xsd:choice>
+ <xsd:element name="buClrTx" type="CT_TextBulletColorFollowText" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="buClr" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_TextBulletSize">
+ <xsd:union memberTypes="ST_TextBulletSizePercent ST_TextBulletSizeDecimal"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextBulletSizePercent">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0*((2[5-9])|([3-9][0-9])|([1-3][0-9][0-9])|400)%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextBulletSizeDecimal">
+ <xsd:restriction base="ST_PercentageDecimal">
+ <xsd:minInclusive value="25000"/>
+ <xsd:maxInclusive value="400000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextBulletSizeFollowText"/>
+ <xsd:complexType name="CT_TextBulletSizePercent">
+ <xsd:attribute name="val" type="ST_TextBulletSizePercent" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextBulletSizePoint">
+ <xsd:attribute name="val" type="ST_TextFontSize" use="required"/>
+ </xsd:complexType>
+ <xsd:group name="EG_TextBulletSize">
+ <xsd:choice>
+ <xsd:element name="buSzTx" type="CT_TextBulletSizeFollowText"/>
+ <xsd:element name="buSzPct" type="CT_TextBulletSizePercent"/>
+ <xsd:element name="buSzPts" type="CT_TextBulletSizePoint"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_TextBulletTypefaceFollowText"/>
+ <xsd:group name="EG_TextBulletTypeface">
+ <xsd:choice>
+ <xsd:element name="buFontTx" type="CT_TextBulletTypefaceFollowText"/>
+ <xsd:element name="buFont" type="CT_TextFont"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_TextAutonumberBullet">
+ <xsd:attribute name="type" type="ST_TextAutonumberScheme" use="required"/>
+ <xsd:attribute name="startAt" type="ST_TextBulletStartAtNum" use="optional" default="1"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextCharBullet">
+ <xsd:attribute name="char" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextBlipBullet">
+ <xsd:sequence>
+ <xsd:element name="blip" type="CT_Blip" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextNoBullet"/>
+ <xsd:group name="EG_TextBullet">
+ <xsd:choice>
+ <xsd:element name="buNone" type="CT_TextNoBullet"/>
+ <xsd:element name="buAutoNum" type="CT_TextAutonumberBullet"/>
+ <xsd:element name="buChar" type="CT_TextCharBullet"/>
+ <xsd:element name="buBlip" type="CT_TextBlipBullet"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_TextPoint">
+ <xsd:union memberTypes="ST_TextPointUnqualified s:ST_UniversalMeasure"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextPointUnqualified">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="-400000"/>
+ <xsd:maxInclusive value="400000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextNonNegativePoint">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="400000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextFontSize">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="100"/>
+ <xsd:maxInclusive value="400000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextTypeface">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextFont">
+ <xsd:attribute name="typeface" type="ST_TextTypeface" use="required"/>
+ <xsd:attribute name="panose" type="s:ST_Panose" use="optional"/>
+ <xsd:attribute name="pitchFamily" type="xsd:byte" use="optional" default="0"/>
+ <xsd:attribute name="charset" type="xsd:byte" use="optional" default="1"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextUnderlineType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="words"/>
+ <xsd:enumeration value="sng"/>
+ <xsd:enumeration value="dbl"/>
+ <xsd:enumeration value="heavy"/>
+ <xsd:enumeration value="dotted"/>
+ <xsd:enumeration value="dottedHeavy"/>
+ <xsd:enumeration value="dash"/>
+ <xsd:enumeration value="dashHeavy"/>
+ <xsd:enumeration value="dashLong"/>
+ <xsd:enumeration value="dashLongHeavy"/>
+ <xsd:enumeration value="dotDash"/>
+ <xsd:enumeration value="dotDashHeavy"/>
+ <xsd:enumeration value="dotDotDash"/>
+ <xsd:enumeration value="dotDotDashHeavy"/>
+ <xsd:enumeration value="wavy"/>
+ <xsd:enumeration value="wavyHeavy"/>
+ <xsd:enumeration value="wavyDbl"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextUnderlineLineFollowText"/>
+ <xsd:complexType name="CT_TextUnderlineFillFollowText"/>
+ <xsd:complexType name="CT_TextUnderlineFillGroupWrapper">
+ <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:complexType>
+ <xsd:group name="EG_TextUnderlineLine">
+ <xsd:choice>
+ <xsd:element name="uLnTx" type="CT_TextUnderlineLineFollowText"/>
+ <xsd:element name="uLn" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_TextUnderlineFill">
+ <xsd:choice>
+ <xsd:element name="uFillTx" type="CT_TextUnderlineFillFollowText"/>
+ <xsd:element name="uFill" type="CT_TextUnderlineFillGroupWrapper"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:simpleType name="ST_TextStrikeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="noStrike"/>
+ <xsd:enumeration value="sngStrike"/>
+ <xsd:enumeration value="dblStrike"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextCapsType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="small"/>
+ <xsd:enumeration value="all"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextCharacterProperties">
+ <xsd:sequence>
+ <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="highlight" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_TextUnderlineLine" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_TextUnderlineFill" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="latin" type="CT_TextFont" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ea" type="CT_TextFont" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cs" type="CT_TextFont" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sym" type="CT_TextFont" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hlinkClick" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hlinkMouseOver" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rtl" type="CT_Boolean" minOccurs="0"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="kumimoji" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="lang" type="s:ST_Lang" use="optional"/>
+ <xsd:attribute name="altLang" type="s:ST_Lang" use="optional"/>
+ <xsd:attribute name="sz" type="ST_TextFontSize" use="optional"/>
+ <xsd:attribute name="b" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="i" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="u" type="ST_TextUnderlineType" use="optional"/>
+ <xsd:attribute name="strike" type="ST_TextStrikeType" use="optional"/>
+ <xsd:attribute name="kern" type="ST_TextNonNegativePoint" use="optional"/>
+ <xsd:attribute name="cap" type="ST_TextCapsType" use="optional"/>
+ <xsd:attribute name="spc" type="ST_TextPoint" use="optional"/>
+ <xsd:attribute name="normalizeH" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="baseline" type="ST_Percentage" use="optional"/>
+ <xsd:attribute name="noProof" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="dirty" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="err" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="smtClean" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="smtId" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="bmk" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Boolean">
+ <xsd:attribute name="val" type="s:ST_OnOff" default="0"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextSpacingPoint">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="158400"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextSpacingPercentOrPercentString">
+ <xsd:union memberTypes="ST_TextSpacingPercent s:ST_Percentage"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextSpacingPercent">
+ <xsd:restriction base="ST_PercentageDecimal">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="13200000"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextSpacingPercent">
+ <xsd:attribute name="val" type="ST_TextSpacingPercentOrPercentString" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextSpacingPoint">
+ <xsd:attribute name="val" type="ST_TextSpacingPoint" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextMargin">
+ <xsd:restriction base="ST_Coordinate32Unqualified">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="51206400"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextIndent">
+ <xsd:restriction base="ST_Coordinate32Unqualified">
+ <xsd:minInclusive value="-51206400"/>
+ <xsd:maxInclusive value="51206400"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextTabAlignType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="dec"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextTabStop">
+ <xsd:attribute name="pos" type="ST_Coordinate32" use="optional"/>
+ <xsd:attribute name="algn" type="ST_TextTabAlignType" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextTabStopList">
+ <xsd:sequence>
+ <xsd:element name="tab" type="CT_TextTabStop" minOccurs="0" maxOccurs="32"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextLineBreak">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextSpacing">
+ <xsd:choice>
+ <xsd:element name="spcPct" type="CT_TextSpacingPercent"/>
+ <xsd:element name="spcPts" type="CT_TextSpacingPoint"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextAlignType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="just"/>
+ <xsd:enumeration value="justLow"/>
+ <xsd:enumeration value="dist"/>
+ <xsd:enumeration value="thaiDist"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextFontAlignType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="ctr"/>
+ <xsd:enumeration value="base"/>
+ <xsd:enumeration value="b"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextIndentLevelType">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="8"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextParagraphProperties">
+ <xsd:sequence>
+ <xsd:element name="lnSpc" type="CT_TextSpacing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spcBef" type="CT_TextSpacing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spcAft" type="CT_TextSpacing" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_TextBulletColor" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_TextBulletSize" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_TextBulletTypeface" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_TextBullet" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tabLst" type="CT_TextTabStopList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="defRPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="marL" type="ST_TextMargin" use="optional"/>
+ <xsd:attribute name="marR" type="ST_TextMargin" use="optional"/>
+ <xsd:attribute name="lvl" type="ST_TextIndentLevelType" use="optional"/>
+ <xsd:attribute name="indent" type="ST_TextIndent" use="optional"/>
+ <xsd:attribute name="algn" type="ST_TextAlignType" use="optional"/>
+ <xsd:attribute name="defTabSz" type="ST_Coordinate32" use="optional"/>
+ <xsd:attribute name="rtl" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="eaLnBrk" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="fontAlgn" type="ST_TextFontAlignType" use="optional"/>
+ <xsd:attribute name="latinLnBrk" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="hangingPunct" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextField">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="t" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="type" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:group name="EG_TextRun">
+ <xsd:choice>
+ <xsd:element name="r" type="CT_RegularTextRun"/>
+ <xsd:element name="br" type="CT_TextLineBreak"/>
+ <xsd:element name="fld" type="CT_TextField"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_RegularTextRun">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="t" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/lib/schema/dml-picture.xsd b/lib/schema/dml-picture.xsd
new file mode 100644
index 00000000..1dbf0514
--- /dev/null
+++ b/lib/schema/dml-picture.xsd
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ 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">
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
+ schemaLocation="dml-main.xsd"/>
+ <xsd:complexType name="CT_PictureNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Picture">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="pic" type="CT_Picture"/>
+</xsd:schema>
diff --git a/lib/schema/dml-spreadsheetDrawing.xsd b/lib/schema/dml-spreadsheetDrawing.xsd
new file mode 100644
index 00000000..f1af17db
--- /dev/null
+++ b/lib/schema/dml-spreadsheetDrawing.xsd
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
+ xmlns="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
+ xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
+ elementFormDefault="qualified">
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
+ schemaLocation="dml-main.xsd"/>
+ <xsd:import schemaLocation="shared-relationshipReference.xsd"
+ namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
+ <xsd:element name="from" type="CT_Marker"/>
+ <xsd:element name="to" type="CT_Marker"/>
+ <xsd:complexType name="CT_AnchorClientData">
+ <xsd:attribute name="fLocksWithSheet" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="fPrintsWithSheet" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ShapeNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Shape">
+ <xsd:sequence>
+ <xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="macro" type="xsd:string" use="optional"/>
+ <xsd:attribute name="textlink" type="xsd:string" use="optional"/>
+ <xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ConnectorNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Connector">
+ <xsd:sequence>
+ <xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="macro" type="xsd:string" use="optional"/>
+ <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PictureNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Picture">
+ <xsd:sequence>
+ <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="macro" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GraphicalObjectFrameNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
+ minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GraphicalObjectFrame">
+ <xsd:sequence>
+ <xsd:element name="nvGraphicFramePr" type="CT_GraphicalObjectFrameNonVisual" minOccurs="1"
+ maxOccurs="1"/>
+ <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="macro" type="xsd:string" use="optional"/>
+ <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupShapeNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupShape">
+ <xsd:sequence>
+ <xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="sp" type="CT_Shape"/>
+ <xsd:element name="grpSp" type="CT_GroupShape"/>
+ <xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/>
+ <xsd:element name="cxnSp" type="CT_Connector"/>
+ <xsd:element name="pic" type="CT_Picture"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_ObjectChoices">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="sp" type="CT_Shape"/>
+ <xsd:element name="grpSp" type="CT_GroupShape"/>
+ <xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/>
+ <xsd:element name="cxnSp" type="CT_Connector"/>
+ <xsd:element name="pic" type="CT_Picture"/>
+ <xsd:element name="contentPart" type="CT_Rel"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_Rel">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ColID">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_RowID">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="0"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Marker">
+ <xsd:sequence>
+ <xsd:element name="col" type="ST_ColID"/>
+ <xsd:element name="colOff" type="a:ST_Coordinate"/>
+ <xsd:element name="row" type="ST_RowID"/>
+ <xsd:element name="rowOff" type="a:ST_Coordinate"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_EditAs">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="twoCell"/>
+ <xsd:enumeration value="oneCell"/>
+ <xsd:enumeration value="absolute"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TwoCellAnchor">
+ <xsd:sequence>
+ <xsd:element name="from" type="CT_Marker"/>
+ <xsd:element name="to" type="CT_Marker"/>
+ <xsd:group ref="EG_ObjectChoices"/>
+ <xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="editAs" type="ST_EditAs" use="optional" default="twoCell"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OneCellAnchor">
+ <xsd:sequence>
+ <xsd:element name="from" type="CT_Marker"/>
+ <xsd:element name="ext" type="a:CT_PositiveSize2D"/>
+ <xsd:group ref="EG_ObjectChoices"/>
+ <xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AbsoluteAnchor">
+ <xsd:sequence>
+ <xsd:element name="pos" type="a:CT_Point2D"/>
+ <xsd:element name="ext" type="a:CT_PositiveSize2D"/>
+ <xsd:group ref="EG_ObjectChoices"/>
+ <xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_Anchor">
+ <xsd:choice>
+ <xsd:element name="twoCellAnchor" type="CT_TwoCellAnchor"/>
+ <xsd:element name="oneCellAnchor" type="CT_OneCellAnchor"/>
+ <xsd:element name="absoluteAnchor" type="CT_AbsoluteAnchor"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_Drawing">
+ <xsd:sequence>
+ <xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="wsDr" type="CT_Drawing"/>
+</xsd:schema>
diff --git a/lib/schema/dml-wordprocessingDrawing.xsd b/lib/schema/dml-wordprocessingDrawing.xsd
new file mode 100644
index 00000000..cff99277
--- /dev/null
+++ b/lib/schema/dml-wordprocessingDrawing.xsd
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
+ xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+ xmlns="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
+ targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
+ elementFormDefault="qualified">
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
+ schemaLocation="dml-main.xsd"/>
+ <xsd:import schemaLocation="wml.xsd"
+ namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"/>
+ <xsd:complexType name="CT_EffectExtent">
+ <xsd:attribute name="l" type="a:ST_Coordinate" use="required"/>
+ <xsd:attribute name="t" type="a:ST_Coordinate" use="required"/>
+ <xsd:attribute name="r" type="a:ST_Coordinate" use="required"/>
+ <xsd:attribute name="b" type="a:ST_Coordinate" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_WrapDistance">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Inline">
+ <xsd:sequence>
+ <xsd:element name="extent" type="a:CT_PositiveSize2D"/>
+ <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
+ <xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
+ minOccurs="0" maxOccurs="1"/>
+ <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_WrapText">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="bothSides"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="largest"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_WrapPath">
+ <xsd:sequence>
+ <xsd:element name="start" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="lineTo" type="a:CT_Point2D" minOccurs="2" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="edited" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WrapNone"/>
+ <xsd:complexType name="CT_WrapSquare">
+ <xsd:sequence>
+ <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="wrapText" type="ST_WrapText" use="required"/>
+ <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WrapTight">
+ <xsd:sequence>
+ <xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="wrapText" type="ST_WrapText" use="required"/>
+ <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WrapThrough">
+ <xsd:sequence>
+ <xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="wrapText" type="ST_WrapText" use="required"/>
+ <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WrapTopBottom">
+ <xsd:sequence>
+ <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
+ </xsd:complexType>
+ <xsd:group name="EG_WrapType">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="wrapNone" type="CT_WrapNone" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="wrapSquare" type="CT_WrapSquare" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="wrapTight" type="CT_WrapTight" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="wrapThrough" type="CT_WrapThrough" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="wrapTopAndBottom" type="CT_WrapTopBottom" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:simpleType name="ST_PositionOffset">
+ <xsd:restriction base="xsd:int"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AlignH">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="inside"/>
+ <xsd:enumeration value="outside"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_RelFromH">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="margin"/>
+ <xsd:enumeration value="page"/>
+ <xsd:enumeration value="column"/>
+ <xsd:enumeration value="character"/>
+ <xsd:enumeration value="leftMargin"/>
+ <xsd:enumeration value="rightMargin"/>
+ <xsd:enumeration value="insideMargin"/>
+ <xsd:enumeration value="outsideMargin"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PosH">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="align" type="ST_AlignH" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="relativeFrom" type="ST_RelFromH" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_AlignV">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="top"/>
+ <xsd:enumeration value="bottom"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="inside"/>
+ <xsd:enumeration value="outside"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_RelFromV">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="margin"/>
+ <xsd:enumeration value="page"/>
+ <xsd:enumeration value="paragraph"/>
+ <xsd:enumeration value="line"/>
+ <xsd:enumeration value="topMargin"/>
+ <xsd:enumeration value="bottomMargin"/>
+ <xsd:enumeration value="insideMargin"/>
+ <xsd:enumeration value="outsideMargin"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PosV">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="align" type="ST_AlignV" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="relativeFrom" type="ST_RelFromV" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Anchor">
+ <xsd:sequence>
+ <xsd:element name="simplePos" type="a:CT_Point2D"/>
+ <xsd:element name="positionH" type="CT_PosH"/>
+ <xsd:element name="positionV" type="CT_PosV"/>
+ <xsd:element name="extent" type="a:CT_PositiveSize2D"/>
+ <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/>
+ <xsd:group ref="EG_WrapType"/>
+ <xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
+ minOccurs="0" maxOccurs="1"/>
+ <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/>
+ <xsd:attribute name="simplePos" type="xsd:boolean"/>
+ <xsd:attribute name="relativeHeight" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="behindDoc" type="xsd:boolean" use="required"/>
+ <xsd:attribute name="locked" type="xsd:boolean" use="required"/>
+ <xsd:attribute name="layoutInCell" type="xsd:boolean" use="required"/>
+ <xsd:attribute name="hidden" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="allowOverlap" type="xsd:boolean" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="inline" type="CT_Inline"/>
+ <xsd:element name="anchor" type="CT_Anchor"/>
+</xsd:schema>
diff --git a/lib/schema/opc-contentTypes.xsd b/lib/schema/opc-contentTypes.xsd
new file mode 100644
index 00000000..e4c5160e
--- /dev/null
+++ b/lib/schema/opc-contentTypes.xsd
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<xs:schema xmlns="http://schemas.openxmlformats.org/package/2006/content-types"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://schemas.openxmlformats.org/package/2006/content-types"
+ elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
+
+ <xs:element name="Types" type="CT_Types"/>
+ <xs:element name="Default" type="CT_Default"/>
+ <xs:element name="Override" type="CT_Override"/>
+
+ <xs:complexType name="CT_Types">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="Default"/>
+ <xs:element ref="Override"/>
+ </xs:choice>
+ </xs:complexType>
+
+ <xs:complexType name="CT_Default">
+ <xs:attribute name="Extension" type="ST_Extension" use="required"/>
+ <xs:attribute name="ContentType" type="ST_ContentType" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="CT_Override">
+ <xs:attribute name="ContentType" type="ST_ContentType" use="required"/>
+ <xs:attribute name="PartName" type="xs:anyURI" use="required"/>
+ </xs:complexType>
+
+ <xs:simpleType name="ST_ContentType">
+ <xs:restriction base="xs:string">
+ <xs:pattern
+ value="(((([\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]])+))/((([\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]])+))((\s+)*;(\s+)*(((([\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]])+))=((([\p{IsBasicLatin}-[\p{Cc}&#127;\(\)&lt;&gt;@,;:\\&quot;/\[\]\?=\{\}\s\t]])+)|(&quot;(([\p{IsLatin-1Supplement}\p{IsBasicLatin}-[\p{Cc}&#127;&quot;\n\r]]|(\s+))|(\\[\p{IsBasicLatin}]))*&quot;))))*)"
+ />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ST_Extension">
+ <xs:restriction base="xs:string">
+ <xs:pattern
+ value="([!$&amp;'\(\)\*\+,:=]|(%[0-9a-fA-F][0-9a-fA-F])|[:@]|[a-zA-Z0-9\-_~])+"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
diff --git a/lib/schema/opc-coreProperties.xsd b/lib/schema/opc-coreProperties.xsd
new file mode 100644
index 00000000..a2d6cdac
--- /dev/null
+++ b/lib/schema/opc-coreProperties.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
+ xmlns="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:dcterms="http://purl.org/dc/terms/" elementFormDefault="qualified" blockDefault="#all">
+
+ <xs:import namespace="http://purl.org/dc/elements/1.1/"
+ schemaLocation="dc.xsd"/>
+ <xs:import namespace="http://purl.org/dc/terms/"
+ schemaLocation="dcterms.xsd"/>
+ <xs:import id="xml" namespace="http://www.w3.org/XML/1998/namespace"/>
+
+ <xs:element name="coreProperties" type="CT_CoreProperties"/>
+
+ <xs:complexType name="CT_CoreProperties">
+ <xs:all>
+ <xs:element name="category" minOccurs="0" maxOccurs="1" type="xs:string"/>
+ <xs:element name="contentStatus" minOccurs="0" maxOccurs="1" type="xs:string"/>
+ <xs:element ref="dcterms:created" minOccurs="0" maxOccurs="1"/>
+ <xs:element ref="dc:creator" minOccurs="0" maxOccurs="1"/>
+ <xs:element ref="dc:description" minOccurs="0" maxOccurs="1"/>
+ <xs:element ref="dc:identifier" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="keywords" minOccurs="0" maxOccurs="1" type="CT_Keywords"/>
+ <xs:element ref="dc:language" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="lastModifiedBy" minOccurs="0" maxOccurs="1" type="xs:string"/>
+ <xs:element name="lastPrinted" minOccurs="0" maxOccurs="1" type="xs:dateTime"/>
+ <xs:element ref="dcterms:modified" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="revision" minOccurs="0" maxOccurs="1" type="xs:string"/>
+ <xs:element ref="dc:subject" minOccurs="0" maxOccurs="1"/>
+ <xs:element ref="dc:title" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="version" minOccurs="0" maxOccurs="1" type="xs:string"/>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:complexType name="CT_Keywords" mixed="true">
+ <xs:sequence>
+ <xs:element name="value" minOccurs="0" maxOccurs="unbounded" type="CT_Keyword"/>
+ </xs:sequence>
+ <xs:attribute ref="xml:lang" use="optional"/>
+ </xs:complexType>
+
+ <xs:complexType name="CT_Keyword">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute ref="xml:lang" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+</xs:schema>
diff --git a/lib/schema/opc-digSig.xsd b/lib/schema/opc-digSig.xsd
new file mode 100644
index 00000000..73782264
--- /dev/null
+++ b/lib/schema/opc-digSig.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/digital-signature"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://schemas.openxmlformats.org/package/2006/digital-signature"
+ elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
+
+ <xsd:element name="SignatureTime" type="CT_SignatureTime"/>
+ <xsd:element name="RelationshipReference" type="CT_RelationshipReference"/>
+ <xsd:element name="RelationshipsGroupReference" type="CT_RelationshipsGroupReference"/>
+
+ <xsd:complexType name="CT_SignatureTime">
+ <xsd:sequence>
+ <xsd:element name="Format" type="ST_Format"/>
+ <xsd:element name="Value" type="ST_Value"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CT_RelationshipReference">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="SourceId" type="xsd:string" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="CT_RelationshipsGroupReference">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="SourceType" type="xsd:anyURI" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="ST_Format">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern
+ value="(YYYY)|(YYYY-MM)|(YYYY-MM-DD)|(YYYY-MM-DDThh:mmTZD)|(YYYY-MM-DDThh:mm:ssTZD)|(YYYY-MM-DDThh:mm:ss.sTZD)"
+ />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="ST_Value">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern
+ value="(([0-9][0-9][0-9][0-9]))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):(((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))\.[0-9])(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))"
+ />
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/schema/opc-relationships.xsd b/lib/schema/opc-relationships.xsd
new file mode 100644
index 00000000..762dcbe8
--- /dev/null
+++ b/lib/schema/opc-relationships.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/relationships"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://schemas.openxmlformats.org/package/2006/relationships"
+ elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all">
+
+ <xsd:element name="Relationships" type="CT_Relationships"/>
+ <xsd:element name="Relationship" type="CT_Relationship"/>
+
+ <xsd:complexType name="CT_Relationships">
+ <xsd:sequence>
+ <xsd:element ref="Relationship" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CT_Relationship">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="TargetMode" type="ST_TargetMode" use="optional"/>
+ <xsd:attribute name="Target" type="xsd:anyURI" use="required"/>
+ <xsd:attribute name="Type" type="xsd:anyURI" use="required"/>
+ <xsd:attribute name="Id" type="xsd:ID" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="ST_TargetMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="External"/>
+ <xsd:enumeration value="Internal"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/schema/pml.xsd b/lib/schema/pml.xsd
new file mode 100644
index 00000000..4460e0f0
--- /dev/null
+++ b/lib/schema/pml.xsd
@@ -0,0 +1,1676 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ 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">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ schemaLocation="shared-relationshipReference.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main"
+ schemaLocation="dml-main.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:simpleType name="ST_TransitionSideDirectionType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="l"/>
+ <xsd:enumeration value="u"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="d"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TransitionCornerDirectionType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="lu"/>
+ <xsd:enumeration value="ru"/>
+ <xsd:enumeration value="ld"/>
+ <xsd:enumeration value="rd"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TransitionInOutDirectionType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="out"/>
+ <xsd:enumeration value="in"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SideDirectionTransition">
+ <xsd:attribute name="dir" type="ST_TransitionSideDirectionType" use="optional" default="l"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CornerDirectionTransition">
+ <xsd:attribute name="dir" type="ST_TransitionCornerDirectionType" use="optional" default="lu"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TransitionEightDirectionType">
+ <xsd:union memberTypes="ST_TransitionSideDirectionType ST_TransitionCornerDirectionType"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_EightDirectionTransition">
+ <xsd:attribute name="dir" type="ST_TransitionEightDirectionType" use="optional" default="l"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OrientationTransition">
+ <xsd:attribute name="dir" type="ST_Direction" use="optional" default="horz"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_InOutTransition">
+ <xsd:attribute name="dir" type="ST_TransitionInOutDirectionType" use="optional" default="out"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OptionalBlackTransition">
+ <xsd:attribute name="thruBlk" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SplitTransition">
+ <xsd:attribute name="orient" type="ST_Direction" use="optional" default="horz"/>
+ <xsd:attribute name="dir" type="ST_TransitionInOutDirectionType" use="optional" default="out"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WheelTransition">
+ <xsd:attribute name="spokes" type="xsd:unsignedInt" use="optional" default="4"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TransitionStartSoundAction">
+ <xsd:sequence>
+ <xsd:element minOccurs="1" maxOccurs="1" name="snd" type="a:CT_EmbeddedWAVAudioFile"/>
+ </xsd:sequence>
+ <xsd:attribute name="loop" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TransitionSoundAction">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="stSnd" type="CT_TransitionStartSoundAction"/>
+ <xsd:element name="endSnd" type="CT_Empty"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TransitionSpeed">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="slow"/>
+ <xsd:enumeration value="med"/>
+ <xsd:enumeration value="fast"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SlideTransition">
+ <xsd:sequence>
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="blinds" type="CT_OrientationTransition"/>
+ <xsd:element name="checker" type="CT_OrientationTransition"/>
+ <xsd:element name="circle" type="CT_Empty"/>
+ <xsd:element name="dissolve" type="CT_Empty"/>
+ <xsd:element name="comb" type="CT_OrientationTransition"/>
+ <xsd:element name="cover" type="CT_EightDirectionTransition"/>
+ <xsd:element name="cut" type="CT_OptionalBlackTransition"/>
+ <xsd:element name="diamond" type="CT_Empty"/>
+ <xsd:element name="fade" type="CT_OptionalBlackTransition"/>
+ <xsd:element name="newsflash" type="CT_Empty"/>
+ <xsd:element name="plus" type="CT_Empty"/>
+ <xsd:element name="pull" type="CT_EightDirectionTransition"/>
+ <xsd:element name="push" type="CT_SideDirectionTransition"/>
+ <xsd:element name="random" type="CT_Empty"/>
+ <xsd:element name="randomBar" type="CT_OrientationTransition"/>
+ <xsd:element name="split" type="CT_SplitTransition"/>
+ <xsd:element name="strips" type="CT_CornerDirectionTransition"/>
+ <xsd:element name="wedge" type="CT_Empty"/>
+ <xsd:element name="wheel" type="CT_WheelTransition"/>
+ <xsd:element name="wipe" type="CT_SideDirectionTransition"/>
+ <xsd:element name="zoom" type="CT_InOutTransition"/>
+ </xsd:choice>
+ <xsd:element name="sndAc" minOccurs="0" maxOccurs="1" type="CT_TransitionSoundAction"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="spd" type="ST_TransitionSpeed" use="optional" default="fast"/>
+ <xsd:attribute name="advClick" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="advTm" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLTimeIndefinite">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="indefinite"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLTime">
+ <xsd:union memberTypes="xsd:unsignedInt ST_TLTimeIndefinite"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLTimeNodeID">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLIterateIntervalTime">
+ <xsd:attribute name="val" type="ST_TLTime" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLIterateIntervalPercentage">
+ <xsd:attribute name="val" type="a:ST_PositivePercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_IterateType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="el"/>
+ <xsd:enumeration value="wd"/>
+ <xsd:enumeration value="lt"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLIterateData">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="tmAbs" type="CT_TLIterateIntervalTime"/>
+ <xsd:element name="tmPct" type="CT_TLIterateIntervalPercentage"/>
+ </xsd:choice>
+ <xsd:attribute name="type" type="ST_IterateType" use="optional" default="el"/>
+ <xsd:attribute name="backwards" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLSubShapeId">
+ <xsd:attribute name="spid" type="a:ST_ShapeID" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLTextTargetElement">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="charRg" type="CT_IndexRange"/>
+ <xsd:element name="pRg" type="CT_IndexRange"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLChartSubelementType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="gridLegend"/>
+ <xsd:enumeration value="series"/>
+ <xsd:enumeration value="category"/>
+ <xsd:enumeration value="ptInSeries"/>
+ <xsd:enumeration value="ptInCategory"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLOleChartTargetElement">
+ <xsd:attribute name="type" type="ST_TLChartSubelementType" use="required"/>
+ <xsd:attribute name="lvl" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLShapeTargetElement">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="bg" type="CT_Empty"/>
+ <xsd:element name="subSp" type="CT_TLSubShapeId"/>
+ <xsd:element name="oleChartEl" type="CT_TLOleChartTargetElement"/>
+ <xsd:element name="txEl" type="CT_TLTextTargetElement"/>
+ <xsd:element name="graphicEl" type="a:CT_AnimationElementChoice"/>
+ </xsd:choice>
+ <xsd:attribute name="spid" type="a:ST_ShapeID" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLTimeTargetElement">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="sldTgt" type="CT_Empty"/>
+ <xsd:element name="sndTgt" type="a:CT_EmbeddedWAVAudioFile"/>
+ <xsd:element name="spTgt" type="CT_TLShapeTargetElement"/>
+ <xsd:element name="inkTgt" type="CT_TLSubShapeId"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLTriggerTimeNodeID">
+ <xsd:attribute name="val" type="ST_TLTimeNodeID" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLTriggerRuntimeNode">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="first"/>
+ <xsd:enumeration value="last"/>
+ <xsd:enumeration value="all"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLTriggerRuntimeNode">
+ <xsd:attribute name="val" type="ST_TLTriggerRuntimeNode" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLTriggerEvent">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="onBegin"/>
+ <xsd:enumeration value="onEnd"/>
+ <xsd:enumeration value="begin"/>
+ <xsd:enumeration value="end"/>
+ <xsd:enumeration value="onClick"/>
+ <xsd:enumeration value="onDblClick"/>
+ <xsd:enumeration value="onMouseOver"/>
+ <xsd:enumeration value="onMouseOut"/>
+ <xsd:enumeration value="onNext"/>
+ <xsd:enumeration value="onPrev"/>
+ <xsd:enumeration value="onStopAudio"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLTimeCondition">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="tgtEl" type="CT_TLTimeTargetElement"/>
+ <xsd:element name="tn" type="CT_TLTriggerTimeNodeID"/>
+ <xsd:element name="rtn" type="CT_TLTriggerRuntimeNode"/>
+ </xsd:choice>
+ <xsd:attribute name="evt" use="optional" type="ST_TLTriggerEvent"/>
+ <xsd:attribute name="delay" type="ST_TLTime" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLTimeConditionList">
+ <xsd:sequence>
+ <xsd:element name="cond" type="CT_TLTimeCondition" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TimeNodeList">
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="par" type="CT_TLTimeNodeParallel"/>
+ <xsd:element name="seq" type="CT_TLTimeNodeSequence"/>
+ <xsd:element name="excl" type="CT_TLTimeNodeExclusive"/>
+ <xsd:element name="anim" type="CT_TLAnimateBehavior"/>
+ <xsd:element name="animClr" type="CT_TLAnimateColorBehavior"/>
+ <xsd:element name="animEffect" type="CT_TLAnimateEffectBehavior"/>
+ <xsd:element name="animMotion" type="CT_TLAnimateMotionBehavior"/>
+ <xsd:element name="animRot" type="CT_TLAnimateRotationBehavior"/>
+ <xsd:element name="animScale" type="CT_TLAnimateScaleBehavior"/>
+ <xsd:element name="cmd" type="CT_TLCommandBehavior"/>
+ <xsd:element name="set" type="CT_TLSetBehavior"/>
+ <xsd:element name="audio" type="CT_TLMediaNodeAudio"/>
+ <xsd:element name="video" type="CT_TLMediaNodeVideo"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLTimeNodePresetClassType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="entr"/>
+ <xsd:enumeration value="exit"/>
+ <xsd:enumeration value="emph"/>
+ <xsd:enumeration value="path"/>
+ <xsd:enumeration value="verb"/>
+ <xsd:enumeration value="mediacall"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLTimeNodeRestartType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="always"/>
+ <xsd:enumeration value="whenNotActive"/>
+ <xsd:enumeration value="never"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLTimeNodeFillType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="remove"/>
+ <xsd:enumeration value="freeze"/>
+ <xsd:enumeration value="hold"/>
+ <xsd:enumeration value="transition"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLTimeNodeSyncType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="canSlip"/>
+ <xsd:enumeration value="locked"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLTimeNodeMasterRelation">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="sameClick"/>
+ <xsd:enumeration value="lastClick"/>
+ <xsd:enumeration value="nextClick"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLTimeNodeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="clickEffect"/>
+ <xsd:enumeration value="withEffect"/>
+ <xsd:enumeration value="afterEffect"/>
+ <xsd:enumeration value="mainSeq"/>
+ <xsd:enumeration value="interactiveSeq"/>
+ <xsd:enumeration value="clickPar"/>
+ <xsd:enumeration value="withGroup"/>
+ <xsd:enumeration value="afterGroup"/>
+ <xsd:enumeration value="tmRoot"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLCommonTimeNodeData">
+ <xsd:sequence>
+ <xsd:element name="stCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="endCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="endSync" type="CT_TLTimeCondition" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="iterate" type="CT_TLIterateData" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="childTnLst" type="CT_TimeNodeList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="subTnLst" type="CT_TimeNodeList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="ST_TLTimeNodeID" use="optional"/>
+ <xsd:attribute name="presetID" type="xsd:int" use="optional"/>
+ <xsd:attribute name="presetClass" type="ST_TLTimeNodePresetClassType" use="optional"/>
+ <xsd:attribute name="presetSubtype" type="xsd:int" use="optional"/>
+ <xsd:attribute name="dur" type="ST_TLTime" use="optional"/>
+ <xsd:attribute name="repeatCount" type="ST_TLTime" use="optional" default="1000"/>
+ <xsd:attribute name="repeatDur" type="ST_TLTime" use="optional"/>
+ <xsd:attribute name="spd" type="a:ST_Percentage" use="optional" default="100%"/>
+ <xsd:attribute name="accel" type="a:ST_PositiveFixedPercentage" use="optional" default="0%"/>
+ <xsd:attribute name="decel" type="a:ST_PositiveFixedPercentage" use="optional" default="0%"/>
+ <xsd:attribute name="autoRev" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="restart" type="ST_TLTimeNodeRestartType" use="optional"/>
+ <xsd:attribute name="fill" type="ST_TLTimeNodeFillType" use="optional"/>
+ <xsd:attribute name="syncBehavior" type="ST_TLTimeNodeSyncType" use="optional"/>
+ <xsd:attribute name="tmFilter" type="xsd:string" use="optional"/>
+ <xsd:attribute name="evtFilter" type="xsd:string" use="optional"/>
+ <xsd:attribute name="display" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="masterRel" type="ST_TLTimeNodeMasterRelation" use="optional"/>
+ <xsd:attribute name="bldLvl" type="xsd:int" use="optional"/>
+ <xsd:attribute name="grpId" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="afterEffect" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="nodeType" type="ST_TLTimeNodeType" use="optional"/>
+ <xsd:attribute name="nodePh" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLTimeNodeParallel">
+ <xsd:sequence>
+ <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLNextActionType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="seek"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLPreviousActionType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="skipTimed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLTimeNodeSequence">
+ <xsd:sequence>
+ <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="prevCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="nextCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="concurrent" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="prevAc" type="ST_TLPreviousActionType" use="optional"/>
+ <xsd:attribute name="nextAc" type="ST_TLNextActionType" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLTimeNodeExclusive">
+ <xsd:sequence>
+ <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLBehaviorAttributeNameList">
+ <xsd:sequence>
+ <xsd:element name="attrName" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLBehaviorAdditiveType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="base"/>
+ <xsd:enumeration value="sum"/>
+ <xsd:enumeration value="repl"/>
+ <xsd:enumeration value="mult"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLBehaviorAccumulateType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="always"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLBehaviorTransformType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="pt"/>
+ <xsd:enumeration value="img"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLBehaviorOverrideType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="normal"/>
+ <xsd:enumeration value="childStyle"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLCommonBehaviorData">
+ <xsd:sequence>
+ <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="tgtEl" type="CT_TLTimeTargetElement" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="attrNameLst" type="CT_TLBehaviorAttributeNameList" minOccurs="0"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="additive" type="ST_TLBehaviorAdditiveType" use="optional"/>
+ <xsd:attribute name="accumulate" type="ST_TLBehaviorAccumulateType" use="optional"/>
+ <xsd:attribute name="xfrmType" type="ST_TLBehaviorTransformType" use="optional"/>
+ <xsd:attribute name="from" type="xsd:string" use="optional"/>
+ <xsd:attribute name="to" type="xsd:string" use="optional"/>
+ <xsd:attribute name="by" type="xsd:string" use="optional"/>
+ <xsd:attribute name="rctx" type="xsd:string" use="optional"/>
+ <xsd:attribute name="override" type="ST_TLBehaviorOverrideType" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLAnimVariantBooleanVal">
+ <xsd:attribute name="val" type="xsd:boolean" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLAnimVariantIntegerVal">
+ <xsd:attribute name="val" type="xsd:int" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLAnimVariantFloatVal">
+ <xsd:attribute name="val" type="xsd:float" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLAnimVariantStringVal">
+ <xsd:attribute name="val" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLAnimVariant">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="boolVal" type="CT_TLAnimVariantBooleanVal"/>
+ <xsd:element name="intVal" type="CT_TLAnimVariantIntegerVal"/>
+ <xsd:element name="fltVal" type="CT_TLAnimVariantFloatVal"/>
+ <xsd:element name="strVal" type="CT_TLAnimVariantStringVal"/>
+ <xsd:element name="clrVal" type="a:CT_Color"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLTimeAnimateValueTime">
+ <xsd:union memberTypes="a:ST_PositiveFixedPercentage ST_TLTimeIndefinite"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLTimeAnimateValue">
+ <xsd:sequence>
+ <xsd:element name="val" type="CT_TLAnimVariant" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="tm" type="ST_TLTimeAnimateValueTime" use="optional" default="indefinite"/>
+ <xsd:attribute name="fmla" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLTimeAnimateValueList">
+ <xsd:sequence>
+ <xsd:element name="tav" type="CT_TLTimeAnimateValue" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLAnimateBehaviorCalcMode">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="discrete"/>
+ <xsd:enumeration value="lin"/>
+ <xsd:enumeration value="fmla"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLAnimateBehaviorValueType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="str"/>
+ <xsd:enumeration value="num"/>
+ <xsd:enumeration value="clr"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLAnimateBehavior">
+ <xsd:sequence>
+ <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="tavLst" type="CT_TLTimeAnimateValueList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="by" type="xsd:string" use="optional"/>
+ <xsd:attribute name="from" type="xsd:string" use="optional"/>
+ <xsd:attribute name="to" type="xsd:string" use="optional"/>
+ <xsd:attribute name="calcmode" type="ST_TLAnimateBehaviorCalcMode" use="optional"/>
+ <xsd:attribute name="valueType" type="ST_TLAnimateBehaviorValueType" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLByRgbColorTransform">
+ <xsd:attribute name="r" type="a:ST_FixedPercentage" use="required"/>
+ <xsd:attribute name="g" type="a:ST_FixedPercentage" use="required"/>
+ <xsd:attribute name="b" type="a:ST_FixedPercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLByHslColorTransform">
+ <xsd:attribute name="h" type="a:ST_Angle" use="required"/>
+ <xsd:attribute name="s" type="a:ST_FixedPercentage" use="required"/>
+ <xsd:attribute name="l" type="a:ST_FixedPercentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLByAnimateColorTransform">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="rgb" type="CT_TLByRgbColorTransform"/>
+ <xsd:element name="hsl" type="CT_TLByHslColorTransform"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLAnimateColorSpace">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="rgb"/>
+ <xsd:enumeration value="hsl"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLAnimateColorDirection">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="cw"/>
+ <xsd:enumeration value="ccw"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLAnimateColorBehavior">
+ <xsd:sequence>
+ <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="by" type="CT_TLByAnimateColorTransform" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="from" type="a:CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="to" type="a:CT_Color" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="clrSpc" type="ST_TLAnimateColorSpace" use="optional"/>
+ <xsd:attribute name="dir" type="ST_TLAnimateColorDirection" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLAnimateEffectTransition">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="in"/>
+ <xsd:enumeration value="out"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLAnimateEffectBehavior">
+ <xsd:sequence>
+ <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="progress" type="CT_TLAnimVariant" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="transition" type="ST_TLAnimateEffectTransition" use="optional"/>
+ <xsd:attribute name="filter" type="xsd:string" use="optional"/>
+ <xsd:attribute name="prLst" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLAnimateMotionBehaviorOrigin">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="parent"/>
+ <xsd:enumeration value="layout"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TLAnimateMotionPathEditMode">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="relative"/>
+ <xsd:enumeration value="fixed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLPoint">
+ <xsd:attribute name="x" type="a:ST_Percentage" use="required"/>
+ <xsd:attribute name="y" type="a:ST_Percentage" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLAnimateMotionBehavior">
+ <xsd:sequence>
+ <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="by" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="from" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="to" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rCtr" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="origin" type="ST_TLAnimateMotionBehaviorOrigin" use="optional"/>
+ <xsd:attribute name="path" type="xsd:string" use="optional"/>
+ <xsd:attribute name="pathEditMode" type="ST_TLAnimateMotionPathEditMode" use="optional"/>
+ <xsd:attribute name="rAng" type="a:ST_Angle" use="optional"/>
+ <xsd:attribute name="ptsTypes" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLAnimateRotationBehavior">
+ <xsd:sequence>
+ <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="by" type="a:ST_Angle" use="optional"/>
+ <xsd:attribute name="from" type="a:ST_Angle" use="optional"/>
+ <xsd:attribute name="to" type="a:ST_Angle" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLAnimateScaleBehavior">
+ <xsd:sequence>
+ <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="by" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="from" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="to" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="zoomContents" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLCommandType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="evt"/>
+ <xsd:enumeration value="call"/>
+ <xsd:enumeration value="verb"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLCommandBehavior">
+ <xsd:sequence>
+ <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute type="ST_TLCommandType" name="type" use="optional"/>
+ <xsd:attribute name="cmd" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLSetBehavior">
+ <xsd:sequence>
+ <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="to" type="CT_TLAnimVariant" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLCommonMediaNodeData">
+ <xsd:sequence>
+ <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="tgtEl" type="CT_TLTimeTargetElement" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="vol" type="a:ST_PositiveFixedPercentage" default="50%" use="optional"/>
+ <xsd:attribute name="mute" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="numSld" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="showWhenStopped" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLMediaNodeAudio">
+ <xsd:sequence>
+ <xsd:element name="cMediaNode" type="CT_TLCommonMediaNodeData" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="isNarration" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLMediaNodeVideo">
+ <xsd:sequence>
+ <xsd:element name="cMediaNode" type="CT_TLCommonMediaNodeData" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="fullScrn" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:attributeGroup name="AG_TLBuild">
+ <xsd:attribute name="spid" type="a:ST_ShapeID" use="required"/>
+ <xsd:attribute name="grpId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="uiExpand" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="CT_TLTemplate">
+ <xsd:sequence>
+ <xsd:element name="tnLst" type="CT_TimeNodeList" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="lvl" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLTemplateList">
+ <xsd:sequence>
+ <xsd:element name="tmpl" type="CT_TLTemplate" minOccurs="0" maxOccurs="9"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLParaBuildType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="allAtOnce"/>
+ <xsd:enumeration value="p"/>
+ <xsd:enumeration value="cust"/>
+ <xsd:enumeration value="whole"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLBuildParagraph">
+ <xsd:sequence>
+ <xsd:element name="tmplLst" type="CT_TLTemplateList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_TLBuild"/>
+ <xsd:attribute name="build" type="ST_TLParaBuildType" use="optional" default="whole"/>
+ <xsd:attribute name="bldLvl" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="animBg" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="autoUpdateAnimBg" type="xsd:boolean" default="true" use="optional"/>
+ <xsd:attribute name="rev" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="advAuto" type="ST_TLTime" use="optional" default="indefinite"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLDiagramBuildType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="whole"/>
+ <xsd:enumeration value="depthByNode"/>
+ <xsd:enumeration value="depthByBranch"/>
+ <xsd:enumeration value="breadthByNode"/>
+ <xsd:enumeration value="breadthByLvl"/>
+ <xsd:enumeration value="cw"/>
+ <xsd:enumeration value="cwIn"/>
+ <xsd:enumeration value="cwOut"/>
+ <xsd:enumeration value="ccw"/>
+ <xsd:enumeration value="ccwIn"/>
+ <xsd:enumeration value="ccwOut"/>
+ <xsd:enumeration value="inByRing"/>
+ <xsd:enumeration value="outByRing"/>
+ <xsd:enumeration value="up"/>
+ <xsd:enumeration value="down"/>
+ <xsd:enumeration value="allAtOnce"/>
+ <xsd:enumeration value="cust"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLBuildDiagram">
+ <xsd:attributeGroup ref="AG_TLBuild"/>
+ <xsd:attribute name="bld" type="ST_TLDiagramBuildType" use="optional" default="whole"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TLOleChartBuildType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="allAtOnce"/>
+ <xsd:enumeration value="series"/>
+ <xsd:enumeration value="category"/>
+ <xsd:enumeration value="seriesEl"/>
+ <xsd:enumeration value="categoryEl"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TLOleBuildChart">
+ <xsd:attributeGroup ref="AG_TLBuild"/>
+ <xsd:attribute name="bld" type="ST_TLOleChartBuildType" use="optional" default="allAtOnce"/>
+ <xsd:attribute name="animBg" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TLGraphicalObjectBuild">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="bldAsOne" type="CT_Empty"/>
+ <xsd:element name="bldSub" type="a:CT_AnimationGraphicalObjectBuildProperties"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_TLBuild"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BuildList">
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="bldP" type="CT_TLBuildParagraph"/>
+ <xsd:element name="bldDgm" type="CT_TLBuildDiagram"/>
+ <xsd:element name="bldOleChart" type="CT_TLOleBuildChart"/>
+ <xsd:element name="bldGraphic" type="CT_TLGraphicalObjectBuild"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SlideTiming">
+ <xsd:sequence>
+ <xsd:element name="tnLst" type="CT_TimeNodeList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bldLst" type="CT_BuildList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Empty"/>
+ <xsd:simpleType name="ST_Name">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Direction">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="horz"/>
+ <xsd:enumeration value="vert"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Index">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_IndexRange">
+ <xsd:attribute name="st" type="ST_Index" use="required"/>
+ <xsd:attribute name="end" type="ST_Index" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SlideRelationshipListEntry">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SlideRelationshipList">
+ <xsd:sequence>
+ <xsd:element name="sld" type="CT_SlideRelationshipListEntry" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomShowId">
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:group name="EG_SlideListChoice">
+ <xsd:choice>
+ <xsd:element name="sldAll" type="CT_Empty"/>
+ <xsd:element name="sldRg" type="CT_IndexRange"/>
+ <xsd:element name="custShow" type="CT_CustomShowId"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_CustomerData">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TagsData">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomerDataList">
+ <xsd:sequence minOccurs="0" maxOccurs="1">
+ <xsd:element name="custData" type="CT_CustomerData" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="tags" type="CT_TagsData" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Extension">
+ <xsd:sequence>
+ <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="xsd:token" use="required"/>
+ </xsd:complexType>
+ <xsd:group name="EG_ExtensionList">
+ <xsd:sequence>
+ <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_ExtensionList">
+ <xsd:sequence>
+ <xsd:group ref="EG_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExtensionListModify">
+ <xsd:sequence>
+ <xsd:group ref="EG_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="mod" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CommentAuthor">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="name" type="ST_Name" use="required"/>
+ <xsd:attribute name="initials" type="ST_Name" use="required"/>
+ <xsd:attribute name="lastIdx" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="clrIdx" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CommentAuthorList">
+ <xsd:sequence>
+ <xsd:element name="cmAuthor" type="CT_CommentAuthor" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="cmAuthorLst" type="CT_CommentAuthorList"/>
+ <xsd:complexType name="CT_Comment">
+ <xsd:sequence>
+ <xsd:element name="pos" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="text" type="xsd:string" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="authorId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="dt" type="xsd:dateTime" use="optional"/>
+ <xsd:attribute name="idx" type="ST_Index" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CommentList">
+ <xsd:sequence>
+ <xsd:element name="cm" type="CT_Comment" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="cmLst" type="CT_CommentList"/>
+ <xsd:attributeGroup name="AG_Ole">
+ <xsd:attribute name="spid" type="a:ST_ShapeID" use="required"/>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="showAsIcon" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ <xsd:attribute name="imgW" type="a:ST_PositiveCoordinate32" use="optional"/>
+ <xsd:attribute name="imgH" type="a:ST_PositiveCoordinate32" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:simpleType name="ST_OleObjectFollowColorScheme">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="full"/>
+ <xsd:enumeration value="textAndBackground"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_OleObjectEmbed">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="followColorScheme" type="ST_OleObjectFollowColorScheme" use="optional"
+ default="none"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OleObjectLink">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="updateAutomatic" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OleObject">
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="embed" type="CT_OleObjectEmbed"/>
+ <xsd:element name="link" type="CT_OleObjectLink"/>
+ </xsd:choice>
+ <xsd:element name="pic" type="CT_Picture" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_Ole"/>
+ <xsd:attribute name="progId" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:element name="oleObj" type="CT_OleObject"/>
+ <xsd:complexType name="CT_Control">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pic" type="CT_Picture" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_Ole"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ControlList">
+ <xsd:sequence>
+ <xsd:element name="control" type="CT_Control" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SlideId">
+ <xsd:restriction base="xsd:unsignedInt">
+ <xsd:minInclusive value="256"/>
+ <xsd:maxExclusive value="2147483648"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SlideIdListEntry">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="ST_SlideId" use="required"/>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SlideIdList">
+ <xsd:sequence>
+ <xsd:element name="sldId" type="CT_SlideIdListEntry" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SlideMasterId">
+ <xsd:restriction base="xsd:unsignedInt">
+ <xsd:minInclusive value="2147483648"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SlideMasterIdListEntry">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="ST_SlideMasterId" use="optional"/>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SlideMasterIdList">
+ <xsd:sequence>
+ <xsd:element name="sldMasterId" type="CT_SlideMasterIdListEntry" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NotesMasterIdListEntry">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NotesMasterIdList">
+ <xsd:sequence>
+ <xsd:element name="notesMasterId" type="CT_NotesMasterIdListEntry" minOccurs="0" maxOccurs="1"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_HandoutMasterIdListEntry">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_HandoutMasterIdList">
+ <xsd:sequence>
+ <xsd:element name="handoutMasterId" type="CT_HandoutMasterIdListEntry" minOccurs="0"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EmbeddedFontDataId">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EmbeddedFontListEntry">
+ <xsd:sequence>
+ <xsd:element name="font" type="a:CT_TextFont" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="regular" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bold" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="italic" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="boldItalic" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EmbeddedFontList">
+ <xsd:sequence>
+ <xsd:element name="embeddedFont" type="CT_EmbeddedFontListEntry" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SmartTags">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomShow">
+ <xsd:sequence>
+ <xsd:element name="sldLst" type="CT_SlideRelationshipList" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="ST_Name" use="required"/>
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomShowList">
+ <xsd:sequence>
+ <xsd:element name="custShow" type="CT_CustomShow" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PhotoAlbumLayout">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="fitToSlide"/>
+ <xsd:enumeration value="1pic"/>
+ <xsd:enumeration value="2pic"/>
+ <xsd:enumeration value="4pic"/>
+ <xsd:enumeration value="1picTitle"/>
+ <xsd:enumeration value="2picTitle"/>
+ <xsd:enumeration value="4picTitle"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PhotoAlbumFrameShape">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="frameStyle1"/>
+ <xsd:enumeration value="frameStyle2"/>
+ <xsd:enumeration value="frameStyle3"/>
+ <xsd:enumeration value="frameStyle4"/>
+ <xsd:enumeration value="frameStyle5"/>
+ <xsd:enumeration value="frameStyle6"/>
+ <xsd:enumeration value="frameStyle7"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PhotoAlbum">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="bw" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showCaptions" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="layout" type="ST_PhotoAlbumLayout" use="optional" default="fitToSlide"/>
+ <xsd:attribute name="frame" type="ST_PhotoAlbumFrameShape" use="optional" default="frameStyle1"
+ />
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SlideSizeCoordinate">
+ <xsd:restriction base="a:ST_PositiveCoordinate32">
+ <xsd:minInclusive value="914400"/>
+ <xsd:maxInclusive value="51206400"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SlideSizeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="screen4x3"/>
+ <xsd:enumeration value="letter"/>
+ <xsd:enumeration value="A4"/>
+ <xsd:enumeration value="35mm"/>
+ <xsd:enumeration value="overhead"/>
+ <xsd:enumeration value="banner"/>
+ <xsd:enumeration value="custom"/>
+ <xsd:enumeration value="ledger"/>
+ <xsd:enumeration value="A3"/>
+ <xsd:enumeration value="B4ISO"/>
+ <xsd:enumeration value="B5ISO"/>
+ <xsd:enumeration value="B4JIS"/>
+ <xsd:enumeration value="B5JIS"/>
+ <xsd:enumeration value="hagakiCard"/>
+ <xsd:enumeration value="screen16x9"/>
+ <xsd:enumeration value="screen16x10"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SlideSize">
+ <xsd:attribute name="cx" type="ST_SlideSizeCoordinate" use="required"/>
+ <xsd:attribute name="cy" type="ST_SlideSizeCoordinate" use="required"/>
+ <xsd:attribute name="type" type="ST_SlideSizeType" use="optional" default="custom"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Kinsoku">
+ <xsd:attribute name="lang" type="xsd:string" use="optional"/>
+ <xsd:attribute name="invalStChars" type="xsd:string" use="required"/>
+ <xsd:attribute name="invalEndChars" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BookmarkIdSeed">
+ <xsd:restriction base="xsd:unsignedInt">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxExclusive value="2147483648"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ModifyVerifier">
+ <xsd:attribute name="algorithmName" type="xsd:string" use="optional"/>
+ <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="spinValue" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="cryptProviderType" type="s:ST_CryptProv" use="optional"/>
+ <xsd:attribute name="cryptAlgorithmClass" type="s:ST_AlgClass" use="optional"/>
+ <xsd:attribute name="cryptAlgorithmType" type="s:ST_AlgType" use="optional"/>
+ <xsd:attribute name="cryptAlgorithmSid" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="saltData" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="hashData" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="cryptProvider" type="xsd:string" use="optional"/>
+ <xsd:attribute name="algIdExt" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="algIdExtSource" type="xsd:string" use="optional"/>
+ <xsd:attribute name="cryptProviderTypeExt" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="cryptProviderTypeExtSource" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Presentation">
+ <xsd:sequence>
+ <xsd:element name="sldMasterIdLst" type="CT_SlideMasterIdList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="notesMasterIdLst" type="CT_NotesMasterIdList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="handoutMasterIdLst" type="CT_HandoutMasterIdList" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="sldIdLst" type="CT_SlideIdList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sldSz" type="CT_SlideSize" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="notesSz" type="a:CT_PositiveSize2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="smartTags" type="CT_SmartTags" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="embeddedFontLst" type="CT_EmbeddedFontList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="custShowLst" type="CT_CustomShowList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="photoAlbum" type="CT_PhotoAlbum" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="custDataLst" type="CT_CustomerDataList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="kinsoku" type="CT_Kinsoku" minOccurs="0"/>
+ <xsd:element name="defaultTextStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="modifyVerifier" type="CT_ModifyVerifier" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="serverZoom" type="a:ST_Percentage" use="optional" default="50%"/>
+ <xsd:attribute name="firstSlideNum" type="xsd:int" use="optional" default="1"/>
+ <xsd:attribute name="showSpecialPlsOnTitleSld" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="rtl" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="removePersonalInfoOnSave" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="compatMode" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="strictFirstAndLastChars" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="embedTrueTypeFonts" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="saveSubsetFonts" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="autoCompressPictures" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="bookmarkIdSeed" type="ST_BookmarkIdSeed" use="optional" default="1"/>
+ <xsd:attribute name="conformance" type="s:ST_ConformanceClass"/>
+ </xsd:complexType>
+ <xsd:element name="presentation" type="CT_Presentation"/>
+ <xsd:complexType name="CT_HtmlPublishProperties">
+ <xsd:sequence>
+ <xsd:group ref="EG_SlideListChoice" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="showSpeakerNotes" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="target" type="xsd:string" use="optional"/>
+ <xsd:attribute name="title" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_WebColorType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="browser"/>
+ <xsd:enumeration value="presentationText"/>
+ <xsd:enumeration value="presentationAccent"/>
+ <xsd:enumeration value="whiteTextOnBlack"/>
+ <xsd:enumeration value="blackTextOnWhite"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_WebScreenSize">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="544x376"/>
+ <xsd:enumeration value="640x480"/>
+ <xsd:enumeration value="720x512"/>
+ <xsd:enumeration value="800x600"/>
+ <xsd:enumeration value="1024x768"/>
+ <xsd:enumeration value="1152x882"/>
+ <xsd:enumeration value="1152x900"/>
+ <xsd:enumeration value="1280x1024"/>
+ <xsd:enumeration value="1600x1200"/>
+ <xsd:enumeration value="1800x1400"/>
+ <xsd:enumeration value="1920x1200"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_WebEncoding">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_WebProperties">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="showAnimation" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="resizeGraphics" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="allowPng" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="relyOnVml" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="organizeInFolders" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="useLongFilenames" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="imgSz" type="ST_WebScreenSize" use="optional" default="800x600"/>
+ <xsd:attribute name="encoding" type="ST_WebEncoding" use="optional" default=""/>
+ <xsd:attribute name="clr" type="ST_WebColorType" use="optional" default="whiteTextOnBlack"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PrintWhat">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="slides"/>
+ <xsd:enumeration value="handouts1"/>
+ <xsd:enumeration value="handouts2"/>
+ <xsd:enumeration value="handouts3"/>
+ <xsd:enumeration value="handouts4"/>
+ <xsd:enumeration value="handouts6"/>
+ <xsd:enumeration value="handouts9"/>
+ <xsd:enumeration value="notes"/>
+ <xsd:enumeration value="outline"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PrintColorMode">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="bw"/>
+ <xsd:enumeration value="gray"/>
+ <xsd:enumeration value="clr"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PrintProperties">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="prnWhat" type="ST_PrintWhat" use="optional" default="slides"/>
+ <xsd:attribute name="clrMode" type="ST_PrintColorMode" use="optional" default="clr"/>
+ <xsd:attribute name="hiddenSlides" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="scaleToFitPaper" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="frameSlides" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ShowInfoBrowse">
+ <xsd:attribute name="showScrollbar" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ShowInfoKiosk">
+ <xsd:attribute name="restart" type="xsd:unsignedInt" use="optional" default="300000"/>
+ </xsd:complexType>
+ <xsd:group name="EG_ShowType">
+ <xsd:choice>
+ <xsd:element name="present" type="CT_Empty"/>
+ <xsd:element name="browse" type="CT_ShowInfoBrowse"/>
+ <xsd:element name="kiosk" type="CT_ShowInfoKiosk"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_ShowProperties">
+ <xsd:sequence minOccurs="0" maxOccurs="1">
+ <xsd:group ref="EG_ShowType" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_SlideListChoice" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="penClr" type="a:CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="loop" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showNarration" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showAnimation" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="useTimings" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PresentationProperties">
+ <xsd:sequence>
+ <xsd:element name="htmlPubPr" type="CT_HtmlPublishProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="webPr" type="CT_WebProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="prnPr" type="CT_PrintProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="showPr" type="CT_ShowProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="clrMru" type="a:CT_ColorMRU" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="presentationPr" type="CT_PresentationProperties"/>
+ <xsd:complexType name="CT_HeaderFooter">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="sldNum" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="hdr" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="ftr" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="dt" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PlaceholderType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="title"/>
+ <xsd:enumeration value="body"/>
+ <xsd:enumeration value="ctrTitle"/>
+ <xsd:enumeration value="subTitle"/>
+ <xsd:enumeration value="dt"/>
+ <xsd:enumeration value="sldNum"/>
+ <xsd:enumeration value="ftr"/>
+ <xsd:enumeration value="hdr"/>
+ <xsd:enumeration value="obj"/>
+ <xsd:enumeration value="chart"/>
+ <xsd:enumeration value="tbl"/>
+ <xsd:enumeration value="clipArt"/>
+ <xsd:enumeration value="dgm"/>
+ <xsd:enumeration value="media"/>
+ <xsd:enumeration value="sldImg"/>
+ <xsd:enumeration value="pic"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PlaceholderSize">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="full"/>
+ <xsd:enumeration value="half"/>
+ <xsd:enumeration value="quarter"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Placeholder">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_PlaceholderType" use="optional" default="obj"/>
+ <xsd:attribute name="orient" type="ST_Direction" use="optional" default="horz"/>
+ <xsd:attribute name="sz" type="ST_PlaceholderSize" use="optional" default="full"/>
+ <xsd:attribute name="idx" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="hasCustomPrompt" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ApplicationNonVisualDrawingProps">
+ <xsd:sequence>
+ <xsd:element name="ph" type="CT_Placeholder" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="a:EG_Media" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="custDataLst" type="CT_CustomerDataList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="isPhoto" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="userDrawn" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ShapeNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Shape">
+ <xsd:sequence>
+ <xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="useBgFill" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ConnectorNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1"
+ maxOccurs="1"/>
+ <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Connector">
+ <xsd:sequence>
+ <xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PictureNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1"
+ maxOccurs="1"/>
+ <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Picture">
+ <xsd:sequence>
+ <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GraphicalObjectFrameNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties"
+ minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GraphicalObjectFrame">
+ <xsd:sequence>
+ <xsd:element name="nvGraphicFramePr" type="CT_GraphicalObjectFrameNonVisual" minOccurs="1"
+ maxOccurs="1"/>
+ <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupShapeNonVisual">
+ <xsd:sequence>
+ <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1"
+ maxOccurs="1"/>
+ <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1"
+ maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupShape">
+ <xsd:sequence>
+ <xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="sp" type="CT_Shape"/>
+ <xsd:element name="grpSp" type="CT_GroupShape"/>
+ <xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/>
+ <xsd:element name="cxnSp" type="CT_Connector"/>
+ <xsd:element name="pic" type="CT_Picture"/>
+ <xsd:element name="contentPart" type="CT_Rel"/>
+ </xsd:choice>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Rel">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:group name="EG_TopLevelSlide">
+ <xsd:sequence>
+ <xsd:element name="clrMap" type="a:CT_ColorMapping" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="EG_ChildSlide">
+ <xsd:sequence>
+ <xsd:element name="clrMapOvr" type="a:CT_ColorMappingOverride" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:attributeGroup name="AG_ChildSlide">
+ <xsd:attribute name="showMasterSp" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showMasterPhAnim" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="CT_BackgroundProperties">
+ <xsd:sequence>
+ <xsd:group ref="a:EG_FillProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="a:EG_EffectProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="shadeToTitle" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:group name="EG_Background">
+ <xsd:choice>
+ <xsd:element name="bgPr" type="CT_BackgroundProperties"/>
+ <xsd:element name="bgRef" type="a:CT_StyleMatrixReference"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_Background">
+ <xsd:sequence>
+ <xsd:group ref="EG_Background"/>
+ </xsd:sequence>
+ <xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional" default="white"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CommonSlideData">
+ <xsd:sequence>
+ <xsd:element name="bg" type="CT_Background" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="spTree" type="CT_GroupShape" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="custDataLst" type="CT_CustomerDataList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="controls" type="CT_ControlList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="optional" default=""/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Slide">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="EG_ChildSlide" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="transition" type="CT_SlideTransition" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="timing" type="CT_SlideTiming" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_ChildSlide"/>
+ <xsd:attribute name="show" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:element name="sld" type="CT_Slide"/>
+ <xsd:simpleType name="ST_SlideLayoutType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="title"/>
+ <xsd:enumeration value="tx"/>
+ <xsd:enumeration value="twoColTx"/>
+ <xsd:enumeration value="tbl"/>
+ <xsd:enumeration value="txAndChart"/>
+ <xsd:enumeration value="chartAndTx"/>
+ <xsd:enumeration value="dgm"/>
+ <xsd:enumeration value="chart"/>
+ <xsd:enumeration value="txAndClipArt"/>
+ <xsd:enumeration value="clipArtAndTx"/>
+ <xsd:enumeration value="titleOnly"/>
+ <xsd:enumeration value="blank"/>
+ <xsd:enumeration value="txAndObj"/>
+ <xsd:enumeration value="objAndTx"/>
+ <xsd:enumeration value="objOnly"/>
+ <xsd:enumeration value="obj"/>
+ <xsd:enumeration value="txAndMedia"/>
+ <xsd:enumeration value="mediaAndTx"/>
+ <xsd:enumeration value="objOverTx"/>
+ <xsd:enumeration value="txOverObj"/>
+ <xsd:enumeration value="txAndTwoObj"/>
+ <xsd:enumeration value="twoObjAndTx"/>
+ <xsd:enumeration value="twoObjOverTx"/>
+ <xsd:enumeration value="fourObj"/>
+ <xsd:enumeration value="vertTx"/>
+ <xsd:enumeration value="clipArtAndVertTx"/>
+ <xsd:enumeration value="vertTitleAndTx"/>
+ <xsd:enumeration value="vertTitleAndTxOverChart"/>
+ <xsd:enumeration value="twoObj"/>
+ <xsd:enumeration value="objAndTwoObj"/>
+ <xsd:enumeration value="twoObjAndObj"/>
+ <xsd:enumeration value="cust"/>
+ <xsd:enumeration value="secHead"/>
+ <xsd:enumeration value="twoTxTwoObj"/>
+ <xsd:enumeration value="objTx"/>
+ <xsd:enumeration value="picTx"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SlideLayout">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="EG_ChildSlide" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="transition" type="CT_SlideTransition" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="timing" type="CT_SlideTiming" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_ChildSlide"/>
+ <xsd:attribute name="matchingName" type="xsd:string" use="optional" default=""/>
+ <xsd:attribute name="type" type="ST_SlideLayoutType" use="optional" default="cust"/>
+ <xsd:attribute name="preserve" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="userDrawn" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:element name="sldLayout" type="CT_SlideLayout"/>
+ <xsd:complexType name="CT_SlideMasterTextStyles">
+ <xsd:sequence>
+ <xsd:element name="titleStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bodyStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="otherStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SlideLayoutId">
+ <xsd:restriction base="xsd:unsignedInt">
+ <xsd:minInclusive value="2147483648"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SlideLayoutIdListEntry">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="ST_SlideLayoutId" use="optional"/>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SlideLayoutIdList">
+ <xsd:sequence>
+ <xsd:element name="sldLayoutId" type="CT_SlideLayoutIdListEntry" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SlideMaster">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="EG_TopLevelSlide" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="sldLayoutIdLst" type="CT_SlideLayoutIdList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="transition" type="CT_SlideTransition" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="timing" type="CT_SlideTiming" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="txStyles" type="CT_SlideMasterTextStyles" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="preserve" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:element name="sldMaster" type="CT_SlideMaster"/>
+ <xsd:complexType name="CT_HandoutMaster">
+ <xsd:sequence>
+ <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="EG_TopLevelSlide" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="handoutMaster" type="CT_HandoutMaster"/>
+ <xsd:complexType name="CT_NotesMaster">
+ <xsd:sequence>
+ <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="EG_TopLevelSlide" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="notesStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="notesMaster" type="CT_NotesMaster"/>
+ <xsd:complexType name="CT_NotesSlide">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/>
+ <xsd:group ref="EG_ChildSlide" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_ChildSlide"/>
+ </xsd:complexType>
+ <xsd:element name="notes" type="CT_NotesSlide"/>
+ <xsd:complexType name="CT_SlideSyncProperties">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="serverSldId" type="xsd:string" use="required"/>
+ <xsd:attribute name="serverSldModifiedTime" type="xsd:dateTime" use="required"/>
+ <xsd:attribute name="clientInsertedTime" type="xsd:dateTime" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="sldSyncPr" type="CT_SlideSyncProperties"/>
+ <xsd:complexType name="CT_StringTag">
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="val" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TagList">
+ <xsd:sequence>
+ <xsd:element name="tag" type="CT_StringTag" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="tagLst" type="CT_TagList"/>
+ <xsd:simpleType name="ST_SplitterBarState">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="minimized"/>
+ <xsd:enumeration value="restored"/>
+ <xsd:enumeration value="maximized"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ViewType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="sldView"/>
+ <xsd:enumeration value="sldMasterView"/>
+ <xsd:enumeration value="notesView"/>
+ <xsd:enumeration value="handoutView"/>
+ <xsd:enumeration value="notesMasterView"/>
+ <xsd:enumeration value="outlineView"/>
+ <xsd:enumeration value="sldSorterView"/>
+ <xsd:enumeration value="sldThumbnailView"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_NormalViewPortion">
+ <xsd:attribute name="sz" type="a:ST_PositiveFixedPercentage" use="required"/>
+ <xsd:attribute name="autoAdjust" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NormalViewProperties">
+ <xsd:sequence>
+ <xsd:element name="restoredLeft" type="CT_NormalViewPortion" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="restoredTop" type="CT_NormalViewPortion" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="showOutlineIcons" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="snapVertSplitter" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="vertBarState" type="ST_SplitterBarState" use="optional" default="restored"/>
+ <xsd:attribute name="horzBarState" type="ST_SplitterBarState" use="optional" default="restored"/>
+ <xsd:attribute name="preferSingleView" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CommonViewProperties">
+ <xsd:sequence>
+ <xsd:element name="scale" type="a:CT_Scale2D" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="origin" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="varScale" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NotesTextViewProperties">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OutlineViewSlideEntry">
+ <xsd:attribute ref="r:id" use="required"/>
+ <xsd:attribute name="collapse" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OutlineViewSlideList">
+ <xsd:sequence>
+ <xsd:element name="sld" type="CT_OutlineViewSlideEntry" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OutlineViewProperties">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="sldLst" type="CT_OutlineViewSlideList" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SlideSorterViewProperties">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="showFormatting" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Guide">
+ <xsd:attribute name="orient" type="ST_Direction" use="optional" default="vert"/>
+ <xsd:attribute name="pos" type="a:ST_Coordinate32" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GuideList">
+ <xsd:sequence minOccurs="0" maxOccurs="1">
+ <xsd:element name="guide" type="CT_Guide" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CommonSlideViewProperties">
+ <xsd:sequence>
+ <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="guideLst" type="CT_GuideList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="snapToGrid" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="snapToObjects" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showGuides" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SlideViewProperties">
+ <xsd:sequence>
+ <xsd:element name="cSldViewPr" type="CT_CommonSlideViewProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NotesViewProperties">
+ <xsd:sequence>
+ <xsd:element name="cSldViewPr" type="CT_CommonSlideViewProperties" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ViewProperties">
+ <xsd:sequence minOccurs="0" maxOccurs="1">
+ <xsd:element name="normalViewPr" type="CT_NormalViewProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="slideViewPr" type="CT_SlideViewProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="outlineViewPr" type="CT_OutlineViewProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="notesTextViewPr" type="CT_NotesTextViewProperties" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="sorterViewPr" type="CT_SlideSorterViewProperties" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="notesViewPr" type="CT_NotesViewProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="gridSpacing" type="a:CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="lastView" type="ST_ViewType" use="optional" default="sldView"/>
+ <xsd:attribute name="showComments" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:element name="viewPr" type="CT_ViewProperties"/>
+</xsd:schema>
diff --git a/lib/schema/shared-additionalCharacteristics.xsd b/lib/schema/shared-additionalCharacteristics.xsd
new file mode 100644
index 00000000..c20f3bf1
--- /dev/null
+++ b/lib/schema/shared-additionalCharacteristics.xsd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.openxmlformats.org/officeDocument/2006/characteristics"
+ targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/characteristics"
+ elementFormDefault="qualified">
+ <xsd:complexType name="CT_AdditionalCharacteristics">
+ <xsd:sequence>
+ <xsd:element name="characteristic" type="CT_Characteristic" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Characteristic">
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="relation" type="ST_Relation" use="required"/>
+ <xsd:attribute name="val" type="xsd:string" use="required"/>
+ <xsd:attribute name="vocabulary" type="xsd:anyURI" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Relation">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="ge"/>
+ <xsd:enumeration value="le"/>
+ <xsd:enumeration value="gt"/>
+ <xsd:enumeration value="lt"/>
+ <xsd:enumeration value="eq"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="additionalCharacteristics" type="CT_AdditionalCharacteristics"/>
+</xsd:schema>
diff --git a/lib/schema/shared-bibliography.xsd b/lib/schema/shared-bibliography.xsd
new file mode 100644
index 00000000..ac602522
--- /dev/null
+++ b/lib/schema/shared-bibliography.xsd
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"
+ xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"
+ elementFormDefault="qualified">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:simpleType name="ST_SourceType">
+ <xsd:restriction base="s:ST_String">
+ <xsd:enumeration value="ArticleInAPeriodical"/>
+ <xsd:enumeration value="Book"/>
+ <xsd:enumeration value="BookSection"/>
+ <xsd:enumeration value="JournalArticle"/>
+ <xsd:enumeration value="ConferenceProceedings"/>
+ <xsd:enumeration value="Report"/>
+ <xsd:enumeration value="SoundRecording"/>
+ <xsd:enumeration value="Performance"/>
+ <xsd:enumeration value="Art"/>
+ <xsd:enumeration value="DocumentFromInternetSite"/>
+ <xsd:enumeration value="InternetSite"/>
+ <xsd:enumeration value="Film"/>
+ <xsd:enumeration value="Interview"/>
+ <xsd:enumeration value="Patent"/>
+ <xsd:enumeration value="ElectronicSource"/>
+ <xsd:enumeration value="Case"/>
+ <xsd:enumeration value="Misc"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_NameListType">
+ <xsd:sequence>
+ <xsd:element name="Person" type="CT_PersonType" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PersonType">
+ <xsd:sequence>
+ <xsd:element name="Last" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="First" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="Middle" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NameType">
+ <xsd:sequence>
+ <xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NameOrCorporateType">
+ <xsd:sequence>
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="Corporate" minOccurs="1" maxOccurs="1" type="s:ST_String"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AuthorType">
+ <xsd:sequence>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="Artist" type="CT_NameType"/>
+ <xsd:element name="Author" type="CT_NameOrCorporateType"/>
+ <xsd:element name="BookAuthor" type="CT_NameType"/>
+ <xsd:element name="Compiler" type="CT_NameType"/>
+ <xsd:element name="Composer" type="CT_NameType"/>
+ <xsd:element name="Conductor" type="CT_NameType"/>
+ <xsd:element name="Counsel" type="CT_NameType"/>
+ <xsd:element name="Director" type="CT_NameType"/>
+ <xsd:element name="Editor" type="CT_NameType"/>
+ <xsd:element name="Interviewee" type="CT_NameType"/>
+ <xsd:element name="Interviewer" type="CT_NameType"/>
+ <xsd:element name="Inventor" type="CT_NameType"/>
+ <xsd:element name="Performer" type="CT_NameOrCorporateType"/>
+ <xsd:element name="ProducerName" type="CT_NameType"/>
+ <xsd:element name="Translator" type="CT_NameType"/>
+ <xsd:element name="Writer" type="CT_NameType"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SourceType">
+ <xsd:sequence>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="AbbreviatedCaseNumber" type="s:ST_String"/>
+ <xsd:element name="AlbumTitle" type="s:ST_String"/>
+ <xsd:element name="Author" type="CT_AuthorType"/>
+ <xsd:element name="BookTitle" type="s:ST_String"/>
+ <xsd:element name="Broadcaster" type="s:ST_String"/>
+ <xsd:element name="BroadcastTitle" type="s:ST_String"/>
+ <xsd:element name="CaseNumber" type="s:ST_String"/>
+ <xsd:element name="ChapterNumber" type="s:ST_String"/>
+ <xsd:element name="City" type="s:ST_String"/>
+ <xsd:element name="Comments" type="s:ST_String"/>
+ <xsd:element name="ConferenceName" type="s:ST_String"/>
+ <xsd:element name="CountryRegion" type="s:ST_String"/>
+ <xsd:element name="Court" type="s:ST_String"/>
+ <xsd:element name="Day" type="s:ST_String"/>
+ <xsd:element name="DayAccessed" type="s:ST_String"/>
+ <xsd:element name="Department" type="s:ST_String"/>
+ <xsd:element name="Distributor" type="s:ST_String"/>
+ <xsd:element name="Edition" type="s:ST_String"/>
+ <xsd:element name="Guid" type="s:ST_String"/>
+ <xsd:element name="Institution" type="s:ST_String"/>
+ <xsd:element name="InternetSiteTitle" type="s:ST_String"/>
+ <xsd:element name="Issue" type="s:ST_String"/>
+ <xsd:element name="JournalName" type="s:ST_String"/>
+ <xsd:element name="LCID" type="s:ST_Lang"/>
+ <xsd:element name="Medium" type="s:ST_String"/>
+ <xsd:element name="Month" type="s:ST_String"/>
+ <xsd:element name="MonthAccessed" type="s:ST_String"/>
+ <xsd:element name="NumberVolumes" type="s:ST_String"/>
+ <xsd:element name="Pages" type="s:ST_String"/>
+ <xsd:element name="PatentNumber" type="s:ST_String"/>
+ <xsd:element name="PeriodicalTitle" type="s:ST_String"/>
+ <xsd:element name="ProductionCompany" type="s:ST_String"/>
+ <xsd:element name="PublicationTitle" type="s:ST_String"/>
+ <xsd:element name="Publisher" type="s:ST_String"/>
+ <xsd:element name="RecordingNumber" type="s:ST_String"/>
+ <xsd:element name="RefOrder" type="s:ST_String"/>
+ <xsd:element name="Reporter" type="s:ST_String"/>
+ <xsd:element name="SourceType" type="ST_SourceType"/>
+ <xsd:element name="ShortTitle" type="s:ST_String"/>
+ <xsd:element name="StandardNumber" type="s:ST_String"/>
+ <xsd:element name="StateProvince" type="s:ST_String"/>
+ <xsd:element name="Station" type="s:ST_String"/>
+ <xsd:element name="Tag" type="s:ST_String"/>
+ <xsd:element name="Theater" type="s:ST_String"/>
+ <xsd:element name="ThesisType" type="s:ST_String"/>
+ <xsd:element name="Title" type="s:ST_String"/>
+ <xsd:element name="Type" type="s:ST_String"/>
+ <xsd:element name="URL" type="s:ST_String"/>
+ <xsd:element name="Version" type="s:ST_String"/>
+ <xsd:element name="Volume" type="s:ST_String"/>
+ <xsd:element name="Year" type="s:ST_String"/>
+ <xsd:element name="YearAccessed" type="s:ST_String"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="Sources" type="CT_Sources"/>
+ <xsd:complexType name="CT_Sources">
+ <xsd:sequence>
+ <xsd:element name="Source" type="CT_SourceType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="SelectedStyle" type="s:ST_String"/>
+ <xsd:attribute name="StyleName" type="s:ST_String"/>
+ <xsd:attribute name="URI" type="s:ST_String"/>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/lib/schema/shared-commonSimpleTypes.xsd b/lib/schema/shared-commonSimpleTypes.xsd
new file mode 100644
index 00000000..6ddad5a4
--- /dev/null
+++ b/lib/schema/shared-commonSimpleTypes.xsd
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ elementFormDefault="qualified">
+ <xsd:simpleType name="ST_Lang">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HexColorRGB">
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="3" fixed="true"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Panose">
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="10"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CalendarType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="gregorian"/>
+ <xsd:enumeration value="gregorianUs"/>
+ <xsd:enumeration value="gregorianMeFrench"/>
+ <xsd:enumeration value="gregorianArabic"/>
+ <xsd:enumeration value="hijri"/>
+ <xsd:enumeration value="hebrew"/>
+ <xsd:enumeration value="taiwan"/>
+ <xsd:enumeration value="japan"/>
+ <xsd:enumeration value="thai"/>
+ <xsd:enumeration value="korea"/>
+ <xsd:enumeration value="saka"/>
+ <xsd:enumeration value="gregorianXlitEnglish"/>
+ <xsd:enumeration value="gregorianXlitFrench"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AlgClass">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="hash"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CryptProv">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="rsaAES"/>
+ <xsd:enumeration value="rsaFull"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AlgType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="typeAny"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ColorType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Guid">
+ <xsd:restriction base="xsd:token">
+ <xsd:pattern value="\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OnOff">
+ <xsd:union memberTypes="xsd:boolean ST_OnOff1"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OnOff1">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="on"/>
+ <xsd:enumeration value="off"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_String">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TrueFalse">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="f"/>
+ <xsd:enumeration value="true"/>
+ <xsd:enumeration value="false"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TrueFalseBlank">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="f"/>
+ <xsd:enumeration value="true"/>
+ <xsd:enumeration value="false"/>
+ <xsd:enumeration value=""/>
+ <xsd:enumeration value="True"/>
+ <xsd:enumeration value="False"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_UnsignedDecimalNumber">
+ <xsd:restriction base="xsd:unsignedLong"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TwipsMeasure">
+ <xsd:union memberTypes="ST_UnsignedDecimalNumber ST_PositiveUniversalMeasure"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_VerticalAlignRun">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="baseline"/>
+ <xsd:enumeration value="superscript"/>
+ <xsd:enumeration value="subscript"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Xstring">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_XAlign">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="inside"/>
+ <xsd:enumeration value="outside"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_YAlign">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="inline"/>
+ <xsd:enumeration value="top"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="bottom"/>
+ <xsd:enumeration value="inside"/>
+ <xsd:enumeration value="outside"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ConformanceClass">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="strict"/>
+ <xsd:enumeration value="transitional"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_UniversalMeasure">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="-?[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PositiveUniversalMeasure">
+ <xsd:restriction base="ST_UniversalMeasure">
+ <xsd:pattern value="[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Percentage">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="-?[0-9]+(\.[0-9]+)?%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FixedPercentage">
+ <xsd:restriction base="ST_Percentage">
+ <xsd:pattern value="-?((100)|([0-9][0-9]?))(\.[0-9][0-9]?)?%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PositivePercentage">
+ <xsd:restriction base="ST_Percentage">
+ <xsd:pattern value="[0-9]+(\.[0-9]+)?%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PositiveFixedPercentage">
+ <xsd:restriction base="ST_Percentage">
+ <xsd:pattern value="((100)|([0-9][0-9]?))(\.[0-9][0-9]?)?%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/schema/shared-customXmlDataProperties.xsd b/lib/schema/shared-customXmlDataProperties.xsd
new file mode 100644
index 00000000..2bddce29
--- /dev/null
+++ b/lib/schema/shared-customXmlDataProperties.xsd
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ 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">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:complexType name="CT_DatastoreSchemaRef">
+ <xsd:attribute name="uri" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DatastoreSchemaRefs">
+ <xsd:sequence>
+ <xsd:element name="schemaRef" type="CT_DatastoreSchemaRef" minOccurs="0" maxOccurs="unbounded"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DatastoreItem">
+ <xsd:sequence>
+ <xsd:element name="schemaRefs" type="CT_DatastoreSchemaRefs" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="itemID" type="s:ST_Guid" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="datastoreItem" type="CT_DatastoreItem"/>
+</xsd:schema>
diff --git a/lib/schema/shared-customXmlSchemaProperties.xsd b/lib/schema/shared-customXmlSchemaProperties.xsd
new file mode 100644
index 00000000..8a8c18ba
--- /dev/null
+++ b/lib/schema/shared-customXmlSchemaProperties.xsd
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.openxmlformats.org/schemaLibrary/2006/main"
+ targetNamespace="http://schemas.openxmlformats.org/schemaLibrary/2006/main"
+ attributeFormDefault="qualified" elementFormDefault="qualified">
+ <xsd:complexType name="CT_Schema">
+ <xsd:attribute name="uri" type="xsd:string" default=""/>
+ <xsd:attribute name="manifestLocation" type="xsd:string"/>
+ <xsd:attribute name="schemaLocation" type="xsd:string"/>
+ <xsd:attribute name="schemaLanguage" type="xsd:token"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SchemaLibrary">
+ <xsd:sequence>
+ <xsd:element name="schema" type="CT_Schema" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="schemaLibrary" type="CT_SchemaLibrary"/>
+</xsd:schema>
diff --git a/lib/schema/shared-documentPropertiesCustom.xsd b/lib/schema/shared-documentPropertiesCustom.xsd
new file mode 100644
index 00000000..5c42706a
--- /dev/null
+++ b/lib/schema/shared-documentPropertiesCustom.xsd
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"
+ xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
+ xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"
+ blockDefault="#all" elementFormDefault="qualified">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
+ schemaLocation="shared-documentPropertiesVariantTypes.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:element name="Properties" type="CT_Properties"/>
+ <xsd:complexType name="CT_Properties">
+ <xsd:sequence>
+ <xsd:element name="property" minOccurs="0" maxOccurs="unbounded" type="CT_Property"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Property">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element ref="vt:vector"/>
+ <xsd:element ref="vt:array"/>
+ <xsd:element ref="vt:blob"/>
+ <xsd:element ref="vt:oblob"/>
+ <xsd:element ref="vt:empty"/>
+ <xsd:element ref="vt:null"/>
+ <xsd:element ref="vt:i1"/>
+ <xsd:element ref="vt:i2"/>
+ <xsd:element ref="vt:i4"/>
+ <xsd:element ref="vt:i8"/>
+ <xsd:element ref="vt:int"/>
+ <xsd:element ref="vt:ui1"/>
+ <xsd:element ref="vt:ui2"/>
+ <xsd:element ref="vt:ui4"/>
+ <xsd:element ref="vt:ui8"/>
+ <xsd:element ref="vt:uint"/>
+ <xsd:element ref="vt:r4"/>
+ <xsd:element ref="vt:r8"/>
+ <xsd:element ref="vt:decimal"/>
+ <xsd:element ref="vt:lpstr"/>
+ <xsd:element ref="vt:lpwstr"/>
+ <xsd:element ref="vt:bstr"/>
+ <xsd:element ref="vt:date"/>
+ <xsd:element ref="vt:filetime"/>
+ <xsd:element ref="vt:bool"/>
+ <xsd:element ref="vt:cy"/>
+ <xsd:element ref="vt:error"/>
+ <xsd:element ref="vt:stream"/>
+ <xsd:element ref="vt:ostream"/>
+ <xsd:element ref="vt:storage"/>
+ <xsd:element ref="vt:ostorage"/>
+ <xsd:element ref="vt:vstream"/>
+ <xsd:element ref="vt:clsid"/>
+ </xsd:choice>
+ <xsd:attribute name="fmtid" use="required" type="s:ST_Guid"/>
+ <xsd:attribute name="pid" use="required" type="xsd:int"/>
+ <xsd:attribute name="name" use="optional" type="xsd:string"/>
+ <xsd:attribute name="linkTarget" use="optional" type="xsd:string"/>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/lib/schema/shared-documentPropertiesExtended.xsd b/lib/schema/shared-documentPropertiesExtended.xsd
new file mode 100644
index 00000000..853c341c
--- /dev/null
+++ b/lib/schema/shared-documentPropertiesExtended.xsd
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
+ xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
+ targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
+ elementFormDefault="qualified" blockDefault="#all">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
+ schemaLocation="shared-documentPropertiesVariantTypes.xsd"/>
+ <xsd:element name="Properties" type="CT_Properties"/>
+ <xsd:complexType name="CT_Properties">
+ <xsd:all>
+ <xsd:element name="Template" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+ <xsd:element name="Manager" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+ <xsd:element name="Company" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+ <xsd:element name="Pages" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="Words" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="Characters" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="PresentationFormat" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+ <xsd:element name="Lines" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="Paragraphs" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="Slides" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="Notes" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="TotalTime" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="HiddenSlides" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="MMClips" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="ScaleCrop" minOccurs="0" maxOccurs="1" type="xsd:boolean"/>
+ <xsd:element name="HeadingPairs" minOccurs="0" maxOccurs="1" type="CT_VectorVariant"/>
+ <xsd:element name="TitlesOfParts" minOccurs="0" maxOccurs="1" type="CT_VectorLpstr"/>
+ <xsd:element name="LinksUpToDate" minOccurs="0" maxOccurs="1" type="xsd:boolean"/>
+ <xsd:element name="CharactersWithSpaces" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ <xsd:element name="SharedDoc" minOccurs="0" maxOccurs="1" type="xsd:boolean"/>
+ <xsd:element name="HyperlinkBase" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+ <xsd:element name="HLinks" minOccurs="0" maxOccurs="1" type="CT_VectorVariant"/>
+ <xsd:element name="HyperlinksChanged" minOccurs="0" maxOccurs="1" type="xsd:boolean"/>
+ <xsd:element name="DigSig" minOccurs="0" maxOccurs="1" type="CT_DigSigBlob"/>
+ <xsd:element name="Application" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+ <xsd:element name="AppVersion" minOccurs="0" maxOccurs="1" type="xsd:string"/>
+ <xsd:element name="DocSecurity" minOccurs="0" maxOccurs="1" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+ <xsd:complexType name="CT_VectorVariant">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element ref="vt:vector"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_VectorLpstr">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element ref="vt:vector"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DigSigBlob">
+ <xsd:sequence minOccurs="1" maxOccurs="1">
+ <xsd:element ref="vt:blob"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/lib/schema/shared-documentPropertiesVariantTypes.xsd b/lib/schema/shared-documentPropertiesVariantTypes.xsd
new file mode 100644
index 00000000..da835ee8
--- /dev/null
+++ b/lib/schema/shared-documentPropertiesVariantTypes.xsd
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
+ xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
+ blockDefault="#all" elementFormDefault="qualified">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:simpleType name="ST_VectorBaseType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="variant"/>
+ <xsd:enumeration value="i1"/>
+ <xsd:enumeration value="i2"/>
+ <xsd:enumeration value="i4"/>
+ <xsd:enumeration value="i8"/>
+ <xsd:enumeration value="ui1"/>
+ <xsd:enumeration value="ui2"/>
+ <xsd:enumeration value="ui4"/>
+ <xsd:enumeration value="ui8"/>
+ <xsd:enumeration value="r4"/>
+ <xsd:enumeration value="r8"/>
+ <xsd:enumeration value="lpstr"/>
+ <xsd:enumeration value="lpwstr"/>
+ <xsd:enumeration value="bstr"/>
+ <xsd:enumeration value="date"/>
+ <xsd:enumeration value="filetime"/>
+ <xsd:enumeration value="bool"/>
+ <xsd:enumeration value="cy"/>
+ <xsd:enumeration value="error"/>
+ <xsd:enumeration value="clsid"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ArrayBaseType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="variant"/>
+ <xsd:enumeration value="i1"/>
+ <xsd:enumeration value="i2"/>
+ <xsd:enumeration value="i4"/>
+ <xsd:enumeration value="int"/>
+ <xsd:enumeration value="ui1"/>
+ <xsd:enumeration value="ui2"/>
+ <xsd:enumeration value="ui4"/>
+ <xsd:enumeration value="uint"/>
+ <xsd:enumeration value="r4"/>
+ <xsd:enumeration value="r8"/>
+ <xsd:enumeration value="decimal"/>
+ <xsd:enumeration value="bstr"/>
+ <xsd:enumeration value="date"/>
+ <xsd:enumeration value="bool"/>
+ <xsd:enumeration value="cy"/>
+ <xsd:enumeration value="error"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Cy">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\s*[0-9]*\.[0-9]{4}\s*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Error">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\s*0x[0-9A-Za-z]{8}\s*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Empty"/>
+ <xsd:complexType name="CT_Null"/>
+ <xsd:complexType name="CT_Vector">
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element ref="variant"/>
+ <xsd:element ref="i1"/>
+ <xsd:element ref="i2"/>
+ <xsd:element ref="i4"/>
+ <xsd:element ref="i8"/>
+ <xsd:element ref="ui1"/>
+ <xsd:element ref="ui2"/>
+ <xsd:element ref="ui4"/>
+ <xsd:element ref="ui8"/>
+ <xsd:element ref="r4"/>
+ <xsd:element ref="r8"/>
+ <xsd:element ref="lpstr"/>
+ <xsd:element ref="lpwstr"/>
+ <xsd:element ref="bstr"/>
+ <xsd:element ref="date"/>
+ <xsd:element ref="filetime"/>
+ <xsd:element ref="bool"/>
+ <xsd:element ref="cy"/>
+ <xsd:element ref="error"/>
+ <xsd:element ref="clsid"/>
+ </xsd:choice>
+ <xsd:attribute name="baseType" type="ST_VectorBaseType" use="required"/>
+ <xsd:attribute name="size" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Array">
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element ref="variant"/>
+ <xsd:element ref="i1"/>
+ <xsd:element ref="i2"/>
+ <xsd:element ref="i4"/>
+ <xsd:element ref="int"/>
+ <xsd:element ref="ui1"/>
+ <xsd:element ref="ui2"/>
+ <xsd:element ref="ui4"/>
+ <xsd:element ref="uint"/>
+ <xsd:element ref="r4"/>
+ <xsd:element ref="r8"/>
+ <xsd:element ref="decimal"/>
+ <xsd:element ref="bstr"/>
+ <xsd:element ref="date"/>
+ <xsd:element ref="bool"/>
+ <xsd:element ref="error"/>
+ <xsd:element ref="cy"/>
+ </xsd:choice>
+ <xsd:attribute name="lBounds" type="xsd:int" use="required"/>
+ <xsd:attribute name="uBounds" type="xsd:int" use="required"/>
+ <xsd:attribute name="baseType" type="ST_ArrayBaseType" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Variant">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element ref="variant"/>
+ <xsd:element ref="vector"/>
+ <xsd:element ref="array"/>
+ <xsd:element ref="blob"/>
+ <xsd:element ref="oblob"/>
+ <xsd:element ref="empty"/>
+ <xsd:element ref="null"/>
+ <xsd:element ref="i1"/>
+ <xsd:element ref="i2"/>
+ <xsd:element ref="i4"/>
+ <xsd:element ref="i8"/>
+ <xsd:element ref="int"/>
+ <xsd:element ref="ui1"/>
+ <xsd:element ref="ui2"/>
+ <xsd:element ref="ui4"/>
+ <xsd:element ref="ui8"/>
+ <xsd:element ref="uint"/>
+ <xsd:element ref="r4"/>
+ <xsd:element ref="r8"/>
+ <xsd:element ref="decimal"/>
+ <xsd:element ref="lpstr"/>
+ <xsd:element ref="lpwstr"/>
+ <xsd:element ref="bstr"/>
+ <xsd:element ref="date"/>
+ <xsd:element ref="filetime"/>
+ <xsd:element ref="bool"/>
+ <xsd:element ref="cy"/>
+ <xsd:element ref="error"/>
+ <xsd:element ref="stream"/>
+ <xsd:element ref="ostream"/>
+ <xsd:element ref="storage"/>
+ <xsd:element ref="ostorage"/>
+ <xsd:element ref="vstream"/>
+ <xsd:element ref="clsid"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Vstream">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:base64Binary">
+ <xsd:attribute name="version" type="s:ST_Guid"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:element name="variant" type="CT_Variant"/>
+ <xsd:element name="vector" type="CT_Vector"/>
+ <xsd:element name="array" type="CT_Array"/>
+ <xsd:element name="blob" type="xsd:base64Binary"/>
+ <xsd:element name="oblob" type="xsd:base64Binary"/>
+ <xsd:element name="empty" type="CT_Empty"/>
+ <xsd:element name="null" type="CT_Null"/>
+ <xsd:element name="i1" type="xsd:byte"/>
+ <xsd:element name="i2" type="xsd:short"/>
+ <xsd:element name="i4" type="xsd:int"/>
+ <xsd:element name="i8" type="xsd:long"/>
+ <xsd:element name="int" type="xsd:int"/>
+ <xsd:element name="ui1" type="xsd:unsignedByte"/>
+ <xsd:element name="ui2" type="xsd:unsignedShort"/>
+ <xsd:element name="ui4" type="xsd:unsignedInt"/>
+ <xsd:element name="ui8" type="xsd:unsignedLong"/>
+ <xsd:element name="uint" type="xsd:unsignedInt"/>
+ <xsd:element name="r4" type="xsd:float"/>
+ <xsd:element name="r8" type="xsd:double"/>
+ <xsd:element name="decimal" type="xsd:decimal"/>
+ <xsd:element name="lpstr" type="xsd:string"/>
+ <xsd:element name="lpwstr" type="xsd:string"/>
+ <xsd:element name="bstr" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:dateTime"/>
+ <xsd:element name="filetime" type="xsd:dateTime"/>
+ <xsd:element name="bool" type="xsd:boolean"/>
+ <xsd:element name="cy" type="ST_Cy"/>
+ <xsd:element name="error" type="ST_Error"/>
+ <xsd:element name="stream" type="xsd:base64Binary"/>
+ <xsd:element name="ostream" type="xsd:base64Binary"/>
+ <xsd:element name="storage" type="xsd:base64Binary"/>
+ <xsd:element name="ostorage" type="xsd:base64Binary"/>
+ <xsd:element name="vstream" type="CT_Vstream"/>
+ <xsd:element name="clsid" type="s:ST_Guid"/>
+</xsd:schema>
diff --git a/lib/schema/shared-math.xsd b/lib/schema/shared-math.xsd
new file mode 100644
index 00000000..a07f3927
--- /dev/null
+++ b/lib/schema/shared-math.xsd
@@ -0,0 +1,582 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ 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">
+ <xsd:import namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+ schemaLocation="wml.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
+ <xsd:simpleType name="ST_Integer255">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1"/>
+ <xsd:maxInclusive value="255"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Integer255">
+ <xsd:attribute name="val" type="ST_Integer255" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Integer2">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="-2"/>
+ <xsd:maxInclusive value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Integer2">
+ <xsd:attribute name="val" type="ST_Integer2" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SpacingRule">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="4"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SpacingRule">
+ <xsd:attribute name="val" type="ST_SpacingRule" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_UnSignedInteger">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_UnSignedInteger">
+ <xsd:attribute name="val" type="ST_UnSignedInteger" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Char">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Char">
+ <xsd:attribute name="val" type="ST_Char" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OnOff">
+ <xsd:attribute name="val" type="s:ST_OnOff"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_String">
+ <xsd:attribute name="val" type="s:ST_String"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_XAlign">
+ <xsd:attribute name="val" type="s:ST_XAlign" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_YAlign">
+ <xsd:attribute name="val" type="s:ST_YAlign" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Shp">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="centered"/>
+ <xsd:enumeration value="match"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Shp">
+ <xsd:attribute name="val" type="ST_Shp" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="bar"/>
+ <xsd:enumeration value="skw"/>
+ <xsd:enumeration value="lin"/>
+ <xsd:enumeration value="noBar"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FType">
+ <xsd:attribute name="val" type="ST_FType" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LimLoc">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="undOvr"/>
+ <xsd:enumeration value="subSup"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LimLoc">
+ <xsd:attribute name="val" type="ST_LimLoc" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TopBot">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="top"/>
+ <xsd:enumeration value="bot"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TopBot">
+ <xsd:attribute name="val" type="ST_TopBot" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Script">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="roman"/>
+ <xsd:enumeration value="script"/>
+ <xsd:enumeration value="fraktur"/>
+ <xsd:enumeration value="double-struck"/>
+ <xsd:enumeration value="sans-serif"/>
+ <xsd:enumeration value="monospace"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Script">
+ <xsd:attribute name="val" type="ST_Script"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Style">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="p"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="i"/>
+ <xsd:enumeration value="bi"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Style">
+ <xsd:attribute name="val" type="ST_Style"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ManualBreak">
+ <xsd:attribute name="alnAt" type="ST_Integer255"/>
+ </xsd:complexType>
+ <xsd:group name="EG_ScriptStyle">
+ <xsd:sequence>
+ <xsd:element name="scr" minOccurs="0" type="CT_Script"/>
+ <xsd:element name="sty" minOccurs="0" type="CT_Style"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_RPR">
+ <xsd:sequence>
+ <xsd:element name="lit" minOccurs="0" type="CT_OnOff"/>
+ <xsd:choice>
+ <xsd:element name="nor" minOccurs="0" type="CT_OnOff"/>
+ <xsd:sequence>
+ <xsd:group ref="EG_ScriptStyle"/>
+ </xsd:sequence>
+ </xsd:choice>
+ <xsd:element name="brk" minOccurs="0" type="CT_ManualBreak"/>
+ <xsd:element name="aln" minOccurs="0" type="CT_OnOff"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Text">
+ <xsd:simpleContent>
+ <xsd:extension base="s:ST_String">
+ <xsd:attribute ref="xml:space" use="optional"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_R">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_RPR" minOccurs="0"/>
+ <xsd:group ref="w:EG_RPr" minOccurs="0"/>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:group ref="w:EG_RunInnerContent"/>
+ <xsd:element name="t" type="CT_Text" minOccurs="0"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CtrlPr">
+ <xsd:sequence>
+ <xsd:group ref="w:EG_RPrMath" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AccPr">
+ <xsd:sequence>
+ <xsd:element name="chr" type="CT_Char" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Acc">
+ <xsd:sequence>
+ <xsd:element name="accPr" type="CT_AccPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BarPr">
+ <xsd:sequence>
+ <xsd:element name="pos" type="CT_TopBot" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Bar">
+ <xsd:sequence>
+ <xsd:element name="barPr" type="CT_BarPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BoxPr">
+ <xsd:sequence>
+ <xsd:element name="opEmu" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="noBreak" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="diff" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="brk" type="CT_ManualBreak" minOccurs="0"/>
+ <xsd:element name="aln" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Box">
+ <xsd:sequence>
+ <xsd:element name="boxPr" type="CT_BoxPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BorderBoxPr">
+ <xsd:sequence>
+ <xsd:element name="hideTop" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="hideBot" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="hideLeft" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="hideRight" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="strikeH" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="strikeV" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="strikeBLTR" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="strikeTLBR" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BorderBox">
+ <xsd:sequence>
+ <xsd:element name="borderBoxPr" type="CT_BorderBoxPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DPr">
+ <xsd:sequence>
+ <xsd:element name="begChr" type="CT_Char" minOccurs="0"/>
+ <xsd:element name="sepChr" type="CT_Char" minOccurs="0"/>
+ <xsd:element name="endChr" type="CT_Char" minOccurs="0"/>
+ <xsd:element name="grow" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="shp" type="CT_Shp" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_D">
+ <xsd:sequence>
+ <xsd:element name="dPr" type="CT_DPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EqArrPr">
+ <xsd:sequence>
+ <xsd:element name="baseJc" type="CT_YAlign" minOccurs="0"/>
+ <xsd:element name="maxDist" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="objDist" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="rSpRule" type="CT_SpacingRule" minOccurs="0"/>
+ <xsd:element name="rSp" type="CT_UnSignedInteger" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EqArr">
+ <xsd:sequence>
+ <xsd:element name="eqArrPr" type="CT_EqArrPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FPr">
+ <xsd:sequence>
+ <xsd:element name="type" type="CT_FType" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_F">
+ <xsd:sequence>
+ <xsd:element name="fPr" type="CT_FPr" minOccurs="0"/>
+ <xsd:element name="num" type="CT_OMathArg"/>
+ <xsd:element name="den" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FuncPr">
+ <xsd:sequence>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Func">
+ <xsd:sequence>
+ <xsd:element name="funcPr" type="CT_FuncPr" minOccurs="0"/>
+ <xsd:element name="fName" type="CT_OMathArg"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupChrPr">
+ <xsd:sequence>
+ <xsd:element name="chr" type="CT_Char" minOccurs="0"/>
+ <xsd:element name="pos" type="CT_TopBot" minOccurs="0"/>
+ <xsd:element name="vertJc" type="CT_TopBot" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupChr">
+ <xsd:sequence>
+ <xsd:element name="groupChrPr" type="CT_GroupChrPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LimLowPr">
+ <xsd:sequence>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LimLow">
+ <xsd:sequence>
+ <xsd:element name="limLowPr" type="CT_LimLowPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ <xsd:element name="lim" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LimUppPr">
+ <xsd:sequence>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LimUpp">
+ <xsd:sequence>
+ <xsd:element name="limUppPr" type="CT_LimUppPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ <xsd:element name="lim" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MCPr">
+ <xsd:sequence>
+ <xsd:element name="count" type="CT_Integer255" minOccurs="0"/>
+ <xsd:element name="mcJc" type="CT_XAlign" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MC">
+ <xsd:sequence>
+ <xsd:element name="mcPr" type="CT_MCPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MCS">
+ <xsd:sequence>
+ <xsd:element name="mc" type="CT_MC" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MPr">
+ <xsd:sequence>
+ <xsd:element name="baseJc" type="CT_YAlign" minOccurs="0"/>
+ <xsd:element name="plcHide" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="rSpRule" type="CT_SpacingRule" minOccurs="0"/>
+ <xsd:element name="cGpRule" type="CT_SpacingRule" minOccurs="0"/>
+ <xsd:element name="rSp" type="CT_UnSignedInteger" minOccurs="0"/>
+ <xsd:element name="cSp" type="CT_UnSignedInteger" minOccurs="0"/>
+ <xsd:element name="cGp" type="CT_UnSignedInteger" minOccurs="0"/>
+ <xsd:element name="mcs" type="CT_MCS" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MR">
+ <xsd:sequence>
+ <xsd:element name="e" type="CT_OMathArg" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_M">
+ <xsd:sequence>
+ <xsd:element name="mPr" type="CT_MPr" minOccurs="0"/>
+ <xsd:element name="mr" type="CT_MR" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NaryPr">
+ <xsd:sequence>
+ <xsd:element name="chr" type="CT_Char" minOccurs="0"/>
+ <xsd:element name="limLoc" type="CT_LimLoc" minOccurs="0"/>
+ <xsd:element name="grow" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="subHide" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="supHide" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Nary">
+ <xsd:sequence>
+ <xsd:element name="naryPr" type="CT_NaryPr" minOccurs="0"/>
+ <xsd:element name="sub" type="CT_OMathArg"/>
+ <xsd:element name="sup" type="CT_OMathArg"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PhantPr">
+ <xsd:sequence>
+ <xsd:element name="show" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="zeroWid" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="zeroAsc" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="zeroDesc" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="transp" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Phant">
+ <xsd:sequence>
+ <xsd:element name="phantPr" type="CT_PhantPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RadPr">
+ <xsd:sequence>
+ <xsd:element name="degHide" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Rad">
+ <xsd:sequence>
+ <xsd:element name="radPr" type="CT_RadPr" minOccurs="0"/>
+ <xsd:element name="deg" type="CT_OMathArg"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SPrePr">
+ <xsd:sequence>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SPre">
+ <xsd:sequence>
+ <xsd:element name="sPrePr" type="CT_SPrePr" minOccurs="0"/>
+ <xsd:element name="sub" type="CT_OMathArg"/>
+ <xsd:element name="sup" type="CT_OMathArg"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SSubPr">
+ <xsd:sequence>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SSub">
+ <xsd:sequence>
+ <xsd:element name="sSubPr" type="CT_SSubPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ <xsd:element name="sub" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SSubSupPr">
+ <xsd:sequence>
+ <xsd:element name="alnScr" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SSubSup">
+ <xsd:sequence>
+ <xsd:element name="sSubSupPr" type="CT_SSubSupPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ <xsd:element name="sub" type="CT_OMathArg"/>
+ <xsd:element name="sup" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SSupPr">
+ <xsd:sequence>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SSup">
+ <xsd:sequence>
+ <xsd:element name="sSupPr" type="CT_SSupPr" minOccurs="0"/>
+ <xsd:element name="e" type="CT_OMathArg"/>
+ <xsd:element name="sup" type="CT_OMathArg"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_OMathMathElements">
+ <xsd:choice>
+ <xsd:element name="acc" type="CT_Acc"/>
+ <xsd:element name="bar" type="CT_Bar"/>
+ <xsd:element name="box" type="CT_Box"/>
+ <xsd:element name="borderBox" type="CT_BorderBox"/>
+ <xsd:element name="d" type="CT_D"/>
+ <xsd:element name="eqArr" type="CT_EqArr"/>
+ <xsd:element name="f" type="CT_F"/>
+ <xsd:element name="func" type="CT_Func"/>
+ <xsd:element name="groupChr" type="CT_GroupChr"/>
+ <xsd:element name="limLow" type="CT_LimLow"/>
+ <xsd:element name="limUpp" type="CT_LimUpp"/>
+ <xsd:element name="m" type="CT_M"/>
+ <xsd:element name="nary" type="CT_Nary"/>
+ <xsd:element name="phant" type="CT_Phant"/>
+ <xsd:element name="rad" type="CT_Rad"/>
+ <xsd:element name="sPre" type="CT_SPre"/>
+ <xsd:element name="sSub" type="CT_SSub"/>
+ <xsd:element name="sSubSup" type="CT_SSubSup"/>
+ <xsd:element name="sSup" type="CT_SSup"/>
+ <xsd:element name="r" type="CT_R"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_OMathElements">
+ <xsd:choice>
+ <xsd:group ref="EG_OMathMathElements"/>
+ <xsd:group ref="w:EG_PContentMath"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_OMathArgPr">
+ <xsd:sequence>
+ <xsd:element name="argSz" type="CT_Integer2" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OMathArg">
+ <xsd:sequence>
+ <xsd:element name="argPr" type="CT_OMathArgPr" minOccurs="0"/>
+ <xsd:group ref="EG_OMathElements" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Jc">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="centerGroup"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_OMathJc">
+ <xsd:attribute name="val" type="ST_Jc"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OMathParaPr">
+ <xsd:sequence>
+ <xsd:element name="jc" type="CT_OMathJc" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TwipsMeasure">
+ <xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BreakBin">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="before"/>
+ <xsd:enumeration value="after"/>
+ <xsd:enumeration value="repeat"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_BreakBin">
+ <xsd:attribute name="val" type="ST_BreakBin"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BreakBinSub">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="--"/>
+ <xsd:enumeration value="-+"/>
+ <xsd:enumeration value="+-"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_BreakBinSub">
+ <xsd:attribute name="val" type="ST_BreakBinSub"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MathPr">
+ <xsd:sequence>
+ <xsd:element name="mathFont" type="CT_String" minOccurs="0"/>
+ <xsd:element name="brkBin" type="CT_BreakBin" minOccurs="0"/>
+ <xsd:element name="brkBinSub" type="CT_BreakBinSub" minOccurs="0"/>
+ <xsd:element name="smallFrac" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="dispDef" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="lMargin" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="rMargin" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="defJc" type="CT_OMathJc" minOccurs="0"/>
+ <xsd:element name="preSp" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="postSp" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="interSp" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="intraSp" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:choice minOccurs="0">
+ <xsd:element name="wrapIndent" type="CT_TwipsMeasure"/>
+ <xsd:element name="wrapRight" type="CT_OnOff"/>
+ </xsd:choice>
+ <xsd:element name="intLim" type="CT_LimLoc" minOccurs="0"/>
+ <xsd:element name="naryLim" type="CT_LimLoc" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="mathPr" type="CT_MathPr"/>
+ <xsd:complexType name="CT_OMathPara">
+ <xsd:sequence>
+ <xsd:element name="oMathParaPr" type="CT_OMathParaPr" minOccurs="0"/>
+ <xsd:element name="oMath" type="CT_OMath" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OMath">
+ <xsd:sequence>
+ <xsd:group ref="EG_OMathElements" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="oMathPara" type="CT_OMathPara"/>
+ <xsd:element name="oMath" type="CT_OMath"/>
+</xsd:schema>
diff --git a/lib/schema/shared-relationshipReference.xsd b/lib/schema/shared-relationshipReference.xsd
new file mode 100644
index 00000000..9e86f1b2
--- /dev/null
+++ b/lib/schema/shared-relationshipReference.xsd
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ elementFormDefault="qualified"
+ targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ blockDefault="#all">
+ <xsd:simpleType name="ST_RelationshipId">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:attribute name="id" type="ST_RelationshipId"/>
+ <xsd:attribute name="embed" type="ST_RelationshipId"/>
+ <xsd:attribute name="link" type="ST_RelationshipId"/>
+ <xsd:attribute name="dm" type="ST_RelationshipId" default=""/>
+ <xsd:attribute name="lo" type="ST_RelationshipId" default=""/>
+ <xsd:attribute name="qs" type="ST_RelationshipId" default=""/>
+ <xsd:attribute name="cs" type="ST_RelationshipId" default=""/>
+ <xsd:attribute name="blip" type="ST_RelationshipId" default=""/>
+ <xsd:attribute name="pict" type="ST_RelationshipId"/>
+ <xsd:attribute name="href" type="ST_RelationshipId"/>
+ <xsd:attribute name="topLeft" type="ST_RelationshipId"/>
+ <xsd:attribute name="topRight" type="ST_RelationshipId"/>
+ <xsd:attribute name="bottomLeft" type="ST_RelationshipId"/>
+ <xsd:attribute name="bottomRight" type="ST_RelationshipId"/>
+</xsd:schema>
diff --git a/lib/schema/sml.xsd b/lib/schema/sml.xsd
new file mode 100644
index 00000000..fa396e80
--- /dev/null
+++ b/lib/schema/sml.xsd
@@ -0,0 +1,4430 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ 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">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ schemaLocation="shared-relationshipReference.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:import
+ namespace="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
+ schemaLocation="dml-spreadsheetDrawing.xsd"/>
+ <xsd:complexType name="CT_AutoFilter">
+ <xsd:sequence>
+ <xsd:element name="filterColumn" minOccurs="0" maxOccurs="unbounded" type="CT_FilterColumn"/>
+ <xsd:element name="sortState" minOccurs="0" maxOccurs="1" type="CT_SortState"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="ref" type="ST_Ref"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FilterColumn">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="filters" type="CT_Filters" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="top10" type="CT_Top10" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="customFilters" type="CT_CustomFilters" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dynamicFilter" type="CT_DynamicFilter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="colorFilter" type="CT_ColorFilter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="iconFilter" minOccurs="0" maxOccurs="1" type="CT_IconFilter"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:attribute name="colId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="hiddenButton" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showButton" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Filters">
+ <xsd:sequence>
+ <xsd:element name="filter" type="CT_Filter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="dateGroupItem" type="CT_DateGroupItem" minOccurs="0" maxOccurs="unbounded"
+ />
+ </xsd:sequence>
+ <xsd:attribute name="blank" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="calendarType" type="s:ST_CalendarType" use="optional" default="none"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Filter">
+ <xsd:attribute name="val" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomFilters">
+ <xsd:sequence>
+ <xsd:element name="customFilter" type="CT_CustomFilter" minOccurs="1" maxOccurs="2"/>
+ </xsd:sequence>
+ <xsd:attribute name="and" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomFilter">
+ <xsd:attribute name="operator" type="ST_FilterOperator" default="equal" use="optional"/>
+ <xsd:attribute name="val" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Top10">
+ <xsd:attribute name="top" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="percent" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="val" type="xsd:double" use="required"/>
+ <xsd:attribute name="filterVal" type="xsd:double" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorFilter">
+ <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="cellColor" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_IconFilter">
+ <xsd:attribute name="iconSet" type="ST_IconSetType" use="required"/>
+ <xsd:attribute name="iconId" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FilterOperator">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="equal"/>
+ <xsd:enumeration value="lessThan"/>
+ <xsd:enumeration value="lessThanOrEqual"/>
+ <xsd:enumeration value="notEqual"/>
+ <xsd:enumeration value="greaterThanOrEqual"/>
+ <xsd:enumeration value="greaterThan"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DynamicFilter">
+ <xsd:attribute name="type" type="ST_DynamicFilterType" use="required"/>
+ <xsd:attribute name="val" type="xsd:double" use="optional"/>
+ <xsd:attribute name="valIso" type="xsd:dateTime" use="optional"/>
+ <xsd:attribute name="maxVal" type="xsd:double" use="optional"/>
+ <xsd:attribute name="maxValIso" type="xsd:dateTime" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DynamicFilterType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="null"/>
+ <xsd:enumeration value="aboveAverage"/>
+ <xsd:enumeration value="belowAverage"/>
+ <xsd:enumeration value="tomorrow"/>
+ <xsd:enumeration value="today"/>
+ <xsd:enumeration value="yesterday"/>
+ <xsd:enumeration value="nextWeek"/>
+ <xsd:enumeration value="thisWeek"/>
+ <xsd:enumeration value="lastWeek"/>
+ <xsd:enumeration value="nextMonth"/>
+ <xsd:enumeration value="thisMonth"/>
+ <xsd:enumeration value="lastMonth"/>
+ <xsd:enumeration value="nextQuarter"/>
+ <xsd:enumeration value="thisQuarter"/>
+ <xsd:enumeration value="lastQuarter"/>
+ <xsd:enumeration value="nextYear"/>
+ <xsd:enumeration value="thisYear"/>
+ <xsd:enumeration value="lastYear"/>
+ <xsd:enumeration value="yearToDate"/>
+ <xsd:enumeration value="Q1"/>
+ <xsd:enumeration value="Q2"/>
+ <xsd:enumeration value="Q3"/>
+ <xsd:enumeration value="Q4"/>
+ <xsd:enumeration value="M1"/>
+ <xsd:enumeration value="M2"/>
+ <xsd:enumeration value="M3"/>
+ <xsd:enumeration value="M4"/>
+ <xsd:enumeration value="M5"/>
+ <xsd:enumeration value="M6"/>
+ <xsd:enumeration value="M7"/>
+ <xsd:enumeration value="M8"/>
+ <xsd:enumeration value="M9"/>
+ <xsd:enumeration value="M10"/>
+ <xsd:enumeration value="M11"/>
+ <xsd:enumeration value="M12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_IconSetType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="3Arrows"/>
+ <xsd:enumeration value="3ArrowsGray"/>
+ <xsd:enumeration value="3Flags"/>
+ <xsd:enumeration value="3TrafficLights1"/>
+ <xsd:enumeration value="3TrafficLights2"/>
+ <xsd:enumeration value="3Signs"/>
+ <xsd:enumeration value="3Symbols"/>
+ <xsd:enumeration value="3Symbols2"/>
+ <xsd:enumeration value="4Arrows"/>
+ <xsd:enumeration value="4ArrowsGray"/>
+ <xsd:enumeration value="4RedToBlack"/>
+ <xsd:enumeration value="4Rating"/>
+ <xsd:enumeration value="4TrafficLights"/>
+ <xsd:enumeration value="5Arrows"/>
+ <xsd:enumeration value="5ArrowsGray"/>
+ <xsd:enumeration value="5Rating"/>
+ <xsd:enumeration value="5Quarters"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SortState">
+ <xsd:sequence>
+ <xsd:element name="sortCondition" minOccurs="0" maxOccurs="64" type="CT_SortCondition"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="columnSort" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="caseSensitive" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="sortMethod" type="ST_SortMethod" use="optional" default="none"/>
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SortCondition">
+ <xsd:attribute name="descending" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="sortBy" type="ST_SortBy" use="optional" default="value"/>
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ <xsd:attribute name="customList" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="iconSet" type="ST_IconSetType" use="optional" default="3Arrows"/>
+ <xsd:attribute name="iconId" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SortBy">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="value"/>
+ <xsd:enumeration value="cellColor"/>
+ <xsd:enumeration value="fontColor"/>
+ <xsd:enumeration value="icon"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_SortMethod">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="stroke"/>
+ <xsd:enumeration value="pinYin"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DateGroupItem">
+ <xsd:attribute name="year" type="xsd:unsignedShort" use="required"/>
+ <xsd:attribute name="month" type="xsd:unsignedShort" use="optional"/>
+ <xsd:attribute name="day" type="xsd:unsignedShort" use="optional"/>
+ <xsd:attribute name="hour" type="xsd:unsignedShort" use="optional"/>
+ <xsd:attribute name="minute" type="xsd:unsignedShort" use="optional"/>
+ <xsd:attribute name="second" type="xsd:unsignedShort" use="optional"/>
+ <xsd:attribute name="dateTimeGrouping" type="ST_DateTimeGrouping" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DateTimeGrouping">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="year"/>
+ <xsd:enumeration value="month"/>
+ <xsd:enumeration value="day"/>
+ <xsd:enumeration value="hour"/>
+ <xsd:enumeration value="minute"/>
+ <xsd:enumeration value="second"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CellRef">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Ref">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_RefA">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Sqref">
+ <xsd:list itemType="ST_Ref"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Formula">
+ <xsd:restriction base="s:ST_Xstring"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_UnsignedIntHex">
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="4"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_UnsignedShortHex">
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_XStringElement">
+ <xsd:attribute name="v" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Extension">
+ <xsd:sequence>
+ <xsd:any processContents="lax"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="xsd:token"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ObjectAnchor">
+ <xsd:sequence>
+ <xsd:element ref="xdr:from" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="xdr:to" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="moveWithCells" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="sizeWithCells" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="z-order" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:group name="EG_ExtensionList">
+ <xsd:sequence>
+ <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_ExtensionList">
+ <xsd:sequence>
+ <xsd:group ref="EG_ExtensionList" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="calcChain" type="CT_CalcChain"/>
+ <xsd:complexType name="CT_CalcChain">
+ <xsd:sequence>
+ <xsd:element name="c" type="CT_CalcCell" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CalcCell">
+ <xsd:attribute name="r" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="ref" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="i" type="xsd:int" use="optional" default="0"/>
+ <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="l" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="t" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="a" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:element name="comments" type="CT_Comments"/>
+ <xsd:complexType name="CT_Comments">
+ <xsd:sequence>
+ <xsd:element name="authors" type="CT_Authors" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="commentList" type="CT_CommentList" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Authors">
+ <xsd:sequence>
+ <xsd:element name="author" type="s:ST_Xstring" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CommentList">
+ <xsd:sequence>
+ <xsd:element name="comment" type="CT_Comment" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Comment">
+ <xsd:sequence>
+ <xsd:element name="text" type="CT_Rst" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="commentPr" type="CT_CommentPr" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ <xsd:attribute name="authorId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="guid" type="s:ST_Guid" use="optional"/>
+ <xsd:attribute name="shapeId" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CommentPr">
+ <xsd:sequence>
+ <xsd:element name="anchor" type="CT_ObjectAnchor" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="defaultSize" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="print" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="disabled" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="uiObject" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="autoFill" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="autoLine" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="altText" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="textHAlign" type="ST_TextHAlign" use="optional" default="left"/>
+ <xsd:attribute name="textVAlign" type="ST_TextVAlign" use="optional" default="top"/>
+ <xsd:attribute name="lockText" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="justLastX" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="autoScale" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="rowHidden" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="colHidden" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextHAlign">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="justify"/>
+ <xsd:enumeration value="distributed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextVAlign">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="top"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="bottom"/>
+ <xsd:enumeration value="justify"/>
+ <xsd:enumeration value="distributed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="MapInfo" type="CT_MapInfo"/>
+ <xsd:complexType name="CT_MapInfo">
+ <xsd:sequence>
+ <xsd:element name="Schema" type="CT_Schema" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="Map" type="CT_Map" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="SelectionNamespaces" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Schema" mixed="true">
+ <xsd:sequence>
+ <xsd:any/>
+ </xsd:sequence>
+ <xsd:attribute name="ID" type="xsd:string" use="required"/>
+ <xsd:attribute name="SchemaRef" type="xsd:string" use="optional"/>
+ <xsd:attribute name="Namespace" type="xsd:string" use="optional"/>
+ <xsd:attribute name="SchemaLanguage" type="xsd:token" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Map">
+ <xsd:sequence>
+ <xsd:element name="DataBinding" type="CT_DataBinding" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="ID" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="Name" type="xsd:string" use="required"/>
+ <xsd:attribute name="RootElement" type="xsd:string" use="required"/>
+ <xsd:attribute name="SchemaID" type="xsd:string" use="required"/>
+ <xsd:attribute name="ShowImportExportValidationErrors" type="xsd:boolean" use="required"/>
+ <xsd:attribute name="AutoFit" type="xsd:boolean" use="required"/>
+ <xsd:attribute name="Append" type="xsd:boolean" use="required"/>
+ <xsd:attribute name="PreserveSortAFLayout" type="xsd:boolean" use="required"/>
+ <xsd:attribute name="PreserveFormat" type="xsd:boolean" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataBinding">
+ <xsd:sequence>
+ <xsd:any/>
+ </xsd:sequence>
+ <xsd:attribute name="DataBindingName" type="xsd:string" use="optional"/>
+ <xsd:attribute name="FileBinding" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="ConnectionID" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="FileBindingName" type="xsd:string" use="optional"/>
+ <xsd:attribute name="DataBindingLoadMode" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="connections" type="CT_Connections"/>
+ <xsd:complexType name="CT_Connections">
+ <xsd:sequence>
+ <xsd:element name="connection" minOccurs="1" maxOccurs="unbounded" type="CT_Connection"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Connection">
+ <xsd:sequence>
+ <xsd:element name="dbPr" minOccurs="0" maxOccurs="1" type="CT_DbPr"/>
+ <xsd:element name="olapPr" minOccurs="0" maxOccurs="1" type="CT_OlapPr"/>
+ <xsd:element name="webPr" minOccurs="0" maxOccurs="1" type="CT_WebPr"/>
+ <xsd:element name="textPr" minOccurs="0" maxOccurs="1" type="CT_TextPr"/>
+ <xsd:element name="parameters" minOccurs="0" maxOccurs="1" type="CT_Parameters"/>
+ <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="sourceFile" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="odcFile" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="keepAlive" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="interval" use="optional" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="name" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="description" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="type" use="optional" type="xsd:unsignedInt"/>
+ <xsd:attribute name="reconnectionMethod" use="optional" type="xsd:unsignedInt" default="1"/>
+ <xsd:attribute name="refreshedVersion" use="required" type="xsd:unsignedByte"/>
+ <xsd:attribute name="minRefreshableVersion" use="optional" type="xsd:unsignedByte" default="0"/>
+ <xsd:attribute name="savePassword" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="new" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="deleted" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="onlyUseConnectionFile" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="background" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="refreshOnLoad" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="saveData" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="credentials" use="optional" type="ST_CredMethod" default="integrated"/>
+ <xsd:attribute name="singleSignOnId" use="optional" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_CredMethod">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="integrated"/>
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="stored"/>
+ <xsd:enumeration value="prompt"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DbPr">
+ <xsd:attribute name="connection" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="command" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="serverCommand" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="commandType" use="optional" type="xsd:unsignedInt" default="2"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OlapPr">
+ <xsd:attribute name="local" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="localConnection" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="localRefresh" use="optional" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="sendLocale" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="rowDrillCount" use="optional" type="xsd:unsignedInt"/>
+ <xsd:attribute name="serverFill" use="optional" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="serverNumberFormat" use="optional" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="serverFont" use="optional" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="serverFontColor" use="optional" type="xsd:boolean" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WebPr">
+ <xsd:sequence>
+ <xsd:element name="tables" minOccurs="0" maxOccurs="1" type="CT_Tables"/>
+ </xsd:sequence>
+ <xsd:attribute name="xml" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="sourceData" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="parsePre" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="consecutive" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="firstRow" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="xl97" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="textDates" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="xl2000" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="url" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="post" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="htmlTables" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="htmlFormat" use="optional" type="ST_HtmlFmt" default="none"/>
+ <xsd:attribute name="editPage" use="optional" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_HtmlFmt">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="rtf"/>
+ <xsd:enumeration value="all"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Parameters">
+ <xsd:sequence>
+ <xsd:element name="parameter" minOccurs="1" maxOccurs="unbounded" type="CT_Parameter"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" use="optional" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Parameter">
+ <xsd:attribute name="name" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="sqlType" use="optional" type="xsd:int" default="0"/>
+ <xsd:attribute name="parameterType" use="optional" type="ST_ParameterType" default="prompt"/>
+ <xsd:attribute name="refreshOnChange" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="prompt" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="boolean" use="optional" type="xsd:boolean"/>
+ <xsd:attribute name="double" use="optional" type="xsd:double"/>
+ <xsd:attribute name="integer" use="optional" type="xsd:int"/>
+ <xsd:attribute name="string" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="cell" use="optional" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ParameterType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="prompt"/>
+ <xsd:enumeration value="value"/>
+ <xsd:enumeration value="cell"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Tables">
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="m" type="CT_TableMissing"/>
+ <xsd:element name="s" type="CT_XStringElement"/>
+ <xsd:element name="x" type="CT_Index"/>
+ </xsd:choice>
+ <xsd:attribute name="count" use="optional" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableMissing"/>
+ <xsd:complexType name="CT_TextPr">
+ <xsd:sequence>
+ <xsd:element name="textFields" minOccurs="0" maxOccurs="1" type="CT_TextFields"/>
+ </xsd:sequence>
+ <xsd:attribute name="prompt" use="optional" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="fileType" use="optional" type="ST_FileType" default="win"/>
+ <xsd:attribute name="codePage" use="optional" type="xsd:unsignedInt" default="1252"/>
+ <xsd:attribute name="characterSet" use="optional" type="xsd:string"/>
+ <xsd:attribute name="firstRow" use="optional" type="xsd:unsignedInt" default="1"/>
+ <xsd:attribute name="sourceFile" use="optional" type="s:ST_Xstring" default=""/>
+ <xsd:attribute name="delimited" use="optional" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="decimal" use="optional" type="s:ST_Xstring" default="."/>
+ <xsd:attribute name="thousands" use="optional" type="s:ST_Xstring" default=","/>
+ <xsd:attribute name="tab" use="optional" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="space" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="comma" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="semicolon" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="consecutive" use="optional" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="qualifier" use="optional" type="ST_Qualifier" default="doubleQuote"/>
+ <xsd:attribute name="delimiter" use="optional" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FileType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="mac"/>
+ <xsd:enumeration value="win"/>
+ <xsd:enumeration value="dos"/>
+ <xsd:enumeration value="lin"/>
+ <xsd:enumeration value="other"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Qualifier">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="doubleQuote"/>
+ <xsd:enumeration value="singleQuote"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextFields">
+ <xsd:sequence>
+ <xsd:element name="textField" minOccurs="1" maxOccurs="unbounded" type="CT_TextField"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" use="optional" type="xsd:unsignedInt" default="1"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextField">
+ <xsd:attribute name="type" use="optional" type="ST_ExternalConnectionType" default="general"/>
+ <xsd:attribute name="position" use="optional" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ExternalConnectionType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="general"/>
+ <xsd:enumeration value="text"/>
+ <xsd:enumeration value="MDY"/>
+ <xsd:enumeration value="DMY"/>
+ <xsd:enumeration value="YMD"/>
+ <xsd:enumeration value="MYD"/>
+ <xsd:enumeration value="DYM"/>
+ <xsd:enumeration value="YDM"/>
+ <xsd:enumeration value="skip"/>
+ <xsd:enumeration value="EMD"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="pivotCacheDefinition" type="CT_PivotCacheDefinition"/>
+ <xsd:element name="pivotCacheRecords" type="CT_PivotCacheRecords"/>
+ <xsd:element name="pivotTableDefinition" type="CT_pivotTableDefinition"/>
+ <xsd:complexType name="CT_PivotCacheDefinition">
+ <xsd:sequence>
+ <xsd:element name="cacheSource" type="CT_CacheSource" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cacheFields" type="CT_CacheFields" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="cacheHierarchies" minOccurs="0" type="CT_CacheHierarchies"/>
+ <xsd:element name="kpis" minOccurs="0" type="CT_PCDKPIs"/>
+ <xsd:element name="tupleCache" minOccurs="0" type="CT_TupleCache"/>
+ <xsd:element name="calculatedItems" minOccurs="0" type="CT_CalculatedItems"/>
+ <xsd:element name="calculatedMembers" type="CT_CalculatedMembers" minOccurs="0"/>
+ <xsd:element name="dimensions" type="CT_Dimensions" minOccurs="0"/>
+ <xsd:element name="measureGroups" type="CT_MeasureGroups" minOccurs="0"/>
+ <xsd:element name="maps" type="CT_MeasureDimensionMaps" minOccurs="0"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:id" use="optional"/>
+ <xsd:attribute name="invalid" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="saveData" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="refreshOnLoad" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="optimizeMemory" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="enableRefresh" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="refreshedBy" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="refreshedDate" type="xsd:double" use="optional"/>
+ <xsd:attribute name="refreshedDateIso" type="xsd:dateTime" use="optional"/>
+ <xsd:attribute name="backgroundQuery" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="missingItemsLimit" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="createdVersion" type="xsd:unsignedByte" use="optional" default="0"/>
+ <xsd:attribute name="refreshedVersion" type="xsd:unsignedByte" use="optional" default="0"/>
+ <xsd:attribute name="minRefreshableVersion" type="xsd:unsignedByte" use="optional" default="0"/>
+ <xsd:attribute name="recordCount" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="upgradeOnRefresh" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="tupleCache" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="supportSubquery" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="supportAdvancedDrill" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CacheFields">
+ <xsd:sequence>
+ <xsd:element name="cacheField" type="CT_CacheField" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CacheField">
+ <xsd:sequence>
+ <xsd:element name="sharedItems" type="CT_SharedItems" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="fieldGroup" minOccurs="0" type="CT_FieldGroup"/>
+ <xsd:element name="mpMap" minOccurs="0" maxOccurs="unbounded" type="CT_X"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="caption" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="propertyName" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="serverField" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="uniqueList" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/>
+ <xsd:attribute name="formula" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="sqlType" type="xsd:int" use="optional" default="0"/>
+ <xsd:attribute name="hierarchy" type="xsd:int" use="optional" default="0"/>
+ <xsd:attribute name="level" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="databaseField" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="mappingCount" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="memberPropertyField" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CacheSource">
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="worksheetSource" type="CT_WorksheetSource" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="consolidation" type="CT_Consolidation" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:attribute name="type" type="ST_SourceType" use="required"/>
+ <xsd:attribute name="connectionId" type="xsd:unsignedInt" default="0" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SourceType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="worksheet"/>
+ <xsd:enumeration value="external"/>
+ <xsd:enumeration value="consolidation"/>
+ <xsd:enumeration value="scenario"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_WorksheetSource">
+ <xsd:attribute name="ref" type="ST_Ref" use="optional"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="sheet" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Consolidation">
+ <xsd:sequence>
+ <xsd:element name="pages" type="CT_Pages" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rangeSets" type="CT_RangeSets" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="autoPage" type="xsd:boolean" default="true" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Pages">
+ <xsd:sequence>
+ <xsd:element name="page" type="CT_PCDSCPage" minOccurs="1" maxOccurs="4"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PCDSCPage">
+ <xsd:sequence>
+ <xsd:element name="pageItem" type="CT_PageItem" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageItem">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RangeSets">
+ <xsd:sequence>
+ <xsd:element name="rangeSet" type="CT_RangeSet" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RangeSet">
+ <xsd:attribute name="i1" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="i2" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="i3" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="i4" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="ref" type="ST_Ref" use="optional"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="sheet" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SharedItems">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="m" type="CT_Missing" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="n" type="CT_Number" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="b" type="CT_Boolean" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="e" type="CT_Error" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="s" type="CT_String" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="d" type="CT_DateTime" minOccurs="1" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:attribute name="containsSemiMixedTypes" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="containsNonDate" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="containsDate" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="containsString" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="containsBlank" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="containsMixedTypes" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="containsNumber" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="containsInteger" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="minValue" type="xsd:double" use="optional"/>
+ <xsd:attribute name="maxValue" type="xsd:double" use="optional"/>
+ <xsd:attribute name="minDate" type="xsd:dateTime" use="optional"/>
+ <xsd:attribute name="maxDate" type="xsd:dateTime" use="optional"/>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="longText" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Missing">
+ <xsd:sequence>
+ <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/>
+ <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/>
+ </xsd:sequence>
+ <xsd:attribute name="u" type="xsd:boolean"/>
+ <xsd:attribute name="f" type="xsd:boolean"/>
+ <xsd:attribute name="c" type="s:ST_Xstring"/>
+ <xsd:attribute name="cp" type="xsd:unsignedInt"/>
+ <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Number">
+ <xsd:sequence>
+ <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/>
+ <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/>
+ </xsd:sequence>
+ <xsd:attribute name="v" use="required" type="xsd:double"/>
+ <xsd:attribute name="u" type="xsd:boolean"/>
+ <xsd:attribute name="f" type="xsd:boolean"/>
+ <xsd:attribute name="c" type="s:ST_Xstring"/>
+ <xsd:attribute name="cp" type="xsd:unsignedInt"/>
+ <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Boolean">
+ <xsd:sequence>
+ <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/>
+ </xsd:sequence>
+ <xsd:attribute name="v" use="required" type="xsd:boolean"/>
+ <xsd:attribute name="u" type="xsd:boolean"/>
+ <xsd:attribute name="f" type="xsd:boolean"/>
+ <xsd:attribute name="c" type="s:ST_Xstring"/>
+ <xsd:attribute name="cp" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Error">
+ <xsd:sequence>
+ <xsd:element name="tpls" minOccurs="0" type="CT_Tuples"/>
+ <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/>
+ </xsd:sequence>
+ <xsd:attribute name="v" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="u" type="xsd:boolean"/>
+ <xsd:attribute name="f" type="xsd:boolean"/>
+ <xsd:attribute name="c" type="s:ST_Xstring"/>
+ <xsd:attribute name="cp" type="xsd:unsignedInt"/>
+ <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_String">
+ <xsd:sequence>
+ <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/>
+ <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/>
+ </xsd:sequence>
+ <xsd:attribute name="v" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="u" type="xsd:boolean"/>
+ <xsd:attribute name="f" type="xsd:boolean"/>
+ <xsd:attribute name="c" type="s:ST_Xstring"/>
+ <xsd:attribute name="cp" type="xsd:unsignedInt"/>
+ <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DateTime">
+ <xsd:sequence>
+ <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/>
+ </xsd:sequence>
+ <xsd:attribute name="v" use="required" type="xsd:dateTime"/>
+ <xsd:attribute name="u" type="xsd:boolean"/>
+ <xsd:attribute name="f" type="xsd:boolean"/>
+ <xsd:attribute name="c" type="s:ST_Xstring"/>
+ <xsd:attribute name="cp" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FieldGroup">
+ <xsd:sequence>
+ <xsd:element name="rangePr" minOccurs="0" type="CT_RangePr"/>
+ <xsd:element name="discretePr" minOccurs="0" type="CT_DiscretePr"/>
+ <xsd:element name="groupItems" minOccurs="0" type="CT_GroupItems"/>
+ </xsd:sequence>
+ <xsd:attribute name="par" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="base" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RangePr">
+ <xsd:attribute name="autoStart" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="autoEnd" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="groupBy" type="ST_GroupBy" default="range"/>
+ <xsd:attribute name="startNum" type="xsd:double"/>
+ <xsd:attribute name="endNum" type="xsd:double"/>
+ <xsd:attribute name="startDate" type="xsd:dateTime"/>
+ <xsd:attribute name="endDate" type="xsd:dateTime"/>
+ <xsd:attribute name="groupInterval" type="xsd:double" default="1"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_GroupBy">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="range"/>
+ <xsd:enumeration value="seconds"/>
+ <xsd:enumeration value="minutes"/>
+ <xsd:enumeration value="hours"/>
+ <xsd:enumeration value="days"/>
+ <xsd:enumeration value="months"/>
+ <xsd:enumeration value="quarters"/>
+ <xsd:enumeration value="years"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DiscretePr">
+ <xsd:sequence>
+ <xsd:element name="x" maxOccurs="unbounded" type="CT_Index"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupItems">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="m" type="CT_Missing"/>
+ <xsd:element name="n" type="CT_Number"/>
+ <xsd:element name="b" type="CT_Boolean"/>
+ <xsd:element name="e" type="CT_Error"/>
+ <xsd:element name="s" type="CT_String"/>
+ <xsd:element name="d" type="CT_DateTime"/>
+ </xsd:choice>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotCacheRecords">
+ <xsd:sequence>
+ <xsd:element name="r" minOccurs="0" maxOccurs="unbounded" type="CT_Record"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Record">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="m" type="CT_Missing"/>
+ <xsd:element name="n" type="CT_Number"/>
+ <xsd:element name="b" type="CT_Boolean"/>
+ <xsd:element name="e" type="CT_Error"/>
+ <xsd:element name="s" type="CT_String"/>
+ <xsd:element name="d" type="CT_DateTime"/>
+ <xsd:element name="x" type="CT_Index"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PCDKPIs">
+ <xsd:sequence>
+ <xsd:element name="kpi" minOccurs="0" maxOccurs="unbounded" type="CT_PCDKPI"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PCDKPI">
+ <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="caption" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="displayFolder" type="s:ST_Xstring"/>
+ <xsd:attribute name="measureGroup" type="s:ST_Xstring"/>
+ <xsd:attribute name="parent" type="s:ST_Xstring"/>
+ <xsd:attribute name="value" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="goal" type="s:ST_Xstring"/>
+ <xsd:attribute name="status" type="s:ST_Xstring"/>
+ <xsd:attribute name="trend" type="s:ST_Xstring"/>
+ <xsd:attribute name="weight" type="s:ST_Xstring"/>
+ <xsd:attribute name="time" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CacheHierarchies">
+ <xsd:sequence>
+ <xsd:element name="cacheHierarchy" minOccurs="0" maxOccurs="unbounded"
+ type="CT_CacheHierarchy"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CacheHierarchy">
+ <xsd:sequence>
+ <xsd:element name="fieldsUsage" minOccurs="0" type="CT_FieldsUsage"/>
+ <xsd:element name="groupLevels" minOccurs="0" type="CT_GroupLevels"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="caption" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="measure" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="set" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="parentSet" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="iconSet" type="xsd:int" default="0"/>
+ <xsd:attribute name="attribute" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="time" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="keyAttribute" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="defaultMemberUniqueName" type="s:ST_Xstring"/>
+ <xsd:attribute name="allUniqueName" type="s:ST_Xstring"/>
+ <xsd:attribute name="allCaption" type="s:ST_Xstring"/>
+ <xsd:attribute name="dimensionUniqueName" type="s:ST_Xstring"/>
+ <xsd:attribute name="displayFolder" type="s:ST_Xstring"/>
+ <xsd:attribute name="measureGroup" type="s:ST_Xstring"/>
+ <xsd:attribute name="measures" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="count" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="oneField" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="memberValueDatatype" use="optional" type="xsd:unsignedShort"/>
+ <xsd:attribute name="unbalanced" use="optional" type="xsd:boolean"/>
+ <xsd:attribute name="unbalancedGroup" use="optional" type="xsd:boolean"/>
+ <xsd:attribute name="hidden" type="xsd:boolean" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FieldsUsage">
+ <xsd:sequence>
+ <xsd:element name="fieldUsage" minOccurs="0" maxOccurs="unbounded" type="CT_FieldUsage"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FieldUsage">
+ <xsd:attribute name="x" use="required" type="xsd:int"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupLevels">
+ <xsd:sequence>
+ <xsd:element name="groupLevel" maxOccurs="unbounded" type="CT_GroupLevel"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupLevel">
+ <xsd:sequence>
+ <xsd:element name="groups" minOccurs="0" type="CT_Groups"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="user" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="customRollUp" type="xsd:boolean" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Groups">
+ <xsd:sequence>
+ <xsd:element name="group" maxOccurs="unbounded" type="CT_LevelGroup"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LevelGroup">
+ <xsd:sequence>
+ <xsd:element name="groupMembers" type="CT_GroupMembers"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="uniqueParent" type="s:ST_Xstring"/>
+ <xsd:attribute name="id" type="xsd:int"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupMembers">
+ <xsd:sequence>
+ <xsd:element name="groupMember" maxOccurs="unbounded" type="CT_GroupMember"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GroupMember">
+ <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="group" type="xsd:boolean" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TupleCache">
+ <xsd:sequence>
+ <xsd:element name="entries" minOccurs="0" type="CT_PCDSDTCEntries"/>
+ <xsd:element name="sets" minOccurs="0" type="CT_Sets"/>
+ <xsd:element name="queryCache" minOccurs="0" type="CT_QueryCache"/>
+ <xsd:element name="serverFormats" minOccurs="0" maxOccurs="1" type="CT_ServerFormats"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ServerFormat">
+ <xsd:attribute name="culture" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="format" use="optional" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ServerFormats">
+ <xsd:sequence>
+ <xsd:element name="serverFormat" type="CT_ServerFormat" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PCDSDTCEntries">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="m" type="CT_Missing"/>
+ <xsd:element name="n" type="CT_Number"/>
+ <xsd:element name="e" type="CT_Error"/>
+ <xsd:element name="s" type="CT_String"/>
+ </xsd:choice>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Tuples">
+ <xsd:sequence>
+ <xsd:element name="tpl" type="CT_Tuple" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="c" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Tuple">
+ <xsd:attribute name="fld" type="xsd:unsignedInt"/>
+ <xsd:attribute name="hier" type="xsd:unsignedInt"/>
+ <xsd:attribute name="item" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Sets">
+ <xsd:sequence>
+ <xsd:element name="set" maxOccurs="unbounded" type="CT_Set"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Set">
+ <xsd:sequence>
+ <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/>
+ <xsd:element name="sortByTuple" minOccurs="0" type="CT_Tuples"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ <xsd:attribute name="maxRank" use="required" type="xsd:int"/>
+ <xsd:attribute name="setDefinition" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="sortType" type="ST_SortType" default="none"/>
+ <xsd:attribute name="queryFailed" type="xsd:boolean" default="false"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SortType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="ascending"/>
+ <xsd:enumeration value="descending"/>
+ <xsd:enumeration value="ascendingAlpha"/>
+ <xsd:enumeration value="descendingAlpha"/>
+ <xsd:enumeration value="ascendingNatural"/>
+ <xsd:enumeration value="descendingNatural"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_QueryCache">
+ <xsd:sequence>
+ <xsd:element name="query" maxOccurs="unbounded" type="CT_Query"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Query">
+ <xsd:sequence>
+ <xsd:element name="tpls" minOccurs="0" type="CT_Tuples"/>
+ </xsd:sequence>
+ <xsd:attribute name="mdx" use="required" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CalculatedItems">
+ <xsd:sequence>
+ <xsd:element name="calculatedItem" maxOccurs="unbounded" type="CT_CalculatedItem"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CalculatedItem">
+ <xsd:sequence>
+ <xsd:element name="pivotArea" type="CT_PivotArea"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="field" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="formula" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CalculatedMembers">
+ <xsd:sequence>
+ <xsd:element name="calculatedMember" maxOccurs="unbounded" type="CT_CalculatedMember"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CalculatedMember">
+ <xsd:sequence minOccurs="0">
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="mdx" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="memberName" type="s:ST_Xstring"/>
+ <xsd:attribute name="hierarchy" type="s:ST_Xstring"/>
+ <xsd:attribute name="parent" type="s:ST_Xstring"/>
+ <xsd:attribute name="solveOrder" type="xsd:int" default="0"/>
+ <xsd:attribute name="set" type="xsd:boolean" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_pivotTableDefinition">
+ <xsd:sequence>
+ <xsd:element name="location" type="CT_Location"/>
+ <xsd:element name="pivotFields" type="CT_PivotFields" minOccurs="0"/>
+ <xsd:element name="rowFields" type="CT_RowFields" minOccurs="0"/>
+ <xsd:element name="rowItems" type="CT_rowItems" minOccurs="0"/>
+ <xsd:element name="colFields" type="CT_ColFields" minOccurs="0"/>
+ <xsd:element name="colItems" type="CT_colItems" minOccurs="0"/>
+ <xsd:element name="pageFields" type="CT_PageFields" minOccurs="0"/>
+ <xsd:element name="dataFields" type="CT_DataFields" minOccurs="0"/>
+ <xsd:element name="formats" type="CT_Formats" minOccurs="0"/>
+ <xsd:element name="conditionalFormats" type="CT_ConditionalFormats" minOccurs="0"/>
+ <xsd:element name="chartFormats" type="CT_ChartFormats" minOccurs="0"/>
+ <xsd:element name="pivotHierarchies" type="CT_PivotHierarchies" minOccurs="0"/>
+ <xsd:element name="pivotTableStyleInfo" minOccurs="0" maxOccurs="1" type="CT_PivotTableStyle"/>
+ <xsd:element name="filters" minOccurs="0" maxOccurs="1" type="CT_PivotFilters"/>
+ <xsd:element name="rowHierarchiesUsage" type="CT_RowHierarchiesUsage" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="colHierarchiesUsage" type="CT_ColHierarchiesUsage" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="cacheId" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="dataOnRows" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="dataPosition" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attributeGroup ref="AG_AutoFormat"/>
+ <xsd:attribute name="dataCaption" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="grandTotalCaption" type="s:ST_Xstring"/>
+ <xsd:attribute name="errorCaption" type="s:ST_Xstring"/>
+ <xsd:attribute name="showError" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="missingCaption" type="s:ST_Xstring"/>
+ <xsd:attribute name="showMissing" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="pageStyle" type="s:ST_Xstring"/>
+ <xsd:attribute name="pivotTableStyle" type="s:ST_Xstring"/>
+ <xsd:attribute name="vacatedStyle" type="s:ST_Xstring"/>
+ <xsd:attribute name="tag" type="s:ST_Xstring"/>
+ <xsd:attribute name="updatedVersion" type="xsd:unsignedByte" default="0"/>
+ <xsd:attribute name="minRefreshableVersion" type="xsd:unsignedByte" default="0"/>
+ <xsd:attribute name="asteriskTotals" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="showItems" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="editData" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="disableFieldList" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="showCalcMbrs" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="visualTotals" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="showMultipleLabel" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="showDataDropDown" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="showDrill" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="printDrill" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="showMemberPropertyTips" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="showDataTips" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="enableWizard" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="enableDrill" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="enableFieldProperties" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="preserveFormatting" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="useAutoFormatting" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="pageWrap" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="pageOverThenDown" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="subtotalHiddenItems" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="rowGrandTotals" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="colGrandTotals" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="fieldPrintTitles" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="itemPrintTitles" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="mergeItem" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="showDropZones" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="createdVersion" type="xsd:unsignedByte" default="0"/>
+ <xsd:attribute name="indent" type="xsd:unsignedInt" default="1"/>
+ <xsd:attribute name="showEmptyRow" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="showEmptyCol" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="showHeaders" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="compact" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="outline" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="outlineData" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="compactData" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="published" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="gridDropZones" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="immersive" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="multipleFieldFilters" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="chartFormat" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="rowHeaderCaption" type="s:ST_Xstring"/>
+ <xsd:attribute name="colHeaderCaption" type="s:ST_Xstring"/>
+ <xsd:attribute name="fieldListSortAscending" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="mdxSubqueries" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="customListSort" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Location">
+ <xsd:attribute name="ref" use="required" type="ST_Ref"/>
+ <xsd:attribute name="firstHeaderRow" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="firstDataRow" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="firstDataCol" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="rowPageCount" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="colPageCount" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotFields">
+ <xsd:sequence>
+ <xsd:element name="pivotField" maxOccurs="unbounded" type="CT_PivotField"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotField">
+ <xsd:sequence>
+ <xsd:element name="items" minOccurs="0" type="CT_Items"/>
+ <xsd:element name="autoSortScope" minOccurs="0" type="CT_AutoSortScope"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="s:ST_Xstring"/>
+ <xsd:attribute name="axis" use="optional" type="ST_Axis"/>
+ <xsd:attribute name="dataField" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="subtotalCaption" type="s:ST_Xstring"/>
+ <xsd:attribute name="showDropDowns" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="hiddenLevel" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="uniqueMemberProperty" type="s:ST_Xstring"/>
+ <xsd:attribute name="compact" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="allDrilled" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/>
+ <xsd:attribute name="outline" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="subtotalTop" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="dragToRow" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="dragToCol" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="multipleItemSelectionAllowed" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="dragToPage" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="dragToData" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="dragOff" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="showAll" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="insertBlankRow" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="serverField" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="insertPageBreak" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="autoShow" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="topAutoShow" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="hideNewItems" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="measureFilter" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="includeNewItemsInFilter" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="itemPageCount" type="xsd:unsignedInt" default="10"/>
+ <xsd:attribute name="sortType" type="ST_FieldSortType" default="manual"/>
+ <xsd:attribute name="dataSourceSort" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="nonAutoSortDefault" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="rankBy" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="defaultSubtotal" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="sumSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="countASubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="avgSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="maxSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="minSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="productSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="countSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="stdDevSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="stdDevPSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="varSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="varPSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="showPropCell" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showPropTip" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showPropAsCaption" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="defaultAttributeDrillState" type="xsd:boolean" use="optional"
+ default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AutoSortScope">
+ <xsd:sequence>
+ <xsd:element name="pivotArea" type="CT_PivotArea"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Items">
+ <xsd:sequence>
+ <xsd:element name="item" maxOccurs="unbounded" type="CT_Item"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Item">
+ <xsd:attribute name="n" type="s:ST_Xstring"/>
+ <xsd:attribute name="t" type="ST_ItemType" default="data"/>
+ <xsd:attribute name="h" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="s" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="sd" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="f" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="m" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="c" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="x" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="d" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="e" type="xsd:boolean" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageFields">
+ <xsd:sequence>
+ <xsd:element name="pageField" maxOccurs="unbounded" type="CT_PageField"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageField">
+ <xsd:sequence minOccurs="0">
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="fld" use="required" type="xsd:int"/>
+ <xsd:attribute name="item" use="optional" type="xsd:unsignedInt"/>
+ <xsd:attribute name="hier" type="xsd:int"/>
+ <xsd:attribute name="name" type="s:ST_Xstring"/>
+ <xsd:attribute name="cap" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataFields">
+ <xsd:sequence>
+ <xsd:element name="dataField" maxOccurs="unbounded" type="CT_DataField"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataField">
+ <xsd:sequence>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" use="optional" type="s:ST_Xstring"/>
+ <xsd:attribute name="fld" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="subtotal" type="ST_DataConsolidateFunction" default="sum"/>
+ <xsd:attribute name="showDataAs" type="ST_ShowDataAs" default="normal"/>
+ <xsd:attribute name="baseField" type="xsd:int" default="-1"/>
+ <xsd:attribute name="baseItem" type="xsd:unsignedInt" default="1048832"/>
+ <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_rowItems">
+ <xsd:sequence>
+ <xsd:element name="i" maxOccurs="unbounded" type="CT_I"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_colItems">
+ <xsd:sequence>
+ <xsd:element name="i" maxOccurs="unbounded" type="CT_I"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_I">
+ <xsd:sequence>
+ <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/>
+ </xsd:sequence>
+ <xsd:attribute name="t" type="ST_ItemType" default="data"/>
+ <xsd:attribute name="r" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="i" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_X">
+ <xsd:attribute name="v" type="xsd:int" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RowFields">
+ <xsd:sequence>
+ <xsd:element name="field" maxOccurs="unbounded" type="CT_Field"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColFields">
+ <xsd:sequence>
+ <xsd:element name="field" maxOccurs="unbounded" type="CT_Field"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Field">
+ <xsd:attribute name="x" type="xsd:int" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Formats">
+ <xsd:sequence>
+ <xsd:element name="format" maxOccurs="unbounded" type="CT_Format"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Format">
+ <xsd:sequence>
+ <xsd:element name="pivotArea" type="CT_PivotArea"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="action" type="ST_FormatAction" default="formatting"/>
+ <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ConditionalFormats">
+ <xsd:sequence>
+ <xsd:element name="conditionalFormat" maxOccurs="unbounded" type="CT_ConditionalFormat"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ConditionalFormat">
+ <xsd:sequence>
+ <xsd:element name="pivotAreas" type="CT_PivotAreas"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="scope" type="ST_Scope" default="selection"/>
+ <xsd:attribute name="type" type="ST_Type" default="none"/>
+ <xsd:attribute name="priority" use="required" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotAreas">
+ <xsd:sequence>
+ <xsd:element name="pivotArea" minOccurs="0" maxOccurs="unbounded" type="CT_PivotArea"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Scope">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="selection"/>
+ <xsd:enumeration value="data"/>
+ <xsd:enumeration value="field"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Type">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="all"/>
+ <xsd:enumeration value="row"/>
+ <xsd:enumeration value="column"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ChartFormats">
+ <xsd:sequence>
+ <xsd:element name="chartFormat" maxOccurs="unbounded" type="CT_ChartFormat"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ChartFormat">
+ <xsd:sequence>
+ <xsd:element name="pivotArea" type="CT_PivotArea"/>
+ </xsd:sequence>
+ <xsd:attribute name="chart" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="format" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="series" type="xsd:boolean" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotHierarchies">
+ <xsd:sequence>
+ <xsd:element name="pivotHierarchy" maxOccurs="unbounded" type="CT_PivotHierarchy"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotHierarchy">
+ <xsd:sequence>
+ <xsd:element name="mps" minOccurs="0" type="CT_MemberProperties"/>
+ <xsd:element name="members" minOccurs="0" maxOccurs="unbounded" type="CT_Members"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="outline" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="multipleItemSelectionAllowed" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="subtotalTop" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="showInFieldList" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="dragToRow" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="dragToCol" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="dragToPage" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="dragToData" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="dragOff" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="includeNewItemsInFilter" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="caption" type="s:ST_Xstring" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RowHierarchiesUsage">
+ <xsd:sequence>
+ <xsd:element name="rowHierarchyUsage" minOccurs="1" maxOccurs="unbounded"
+ type="CT_HierarchyUsage"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColHierarchiesUsage">
+ <xsd:sequence>
+ <xsd:element name="colHierarchyUsage" minOccurs="1" maxOccurs="unbounded"
+ type="CT_HierarchyUsage"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_HierarchyUsage">
+ <xsd:attribute name="hierarchyUsage" type="xsd:int" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MemberProperties">
+ <xsd:sequence>
+ <xsd:element name="mp" maxOccurs="unbounded" type="CT_MemberProperty"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MemberProperty">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="showCell" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showTip" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showAsCaption" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="nameLen" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="pPos" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="pLen" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="level" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="field" use="required" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Members">
+ <xsd:sequence>
+ <xsd:element name="member" maxOccurs="unbounded" type="CT_Member"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ <xsd:attribute name="level" use="optional" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Member">
+ <xsd:attribute name="name" use="required" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Dimensions">
+ <xsd:sequence>
+ <xsd:element name="dimension" minOccurs="0" maxOccurs="unbounded" type="CT_PivotDimension"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotDimension">
+ <xsd:attribute name="measure" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="name" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MeasureGroups">
+ <xsd:sequence>
+ <xsd:element name="measureGroup" minOccurs="0" maxOccurs="unbounded" type="CT_MeasureGroup"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MeasureDimensionMaps">
+ <xsd:sequence>
+ <xsd:element name="map" minOccurs="0" maxOccurs="unbounded" type="CT_MeasureDimensionMap"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MeasureGroup">
+ <xsd:attribute name="name" use="required" type="s:ST_Xstring"/>
+ <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MeasureDimensionMap">
+ <xsd:attribute name="measureGroup" use="optional" type="xsd:unsignedInt"/>
+ <xsd:attribute name="dimension" use="optional" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotTableStyle">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="showRowHeaders" type="xsd:boolean"/>
+ <xsd:attribute name="showColHeaders" type="xsd:boolean"/>
+ <xsd:attribute name="showRowStripes" type="xsd:boolean"/>
+ <xsd:attribute name="showColStripes" type="xsd:boolean"/>
+ <xsd:attribute name="showLastColumn" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotFilters">
+ <xsd:sequence>
+ <xsd:element name="filter" minOccurs="0" maxOccurs="unbounded" type="CT_PivotFilter"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotFilter">
+ <xsd:sequence>
+ <xsd:element name="autoFilter" minOccurs="1" maxOccurs="1" type="CT_AutoFilter"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="fld" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="mpFld" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="type" use="required" type="ST_PivotFilterType"/>
+ <xsd:attribute name="evalOrder" use="optional" type="xsd:int" default="0"/>
+ <xsd:attribute name="id" use="required" type="xsd:unsignedInt"/>
+ <xsd:attribute name="iMeasureHier" use="optional" type="xsd:unsignedInt"/>
+ <xsd:attribute name="iMeasureFld" use="optional" type="xsd:unsignedInt"/>
+ <xsd:attribute name="name" type="s:ST_Xstring"/>
+ <xsd:attribute name="description" type="s:ST_Xstring"/>
+ <xsd:attribute name="stringValue1" type="s:ST_Xstring"/>
+ <xsd:attribute name="stringValue2" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ShowDataAs">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="normal"/>
+ <xsd:enumeration value="difference"/>
+ <xsd:enumeration value="percent"/>
+ <xsd:enumeration value="percentDiff"/>
+ <xsd:enumeration value="runTotal"/>
+ <xsd:enumeration value="percentOfRow"/>
+ <xsd:enumeration value="percentOfCol"/>
+ <xsd:enumeration value="percentOfTotal"/>
+ <xsd:enumeration value="index"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ItemType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="data"/>
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="sum"/>
+ <xsd:enumeration value="countA"/>
+ <xsd:enumeration value="avg"/>
+ <xsd:enumeration value="max"/>
+ <xsd:enumeration value="min"/>
+ <xsd:enumeration value="product"/>
+ <xsd:enumeration value="count"/>
+ <xsd:enumeration value="stdDev"/>
+ <xsd:enumeration value="stdDevP"/>
+ <xsd:enumeration value="var"/>
+ <xsd:enumeration value="varP"/>
+ <xsd:enumeration value="grand"/>
+ <xsd:enumeration value="blank"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FormatAction">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="blank"/>
+ <xsd:enumeration value="formatting"/>
+ <xsd:enumeration value="drill"/>
+ <xsd:enumeration value="formula"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FieldSortType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="manual"/>
+ <xsd:enumeration value="ascending"/>
+ <xsd:enumeration value="descending"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PivotFilterType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="unknown"/>
+ <xsd:enumeration value="count"/>
+ <xsd:enumeration value="percent"/>
+ <xsd:enumeration value="sum"/>
+ <xsd:enumeration value="captionEqual"/>
+ <xsd:enumeration value="captionNotEqual"/>
+ <xsd:enumeration value="captionBeginsWith"/>
+ <xsd:enumeration value="captionNotBeginsWith"/>
+ <xsd:enumeration value="captionEndsWith"/>
+ <xsd:enumeration value="captionNotEndsWith"/>
+ <xsd:enumeration value="captionContains"/>
+ <xsd:enumeration value="captionNotContains"/>
+ <xsd:enumeration value="captionGreaterThan"/>
+ <xsd:enumeration value="captionGreaterThanOrEqual"/>
+ <xsd:enumeration value="captionLessThan"/>
+ <xsd:enumeration value="captionLessThanOrEqual"/>
+ <xsd:enumeration value="captionBetween"/>
+ <xsd:enumeration value="captionNotBetween"/>
+ <xsd:enumeration value="valueEqual"/>
+ <xsd:enumeration value="valueNotEqual"/>
+ <xsd:enumeration value="valueGreaterThan"/>
+ <xsd:enumeration value="valueGreaterThanOrEqual"/>
+ <xsd:enumeration value="valueLessThan"/>
+ <xsd:enumeration value="valueLessThanOrEqual"/>
+ <xsd:enumeration value="valueBetween"/>
+ <xsd:enumeration value="valueNotBetween"/>
+ <xsd:enumeration value="dateEqual"/>
+ <xsd:enumeration value="dateNotEqual"/>
+ <xsd:enumeration value="dateOlderThan"/>
+ <xsd:enumeration value="dateOlderThanOrEqual"/>
+ <xsd:enumeration value="dateNewerThan"/>
+ <xsd:enumeration value="dateNewerThanOrEqual"/>
+ <xsd:enumeration value="dateBetween"/>
+ <xsd:enumeration value="dateNotBetween"/>
+ <xsd:enumeration value="tomorrow"/>
+ <xsd:enumeration value="today"/>
+ <xsd:enumeration value="yesterday"/>
+ <xsd:enumeration value="nextWeek"/>
+ <xsd:enumeration value="thisWeek"/>
+ <xsd:enumeration value="lastWeek"/>
+ <xsd:enumeration value="nextMonth"/>
+ <xsd:enumeration value="thisMonth"/>
+ <xsd:enumeration value="lastMonth"/>
+ <xsd:enumeration value="nextQuarter"/>
+ <xsd:enumeration value="thisQuarter"/>
+ <xsd:enumeration value="lastQuarter"/>
+ <xsd:enumeration value="nextYear"/>
+ <xsd:enumeration value="thisYear"/>
+ <xsd:enumeration value="lastYear"/>
+ <xsd:enumeration value="yearToDate"/>
+ <xsd:enumeration value="Q1"/>
+ <xsd:enumeration value="Q2"/>
+ <xsd:enumeration value="Q3"/>
+ <xsd:enumeration value="Q4"/>
+ <xsd:enumeration value="M1"/>
+ <xsd:enumeration value="M2"/>
+ <xsd:enumeration value="M3"/>
+ <xsd:enumeration value="M4"/>
+ <xsd:enumeration value="M5"/>
+ <xsd:enumeration value="M6"/>
+ <xsd:enumeration value="M7"/>
+ <xsd:enumeration value="M8"/>
+ <xsd:enumeration value="M9"/>
+ <xsd:enumeration value="M10"/>
+ <xsd:enumeration value="M11"/>
+ <xsd:enumeration value="M12"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PivotArea">
+ <xsd:sequence>
+ <xsd:element name="references" minOccurs="0" type="CT_PivotAreaReferences"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="field" use="optional" type="xsd:int"/>
+ <xsd:attribute name="type" type="ST_PivotAreaType" default="normal"/>
+ <xsd:attribute name="dataOnly" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="labelOnly" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="grandRow" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="grandCol" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="cacheIndex" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="outline" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="offset" type="ST_Ref"/>
+ <xsd:attribute name="collapsedLevelsAreSubtotals" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="axis" type="ST_Axis" use="optional"/>
+ <xsd:attribute name="fieldPosition" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PivotAreaType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="normal"/>
+ <xsd:enumeration value="data"/>
+ <xsd:enumeration value="all"/>
+ <xsd:enumeration value="origin"/>
+ <xsd:enumeration value="button"/>
+ <xsd:enumeration value="topEnd"/>
+ <xsd:enumeration value="topRight"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PivotAreaReferences">
+ <xsd:sequence>
+ <xsd:element name="reference" maxOccurs="unbounded" type="CT_PivotAreaReference"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotAreaReference">
+ <xsd:sequence>
+ <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_Index"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="field" use="optional" type="xsd:unsignedInt"/>
+ <xsd:attribute name="count" type="xsd:unsignedInt"/>
+ <xsd:attribute name="selected" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="byPosition" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="relative" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="defaultSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="sumSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="countASubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="avgSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="maxSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="minSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="productSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="countSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="stdDevSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="stdDevPSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="varSubtotal" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="varPSubtotal" type="xsd:boolean" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Index">
+ <xsd:attribute name="v" use="required" type="xsd:unsignedInt"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Axis">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="axisRow"/>
+ <xsd:enumeration value="axisCol"/>
+ <xsd:enumeration value="axisPage"/>
+ <xsd:enumeration value="axisValues"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="queryTable" type="CT_QueryTable"/>
+ <xsd:complexType name="CT_QueryTable">
+ <xsd:sequence>
+ <xsd:element name="queryTableRefresh" type="CT_QueryTableRefresh" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="headers" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="rowNumbers" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="disableRefresh" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="backgroundRefresh" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="firstBackgroundRefresh" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="refreshOnLoad" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="growShrinkType" type="ST_GrowShrinkType" use="optional"
+ default="insertDelete"/>
+ <xsd:attribute name="fillFormulas" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="removeDataOnSave" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="disableEdit" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="preserveFormatting" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="adjustColumnWidth" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="intermediate" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="connectionId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attributeGroup ref="AG_AutoFormat"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_QueryTableRefresh">
+ <xsd:sequence>
+ <xsd:element name="queryTableFields" type="CT_QueryTableFields" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="queryTableDeletedFields" type="CT_QueryTableDeletedFields" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="sortState" minOccurs="0" maxOccurs="1" type="CT_SortState"/>
+ <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="preserveSortFilterLayout" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="fieldIdWrapped" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="headersInLastRefresh" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="minimumVersion" type="xsd:unsignedByte" use="optional" default="0"/>
+ <xsd:attribute name="nextId" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="unboundColumnsLeft" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="unboundColumnsRight" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_QueryTableDeletedFields">
+ <xsd:sequence>
+ <xsd:element name="deletedField" type="CT_DeletedField" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DeletedField">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_QueryTableFields">
+ <xsd:sequence>
+ <xsd:element name="queryTableField" type="CT_QueryTableField" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_QueryTableField">
+ <xsd:sequence minOccurs="0">
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="dataBound" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="rowNumbers" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="fillFormulas" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="clipped" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="tableColumnId" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_GrowShrinkType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="insertDelete"/>
+ <xsd:enumeration value="insertClear"/>
+ <xsd:enumeration value="overwriteClear"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="sst" type="CT_Sst"/>
+ <xsd:complexType name="CT_Sst">
+ <xsd:sequence>
+ <xsd:element name="si" type="CT_Rst" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="uniqueCount" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PhoneticType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="halfwidthKatakana"/>
+ <xsd:enumeration value="fullwidthKatakana"/>
+ <xsd:enumeration value="Hiragana"/>
+ <xsd:enumeration value="noConversion"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PhoneticAlignment">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="noControl"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="distributed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PhoneticRun">
+ <xsd:sequence>
+ <xsd:element name="t" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="sb" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="eb" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RElt">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_RPrElt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="t" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RPrElt">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="rFont" type="CT_FontName" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="charset" type="CT_IntProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="family" type="CT_IntProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="b" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="i" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="strike" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="outline" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shadow" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="condense" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extend" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="color" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sz" type="CT_FontSize" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="u" type="CT_UnderlineProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="vertAlign" type="CT_VerticalAlignFontProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="scheme" type="CT_FontScheme" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Rst">
+ <xsd:sequence>
+ <xsd:element name="t" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="r" type="CT_RElt" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rPh" type="CT_PhoneticRun" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="phoneticPr" minOccurs="0" maxOccurs="1" type="CT_PhoneticPr"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PhoneticPr">
+ <xsd:attribute name="fontId" type="ST_FontId" use="required"/>
+ <xsd:attribute name="type" type="ST_PhoneticType" use="optional" default="fullwidthKatakana"/>
+ <xsd:attribute name="alignment" type="ST_PhoneticAlignment" use="optional" default="left"/>
+ </xsd:complexType>
+ <xsd:element name="headers" type="CT_RevisionHeaders"/>
+ <xsd:element name="revisions" type="CT_Revisions"/>
+ <xsd:complexType name="CT_RevisionHeaders">
+ <xsd:sequence>
+ <xsd:element name="header" type="CT_RevisionHeader" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="guid" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="lastGuid" type="s:ST_Guid" use="optional"/>
+ <xsd:attribute name="shared" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="diskRevisions" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="history" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="trackRevisions" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="exclusive" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="revisionId" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="version" type="xsd:int" default="1"/>
+ <xsd:attribute name="keepChangeHistory" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="protected" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="preserveHistory" type="xsd:unsignedInt" default="30"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Revisions">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="rrc" type="CT_RevisionRowColumn" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rm" type="CT_RevisionMove" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rcv" type="CT_RevisionCustomView" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rsnm" type="CT_RevisionSheetRename" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="ris" type="CT_RevisionInsertSheet" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rcc" type="CT_RevisionCellChange" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rfmt" type="CT_RevisionFormatting" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="raf" type="CT_RevisionAutoFormatting" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rdn" type="CT_RevisionDefinedName" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rcmt" type="CT_RevisionComment" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rqt" type="CT_RevisionQueryTableField" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rcft" type="CT_RevisionConflict" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:attributeGroup name="AG_RevData">
+ <xsd:attribute name="rId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="ua" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="ra" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="CT_RevisionHeader">
+ <xsd:sequence>
+ <xsd:element name="sheetIdMap" minOccurs="1" maxOccurs="1" type="CT_SheetIdMap"/>
+ <xsd:element name="reviewedList" minOccurs="0" maxOccurs="1" type="CT_ReviewedRevisions"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="guid" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="dateTime" type="xsd:dateTime" use="required"/>
+ <xsd:attribute name="maxSheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="userName" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute ref="r:id" use="required"/>
+ <xsd:attribute name="minRId" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="maxRId" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetIdMap">
+ <xsd:sequence>
+ <xsd:element name="sheetId" type="CT_SheetId" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetId">
+ <xsd:attribute name="val" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ReviewedRevisions">
+ <xsd:sequence>
+ <xsd:element name="reviewed" type="CT_Reviewed" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Reviewed">
+ <xsd:attribute name="rId" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_UndoInfo">
+ <xsd:attribute name="index" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="exp" type="ST_FormulaExpression" use="required"/>
+ <xsd:attribute name="ref3D" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="array" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="v" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="nf" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="cs" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="dr" type="ST_RefA" use="required"/>
+ <xsd:attribute name="dn" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="r" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="sId" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionRowColumn">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="undo" type="CT_UndoInfo" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rcc" type="CT_RevisionCellChange" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rfmt" type="CT_RevisionFormatting" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_RevData"/>
+ <xsd:attribute name="sId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="eol" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ <xsd:attribute name="action" type="ST_rwColActionType" use="required"/>
+ <xsd:attribute name="edge" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionMove">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="undo" type="CT_UndoInfo" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rcc" type="CT_RevisionCellChange" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="rfmt" type="CT_RevisionFormatting" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_RevData"/>
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="source" type="ST_Ref" use="required"/>
+ <xsd:attribute name="destination" type="ST_Ref" use="required"/>
+ <xsd:attribute name="sourceSheetId" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionCustomView">
+ <xsd:attribute name="guid" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="action" type="ST_RevisionAction" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionSheetRename">
+ <xsd:sequence>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_RevData"/>
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="oldName" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="newName" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionInsertSheet">
+ <xsd:attributeGroup ref="AG_RevData"/>
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="sheetPosition" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionCellChange">
+ <xsd:sequence>
+ <xsd:element name="oc" type="CT_Cell" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="nc" type="CT_Cell" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="odxf" type="CT_Dxf" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ndxf" type="CT_Dxf" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_RevData"/>
+ <xsd:attribute name="sId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="odxf" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="xfDxf" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="dxf" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/>
+ <xsd:attribute name="quotePrefix" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="oldQuotePrefix" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="ph" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="oldPh" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="endOfListFormulaUpdate" type="xsd:boolean" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionFormatting">
+ <xsd:sequence>
+ <xsd:element name="dxf" type="CT_Dxf" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="xfDxf" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="sqref" type="ST_Sqref" use="required"/>
+ <xsd:attribute name="start" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="length" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionAutoFormatting">
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attributeGroup ref="AG_AutoFormat"/>
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionComment">
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="cell" type="ST_CellRef" use="required"/>
+ <xsd:attribute name="guid" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="action" type="ST_RevisionAction" default="add"/>
+ <xsd:attribute name="alwaysShow" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="old" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="hiddenRow" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="hiddenColumn" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="author" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="oldLength" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="newLength" type="xsd:unsignedInt" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionDefinedName">
+ <xsd:sequence>
+ <xsd:element name="formula" type="ST_Formula" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="oldFormula" type="ST_Formula" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_RevData"/>
+ <xsd:attribute name="localSheetId" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="customView" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="function" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="oldFunction" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="functionGroupId" type="xsd:unsignedByte" use="optional"/>
+ <xsd:attribute name="oldFunctionGroupId" type="xsd:unsignedByte" use="optional"/>
+ <xsd:attribute name="shortcutKey" type="xsd:unsignedByte" use="optional"/>
+ <xsd:attribute name="oldShortcutKey" type="xsd:unsignedByte" use="optional"/>
+ <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="oldHidden" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="customMenu" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="oldCustomMenu" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="description" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="oldDescription" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="help" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="oldHelp" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="statusBar" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="oldStatusBar" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="oldComment" type="s:ST_Xstring" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionConflict">
+ <xsd:attributeGroup ref="AG_RevData"/>
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RevisionQueryTableField">
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ <xsd:attribute name="fieldId" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_rwColActionType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="insertRow"/>
+ <xsd:enumeration value="deleteRow"/>
+ <xsd:enumeration value="insertCol"/>
+ <xsd:enumeration value="deleteCol"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_RevisionAction">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="add"/>
+ <xsd:enumeration value="delete"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FormulaExpression">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="ref"/>
+ <xsd:enumeration value="refError"/>
+ <xsd:enumeration value="area"/>
+ <xsd:enumeration value="areaError"/>
+ <xsd:enumeration value="computedArea"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="users" type="CT_Users"/>
+ <xsd:complexType name="CT_Users">
+ <xsd:sequence>
+ <xsd:element name="userInfo" minOccurs="0" maxOccurs="256" type="CT_SharedUser"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SharedUser">
+ <xsd:sequence>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="guid" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="id" type="xsd:int" use="required"/>
+ <xsd:attribute name="dateTime" type="xsd:dateTime" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="worksheet" type="CT_Worksheet"/>
+ <xsd:element name="chartsheet" type="CT_Chartsheet"/>
+ <xsd:element name="dialogsheet" type="CT_Dialogsheet"/>
+ <xsd:complexType name="CT_Macrosheet">
+ <xsd:sequence>
+ <xsd:element name="sheetPr" type="CT_SheetPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dimension" type="CT_SheetDimension" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sheetViews" type="CT_SheetViews" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sheetFormatPr" type="CT_SheetFormatPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cols" type="CT_Cols" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="sheetData" type="CT_SheetData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="sheetProtection" type="CT_SheetProtection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sortState" type="CT_SortState" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dataConsolidate" type="CT_DataConsolidate" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="customSheetViews" type="CT_CustomSheetViews" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="phoneticPr" type="CT_PhoneticPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="conditionalFormatting" type="CT_ConditionalFormatting" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="printOptions" type="CT_PrintOptions" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rowBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="colBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="customProperties" type="CT_CustomProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="drawing" type="CT_Drawing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="legacyDrawing" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="picture" type="CT_SheetBackgroundPicture" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="oleObjects" type="CT_OleObjects" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Dialogsheet">
+ <xsd:sequence>
+ <xsd:element name="sheetPr" minOccurs="0" type="CT_SheetPr"/>
+ <xsd:element name="sheetViews" minOccurs="0" type="CT_SheetViews"/>
+ <xsd:element name="sheetFormatPr" minOccurs="0" type="CT_SheetFormatPr"/>
+ <xsd:element name="sheetProtection" type="CT_SheetProtection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="customSheetViews" minOccurs="0" type="CT_CustomSheetViews"/>
+ <xsd:element name="printOptions" minOccurs="0" type="CT_PrintOptions"/>
+ <xsd:element name="pageMargins" minOccurs="0" type="CT_PageMargins"/>
+ <xsd:element name="pageSetup" minOccurs="0" type="CT_PageSetup"/>
+ <xsd:element name="headerFooter" minOccurs="0" type="CT_HeaderFooter"/>
+ <xsd:element name="drawing" minOccurs="0" type="CT_Drawing"/>
+ <xsd:element name="legacyDrawing" minOccurs="0" type="CT_LegacyDrawing"/>
+ <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="oleObjects" type="CT_OleObjects" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Worksheet">
+ <xsd:sequence>
+ <xsd:element name="sheetPr" type="CT_SheetPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dimension" type="CT_SheetDimension" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sheetViews" type="CT_SheetViews" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sheetFormatPr" type="CT_SheetFormatPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cols" type="CT_Cols" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="sheetData" type="CT_SheetData" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="sheetCalcPr" type="CT_SheetCalcPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sheetProtection" type="CT_SheetProtection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="protectedRanges" type="CT_ProtectedRanges" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="scenarios" type="CT_Scenarios" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sortState" type="CT_SortState" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dataConsolidate" type="CT_DataConsolidate" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="customSheetViews" type="CT_CustomSheetViews" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="mergeCells" type="CT_MergeCells" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="phoneticPr" type="CT_PhoneticPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="conditionalFormatting" type="CT_ConditionalFormatting" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="dataValidations" type="CT_DataValidations" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hyperlinks" type="CT_Hyperlinks" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="printOptions" type="CT_PrintOptions" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rowBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="colBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="customProperties" type="CT_CustomProperties" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cellWatches" type="CT_CellWatches" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ignoredErrors" type="CT_IgnoredErrors" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="smartTags" type="CT_SmartTags" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="drawing" type="CT_Drawing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="legacyDrawing" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="picture" type="CT_SheetBackgroundPicture" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="oleObjects" type="CT_OleObjects" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="controls" type="CT_Controls" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="webPublishItems" type="CT_WebPublishItems" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tableParts" type="CT_TableParts" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetData">
+ <xsd:sequence>
+ <xsd:element name="row" type="CT_Row" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetCalcPr">
+ <xsd:attribute name="fullCalcOnLoad" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetFormatPr">
+ <xsd:attribute name="baseColWidth" type="xsd:unsignedInt" use="optional" default="8"/>
+ <xsd:attribute name="defaultColWidth" type="xsd:double" use="optional"/>
+ <xsd:attribute name="defaultRowHeight" type="xsd:double" use="required"/>
+ <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="zeroHeight" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="thickBottom" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="outlineLevelRow" type="xsd:unsignedByte" use="optional" default="0"/>
+ <xsd:attribute name="outlineLevelCol" type="xsd:unsignedByte" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Cols">
+ <xsd:sequence>
+ <xsd:element name="col" type="CT_Col" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Col">
+ <xsd:attribute name="min" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="max" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="width" type="xsd:double" use="optional"/>
+ <xsd:attribute name="style" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="bestFit" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="customWidth" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="phonetic" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="outlineLevel" type="xsd:unsignedByte" use="optional" default="0"/>
+ <xsd:attribute name="collapsed" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_CellSpan">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CellSpans">
+ <xsd:list itemType="ST_CellSpan"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Row">
+ <xsd:sequence>
+ <xsd:element name="c" type="CT_Cell" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="r" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="spans" type="ST_CellSpans" use="optional"/>
+ <xsd:attribute name="s" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="customFormat" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="ht" type="xsd:double" use="optional"/>
+ <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="outlineLevel" type="xsd:unsignedByte" use="optional" default="0"/>
+ <xsd:attribute name="collapsed" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="thickBot" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="ph" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Cell">
+ <xsd:sequence>
+ <xsd:element name="f" type="CT_CellFormula" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="v" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="is" type="CT_Rst" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="r" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="s" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="t" type="ST_CellType" use="optional" default="n"/>
+ <xsd:attribute name="cm" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="vm" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="ph" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_CellType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="d"/>
+ <xsd:enumeration value="n"/>
+ <xsd:enumeration value="e"/>
+ <xsd:enumeration value="s"/>
+ <xsd:enumeration value="str"/>
+ <xsd:enumeration value="inlineStr"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CellFormulaType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="normal"/>
+ <xsd:enumeration value="array"/>
+ <xsd:enumeration value="dataTable"/>
+ <xsd:enumeration value="shared"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SheetPr">
+ <xsd:sequence>
+ <xsd:element name="tabColor" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="outlinePr" type="CT_OutlinePr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageSetUpPr" type="CT_PageSetUpPr" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="syncHorizontal" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="syncVertical" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="syncRef" type="ST_Ref" use="optional"/>
+ <xsd:attribute name="transitionEvaluation" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="transitionEntry" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="published" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="codeName" type="xsd:string" use="optional"/>
+ <xsd:attribute name="filterMode" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="enableFormatConditionsCalculation" type="xsd:boolean" use="optional"
+ default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetDimension">
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetViews">
+ <xsd:sequence>
+ <xsd:element name="sheetView" type="CT_SheetView" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetView">
+ <xsd:sequence>
+ <xsd:element name="pane" type="CT_Pane" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="selection" type="CT_Selection" minOccurs="0" maxOccurs="4"/>
+ <xsd:element name="pivotSelection" type="CT_PivotSelection" minOccurs="0" maxOccurs="4"/>
+ <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="windowProtection" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showFormulas" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showGridLines" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showRowColHeaders" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showZeros" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="rightToLeft" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="tabSelected" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showRuler" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showOutlineSymbols" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="defaultGridColor" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showWhiteSpace" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="view" type="ST_SheetViewType" use="optional" default="normal"/>
+ <xsd:attribute name="topLeftCell" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="colorId" type="xsd:unsignedInt" use="optional" default="64"/>
+ <xsd:attribute name="zoomScale" type="xsd:unsignedInt" use="optional" default="100"/>
+ <xsd:attribute name="zoomScaleNormal" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="zoomScaleSheetLayoutView" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="zoomScalePageLayoutView" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="workbookViewId" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Pane">
+ <xsd:attribute name="xSplit" type="xsd:double" use="optional" default="0"/>
+ <xsd:attribute name="ySplit" type="xsd:double" use="optional" default="0"/>
+ <xsd:attribute name="topLeftCell" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="activePane" type="ST_Pane" use="optional" default="topLeft"/>
+ <xsd:attribute name="state" type="ST_PaneState" use="optional" default="split"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotSelection">
+ <xsd:sequence>
+ <xsd:element name="pivotArea" type="CT_PivotArea"/>
+ </xsd:sequence>
+ <xsd:attribute name="pane" type="ST_Pane" use="optional" default="topLeft"/>
+ <xsd:attribute name="showHeader" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="label" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="data" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="extendable" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="axis" type="ST_Axis" use="optional"/>
+ <xsd:attribute name="dimension" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="start" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="min" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="max" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="activeRow" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="activeCol" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="previousRow" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="previousCol" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute name="click" type="xsd:unsignedInt" default="0"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Selection">
+ <xsd:attribute name="pane" type="ST_Pane" use="optional" default="topLeft"/>
+ <xsd:attribute name="activeCell" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="activeCellId" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="sqref" type="ST_Sqref" use="optional" default="A1"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Pane">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="bottomRight"/>
+ <xsd:enumeration value="topRight"/>
+ <xsd:enumeration value="bottomLeft"/>
+ <xsd:enumeration value="topLeft"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PageBreak">
+ <xsd:sequence>
+ <xsd:element name="brk" type="CT_Break" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="manualBreakCount" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Break">
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="min" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="max" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="man" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pt" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SheetViewType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="normal"/>
+ <xsd:enumeration value="pageBreakPreview"/>
+ <xsd:enumeration value="pageLayout"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_OutlinePr">
+ <xsd:attribute name="applyStyles" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="summaryBelow" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="summaryRight" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showOutlineSymbols" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageSetUpPr">
+ <xsd:attribute name="autoPageBreaks" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="fitToPage" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataConsolidate">
+ <xsd:sequence>
+ <xsd:element name="dataRefs" type="CT_DataRefs" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="function" type="ST_DataConsolidateFunction" use="optional" default="sum"/>
+ <xsd:attribute name="startLabels" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="leftLabels" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="topLabels" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="link" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DataConsolidateFunction">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="average"/>
+ <xsd:enumeration value="count"/>
+ <xsd:enumeration value="countNums"/>
+ <xsd:enumeration value="max"/>
+ <xsd:enumeration value="min"/>
+ <xsd:enumeration value="product"/>
+ <xsd:enumeration value="stdDev"/>
+ <xsd:enumeration value="stdDevp"/>
+ <xsd:enumeration value="sum"/>
+ <xsd:enumeration value="var"/>
+ <xsd:enumeration value="varp"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DataRefs">
+ <xsd:sequence>
+ <xsd:element name="dataRef" type="CT_DataRef" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataRef">
+ <xsd:attribute name="ref" type="ST_Ref" use="optional"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="sheet" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MergeCells">
+ <xsd:sequence>
+ <xsd:element name="mergeCell" type="CT_MergeCell" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MergeCell">
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SmartTags">
+ <xsd:sequence>
+ <xsd:element name="cellSmartTags" type="CT_CellSmartTags" minOccurs="1" maxOccurs="unbounded"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellSmartTags">
+ <xsd:sequence>
+ <xsd:element name="cellSmartTag" type="CT_CellSmartTag" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="r" type="ST_CellRef" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellSmartTag">
+ <xsd:sequence>
+ <xsd:element name="cellSmartTagPr" minOccurs="0" maxOccurs="unbounded"
+ type="CT_CellSmartTagPr"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="deleted" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="xmlBased" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellSmartTagPr">
+ <xsd:attribute name="key" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="val" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Drawing">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LegacyDrawing">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DrawingHF">
+ <xsd:attribute ref="r:id" use="required"/>
+ <xsd:attribute name="lho" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="lhe" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="lhf" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="cho" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="che" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="chf" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="rho" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="rhe" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="rhf" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="lfo" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="lfe" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="lff" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="cfo" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="cfe" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="cff" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="rfo" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="rfe" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="rff" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomSheetViews">
+ <xsd:sequence>
+ <xsd:element name="customSheetView" minOccurs="1" maxOccurs="unbounded"
+ type="CT_CustomSheetView"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomSheetView">
+ <xsd:sequence>
+ <xsd:element name="pane" type="CT_Pane" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="selection" type="CT_Selection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rowBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="colBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="printOptions" type="CT_PrintOptions" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="guid" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="scale" type="xsd:unsignedInt" default="100"/>
+ <xsd:attribute name="colorId" type="xsd:unsignedInt" default="64"/>
+ <xsd:attribute name="showPageBreaks" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showFormulas" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showGridLines" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showRowCol" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="outlineSymbols" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="zeroValues" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="fitToPage" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="printArea" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="filter" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showAutoFilter" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="hiddenRows" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="hiddenColumns" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="state" type="ST_SheetState" default="visible"/>
+ <xsd:attribute name="filterUnique" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="view" type="ST_SheetViewType" default="normal"/>
+ <xsd:attribute name="showRuler" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="topLeftCell" type="ST_CellRef" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataValidations">
+ <xsd:sequence>
+ <xsd:element name="dataValidation" type="CT_DataValidation" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="disablePrompts" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="xWindow" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="yWindow" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataValidation">
+ <xsd:sequence>
+ <xsd:element name="formula1" type="ST_Formula" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="formula2" type="ST_Formula" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_DataValidationType" use="optional" default="none"/>
+ <xsd:attribute name="errorStyle" type="ST_DataValidationErrorStyle" use="optional"
+ default="stop"/>
+ <xsd:attribute name="imeMode" type="ST_DataValidationImeMode" use="optional" default="noControl"/>
+ <xsd:attribute name="operator" type="ST_DataValidationOperator" use="optional" default="between"/>
+ <xsd:attribute name="allowBlank" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showDropDown" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showInputMessage" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showErrorMessage" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="errorTitle" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="error" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="promptTitle" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="prompt" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="sqref" type="ST_Sqref" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DataValidationType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="whole"/>
+ <xsd:enumeration value="decimal"/>
+ <xsd:enumeration value="list"/>
+ <xsd:enumeration value="date"/>
+ <xsd:enumeration value="time"/>
+ <xsd:enumeration value="textLength"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DataValidationOperator">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="between"/>
+ <xsd:enumeration value="notBetween"/>
+ <xsd:enumeration value="equal"/>
+ <xsd:enumeration value="notEqual"/>
+ <xsd:enumeration value="lessThan"/>
+ <xsd:enumeration value="lessThanOrEqual"/>
+ <xsd:enumeration value="greaterThan"/>
+ <xsd:enumeration value="greaterThanOrEqual"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DataValidationErrorStyle">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="stop"/>
+ <xsd:enumeration value="warning"/>
+ <xsd:enumeration value="information"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DataValidationImeMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="noControl"/>
+ <xsd:enumeration value="off"/>
+ <xsd:enumeration value="on"/>
+ <xsd:enumeration value="disabled"/>
+ <xsd:enumeration value="hiragana"/>
+ <xsd:enumeration value="fullKatakana"/>
+ <xsd:enumeration value="halfKatakana"/>
+ <xsd:enumeration value="fullAlpha"/>
+ <xsd:enumeration value="halfAlpha"/>
+ <xsd:enumeration value="fullHangul"/>
+ <xsd:enumeration value="halfHangul"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CfType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="expression"/>
+ <xsd:enumeration value="cellIs"/>
+ <xsd:enumeration value="colorScale"/>
+ <xsd:enumeration value="dataBar"/>
+ <xsd:enumeration value="iconSet"/>
+ <xsd:enumeration value="top10"/>
+ <xsd:enumeration value="uniqueValues"/>
+ <xsd:enumeration value="duplicateValues"/>
+ <xsd:enumeration value="containsText"/>
+ <xsd:enumeration value="notContainsText"/>
+ <xsd:enumeration value="beginsWith"/>
+ <xsd:enumeration value="endsWith"/>
+ <xsd:enumeration value="containsBlanks"/>
+ <xsd:enumeration value="notContainsBlanks"/>
+ <xsd:enumeration value="containsErrors"/>
+ <xsd:enumeration value="notContainsErrors"/>
+ <xsd:enumeration value="timePeriod"/>
+ <xsd:enumeration value="aboveAverage"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TimePeriod">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="today"/>
+ <xsd:enumeration value="yesterday"/>
+ <xsd:enumeration value="tomorrow"/>
+ <xsd:enumeration value="last7Days"/>
+ <xsd:enumeration value="thisMonth"/>
+ <xsd:enumeration value="lastMonth"/>
+ <xsd:enumeration value="nextMonth"/>
+ <xsd:enumeration value="thisWeek"/>
+ <xsd:enumeration value="lastWeek"/>
+ <xsd:enumeration value="nextWeek"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ConditionalFormattingOperator">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="lessThan"/>
+ <xsd:enumeration value="lessThanOrEqual"/>
+ <xsd:enumeration value="equal"/>
+ <xsd:enumeration value="notEqual"/>
+ <xsd:enumeration value="greaterThanOrEqual"/>
+ <xsd:enumeration value="greaterThan"/>
+ <xsd:enumeration value="between"/>
+ <xsd:enumeration value="notBetween"/>
+ <xsd:enumeration value="containsText"/>
+ <xsd:enumeration value="notContains"/>
+ <xsd:enumeration value="beginsWith"/>
+ <xsd:enumeration value="endsWith"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CfvoType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="num"/>
+ <xsd:enumeration value="percent"/>
+ <xsd:enumeration value="max"/>
+ <xsd:enumeration value="min"/>
+ <xsd:enumeration value="formula"/>
+ <xsd:enumeration value="percentile"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ConditionalFormatting">
+ <xsd:sequence>
+ <xsd:element name="cfRule" type="CT_CfRule" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="pivot" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="sqref" type="ST_Sqref"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CfRule">
+ <xsd:sequence>
+ <xsd:element name="formula" type="ST_Formula" minOccurs="0" maxOccurs="3"/>
+ <xsd:element name="colorScale" type="CT_ColorScale" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dataBar" type="CT_DataBar" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="iconSet" type="CT_IconSet" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_CfType"/>
+ <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="priority" type="xsd:int" use="required"/>
+ <xsd:attribute name="stopIfTrue" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="aboveAverage" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="percent" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="bottom" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="operator" type="ST_ConditionalFormattingOperator" use="optional"/>
+ <xsd:attribute name="text" type="xsd:string" use="optional"/>
+ <xsd:attribute name="timePeriod" type="ST_TimePeriod" use="optional"/>
+ <xsd:attribute name="rank" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="stdDev" type="xsd:int" use="optional"/>
+ <xsd:attribute name="equalAverage" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Hyperlinks">
+ <xsd:sequence>
+ <xsd:element name="hyperlink" type="CT_Hyperlink" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Hyperlink">
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ <xsd:attribute name="location" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="tooltip" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="display" type="s:ST_Xstring" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellFormula">
+ <xsd:simpleContent>
+ <xsd:extension base="ST_Formula">
+ <xsd:attribute name="t" type="ST_CellFormulaType" use="optional" default="normal"/>
+ <xsd:attribute name="aca" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="ref" type="ST_Ref" use="optional"/>
+ <xsd:attribute name="dt2D" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="dtr" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="del1" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="del2" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="r1" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="r2" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="ca" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="si" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="bx" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorScale">
+ <xsd:sequence>
+ <xsd:element name="cfvo" type="CT_Cfvo" minOccurs="2" maxOccurs="unbounded"/>
+ <xsd:element name="color" type="CT_Color" minOccurs="2" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataBar">
+ <xsd:sequence>
+ <xsd:element name="cfvo" type="CT_Cfvo" minOccurs="2" maxOccurs="2"/>
+ <xsd:element name="color" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="minLength" type="xsd:unsignedInt" use="optional" default="10"/>
+ <xsd:attribute name="maxLength" type="xsd:unsignedInt" use="optional" default="90"/>
+ <xsd:attribute name="showValue" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_IconSet">
+ <xsd:sequence>
+ <xsd:element name="cfvo" type="CT_Cfvo" minOccurs="2" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="iconSet" type="ST_IconSetType" use="optional" default="3TrafficLights1"/>
+ <xsd:attribute name="showValue" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="percent" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="reverse" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Cfvo">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_CfvoType" use="required"/>
+ <xsd:attribute name="val" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="gte" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageMargins">
+ <xsd:attribute name="left" type="xsd:double" use="required"/>
+ <xsd:attribute name="right" type="xsd:double" use="required"/>
+ <xsd:attribute name="top" type="xsd:double" use="required"/>
+ <xsd:attribute name="bottom" type="xsd:double" use="required"/>
+ <xsd:attribute name="header" type="xsd:double" use="required"/>
+ <xsd:attribute name="footer" type="xsd:double" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PrintOptions">
+ <xsd:attribute name="horizontalCentered" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="verticalCentered" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="headings" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="gridLines" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="gridLinesSet" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageSetup">
+ <xsd:attribute name="paperSize" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="paperHeight" type="s:ST_PositiveUniversalMeasure" use="optional"/>
+ <xsd:attribute name="paperWidth" type="s:ST_PositiveUniversalMeasure" use="optional"/>
+ <xsd:attribute name="scale" type="xsd:unsignedInt" use="optional" default="100"/>
+ <xsd:attribute name="firstPageNumber" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="fitToWidth" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="fitToHeight" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="pageOrder" type="ST_PageOrder" use="optional" default="downThenOver"/>
+ <xsd:attribute name="orientation" type="ST_Orientation" use="optional" default="default"/>
+ <xsd:attribute name="usePrinterDefaults" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="blackAndWhite" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="draft" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="cellComments" type="ST_CellComments" use="optional" default="none"/>
+ <xsd:attribute name="useFirstPageNumber" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="errors" type="ST_PrintError" use="optional" default="displayed"/>
+ <xsd:attribute name="horizontalDpi" type="xsd:unsignedInt" use="optional" default="600"/>
+ <xsd:attribute name="verticalDpi" type="xsd:unsignedInt" use="optional" default="600"/>
+ <xsd:attribute name="copies" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PageOrder">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="downThenOver"/>
+ <xsd:enumeration value="overThenDown"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Orientation">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="portrait"/>
+ <xsd:enumeration value="landscape"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CellComments">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="asDisplayed"/>
+ <xsd:enumeration value="atEnd"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_HeaderFooter">
+ <xsd:sequence>
+ <xsd:element name="oddHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="oddFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="evenHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="evenFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="firstHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="firstFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="differentOddEven" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="differentFirst" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="scaleWithDoc" type="xsd:boolean" default="true"/>
+ <xsd:attribute name="alignWithMargins" type="xsd:boolean" default="true"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PrintError">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="displayed"/>
+ <xsd:enumeration value="blank"/>
+ <xsd:enumeration value="dash"/>
+ <xsd:enumeration value="NA"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Scenarios">
+ <xsd:sequence>
+ <xsd:element name="scenario" type="CT_Scenario" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="current" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="show" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="sqref" type="ST_Sqref" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetProtection">
+ <xsd:attribute name="password" type="ST_UnsignedShortHex" use="optional"/>
+ <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="sheet" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="objects" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="scenarios" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="formatCells" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="formatColumns" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="formatRows" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="insertColumns" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="insertRows" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="insertHyperlinks" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="deleteColumns" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="deleteRows" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="selectLockedCells" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="sort" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="autoFilter" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="pivotTables" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="selectUnlockedCells" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ProtectedRanges">
+ <xsd:sequence>
+ <xsd:element name="protectedRange" type="CT_ProtectedRange" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ProtectedRange">
+ <xsd:sequence>
+ <xsd:element name="securityDescriptor" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="password" type="ST_UnsignedShortHex" use="optional"/>
+ <xsd:attribute name="sqref" type="ST_Sqref" use="required"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="securityDescriptor" type="xsd:string" use="optional"/>
+ <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Scenario">
+ <xsd:sequence>
+ <xsd:element name="inputCells" type="CT_InputCells" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="user" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_InputCells">
+ <xsd:attribute name="r" type="ST_CellRef" use="required"/>
+ <xsd:attribute name="deleted" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="undone" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="val" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellWatches">
+ <xsd:sequence>
+ <xsd:element name="cellWatch" type="CT_CellWatch" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellWatch">
+ <xsd:attribute name="r" type="ST_CellRef" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Chartsheet">
+ <xsd:sequence>
+ <xsd:element name="sheetPr" type="CT_ChartsheetPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sheetViews" type="CT_ChartsheetViews" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="sheetProtection" type="CT_ChartsheetProtection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="customSheetViews" type="CT_CustomChartsheetViews" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="pageMargins" minOccurs="0" type="CT_PageMargins"/>
+ <xsd:element name="pageSetup" type="CT_CsPageSetup" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="headerFooter" minOccurs="0" type="CT_HeaderFooter"/>
+ <xsd:element name="drawing" type="CT_Drawing" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="legacyDrawing" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="picture" type="CT_SheetBackgroundPicture" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="webPublishItems" type="CT_WebPublishItems" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ChartsheetPr">
+ <xsd:sequence>
+ <xsd:element name="tabColor" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="published" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="codeName" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ChartsheetViews">
+ <xsd:sequence>
+ <xsd:element name="sheetView" type="CT_ChartsheetView" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ChartsheetView">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="tabSelected" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="zoomScale" type="xsd:unsignedInt" default="100" use="optional"/>
+ <xsd:attribute name="workbookViewId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="zoomToFit" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ChartsheetProtection">
+ <xsd:attribute name="password" type="ST_UnsignedShortHex" use="optional"/>
+ <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="content" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="objects" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CsPageSetup">
+ <xsd:attribute name="paperSize" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="paperHeight" type="s:ST_PositiveUniversalMeasure" use="optional"/>
+ <xsd:attribute name="paperWidth" type="s:ST_PositiveUniversalMeasure" use="optional"/>
+ <xsd:attribute name="firstPageNumber" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="orientation" type="ST_Orientation" use="optional" default="default"/>
+ <xsd:attribute name="usePrinterDefaults" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="blackAndWhite" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="draft" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="useFirstPageNumber" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="horizontalDpi" type="xsd:unsignedInt" use="optional" default="600"/>
+ <xsd:attribute name="verticalDpi" type="xsd:unsignedInt" use="optional" default="600"/>
+ <xsd:attribute name="copies" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomChartsheetViews">
+ <xsd:sequence>
+ <xsd:element name="customSheetView" minOccurs="0" maxOccurs="unbounded"
+ type="CT_CustomChartsheetView"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomChartsheetView">
+ <xsd:sequence>
+ <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pageSetup" type="CT_CsPageSetup" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="guid" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="scale" type="xsd:unsignedInt" default="100"/>
+ <xsd:attribute name="state" type="ST_SheetState" default="visible"/>
+ <xsd:attribute name="zoomToFit" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomProperties">
+ <xsd:sequence>
+ <xsd:element name="customPr" type="CT_CustomProperty" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomProperty">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OleObjects">
+ <xsd:sequence>
+ <xsd:element name="oleObject" type="CT_OleObject" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OleObject">
+ <xsd:sequence>
+ <xsd:element name="objectPr" type="CT_ObjectPr" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="progId" type="xsd:string" use="optional"/>
+ <xsd:attribute name="dvAspect" type="ST_DvAspect" use="optional" default="DVASPECT_CONTENT"/>
+ <xsd:attribute name="link" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="oleUpdate" type="ST_OleUpdate" use="optional"/>
+ <xsd:attribute name="autoLoad" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="shapeId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ObjectPr">
+ <xsd:sequence>
+ <xsd:element name="anchor" type="CT_ObjectAnchor" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="defaultSize" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="print" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="disabled" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="uiObject" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="autoFill" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="autoLine" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="autoPict" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="macro" type="ST_Formula" use="optional"/>
+ <xsd:attribute name="altText" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="dde" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DvAspect">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="DVASPECT_CONTENT"/>
+ <xsd:enumeration value="DVASPECT_ICON"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OleUpdate">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="OLEUPDATE_ALWAYS"/>
+ <xsd:enumeration value="OLEUPDATE_ONCALL"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_WebPublishItems">
+ <xsd:sequence>
+ <xsd:element name="webPublishItem" type="CT_WebPublishItem" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WebPublishItem">
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="divId" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="sourceType" type="ST_WebSourceType" use="required"/>
+ <xsd:attribute name="sourceRef" type="ST_Ref" use="optional"/>
+ <xsd:attribute name="sourceObject" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="destinationFile" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="title" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="autoRepublish" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Controls">
+ <xsd:sequence>
+ <xsd:element name="control" type="CT_Control" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Control">
+ <xsd:sequence>
+ <xsd:element name="controlPr" type="CT_ControlPr" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="shapeId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute ref="r:id" use="required"/>
+ <xsd:attribute name="name" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ControlPr">
+ <xsd:sequence>
+ <xsd:element name="anchor" type="CT_ObjectAnchor" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="defaultSize" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="print" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="disabled" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="recalcAlways" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="uiObject" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="autoFill" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="autoLine" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="autoPict" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="macro" type="ST_Formula" use="optional"/>
+ <xsd:attribute name="altText" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="linkedCell" type="ST_Formula" use="optional"/>
+ <xsd:attribute name="listFillRange" type="ST_Formula" use="optional"/>
+ <xsd:attribute name="cf" type="s:ST_Xstring" use="optional" default="pict"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_WebSourceType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="sheet"/>
+ <xsd:enumeration value="printArea"/>
+ <xsd:enumeration value="autoFilter"/>
+ <xsd:enumeration value="range"/>
+ <xsd:enumeration value="chart"/>
+ <xsd:enumeration value="pivotTable"/>
+ <xsd:enumeration value="query"/>
+ <xsd:enumeration value="label"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_IgnoredErrors">
+ <xsd:sequence>
+ <xsd:element name="ignoredError" type="CT_IgnoredError" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_IgnoredError">
+ <xsd:attribute name="sqref" type="ST_Sqref" use="required"/>
+ <xsd:attribute name="evalError" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="twoDigitTextYear" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="numberStoredAsText" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="formula" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="formulaRange" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="unlockedFormula" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="emptyCellReference" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="listDataValidation" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="calculatedColumn" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PaneState">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="split"/>
+ <xsd:enumeration value="frozen"/>
+ <xsd:enumeration value="frozenSplit"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TableParts">
+ <xsd:sequence>
+ <xsd:element name="tablePart" type="CT_TablePart" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TablePart">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="metadata" type="CT_Metadata"/>
+ <xsd:complexType name="CT_Metadata">
+ <xsd:sequence>
+ <xsd:element name="metadataTypes" type="CT_MetadataTypes" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="metadataStrings" type="CT_MetadataStrings" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="mdxMetadata" type="CT_MdxMetadata" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="futureMetadata" type="CT_FutureMetadata" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="cellMetadata" type="CT_MetadataBlocks" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="valueMetadata" type="CT_MetadataBlocks" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MetadataTypes">
+ <xsd:sequence>
+ <xsd:element name="metadataType" type="CT_MetadataType" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MetadataType">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="minSupportedVersion" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="ghostRow" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="ghostCol" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="edit" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="delete" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="copy" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pasteAll" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pasteFormulas" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pasteValues" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pasteFormats" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pasteComments" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pasteDataValidation" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pasteBorders" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pasteColWidths" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pasteNumberFormats" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="merge" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="splitFirst" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="splitAll" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="rowColShift" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="clearAll" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="clearFormats" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="clearContents" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="clearComments" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="assign" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="coerce" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="adjust" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="cellMeta" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MetadataBlocks">
+ <xsd:sequence>
+ <xsd:element name="bk" type="CT_MetadataBlock" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MetadataBlock">
+ <xsd:sequence>
+ <xsd:element name="rc" type="CT_MetadataRecord" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MetadataRecord">
+ <xsd:attribute name="t" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="v" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FutureMetadata">
+ <xsd:sequence>
+ <xsd:element name="bk" type="CT_FutureMetadataBlock" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FutureMetadataBlock">
+ <xsd:sequence>
+ <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MdxMetadata">
+ <xsd:sequence>
+ <xsd:element name="mdx" type="CT_Mdx" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Mdx">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="t" type="CT_MdxTuple"/>
+ <xsd:element name="ms" type="CT_MdxSet"/>
+ <xsd:element name="p" type="CT_MdxMemeberProp"/>
+ <xsd:element name="k" type="CT_MdxKPI"/>
+ </xsd:choice>
+ <xsd:attribute name="n" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="f" type="ST_MdxFunctionType" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MdxFunctionType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="m"/>
+ <xsd:enumeration value="v"/>
+ <xsd:enumeration value="s"/>
+ <xsd:enumeration value="c"/>
+ <xsd:enumeration value="r"/>
+ <xsd:enumeration value="p"/>
+ <xsd:enumeration value="k"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MdxTuple">
+ <xsd:sequence>
+ <xsd:element name="n" type="CT_MetadataStringIndex" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="c" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="ct" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="si" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="fi" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="u" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MdxSet">
+ <xsd:sequence>
+ <xsd:element name="n" type="CT_MetadataStringIndex" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="ns" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="c" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="o" type="ST_MdxSetOrder" use="optional" default="u"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MdxSetOrder">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="u"/>
+ <xsd:enumeration value="a"/>
+ <xsd:enumeration value="d"/>
+ <xsd:enumeration value="aa"/>
+ <xsd:enumeration value="ad"/>
+ <xsd:enumeration value="na"/>
+ <xsd:enumeration value="nd"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MdxMemeberProp">
+ <xsd:attribute name="n" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="np" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MdxKPI">
+ <xsd:attribute name="n" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="np" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="p" type="ST_MdxKPIProperty" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MdxKPIProperty">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="v"/>
+ <xsd:enumeration value="g"/>
+ <xsd:enumeration value="s"/>
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="w"/>
+ <xsd:enumeration value="m"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MetadataStringIndex">
+ <xsd:attribute name="x" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MetadataStrings">
+ <xsd:sequence>
+ <xsd:element name="s" type="CT_XStringElement" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:element name="singleXmlCells" type="CT_SingleXmlCells"/>
+ <xsd:complexType name="CT_SingleXmlCells">
+ <xsd:sequence>
+ <xsd:element name="singleXmlCell" type="CT_SingleXmlCell" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SingleXmlCell">
+ <xsd:sequence>
+ <xsd:element name="xmlCellPr" type="CT_XmlCellPr" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="r" type="ST_CellRef" use="required"/>
+ <xsd:attribute name="connectionId" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_XmlCellPr">
+ <xsd:sequence>
+ <xsd:element name="xmlPr" type="CT_XmlPr" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="uniqueName" type="s:ST_Xstring" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_XmlPr">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="mapId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="xpath" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="xmlDataType" type="ST_XmlDataType" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="styleSheet" type="CT_Stylesheet"/>
+ <xsd:complexType name="CT_Stylesheet">
+ <xsd:sequence>
+ <xsd:element name="numFmts" type="CT_NumFmts" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="fonts" type="CT_Fonts" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="fills" type="CT_Fills" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="borders" type="CT_Borders" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cellStyleXfs" type="CT_CellStyleXfs" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cellXfs" type="CT_CellXfs" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cellStyles" type="CT_CellStyles" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="dxfs" type="CT_Dxfs" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tableStyles" type="CT_TableStyles" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="colors" type="CT_Colors" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellAlignment">
+ <xsd:attribute name="horizontal" type="ST_HorizontalAlignment" use="optional"/>
+ <xsd:attribute name="vertical" type="ST_VerticalAlignment" use="optional"/>
+ <xsd:attribute name="textRotation" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="wrapText" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="indent" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="relativeIndent" type="xsd:int" use="optional"/>
+ <xsd:attribute name="justifyLastLine" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="shrinkToFit" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="readingOrder" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BorderStyle">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="thin"/>
+ <xsd:enumeration value="medium"/>
+ <xsd:enumeration value="dashed"/>
+ <xsd:enumeration value="dotted"/>
+ <xsd:enumeration value="thick"/>
+ <xsd:enumeration value="double"/>
+ <xsd:enumeration value="hair"/>
+ <xsd:enumeration value="mediumDashed"/>
+ <xsd:enumeration value="dashDot"/>
+ <xsd:enumeration value="mediumDashDot"/>
+ <xsd:enumeration value="dashDotDot"/>
+ <xsd:enumeration value="mediumDashDotDot"/>
+ <xsd:enumeration value="slantDashDot"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Borders">
+ <xsd:sequence>
+ <xsd:element name="border" type="CT_Border" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Border">
+ <xsd:sequence>
+ <xsd:element name="start" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="end" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="left" type="CT_BorderPr" minOccurs="0"/>
+ <xsd:element name="right" type="CT_BorderPr" minOccurs="0"/>
+ <xsd:element name="top" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bottom" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="diagonal" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="vertical" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="horizontal" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="diagonalUp" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="diagonalDown" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="outline" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BorderPr">
+ <xsd:sequence>
+ <xsd:element name="color" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="style" type="ST_BorderStyle" use="optional" default="none"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellProtection">
+ <xsd:attribute name="locked" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="hidden" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Fonts">
+ <xsd:sequence>
+ <xsd:element name="font" type="CT_Font" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Fills">
+ <xsd:sequence>
+ <xsd:element name="fill" type="CT_Fill" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Fill">
+ <xsd:choice minOccurs="1" maxOccurs="1">
+ <xsd:element name="patternFill" type="CT_PatternFill" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="gradientFill" type="CT_GradientFill" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PatternFill">
+ <xsd:sequence>
+ <xsd:element name="fgColor" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bgColor" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="patternType" type="ST_PatternType" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Color">
+ <xsd:attribute name="auto" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="indexed" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="rgb" type="ST_UnsignedIntHex" use="optional"/>
+ <xsd:attribute name="theme" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="tint" type="xsd:double" use="optional" default="0.0"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PatternType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="solid"/>
+ <xsd:enumeration value="mediumGray"/>
+ <xsd:enumeration value="darkGray"/>
+ <xsd:enumeration value="lightGray"/>
+ <xsd:enumeration value="darkHorizontal"/>
+ <xsd:enumeration value="darkVertical"/>
+ <xsd:enumeration value="darkDown"/>
+ <xsd:enumeration value="darkUp"/>
+ <xsd:enumeration value="darkGrid"/>
+ <xsd:enumeration value="darkTrellis"/>
+ <xsd:enumeration value="lightHorizontal"/>
+ <xsd:enumeration value="lightVertical"/>
+ <xsd:enumeration value="lightDown"/>
+ <xsd:enumeration value="lightUp"/>
+ <xsd:enumeration value="lightGrid"/>
+ <xsd:enumeration value="lightTrellis"/>
+ <xsd:enumeration value="gray125"/>
+ <xsd:enumeration value="gray0625"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_GradientFill">
+ <xsd:sequence>
+ <xsd:element name="stop" type="CT_GradientStop" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_GradientType" use="optional" default="linear"/>
+ <xsd:attribute name="degree" type="xsd:double" use="optional" default="0"/>
+ <xsd:attribute name="left" type="xsd:double" use="optional" default="0"/>
+ <xsd:attribute name="right" type="xsd:double" use="optional" default="0"/>
+ <xsd:attribute name="top" type="xsd:double" use="optional" default="0"/>
+ <xsd:attribute name="bottom" type="xsd:double" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GradientStop">
+ <xsd:sequence>
+ <xsd:element name="color" type="CT_Color" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="position" type="xsd:double" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_GradientType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="linear"/>
+ <xsd:enumeration value="path"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HorizontalAlignment">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="general"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="fill"/>
+ <xsd:enumeration value="justify"/>
+ <xsd:enumeration value="centerContinuous"/>
+ <xsd:enumeration value="distributed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_VerticalAlignment">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="top"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="bottom"/>
+ <xsd:enumeration value="justify"/>
+ <xsd:enumeration value="distributed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_NumFmts">
+ <xsd:sequence>
+ <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumFmt">
+ <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="required"/>
+ <xsd:attribute name="formatCode" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellStyleXfs">
+ <xsd:sequence>
+ <xsd:element name="xf" type="CT_Xf" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellXfs">
+ <xsd:sequence>
+ <xsd:element name="xf" type="CT_Xf" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Xf">
+ <xsd:sequence>
+ <xsd:element name="alignment" type="CT_CellAlignment" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="protection" type="CT_CellProtection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/>
+ <xsd:attribute name="fontId" type="ST_FontId" use="optional"/>
+ <xsd:attribute name="fillId" type="ST_FillId" use="optional"/>
+ <xsd:attribute name="borderId" type="ST_BorderId" use="optional"/>
+ <xsd:attribute name="xfId" type="ST_CellStyleXfId" use="optional"/>
+ <xsd:attribute name="quotePrefix" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="pivotButton" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="applyNumberFormat" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="applyFont" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="applyFill" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="applyBorder" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="applyAlignment" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="applyProtection" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellStyles">
+ <xsd:sequence>
+ <xsd:element name="cellStyle" type="CT_CellStyle" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellStyle">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="xfId" type="ST_CellStyleXfId" use="required"/>
+ <xsd:attribute name="builtinId" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="iLevel" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="hidden" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="customBuiltin" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Dxfs">
+ <xsd:sequence>
+ <xsd:element name="dxf" type="CT_Dxf" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Dxf">
+ <xsd:sequence>
+ <xsd:element name="font" type="CT_Font" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="fill" type="CT_Fill" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="alignment" type="CT_CellAlignment" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="border" type="CT_Border" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="protection" type="CT_CellProtection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_NumFmtId">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FontId">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FillId">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_BorderId">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CellStyleXfId">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DxfId">
+ <xsd:restriction base="xsd:unsignedInt"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Colors">
+ <xsd:sequence>
+ <xsd:element name="indexedColors" type="CT_IndexedColors" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="mruColors" type="CT_MRUColors" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_IndexedColors">
+ <xsd:sequence>
+ <xsd:element name="rgbColor" type="CT_RgbColor" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MRUColors">
+ <xsd:sequence>
+ <xsd:element name="color" type="CT_Color" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RgbColor">
+ <xsd:attribute name="rgb" type="ST_UnsignedIntHex" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableStyles">
+ <xsd:sequence>
+ <xsd:element name="tableStyle" type="CT_TableStyle" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="defaultTableStyle" type="xsd:string" use="optional"/>
+ <xsd:attribute name="defaultPivotStyle" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableStyle">
+ <xsd:sequence>
+ <xsd:element name="tableStyleElement" type="CT_TableStyleElement" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="pivot" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="table" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableStyleElement">
+ <xsd:attribute name="type" type="ST_TableStyleType" use="required"/>
+ <xsd:attribute name="size" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TableStyleType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="wholeTable"/>
+ <xsd:enumeration value="headerRow"/>
+ <xsd:enumeration value="totalRow"/>
+ <xsd:enumeration value="firstColumn"/>
+ <xsd:enumeration value="lastColumn"/>
+ <xsd:enumeration value="firstRowStripe"/>
+ <xsd:enumeration value="secondRowStripe"/>
+ <xsd:enumeration value="firstColumnStripe"/>
+ <xsd:enumeration value="secondColumnStripe"/>
+ <xsd:enumeration value="firstHeaderCell"/>
+ <xsd:enumeration value="lastHeaderCell"/>
+ <xsd:enumeration value="firstTotalCell"/>
+ <xsd:enumeration value="lastTotalCell"/>
+ <xsd:enumeration value="firstSubtotalColumn"/>
+ <xsd:enumeration value="secondSubtotalColumn"/>
+ <xsd:enumeration value="thirdSubtotalColumn"/>
+ <xsd:enumeration value="firstSubtotalRow"/>
+ <xsd:enumeration value="secondSubtotalRow"/>
+ <xsd:enumeration value="thirdSubtotalRow"/>
+ <xsd:enumeration value="blankRow"/>
+ <xsd:enumeration value="firstColumnSubheading"/>
+ <xsd:enumeration value="secondColumnSubheading"/>
+ <xsd:enumeration value="thirdColumnSubheading"/>
+ <xsd:enumeration value="firstRowSubheading"/>
+ <xsd:enumeration value="secondRowSubheading"/>
+ <xsd:enumeration value="thirdRowSubheading"/>
+ <xsd:enumeration value="pageFieldLabels"/>
+ <xsd:enumeration value="pageFieldValues"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_BooleanProperty">
+ <xsd:attribute name="val" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontSize">
+ <xsd:attribute name="val" type="xsd:double" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_IntProperty">
+ <xsd:attribute name="val" type="xsd:int" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontName">
+ <xsd:attribute name="val" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_VerticalAlignFontProperty">
+ <xsd:attribute name="val" type="s:ST_VerticalAlignRun" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontScheme">
+ <xsd:attribute name="val" type="ST_FontScheme" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FontScheme">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="major"/>
+ <xsd:enumeration value="minor"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_UnderlineProperty">
+ <xsd:attribute name="val" type="ST_UnderlineValues" use="optional" default="single"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_UnderlineValues">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="single"/>
+ <xsd:enumeration value="double"/>
+ <xsd:enumeration value="singleAccounting"/>
+ <xsd:enumeration value="doubleAccounting"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Font">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="name" type="CT_FontName" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="charset" type="CT_IntProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="family" type="CT_FontFamily" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="b" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="i" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="strike" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="outline" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shadow" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="condense" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extend" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="color" type="CT_Color" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sz" type="CT_FontSize" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="u" type="CT_UnderlineProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="vertAlign" type="CT_VerticalAlignFontProperty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="scheme" type="CT_FontScheme" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontFamily">
+ <xsd:attribute name="val" type="ST_FontFamily" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FontFamily">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="14"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:attributeGroup name="AG_AutoFormat">
+ <xsd:attribute name="autoFormatId" type="xsd:unsignedInt"/>
+ <xsd:attribute name="applyNumberFormats" type="xsd:boolean"/>
+ <xsd:attribute name="applyBorderFormats" type="xsd:boolean"/>
+ <xsd:attribute name="applyFontFormats" type="xsd:boolean"/>
+ <xsd:attribute name="applyPatternFormats" type="xsd:boolean"/>
+ <xsd:attribute name="applyAlignmentFormats" type="xsd:boolean"/>
+ <xsd:attribute name="applyWidthHeightFormats" type="xsd:boolean"/>
+ </xsd:attributeGroup>
+ <xsd:element name="externalLink" type="CT_ExternalLink"/>
+ <xsd:complexType name="CT_ExternalLink">
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element name="externalBook" type="CT_ExternalBook" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ddeLink" type="CT_DdeLink" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="oleLink" type="CT_OleLink" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalBook">
+ <xsd:sequence>
+ <xsd:element name="sheetNames" type="CT_ExternalSheetNames" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="definedNames" type="CT_ExternalDefinedNames" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sheetDataSet" type="CT_ExternalSheetDataSet" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalSheetNames">
+ <xsd:sequence>
+ <xsd:element name="sheetName" minOccurs="1" maxOccurs="unbounded" type="CT_ExternalSheetName"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalSheetName">
+ <xsd:attribute name="val" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalDefinedNames">
+ <xsd:sequence>
+ <xsd:element name="definedName" type="CT_ExternalDefinedName" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalDefinedName">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="refersTo" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalSheetDataSet">
+ <xsd:sequence>
+ <xsd:element name="sheetData" type="CT_ExternalSheetData" minOccurs="1" maxOccurs="unbounded"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalSheetData">
+ <xsd:sequence>
+ <xsd:element name="row" type="CT_ExternalRow" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="refreshError" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalRow">
+ <xsd:sequence>
+ <xsd:element name="cell" type="CT_ExternalCell" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="r" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalCell">
+ <xsd:sequence>
+ <xsd:element name="v" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="r" type="ST_CellRef" use="optional"/>
+ <xsd:attribute name="t" type="ST_CellType" use="optional" default="n"/>
+ <xsd:attribute name="vm" type="xsd:unsignedInt" use="optional" default="0"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DdeLink">
+ <xsd:sequence>
+ <xsd:element name="ddeItems" type="CT_DdeItems" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="ddeService" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="ddeTopic" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DdeItems">
+ <xsd:sequence>
+ <xsd:element name="ddeItem" type="CT_DdeItem" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DdeItem">
+ <xsd:sequence>
+ <xsd:element name="values" type="CT_DdeValues" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="s:ST_Xstring" default="0"/>
+ <xsd:attribute name="ole" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="advise" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="preferPic" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DdeValues">
+ <xsd:sequence>
+ <xsd:element name="value" minOccurs="1" maxOccurs="unbounded" type="CT_DdeValue"/>
+ </xsd:sequence>
+ <xsd:attribute name="rows" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="cols" type="xsd:unsignedInt" use="optional" default="1"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DdeValue">
+ <xsd:sequence>
+ <xsd:element name="val" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="t" type="ST_DdeValueType" use="optional" default="n"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DdeValueType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="nil"/>
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="n"/>
+ <xsd:enumeration value="e"/>
+ <xsd:enumeration value="str"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_OleLink">
+ <xsd:sequence>
+ <xsd:element name="oleItems" type="CT_OleItems" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:id" use="required"/>
+ <xsd:attribute name="progId" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OleItems">
+ <xsd:sequence>
+ <xsd:element name="oleItem" type="CT_OleItem" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OleItem">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="icon" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="advise" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="preferPic" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:element name="table" type="CT_Table"/>
+ <xsd:complexType name="CT_Table">
+ <xsd:sequence>
+ <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sortState" type="CT_SortState" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tableColumns" type="CT_TableColumns" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="tableStyleInfo" type="CT_TableStyleInfo" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="displayName" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ <xsd:attribute name="tableType" type="ST_TableType" use="optional" default="worksheet"/>
+ <xsd:attribute name="headerRowCount" type="xsd:unsignedInt" use="optional" default="1"/>
+ <xsd:attribute name="insertRow" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="insertRowShift" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="totalsRowCount" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="totalsRowShown" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="published" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="headerRowDxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="dataDxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="totalsRowDxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="headerRowBorderDxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="tableBorderDxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="totalsRowBorderDxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="headerRowCellStyle" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="dataCellStyle" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="totalsRowCellStyle" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="connectionId" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TableType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="worksheet"/>
+ <xsd:enumeration value="xml"/>
+ <xsd:enumeration value="queryTable"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TableStyleInfo">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="showFirstColumn" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="showLastColumn" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="showRowStripes" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="showColumnStripes" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableColumns">
+ <xsd:sequence>
+ <xsd:element name="tableColumn" type="CT_TableColumn" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableColumn">
+ <xsd:sequence>
+ <xsd:element name="calculatedColumnFormula" type="CT_TableFormula" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="totalsRowFormula" type="CT_TableFormula" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="xmlColumnPr" type="CT_XmlColumnPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="uniqueName" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="totalsRowFunction" type="ST_TotalsRowFunction" use="optional"
+ default="none"/>
+ <xsd:attribute name="totalsRowLabel" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="queryTableFieldId" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="headerRowDxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="dataDxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="totalsRowDxfId" type="ST_DxfId" use="optional"/>
+ <xsd:attribute name="headerRowCellStyle" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="dataCellStyle" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="totalsRowCellStyle" type="s:ST_Xstring" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TableFormula">
+ <xsd:simpleContent>
+ <xsd:extension base="ST_Formula">
+ <xsd:attribute name="array" type="xsd:boolean" default="false"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TotalsRowFunction">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="sum"/>
+ <xsd:enumeration value="min"/>
+ <xsd:enumeration value="max"/>
+ <xsd:enumeration value="average"/>
+ <xsd:enumeration value="count"/>
+ <xsd:enumeration value="countNums"/>
+ <xsd:enumeration value="stdDev"/>
+ <xsd:enumeration value="var"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_XmlColumnPr">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="mapId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="xpath" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="denormalized" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="xmlDataType" type="ST_XmlDataType" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_XmlDataType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:element name="volTypes" type="CT_VolTypes"/>
+ <xsd:complexType name="CT_VolTypes">
+ <xsd:sequence>
+ <xsd:element name="volType" type="CT_VolType" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_VolType">
+ <xsd:sequence>
+ <xsd:element name="main" type="CT_VolMain" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_VolDepType" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_VolMain">
+ <xsd:sequence>
+ <xsd:element name="tp" type="CT_VolTopic" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="first" type="s:ST_Xstring" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_VolTopic">
+ <xsd:sequence>
+ <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="stp" type="s:ST_Xstring" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="tr" type="CT_VolTopicRef" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="t" type="ST_VolValueType" use="optional" default="n"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_VolTopicRef">
+ <xsd:attribute name="r" type="ST_CellRef" use="required"/>
+ <xsd:attribute name="s" type="xsd:unsignedInt" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_VolDepType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="realTimeData"/>
+ <xsd:enumeration value="olapFunctions"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_VolValueType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="b"/>
+ <xsd:enumeration value="n"/>
+ <xsd:enumeration value="e"/>
+ <xsd:enumeration value="s"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="workbook" type="CT_Workbook"/>
+ <xsd:complexType name="CT_Workbook">
+ <xsd:sequence>
+ <xsd:element name="fileVersion" type="CT_FileVersion" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="fileSharing" type="CT_FileSharing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="workbookPr" type="CT_WorkbookPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="workbookProtection" type="CT_WorkbookProtection" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="bookViews" type="CT_BookViews" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sheets" type="CT_Sheets" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="functionGroups" type="CT_FunctionGroups" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="externalReferences" type="CT_ExternalReferences" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="definedNames" type="CT_DefinedNames" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="calcPr" type="CT_CalcPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="oleSize" type="CT_OleSize" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="customWorkbookViews" type="CT_CustomWorkbookViews" minOccurs="0"
+ maxOccurs="1"/>
+ <xsd:element name="pivotCaches" type="CT_PivotCaches" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="smartTagPr" type="CT_SmartTagPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="smartTagTypes" type="CT_SmartTagTypes" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="webPublishing" type="CT_WebPublishing" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="fileRecoveryPr" type="CT_FileRecoveryPr" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="webPublishObjects" type="CT_WebPublishObjects" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="conformance" type="s:ST_ConformanceClass"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FileVersion">
+ <xsd:attribute name="appName" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lastEdited" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lowestEdited" type="xsd:string" use="optional"/>
+ <xsd:attribute name="rupBuild" type="xsd:string" use="optional"/>
+ <xsd:attribute name="codeName" type="s:ST_Guid" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BookViews">
+ <xsd:sequence>
+ <xsd:element name="workbookView" type="CT_BookView" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BookView">
+ <xsd:sequence>
+ <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="visibility" type="ST_Visibility" use="optional" default="visible"/>
+ <xsd:attribute name="minimized" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showHorizontalScroll" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showVerticalScroll" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showSheetTabs" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="xWindow" type="xsd:int" use="optional"/>
+ <xsd:attribute name="yWindow" type="xsd:int" use="optional"/>
+ <xsd:attribute name="windowWidth" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="windowHeight" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="tabRatio" type="xsd:unsignedInt" use="optional" default="600"/>
+ <xsd:attribute name="firstSheet" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="activeTab" type="xsd:unsignedInt" use="optional" default="0"/>
+ <xsd:attribute name="autoFilterDateGrouping" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Visibility">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="visible"/>
+ <xsd:enumeration value="hidden"/>
+ <xsd:enumeration value="veryHidden"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_CustomWorkbookViews">
+ <xsd:sequence>
+ <xsd:element name="customWorkbookView" minOccurs="1" maxOccurs="unbounded"
+ type="CT_CustomWorkbookView"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomWorkbookView">
+ <xsd:sequence>
+ <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="guid" type="s:ST_Guid" use="required"/>
+ <xsd:attribute name="autoUpdate" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="mergeInterval" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="changesSavedWin" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="onlySync" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="personalView" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="includePrintSettings" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="includeHiddenRowCol" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="maximized" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="minimized" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showHorizontalScroll" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showVerticalScroll" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showSheetTabs" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="xWindow" type="xsd:int" use="optional" default="0"/>
+ <xsd:attribute name="yWindow" type="xsd:int" use="optional" default="0"/>
+ <xsd:attribute name="windowWidth" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="windowHeight" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="tabRatio" type="xsd:unsignedInt" use="optional" default="600"/>
+ <xsd:attribute name="activeSheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="showFormulaBar" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showStatusbar" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showComments" type="ST_Comments" use="optional" default="commIndicator"/>
+ <xsd:attribute name="showObjects" type="ST_Objects" use="optional" default="all"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Comments">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="commNone"/>
+ <xsd:enumeration value="commIndicator"/>
+ <xsd:enumeration value="commIndAndComment"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Objects">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="all"/>
+ <xsd:enumeration value="placeholders"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Sheets">
+ <xsd:sequence>
+ <xsd:element name="sheet" type="CT_Sheet" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Sheet">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="state" type="ST_SheetState" use="optional" default="visible"/>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SheetState">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="visible"/>
+ <xsd:enumeration value="hidden"/>
+ <xsd:enumeration value="veryHidden"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_WorkbookPr">
+ <xsd:attribute name="date1904" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="dateCompatibility" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="showObjects" type="ST_Objects" use="optional" default="all"/>
+ <xsd:attribute name="showBorderUnselectedTables" type="xsd:boolean" use="optional"
+ default="true"/>
+ <xsd:attribute name="filterPrivacy" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="promptedSolutions" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showInkAnnotation" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="backupFile" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="saveExternalLinkValues" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="updateLinks" type="ST_UpdateLinks" use="optional" default="userSet"/>
+ <xsd:attribute name="codeName" type="xsd:string" use="optional"/>
+ <xsd:attribute name="hidePivotFieldList" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="showPivotChartFilter" type="xsd:boolean" default="false"/>
+ <xsd:attribute name="allowRefreshQuery" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="publishItems" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="checkCompatibility" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="autoCompressPictures" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="refreshAllConnections" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="defaultThemeVersion" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_UpdateLinks">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="userSet"/>
+ <xsd:enumeration value="never"/>
+ <xsd:enumeration value="always"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SmartTagPr">
+ <xsd:attribute name="embed" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="show" type="ST_SmartTagShow" use="optional" default="all"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SmartTagShow">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="all"/>
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="noIndicator"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SmartTagTypes">
+ <xsd:sequence>
+ <xsd:element name="smartTagType" type="CT_SmartTagType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SmartTagType">
+ <xsd:attribute name="namespaceUri" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="url" type="s:ST_Xstring" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FileRecoveryPr">
+ <xsd:attribute name="autoRecover" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="crashSave" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="dataExtractLoad" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="repairLoad" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CalcPr">
+ <xsd:attribute name="calcId" type="xsd:unsignedInt"/>
+ <xsd:attribute name="calcMode" type="ST_CalcMode" use="optional" default="auto"/>
+ <xsd:attribute name="fullCalcOnLoad" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="refMode" type="ST_RefMode" use="optional" default="A1"/>
+ <xsd:attribute name="iterate" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="iterateCount" type="xsd:unsignedInt" use="optional" default="100"/>
+ <xsd:attribute name="iterateDelta" type="xsd:double" use="optional" default="0.001"/>
+ <xsd:attribute name="fullPrecision" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="calcCompleted" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="calcOnSave" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="concurrentCalc" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="concurrentManualCount" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="forceFullCalc" type="xsd:boolean" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_CalcMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="manual"/>
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="autoNoTable"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_RefMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="A1"/>
+ <xsd:enumeration value="R1C1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DefinedNames">
+ <xsd:sequence>
+ <xsd:element name="definedName" type="CT_DefinedName" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DefinedName">
+ <xsd:simpleContent>
+ <xsd:extension base="ST_Formula">
+ <xsd:attribute name="name" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="customMenu" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="description" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="help" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="statusBar" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="localSheetId" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="function" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="vbProcedure" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="xlm" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="functionGroupId" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="shortcutKey" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="publishToServer" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="workbookParameter" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalReferences">
+ <xsd:sequence>
+ <xsd:element name="externalReference" type="CT_ExternalReference" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ExternalReference">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SheetBackgroundPicture">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotCaches">
+ <xsd:sequence>
+ <xsd:element name="pivotCache" type="CT_PivotCache" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PivotCache">
+ <xsd:attribute name="cacheId" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FileSharing">
+ <xsd:attribute name="readOnlyRecommended" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="userName" type="s:ST_Xstring"/>
+ <xsd:attribute name="reservationPassword" type="ST_UnsignedShortHex"/>
+ <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OleSize">
+ <xsd:attribute name="ref" type="ST_Ref" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WorkbookProtection">
+ <xsd:attribute name="workbookPassword" type="ST_UnsignedShortHex" use="optional"/>
+ <xsd:attribute name="workbookPasswordCharacterSet" type="xsd:string" use="optional"/>
+ <xsd:attribute name="revisionsPassword" type="ST_UnsignedShortHex" use="optional"/>
+ <xsd:attribute name="revisionsPasswordCharacterSet" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lockStructure" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="lockWindows" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="lockRevision" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="revisionsAlgorithmName" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="revisionsHashValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="revisionsSaltValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="revisionsSpinCount" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="workbookAlgorithmName" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="workbookHashValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="workbookSaltValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="workbookSpinCount" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WebPublishing">
+ <xsd:attribute name="css" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="thicket" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="longFileNames" type="xsd:boolean" use="optional" default="true"/>
+ <xsd:attribute name="vml" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="allowPng" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="targetScreenSize" type="ST_TargetScreenSize" use="optional"
+ default="800x600"/>
+ <xsd:attribute name="dpi" type="xsd:unsignedInt" use="optional" default="96"/>
+ <xsd:attribute name="codePage" type="xsd:unsignedInt" use="optional"/>
+ <xsd:attribute name="characterSet" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TargetScreenSize">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="544x376"/>
+ <xsd:enumeration value="640x480"/>
+ <xsd:enumeration value="720x512"/>
+ <xsd:enumeration value="800x600"/>
+ <xsd:enumeration value="1024x768"/>
+ <xsd:enumeration value="1152x882"/>
+ <xsd:enumeration value="1152x900"/>
+ <xsd:enumeration value="1280x1024"/>
+ <xsd:enumeration value="1600x1200"/>
+ <xsd:enumeration value="1800x1440"/>
+ <xsd:enumeration value="1920x1200"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FunctionGroups">
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="functionGroup" type="CT_FunctionGroup" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="builtInGroupCount" type="xsd:unsignedInt" default="16" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FunctionGroup">
+ <xsd:attribute name="name" type="s:ST_Xstring"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WebPublishObjects">
+ <xsd:sequence>
+ <xsd:element name="webPublishObject" type="CT_WebPublishObject" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WebPublishObject">
+ <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/>
+ <xsd:attribute name="divId" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="sourceObject" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="destinationFile" type="s:ST_Xstring" use="required"/>
+ <xsd:attribute name="title" type="s:ST_Xstring" use="optional"/>
+ <xsd:attribute name="autoRepublish" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/lib/schema/vml-main.xsd b/lib/schema/vml-main.xsd
new file mode 100644
index 00000000..4e4a29f1
--- /dev/null
+++ b/lib/schema/vml-main.xsd
@@ -0,0 +1,569 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:vml"
+ xmlns:pvml="urn:schemas-microsoft-com:office:powerpoint"
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+ xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+ xmlns:w10="urn:schemas-microsoft-com:office:word"
+ xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ xmlns:x="urn:schemas-microsoft-com:office:excel"
+ xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ targetNamespace="urn:schemas-microsoft-com:vml" elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xsd:import namespace="urn:schemas-microsoft-com:office:office"
+ schemaLocation="vml-officeDrawing.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+ schemaLocation="wml.xsd"/>
+ <xsd:import namespace="urn:schemas-microsoft-com:office:word"
+ schemaLocation="vml-wordprocessingDrawing.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ schemaLocation="shared-relationshipReference.xsd"/>
+ <xsd:import namespace="urn:schemas-microsoft-com:office:excel"
+ schemaLocation="vml-spreadsheetDrawing.xsd"/>
+ <xsd:import namespace="urn:schemas-microsoft-com:office:powerpoint"
+ schemaLocation="vml-presentationDrawing.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:attributeGroup name="AG_Id">
+ <xsd:attribute name="id" type="xsd:string" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_Style">
+ <xsd:attribute name="style" type="xsd:string" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_Type">
+ <xsd:attribute name="type" type="xsd:string" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_Adj">
+ <xsd:attribute name="adj" type="xsd:string" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_Path">
+ <xsd:attribute name="path" type="xsd:string" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_Fill">
+ <xsd:attribute name="filled" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="fillcolor" type="s:ST_ColorType" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_Chromakey">
+ <xsd:attribute name="chromakey" type="s:ST_ColorType" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_Ext">
+ <xsd:attribute name="ext" form="qualified" type="ST_Ext"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_CoreAttributes">
+ <xsd:attributeGroup ref="AG_Id"/>
+ <xsd:attributeGroup ref="AG_Style"/>
+ <xsd:attribute name="href" type="xsd:string" use="optional"/>
+ <xsd:attribute name="target" type="xsd:string" use="optional"/>
+ <xsd:attribute name="class" type="xsd:string" use="optional"/>
+ <xsd:attribute name="title" type="xsd:string" use="optional"/>
+ <xsd:attribute name="alt" type="xsd:string" use="optional"/>
+ <xsd:attribute name="coordsize" type="xsd:string" use="optional"/>
+ <xsd:attribute name="coordorigin" type="xsd:string" use="optional"/>
+ <xsd:attribute name="wrapcoords" type="xsd:string" use="optional"/>
+ <xsd:attribute name="print" type="s:ST_TrueFalse" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_ShapeAttributes">
+ <xsd:attributeGroup ref="AG_Chromakey"/>
+ <xsd:attributeGroup ref="AG_Fill"/>
+ <xsd:attribute name="opacity" type="xsd:string" use="optional"/>
+ <xsd:attribute name="stroked" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="strokecolor" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="strokeweight" type="xsd:string" use="optional"/>
+ <xsd:attribute name="insetpen" type="s:ST_TrueFalse" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_OfficeCoreAttributes">
+ <xsd:attribute ref="o:spid"/>
+ <xsd:attribute ref="o:oned"/>
+ <xsd:attribute ref="o:regroupid"/>
+ <xsd:attribute ref="o:doubleclicknotify"/>
+ <xsd:attribute ref="o:button"/>
+ <xsd:attribute ref="o:userhidden"/>
+ <xsd:attribute ref="o:bullet"/>
+ <xsd:attribute ref="o:hr"/>
+ <xsd:attribute ref="o:hrstd"/>
+ <xsd:attribute ref="o:hrnoshade"/>
+ <xsd:attribute ref="o:hrpct"/>
+ <xsd:attribute ref="o:hralign"/>
+ <xsd:attribute ref="o:allowincell"/>
+ <xsd:attribute ref="o:allowoverlap"/>
+ <xsd:attribute ref="o:userdrawn"/>
+ <xsd:attribute ref="o:bordertopcolor"/>
+ <xsd:attribute ref="o:borderleftcolor"/>
+ <xsd:attribute ref="o:borderbottomcolor"/>
+ <xsd:attribute ref="o:borderrightcolor"/>
+ <xsd:attribute ref="o:dgmlayout"/>
+ <xsd:attribute ref="o:dgmnodekind"/>
+ <xsd:attribute ref="o:dgmlayoutmru"/>
+ <xsd:attribute ref="o:insetmode"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_OfficeShapeAttributes">
+ <xsd:attribute ref="o:spt"/>
+ <xsd:attribute ref="o:connectortype"/>
+ <xsd:attribute ref="o:bwmode"/>
+ <xsd:attribute ref="o:bwpure"/>
+ <xsd:attribute ref="o:bwnormal"/>
+ <xsd:attribute ref="o:forcedash"/>
+ <xsd:attribute ref="o:oleicon"/>
+ <xsd:attribute ref="o:ole"/>
+ <xsd:attribute ref="o:preferrelative"/>
+ <xsd:attribute ref="o:cliptowrap"/>
+ <xsd:attribute ref="o:clip"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_AllCoreAttributes">
+ <xsd:attributeGroup ref="AG_CoreAttributes"/>
+ <xsd:attributeGroup ref="AG_OfficeCoreAttributes"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_AllShapeAttributes">
+ <xsd:attributeGroup ref="AG_ShapeAttributes"/>
+ <xsd:attributeGroup ref="AG_OfficeShapeAttributes"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_ImageAttributes">
+ <xsd:attribute name="src" type="xsd:string" use="optional"/>
+ <xsd:attribute name="cropleft" type="xsd:string" use="optional"/>
+ <xsd:attribute name="croptop" type="xsd:string" use="optional"/>
+ <xsd:attribute name="cropright" type="xsd:string" use="optional"/>
+ <xsd:attribute name="cropbottom" type="xsd:string" use="optional"/>
+ <xsd:attribute name="gain" type="xsd:string" use="optional"/>
+ <xsd:attribute name="blacklevel" type="xsd:string" use="optional"/>
+ <xsd:attribute name="gamma" type="xsd:string" use="optional"/>
+ <xsd:attribute name="grayscale" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="bilevel" type="s:ST_TrueFalse" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_StrokeAttributes">
+ <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="weight" type="xsd:string" use="optional"/>
+ <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="opacity" type="xsd:string" use="optional"/>
+ <xsd:attribute name="linestyle" type="ST_StrokeLineStyle" use="optional"/>
+ <xsd:attribute name="miterlimit" type="xsd:decimal" use="optional"/>
+ <xsd:attribute name="joinstyle" type="ST_StrokeJoinStyle" use="optional"/>
+ <xsd:attribute name="endcap" type="ST_StrokeEndCap" use="optional"/>
+ <xsd:attribute name="dashstyle" type="xsd:string" use="optional"/>
+ <xsd:attribute name="filltype" type="ST_FillType" use="optional"/>
+ <xsd:attribute name="src" type="xsd:string" use="optional"/>
+ <xsd:attribute name="imageaspect" type="ST_ImageAspect" use="optional"/>
+ <xsd:attribute name="imagesize" type="xsd:string" use="optional"/>
+ <xsd:attribute name="imagealignshape" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="startarrow" type="ST_StrokeArrowType" use="optional"/>
+ <xsd:attribute name="startarrowwidth" type="ST_StrokeArrowWidth" use="optional"/>
+ <xsd:attribute name="startarrowlength" type="ST_StrokeArrowLength" use="optional"/>
+ <xsd:attribute name="endarrow" type="ST_StrokeArrowType" use="optional"/>
+ <xsd:attribute name="endarrowwidth" type="ST_StrokeArrowWidth" use="optional"/>
+ <xsd:attribute name="endarrowlength" type="ST_StrokeArrowLength" use="optional"/>
+ <xsd:attribute ref="o:href"/>
+ <xsd:attribute ref="o:althref"/>
+ <xsd:attribute ref="o:title"/>
+ <xsd:attribute ref="o:forcedash"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ <xsd:attribute name="insetpen" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute ref="o:relid"/>
+ </xsd:attributeGroup>
+ <xsd:group name="EG_ShapeElements">
+ <xsd:choice>
+ <xsd:element ref="path"/>
+ <xsd:element ref="formulas"/>
+ <xsd:element ref="handles"/>
+ <xsd:element ref="fill"/>
+ <xsd:element ref="stroke"/>
+ <xsd:element ref="shadow"/>
+ <xsd:element ref="textbox"/>
+ <xsd:element ref="textpath"/>
+ <xsd:element ref="imagedata"/>
+ <xsd:element ref="o:skew"/>
+ <xsd:element ref="o:extrusion"/>
+ <xsd:element ref="o:callout"/>
+ <xsd:element ref="o:lock"/>
+ <xsd:element ref="o:clippath"/>
+ <xsd:element ref="o:signatureline"/>
+ <xsd:element ref="w10:wrap"/>
+ <xsd:element ref="w10:anchorlock"/>
+ <xsd:element ref="w10:bordertop"/>
+ <xsd:element ref="w10:borderbottom"/>
+ <xsd:element ref="w10:borderleft"/>
+ <xsd:element ref="w10:borderright"/>
+ <xsd:element ref="x:ClientData" minOccurs="0"/>
+ <xsd:element ref="pvml:textdata" minOccurs="0"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:element name="shape" type="CT_Shape"/>
+ <xsd:element name="shapetype" type="CT_Shapetype"/>
+ <xsd:element name="group" type="CT_Group"/>
+ <xsd:element name="background" type="CT_Background"/>
+ <xsd:complexType name="CT_Shape">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:group ref="EG_ShapeElements"/>
+ <xsd:element ref="o:ink"/>
+ <xsd:element ref="pvml:iscomment"/>
+ <xsd:element ref="o:equationxml"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ <xsd:attributeGroup ref="AG_Type"/>
+ <xsd:attributeGroup ref="AG_Adj"/>
+ <xsd:attributeGroup ref="AG_Path"/>
+ <xsd:attribute ref="o:gfxdata"/>
+ <xsd:attribute name="equationxml" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Shapetype">
+ <xsd:sequence>
+ <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element ref="o:complex" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ <xsd:attributeGroup ref="AG_Adj"/>
+ <xsd:attributeGroup ref="AG_Path"/>
+ <xsd:attribute ref="o:master"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Group">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:group ref="EG_ShapeElements"/>
+ <xsd:element ref="group"/>
+ <xsd:element ref="shape"/>
+ <xsd:element ref="shapetype"/>
+ <xsd:element ref="arc"/>
+ <xsd:element ref="curve"/>
+ <xsd:element ref="image"/>
+ <xsd:element ref="line"/>
+ <xsd:element ref="oval"/>
+ <xsd:element ref="polyline"/>
+ <xsd:element ref="rect"/>
+ <xsd:element ref="roundrect"/>
+ <xsd:element ref="o:diagram"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_Fill"/>
+ <xsd:attribute name="editas" type="ST_EditAs" use="optional"/>
+ <xsd:attribute ref="o:tableproperties"/>
+ <xsd:attribute ref="o:tablelimits"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Background">
+ <xsd:sequence>
+ <xsd:element ref="fill" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_Id"/>
+ <xsd:attributeGroup ref="AG_Fill"/>
+ <xsd:attribute ref="o:bwmode"/>
+ <xsd:attribute ref="o:bwpure"/>
+ <xsd:attribute ref="o:bwnormal"/>
+ <xsd:attribute ref="o:targetscreensize"/>
+ </xsd:complexType>
+ <xsd:element name="fill" type="CT_Fill"/>
+ <xsd:element name="formulas" type="CT_Formulas"/>
+ <xsd:element name="handles" type="CT_Handles"/>
+ <xsd:element name="imagedata" type="CT_ImageData"/>
+ <xsd:element name="path" type="CT_Path"/>
+ <xsd:element name="textbox" type="CT_Textbox"/>
+ <xsd:element name="shadow" type="CT_Shadow"/>
+ <xsd:element name="stroke" type="CT_Stroke"/>
+ <xsd:element name="textpath" type="CT_TextPath"/>
+ <xsd:complexType name="CT_Fill">
+ <xsd:sequence>
+ <xsd:element ref="o:fill" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_Id"/>
+ <xsd:attribute name="type" type="ST_FillType" use="optional"/>
+ <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="opacity" type="xsd:string" use="optional"/>
+ <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="src" type="xsd:string" use="optional"/>
+ <xsd:attribute ref="o:href"/>
+ <xsd:attribute ref="o:althref"/>
+ <xsd:attribute name="size" type="xsd:string" use="optional"/>
+ <xsd:attribute name="origin" type="xsd:string" use="optional"/>
+ <xsd:attribute name="position" type="xsd:string" use="optional"/>
+ <xsd:attribute name="aspect" type="ST_ImageAspect" use="optional"/>
+ <xsd:attribute name="colors" type="xsd:string" use="optional"/>
+ <xsd:attribute name="angle" type="xsd:decimal" use="optional"/>
+ <xsd:attribute name="alignshape" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="focus" type="xsd:string" use="optional"/>
+ <xsd:attribute name="focussize" type="xsd:string" use="optional"/>
+ <xsd:attribute name="focusposition" type="xsd:string" use="optional"/>
+ <xsd:attribute name="method" type="ST_FillMethod" use="optional"/>
+ <xsd:attribute ref="o:detectmouseclick"/>
+ <xsd:attribute ref="o:title"/>
+ <xsd:attribute ref="o:opacity2"/>
+ <xsd:attribute name="recolor" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="rotate" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ <xsd:attribute ref="o:relid" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Formulas">
+ <xsd:sequence>
+ <xsd:element name="f" type="CT_F" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_F">
+ <xsd:attribute name="eqn" type="xsd:string"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Handles">
+ <xsd:sequence>
+ <xsd:element name="h" type="CT_H" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_H">
+ <xsd:attribute name="position" type="xsd:string"/>
+ <xsd:attribute name="polar" type="xsd:string"/>
+ <xsd:attribute name="map" type="xsd:string"/>
+ <xsd:attribute name="invx" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="invy" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="switch" type="s:ST_TrueFalseBlank"/>
+ <xsd:attribute name="xrange" type="xsd:string"/>
+ <xsd:attribute name="yrange" type="xsd:string"/>
+ <xsd:attribute name="radiusrange" type="xsd:string"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ImageData">
+ <xsd:attributeGroup ref="AG_Id"/>
+ <xsd:attributeGroup ref="AG_ImageAttributes"/>
+ <xsd:attributeGroup ref="AG_Chromakey"/>
+ <xsd:attribute name="embosscolor" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="recolortarget" type="s:ST_ColorType"/>
+ <xsd:attribute ref="o:href"/>
+ <xsd:attribute ref="o:althref"/>
+ <xsd:attribute ref="o:title"/>
+ <xsd:attribute ref="o:oleid"/>
+ <xsd:attribute ref="o:detectmouseclick"/>
+ <xsd:attribute ref="o:movie"/>
+ <xsd:attribute ref="o:relid"/>
+ <xsd:attribute ref="r:id"/>
+ <xsd:attribute ref="r:pict"/>
+ <xsd:attribute ref="r:href"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Path">
+ <xsd:attributeGroup ref="AG_Id"/>
+ <xsd:attribute name="v" type="xsd:string" use="optional"/>
+ <xsd:attribute name="limo" type="xsd:string" use="optional"/>
+ <xsd:attribute name="textboxrect" type="xsd:string" use="optional"/>
+ <xsd:attribute name="fillok" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="strokeok" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="shadowok" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="arrowok" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="gradientshapeok" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="textpathok" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="insetpenok" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute ref="o:connecttype"/>
+ <xsd:attribute ref="o:connectlocs"/>
+ <xsd:attribute ref="o:connectangles"/>
+ <xsd:attribute ref="o:extrusionok"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Shadow">
+ <xsd:attributeGroup ref="AG_Id"/>
+ <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="type" type="ST_ShadowType" use="optional"/>
+ <xsd:attribute name="obscured" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="opacity" type="xsd:string" use="optional"/>
+ <xsd:attribute name="offset" type="xsd:string" use="optional"/>
+ <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="offset2" type="xsd:string" use="optional"/>
+ <xsd:attribute name="origin" type="xsd:string" use="optional"/>
+ <xsd:attribute name="matrix" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Stroke">
+ <xsd:sequence>
+ <xsd:element ref="o:left" minOccurs="0"/>
+ <xsd:element ref="o:top" minOccurs="0"/>
+ <xsd:element ref="o:right" minOccurs="0"/>
+ <xsd:element ref="o:bottom" minOccurs="0"/>
+ <xsd:element ref="o:column" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_Id"/>
+ <xsd:attributeGroup ref="AG_StrokeAttributes"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Textbox">
+ <xsd:choice>
+ <xsd:element ref="w:txbxContent" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_Id"/>
+ <xsd:attributeGroup ref="AG_Style"/>
+ <xsd:attribute name="inset" type="xsd:string" use="optional"/>
+ <xsd:attribute ref="o:singleclick"/>
+ <xsd:attribute ref="o:insetmode"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TextPath">
+ <xsd:attributeGroup ref="AG_Id"/>
+ <xsd:attributeGroup ref="AG_Style"/>
+ <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="fitshape" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="fitpath" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="trim" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="xscale" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="string" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:element name="arc" type="CT_Arc"/>
+ <xsd:element name="curve" type="CT_Curve"/>
+ <xsd:element name="image" type="CT_Image"/>
+ <xsd:element name="line" type="CT_Line"/>
+ <xsd:element name="oval" type="CT_Oval"/>
+ <xsd:element name="polyline" type="CT_PolyLine"/>
+ <xsd:element name="rect" type="CT_Rect"/>
+ <xsd:element name="roundrect" type="CT_RoundRect"/>
+ <xsd:complexType name="CT_Arc">
+ <xsd:sequence>
+ <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ <xsd:attribute name="startAngle" type="xsd:decimal" use="optional"/>
+ <xsd:attribute name="endAngle" type="xsd:decimal" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Curve">
+ <xsd:sequence>
+ <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ <xsd:attribute name="from" type="xsd:string" use="optional"/>
+ <xsd:attribute name="control1" type="xsd:string" use="optional"/>
+ <xsd:attribute name="control2" type="xsd:string" use="optional"/>
+ <xsd:attribute name="to" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Image">
+ <xsd:sequence>
+ <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ <xsd:attributeGroup ref="AG_ImageAttributes"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Line">
+ <xsd:sequence>
+ <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ <xsd:attribute name="from" type="xsd:string" use="optional"/>
+ <xsd:attribute name="to" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Oval">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PolyLine">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:group ref="EG_ShapeElements"/>
+ <xsd:element ref="o:ink"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ <xsd:attribute name="points" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Rect">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RoundRect">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ <xsd:attributeGroup ref="AG_AllCoreAttributes"/>
+ <xsd:attributeGroup ref="AG_AllShapeAttributes"/>
+ <xsd:attribute name="arcsize" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Ext">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="view"/>
+ <xsd:enumeration value="edit"/>
+ <xsd:enumeration value="backwardCompatible"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FillType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="solid"/>
+ <xsd:enumeration value="gradient"/>
+ <xsd:enumeration value="gradientRadial"/>
+ <xsd:enumeration value="tile"/>
+ <xsd:enumeration value="pattern"/>
+ <xsd:enumeration value="frame"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FillMethod">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="linear"/>
+ <xsd:enumeration value="sigma"/>
+ <xsd:enumeration value="any"/>
+ <xsd:enumeration value="linear sigma"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ShadowType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="single"/>
+ <xsd:enumeration value="double"/>
+ <xsd:enumeration value="emboss"/>
+ <xsd:enumeration value="perspective"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_StrokeLineStyle">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="single"/>
+ <xsd:enumeration value="thinThin"/>
+ <xsd:enumeration value="thinThick"/>
+ <xsd:enumeration value="thickThin"/>
+ <xsd:enumeration value="thickBetweenThin"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_StrokeJoinStyle">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="round"/>
+ <xsd:enumeration value="bevel"/>
+ <xsd:enumeration value="miter"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_StrokeEndCap">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="flat"/>
+ <xsd:enumeration value="square"/>
+ <xsd:enumeration value="round"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_StrokeArrowLength">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="short"/>
+ <xsd:enumeration value="medium"/>
+ <xsd:enumeration value="long"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_StrokeArrowWidth">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="narrow"/>
+ <xsd:enumeration value="medium"/>
+ <xsd:enumeration value="wide"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_StrokeArrowType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="block"/>
+ <xsd:enumeration value="classic"/>
+ <xsd:enumeration value="oval"/>
+ <xsd:enumeration value="diamond"/>
+ <xsd:enumeration value="open"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ImageAspect">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="ignore"/>
+ <xsd:enumeration value="atMost"/>
+ <xsd:enumeration value="atLeast"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_EditAs">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="canvas"/>
+ <xsd:enumeration value="orgchart"/>
+ <xsd:enumeration value="radial"/>
+ <xsd:enumeration value="cycle"/>
+ <xsd:enumeration value="stacked"/>
+ <xsd:enumeration value="venn"/>
+ <xsd:enumeration value="bullseye"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/schema/vml-officeDrawing.xsd b/lib/schema/vml-officeDrawing.xsd
new file mode 100644
index 00000000..ca2575c7
--- /dev/null
+++ b/lib/schema/vml-officeDrawing.xsd
@@ -0,0 +1,509 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml"
+ xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ targetNamespace="urn:schemas-microsoft-com:office:office" elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xsd:import namespace="urn:schemas-microsoft-com:vml" schemaLocation="vml-main.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ schemaLocation="shared-relationshipReference.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:attribute name="bwmode" type="ST_BWMode"/>
+ <xsd:attribute name="bwpure" type="ST_BWMode"/>
+ <xsd:attribute name="bwnormal" type="ST_BWMode"/>
+ <xsd:attribute name="targetscreensize" type="ST_ScreenSize"/>
+ <xsd:attribute name="insetmode" type="ST_InsetMode" default="custom"/>
+ <xsd:attribute name="spt" type="xsd:float"/>
+ <xsd:attribute name="wrapcoords" type="xsd:string"/>
+ <xsd:attribute name="oned" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="regroupid" type="xsd:integer"/>
+ <xsd:attribute name="doubleclicknotify" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="connectortype" type="ST_ConnectorType" default="straight"/>
+ <xsd:attribute name="button" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="userhidden" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="forcedash" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="oleicon" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="ole" type="s:ST_TrueFalseBlank"/>
+ <xsd:attribute name="preferrelative" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="cliptowrap" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="clip" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="bullet" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="hr" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="hrstd" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="hrnoshade" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="hrpct" type="xsd:float"/>
+ <xsd:attribute name="hralign" type="ST_HrAlign" default="left"/>
+ <xsd:attribute name="allowincell" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="allowoverlap" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="userdrawn" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="bordertopcolor" type="xsd:string"/>
+ <xsd:attribute name="borderleftcolor" type="xsd:string"/>
+ <xsd:attribute name="borderbottomcolor" type="xsd:string"/>
+ <xsd:attribute name="borderrightcolor" type="xsd:string"/>
+ <xsd:attribute name="connecttype" type="ST_ConnectType"/>
+ <xsd:attribute name="connectlocs" type="xsd:string"/>
+ <xsd:attribute name="connectangles" type="xsd:string"/>
+ <xsd:attribute name="master" type="xsd:string"/>
+ <xsd:attribute name="extrusionok" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="href" type="xsd:string"/>
+ <xsd:attribute name="althref" type="xsd:string"/>
+ <xsd:attribute name="title" type="xsd:string"/>
+ <xsd:attribute name="singleclick" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="oleid" type="xsd:float"/>
+ <xsd:attribute name="detectmouseclick" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="movie" type="xsd:float"/>
+ <xsd:attribute name="spid" type="xsd:string"/>
+ <xsd:attribute name="opacity2" type="xsd:string"/>
+ <xsd:attribute name="relid" type="r:ST_RelationshipId"/>
+ <xsd:attribute name="dgmlayout" type="ST_DiagramLayout"/>
+ <xsd:attribute name="dgmnodekind" type="xsd:integer"/>
+ <xsd:attribute name="dgmlayoutmru" type="ST_DiagramLayout"/>
+ <xsd:attribute name="gfxdata" type="xsd:base64Binary"/>
+ <xsd:attribute name="tableproperties" type="xsd:string"/>
+ <xsd:attribute name="tablelimits" type="xsd:string"/>
+ <xsd:element name="shapedefaults" type="CT_ShapeDefaults"/>
+ <xsd:element name="shapelayout" type="CT_ShapeLayout"/>
+ <xsd:element name="signatureline" type="CT_SignatureLine"/>
+ <xsd:element name="ink" type="CT_Ink"/>
+ <xsd:element name="diagram" type="CT_Diagram"/>
+ <xsd:element name="equationxml" type="CT_EquationXml"/>
+ <xsd:complexType name="CT_ShapeDefaults">
+ <xsd:all minOccurs="0">
+ <xsd:element ref="v:fill" minOccurs="0"/>
+ <xsd:element ref="v:stroke" minOccurs="0"/>
+ <xsd:element ref="v:textbox" minOccurs="0"/>
+ <xsd:element ref="v:shadow" minOccurs="0"/>
+ <xsd:element ref="skew" minOccurs="0"/>
+ <xsd:element ref="extrusion" minOccurs="0"/>
+ <xsd:element ref="callout" minOccurs="0"/>
+ <xsd:element ref="lock" minOccurs="0"/>
+ <xsd:element name="colormru" minOccurs="0" type="CT_ColorMru"/>
+ <xsd:element name="colormenu" minOccurs="0" type="CT_ColorMenu"/>
+ </xsd:all>
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="spidmax" type="xsd:integer" use="optional"/>
+ <xsd:attribute name="style" type="xsd:string" use="optional"/>
+ <xsd:attribute name="fill" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="fillcolor" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="stroke" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="strokecolor" type="s:ST_ColorType"/>
+ <xsd:attribute name="allowincell" form="qualified" type="s:ST_TrueFalse"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Ink">
+ <xsd:sequence/>
+ <xsd:attribute name="i" type="xsd:string"/>
+ <xsd:attribute name="annotation" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="contentType" type="ST_ContentType" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SignatureLine">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="issignatureline" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="id" type="s:ST_Guid"/>
+ <xsd:attribute name="provid" type="s:ST_Guid"/>
+ <xsd:attribute name="signinginstructionsset" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="allowcomments" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="showsigndate" type="s:ST_TrueFalse"/>
+ <xsd:attribute name="suggestedsigner" type="xsd:string" form="qualified"/>
+ <xsd:attribute name="suggestedsigner2" type="xsd:string" form="qualified"/>
+ <xsd:attribute name="suggestedsigneremail" type="xsd:string" form="qualified"/>
+ <xsd:attribute name="signinginstructions" type="xsd:string"/>
+ <xsd:attribute name="addlxml" type="xsd:string"/>
+ <xsd:attribute name="sigprovurl" type="xsd:string"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ShapeLayout">
+ <xsd:all>
+ <xsd:element name="idmap" type="CT_IdMap" minOccurs="0"/>
+ <xsd:element name="regrouptable" type="CT_RegroupTable" minOccurs="0"/>
+ <xsd:element name="rules" type="CT_Rules" minOccurs="0"/>
+ </xsd:all>
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_IdMap">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="data" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RegroupTable">
+ <xsd:sequence>
+ <xsd:element name="entry" type="CT_Entry" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Entry">
+ <xsd:attribute name="new" type="xsd:int" use="optional"/>
+ <xsd:attribute name="old" type="xsd:int" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Rules">
+ <xsd:sequence>
+ <xsd:element name="r" type="CT_R" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_R">
+ <xsd:sequence>
+ <xsd:element name="proxy" type="CT_Proxy" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:string" use="required"/>
+ <xsd:attribute name="type" type="ST_RType" use="optional"/>
+ <xsd:attribute name="how" type="ST_How" use="optional"/>
+ <xsd:attribute name="idref" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Proxy">
+ <xsd:attribute name="start" type="s:ST_TrueFalseBlank" use="optional" default="false"/>
+ <xsd:attribute name="end" type="s:ST_TrueFalseBlank" use="optional" default="false"/>
+ <xsd:attribute name="idref" type="xsd:string" use="optional"/>
+ <xsd:attribute name="connectloc" type="xsd:int" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Diagram">
+ <xsd:sequence>
+ <xsd:element name="relationtable" type="CT_RelationTable" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="dgmstyle" type="xsd:integer" use="optional"/>
+ <xsd:attribute name="autoformat" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="reverse" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="autolayout" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="dgmscalex" type="xsd:integer" use="optional"/>
+ <xsd:attribute name="dgmscaley" type="xsd:integer" use="optional"/>
+ <xsd:attribute name="dgmfontsize" type="xsd:integer" use="optional"/>
+ <xsd:attribute name="constrainbounds" type="xsd:string" use="optional"/>
+ <xsd:attribute name="dgmbasetextscale" type="xsd:integer" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EquationXml">
+ <xsd:sequence>
+ <xsd:any namespace="##any"/>
+ </xsd:sequence>
+ <xsd:attribute name="contentType" type="ST_AlternateMathContentType" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_AlternateMathContentType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_RelationTable">
+ <xsd:sequence>
+ <xsd:element name="rel" type="CT_Relation" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Relation">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="idsrc" type="xsd:string" use="optional"/>
+ <xsd:attribute name="iddest" type="xsd:string" use="optional"/>
+ <xsd:attribute name="idcntr" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorMru">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="colors" type="xsd:string"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ColorMenu">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="strokecolor" type="s:ST_ColorType"/>
+ <xsd:attribute name="fillcolor" type="s:ST_ColorType"/>
+ <xsd:attribute name="shadowcolor" type="s:ST_ColorType"/>
+ <xsd:attribute name="extrusioncolor" type="s:ST_ColorType"/>
+ </xsd:complexType>
+ <xsd:element name="skew" type="CT_Skew"/>
+ <xsd:element name="extrusion" type="CT_Extrusion"/>
+ <xsd:element name="callout" type="CT_Callout"/>
+ <xsd:element name="lock" type="CT_Lock"/>
+ <xsd:element name="OLEObject" type="CT_OLEObject"/>
+ <xsd:element name="complex" type="CT_Complex"/>
+ <xsd:element name="left" type="CT_StrokeChild"/>
+ <xsd:element name="top" type="CT_StrokeChild"/>
+ <xsd:element name="right" type="CT_StrokeChild"/>
+ <xsd:element name="bottom" type="CT_StrokeChild"/>
+ <xsd:element name="column" type="CT_StrokeChild"/>
+ <xsd:element name="clippath" type="CT_ClipPath"/>
+ <xsd:element name="fill" type="CT_Fill"/>
+ <xsd:complexType name="CT_Skew">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="id" type="xsd:string" use="optional"/>
+ <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="offset" type="xsd:string" use="optional"/>
+ <xsd:attribute name="origin" type="xsd:string" use="optional"/>
+ <xsd:attribute name="matrix" type="xsd:string" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Extrusion">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="type" type="ST_ExtrusionType" default="parallel" use="optional"/>
+ <xsd:attribute name="render" type="ST_ExtrusionRender" default="solid" use="optional"/>
+ <xsd:attribute name="viewpointorigin" type="xsd:string" use="optional"/>
+ <xsd:attribute name="viewpoint" type="xsd:string" use="optional"/>
+ <xsd:attribute name="plane" type="ST_ExtrusionPlane" default="XY" use="optional"/>
+ <xsd:attribute name="skewangle" type="xsd:float" use="optional"/>
+ <xsd:attribute name="skewamt" type="xsd:string" use="optional"/>
+ <xsd:attribute name="foredepth" type="xsd:string" use="optional"/>
+ <xsd:attribute name="backdepth" type="xsd:string" use="optional"/>
+ <xsd:attribute name="orientation" type="xsd:string" use="optional"/>
+ <xsd:attribute name="orientationangle" type="xsd:float" use="optional"/>
+ <xsd:attribute name="lockrotationcenter" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="autorotationcenter" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="rotationcenter" type="xsd:string" use="optional"/>
+ <xsd:attribute name="rotationangle" type="xsd:string" use="optional"/>
+ <xsd:attribute name="colormode" type="ST_ColorMode" use="optional"/>
+ <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="shininess" type="xsd:float" use="optional"/>
+ <xsd:attribute name="specularity" type="xsd:string" use="optional"/>
+ <xsd:attribute name="diffusity" type="xsd:string" use="optional"/>
+ <xsd:attribute name="metal" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="edge" type="xsd:string" use="optional"/>
+ <xsd:attribute name="facet" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lightface" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="brightness" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lightposition" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lightlevel" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lightharsh" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="lightposition2" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lightlevel2" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lightharsh2" type="s:ST_TrueFalse" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Callout">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="type" type="xsd:string" use="optional"/>
+ <xsd:attribute name="gap" type="xsd:string" use="optional"/>
+ <xsd:attribute name="angle" type="ST_Angle" use="optional"/>
+ <xsd:attribute name="dropauto" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="drop" type="ST_CalloutDrop" use="optional"/>
+ <xsd:attribute name="distance" type="xsd:string" use="optional"/>
+ <xsd:attribute name="lengthspecified" type="s:ST_TrueFalse" default="f" use="optional"/>
+ <xsd:attribute name="length" type="xsd:string" use="optional"/>
+ <xsd:attribute name="accentbar" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="textborder" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="minusx" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="minusy" type="s:ST_TrueFalse" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Lock">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="position" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="selection" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="grouping" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="ungrouping" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="rotation" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="cropping" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="verticies" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="adjusthandles" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="text" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="aspectratio" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="shapetype" type="s:ST_TrueFalse" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OLEObject">
+ <xsd:sequence>
+ <xsd:element name="LinkType" type="ST_OLELinkType" minOccurs="0"/>
+ <xsd:element name="LockedField" type="s:ST_TrueFalseBlank" minOccurs="0"/>
+ <xsd:element name="FieldCodes" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="Type" type="ST_OLEType" use="optional"/>
+ <xsd:attribute name="ProgID" type="xsd:string" use="optional"/>
+ <xsd:attribute name="ShapeID" type="xsd:string" use="optional"/>
+ <xsd:attribute name="DrawAspect" type="ST_OLEDrawAspect" use="optional"/>
+ <xsd:attribute name="ObjectID" type="xsd:string" use="optional"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ <xsd:attribute name="UpdateMode" type="ST_OLEUpdateMode" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Complex">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StrokeChild">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="weight" type="xsd:string" use="optional"/>
+ <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/>
+ <xsd:attribute name="opacity" type="xsd:string" use="optional"/>
+ <xsd:attribute name="linestyle" type="v:ST_StrokeLineStyle" use="optional"/>
+ <xsd:attribute name="miterlimit" type="xsd:decimal" use="optional"/>
+ <xsd:attribute name="joinstyle" type="v:ST_StrokeJoinStyle" use="optional"/>
+ <xsd:attribute name="endcap" type="v:ST_StrokeEndCap" use="optional"/>
+ <xsd:attribute name="dashstyle" type="xsd:string" use="optional"/>
+ <xsd:attribute name="insetpen" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="filltype" type="v:ST_FillType" use="optional"/>
+ <xsd:attribute name="src" type="xsd:string" use="optional"/>
+ <xsd:attribute name="imageaspect" type="v:ST_ImageAspect" use="optional"/>
+ <xsd:attribute name="imagesize" type="xsd:string" use="optional"/>
+ <xsd:attribute name="imagealignshape" type="s:ST_TrueFalse" use="optional"/>
+ <xsd:attribute name="startarrow" type="v:ST_StrokeArrowType" use="optional"/>
+ <xsd:attribute name="startarrowwidth" type="v:ST_StrokeArrowWidth" use="optional"/>
+ <xsd:attribute name="startarrowlength" type="v:ST_StrokeArrowLength" use="optional"/>
+ <xsd:attribute name="endarrow" type="v:ST_StrokeArrowType" use="optional"/>
+ <xsd:attribute name="endarrowwidth" type="v:ST_StrokeArrowWidth" use="optional"/>
+ <xsd:attribute name="endarrowlength" type="v:ST_StrokeArrowLength" use="optional"/>
+ <xsd:attribute ref="href"/>
+ <xsd:attribute ref="althref"/>
+ <xsd:attribute ref="title"/>
+ <xsd:attribute ref="forcedash"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ClipPath">
+ <xsd:attribute name="v" type="xsd:string" use="required" form="qualified"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Fill">
+ <xsd:attributeGroup ref="v:AG_Ext"/>
+ <xsd:attribute name="type" type="ST_FillType"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_RType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="arc"/>
+ <xsd:enumeration value="callout"/>
+ <xsd:enumeration value="connector"/>
+ <xsd:enumeration value="align"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_How">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="top"/>
+ <xsd:enumeration value="middle"/>
+ <xsd:enumeration value="bottom"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="right"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_BWMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="color"/>
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="grayScale"/>
+ <xsd:enumeration value="lightGrayscale"/>
+ <xsd:enumeration value="inverseGray"/>
+ <xsd:enumeration value="grayOutline"/>
+ <xsd:enumeration value="highContrast"/>
+ <xsd:enumeration value="black"/>
+ <xsd:enumeration value="white"/>
+ <xsd:enumeration value="hide"/>
+ <xsd:enumeration value="undrawn"/>
+ <xsd:enumeration value="blackTextAndLines"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ScreenSize">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="544,376"/>
+ <xsd:enumeration value="640,480"/>
+ <xsd:enumeration value="720,512"/>
+ <xsd:enumeration value="800,600"/>
+ <xsd:enumeration value="1024,768"/>
+ <xsd:enumeration value="1152,862"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_InsetMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ColorMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ContentType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DiagramLayout">
+ <xsd:restriction base="xsd:integer">
+ <xsd:enumeration value="0"/>
+ <xsd:enumeration value="1"/>
+ <xsd:enumeration value="2"/>
+ <xsd:enumeration value="3"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ExtrusionType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="perspective"/>
+ <xsd:enumeration value="parallel"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ExtrusionRender">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="solid"/>
+ <xsd:enumeration value="wireFrame"/>
+ <xsd:enumeration value="boundingCube"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ExtrusionPlane">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="XY"/>
+ <xsd:enumeration value="ZX"/>
+ <xsd:enumeration value="YZ"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Angle">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="any"/>
+ <xsd:enumeration value="30"/>
+ <xsd:enumeration value="45"/>
+ <xsd:enumeration value="60"/>
+ <xsd:enumeration value="90"/>
+ <xsd:enumeration value="auto"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CalloutDrop">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_CalloutPlacement">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="top"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="bottom"/>
+ <xsd:enumeration value="user"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ConnectorType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="straight"/>
+ <xsd:enumeration value="elbow"/>
+ <xsd:enumeration value="curved"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HrAlign">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="center"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ConnectType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="rect"/>
+ <xsd:enumeration value="segments"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OLELinkType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OLEType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Embed"/>
+ <xsd:enumeration value="Link"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OLEDrawAspect">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Content"/>
+ <xsd:enumeration value="Icon"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_OLEUpdateMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Always"/>
+ <xsd:enumeration value="OnCall"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FillType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="gradientCenter"/>
+ <xsd:enumeration value="solid"/>
+ <xsd:enumeration value="pattern"/>
+ <xsd:enumeration value="tile"/>
+ <xsd:enumeration value="frame"/>
+ <xsd:enumeration value="gradientUnscaled"/>
+ <xsd:enumeration value="gradientRadial"/>
+ <xsd:enumeration value="gradient"/>
+ <xsd:enumeration value="background"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/schema/vml-presentationDrawing.xsd b/lib/schema/vml-presentationDrawing.xsd
new file mode 100644
index 00000000..dd079e60
--- /dev/null
+++ b/lib/schema/vml-presentationDrawing.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:schemas-microsoft-com:office:powerpoint"
+ targetNamespace="urn:schemas-microsoft-com:office:powerpoint" elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xsd:element name="iscomment" type="CT_Empty"/>
+ <xsd:element name="textdata" type="CT_Rel"/>
+ <xsd:complexType name="CT_Empty"/>
+ <xsd:complexType name="CT_Rel">
+ <xsd:attribute name="id" type="xsd:string"/>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/lib/schema/vml-spreadsheetDrawing.xsd b/lib/schema/vml-spreadsheetDrawing.xsd
new file mode 100644
index 00000000..3dd6cf62
--- /dev/null
+++ b/lib/schema/vml-spreadsheetDrawing.xsd
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:schemas-microsoft-com:office:excel"
+ xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ targetNamespace="urn:schemas-microsoft-com:office:excel" elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:element name="ClientData" type="CT_ClientData"/>
+ <xsd:complexType name="CT_ClientData">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="MoveWithCells" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="SizeWithCells" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="Anchor" type="xsd:string"/>
+ <xsd:element name="Locked" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="DefaultSize" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="PrintObject" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="Disabled" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="AutoFill" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="AutoLine" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="AutoPict" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="FmlaMacro" type="xsd:string"/>
+ <xsd:element name="TextHAlign" type="xsd:string"/>
+ <xsd:element name="TextVAlign" type="xsd:string"/>
+ <xsd:element name="LockText" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="JustLastX" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="SecretEdit" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="Default" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="Help" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="Cancel" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="Dismiss" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="Accel" type="xsd:integer"/>
+ <xsd:element name="Accel2" type="xsd:integer"/>
+ <xsd:element name="Row" type="xsd:integer"/>
+ <xsd:element name="Column" type="xsd:integer"/>
+ <xsd:element name="Visible" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="RowHidden" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="ColHidden" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="VTEdit" type="xsd:integer"/>
+ <xsd:element name="MultiLine" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="VScroll" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="ValidIds" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="FmlaRange" type="xsd:string"/>
+ <xsd:element name="WidthMin" type="xsd:integer"/>
+ <xsd:element name="Sel" type="xsd:integer"/>
+ <xsd:element name="NoThreeD2" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="SelType" type="xsd:string"/>
+ <xsd:element name="MultiSel" type="xsd:string"/>
+ <xsd:element name="LCT" type="xsd:string"/>
+ <xsd:element name="ListItem" type="xsd:string"/>
+ <xsd:element name="DropStyle" type="xsd:string"/>
+ <xsd:element name="Colored" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="DropLines" type="xsd:integer"/>
+ <xsd:element name="Checked" type="xsd:integer"/>
+ <xsd:element name="FmlaLink" type="xsd:string"/>
+ <xsd:element name="FmlaPict" type="xsd:string"/>
+ <xsd:element name="NoThreeD" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="FirstButton" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="FmlaGroup" type="xsd:string"/>
+ <xsd:element name="Val" type="xsd:integer"/>
+ <xsd:element name="Min" type="xsd:integer"/>
+ <xsd:element name="Max" type="xsd:integer"/>
+ <xsd:element name="Inc" type="xsd:integer"/>
+ <xsd:element name="Page" type="xsd:integer"/>
+ <xsd:element name="Horiz" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="Dx" type="xsd:integer"/>
+ <xsd:element name="MapOCX" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="CF" type="ST_CF"/>
+ <xsd:element name="Camera" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="RecalcAlways" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="AutoScale" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="DDE" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="UIObj" type="s:ST_TrueFalseBlank"/>
+ <xsd:element name="ScriptText" type="xsd:string"/>
+ <xsd:element name="ScriptExtended" type="xsd:string"/>
+ <xsd:element name="ScriptLanguage" type="xsd:nonNegativeInteger"/>
+ <xsd:element name="ScriptLocation" type="xsd:nonNegativeInteger"/>
+ <xsd:element name="FmlaTxbx" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:attribute name="ObjectType" type="ST_ObjectType" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_CF">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_ObjectType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Button"/>
+ <xsd:enumeration value="Checkbox"/>
+ <xsd:enumeration value="Dialog"/>
+ <xsd:enumeration value="Drop"/>
+ <xsd:enumeration value="Edit"/>
+ <xsd:enumeration value="GBox"/>
+ <xsd:enumeration value="Label"/>
+ <xsd:enumeration value="LineA"/>
+ <xsd:enumeration value="List"/>
+ <xsd:enumeration value="Movie"/>
+ <xsd:enumeration value="Note"/>
+ <xsd:enumeration value="Pict"/>
+ <xsd:enumeration value="Radio"/>
+ <xsd:enumeration value="RectA"/>
+ <xsd:enumeration value="Scroll"/>
+ <xsd:enumeration value="Spin"/>
+ <xsd:enumeration value="Shape"/>
+ <xsd:enumeration value="Group"/>
+ <xsd:enumeration value="Rect"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/schema/vml-wordprocessingDrawing.xsd b/lib/schema/vml-wordprocessingDrawing.xsd
new file mode 100644
index 00000000..f1041e34
--- /dev/null
+++ b/lib/schema/vml-wordprocessingDrawing.xsd
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:schemas-microsoft-com:office:word"
+ targetNamespace="urn:schemas-microsoft-com:office:word" elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xsd:element name="bordertop" type="CT_Border"/>
+ <xsd:element name="borderleft" type="CT_Border"/>
+ <xsd:element name="borderright" type="CT_Border"/>
+ <xsd:element name="borderbottom" type="CT_Border"/>
+ <xsd:complexType name="CT_Border">
+ <xsd:attribute name="type" type="ST_BorderType" use="optional"/>
+ <xsd:attribute name="width" type="xsd:positiveInteger" use="optional"/>
+ <xsd:attribute name="shadow" type="ST_BorderShadow" use="optional"/>
+ </xsd:complexType>
+ <xsd:element name="wrap" type="CT_Wrap"/>
+ <xsd:complexType name="CT_Wrap">
+ <xsd:attribute name="type" type="ST_WrapType" use="optional"/>
+ <xsd:attribute name="side" type="ST_WrapSide" use="optional"/>
+ <xsd:attribute name="anchorx" type="ST_HorizontalAnchor" use="optional"/>
+ <xsd:attribute name="anchory" type="ST_VerticalAnchor" use="optional"/>
+ </xsd:complexType>
+ <xsd:element name="anchorlock" type="CT_AnchorLock"/>
+ <xsd:complexType name="CT_AnchorLock"/>
+ <xsd:simpleType name="ST_BorderType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="single"/>
+ <xsd:enumeration value="thick"/>
+ <xsd:enumeration value="double"/>
+ <xsd:enumeration value="hairline"/>
+ <xsd:enumeration value="dot"/>
+ <xsd:enumeration value="dash"/>
+ <xsd:enumeration value="dotDash"/>
+ <xsd:enumeration value="dashDotDot"/>
+ <xsd:enumeration value="triple"/>
+ <xsd:enumeration value="thinThickSmall"/>
+ <xsd:enumeration value="thickThinSmall"/>
+ <xsd:enumeration value="thickBetweenThinSmall"/>
+ <xsd:enumeration value="thinThick"/>
+ <xsd:enumeration value="thickThin"/>
+ <xsd:enumeration value="thickBetweenThin"/>
+ <xsd:enumeration value="thinThickLarge"/>
+ <xsd:enumeration value="thickThinLarge"/>
+ <xsd:enumeration value="thickBetweenThinLarge"/>
+ <xsd:enumeration value="wave"/>
+ <xsd:enumeration value="doubleWave"/>
+ <xsd:enumeration value="dashedSmall"/>
+ <xsd:enumeration value="dashDotStroked"/>
+ <xsd:enumeration value="threeDEmboss"/>
+ <xsd:enumeration value="threeDEngrave"/>
+ <xsd:enumeration value="HTMLOutset"/>
+ <xsd:enumeration value="HTMLInset"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_BorderShadow">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="t"/>
+ <xsd:enumeration value="true"/>
+ <xsd:enumeration value="f"/>
+ <xsd:enumeration value="false"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_WrapType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="topAndBottom"/>
+ <xsd:enumeration value="square"/>
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="tight"/>
+ <xsd:enumeration value="through"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_WrapSide">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="both"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="largest"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HorizontalAnchor">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="margin"/>
+ <xsd:enumeration value="page"/>
+ <xsd:enumeration value="text"/>
+ <xsd:enumeration value="char"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_VerticalAnchor">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="margin"/>
+ <xsd:enumeration value="page"/>
+ <xsd:enumeration value="text"/>
+ <xsd:enumeration value="line"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/lib/schema/wml.xsd b/lib/schema/wml.xsd
new file mode 100644
index 00000000..84be5cb4
--- /dev/null
+++ b/lib/schema/wml.xsd
@@ -0,0 +1,3644 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ 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">
+ <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
+ schemaLocation="dml-wordprocessingDrawing.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/math"
+ schemaLocation="shared-math.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+ schemaLocation="shared-relationshipReference.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes"
+ schemaLocation="shared-commonSimpleTypes.xsd"/>
+ <xsd:import namespace="http://schemas.openxmlformats.org/schemaLibrary/2006/main"
+ schemaLocation="shared-customXmlSchemaProperties.xsd"/>
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
+ <xsd:complexType name="CT_Empty"/>
+ <xsd:complexType name="CT_OnOff">
+ <xsd:attribute name="val" type="s:ST_OnOff"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LongHexNumber">
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="4"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LongHexNumber">
+ <xsd:attribute name="val" type="ST_LongHexNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ShortHexNumber">
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_UcharHexNumber">
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Charset">
+ <xsd:attribute name="val" type="ST_UcharHexNumber" use="required"/>
+ <xsd:attribute name="characterSet" type="s:ST_String" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DecimalNumberOrPercent">
+ <xsd:union memberTypes="ST_UnqualifiedPercentage s:ST_Percentage"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_UnqualifiedPercentage">
+ <xsd:restriction base="xsd:integer"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DecimalNumber">
+ <xsd:restriction base="xsd:integer"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DecimalNumber">
+ <xsd:attribute name="val" type="ST_DecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_UnsignedDecimalNumber">
+ <xsd:attribute name="val" type="s:ST_UnsignedDecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DecimalNumberOrPrecent">
+ <xsd:attribute name="val" type="ST_DecimalNumberOrPercent" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TwipsMeasure">
+ <xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SignedTwipsMeasure">
+ <xsd:union memberTypes="xsd:integer s:ST_UniversalMeasure"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SignedTwipsMeasure">
+ <xsd:attribute name="val" type="ST_SignedTwipsMeasure" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PixelsMeasure">
+ <xsd:restriction base="s:ST_UnsignedDecimalNumber"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PixelsMeasure">
+ <xsd:attribute name="val" type="ST_PixelsMeasure" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_HpsMeasure">
+ <xsd:union memberTypes="s:ST_UnsignedDecimalNumber s:ST_PositiveUniversalMeasure"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_HpsMeasure">
+ <xsd:attribute name="val" type="ST_HpsMeasure" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SignedHpsMeasure">
+ <xsd:union memberTypes="xsd:integer s:ST_UniversalMeasure"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SignedHpsMeasure">
+ <xsd:attribute name="val" type="ST_SignedHpsMeasure" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DateTime">
+ <xsd:restriction base="xsd:dateTime"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_MacroName">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="33"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MacroName">
+ <xsd:attribute name="val" use="required" type="ST_MacroName"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_EighthPointMeasure">
+ <xsd:restriction base="s:ST_UnsignedDecimalNumber"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PointMeasure">
+ <xsd:restriction base="s:ST_UnsignedDecimalNumber"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_String">
+ <xsd:attribute name="val" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextScale">
+ <xsd:union memberTypes="ST_TextScalePercent ST_TextScaleDecimal"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextScalePercent">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="0*(600|([0-5]?[0-9]?[0-9]))%"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TextScaleDecimal">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="0"/>
+ <xsd:maxInclusive value="600"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextScale">
+ <xsd:attribute name="val" type="ST_TextScale"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_HighlightColor">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="black"/>
+ <xsd:enumeration value="blue"/>
+ <xsd:enumeration value="cyan"/>
+ <xsd:enumeration value="green"/>
+ <xsd:enumeration value="magenta"/>
+ <xsd:enumeration value="red"/>
+ <xsd:enumeration value="yellow"/>
+ <xsd:enumeration value="white"/>
+ <xsd:enumeration value="darkBlue"/>
+ <xsd:enumeration value="darkCyan"/>
+ <xsd:enumeration value="darkGreen"/>
+ <xsd:enumeration value="darkMagenta"/>
+ <xsd:enumeration value="darkRed"/>
+ <xsd:enumeration value="darkYellow"/>
+ <xsd:enumeration value="darkGray"/>
+ <xsd:enumeration value="lightGray"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Highlight">
+ <xsd:attribute name="val" type="ST_HighlightColor" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_HexColorAuto">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="auto"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HexColor">
+ <xsd:union memberTypes="ST_HexColorAuto s:ST_HexColorRGB"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Color">
+ <xsd:attribute name="val" type="ST_HexColor" use="required"/>
+ <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/>
+ <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/>
+ <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Lang">
+ <xsd:attribute name="val" type="s:ST_Lang" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Guid">
+ <xsd:attribute name="val" type="s:ST_Guid"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Underline">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="single"/>
+ <xsd:enumeration value="words"/>
+ <xsd:enumeration value="double"/>
+ <xsd:enumeration value="thick"/>
+ <xsd:enumeration value="dotted"/>
+ <xsd:enumeration value="dottedHeavy"/>
+ <xsd:enumeration value="dash"/>
+ <xsd:enumeration value="dashedHeavy"/>
+ <xsd:enumeration value="dashLong"/>
+ <xsd:enumeration value="dashLongHeavy"/>
+ <xsd:enumeration value="dotDash"/>
+ <xsd:enumeration value="dashDotHeavy"/>
+ <xsd:enumeration value="dotDotDash"/>
+ <xsd:enumeration value="dashDotDotHeavy"/>
+ <xsd:enumeration value="wave"/>
+ <xsd:enumeration value="wavyHeavy"/>
+ <xsd:enumeration value="wavyDouble"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Underline">
+ <xsd:attribute name="val" type="ST_Underline" use="optional"/>
+ <xsd:attribute name="color" type="ST_HexColor" use="optional"/>
+ <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/>
+ <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/>
+ <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextEffect">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="blinkBackground"/>
+ <xsd:enumeration value="lights"/>
+ <xsd:enumeration value="antsBlack"/>
+ <xsd:enumeration value="antsRed"/>
+ <xsd:enumeration value="shimmer"/>
+ <xsd:enumeration value="sparkle"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextEffect">
+ <xsd:attribute name="val" type="ST_TextEffect" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Border">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="nil"/>
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="single"/>
+ <xsd:enumeration value="thick"/>
+ <xsd:enumeration value="double"/>
+ <xsd:enumeration value="dotted"/>
+ <xsd:enumeration value="dashed"/>
+ <xsd:enumeration value="dotDash"/>
+ <xsd:enumeration value="dotDotDash"/>
+ <xsd:enumeration value="triple"/>
+ <xsd:enumeration value="thinThickSmallGap"/>
+ <xsd:enumeration value="thickThinSmallGap"/>
+ <xsd:enumeration value="thinThickThinSmallGap"/>
+ <xsd:enumeration value="thinThickMediumGap"/>
+ <xsd:enumeration value="thickThinMediumGap"/>
+ <xsd:enumeration value="thinThickThinMediumGap"/>
+ <xsd:enumeration value="thinThickLargeGap"/>
+ <xsd:enumeration value="thickThinLargeGap"/>
+ <xsd:enumeration value="thinThickThinLargeGap"/>
+ <xsd:enumeration value="wave"/>
+ <xsd:enumeration value="doubleWave"/>
+ <xsd:enumeration value="dashSmallGap"/>
+ <xsd:enumeration value="dashDotStroked"/>
+ <xsd:enumeration value="threeDEmboss"/>
+ <xsd:enumeration value="threeDEngrave"/>
+ <xsd:enumeration value="outset"/>
+ <xsd:enumeration value="inset"/>
+ <xsd:enumeration value="apples"/>
+ <xsd:enumeration value="archedScallops"/>
+ <xsd:enumeration value="babyPacifier"/>
+ <xsd:enumeration value="babyRattle"/>
+ <xsd:enumeration value="balloons3Colors"/>
+ <xsd:enumeration value="balloonsHotAir"/>
+ <xsd:enumeration value="basicBlackDashes"/>
+ <xsd:enumeration value="basicBlackDots"/>
+ <xsd:enumeration value="basicBlackSquares"/>
+ <xsd:enumeration value="basicThinLines"/>
+ <xsd:enumeration value="basicWhiteDashes"/>
+ <xsd:enumeration value="basicWhiteDots"/>
+ <xsd:enumeration value="basicWhiteSquares"/>
+ <xsd:enumeration value="basicWideInline"/>
+ <xsd:enumeration value="basicWideMidline"/>
+ <xsd:enumeration value="basicWideOutline"/>
+ <xsd:enumeration value="bats"/>
+ <xsd:enumeration value="birds"/>
+ <xsd:enumeration value="birdsFlight"/>
+ <xsd:enumeration value="cabins"/>
+ <xsd:enumeration value="cakeSlice"/>
+ <xsd:enumeration value="candyCorn"/>
+ <xsd:enumeration value="celticKnotwork"/>
+ <xsd:enumeration value="certificateBanner"/>
+ <xsd:enumeration value="chainLink"/>
+ <xsd:enumeration value="champagneBottle"/>
+ <xsd:enumeration value="checkedBarBlack"/>
+ <xsd:enumeration value="checkedBarColor"/>
+ <xsd:enumeration value="checkered"/>
+ <xsd:enumeration value="christmasTree"/>
+ <xsd:enumeration value="circlesLines"/>
+ <xsd:enumeration value="circlesRectangles"/>
+ <xsd:enumeration value="classicalWave"/>
+ <xsd:enumeration value="clocks"/>
+ <xsd:enumeration value="compass"/>
+ <xsd:enumeration value="confetti"/>
+ <xsd:enumeration value="confettiGrays"/>
+ <xsd:enumeration value="confettiOutline"/>
+ <xsd:enumeration value="confettiStreamers"/>
+ <xsd:enumeration value="confettiWhite"/>
+ <xsd:enumeration value="cornerTriangles"/>
+ <xsd:enumeration value="couponCutoutDashes"/>
+ <xsd:enumeration value="couponCutoutDots"/>
+ <xsd:enumeration value="crazyMaze"/>
+ <xsd:enumeration value="creaturesButterfly"/>
+ <xsd:enumeration value="creaturesFish"/>
+ <xsd:enumeration value="creaturesInsects"/>
+ <xsd:enumeration value="creaturesLadyBug"/>
+ <xsd:enumeration value="crossStitch"/>
+ <xsd:enumeration value="cup"/>
+ <xsd:enumeration value="decoArch"/>
+ <xsd:enumeration value="decoArchColor"/>
+ <xsd:enumeration value="decoBlocks"/>
+ <xsd:enumeration value="diamondsGray"/>
+ <xsd:enumeration value="doubleD"/>
+ <xsd:enumeration value="doubleDiamonds"/>
+ <xsd:enumeration value="earth1"/>
+ <xsd:enumeration value="earth2"/>
+ <xsd:enumeration value="earth3"/>
+ <xsd:enumeration value="eclipsingSquares1"/>
+ <xsd:enumeration value="eclipsingSquares2"/>
+ <xsd:enumeration value="eggsBlack"/>
+ <xsd:enumeration value="fans"/>
+ <xsd:enumeration value="film"/>
+ <xsd:enumeration value="firecrackers"/>
+ <xsd:enumeration value="flowersBlockPrint"/>
+ <xsd:enumeration value="flowersDaisies"/>
+ <xsd:enumeration value="flowersModern1"/>
+ <xsd:enumeration value="flowersModern2"/>
+ <xsd:enumeration value="flowersPansy"/>
+ <xsd:enumeration value="flowersRedRose"/>
+ <xsd:enumeration value="flowersRoses"/>
+ <xsd:enumeration value="flowersTeacup"/>
+ <xsd:enumeration value="flowersTiny"/>
+ <xsd:enumeration value="gems"/>
+ <xsd:enumeration value="gingerbreadMan"/>
+ <xsd:enumeration value="gradient"/>
+ <xsd:enumeration value="handmade1"/>
+ <xsd:enumeration value="handmade2"/>
+ <xsd:enumeration value="heartBalloon"/>
+ <xsd:enumeration value="heartGray"/>
+ <xsd:enumeration value="hearts"/>
+ <xsd:enumeration value="heebieJeebies"/>
+ <xsd:enumeration value="holly"/>
+ <xsd:enumeration value="houseFunky"/>
+ <xsd:enumeration value="hypnotic"/>
+ <xsd:enumeration value="iceCreamCones"/>
+ <xsd:enumeration value="lightBulb"/>
+ <xsd:enumeration value="lightning1"/>
+ <xsd:enumeration value="lightning2"/>
+ <xsd:enumeration value="mapPins"/>
+ <xsd:enumeration value="mapleLeaf"/>
+ <xsd:enumeration value="mapleMuffins"/>
+ <xsd:enumeration value="marquee"/>
+ <xsd:enumeration value="marqueeToothed"/>
+ <xsd:enumeration value="moons"/>
+ <xsd:enumeration value="mosaic"/>
+ <xsd:enumeration value="musicNotes"/>
+ <xsd:enumeration value="northwest"/>
+ <xsd:enumeration value="ovals"/>
+ <xsd:enumeration value="packages"/>
+ <xsd:enumeration value="palmsBlack"/>
+ <xsd:enumeration value="palmsColor"/>
+ <xsd:enumeration value="paperClips"/>
+ <xsd:enumeration value="papyrus"/>
+ <xsd:enumeration value="partyFavor"/>
+ <xsd:enumeration value="partyGlass"/>
+ <xsd:enumeration value="pencils"/>
+ <xsd:enumeration value="people"/>
+ <xsd:enumeration value="peopleWaving"/>
+ <xsd:enumeration value="peopleHats"/>
+ <xsd:enumeration value="poinsettias"/>
+ <xsd:enumeration value="postageStamp"/>
+ <xsd:enumeration value="pumpkin1"/>
+ <xsd:enumeration value="pushPinNote2"/>
+ <xsd:enumeration value="pushPinNote1"/>
+ <xsd:enumeration value="pyramids"/>
+ <xsd:enumeration value="pyramidsAbove"/>
+ <xsd:enumeration value="quadrants"/>
+ <xsd:enumeration value="rings"/>
+ <xsd:enumeration value="safari"/>
+ <xsd:enumeration value="sawtooth"/>
+ <xsd:enumeration value="sawtoothGray"/>
+ <xsd:enumeration value="scaredCat"/>
+ <xsd:enumeration value="seattle"/>
+ <xsd:enumeration value="shadowedSquares"/>
+ <xsd:enumeration value="sharksTeeth"/>
+ <xsd:enumeration value="shorebirdTracks"/>
+ <xsd:enumeration value="skyrocket"/>
+ <xsd:enumeration value="snowflakeFancy"/>
+ <xsd:enumeration value="snowflakes"/>
+ <xsd:enumeration value="sombrero"/>
+ <xsd:enumeration value="southwest"/>
+ <xsd:enumeration value="stars"/>
+ <xsd:enumeration value="starsTop"/>
+ <xsd:enumeration value="stars3d"/>
+ <xsd:enumeration value="starsBlack"/>
+ <xsd:enumeration value="starsShadowed"/>
+ <xsd:enumeration value="sun"/>
+ <xsd:enumeration value="swirligig"/>
+ <xsd:enumeration value="tornPaper"/>
+ <xsd:enumeration value="tornPaperBlack"/>
+ <xsd:enumeration value="trees"/>
+ <xsd:enumeration value="triangleParty"/>
+ <xsd:enumeration value="triangles"/>
+ <xsd:enumeration value="triangle1"/>
+ <xsd:enumeration value="triangle2"/>
+ <xsd:enumeration value="triangleCircle1"/>
+ <xsd:enumeration value="triangleCircle2"/>
+ <xsd:enumeration value="shapes1"/>
+ <xsd:enumeration value="shapes2"/>
+ <xsd:enumeration value="twistedLines1"/>
+ <xsd:enumeration value="twistedLines2"/>
+ <xsd:enumeration value="vine"/>
+ <xsd:enumeration value="waveline"/>
+ <xsd:enumeration value="weavingAngles"/>
+ <xsd:enumeration value="weavingBraid"/>
+ <xsd:enumeration value="weavingRibbon"/>
+ <xsd:enumeration value="weavingStrips"/>
+ <xsd:enumeration value="whiteFlowers"/>
+ <xsd:enumeration value="woodwork"/>
+ <xsd:enumeration value="xIllusions"/>
+ <xsd:enumeration value="zanyTriangles"/>
+ <xsd:enumeration value="zigZag"/>
+ <xsd:enumeration value="zigZagStitch"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Border">
+ <xsd:attribute name="val" type="ST_Border" use="required"/>
+ <xsd:attribute name="color" type="ST_HexColor" use="optional"/>
+ <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/>
+ <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/>
+ <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/>
+ <xsd:attribute name="sz" type="ST_EighthPointMeasure" use="optional"/>
+ <xsd:attribute name="space" type="ST_PointMeasure" use="optional"/>
+ <xsd:attribute name="shadow" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="frame" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Shd">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="nil"/>
+ <xsd:enumeration value="clear"/>
+ <xsd:enumeration value="solid"/>
+ <xsd:enumeration value="horzStripe"/>
+ <xsd:enumeration value="vertStripe"/>
+ <xsd:enumeration value="reverseDiagStripe"/>
+ <xsd:enumeration value="diagStripe"/>
+ <xsd:enumeration value="horzCross"/>
+ <xsd:enumeration value="diagCross"/>
+ <xsd:enumeration value="thinHorzStripe"/>
+ <xsd:enumeration value="thinVertStripe"/>
+ <xsd:enumeration value="thinReverseDiagStripe"/>
+ <xsd:enumeration value="thinDiagStripe"/>
+ <xsd:enumeration value="thinHorzCross"/>
+ <xsd:enumeration value="thinDiagCross"/>
+ <xsd:enumeration value="pct5"/>
+ <xsd:enumeration value="pct10"/>
+ <xsd:enumeration value="pct12"/>
+ <xsd:enumeration value="pct15"/>
+ <xsd:enumeration value="pct20"/>
+ <xsd:enumeration value="pct25"/>
+ <xsd:enumeration value="pct30"/>
+ <xsd:enumeration value="pct35"/>
+ <xsd:enumeration value="pct37"/>
+ <xsd:enumeration value="pct40"/>
+ <xsd:enumeration value="pct45"/>
+ <xsd:enumeration value="pct50"/>
+ <xsd:enumeration value="pct55"/>
+ <xsd:enumeration value="pct60"/>
+ <xsd:enumeration value="pct62"/>
+ <xsd:enumeration value="pct65"/>
+ <xsd:enumeration value="pct70"/>
+ <xsd:enumeration value="pct75"/>
+ <xsd:enumeration value="pct80"/>
+ <xsd:enumeration value="pct85"/>
+ <xsd:enumeration value="pct87"/>
+ <xsd:enumeration value="pct90"/>
+ <xsd:enumeration value="pct95"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Shd">
+ <xsd:attribute name="val" type="ST_Shd" use="required"/>
+ <xsd:attribute name="color" type="ST_HexColor" use="optional"/>
+ <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/>
+ <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/>
+ <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/>
+ <xsd:attribute name="fill" type="ST_HexColor" use="optional"/>
+ <xsd:attribute name="themeFill" type="ST_ThemeColor" use="optional"/>
+ <xsd:attribute name="themeFillTint" type="ST_UcharHexNumber" use="optional"/>
+ <xsd:attribute name="themeFillShade" type="ST_UcharHexNumber" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_VerticalAlignRun">
+ <xsd:attribute name="val" type="s:ST_VerticalAlignRun" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FitText">
+ <xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/>
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Em">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="dot"/>
+ <xsd:enumeration value="comma"/>
+ <xsd:enumeration value="circle"/>
+ <xsd:enumeration value="underDot"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Em">
+ <xsd:attribute name="val" type="ST_Em" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Language">
+ <xsd:attribute name="val" type="s:ST_Lang" use="optional"/>
+ <xsd:attribute name="eastAsia" type="s:ST_Lang" use="optional"/>
+ <xsd:attribute name="bidi" type="s:ST_Lang" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_CombineBrackets">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="round"/>
+ <xsd:enumeration value="square"/>
+ <xsd:enumeration value="angle"/>
+ <xsd:enumeration value="curly"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_EastAsianLayout">
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="combine" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="combineBrackets" type="ST_CombineBrackets" use="optional"/>
+ <xsd:attribute name="vert" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="vertCompress" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_HeightRule">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="exact"/>
+ <xsd:enumeration value="atLeast"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Wrap">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="notBeside"/>
+ <xsd:enumeration value="around"/>
+ <xsd:enumeration value="tight"/>
+ <xsd:enumeration value="through"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_VAnchor">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="text"/>
+ <xsd:enumeration value="margin"/>
+ <xsd:enumeration value="page"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_HAnchor">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="text"/>
+ <xsd:enumeration value="margin"/>
+ <xsd:enumeration value="page"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DropCap">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="drop"/>
+ <xsd:enumeration value="margin"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FramePr">
+ <xsd:attribute name="dropCap" type="ST_DropCap" use="optional"/>
+ <xsd:attribute name="lines" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="w" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="h" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="vSpace" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="hSpace" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="wrap" type="ST_Wrap" use="optional"/>
+ <xsd:attribute name="hAnchor" type="ST_HAnchor" use="optional"/>
+ <xsd:attribute name="vAnchor" type="ST_VAnchor" use="optional"/>
+ <xsd:attribute name="x" type="ST_SignedTwipsMeasure" use="optional"/>
+ <xsd:attribute name="xAlign" type="s:ST_XAlign" use="optional"/>
+ <xsd:attribute name="y" type="ST_SignedTwipsMeasure" use="optional"/>
+ <xsd:attribute name="yAlign" type="s:ST_YAlign" use="optional"/>
+ <xsd:attribute name="hRule" type="ST_HeightRule" use="optional"/>
+ <xsd:attribute name="anchorLock" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TabJc">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="clear"/>
+ <xsd:enumeration value="start"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="end"/>
+ <xsd:enumeration value="decimal"/>
+ <xsd:enumeration value="bar"/>
+ <xsd:enumeration value="num"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_TabTlc">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="dot"/>
+ <xsd:enumeration value="hyphen"/>
+ <xsd:enumeration value="underscore"/>
+ <xsd:enumeration value="heavy"/>
+ <xsd:enumeration value="middleDot"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TabStop">
+ <xsd:attribute name="val" type="ST_TabJc" use="required"/>
+ <xsd:attribute name="leader" type="ST_TabTlc" use="optional"/>
+ <xsd:attribute name="pos" type="ST_SignedTwipsMeasure" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LineSpacingRule">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="exact"/>
+ <xsd:enumeration value="atLeast"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Spacing">
+ <xsd:attribute name="before" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="beforeLines" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="beforeAutospacing" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="after" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="afterLines" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="afterAutospacing" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="line" type="ST_SignedTwipsMeasure" use="optional"/>
+ <xsd:attribute name="lineRule" type="ST_LineSpacingRule" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Ind">
+ <xsd:attribute name="start" type="ST_SignedTwipsMeasure" use="optional"/>
+ <xsd:attribute name="startChars" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="end" type="ST_SignedTwipsMeasure" use="optional"/>
+ <xsd:attribute name="endChars" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="left" type="ST_SignedTwipsMeasure" use="optional"/>
+ <xsd:attribute name="leftChars" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="right" type="ST_SignedTwipsMeasure" use="optional"/>
+ <xsd:attribute name="rightChars" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="hanging" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="hangingChars" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="firstLine" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="firstLineChars" type="ST_DecimalNumber" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Jc">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="start"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="end"/>
+ <xsd:enumeration value="both"/>
+ <xsd:enumeration value="mediumKashida"/>
+ <xsd:enumeration value="distribute"/>
+ <xsd:enumeration value="numTab"/>
+ <xsd:enumeration value="highKashida"/>
+ <xsd:enumeration value="lowKashida"/>
+ <xsd:enumeration value="thaiDistribute"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_JcTable">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="end"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="start"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Jc">
+ <xsd:attribute name="val" type="ST_Jc" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_JcTable">
+ <xsd:attribute name="val" type="ST_JcTable" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_View">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="print"/>
+ <xsd:enumeration value="outline"/>
+ <xsd:enumeration value="masterPages"/>
+ <xsd:enumeration value="normal"/>
+ <xsd:enumeration value="web"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_View">
+ <xsd:attribute name="val" type="ST_View" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Zoom">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="fullPage"/>
+ <xsd:enumeration value="bestFit"/>
+ <xsd:enumeration value="textFit"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Zoom">
+ <xsd:attribute name="val" type="ST_Zoom" use="optional"/>
+ <xsd:attribute name="percent" type="ST_DecimalNumberOrPercent" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WritingStyle">
+ <xsd:attribute name="lang" type="s:ST_Lang" use="required"/>
+ <xsd:attribute name="vendorID" type="s:ST_String" use="required"/>
+ <xsd:attribute name="dllVersion" type="s:ST_String" use="required"/>
+ <xsd:attribute name="nlCheck" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="checkStyle" type="s:ST_OnOff" use="required"/>
+ <xsd:attribute name="appName" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Proof">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="clean"/>
+ <xsd:enumeration value="dirty"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Proof">
+ <xsd:attribute name="spelling" type="ST_Proof" use="optional"/>
+ <xsd:attribute name="grammar" type="ST_Proof" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DocType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DocType">
+ <xsd:attribute name="val" type="ST_DocType" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DocProtect">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="readOnly"/>
+ <xsd:enumeration value="comments"/>
+ <xsd:enumeration value="trackedChanges"/>
+ <xsd:enumeration value="forms"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:attributeGroup name="AG_Password">
+ <xsd:attribute name="algorithmName" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/>
+ <xsd:attribute name="spinCount" type="ST_DecimalNumber" use="optional"/>
+ </xsd:attributeGroup>
+ <xsd:attributeGroup name="AG_TransitionalPassword">
+ <xsd:attribute name="cryptProviderType" type="s:ST_CryptProv"/>
+ <xsd:attribute name="cryptAlgorithmClass" type="s:ST_AlgClass"/>
+ <xsd:attribute name="cryptAlgorithmType" type="s:ST_AlgType"/>
+ <xsd:attribute name="cryptAlgorithmSid" type="ST_DecimalNumber"/>
+ <xsd:attribute name="cryptSpinCount" type="ST_DecimalNumber"/>
+ <xsd:attribute name="cryptProvider" type="s:ST_String"/>
+ <xsd:attribute name="algIdExt" type="ST_LongHexNumber"/>
+ <xsd:attribute name="algIdExtSource" type="s:ST_String"/>
+ <xsd:attribute name="cryptProviderTypeExt" type="ST_LongHexNumber"/>
+ <xsd:attribute name="cryptProviderTypeExtSource" type="s:ST_String"/>
+ <xsd:attribute name="hash" type="xsd:base64Binary"/>
+ <xsd:attribute name="salt" type="xsd:base64Binary"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="CT_DocProtect">
+ <xsd:attribute name="edit" type="ST_DocProtect" use="optional"/>
+ <xsd:attribute name="formatting" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="enforcement" type="s:ST_OnOff"/>
+ <xsd:attributeGroup ref="AG_Password"/>
+ <xsd:attributeGroup ref="AG_TransitionalPassword"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MailMergeDocType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="catalog"/>
+ <xsd:enumeration value="envelopes"/>
+ <xsd:enumeration value="mailingLabels"/>
+ <xsd:enumeration value="formLetters"/>
+ <xsd:enumeration value="email"/>
+ <xsd:enumeration value="fax"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MailMergeDocType">
+ <xsd:attribute name="val" type="ST_MailMergeDocType" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MailMergeDataType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MailMergeDataType">
+ <xsd:attribute name="val" type="ST_MailMergeDataType" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MailMergeDest">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="newDocument"/>
+ <xsd:enumeration value="printer"/>
+ <xsd:enumeration value="email"/>
+ <xsd:enumeration value="fax"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MailMergeDest">
+ <xsd:attribute name="val" type="ST_MailMergeDest" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MailMergeOdsoFMDFieldType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="null"/>
+ <xsd:enumeration value="dbColumn"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MailMergeOdsoFMDFieldType">
+ <xsd:attribute name="val" type="ST_MailMergeOdsoFMDFieldType" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TrackChangesView">
+ <xsd:attribute name="markup" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="comments" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="insDel" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="formatting" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="inkAnnotations" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Kinsoku">
+ <xsd:attribute name="lang" type="s:ST_Lang" use="required"/>
+ <xsd:attribute name="val" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextDirection">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="tb"/>
+ <xsd:enumeration value="rl"/>
+ <xsd:enumeration value="lr"/>
+ <xsd:enumeration value="tbV"/>
+ <xsd:enumeration value="rlV"/>
+ <xsd:enumeration value="lrV"/>
+ <xsd:enumeration value="btLr"/>
+ <xsd:enumeration value="lrTb"/>
+ <xsd:enumeration value="lrTbV"/>
+ <xsd:enumeration value="tbLrV"/>
+ <xsd:enumeration value="tbRl"/>
+ <xsd:enumeration value="tbRlV"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextDirection">
+ <xsd:attribute name="val" type="ST_TextDirection" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextAlignment">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="top"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="baseline"/>
+ <xsd:enumeration value="bottom"/>
+ <xsd:enumeration value="auto"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextAlignment">
+ <xsd:attribute name="val" type="ST_TextAlignment" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DisplacedByCustomXml">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="next"/>
+ <xsd:enumeration value="prev"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_AnnotationVMerge">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="cont"/>
+ <xsd:enumeration value="rest"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Markup">
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TrackChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_Markup">
+ <xsd:attribute name="author" type="s:ST_String" use="required"/>
+ <xsd:attribute name="date" type="ST_DateTime" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CellMergeTrackChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:attribute name="vMerge" type="ST_AnnotationVMerge" use="optional"/>
+ <xsd:attribute name="vMergeOrig" type="ST_AnnotationVMerge" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TrackChangeRange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MarkupRange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_Markup">
+ <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BookmarkRange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_MarkupRange">
+ <xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Bookmark">
+ <xsd:complexContent>
+ <xsd:extension base="CT_BookmarkRange">
+ <xsd:attribute name="name" type="s:ST_String" use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MoveBookmark">
+ <xsd:complexContent>
+ <xsd:extension base="CT_Bookmark">
+ <xsd:attribute name="author" type="s:ST_String" use="required"/>
+ <xsd:attribute name="date" type="ST_DateTime" use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Comment">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:sequence>
+ <xsd:group ref="EG_BlockLevelElts" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="initials" type="s:ST_String" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TrackChangeNumbering">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:attribute name="original" type="s:ST_String" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblPrExChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:sequence>
+ <xsd:element name="tblPrEx" type="CT_TblPrExBase" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TcPrChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:sequence>
+ <xsd:element name="tcPr" type="CT_TcPrInner" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TrPrChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:sequence>
+ <xsd:element name="trPr" type="CT_TrPrBase" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblGridChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_Markup">
+ <xsd:sequence>
+ <xsd:element name="tblGrid" type="CT_TblGridBase"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblPrChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:sequence>
+ <xsd:element name="tblPr" type="CT_TblPrBase"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SectPrChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:sequence>
+ <xsd:element name="sectPr" type="CT_SectPrBase" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PPrChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:sequence>
+ <xsd:element name="pPr" type="CT_PPrBase" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RPrChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_RPrOriginal" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ParaRPrChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_ParaRPrOriginal" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RunTrackChange">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:group ref="EG_ContentRunContent"/>
+ <xsd:group ref="m:EG_OMathMathElements"/>
+ </xsd:choice>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:group name="EG_PContentMath">
+ <xsd:choice>
+ <xsd:group ref="EG_PContentBase" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:group ref="EG_ContentRunContentBase" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_PContentBase">
+ <xsd:choice>
+ <xsd:element name="customXml" type="CT_CustomXmlRun"/>
+ <xsd:element name="fldSimple" type="CT_SimpleField" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="hyperlink" type="CT_Hyperlink"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_ContentRunContentBase">
+ <xsd:choice>
+ <xsd:element name="smartTag" type="CT_SmartTagRun"/>
+ <xsd:element name="sdt" type="CT_SdtRun"/>
+ <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_CellMarkupElements">
+ <xsd:choice>
+ <xsd:element name="cellIns" type="CT_TrackChange" minOccurs="0"/>
+ <xsd:element name="cellDel" type="CT_TrackChange" minOccurs="0"/>
+ <xsd:element name="cellMerge" type="CT_CellMergeTrackChange" minOccurs="0"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_RangeMarkupElements">
+ <xsd:choice>
+ <xsd:element name="bookmarkStart" type="CT_Bookmark"/>
+ <xsd:element name="bookmarkEnd" type="CT_MarkupRange"/>
+ <xsd:element name="moveFromRangeStart" type="CT_MoveBookmark"/>
+ <xsd:element name="moveFromRangeEnd" type="CT_MarkupRange"/>
+ <xsd:element name="moveToRangeStart" type="CT_MoveBookmark"/>
+ <xsd:element name="moveToRangeEnd" type="CT_MarkupRange"/>
+ <xsd:element name="commentRangeStart" type="CT_MarkupRange"/>
+ <xsd:element name="commentRangeEnd" type="CT_MarkupRange"/>
+ <xsd:element name="customXmlInsRangeStart" type="CT_TrackChange"/>
+ <xsd:element name="customXmlInsRangeEnd" type="CT_Markup"/>
+ <xsd:element name="customXmlDelRangeStart" type="CT_TrackChange"/>
+ <xsd:element name="customXmlDelRangeEnd" type="CT_Markup"/>
+ <xsd:element name="customXmlMoveFromRangeStart" type="CT_TrackChange"/>
+ <xsd:element name="customXmlMoveFromRangeEnd" type="CT_Markup"/>
+ <xsd:element name="customXmlMoveToRangeStart" type="CT_TrackChange"/>
+ <xsd:element name="customXmlMoveToRangeEnd" type="CT_Markup"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_NumPr">
+ <xsd:sequence>
+ <xsd:element name="ilvl" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="numId" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="numberingChange" type="CT_TrackChangeNumbering" minOccurs="0"/>
+ <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PBdr">
+ <xsd:sequence>
+ <xsd:element name="top" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="left" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="bottom" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="right" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="between" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="bar" type="CT_Border" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Tabs">
+ <xsd:sequence>
+ <xsd:element name="tab" type="CT_TabStop" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TextboxTightWrap">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="allLines"/>
+ <xsd:enumeration value="firstAndLastLine"/>
+ <xsd:enumeration value="firstLineOnly"/>
+ <xsd:enumeration value="lastLineOnly"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TextboxTightWrap">
+ <xsd:attribute name="val" type="ST_TextboxTightWrap" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PPr">
+ <xsd:complexContent>
+ <xsd:extension base="CT_PPrBase">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_ParaRPr" minOccurs="0"/>
+ <xsd:element name="sectPr" type="CT_SectPr" minOccurs="0"/>
+ <xsd:element name="pPrChange" type="CT_PPrChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PPrBase">
+ <xsd:sequence>
+ <xsd:element name="pStyle" type="CT_String" minOccurs="0"/>
+ <xsd:element name="keepNext" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="keepLines" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="pageBreakBefore" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="framePr" type="CT_FramePr" minOccurs="0"/>
+ <xsd:element name="widowControl" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="numPr" type="CT_NumPr" minOccurs="0"/>
+ <xsd:element name="suppressLineNumbers" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="pBdr" type="CT_PBdr" minOccurs="0"/>
+ <xsd:element name="shd" type="CT_Shd" minOccurs="0"/>
+ <xsd:element name="tabs" type="CT_Tabs" minOccurs="0"/>
+ <xsd:element name="suppressAutoHyphens" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="kinsoku" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="wordWrap" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="overflowPunct" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="topLinePunct" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="autoSpaceDE" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="autoSpaceDN" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="bidi" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="adjustRightInd" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="snapToGrid" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="spacing" type="CT_Spacing" minOccurs="0"/>
+ <xsd:element name="ind" type="CT_Ind" minOccurs="0"/>
+ <xsd:element name="contextualSpacing" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="mirrorIndents" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="suppressOverlap" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="jc" type="CT_Jc" minOccurs="0"/>
+ <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0"/>
+ <xsd:element name="textAlignment" type="CT_TextAlignment" minOccurs="0"/>
+ <xsd:element name="textboxTightWrap" type="CT_TextboxTightWrap" minOccurs="0"/>
+ <xsd:element name="outlineLvl" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="divId" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PPrGeneral">
+ <xsd:complexContent>
+ <xsd:extension base="CT_PPrBase">
+ <xsd:sequence>
+ <xsd:element name="pPrChange" type="CT_PPrChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Control">
+ <xsd:attribute name="name" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="shapeid" type="s:ST_String" use="optional"/>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Background">
+ <xsd:sequence>
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:vml" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:element name="drawing" type="CT_Drawing" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="color" type="ST_HexColor" use="optional"/>
+ <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/>
+ <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/>
+ <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Rel">
+ <xsd:attribute ref="r:id" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Object">
+ <xsd:sequence>
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:vml" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:element name="drawing" type="CT_Drawing" minOccurs="0"/>
+ <xsd:choice minOccurs="0">
+ <xsd:element name="control" type="CT_Control"/>
+ <xsd:element name="objectLink" type="CT_ObjectLink"/>
+ <xsd:element name="objectEmbed" type="CT_ObjectEmbed"/>
+ <xsd:element name="movie" type="CT_Rel"/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="dxaOrig" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="dyaOrig" type="s:ST_TwipsMeasure" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Picture">
+ <xsd:sequence>
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:vml" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:element name="movie" type="CT_Rel" minOccurs="0"/>
+ <xsd:element name="control" type="CT_Control" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ObjectEmbed">
+ <xsd:attribute name="drawAspect" type="ST_ObjectDrawAspect" use="optional"/>
+ <xsd:attribute ref="r:id" use="required"/>
+ <xsd:attribute name="progId" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="shapeId" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="fieldCodes" type="s:ST_String" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ObjectDrawAspect">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="content"/>
+ <xsd:enumeration value="icon"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ObjectLink">
+ <xsd:complexContent>
+ <xsd:extension base="CT_ObjectEmbed">
+ <xsd:attribute name="updateMode" type="ST_ObjectUpdateMode" use="required"/>
+ <xsd:attribute name="lockedField" type="s:ST_OnOff" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ObjectUpdateMode">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="always"/>
+ <xsd:enumeration value="onCall"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Drawing">
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element ref="wp:anchor" minOccurs="0"/>
+ <xsd:element ref="wp:inline" minOccurs="0"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SimpleField">
+ <xsd:sequence>
+ <xsd:element name="fldData" type="CT_Text" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="instr" type="s:ST_String" use="required"/>
+ <xsd:attribute name="fldLock" type="s:ST_OnOff"/>
+ <xsd:attribute name="dirty" type="s:ST_OnOff"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FldCharType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="begin"/>
+ <xsd:enumeration value="separate"/>
+ <xsd:enumeration value="end"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_InfoTextType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="text"/>
+ <xsd:enumeration value="autoText"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FFHelpTextVal">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="256"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FFStatusTextVal">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="140"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FFName">
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="65"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FFTextType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="regular"/>
+ <xsd:enumeration value="number"/>
+ <xsd:enumeration value="date"/>
+ <xsd:enumeration value="currentTime"/>
+ <xsd:enumeration value="currentDate"/>
+ <xsd:enumeration value="calculated"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FFTextType">
+ <xsd:attribute name="val" type="ST_FFTextType" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FFName">
+ <xsd:attribute name="val" type="ST_FFName"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FldChar">
+ <xsd:choice>
+ <xsd:element name="fldData" type="CT_Text" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="ffData" type="CT_FFData" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="numberingChange" type="CT_TrackChangeNumbering" minOccurs="0"/>
+ </xsd:choice>
+ <xsd:attribute name="fldCharType" type="ST_FldCharType" use="required"/>
+ <xsd:attribute name="fldLock" type="s:ST_OnOff"/>
+ <xsd:attribute name="dirty" type="s:ST_OnOff"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Hyperlink">
+ <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:attribute name="tgtFrame" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="tooltip" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="docLocation" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="history" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="anchor" type="s:ST_String" use="optional"/>
+ <xsd:attribute ref="r:id"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FFData">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="name" type="CT_FFName"/>
+ <xsd:element name="label" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="tabIndex" type="CT_UnsignedDecimalNumber" minOccurs="0"/>
+ <xsd:element name="enabled" type="CT_OnOff"/>
+ <xsd:element name="calcOnExit" type="CT_OnOff"/>
+ <xsd:element name="entryMacro" type="CT_MacroName" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="exitMacro" type="CT_MacroName" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="helpText" type="CT_FFHelpText" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="statusText" type="CT_FFStatusText" minOccurs="0" maxOccurs="1"/>
+ <xsd:choice>
+ <xsd:element name="checkBox" type="CT_FFCheckBox"/>
+ <xsd:element name="ddList" type="CT_FFDDList"/>
+ <xsd:element name="textInput" type="CT_FFTextInput"/>
+ </xsd:choice>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FFHelpText">
+ <xsd:attribute name="type" type="ST_InfoTextType"/>
+ <xsd:attribute name="val" type="ST_FFHelpTextVal"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FFStatusText">
+ <xsd:attribute name="type" type="ST_InfoTextType"/>
+ <xsd:attribute name="val" type="ST_FFStatusTextVal"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FFCheckBox">
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element name="size" type="CT_HpsMeasure"/>
+ <xsd:element name="sizeAuto" type="CT_OnOff"/>
+ </xsd:choice>
+ <xsd:element name="default" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="checked" type="CT_OnOff" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FFDDList">
+ <xsd:sequence>
+ <xsd:element name="result" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="default" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="listEntry" type="CT_String" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FFTextInput">
+ <xsd:sequence>
+ <xsd:element name="type" type="CT_FFTextType" minOccurs="0"/>
+ <xsd:element name="default" type="CT_String" minOccurs="0"/>
+ <xsd:element name="maxLength" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="format" type="CT_String" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SectionMark">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="nextPage"/>
+ <xsd:enumeration value="nextColumn"/>
+ <xsd:enumeration value="continuous"/>
+ <xsd:enumeration value="evenPage"/>
+ <xsd:enumeration value="oddPage"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SectType">
+ <xsd:attribute name="val" type="ST_SectionMark"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PaperSource">
+ <xsd:attribute name="first" type="ST_DecimalNumber"/>
+ <xsd:attribute name="other" type="ST_DecimalNumber"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_NumberFormat">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="decimal"/>
+ <xsd:enumeration value="upperRoman"/>
+ <xsd:enumeration value="lowerRoman"/>
+ <xsd:enumeration value="upperLetter"/>
+ <xsd:enumeration value="lowerLetter"/>
+ <xsd:enumeration value="ordinal"/>
+ <xsd:enumeration value="cardinalText"/>
+ <xsd:enumeration value="ordinalText"/>
+ <xsd:enumeration value="hex"/>
+ <xsd:enumeration value="chicago"/>
+ <xsd:enumeration value="ideographDigital"/>
+ <xsd:enumeration value="japaneseCounting"/>
+ <xsd:enumeration value="aiueo"/>
+ <xsd:enumeration value="iroha"/>
+ <xsd:enumeration value="decimalFullWidth"/>
+ <xsd:enumeration value="decimalHalfWidth"/>
+ <xsd:enumeration value="japaneseLegal"/>
+ <xsd:enumeration value="japaneseDigitalTenThousand"/>
+ <xsd:enumeration value="decimalEnclosedCircle"/>
+ <xsd:enumeration value="decimalFullWidth2"/>
+ <xsd:enumeration value="aiueoFullWidth"/>
+ <xsd:enumeration value="irohaFullWidth"/>
+ <xsd:enumeration value="decimalZero"/>
+ <xsd:enumeration value="bullet"/>
+ <xsd:enumeration value="ganada"/>
+ <xsd:enumeration value="chosung"/>
+ <xsd:enumeration value="decimalEnclosedFullstop"/>
+ <xsd:enumeration value="decimalEnclosedParen"/>
+ <xsd:enumeration value="decimalEnclosedCircleChinese"/>
+ <xsd:enumeration value="ideographEnclosedCircle"/>
+ <xsd:enumeration value="ideographTraditional"/>
+ <xsd:enumeration value="ideographZodiac"/>
+ <xsd:enumeration value="ideographZodiacTraditional"/>
+ <xsd:enumeration value="taiwaneseCounting"/>
+ <xsd:enumeration value="ideographLegalTraditional"/>
+ <xsd:enumeration value="taiwaneseCountingThousand"/>
+ <xsd:enumeration value="taiwaneseDigital"/>
+ <xsd:enumeration value="chineseCounting"/>
+ <xsd:enumeration value="chineseLegalSimplified"/>
+ <xsd:enumeration value="chineseCountingThousand"/>
+ <xsd:enumeration value="koreanDigital"/>
+ <xsd:enumeration value="koreanCounting"/>
+ <xsd:enumeration value="koreanLegal"/>
+ <xsd:enumeration value="koreanDigital2"/>
+ <xsd:enumeration value="vietnameseCounting"/>
+ <xsd:enumeration value="russianLower"/>
+ <xsd:enumeration value="russianUpper"/>
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="numberInDash"/>
+ <xsd:enumeration value="hebrew1"/>
+ <xsd:enumeration value="hebrew2"/>
+ <xsd:enumeration value="arabicAlpha"/>
+ <xsd:enumeration value="arabicAbjad"/>
+ <xsd:enumeration value="hindiVowels"/>
+ <xsd:enumeration value="hindiConsonants"/>
+ <xsd:enumeration value="hindiNumbers"/>
+ <xsd:enumeration value="hindiCounting"/>
+ <xsd:enumeration value="thaiLetters"/>
+ <xsd:enumeration value="thaiNumbers"/>
+ <xsd:enumeration value="thaiCounting"/>
+ <xsd:enumeration value="bahtText"/>
+ <xsd:enumeration value="dollarText"/>
+ <xsd:enumeration value="custom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PageOrientation">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="portrait"/>
+ <xsd:enumeration value="landscape"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PageSz">
+ <xsd:attribute name="w" type="s:ST_TwipsMeasure"/>
+ <xsd:attribute name="h" type="s:ST_TwipsMeasure"/>
+ <xsd:attribute name="orient" type="ST_PageOrientation" use="optional"/>
+ <xsd:attribute name="code" type="ST_DecimalNumber" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageMar">
+ <xsd:attribute name="top" type="ST_SignedTwipsMeasure" use="required"/>
+ <xsd:attribute name="right" type="s:ST_TwipsMeasure" use="required"/>
+ <xsd:attribute name="bottom" type="ST_SignedTwipsMeasure" use="required"/>
+ <xsd:attribute name="left" type="s:ST_TwipsMeasure" use="required"/>
+ <xsd:attribute name="header" type="s:ST_TwipsMeasure" use="required"/>
+ <xsd:attribute name="footer" type="s:ST_TwipsMeasure" use="required"/>
+ <xsd:attribute name="gutter" type="s:ST_TwipsMeasure" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PageBorderZOrder">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="front"/>
+ <xsd:enumeration value="back"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PageBorderDisplay">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="allPages"/>
+ <xsd:enumeration value="firstPage"/>
+ <xsd:enumeration value="notFirstPage"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PageBorderOffset">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="page"/>
+ <xsd:enumeration value="text"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PageBorders">
+ <xsd:sequence>
+ <xsd:element name="top" type="CT_TopPageBorder" minOccurs="0"/>
+ <xsd:element name="left" type="CT_PageBorder" minOccurs="0"/>
+ <xsd:element name="bottom" type="CT_BottomPageBorder" minOccurs="0"/>
+ <xsd:element name="right" type="CT_PageBorder" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="zOrder" type="ST_PageBorderZOrder" use="optional"/>
+ <xsd:attribute name="display" type="ST_PageBorderDisplay" use="optional"/>
+ <xsd:attribute name="offsetFrom" type="ST_PageBorderOffset" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageBorder">
+ <xsd:complexContent>
+ <xsd:extension base="CT_Border">
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BottomPageBorder">
+ <xsd:complexContent>
+ <xsd:extension base="CT_PageBorder">
+ <xsd:attribute ref="r:bottomLeft" use="optional"/>
+ <xsd:attribute ref="r:bottomRight" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TopPageBorder">
+ <xsd:complexContent>
+ <xsd:extension base="CT_PageBorder">
+ <xsd:attribute ref="r:topLeft" use="optional"/>
+ <xsd:attribute ref="r:topRight" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ChapterSep">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="hyphen"/>
+ <xsd:enumeration value="period"/>
+ <xsd:enumeration value="colon"/>
+ <xsd:enumeration value="emDash"/>
+ <xsd:enumeration value="enDash"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_LineNumberRestart">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="newPage"/>
+ <xsd:enumeration value="newSection"/>
+ <xsd:enumeration value="continuous"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LineNumber">
+ <xsd:attribute name="countBy" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="start" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="distance" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="restart" type="ST_LineNumberRestart" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PageNumber">
+ <xsd:attribute name="fmt" type="ST_NumberFormat" use="optional"/>
+ <xsd:attribute name="start" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="chapStyle" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="chapSep" type="ST_ChapterSep" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Column">
+ <xsd:attribute name="w" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="space" type="s:ST_TwipsMeasure" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Columns">
+ <xsd:sequence minOccurs="0">
+ <xsd:element name="col" type="CT_Column" maxOccurs="45"/>
+ </xsd:sequence>
+ <xsd:attribute name="equalWidth" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="space" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="num" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="sep" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_VerticalJc">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="top"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="both"/>
+ <xsd:enumeration value="bottom"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_VerticalJc">
+ <xsd:attribute name="val" type="ST_VerticalJc" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DocGrid">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="lines"/>
+ <xsd:enumeration value="linesAndChars"/>
+ <xsd:enumeration value="snapToChars"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DocGrid">
+ <xsd:attribute name="type" type="ST_DocGrid"/>
+ <xsd:attribute name="linePitch" type="ST_DecimalNumber"/>
+ <xsd:attribute name="charSpace" type="ST_DecimalNumber"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_HdrFtr">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="even"/>
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="first"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_FtnEdn">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="normal"/>
+ <xsd:enumeration value="separator"/>
+ <xsd:enumeration value="continuationSeparator"/>
+ <xsd:enumeration value="continuationNotice"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_HdrFtrRef">
+ <xsd:complexContent>
+ <xsd:extension base="CT_Rel">
+ <xsd:attribute name="type" type="ST_HdrFtr" use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:group name="EG_HdrFtrReferences">
+ <xsd:choice>
+ <xsd:element name="headerReference" type="CT_HdrFtrRef" minOccurs="0"/>
+ <xsd:element name="footerReference" type="CT_HdrFtrRef" minOccurs="0"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_HdrFtr">
+ <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:complexType>
+ <xsd:group name="EG_SectPrContents">
+ <xsd:sequence>
+ <xsd:element name="footnotePr" type="CT_FtnProps" minOccurs="0"/>
+ <xsd:element name="endnotePr" type="CT_EdnProps" minOccurs="0"/>
+ <xsd:element name="type" type="CT_SectType" minOccurs="0"/>
+ <xsd:element name="pgSz" type="CT_PageSz" minOccurs="0"/>
+ <xsd:element name="pgMar" type="CT_PageMar" minOccurs="0"/>
+ <xsd:element name="paperSrc" type="CT_PaperSource" minOccurs="0"/>
+ <xsd:element name="pgBorders" type="CT_PageBorders" minOccurs="0"/>
+ <xsd:element name="lnNumType" type="CT_LineNumber" minOccurs="0"/>
+ <xsd:element name="pgNumType" type="CT_PageNumber" minOccurs="0"/>
+ <xsd:element name="cols" type="CT_Columns" minOccurs="0"/>
+ <xsd:element name="formProt" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="vAlign" type="CT_VerticalJc" minOccurs="0"/>
+ <xsd:element name="noEndnote" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="titlePg" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0"/>
+ <xsd:element name="bidi" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="rtlGutter" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="docGrid" type="CT_DocGrid" minOccurs="0"/>
+ <xsd:element name="printerSettings" type="CT_Rel" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:attributeGroup name="AG_SectPrAttributes">
+ <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidR" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidSect" type="ST_LongHexNumber"/>
+ </xsd:attributeGroup>
+ <xsd:complexType name="CT_SectPrBase">
+ <xsd:sequence>
+ <xsd:group ref="EG_SectPrContents" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_SectPrAttributes"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SectPr">
+ <xsd:sequence>
+ <xsd:group ref="EG_HdrFtrReferences" minOccurs="0" maxOccurs="6"/>
+ <xsd:group ref="EG_SectPrContents" minOccurs="0"/>
+ <xsd:element name="sectPrChange" type="CT_SectPrChange" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attributeGroup ref="AG_SectPrAttributes"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_BrType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="page"/>
+ <xsd:enumeration value="column"/>
+ <xsd:enumeration value="textWrapping"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_BrClear">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="all"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Br">
+ <xsd:attribute name="type" type="ST_BrType" use="optional"/>
+ <xsd:attribute name="clear" type="ST_BrClear" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_PTabAlignment">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="right"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PTabRelativeTo">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="margin"/>
+ <xsd:enumeration value="indent"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_PTabLeader">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="dot"/>
+ <xsd:enumeration value="hyphen"/>
+ <xsd:enumeration value="underscore"/>
+ <xsd:enumeration value="middleDot"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_PTab">
+ <xsd:attribute name="alignment" type="ST_PTabAlignment" use="required"/>
+ <xsd:attribute name="relativeTo" type="ST_PTabRelativeTo" use="required"/>
+ <xsd:attribute name="leader" type="ST_PTabLeader" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Sym">
+ <xsd:attribute name="font" type="s:ST_String"/>
+ <xsd:attribute name="char" type="ST_ShortHexNumber"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ProofErr">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="spellStart"/>
+ <xsd:enumeration value="spellEnd"/>
+ <xsd:enumeration value="gramStart"/>
+ <xsd:enumeration value="gramEnd"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ProofErr">
+ <xsd:attribute name="type" type="ST_ProofErr" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_EdGrp">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="everyone"/>
+ <xsd:enumeration value="administrators"/>
+ <xsd:enumeration value="contributors"/>
+ <xsd:enumeration value="editors"/>
+ <xsd:enumeration value="owners"/>
+ <xsd:enumeration value="current"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Perm">
+ <xsd:attribute name="id" type="s:ST_String" use="required"/>
+ <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PermStart">
+ <xsd:complexContent>
+ <xsd:extension base="CT_Perm">
+ <xsd:attribute name="edGrp" type="ST_EdGrp" use="optional"/>
+ <xsd:attribute name="ed" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Text">
+ <xsd:simpleContent>
+ <xsd:extension base="s:ST_String">
+ <xsd:attribute ref="xml:space" use="optional"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:group name="EG_RunInnerContent">
+ <xsd:choice>
+ <xsd:element name="br" type="CT_Br"/>
+ <xsd:element name="t" type="CT_Text"/>
+ <xsd:element name="contentPart" type="CT_Rel"/>
+ <xsd:element name="delText" type="CT_Text"/>
+ <xsd:element name="instrText" type="CT_Text"/>
+ <xsd:element name="delInstrText" type="CT_Text"/>
+ <xsd:element name="noBreakHyphen" type="CT_Empty"/>
+ <xsd:element name="softHyphen" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="dayShort" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="monthShort" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="yearShort" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="dayLong" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="monthLong" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="yearLong" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="annotationRef" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="footnoteRef" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="endnoteRef" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="separator" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="continuationSeparator" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="sym" type="CT_Sym" minOccurs="0"/>
+ <xsd:element name="pgNum" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="cr" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="tab" type="CT_Empty" minOccurs="0"/>
+ <xsd:element name="object" type="CT_Object"/>
+ <xsd:element name="pict" type="CT_Picture"/>
+ <xsd:element name="fldChar" type="CT_FldChar"/>
+ <xsd:element name="ruby" type="CT_Ruby"/>
+ <xsd:element name="footnoteReference" type="CT_FtnEdnRef"/>
+ <xsd:element name="endnoteReference" type="CT_FtnEdnRef"/>
+ <xsd:element name="commentReference" type="CT_Markup"/>
+ <xsd:element name="drawing" type="CT_Drawing"/>
+ <xsd:element name="ptab" type="CT_PTab" minOccurs="0"/>
+ <xsd:element name="lastRenderedPageBreak" type="CT_Empty" minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_R">
+ <xsd:sequence>
+ <xsd:group ref="EG_RPr" minOccurs="0"/>
+ <xsd:group ref="EG_RunInnerContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidR" type="ST_LongHexNumber"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Hint">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="eastAsia"/>
+ <xsd:enumeration value="cs"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_Theme">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="majorEastAsia"/>
+ <xsd:enumeration value="majorBidi"/>
+ <xsd:enumeration value="majorAscii"/>
+ <xsd:enumeration value="majorHAnsi"/>
+ <xsd:enumeration value="minorEastAsia"/>
+ <xsd:enumeration value="minorBidi"/>
+ <xsd:enumeration value="minorAscii"/>
+ <xsd:enumeration value="minorHAnsi"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Fonts">
+ <xsd:attribute name="hint" type="ST_Hint"/>
+ <xsd:attribute name="ascii" type="s:ST_String"/>
+ <xsd:attribute name="hAnsi" type="s:ST_String"/>
+ <xsd:attribute name="eastAsia" type="s:ST_String"/>
+ <xsd:attribute name="cs" type="s:ST_String"/>
+ <xsd:attribute name="asciiTheme" type="ST_Theme"/>
+ <xsd:attribute name="hAnsiTheme" type="ST_Theme"/>
+ <xsd:attribute name="eastAsiaTheme" type="ST_Theme"/>
+ <xsd:attribute name="cstheme" type="ST_Theme"/>
+ </xsd:complexType>
+ <xsd:group name="EG_RPrBase">
+ <xsd:sequence>
+ <xsd:element name="rStyle" type="CT_String" minOccurs="0"/>
+ <xsd:element name="rFonts" type="CT_Fonts" minOccurs="0"/>
+ <xsd:element name="b" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="bCs" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="i" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="iCs" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="caps" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="smallCaps" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="strike" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="dstrike" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="outline" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="shadow" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="emboss" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="imprint" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="noProof" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="snapToGrid" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="vanish" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="webHidden" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="color" type="CT_Color" minOccurs="0"/>
+ <xsd:element name="spacing" type="CT_SignedTwipsMeasure" minOccurs="0"/>
+ <xsd:element name="w" type="CT_TextScale" minOccurs="0"/>
+ <xsd:element name="kern" type="CT_HpsMeasure" minOccurs="0"/>
+ <xsd:element name="position" type="CT_SignedHpsMeasure" minOccurs="0"/>
+ <xsd:element name="sz" type="CT_HpsMeasure" minOccurs="0"/>
+ <xsd:element name="szCs" type="CT_HpsMeasure" minOccurs="0"/>
+ <xsd:element name="highlight" type="CT_Highlight" minOccurs="0"/>
+ <xsd:element name="u" type="CT_Underline" minOccurs="0"/>
+ <xsd:element name="effect" type="CT_TextEffect" minOccurs="0"/>
+ <xsd:element name="bdr" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="shd" type="CT_Shd" minOccurs="0"/>
+ <xsd:element name="fitText" type="CT_FitText" minOccurs="0"/>
+ <xsd:element name="vertAlign" type="CT_VerticalAlignRun" minOccurs="0"/>
+ <xsd:element name="rtl" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="cs" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="em" type="CT_Em" minOccurs="0"/>
+ <xsd:element name="lang" type="CT_Language" minOccurs="0"/>
+ <xsd:element name="eastAsianLayout" type="CT_EastAsianLayout" minOccurs="0"/>
+ <xsd:element name="specVanish" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="oMath" type="CT_OnOff" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="EG_RPrContent">
+ <xsd:sequence>
+ <xsd:group ref="EG_RPrBase" minOccurs="0"/>
+ <xsd:element name="rPrChange" type="CT_RPrChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_RPr">
+ <xsd:sequence>
+ <xsd:group ref="EG_RPrContent" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_RPr">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:group name="EG_RPrMath">
+ <xsd:choice>
+ <xsd:group ref="EG_RPr"/>
+ <xsd:element name="ins" type="CT_MathCtrlIns"/>
+ <xsd:element name="del" type="CT_MathCtrlDel"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_MathCtrlIns">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:choice minOccurs="0">
+ <xsd:element name="del" type="CT_RPrChange" minOccurs="1"/>
+ <xsd:element name="rPr" type="CT_RPr" minOccurs="1"/>
+ </xsd:choice>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MathCtrlDel">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrackChange">
+ <xsd:choice minOccurs="0">
+ <xsd:element name="rPr" type="CT_RPr" minOccurs="1"/>
+ </xsd:choice>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RPrOriginal">
+ <xsd:sequence>
+ <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ParaRPrOriginal">
+ <xsd:sequence>
+ <xsd:group ref="EG_ParaRPrTrackChanges" minOccurs="0"/>
+ <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ParaRPr">
+ <xsd:sequence>
+ <xsd:group ref="EG_ParaRPrTrackChanges" minOccurs="0"/>
+ <xsd:group ref="EG_RPrBase" minOccurs="0"/>
+ <xsd:element name="rPrChange" type="CT_ParaRPrChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_ParaRPrTrackChanges">
+ <xsd:sequence>
+ <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/>
+ <xsd:element name="del" type="CT_TrackChange" minOccurs="0"/>
+ <xsd:element name="moveFrom" type="CT_TrackChange" minOccurs="0"/>
+ <xsd:element name="moveTo" type="CT_TrackChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_AltChunk">
+ <xsd:sequence>
+ <xsd:element name="altChunkPr" type="CT_AltChunkPr" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute ref="r:id" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AltChunkPr">
+ <xsd:sequence>
+ <xsd:element name="matchSrc" type="CT_OnOff" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_RubyAlign">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="center"/>
+ <xsd:enumeration value="distributeLetter"/>
+ <xsd:enumeration value="distributeSpace"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ <xsd:enumeration value="rightVertical"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_RubyAlign">
+ <xsd:attribute name="val" type="ST_RubyAlign" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RubyPr">
+ <xsd:sequence>
+ <xsd:element name="rubyAlign" type="CT_RubyAlign"/>
+ <xsd:element name="hps" type="CT_HpsMeasure"/>
+ <xsd:element name="hpsRaise" type="CT_HpsMeasure"/>
+ <xsd:element name="hpsBaseText" type="CT_HpsMeasure"/>
+ <xsd:element name="lid" type="CT_Lang"/>
+ <xsd:element name="dirty" type="CT_OnOff" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_RubyContent">
+ <xsd:choice>
+ <xsd:element name="r" type="CT_R"/>
+ <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_RubyContent">
+ <xsd:group ref="EG_RubyContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Ruby">
+ <xsd:sequence>
+ <xsd:element name="rubyPr" type="CT_RubyPr"/>
+ <xsd:element name="rt" type="CT_RubyContent"/>
+ <xsd:element name="rubyBase" type="CT_RubyContent"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Lock">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="sdtLocked"/>
+ <xsd:enumeration value="contentLocked"/>
+ <xsd:enumeration value="unlocked"/>
+ <xsd:enumeration value="sdtContentLocked"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Lock">
+ <xsd:attribute name="val" type="ST_Lock"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtListItem">
+ <xsd:attribute name="displayText" type="s:ST_String"/>
+ <xsd:attribute name="value" type="s:ST_String"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_SdtDateMappingType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="text"/>
+ <xsd:enumeration value="date"/>
+ <xsd:enumeration value="dateTime"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SdtDateMappingType">
+ <xsd:attribute name="val" type="ST_SdtDateMappingType"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CalendarType">
+ <xsd:attribute name="val" type="s:ST_CalendarType"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtDate">
+ <xsd:sequence>
+ <xsd:element name="dateFormat" type="CT_String" minOccurs="0"/>
+ <xsd:element name="lid" type="CT_Lang" minOccurs="0"/>
+ <xsd:element name="storeMappedDataAs" type="CT_SdtDateMappingType" minOccurs="0"/>
+ <xsd:element name="calendar" type="CT_CalendarType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="fullDate" type="ST_DateTime" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtComboBox">
+ <xsd:sequence>
+ <xsd:element name="listItem" type="CT_SdtListItem" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="lastValue" type="s:ST_String" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtDocPart">
+ <xsd:sequence>
+ <xsd:element name="docPartGallery" type="CT_String" minOccurs="0"/>
+ <xsd:element name="docPartCategory" type="CT_String" minOccurs="0"/>
+ <xsd:element name="docPartUnique" type="CT_OnOff" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtDropDownList">
+ <xsd:sequence>
+ <xsd:element name="listItem" type="CT_SdtListItem" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="lastValue" type="s:ST_String" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Placeholder">
+ <xsd:sequence>
+ <xsd:element name="docPart" type="CT_String"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtText">
+ <xsd:attribute name="multiLine" type="s:ST_OnOff"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DataBinding">
+ <xsd:attribute name="prefixMappings" type="s:ST_String"/>
+ <xsd:attribute name="xpath" type="s:ST_String" use="required"/>
+ <xsd:attribute name="storeItemID" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtPr">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/>
+ <xsd:element name="alias" type="CT_String" minOccurs="0"/>
+ <xsd:element name="label" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="tabIndex" type="CT_UnsignedDecimalNumber" minOccurs="0"/>
+ <xsd:element name="lock" type="CT_Lock" minOccurs="0"/>
+ <xsd:element name="placeholder" type="CT_Placeholder" minOccurs="0"/>
+ <xsd:element name="showingPlcHdr" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="dataBinding" type="CT_DataBinding" minOccurs="0"/>
+ <xsd:element name="temporary" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="id" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="tag" type="CT_String" minOccurs="0"/>
+ <xsd:choice minOccurs="0" maxOccurs="1">
+ <xsd:element name="equation" type="CT_Empty"/>
+ <xsd:element name="comboBox" type="CT_SdtComboBox"/>
+ <xsd:element name="date" type="CT_SdtDate"/>
+ <xsd:element name="docPartObj" type="CT_SdtDocPart"/>
+ <xsd:element name="docPartList" type="CT_SdtDocPart"/>
+ <xsd:element name="dropDownList" type="CT_SdtDropDownList"/>
+ <xsd:element name="picture" type="CT_Empty"/>
+ <xsd:element name="richText" type="CT_Empty"/>
+ <xsd:element name="text" type="CT_SdtText"/>
+ <xsd:element name="citation" type="CT_Empty"/>
+ <xsd:element name="group" type="CT_Empty"/>
+ <xsd:element name="bibliography" type="CT_Empty"/>
+ </xsd:choice>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtEndPr">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:group name="EG_ContentRunContent">
+ <xsd:choice>
+ <xsd:element name="customXml" type="CT_CustomXmlRun"/>
+ <xsd:element name="smartTag" type="CT_SmartTagRun"/>
+ <xsd:element name="sdt" type="CT_SdtRun"/>
+ <xsd:element name="dir" type="CT_DirContentRun"/>
+ <xsd:element name="bdo" type="CT_BdoContentRun"/>
+ <xsd:element name="r" type="CT_R"/>
+ <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_DirContentRun">
+ <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:attribute name="val" type="ST_Direction" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_BdoContentRun">
+ <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:attribute name="val" type="ST_Direction" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Direction">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="ltr"/>
+ <xsd:enumeration value="rtl"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_SdtContentRun">
+ <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:complexType>
+ <xsd:group name="EG_ContentBlockContent">
+ <xsd:choice>
+ <xsd:element name="customXml" type="CT_CustomXmlBlock"/>
+ <xsd:element name="sdt" type="CT_SdtBlock"/>
+ <xsd:element name="p" type="CT_P" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="tbl" type="CT_Tbl" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_SdtContentBlock">
+ <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:complexType>
+ <xsd:group name="EG_ContentRowContent">
+ <xsd:choice>
+ <xsd:element name="tr" type="CT_Row" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="customXml" type="CT_CustomXmlRow"/>
+ <xsd:element name="sdt" type="CT_SdtRow"/>
+ <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_SdtContentRow">
+ <xsd:group ref="EG_ContentRowContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:complexType>
+ <xsd:group name="EG_ContentCellContent">
+ <xsd:choice>
+ <xsd:element name="tc" type="CT_Tc" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="customXml" type="CT_CustomXmlCell"/>
+ <xsd:element name="sdt" type="CT_SdtCell"/>
+ <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_SdtContentCell">
+ <xsd:group ref="EG_ContentCellContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtBlock">
+ <xsd:sequence>
+ <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sdtContent" type="CT_SdtContentBlock" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtRun">
+ <xsd:sequence>
+ <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sdtContent" type="CT_SdtContentRun" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtCell">
+ <xsd:sequence>
+ <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sdtContent" type="CT_SdtContentCell" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SdtRow">
+ <xsd:sequence>
+ <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sdtContent" type="CT_SdtContentRow" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Attr">
+ <xsd:attribute name="uri" type="s:ST_String"/>
+ <xsd:attribute name="name" type="s:ST_String" use="required"/>
+ <xsd:attribute name="val" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomXmlRun">
+ <xsd:sequence>
+ <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="s:ST_String"/>
+ <xsd:attribute name="element" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SmartTagRun">
+ <xsd:sequence>
+ <xsd:element name="smartTagPr" type="CT_SmartTagPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="s:ST_String"/>
+ <xsd:attribute name="element" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomXmlBlock">
+ <xsd:sequence>
+ <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="s:ST_String"/>
+ <xsd:attribute name="element" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomXmlPr">
+ <xsd:sequence>
+ <xsd:element name="placeholder" type="CT_String" minOccurs="0"/>
+ <xsd:element name="attr" type="CT_Attr" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomXmlRow">
+ <xsd:sequence>
+ <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_ContentRowContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="s:ST_String"/>
+ <xsd:attribute name="element" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CustomXmlCell">
+ <xsd:sequence>
+ <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_ContentCellContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="uri" type="s:ST_String"/>
+ <xsd:attribute name="element" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SmartTagPr">
+ <xsd:sequence>
+ <xsd:element name="attr" type="CT_Attr" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:group name="EG_PContent">
+ <xsd:choice>
+ <xsd:group ref="EG_ContentRunContent" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="fldSimple" type="CT_SimpleField" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="hyperlink" type="CT_Hyperlink"/>
+ <xsd:element name="subDoc" type="CT_Rel"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_P">
+ <xsd:sequence>
+ <xsd:element name="pPr" type="CT_PPr" minOccurs="0"/>
+ <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidR" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidP" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidRDefault" type="ST_LongHexNumber"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TblWidth">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="nil"/>
+ <xsd:enumeration value="pct"/>
+ <xsd:enumeration value="dxa"/>
+ <xsd:enumeration value="auto"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Height">
+ <xsd:attribute name="val" type="s:ST_TwipsMeasure"/>
+ <xsd:attribute name="hRule" type="ST_HeightRule"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MeasurementOrPercent">
+ <xsd:union memberTypes="ST_DecimalNumberOrPercent s:ST_UniversalMeasure"/>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TblWidth">
+ <xsd:attribute name="w" type="ST_MeasurementOrPercent"/>
+ <xsd:attribute name="type" type="ST_TblWidth"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblGridCol">
+ <xsd:attribute name="w" type="s:ST_TwipsMeasure"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblGridBase">
+ <xsd:sequence>
+ <xsd:element name="gridCol" type="CT_TblGridCol" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblGrid">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TblGridBase">
+ <xsd:sequence>
+ <xsd:element name="tblGridChange" type="CT_TblGridChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TcBorders">
+ <xsd:sequence>
+ <xsd:element name="top" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="start" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="left" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="bottom" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="end" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="right" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="insideH" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="insideV" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="tl2br" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="tr2bl" type="CT_Border" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TcMar">
+ <xsd:sequence>
+ <xsd:element name="top" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="start" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="left" type="CT_TblWidth" minOccurs="0"/>
+ <xsd:element name="bottom" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="end" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="right" type="CT_TblWidth" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Merge">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="continue"/>
+ <xsd:enumeration value="restart"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_VMerge">
+ <xsd:attribute name="val" type="ST_Merge"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_HMerge">
+ <xsd:attribute name="val" type="ST_Merge"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TcPrBase">
+ <xsd:sequence>
+ <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tcW" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="gridSpan" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="hMerge" type="CT_HMerge" minOccurs="0"/>
+ <xsd:element name="vMerge" type="CT_VMerge" minOccurs="0"/>
+ <xsd:element name="tcBorders" type="CT_TcBorders" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shd" type="CT_Shd" minOccurs="0"/>
+ <xsd:element name="noWrap" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="tcMar" type="CT_TcMar" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tcFitText" type="CT_OnOff" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="vAlign" type="CT_VerticalJc" minOccurs="0"/>
+ <xsd:element name="hideMark" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="headers" type="CT_Headers" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TcPr">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TcPrInner">
+ <xsd:sequence>
+ <xsd:element name="tcPrChange" type="CT_TcPrChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TcPrInner">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TcPrBase">
+ <xsd:sequence>
+ <xsd:group ref="EG_CellMarkupElements" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Tc">
+ <xsd:sequence>
+ <xsd:element name="tcPr" type="CT_TcPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="s:ST_String" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Cnf">
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="12"/>
+ <xsd:pattern value="[01]*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Cnf">
+ <xsd:attribute name="val" type="ST_Cnf"/>
+ <xsd:attribute name="firstRow" type="s:ST_OnOff"/>
+ <xsd:attribute name="lastRow" type="s:ST_OnOff"/>
+ <xsd:attribute name="firstColumn" type="s:ST_OnOff"/>
+ <xsd:attribute name="lastColumn" type="s:ST_OnOff"/>
+ <xsd:attribute name="oddVBand" type="s:ST_OnOff"/>
+ <xsd:attribute name="evenVBand" type="s:ST_OnOff"/>
+ <xsd:attribute name="oddHBand" type="s:ST_OnOff"/>
+ <xsd:attribute name="evenHBand" type="s:ST_OnOff"/>
+ <xsd:attribute name="firstRowFirstColumn" type="s:ST_OnOff"/>
+ <xsd:attribute name="firstRowLastColumn" type="s:ST_OnOff"/>
+ <xsd:attribute name="lastRowFirstColumn" type="s:ST_OnOff"/>
+ <xsd:attribute name="lastRowLastColumn" type="s:ST_OnOff"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Headers">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="header" type="CT_String"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TrPrBase">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="divId" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="gridBefore" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="gridAfter" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="wBefore" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="wAfter" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="cantSplit" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="trHeight" type="CT_Height" minOccurs="0"/>
+ <xsd:element name="tblHeader" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="tblCellSpacing" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="jc" type="CT_JcTable" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="hidden" type="CT_OnOff" minOccurs="0"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TrPr">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TrPrBase">
+ <xsd:sequence>
+ <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/>
+ <xsd:element name="del" type="CT_TrackChange" minOccurs="0"/>
+ <xsd:element name="trPrChange" type="CT_TrPrChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Row">
+ <xsd:sequence>
+ <xsd:element name="tblPrEx" type="CT_TblPrEx" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trPr" type="CT_TrPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:group ref="EG_ContentCellContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidR" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/>
+ <xsd:attribute name="rsidTr" type="ST_LongHexNumber"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TblLayoutType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="fixed"/>
+ <xsd:enumeration value="autofit"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TblLayoutType">
+ <xsd:attribute name="type" type="ST_TblLayoutType"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TblOverlap">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="never"/>
+ <xsd:enumeration value="overlap"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TblOverlap">
+ <xsd:attribute name="val" type="ST_TblOverlap" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblPPr">
+ <xsd:attribute name="leftFromText" type="s:ST_TwipsMeasure"/>
+ <xsd:attribute name="rightFromText" type="s:ST_TwipsMeasure"/>
+ <xsd:attribute name="topFromText" type="s:ST_TwipsMeasure"/>
+ <xsd:attribute name="bottomFromText" type="s:ST_TwipsMeasure"/>
+ <xsd:attribute name="vertAnchor" type="ST_VAnchor"/>
+ <xsd:attribute name="horzAnchor" type="ST_HAnchor"/>
+ <xsd:attribute name="tblpXSpec" type="s:ST_XAlign"/>
+ <xsd:attribute name="tblpX" type="ST_SignedTwipsMeasure"/>
+ <xsd:attribute name="tblpYSpec" type="s:ST_YAlign"/>
+ <xsd:attribute name="tblpY" type="ST_SignedTwipsMeasure"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblCellMar">
+ <xsd:sequence>
+ <xsd:element name="top" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="start" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="left" type="CT_TblWidth" minOccurs="0"/>
+ <xsd:element name="bottom" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="end" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="right" type="CT_TblWidth" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblBorders">
+ <xsd:sequence>
+ <xsd:element name="top" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="start" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="left" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="bottom" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="end" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="right" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="insideH" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="insideV" type="CT_Border" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblPrBase">
+ <xsd:sequence>
+ <xsd:element name="tblStyle" type="CT_String" minOccurs="0"/>
+ <xsd:element name="tblpPr" type="CT_TblPPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblOverlap" type="CT_TblOverlap" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="bidiVisual" type="CT_OnOff" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblStyleRowBandSize" type="CT_DecimalNumber" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblStyleColBandSize" type="CT_DecimalNumber" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblW" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="jc" type="CT_JcTable" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblCellSpacing" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblInd" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblBorders" type="CT_TblBorders" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shd" type="CT_Shd" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblLayout" type="CT_TblLayoutType" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblCellMar" type="CT_TblCellMar" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblLook" type="CT_TblLook" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblCaption" type="CT_String" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblDescription" type="CT_String" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblPr">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TblPrBase">
+ <xsd:sequence>
+ <xsd:element name="tblPrChange" type="CT_TblPrChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblPrExBase">
+ <xsd:sequence>
+ <xsd:element name="tblW" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="jc" type="CT_JcTable" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblCellSpacing" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblInd" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblBorders" type="CT_TblBorders" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shd" type="CT_Shd" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblLayout" type="CT_TblLayoutType" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblCellMar" type="CT_TblCellMar" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblLook" type="CT_TblLook" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblPrEx">
+ <xsd:complexContent>
+ <xsd:extension base="CT_TblPrExBase">
+ <xsd:sequence>
+ <xsd:element name="tblPrExChange" type="CT_TblPrExChange" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Tbl">
+ <xsd:sequence>
+ <xsd:group ref="EG_RangeMarkupElements" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="tblPr" type="CT_TblPr"/>
+ <xsd:element name="tblGrid" type="CT_TblGrid"/>
+ <xsd:group ref="EG_ContentRowContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TblLook">
+ <xsd:attribute name="firstRow" type="s:ST_OnOff"/>
+ <xsd:attribute name="lastRow" type="s:ST_OnOff"/>
+ <xsd:attribute name="firstColumn" type="s:ST_OnOff"/>
+ <xsd:attribute name="lastColumn" type="s:ST_OnOff"/>
+ <xsd:attribute name="noHBand" type="s:ST_OnOff"/>
+ <xsd:attribute name="noVBand" type="s:ST_OnOff"/>
+ <xsd:attribute name="val" type="ST_ShortHexNumber"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FtnPos">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="pageBottom"/>
+ <xsd:enumeration value="beneathText"/>
+ <xsd:enumeration value="sectEnd"/>
+ <xsd:enumeration value="docEnd"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FtnPos">
+ <xsd:attribute name="val" type="ST_FtnPos" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_EdnPos">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="sectEnd"/>
+ <xsd:enumeration value="docEnd"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_EdnPos">
+ <xsd:attribute name="val" type="ST_EdnPos" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumFmt">
+ <xsd:attribute name="val" type="ST_NumberFormat" use="required"/>
+ <xsd:attribute name="format" type="s:ST_String" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_RestartNumber">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="continuous"/>
+ <xsd:enumeration value="eachSect"/>
+ <xsd:enumeration value="eachPage"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_NumRestart">
+ <xsd:attribute name="val" type="ST_RestartNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FtnEdnRef">
+ <xsd:attribute name="customMarkFollows" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="id" use="required" type="ST_DecimalNumber"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FtnEdnSepRef">
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FtnEdn">
+ <xsd:sequence>
+ <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_FtnEdn" use="optional"/>
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:group name="EG_FtnEdnNumProps">
+ <xsd:sequence>
+ <xsd:element name="numStart" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="numRestart" type="CT_NumRestart" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:group>
+ <xsd:complexType name="CT_FtnProps">
+ <xsd:sequence>
+ <xsd:element name="pos" type="CT_FtnPos" minOccurs="0"/>
+ <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0"/>
+ <xsd:group ref="EG_FtnEdnNumProps" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EdnProps">
+ <xsd:sequence>
+ <xsd:element name="pos" type="CT_EdnPos" minOccurs="0"/>
+ <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0"/>
+ <xsd:group ref="EG_FtnEdnNumProps" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FtnDocProps">
+ <xsd:complexContent>
+ <xsd:extension base="CT_FtnProps">
+ <xsd:sequence>
+ <xsd:element name="footnote" type="CT_FtnEdnSepRef" minOccurs="0" maxOccurs="3"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_EdnDocProps">
+ <xsd:complexContent>
+ <xsd:extension base="CT_EdnProps">
+ <xsd:sequence>
+ <xsd:element name="endnote" type="CT_FtnEdnSepRef" minOccurs="0" maxOccurs="3"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RecipientData">
+ <xsd:sequence>
+ <xsd:element name="active" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="column" type="CT_DecimalNumber" minOccurs="1"/>
+ <xsd:element name="uniqueTag" type="CT_Base64Binary" minOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Base64Binary">
+ <xsd:attribute name="val" type="xsd:base64Binary" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Recipients">
+ <xsd:sequence>
+ <xsd:element name="recipientData" type="CT_RecipientData" minOccurs="1" maxOccurs="unbounded"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="recipients" type="CT_Recipients"/>
+ <xsd:complexType name="CT_OdsoFieldMapData">
+ <xsd:sequence>
+ <xsd:element name="type" type="CT_MailMergeOdsoFMDFieldType" minOccurs="0"/>
+ <xsd:element name="name" type="CT_String" minOccurs="0"/>
+ <xsd:element name="mappedName" type="CT_String" minOccurs="0"/>
+ <xsd:element name="column" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="lid" type="CT_Lang" minOccurs="0"/>
+ <xsd:element name="dynamicAddress" type="CT_OnOff" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MailMergeSourceType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="database"/>
+ <xsd:enumeration value="addressBook"/>
+ <xsd:enumeration value="document1"/>
+ <xsd:enumeration value="document2"/>
+ <xsd:enumeration value="text"/>
+ <xsd:enumeration value="email"/>
+ <xsd:enumeration value="native"/>
+ <xsd:enumeration value="legacy"/>
+ <xsd:enumeration value="master"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MailMergeSourceType">
+ <xsd:attribute name="val" use="required" type="ST_MailMergeSourceType"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Odso">
+ <xsd:sequence>
+ <xsd:element name="udl" type="CT_String" minOccurs="0"/>
+ <xsd:element name="table" type="CT_String" minOccurs="0"/>
+ <xsd:element name="src" type="CT_Rel" minOccurs="0"/>
+ <xsd:element name="colDelim" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="type" type="CT_MailMergeSourceType" minOccurs="0"/>
+ <xsd:element name="fHdr" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="fieldMapData" type="CT_OdsoFieldMapData" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="recipientData" type="CT_Rel" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_MailMerge">
+ <xsd:sequence>
+ <xsd:element name="mainDocumentType" type="CT_MailMergeDocType" minOccurs="1"/>
+ <xsd:element name="linkToQuery" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="dataType" type="CT_MailMergeDataType" minOccurs="1"/>
+ <xsd:element name="connectString" type="CT_String" minOccurs="0"/>
+ <xsd:element name="query" type="CT_String" minOccurs="0"/>
+ <xsd:element name="dataSource" type="CT_Rel" minOccurs="0"/>
+ <xsd:element name="headerSource" type="CT_Rel" minOccurs="0"/>
+ <xsd:element name="doNotSuppressBlankLines" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="destination" type="CT_MailMergeDest" minOccurs="0"/>
+ <xsd:element name="addressFieldName" type="CT_String" minOccurs="0"/>
+ <xsd:element name="mailSubject" type="CT_String" minOccurs="0"/>
+ <xsd:element name="mailAsAttachment" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="viewMergedData" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="activeRecord" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="checkErrors" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="odso" type="CT_Odso" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TargetScreenSz">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="544x376"/>
+ <xsd:enumeration value="640x480"/>
+ <xsd:enumeration value="720x512"/>
+ <xsd:enumeration value="800x600"/>
+ <xsd:enumeration value="1024x768"/>
+ <xsd:enumeration value="1152x882"/>
+ <xsd:enumeration value="1152x900"/>
+ <xsd:enumeration value="1280x1024"/>
+ <xsd:enumeration value="1600x1200"/>
+ <xsd:enumeration value="1800x1440"/>
+ <xsd:enumeration value="1920x1200"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TargetScreenSz">
+ <xsd:attribute name="val" type="ST_TargetScreenSz" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Compat">
+ <xsd:sequence>
+ <xsd:element name="useSingleBorderforContiguousCells" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="wpJustification" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="noTabHangInd" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="noLeading" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="spaceForUL" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="noColumnBalance" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="balanceSingleByteDoubleByteWidth" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="noExtraLineSpacing" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotLeaveBackslashAlone" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="ulTrailSpace" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotExpandShiftReturn" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="spacingInWholePoints" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="lineWrapLikeWord6" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="printBodyTextBeforeHeader" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="printColBlack" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="wpSpaceWidth" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="showBreaksInFrames" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="subFontBySize" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="suppressBottomSpacing" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="suppressTopSpacing" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="suppressSpacingAtTopOfPage" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="suppressTopSpacingWP" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="suppressSpBfAfterPgBrk" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="swapBordersFacingPages" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="convMailMergeEsc" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="truncateFontHeightsLikeWP6" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="mwSmallCaps" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="usePrinterMetrics" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotSuppressParagraphBorders" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="wrapTrailSpaces" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="footnoteLayoutLikeWW8" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="shapeLayoutLikeWW8" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="alignTablesRowByRow" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="forgetLastTabAlignment" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="adjustLineHeightInTable" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="autoSpaceLikeWord95" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="noSpaceRaiseLower" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotUseHTMLParagraphAutoSpacing" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="layoutRawTableWidth" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="layoutTableRowsApart" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="useWord97LineBreakRules" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotBreakWrappedTables" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotSnapToGridInCell" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="selectFldWithFirstOrLastChar" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="applyBreakingRules" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotWrapTextWithPunct" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotUseEastAsianBreakRules" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="useWord2002TableStyleRules" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="growAutofit" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="useFELayout" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="useNormalStyleForList" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotUseIndentAsNumberingTabStop" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="useAltKinsokuLineBreakRules" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="allowSpaceOfSameStyleInTable" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotSuppressIndentation" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotAutofitConstrainedTables" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="autofitToFirstFixedWidthCell" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="underlineTabInNumList" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="displayHangulFixedWidth" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="splitPgBreakAndParaMark" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotVertAlignCellWithSp" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotBreakConstrainedForcedTable" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotVertAlignInTxbx" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="useAnsiKerningPairs" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="cachedColBalance" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="compatSetting" type="CT_CompatSetting" minOccurs="0" maxOccurs="unbounded"
+ />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_CompatSetting">
+ <xsd:attribute name="name" type="s:ST_String"/>
+ <xsd:attribute name="uri" type="s:ST_String"/>
+ <xsd:attribute name="val" type="s:ST_String"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocVar">
+ <xsd:attribute name="name" type="s:ST_String" use="required"/>
+ <xsd:attribute name="val" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocVars">
+ <xsd:sequence>
+ <xsd:element name="docVar" type="CT_DocVar" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocRsids">
+ <xsd:sequence>
+ <xsd:element name="rsidRoot" type="CT_LongHexNumber" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rsid" type="CT_LongHexNumber" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_CharacterSpacing">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="doNotCompress"/>
+ <xsd:enumeration value="compressPunctuation"/>
+ <xsd:enumeration value="compressPunctuationAndJapaneseKana"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_CharacterSpacing">
+ <xsd:attribute name="val" type="ST_CharacterSpacing" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_SaveThroughXslt">
+ <xsd:attribute ref="r:id" use="optional"/>
+ <xsd:attribute name="solutionID" type="s:ST_String" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_RPrDefault">
+ <xsd:sequence>
+ <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_PPrDefault">
+ <xsd:sequence>
+ <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocDefaults">
+ <xsd:sequence>
+ <xsd:element name="rPrDefault" type="CT_RPrDefault" minOccurs="0"/>
+ <xsd:element name="pPrDefault" type="CT_PPrDefault" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_WmlColorSchemeIndex">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="dark1"/>
+ <xsd:enumeration value="light1"/>
+ <xsd:enumeration value="dark2"/>
+ <xsd:enumeration value="light2"/>
+ <xsd:enumeration value="accent1"/>
+ <xsd:enumeration value="accent2"/>
+ <xsd:enumeration value="accent3"/>
+ <xsd:enumeration value="accent4"/>
+ <xsd:enumeration value="accent5"/>
+ <xsd:enumeration value="accent6"/>
+ <xsd:enumeration value="hyperlink"/>
+ <xsd:enumeration value="followedHyperlink"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_ColorSchemeMapping">
+ <xsd:attribute name="bg1" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="t1" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="bg2" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="t2" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="accent1" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="accent2" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="accent3" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="accent4" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="accent5" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="accent6" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="hyperlink" type="ST_WmlColorSchemeIndex"/>
+ <xsd:attribute name="followedHyperlink" type="ST_WmlColorSchemeIndex"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ReadingModeInkLockDown">
+ <xsd:attribute name="actualPg" type="s:ST_OnOff" use="required"/>
+ <xsd:attribute name="w" type="ST_PixelsMeasure" use="required"/>
+ <xsd:attribute name="h" type="ST_PixelsMeasure" use="required"/>
+ <xsd:attribute name="fontSz" type="ST_DecimalNumberOrPercent" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_WriteProtection">
+ <xsd:attribute name="recommended" type="s:ST_OnOff" use="optional"/>
+ <xsd:attributeGroup ref="AG_Password"/>
+ <xsd:attributeGroup ref="AG_TransitionalPassword"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Settings">
+ <xsd:sequence>
+ <xsd:element name="writeProtection" type="CT_WriteProtection" minOccurs="0"/>
+ <xsd:element name="view" type="CT_View" minOccurs="0"/>
+ <xsd:element name="zoom" type="CT_Zoom" minOccurs="0"/>
+ <xsd:element name="removePersonalInformation" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="removeDateAndTime" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotDisplayPageBoundaries" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="displayBackgroundShape" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="printPostScriptOverText" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="printFractionalCharacterWidth" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="printFormsData" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="embedTrueTypeFonts" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="embedSystemFonts" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="saveSubsetFonts" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="saveFormsData" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="mirrorMargins" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="alignBordersAndEdges" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="bordersDoNotSurroundHeader" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="bordersDoNotSurroundFooter" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="gutterAtTop" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="hideSpellingErrors" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="hideGrammaticalErrors" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="activeWritingStyle" type="CT_WritingStyle" minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="proofState" type="CT_Proof" minOccurs="0"/>
+ <xsd:element name="formsDesign" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="attachedTemplate" type="CT_Rel" minOccurs="0"/>
+ <xsd:element name="linkStyles" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="stylePaneFormatFilter" type="CT_StylePaneFilter" minOccurs="0"/>
+ <xsd:element name="stylePaneSortMethod" type="CT_StyleSort" minOccurs="0"/>
+ <xsd:element name="documentType" type="CT_DocType" minOccurs="0"/>
+ <xsd:element name="mailMerge" type="CT_MailMerge" minOccurs="0"/>
+ <xsd:element name="revisionView" type="CT_TrackChangesView" minOccurs="0"/>
+ <xsd:element name="trackRevisions" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotTrackMoves" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotTrackFormatting" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="documentProtection" type="CT_DocProtect" minOccurs="0"/>
+ <xsd:element name="autoFormatOverride" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="styleLockTheme" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="styleLockQFSet" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="defaultTabStop" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="autoHyphenation" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="consecutiveHyphenLimit" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="hyphenationZone" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="doNotHyphenateCaps" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="showEnvelope" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="summaryLength" type="CT_DecimalNumberOrPrecent" minOccurs="0"/>
+ <xsd:element name="clickAndTypeStyle" type="CT_String" minOccurs="0"/>
+ <xsd:element name="defaultTableStyle" type="CT_String" minOccurs="0"/>
+ <xsd:element name="evenAndOddHeaders" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="bookFoldRevPrinting" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="bookFoldPrinting" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="bookFoldPrintingSheets" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="drawingGridHorizontalSpacing" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="drawingGridVerticalSpacing" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="displayHorizontalDrawingGridEvery" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="displayVerticalDrawingGridEvery" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="doNotUseMarginsForDrawingGridOrigin" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="drawingGridHorizontalOrigin" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="drawingGridVerticalOrigin" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="doNotShadeFormData" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="noPunctuationKerning" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="characterSpacingControl" type="CT_CharacterSpacing" minOccurs="0"/>
+ <xsd:element name="printTwoOnOne" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="strictFirstAndLastChars" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="noLineBreaksAfter" type="CT_Kinsoku" minOccurs="0"/>
+ <xsd:element name="noLineBreaksBefore" type="CT_Kinsoku" minOccurs="0"/>
+ <xsd:element name="savePreviewPicture" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotValidateAgainstSchema" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="saveInvalidXml" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="ignoreMixedContent" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="alwaysShowPlaceholderText" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotDemarcateInvalidXml" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="saveXmlDataOnly" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="useXSLTWhenSaving" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="saveThroughXslt" type="CT_SaveThroughXslt" minOccurs="0"/>
+ <xsd:element name="showXMLTags" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="alwaysMergeEmptyNamespace" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="updateFields" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="hdrShapeDefaults" type="CT_ShapeDefaults" minOccurs="0"/>
+ <xsd:element name="footnotePr" type="CT_FtnDocProps" minOccurs="0"/>
+ <xsd:element name="endnotePr" type="CT_EdnDocProps" minOccurs="0"/>
+ <xsd:element name="compat" type="CT_Compat" minOccurs="0"/>
+ <xsd:element name="docVars" type="CT_DocVars" minOccurs="0"/>
+ <xsd:element name="rsids" type="CT_DocRsids" minOccurs="0"/>
+ <xsd:element ref="m:mathPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="attachedSchema" type="CT_String" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="themeFontLang" type="CT_Language" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="clrSchemeMapping" type="CT_ColorSchemeMapping" minOccurs="0"/>
+ <xsd:element name="doNotIncludeSubdocsInStats" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotAutoCompressPictures" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="forceUpgrade" type="CT_Empty" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="captions" type="CT_Captions" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="readModeInkLockDown" type="CT_ReadingModeInkLockDown" minOccurs="0"/>
+ <xsd:element name="smartTagType" type="CT_SmartTagType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element ref="sl:schemaLibrary" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="shapeDefaults" type="CT_ShapeDefaults" minOccurs="0"/>
+ <xsd:element name="doNotEmbedSmartTags" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="decimalSymbol" type="CT_String" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="listSeparator" type="CT_String" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StyleSort">
+ <xsd:attribute name="val" type="ST_StyleSort" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_StylePaneFilter">
+ <xsd:attribute name="allStyles" type="s:ST_OnOff"/>
+ <xsd:attribute name="customStyles" type="s:ST_OnOff"/>
+ <xsd:attribute name="latentStyles" type="s:ST_OnOff"/>
+ <xsd:attribute name="stylesInUse" type="s:ST_OnOff"/>
+ <xsd:attribute name="headingStyles" type="s:ST_OnOff"/>
+ <xsd:attribute name="numberingStyles" type="s:ST_OnOff"/>
+ <xsd:attribute name="tableStyles" type="s:ST_OnOff"/>
+ <xsd:attribute name="directFormattingOnRuns" type="s:ST_OnOff"/>
+ <xsd:attribute name="directFormattingOnParagraphs" type="s:ST_OnOff"/>
+ <xsd:attribute name="directFormattingOnNumbering" type="s:ST_OnOff"/>
+ <xsd:attribute name="directFormattingOnTables" type="s:ST_OnOff"/>
+ <xsd:attribute name="clearFormatting" type="s:ST_OnOff"/>
+ <xsd:attribute name="top3HeadingStyles" type="s:ST_OnOff"/>
+ <xsd:attribute name="visibleStyles" type="s:ST_OnOff"/>
+ <xsd:attribute name="alternateStyleNames" type="s:ST_OnOff"/>
+ <xsd:attribute name="val" type="ST_ShortHexNumber"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_StyleSort">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="name"/>
+ <xsd:enumeration value="priority"/>
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="font"/>
+ <xsd:enumeration value="basedOn"/>
+ <xsd:enumeration value="type"/>
+ <xsd:enumeration value="0000"/>
+ <xsd:enumeration value="0001"/>
+ <xsd:enumeration value="0002"/>
+ <xsd:enumeration value="0003"/>
+ <xsd:enumeration value="0004"/>
+ <xsd:enumeration value="0005"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_WebSettings">
+ <xsd:sequence>
+ <xsd:element name="frameset" type="CT_Frameset" minOccurs="0"/>
+ <xsd:element name="divs" type="CT_Divs" minOccurs="0"/>
+ <xsd:element name="encoding" type="CT_String" minOccurs="0"/>
+ <xsd:element name="optimizeForBrowser" type="CT_OptimizeForBrowser" minOccurs="0"/>
+ <xsd:element name="relyOnVML" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="allowPNG" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotRelyOnCSS" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotSaveAsSingleFile" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotOrganizeInFolder" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="doNotUseLongFileNames" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="pixelsPerInch" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="targetScreenSz" type="CT_TargetScreenSz" minOccurs="0"/>
+ <xsd:element name="saveSmartTagsAsXml" type="CT_OnOff" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FrameScrollbar">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="on"/>
+ <xsd:enumeration value="off"/>
+ <xsd:enumeration value="auto"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FrameScrollbar">
+ <xsd:attribute name="val" type="ST_FrameScrollbar" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_OptimizeForBrowser">
+ <xsd:complexContent>
+ <xsd:extension base="CT_OnOff">
+ <xsd:attribute name="target" type="s:ST_String" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Frame">
+ <xsd:sequence>
+ <xsd:element name="sz" type="CT_String" minOccurs="0"/>
+ <xsd:element name="name" type="CT_String" minOccurs="0"/>
+ <xsd:element name="title" type="CT_String" minOccurs="0"/>
+ <xsd:element name="longDesc" type="CT_Rel" minOccurs="0"/>
+ <xsd:element name="sourceFileName" type="CT_Rel" minOccurs="0"/>
+ <xsd:element name="marW" type="CT_PixelsMeasure" minOccurs="0"/>
+ <xsd:element name="marH" type="CT_PixelsMeasure" minOccurs="0"/>
+ <xsd:element name="scrollbar" type="CT_FrameScrollbar" minOccurs="0"/>
+ <xsd:element name="noResizeAllowed" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="linkedToFile" type="CT_OnOff" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FrameLayout">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="rows"/>
+ <xsd:enumeration value="cols"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FrameLayout">
+ <xsd:attribute name="val" type="ST_FrameLayout" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FramesetSplitbar">
+ <xsd:sequence>
+ <xsd:element name="w" type="CT_TwipsMeasure" minOccurs="0"/>
+ <xsd:element name="color" type="CT_Color" minOccurs="0"/>
+ <xsd:element name="noBorder" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="flatBorders" type="CT_OnOff" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Frameset">
+ <xsd:sequence>
+ <xsd:element name="sz" type="CT_String" minOccurs="0"/>
+ <xsd:element name="framesetSplitbar" type="CT_FramesetSplitbar" minOccurs="0"/>
+ <xsd:element name="frameLayout" type="CT_FrameLayout" minOccurs="0"/>
+ <xsd:element name="title" type="CT_String" minOccurs="0"/>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="frameset" type="CT_Frameset" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="frame" type="CT_Frame" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumPicBullet">
+ <xsd:choice>
+ <xsd:element name="pict" type="CT_Picture"/>
+ <xsd:element name="drawing" type="CT_Drawing"/>
+ </xsd:choice>
+ <xsd:attribute name="numPicBulletId" type="ST_DecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_LevelSuffix">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="tab"/>
+ <xsd:enumeration value="space"/>
+ <xsd:enumeration value="nothing"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_LevelSuffix">
+ <xsd:attribute name="val" type="ST_LevelSuffix" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LevelText">
+ <xsd:attribute name="val" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="null" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LvlLegacy">
+ <xsd:attribute name="legacy" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="legacySpace" type="s:ST_TwipsMeasure" use="optional"/>
+ <xsd:attribute name="legacyIndent" type="ST_SignedTwipsMeasure" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Lvl">
+ <xsd:sequence>
+ <xsd:element name="start" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0"/>
+ <xsd:element name="lvlRestart" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="pStyle" type="CT_String" minOccurs="0"/>
+ <xsd:element name="isLgl" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="suff" type="CT_LevelSuffix" minOccurs="0"/>
+ <xsd:element name="lvlText" type="CT_LevelText" minOccurs="0"/>
+ <xsd:element name="lvlPicBulletId" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="legacy" type="CT_LvlLegacy" minOccurs="0"/>
+ <xsd:element name="lvlJc" type="CT_Jc" minOccurs="0"/>
+ <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/>
+ <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="ilvl" type="ST_DecimalNumber" use="required"/>
+ <xsd:attribute name="tplc" type="ST_LongHexNumber" use="optional"/>
+ <xsd:attribute name="tentative" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_MultiLevelType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="singleLevel"/>
+ <xsd:enumeration value="multilevel"/>
+ <xsd:enumeration value="hybridMultilevel"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_MultiLevelType">
+ <xsd:attribute name="val" type="ST_MultiLevelType" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AbstractNum">
+ <xsd:sequence>
+ <xsd:element name="nsid" type="CT_LongHexNumber" minOccurs="0"/>
+ <xsd:element name="multiLevelType" type="CT_MultiLevelType" minOccurs="0"/>
+ <xsd:element name="tmpl" type="CT_LongHexNumber" minOccurs="0"/>
+ <xsd:element name="name" type="CT_String" minOccurs="0"/>
+ <xsd:element name="styleLink" type="CT_String" minOccurs="0"/>
+ <xsd:element name="numStyleLink" type="CT_String" minOccurs="0"/>
+ <xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="9"/>
+ </xsd:sequence>
+ <xsd:attribute name="abstractNumId" type="ST_DecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_NumLvl">
+ <xsd:sequence>
+ <xsd:element name="startOverride" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="ilvl" type="ST_DecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Num">
+ <xsd:sequence>
+ <xsd:element name="abstractNumId" type="CT_DecimalNumber" minOccurs="1"/>
+ <xsd:element name="lvlOverride" type="CT_NumLvl" minOccurs="0" maxOccurs="9"/>
+ </xsd:sequence>
+ <xsd:attribute name="numId" type="ST_DecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Numbering">
+ <xsd:sequence>
+ <xsd:element name="numPicBullet" type="CT_NumPicBullet" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="abstractNum" type="CT_AbstractNum" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="num" type="CT_Num" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="numIdMacAtCleanup" type="CT_DecimalNumber" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_TblStyleOverrideType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="wholeTable"/>
+ <xsd:enumeration value="firstRow"/>
+ <xsd:enumeration value="lastRow"/>
+ <xsd:enumeration value="firstCol"/>
+ <xsd:enumeration value="lastCol"/>
+ <xsd:enumeration value="band1Vert"/>
+ <xsd:enumeration value="band2Vert"/>
+ <xsd:enumeration value="band1Horz"/>
+ <xsd:enumeration value="band2Horz"/>
+ <xsd:enumeration value="neCell"/>
+ <xsd:enumeration value="nwCell"/>
+ <xsd:enumeration value="seCell"/>
+ <xsd:enumeration value="swCell"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_TblStylePr">
+ <xsd:sequence>
+ <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/>
+ <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/>
+ <xsd:element name="tblPr" type="CT_TblPrBase" minOccurs="0"/>
+ <xsd:element name="trPr" type="CT_TrPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tcPr" type="CT_TcPr" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_TblStyleOverrideType" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_StyleType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="paragraph"/>
+ <xsd:enumeration value="character"/>
+ <xsd:enumeration value="table"/>
+ <xsd:enumeration value="numbering"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Style">
+ <xsd:sequence>
+ <xsd:element name="name" type="CT_String" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="aliases" type="CT_String" minOccurs="0"/>
+ <xsd:element name="basedOn" type="CT_String" minOccurs="0"/>
+ <xsd:element name="next" type="CT_String" minOccurs="0"/>
+ <xsd:element name="link" type="CT_String" minOccurs="0"/>
+ <xsd:element name="autoRedefine" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="hidden" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="uiPriority" type="CT_DecimalNumber" minOccurs="0"/>
+ <xsd:element name="semiHidden" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="unhideWhenUsed" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="qFormat" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="locked" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="personal" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="personalCompose" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="personalReply" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="rsid" type="CT_LongHexNumber" minOccurs="0"/>
+ <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="rPr" type="CT_RPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblPr" type="CT_TblPrBase" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="trPr" type="CT_TrPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tcPr" type="CT_TcPr" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="tblStylePr" type="CT_TblStylePr" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="ST_StyleType" use="optional"/>
+ <xsd:attribute name="styleId" type="s:ST_String" use="optional"/>
+ <xsd:attribute name="default" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="customStyle" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LsdException">
+ <xsd:attribute name="name" type="s:ST_String" use="required"/>
+ <xsd:attribute name="locked" type="s:ST_OnOff"/>
+ <xsd:attribute name="uiPriority" type="ST_DecimalNumber"/>
+ <xsd:attribute name="semiHidden" type="s:ST_OnOff"/>
+ <xsd:attribute name="unhideWhenUsed" type="s:ST_OnOff"/>
+ <xsd:attribute name="qFormat" type="s:ST_OnOff"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_LatentStyles">
+ <xsd:sequence>
+ <xsd:element name="lsdException" type="CT_LsdException" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="defLockedState" type="s:ST_OnOff"/>
+ <xsd:attribute name="defUIPriority" type="ST_DecimalNumber"/>
+ <xsd:attribute name="defSemiHidden" type="s:ST_OnOff"/>
+ <xsd:attribute name="defUnhideWhenUsed" type="s:ST_OnOff"/>
+ <xsd:attribute name="defQFormat" type="s:ST_OnOff"/>
+ <xsd:attribute name="count" type="ST_DecimalNumber"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Styles">
+ <xsd:sequence>
+ <xsd:element name="docDefaults" type="CT_DocDefaults" minOccurs="0"/>
+ <xsd:element name="latentStyles" type="CT_LatentStyles" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="style" type="CT_Style" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Panose">
+ <xsd:attribute name="val" type="s:ST_Panose" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_FontFamily">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="decorative"/>
+ <xsd:enumeration value="modern"/>
+ <xsd:enumeration value="roman"/>
+ <xsd:enumeration value="script"/>
+ <xsd:enumeration value="swiss"/>
+ <xsd:enumeration value="auto"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_FontFamily">
+ <xsd:attribute name="val" type="ST_FontFamily" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_Pitch">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="fixed"/>
+ <xsd:enumeration value="variable"/>
+ <xsd:enumeration value="default"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Pitch">
+ <xsd:attribute name="val" type="ST_Pitch" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontSig">
+ <xsd:attribute name="usb0" use="required" type="ST_LongHexNumber"/>
+ <xsd:attribute name="usb1" use="required" type="ST_LongHexNumber"/>
+ <xsd:attribute name="usb2" use="required" type="ST_LongHexNumber"/>
+ <xsd:attribute name="usb3" use="required" type="ST_LongHexNumber"/>
+ <xsd:attribute name="csb0" use="required" type="ST_LongHexNumber"/>
+ <xsd:attribute name="csb1" use="required" type="ST_LongHexNumber"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontRel">
+ <xsd:complexContent>
+ <xsd:extension base="CT_Rel">
+ <xsd:attribute name="fontKey" type="s:ST_Guid"/>
+ <xsd:attribute name="subsetted" type="s:ST_OnOff"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Font">
+ <xsd:sequence>
+ <xsd:element name="altName" type="CT_String" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="panose1" type="CT_Panose" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="charset" type="CT_Charset" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="family" type="CT_FontFamily" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="notTrueType" type="CT_OnOff" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="pitch" type="CT_Pitch" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="sig" type="CT_FontSig" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="embedRegular" type="CT_FontRel" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="embedBold" type="CT_FontRel" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="embedItalic" type="CT_FontRel" minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="embedBoldItalic" type="CT_FontRel" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_FontsList">
+ <xsd:sequence>
+ <xsd:element name="font" type="CT_Font" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DivBdr">
+ <xsd:sequence>
+ <xsd:element name="top" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="left" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="bottom" type="CT_Border" minOccurs="0"/>
+ <xsd:element name="right" type="CT_Border" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Div">
+ <xsd:sequence>
+ <xsd:element name="blockQuote" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="bodyDiv" type="CT_OnOff" minOccurs="0"/>
+ <xsd:element name="marLeft" type="CT_SignedTwipsMeasure"/>
+ <xsd:element name="marRight" type="CT_SignedTwipsMeasure"/>
+ <xsd:element name="marTop" type="CT_SignedTwipsMeasure"/>
+ <xsd:element name="marBottom" type="CT_SignedTwipsMeasure"/>
+ <xsd:element name="divBdr" type="CT_DivBdr" minOccurs="0"/>
+ <xsd:element name="divsChild" type="CT_Divs" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Divs">
+ <xsd:sequence minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="div" type="CT_Div"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_TxbxContent">
+ <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:complexType>
+ <xsd:element name="txbxContent" type="CT_TxbxContent"/>
+ <xsd:group name="EG_MathContent">
+ <xsd:choice>
+ <xsd:element ref="m:oMathPara"/>
+ <xsd:element ref="m:oMath"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_BlockLevelChunkElts">
+ <xsd:choice>
+ <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_BlockLevelElts">
+ <xsd:choice>
+ <xsd:group ref="EG_BlockLevelChunkElts" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="altChunk" type="CT_AltChunk" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:group name="EG_RunLevelElts">
+ <xsd:choice>
+ <xsd:element name="proofErr" minOccurs="0" type="CT_ProofErr"/>
+ <xsd:element name="permStart" minOccurs="0" type="CT_PermStart"/>
+ <xsd:element name="permEnd" minOccurs="0" type="CT_Perm"/>
+ <xsd:group ref="EG_RangeMarkupElements" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="ins" type="CT_RunTrackChange" minOccurs="0"/>
+ <xsd:element name="del" type="CT_RunTrackChange" minOccurs="0"/>
+ <xsd:element name="moveFrom" type="CT_RunTrackChange"/>
+ <xsd:element name="moveTo" type="CT_RunTrackChange"/>
+ <xsd:group ref="EG_MathContent" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:group>
+ <xsd:complexType name="CT_Body">
+ <xsd:sequence>
+ <xsd:group ref="EG_BlockLevelElts" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="sectPr" minOccurs="0" maxOccurs="1" type="CT_SectPr"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_ShapeDefaults">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Comments">
+ <xsd:sequence>
+ <xsd:element name="comment" type="CT_Comment" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="comments" type="CT_Comments"/>
+ <xsd:complexType name="CT_Footnotes">
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="footnote" type="CT_FtnEdn" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="footnotes" type="CT_Footnotes"/>
+ <xsd:complexType name="CT_Endnotes">
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="endnote" type="CT_FtnEdn" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="endnotes" type="CT_Endnotes"/>
+ <xsd:element name="hdr" type="CT_HdrFtr"/>
+ <xsd:element name="ftr" type="CT_HdrFtr"/>
+ <xsd:complexType name="CT_SmartTagType">
+ <xsd:attribute name="namespaceuri" type="s:ST_String"/>
+ <xsd:attribute name="name" type="s:ST_String"/>
+ <xsd:attribute name="url" type="s:ST_String"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_ThemeColor">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="dark1"/>
+ <xsd:enumeration value="light1"/>
+ <xsd:enumeration value="dark2"/>
+ <xsd:enumeration value="light2"/>
+ <xsd:enumeration value="accent1"/>
+ <xsd:enumeration value="accent2"/>
+ <xsd:enumeration value="accent3"/>
+ <xsd:enumeration value="accent4"/>
+ <xsd:enumeration value="accent5"/>
+ <xsd:enumeration value="accent6"/>
+ <xsd:enumeration value="hyperlink"/>
+ <xsd:enumeration value="followedHyperlink"/>
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="background1"/>
+ <xsd:enumeration value="text1"/>
+ <xsd:enumeration value="background2"/>
+ <xsd:enumeration value="text2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="ST_DocPartBehavior">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="content"/>
+ <xsd:enumeration value="p"/>
+ <xsd:enumeration value="pg"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DocPartBehavior">
+ <xsd:attribute name="val" use="required" type="ST_DocPartBehavior"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocPartBehaviors">
+ <xsd:choice>
+ <xsd:element name="behavior" type="CT_DocPartBehavior" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DocPartType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="normal"/>
+ <xsd:enumeration value="autoExp"/>
+ <xsd:enumeration value="toolbar"/>
+ <xsd:enumeration value="speller"/>
+ <xsd:enumeration value="formFld"/>
+ <xsd:enumeration value="bbPlcHdr"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DocPartType">
+ <xsd:attribute name="val" use="required" type="ST_DocPartType"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocPartTypes">
+ <xsd:choice>
+ <xsd:element name="type" type="CT_DocPartType" maxOccurs="unbounded"/>
+ </xsd:choice>
+ <xsd:attribute name="all" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:simpleType name="ST_DocPartGallery">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="placeholder"/>
+ <xsd:enumeration value="any"/>
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="docParts"/>
+ <xsd:enumeration value="coverPg"/>
+ <xsd:enumeration value="eq"/>
+ <xsd:enumeration value="ftrs"/>
+ <xsd:enumeration value="hdrs"/>
+ <xsd:enumeration value="pgNum"/>
+ <xsd:enumeration value="tbls"/>
+ <xsd:enumeration value="watermarks"/>
+ <xsd:enumeration value="autoTxt"/>
+ <xsd:enumeration value="txtBox"/>
+ <xsd:enumeration value="pgNumT"/>
+ <xsd:enumeration value="pgNumB"/>
+ <xsd:enumeration value="pgNumMargins"/>
+ <xsd:enumeration value="tblOfContents"/>
+ <xsd:enumeration value="bib"/>
+ <xsd:enumeration value="custQuickParts"/>
+ <xsd:enumeration value="custCoverPg"/>
+ <xsd:enumeration value="custEq"/>
+ <xsd:enumeration value="custFtrs"/>
+ <xsd:enumeration value="custHdrs"/>
+ <xsd:enumeration value="custPgNum"/>
+ <xsd:enumeration value="custTbls"/>
+ <xsd:enumeration value="custWatermarks"/>
+ <xsd:enumeration value="custAutoTxt"/>
+ <xsd:enumeration value="custTxtBox"/>
+ <xsd:enumeration value="custPgNumT"/>
+ <xsd:enumeration value="custPgNumB"/>
+ <xsd:enumeration value="custPgNumMargins"/>
+ <xsd:enumeration value="custTblOfContents"/>
+ <xsd:enumeration value="custBib"/>
+ <xsd:enumeration value="custom1"/>
+ <xsd:enumeration value="custom2"/>
+ <xsd:enumeration value="custom3"/>
+ <xsd:enumeration value="custom4"/>
+ <xsd:enumeration value="custom5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_DocPartGallery">
+ <xsd:attribute name="val" type="ST_DocPartGallery" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocPartCategory">
+ <xsd:sequence>
+ <xsd:element name="name" type="CT_String" minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="gallery" type="CT_DocPartGallery" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocPartName">
+ <xsd:attribute name="val" type="s:ST_String" use="required"/>
+ <xsd:attribute name="decorated" type="s:ST_OnOff" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocPartPr">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="name" type="CT_DocPartName" minOccurs="1"/>
+ <xsd:element name="style" type="CT_String"/>
+ <xsd:element name="category" type="CT_DocPartCategory"/>
+ <xsd:element name="types" type="CT_DocPartTypes"/>
+ <xsd:element name="behaviors" type="CT_DocPartBehaviors"/>
+ <xsd:element name="description" type="CT_String"/>
+ <xsd:element name="guid" type="CT_Guid"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocPart">
+ <xsd:sequence>
+ <xsd:element name="docPartPr" type="CT_DocPartPr" minOccurs="0"/>
+ <xsd:element name="docPartBody" type="CT_Body" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocParts">
+ <xsd:choice>
+ <xsd:element name="docPart" type="CT_DocPart" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:element name="settings" type="CT_Settings"/>
+ <xsd:element name="webSettings" type="CT_WebSettings"/>
+ <xsd:element name="fonts" type="CT_FontsList"/>
+ <xsd:element name="numbering" type="CT_Numbering"/>
+ <xsd:element name="styles" type="CT_Styles"/>
+ <xsd:simpleType name="ST_CaptionPos">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="above"/>
+ <xsd:enumeration value="below"/>
+ <xsd:enumeration value="left"/>
+ <xsd:enumeration value="right"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CT_Caption">
+ <xsd:attribute name="name" type="s:ST_String" use="required"/>
+ <xsd:attribute name="pos" type="ST_CaptionPos" use="optional"/>
+ <xsd:attribute name="chapNum" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="heading" type="ST_DecimalNumber" use="optional"/>
+ <xsd:attribute name="noLabel" type="s:ST_OnOff" use="optional"/>
+ <xsd:attribute name="numFmt" type="ST_NumberFormat" use="optional"/>
+ <xsd:attribute name="sep" type="ST_ChapterSep" use="optional"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AutoCaption">
+ <xsd:attribute name="name" type="s:ST_String" use="required"/>
+ <xsd:attribute name="caption" type="s:ST_String" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="CT_AutoCaptions">
+ <xsd:sequence>
+ <xsd:element name="autoCaption" type="CT_AutoCaption" minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Captions">
+ <xsd:sequence>
+ <xsd:element name="caption" type="CT_Caption" minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="autoCaptions" type="CT_AutoCaptions" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_DocumentBase">
+ <xsd:sequence>
+ <xsd:element name="background" type="CT_Background" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CT_Document">
+ <xsd:complexContent>
+ <xsd:extension base="CT_DocumentBase">
+ <xsd:sequence>
+ <xsd:element name="body" type="CT_Body" minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="conformance" type="s:ST_ConformanceClass"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CT_GlossaryDocument">
+ <xsd:complexContent>
+ <xsd:extension base="CT_DocumentBase">
+ <xsd:sequence>
+ <xsd:element name="docParts" type="CT_DocParts" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:element name="document" type="CT_Document"/>
+ <xsd:element name="glossaryDocument" type="CT_GlossaryDocument"/>
+</xsd:schema>
diff --git a/lib/schema/xml.xsd b/lib/schema/xml.xsd
new file mode 100644
index 00000000..d662b423
--- /dev/null
+++ b/lib/schema/xml.xsd
@@ -0,0 +1,117 @@
+<?xml version='1.0'?>
+<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" >
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang or xml:space attributes
+ on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ &lt;schema . . .>
+ . . .
+ &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ &lt;type . . .>
+ . . .
+ &lt;attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2001/03/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself. In other words, if the XML Schema namespace changes, the version
+ of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2001/03/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang" type="xs:language">
+ <xs:annotation>
+ <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values . . .</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="space" default="preserve">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+
+</xs:schema>
diff --git a/test.xlsx b/test.xlsx
new file mode 100644
index 00000000..3702715a
--- /dev/null
+++ b/test.xlsx
Binary files differ
diff --git a/test/content_type/tc_content_type.rb b/test/content_type/tc_content_type.rb
new file mode 100644
index 00000000..62ea05e8
--- /dev/null
+++ b/test/content_type/tc_content_type.rb
@@ -0,0 +1,81 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestContentType < Test::Unit::TestCase
+ def setup
+ @package = Axlsx::Package.new
+ @doc = Nokogiri::XML(@package.send(:content_types).to_xml)
+ end
+
+ def test_valid_document
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::CONTENT_TYPES_XSD))
+ errors = []
+ schema.validate(@doc).each do |error|
+ puts error.message
+ errors << error
+ end
+ assert_equal(errors.size, 0, "[Content Types].xml Invalid" + errors.map{ |e| e.message }.to_s)
+ end
+
+ def test_pre_built_types
+
+ o_path = "Types Override [@ContentType='%s']"
+ d_path = "Types Default [@ContentType='%s']"
+
+ #default
+ assert_equal(@doc.css("Types Default").size, 2, "There should be 2 default types")
+
+ node = @doc.css(d_path % Axlsx::XML_CT).first
+ assert_equal(node["Extension"], "#{Axlsx::XML_EX}", "xml content type invalid")
+
+ node = @doc.css(d_path % Axlsx::RELS_CT).first
+ assert_equal(node["Extension"],"#{Axlsx::RELS_EX}", "relationships content type invalid")
+
+ #overrride
+ assert_equal(@doc.css("Types Override").size, 4, "There should be 4 Override types")
+
+ node = @doc.css(o_path % Axlsx::APP_CT).first
+ assert_equal(node["PartName"], "/#{Axlsx::APP_PN}", "App part name invalid")
+
+ node = @doc.css(o_path % Axlsx::CORE_CT).first
+ assert_equal(node["PartName"], "/#{Axlsx::CORE_PN}", "Core part name invalid")
+
+ node = @doc.css(o_path % Axlsx::STYLES_CT).first
+ assert_equal(node["PartName"], "/xl/#{Axlsx::STYLES_PN}", "Styles part name invalid")
+
+ node = @doc.css(o_path % Axlsx::WORKBOOK_CT).first
+ assert_equal(node["PartName"], "/#{Axlsx::WORKBOOK_PN}", "Workbook part invalid")
+ end
+
+ def test_should_get_worksheet_for_worksheets
+ o_path = "Types Override [@ContentType='%s']"
+
+ ws = @package.workbook.add_worksheet
+ doc = Nokogiri::XML(@package.send(:content_types).to_xml)
+ assert_equal(doc.css("Types Override").size, 5, "adding a worksheet should add another type")
+ assert_equal(doc.css(o_path % Axlsx::WORKSHEET_CT).last["PartName"], "/xl/#{ws.pn}", "Worksheet part invalid")
+
+ ws = @package.workbook.add_worksheet
+ doc = Nokogiri::XML(@package.send(:content_types).to_xml)
+ assert_equal(doc.css("Types Override").size, 6, "adding workship should add another type")
+ assert_equal(doc.css(o_path % Axlsx::WORKSHEET_CT).last["PartName"], "/xl/#{ws.pn}", "Worksheet part invalid")
+
+ end
+
+ def test_drawings_and_charts_need_content_types
+ o_path = "Types Override [@ContentType='%s']"
+ ws = @package.workbook.add_worksheet
+
+ c = ws.add_chart Axlsx::Pie3DChart
+ doc = Nokogiri::XML(@package.send(:content_types).to_xml)
+ assert_equal(doc.css("Types Override").size, 7, "expected 7 types got #{doc.css("Types Override").size}")
+ assert_equal(doc.css(o_path % Axlsx::DRAWING_CT).first["PartName"], "/xl/#{ws.drawing.pn}", "Drawing part name invlid")
+ assert_equal(doc.css(o_path % Axlsx::CHART_CT).last["PartName"], "/xl/#{c.pn}", "Chart part name invlid")
+
+ c = ws.add_chart Axlsx::Pie3DChart
+ doc = Nokogiri::XML(@package.send(:content_types).to_xml)
+ assert_equal(doc.css("Types Override").size, 8, "expected 7 types got #{doc.css("Types Override").size}")
+ assert_equal(doc.css(o_path % Axlsx::CHART_CT).last["PartName"], "/xl/#{c.pn}", "Chart part name invlid")
+ end
+
+end
diff --git a/test/content_type/tc_default.rb b/test/content_type/tc_default.rb
new file mode 100644
index 00000000..ce024de8
--- /dev/null
+++ b/test/content_type/tc_default.rb
@@ -0,0 +1,40 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestDefault < Test::Unit::TestCase
+ def setup
+ end
+ def teardown
+ end
+ def test_initialization_requires_Extension_and_ContentType
+ assert_raise(ArgumentError, "raises argument error if Extension and/or ContentType are not specified") { Axlsx::Default.new }
+ assert_raise(ArgumentError, "raises argument error if Extension and/or ContentType are not specified") { Axlsx::Default.new :Extension=>"xml" }
+ assert_raise(ArgumentError, "raises argument error if Extension and/or ContentType are not specified") { Axlsx::Default.new :ContentType=>"asdf" }
+
+ assert_nothing_raised {Axlsx::Default.new :Extension=>"foo", :ContentType=>Axlsx::XML_CT}
+
+ end
+ def test_content_type_restriction
+ assert_raise(ArgumentError, "raises argument error if invlalid ContentType is") { Axlsx::Default.new :ContentType=>"asdf" }
+ end
+
+ def test_to_xml
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::CONTENT_TYPES_XSD))
+ type = Axlsx::Default.new :Extension=>"xml", :ContentType=>Axlsx::XML_CT
+ builder = Nokogiri::XML::Builder.new(:encoding => Axlsx::ENCODING) do |xml|
+ xml.Types(:xmlns => Axlsx::XML_NS_T) {
+ type.to_xml(xml)
+ }
+ end
+ doc = Nokogiri::XML(builder.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ puts error.message
+ errors << error
+ end
+ assert_equal(errors.size, 0, "[Content Types].xml Invalid" + errors.map{ |e| e.message }.to_s)
+
+ end
+
+
+end
diff --git a/test/content_type/tc_override.rb b/test/content_type/tc_override.rb
new file mode 100644
index 00000000..3f478a3f
--- /dev/null
+++ b/test/content_type/tc_override.rb
@@ -0,0 +1,40 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestOverride < Test::Unit::TestCase
+ def setup
+ end
+ def teardown
+ end
+ def test_initialization_requires_Extension_and_ContentType
+ err = "requires PartName and ContentType options"
+ assert_raise(ArgumentError, err) { Axlsx::Override.new }
+ assert_raise(ArgumentError, err) { Axlsx::Override.new :PartName=>"xml" }
+ assert_raise(ArgumentError, err) { Axlsx::Override.new :ContentType=>"asdf" }
+ assert_nothing_raised {Axlsx::Override.new :PartName=>"foo", :ContentType=>Axlsx::CHART_CT}
+ end
+
+ def test_content_type_restriction
+ assert_raise(ArgumentError, "requires known content type") { Axlsx::Override.new :ContentType=>"asdf" }
+ end
+
+ def test_to_xml
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::CONTENT_TYPES_XSD))
+ type = Axlsx::Override.new :PartName=>"somechart.xml", :ContentType=>Axlsx::CHART_CT
+ builder = Nokogiri::XML::Builder.new(:encoding => Axlsx::ENCODING) do |xml|
+ xml.Types(:xmlns => Axlsx::XML_NS_T) {
+ type.to_xml(xml)
+ }
+ end
+ doc = Nokogiri::XML(builder.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ puts error.message
+ errors << error
+ end
+ assert_equal(errors.size, 0, "Override content type caused invalid content_type doc" + errors.map{ |e| e.message }.to_s)
+
+ end
+
+
+end
diff --git a/test/doc_props/tc_app.rb b/test/doc_props/tc_app.rb
new file mode 100644
index 00000000..546896a0
--- /dev/null
+++ b/test/doc_props/tc_app.rb
@@ -0,0 +1,19 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestApp < Test::Unit::TestCase
+ def setup
+ end
+ def teardown
+ end
+
+ def test_valid_document
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::APP_XSD))
+ doc = Nokogiri::XML(Axlsx::App.new.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ errors << error
+ end
+ assert_equal(errors.size, 0, "app.xml invalid" + errors.map{ |e| e.message }.to_s)
+ end
+end
diff --git a/test/doc_props/tc_core.rb b/test/doc_props/tc_core.rb
new file mode 100644
index 00000000..5dd490a8
--- /dev/null
+++ b/test/doc_props/tc_core.rb
@@ -0,0 +1,34 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestCore < Test::Unit::TestCase
+
+ def setup
+ @core = Axlsx::Core.new
+ @doc = Nokogiri::XML(@core.to_xml)
+ end
+
+ def test_valid_document
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::CORE_XSD))
+ errors = []
+ schema.validate(@doc).each do |error|
+ puts error.message
+ errors << error
+ end
+ assert_equal(errors.size, 0, "core.xml Invalid" + errors.map{ |e| e.message }.to_s)
+ end
+
+ def test_populates_created
+ assert_equal(@doc.xpath('//dcterms:created').text, Time.now.strftime('%Y-%m-%dT%H:%M:%S'), "dcterms:created incorrect")
+ end
+
+ def test_populates_default_name
+ assert_equal(@doc.xpath('//dc:creator').text, "axlsx", "Default name not populated")
+ end
+
+ def test_creator_as_option
+ c = Axlsx::Core.new :creator => "some guy"
+ doc = Nokogiri::XML(c.to_xml)
+ assert(doc.xpath('//dc:creator').text == "some guy")
+ end
+end
diff --git a/test/drawing/tc_axis.rb b/test/drawing/tc_axis.rb
new file mode 100644
index 00000000..6b08d842
--- /dev/null
+++ b/test/drawing/tc_axis.rb
@@ -0,0 +1,39 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestAxis < Test::Unit::TestCase
+ def setup
+ @axis = Axlsx::Axis.new 12345, 54321
+ end
+ def teardown
+ end
+
+ def test_initialization
+ assert_equal(@axis.axPos, :l, "axis position default incorrect")
+ assert_equal(@axis.tickLblPos, :nextTo, "tick label position default incorrect")
+ assert_equal(@axis.tickLblPos, :nextTo, "tick label position default incorrect")
+ assert_equal(@axis.crosses, :autoZero, "tick label position default incorrect")
+ assert(@axis.scaling.is_a?(Axlsx::Scaling) && @axis.scaling.orientation == :minMax, "scaling default incorrect")
+ end
+
+ def test_axis_position
+ assert_raise(ArgumentError, "requires valid axis position") { @axis.axPos = :nowhere }
+ assert_nothing_raised("accepts valid axis position") { @axis.axPos = :r }
+ end
+
+ def test_tick_label_position
+ assert_raise(ArgumentError, "requires valid tick label position") { @axis.tickLblPos = :nowhere }
+ assert_nothing_raised("accepts valid tick label position") { @axis.tickLblPos = :high }
+ end
+
+ def test_format_code
+ assert_raise(ArgumentError, "requires valid format code") { @axis.format_code = 1 }
+ assert_nothing_raised("accepts valid format code") { @axis.tickLblPos = :high }
+ end
+
+ def test_crosses
+ assert_raise(ArgumentError, "requires valid crosses") { @axis.crosses = 1 }
+ assert_nothing_raised("accepts valid crosses") { @axis.crosses = :min }
+ end
+
+end
diff --git a/test/drawing/tc_bar_3D_chart.rb b/test/drawing/tc_bar_3D_chart.rb
new file mode 100644
index 00000000..ff01464c
--- /dev/null
+++ b/test/drawing/tc_bar_3D_chart.rb
@@ -0,0 +1,66 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestBar3DChart < Test::Unit::TestCase
+
+ def setup
+ @p = Axlsx::Package.new
+ ws = @p.workbook.add_worksheet
+ @row = ws.add_row ["one", 1, Time.now]
+ @chart = ws.add_chart Axlsx::Bar3DChart, :title => "fishery"
+ end
+
+ def teardown
+ end
+
+ def test_initialization
+ assert_equal(@chart.grouping, :clustered, "grouping defualt incorrect")
+ assert_equal(@chart.series_type, Axlsx::BarSeries, "series type incorrect")
+ assert_equal(@chart.barDir, :bar, " bar direction incorrect")
+ assert(@chart.catAxis.is_a?(Axlsx::CatAxis), "category axis not created")
+ assert(@chart.valAxis.is_a?(Axlsx::ValAxis), "value access not created")
+ end
+
+ def test_bar_direction
+ assert_raise(ArgumentError, "require valid bar direction") { @chart.barDir = :left }
+ assert_nothing_raised("allow valid bar direction") { @chart.barDir = :col }
+ assert(@chart.barDir == :col)
+ end
+
+ def test_grouping
+ assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
+ assert_nothing_raised("allow valid grouping") { @chart.grouping = :standard }
+ assert(@chart.grouping == :standard)
+ end
+
+
+ def test_gapWidth
+ assert_raise(ArgumentError, "require valid gap width") { @chart.gapWidth = 200 }
+ assert_nothing_raised("allow valid gapWidth") { @chart.gapWidth = "200%" }
+ assert(@chart.gapWidth == "200%")
+ end
+
+ def test_gapDepth
+ assert_raise(ArgumentError, "require valid gapDepth") { @chart.gapDepth = 200 }
+ assert_nothing_raised("allow valid gapDepth") { @chart.gapDepth = "200%" }
+ assert(@chart.gapDepth == "200%")
+ end
+
+ def test_shape
+ assert_raise(ArgumentError, "require valid shape") { @chart.shape = :star }
+ assert_nothing_raised("allow valid shape") { @chart.shape = :cone }
+ assert(@chart.shape == :cone)
+ end
+
+ def test_to_xml
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
+ doc = Nokogiri::XML(@chart.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ errors.push error
+ puts error.message
+ end
+ assert(errors.empty?, "error free validation")
+ end
+
+end
diff --git a/test/drawing/tc_bar_series.rb b/test/drawing/tc_bar_series.rb
new file mode 100644
index 00000000..1f0800f1
--- /dev/null
+++ b/test/drawing/tc_bar_series.rb
@@ -0,0 +1,34 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestBarSeries < Test::Unit::TestCase
+
+ def setup
+ p = Axlsx::Package.new
+ @ws = p.workbook.add_worksheet :name=>"hmmm"
+ chart = @ws.drawing.add_chart Axlsx::Bar3DChart, :title => "fishery"
+ @series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob"
+ end
+
+ def test_initialize
+ assert_equal(@series.title, "bob", "series title has been applied")
+ assert_equal(@series.data, [0,1,2], "data option applied")
+ assert_equal(@series.labels, ["zero", "one","two"], "labels option applied")
+ assert_equal(@series.shape, :box, "series shape has been applied")
+ end
+
+ def test_data
+ assert_equal(@series.data, [0,1,2])
+ end
+
+ def test_labels
+ assert_equal(@series.labels, ["zero", "one", "two"])
+ end
+
+ def test_shape
+ assert_raise(ArgumentError, "require valid shape") { @series.shape = :teardropt }
+ assert_nothing_raised("allow valid shape") { @series.shape = :cone }
+ assert(@series.shape == :cone)
+ end
+
+end
diff --git a/test/drawing/tc_cat_axis.rb b/test/drawing/tc_cat_axis.rb
new file mode 100644
index 00000000..afecaf3b
--- /dev/null
+++ b/test/drawing/tc_cat_axis.rb
@@ -0,0 +1,32 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestCatAxis < Test::Unit::TestCase
+ def setup
+ @axis = Axlsx::CatAxis.new 12345, 54321
+ end
+ def teardown
+ end
+
+ def test_initialization
+ assert_equal(@axis.auto, true, "axis auto default incorrect")
+ assert_equal(@axis.lblAlgn, :ctr, "label align default incorrect")
+ assert_equal(@axis.lblOffset, "100%", "label offset default incorrect")
+ end
+
+ def test_auto
+ assert_raise(ArgumentError, "requires valid auto") { @axis.auto = :nowhere }
+ assert_nothing_raised("accepts valid auto") { @axis.auto = false }
+ end
+
+ def test_lblAlgn
+ assert_raise(ArgumentError, "requires valid label alignment") { @axis.lblAlgn = :nowhere }
+ assert_nothing_raised("accepts valid label alignment") { @axis.lblAlgn = :r }
+ end
+
+ def test_lblOffset
+ assert_raise(ArgumentError, "requires valid label offset") { @axis.lblOffset = 100 }
+ assert_nothing_raised("accepts valid label offset") { @axis.lblOffset = "20%" }
+ end
+
+end
diff --git a/test/drawing/tc_chart.rb b/test/drawing/tc_chart.rb
new file mode 100644
index 00000000..8e26a832
--- /dev/null
+++ b/test/drawing/tc_chart.rb
@@ -0,0 +1,59 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestChart < Test::Unit::TestCase
+
+ def setup
+ @p = Axlsx::Package.new
+ ws = @p.workbook.add_worksheet
+ @row = ws.add_row ["one", 1, Time.now]
+ @chart = ws.add_chart Axlsx::Bar3DChart, :title => "fishery"
+ end
+
+ def teardown
+ end
+
+ def test_initialization
+ assert_equal(@p.workbook.charts.last,@chart, "the chart is in the workbook")
+ assert_equal(@chart.title.text, "fishery", "the title option has been applied")
+ assert((@chart.series.is_a?(Axlsx::SimpleTypedList) && @chart.series.empty?), "The series is initialized and empty")
+ end
+
+ def test_title
+ @chart.title.text = 'wowzer'
+ assert_equal(@chart.title.text, "wowzer", "the title text via a string")
+ assert_equal(@chart.title.cell, nil, "the title cell is nil as we set the title with text.")
+ @chart.title.cell = @row.cells.first
+ assert_equal(@chart.title.text, "one", "the title text was set via cell reference")
+ assert_equal(@chart.title.cell, @row.cells.first)
+ end
+
+
+ def test_add_series
+ s = @chart.add_series :data=>[0,1,2,3], :labels => ["one", 1, "anything"], :title=>"bob"
+ assert_equal(@chart.series.last, s, "series has been added to chart series collection")
+ assert_equal(s.title, "bob", "series title has been applied")
+ assert_equal(s.data, [0,1,2,3], "data option applied")
+ assert_equal(s.labels, ["one",1,"anything"], "labels option applied")
+ end
+
+ def test_create_range
+
+ end
+
+ def test_pn
+ assert_equal(@chart.pn, "charts/chart1.xml")
+ end
+
+ def test_to_xml
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
+ doc = Nokogiri::XML(@chart.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ errors.push error
+ puts error.message
+ end
+ assert(errors.empty?, "error free validation")
+ end
+
+end
diff --git a/test/drawing/tc_drawing.rb b/test/drawing/tc_drawing.rb
new file mode 100644
index 00000000..474f5b51
--- /dev/null
+++ b/test/drawing/tc_drawing.rb
@@ -0,0 +1,71 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestDrawing < Test::Unit::TestCase
+ def setup
+ p = Axlsx::Package.new
+ @ws = p.workbook.add_worksheet
+
+ end
+
+ def test_initialization
+ assert(@ws.workbook.drawings.empty?)
+ assert_equal(@ws.drawing, @ws.workbook.drawings.last, "drawing is added to workbook")
+ assert(@ws.drawing.anchors.is_a?(Axlsx::SimpleTypedList) && @ws.drawing.anchors.empty?, "anchor list is created and empty")
+ end
+
+ def test_add_chart
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
+ assert(chart.is_a?(Axlsx::Pie3DChart), "must create a chart")
+ assert_equal(@ws.workbook.charts.last, chart, "must be added to workbook charts collection")
+ assert_equal(@ws.drawing.anchors.last.graphic_frame.chart, chart, "an anchor has been created and holds a reference to this chart")
+ anchor = @ws.drawing.anchors.last
+ assert_equal([anchor.from.row, anchor.from.col], [0,0], "options for start at are applied")
+ assert_equal([anchor.to.row, anchor.to.col], [1,1], "options for start at are applied")
+ assert_equal(chart.title.text, "bob", "option for title is applied")
+ end
+
+ def test_charts
+ assert(@ws.drawing.charts.empty?)
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
+ assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
+ assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
+ end
+
+ def test_pn
+ assert_equal(@ws.drawing.pn, "drawings/drawing1.xml")
+ end
+
+ def test_rels_pn
+ assert_equal(@ws.drawing.rels_pn, "drawings/_rels/drawing1.xml.rels")
+ end
+
+ def test_rId
+ assert_equal(@ws.drawing.rId, "rId1")
+ end
+
+ def test_index
+ assert_equal(@ws.drawing.index, @ws.workbook.drawings.index(@ws.drawing))
+ end
+
+ def test_relationships
+ assert(@ws.drawing.relationships.empty?)
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
+ assert_equal(@ws.drawing.relationships.size, 1, "adding a chart adds a relationship")
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
+ assert_equal(@ws.drawing.relationships.size, 2, "adding a chart adds a relationship")
+ end
+
+ def test_to_xml
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
+ doc = Nokogiri::XML(@ws.drawing.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ errors.push error
+ puts error.message
+ end
+ assert(errors.empty?, "error free validation")
+ end
+
+end
diff --git a/test/drawing/tc_graphic_frame.rb b/test/drawing/tc_graphic_frame.rb
new file mode 100644
index 00000000..30017d2b
--- /dev/null
+++ b/test/drawing/tc_graphic_frame.rb
@@ -0,0 +1,26 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestGraphicFrame < Test::Unit::TestCase
+ def setup
+ p = Axlsx::Package.new
+ @ws = p.workbook.add_worksheet
+ @chart = @ws.add_chart Axlsx::Chart
+ @frame = @chart.graphic_frame
+ end
+
+ def teardown
+ end
+
+ def test_initialization
+ assert(@frame.anchor.is_a?(Axlsx::TwoCellAnchor))
+ assert_equal(@frame.chart, @chart)
+ end
+
+ def test_rId
+ assert_equal(@frame.rId, "rId1")
+ chart = @ws.add_chart Axlsx::Chart
+ assert_equal(chart.graphic_frame.rId, "rId2")
+ end
+
+end
diff --git a/test/drawing/tc_marker.rb b/test/drawing/tc_marker.rb
new file mode 100644
index 00000000..8bd9983f
--- /dev/null
+++ b/test/drawing/tc_marker.rb
@@ -0,0 +1,45 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestMarker < Test::Unit::TestCase
+ def setup
+ @marker = Axlsx::Marker.new
+ end
+
+ def teardown
+ end
+
+ def test_initialization
+ assert(@marker.col == 0)
+ assert(@marker.colOff == 0)
+ assert(@marker.row == 0)
+ assert(@marker.rowOff == 0)
+ end
+
+ def test_col
+ assert_raise(ArgumentError) { @marker.col = -1}
+ assert_nothing_raised {@marker.col = 10}
+ end
+
+ def test_colOff
+ assert_raise(ArgumentError) { @marker.colOff = "1"}
+ assert_nothing_raised {@marker.colOff = -10}
+ end
+
+ def test_row
+ assert_raise(ArgumentError) { @marker.row = -1}
+ assert_nothing_raised {@marker.row = 10}
+ end
+
+ def test_rowOff
+ assert_raise(ArgumentError) { @marker.rowOff = "1"}
+ assert_nothing_raised {@marker.rowOff = -10}
+ end
+
+ def test_coord
+ @marker.coord 5, 10
+ assert_equal(@marker.col, 5)
+ assert_equal(@marker.row, 10)
+ end
+
+end
diff --git a/test/drawing/tc_pie_3D_chart.rb b/test/drawing/tc_pie_3D_chart.rb
new file mode 100644
index 00000000..e8a42962
--- /dev/null
+++ b/test/drawing/tc_pie_3D_chart.rb
@@ -0,0 +1,33 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestPie3DChart < Test::Unit::TestCase
+
+ def setup
+ p = Axlsx::Package.new
+ ws = p.workbook.add_worksheet
+ @row = ws.add_row ["one", 1, Time.now]
+ @chart = ws.drawing.add_chart Axlsx::Pie3DChart, :title => "fishery"
+ end
+
+ def teardown
+ end
+
+ def test_initialization
+ assert_equal(@chart.view3D.rotX, 30, "view 3d default rotX incorrect")
+ assert_equal(@chart.view3D.perspective, 30, "view 3d default perspective incorrect")
+ assert_equal(@chart.series_type, Axlsx::PieSeries, "series type incorrect")
+ end
+
+ def test_to_xml
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
+ doc = Nokogiri::XML(@chart.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ errors.push error
+ puts error.message
+ end
+ assert(errors.empty?, "error free validation")
+ end
+
+end
diff --git a/test/drawing/tc_pie_series.rb b/test/drawing/tc_pie_series.rb
new file mode 100644
index 00000000..e7c5e83b
--- /dev/null
+++ b/test/drawing/tc_pie_series.rb
@@ -0,0 +1,35 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestPieSeries < Test::Unit::TestCase
+
+ def setup
+ p = Axlsx::Package.new
+ @ws = p.workbook.add_worksheet :name=>"hmmm"
+ chart = @ws.drawing.add_chart Axlsx::Pie3DChart, :title => "fishery"
+ @series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob"
+ end
+
+ def test_initialize
+ assert_equal(@series.title, "bob", "series title has been applied")
+ assert_equal(@series.data, [0,1,2], "data option applied")
+ assert_equal(@series.labels, ["zero", "one","two"], "labels option applied")
+ assert_equal(@series.explosion, nil, "series shape has been applied")
+ end
+
+ def test_data
+ assert_equal(@series.data, [0,1,2])
+ end
+
+ def test_labels
+ assert_equal(@series.labels, ["zero", "one", "two"])
+
+ end
+
+ def test_explosion
+ assert_raise(ArgumentError, "require valid explosion") { @series.explosion = :lots }
+ assert_nothing_raised("allow valid explosion") { @series.explosion = 20 }
+ assert(@series.explosion == 20)
+ end
+
+end
diff --git a/test/drawing/tc_scaling.rb b/test/drawing/tc_scaling.rb
new file mode 100644
index 00000000..3bf39c53
--- /dev/null
+++ b/test/drawing/tc_scaling.rb
@@ -0,0 +1,37 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestScaling < Test::Unit::TestCase
+ def setup
+ @scaling = Axlsx::Scaling.new
+ end
+
+ def teardown
+ end
+
+ def test_initialization
+ assert(@scaling.orientation == :minMax)
+ end
+
+ def test_logBase
+ assert_raise(ArgumentError) { @scaling.logBase = 1}
+ assert_nothing_raised {@scaling.logBase = 10}
+ end
+
+ def test_orientation
+ assert_raise(ArgumentError) { @scaling.orientation = "1"}
+ assert_nothing_raised {@scaling.orientation = :maxMin}
+ end
+
+
+ def test_max
+ assert_raise(ArgumentError) { @scaling.max = 1}
+ assert_nothing_raised {@scaling.max = 10.5}
+ end
+
+ def test_min
+ assert_raise(ArgumentError) { @scaling.min = 1}
+ assert_nothing_raised {@scaling.min = 10.5}
+ end
+
+end
diff --git a/test/drawing/tc_series.rb b/test/drawing/tc_series.rb
new file mode 100644
index 00000000..b94ec308
--- /dev/null
+++ b/test/drawing/tc_series.rb
@@ -0,0 +1,24 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestSeries < Test::Unit::TestCase
+
+ def setup
+ p = Axlsx::Package.new
+ @ws = p.workbook.add_worksheet :name=>"hmmm"
+ chart = @ws.drawing.add_chart Axlsx::Chart, :title => "fishery"
+ @series = chart.add_series :title=>"bob"
+ end
+
+ def test_initialize
+ assert_equal(@series.title, "bob", "series title has been applied")
+ assert_equal(@series.order, @series.index, "order is index by default")
+ assert_equal(@series.index, @series.chart.series.index(@series), "index is applied")
+ end
+
+ def test_order
+ @series.order = 2
+ assert_equal(@series.order, 2)
+ end
+
+end
diff --git a/test/drawing/tc_title.rb b/test/drawing/tc_title.rb
new file mode 100644
index 00000000..7fb6044b
--- /dev/null
+++ b/test/drawing/tc_title.rb
@@ -0,0 +1,34 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestTitle < Test::Unit::TestCase
+ def setup
+ @p = Axlsx::Package.new
+ ws = @p.workbook.add_worksheet
+ @row = ws.add_row ["one", 1, Time.now]
+ @title = Axlsx::Title.new
+ @chart = ws.add_chart Axlsx::Bar3DChart
+ end
+
+ def teardown
+ end
+
+ def test_initialization
+ assert(@title.text == "")
+ assert(@title.cell == nil)
+ end
+
+ def test_text
+ assert_raise(ArgumentError, "text must be a string") { @title.text = 123 }
+ @title.cell = @row.cells.first
+ @title.text = "bob"
+ assert(@title.cell == nil, "setting title with text clears the cell")
+ end
+
+ def test_cell
+ assert_raise(ArgumentError, "cell must be a Cell") { @title.cell = "123" }
+ @title.cell = @row.cells.first
+ assert(@title.text == "one")
+ end
+
+end
diff --git a/test/drawing/tc_two_cell_anchor.rb b/test/drawing/tc_two_cell_anchor.rb
new file mode 100644
index 00000000..1c6e6882
--- /dev/null
+++ b/test/drawing/tc_two_cell_anchor.rb
@@ -0,0 +1,37 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestTwoCellAnchor < Test::Unit::TestCase
+ def setup
+ @p = Axlsx::Package.new
+ ws = @p.workbook.add_worksheet
+ @row = ws.add_row ["one", 1, Time.now]
+ @title = Axlsx::Title.new
+ @chart = ws.add_chart Axlsx::Bar3DChart
+ @anchor = @chart.graphic_frame.anchor
+ end
+
+ def teardown
+ end
+
+ def test_initialization
+ assert(@anchor.from.col == 0)
+ assert(@anchor.from.row == 0)
+ assert(@anchor.to.col == 5)
+ assert(@anchor.to.row == 10)
+ end
+
+ def test_start_at
+ @anchor.start_at 5, 10
+ assert(@anchor.from.col == 5)
+ assert(@anchor.from.row == 10)
+ end
+
+ def test_end_at
+ @anchor.end_at 10, 15
+ assert(@anchor.to.col == 10)
+ assert(@anchor.to.row == 15)
+ end
+
+
+end
diff --git a/test/drawing/tc_val_axis.rb b/test/drawing/tc_val_axis.rb
new file mode 100644
index 00000000..2dcdd416
--- /dev/null
+++ b/test/drawing/tc_val_axis.rb
@@ -0,0 +1,20 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestValAxis < Test::Unit::TestCase
+ def setup
+ @axis = Axlsx::ValAxis.new 12345, 54321
+ end
+ def teardown
+ end
+
+ def test_initialization
+ assert_equal(@axis.crossBetween, :between, "axis crossBetween default incorrect")
+ end
+
+ def test_crossBetween
+ assert_raise(ArgumentError, "requires valid crossBetween") { @axis.crossBetween = :my_eyes }
+ assert_nothing_raised("accepts valid crossBetween") { @axis.crossBetween = :midCat }
+ end
+
+end
diff --git a/test/drawing/tc_view_3D.rb b/test/drawing/tc_view_3D.rb
new file mode 100644
index 00000000..909550b5
--- /dev/null
+++ b/test/drawing/tc_view_3D.rb
@@ -0,0 +1,46 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestView3D < Test::Unit::TestCase
+ def setup
+ @view = Axlsx::View3D.new
+ end
+
+ def teardown
+ end
+
+
+ def test_rotX
+ assert_raise(ArgumentError) {@view.rotX = "bob"}
+ assert_nothing_raised {@view.rotX = -90}
+ end
+
+ def test_rotY
+ assert_raise(ArgumentError) {@view.rotY = "bob"}
+ assert_nothing_raised {@view.rotY = 90}
+ end
+
+ def test_hPercent
+ assert_raise(ArgumentError) {@view.hPercent = "bob"}
+ assert_nothing_raised {@view.hPercent = "500%"}
+ end
+
+ def test_depthPercent
+ assert_raise(ArgumentError) {@view.depthPercent = "bob"}
+ assert_nothing_raised {@view.depthPercent = "20%"}
+ end
+
+
+ def test_rAngAx
+ assert_raise(ArgumentError) {@view.rAngAx = "bob"}
+ assert_nothing_raised {@view.rAngAx = true}
+ end
+
+ def test_perspective
+ assert_raise(ArgumentError) {@view.perspective = "bob"}
+ assert_nothing_raised {@view.perspective = 30}
+ end
+
+
+
+end
diff --git a/test/rels/tc_relationship.rb b/test/rels/tc_relationship.rb
new file mode 100644
index 00000000..ff3369df
--- /dev/null
+++ b/test/rels/tc_relationship.rb
@@ -0,0 +1,16 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestRelationships < Test::Unit::TestCase
+ def setup
+ end
+
+ def teardown
+ end
+
+ def test_type
+ assert_raise(ArgumentError) { Axlsx::Relationship.new 'type', 'target' }
+ assert_nothing_raised { Axlsx::Relationship.new Axlsx::WORKSHEET_R, 'target' }
+ end
+
+end
diff --git a/test/rels/tc_relationships.rb b/test/rels/tc_relationships.rb
new file mode 100644
index 00000000..696257d4
--- /dev/null
+++ b/test/rels/tc_relationships.rb
@@ -0,0 +1,32 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestRelationships < Test::Unit::TestCase
+ def setup
+ @rels = Axlsx::Relationships.new
+ end
+
+ def teardown
+ end
+
+ def test_valid_document
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::RELS_XSD))
+ doc = Nokogiri::XML(@rels.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ puts error.message
+ errors << error
+ end
+
+ @rels << Axlsx::Relationship.new(Axlsx::WORKSHEET_R, "bar")
+ doc = Nokogiri::XML(@rels.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ puts error.message
+ errors << error
+ end
+
+ assert(errors.size == 0)
+ end
+
+end
diff --git a/test/stylesheet/tc_border.rb b/test/stylesheet/tc_border.rb
new file mode 100644
index 00000000..ba268e07
--- /dev/null
+++ b/test/stylesheet/tc_border.rb
@@ -0,0 +1,38 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestBorder < Test::Unit::TestCase
+ def setup
+ @b = Axlsx::Border.new
+ end
+ def teardown
+ end
+ def test_initialiation
+ assert_equal(@b.diagonalUp, nil)
+ assert_equal(@b.diagonalDown, nil)
+ assert_equal(@b.outline, nil)
+ assert(@b.prs.is_a?(Axlsx::SimpleTypedList))
+ end
+
+ def test_diagonalUp
+ assert_raise(ArgumentError) { @b.diagonalUp = :red }
+ assert_nothing_raised { @b.diagonalUp = true }
+ assert_equal(@b.diagonalUp, true )
+ end
+
+ def test_diagonalDown
+ assert_raise(ArgumentError) { @b.diagonalDown = :red }
+ assert_nothing_raised { @b.diagonalDown = true }
+ assert_equal(@b.diagonalDown, true )
+ end
+
+ def test_outline
+ assert_raise(ArgumentError) { @b.outline = :red }
+ assert_nothing_raised { @b.outline = true }
+ assert_equal(@b.outline, true )
+ end
+
+ def test_prs
+ assert_nothing_raised { @b.prs << Axlsx::BorderPr.new(:name=>:top, :style=>:thin, :color => Axlsx::Color.new(:rgb=>"FF0000FF")) }
+ end
+end
diff --git a/test/stylesheet/tc_border_pr.rb b/test/stylesheet/tc_border_pr.rb
new file mode 100644
index 00000000..18388186
--- /dev/null
+++ b/test/stylesheet/tc_border_pr.rb
@@ -0,0 +1,33 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestBorderPr < Test::Unit::TestCase
+ def setup
+ @bpr = Axlsx::BorderPr.new
+ end
+ def teardown
+ end
+ def test_initialiation
+ assert_equal(@bpr.color, nil)
+ assert_equal(@bpr.style, nil)
+ assert_equal(@bpr.name, nil)
+ end
+
+ def test_color
+ assert_raise(ArgumentError) { @bpr.color = :red }
+ assert_nothing_raised { @bpr.color = Axlsx::Color.new :rgb=>"FF000000" }
+ assert(@bpr.color.is_a?(Axlsx::Color))
+ end
+
+ def test_style
+ assert_raise(ArgumentError) { @bpr.style = :red }
+ assert_nothing_raised { @bpr.style = :thin }
+ assert_equal(@bpr.style, :thin)
+ end
+
+ def test_name
+ assert_raise(ArgumentError) { @bpr.name = :red }
+ assert_nothing_raised { @bpr.name = :top }
+ assert_equal(@bpr.name, :top)
+ end
+end
diff --git a/test/stylesheet/tc_cell_alignment.rb b/test/stylesheet/tc_cell_alignment.rb
new file mode 100644
index 00000000..a0cb4817
--- /dev/null
+++ b/test/stylesheet/tc_cell_alignment.rb
@@ -0,0 +1,77 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestCellAlignment < Test::Unit::TestCase
+ def setup
+ @item = Axlsx::CellAlignment.new
+ end
+ def teardown
+ end
+ def test_initialiation
+ assert_equal(@item.horizontal, nil)
+ assert_equal(@item.vertical, nil)
+ assert_equal(@item.textRotation, nil)
+ assert_equal(@item.wrapText, nil)
+ assert_equal(@item.indent, nil)
+ assert_equal(@item.relativeIndent, nil)
+ assert_equal(@item.justifyLastLine, nil)
+ assert_equal(@item.shrinkToFit, nil)
+ assert_equal(@item.readingOrder, nil)
+
+ end
+
+ def test_horizontal
+ assert_raise(ArgumentError) { @item.horizontal = :red }
+ assert_nothing_raised { @item.horizontal = :left }
+ assert_equal(@item.horizontal, :left )
+ end
+
+ def test_vertical
+ assert_raise(ArgumentError) { @item.vertical = :red }
+ assert_nothing_raised { @item.vertical = :top }
+ assert_equal(@item.vertical, :top )
+ end
+
+ def test_textRotation
+ assert_raise(ArgumentError) { @item.textRotation = -1 }
+ assert_nothing_raised { @item.textRotation = 5 }
+ assert_equal(@item.textRotation, 5 )
+ end
+
+ def test_wrapText
+ assert_raise(ArgumentError) { @item.wrapText = -1 }
+ assert_nothing_raised { @item.wrapText = false }
+ assert_equal(@item.wrapText, false )
+ end
+
+ def test_indent
+ assert_raise(ArgumentError) { @item.indent = -1 }
+ assert_nothing_raised { @item.indent = 5 }
+ assert_equal(@item.indent, 5 )
+ end
+
+ def test_relativeIndent
+ assert_raise(ArgumentError) { @item.relativeIndent = :symbol }
+ assert_nothing_raised { @item.relativeIndent = 5 }
+ assert_equal(@item.relativeIndent, 5 )
+ end
+
+ def test_justifyLastLine
+ assert_raise(ArgumentError) { @item.justifyLastLine = -1 }
+ assert_nothing_raised { @item.justifyLastLine = true }
+ assert_equal(@item.justifyLastLine, true )
+ end
+
+ def test_shrinkToFit
+ assert_raise(ArgumentError) { @item.shrinkToFit = -1 }
+ assert_nothing_raised { @item.shrinkToFit = true }
+ assert_equal(@item.shrinkToFit, true )
+ end
+
+ def test_readingOrder
+ assert_raise(ArgumentError) { @item.readingOrder = -1 }
+ assert_nothing_raised { @item.readingOrder = 2 }
+ assert_equal(@item.readingOrder, 2 )
+ end
+
+end
diff --git a/test/stylesheet/tc_cell_protection.rb b/test/stylesheet/tc_cell_protection.rb
new file mode 100644
index 00000000..665ec761
--- /dev/null
+++ b/test/stylesheet/tc_cell_protection.rb
@@ -0,0 +1,30 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestCellProtection < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::CellProtection.new
+ end
+
+ def teardown
+ end
+
+ def test_initialiation
+ assert_equal(@item.hidden, nil)
+ assert_equal(@item.locked, nil)
+ end
+
+ def test_hidden
+ assert_raise(ArgumentError) { @item.hidden = -1 }
+ assert_nothing_raised { @item.hidden = false }
+ assert_equal(@item.hidden, false )
+ end
+
+ def test_locked
+ assert_raise(ArgumentError) { @item.locked = -1 }
+ assert_nothing_raised { @item.locked = false }
+ assert_equal(@item.locked, false )
+ end
+
+end
diff --git a/test/stylesheet/tc_cell_style.rb b/test/stylesheet/tc_cell_style.rb
new file mode 100644
index 00000000..878c7aab
--- /dev/null
+++ b/test/stylesheet/tc_cell_style.rb
@@ -0,0 +1,58 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestCellStyle < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::CellStyle.new
+ end
+
+ def teardown
+ end
+
+ def test_initialiation
+ assert_equal(@item.name, nil)
+ assert_equal(@item.xfId, nil)
+ assert_equal(@item.builtinId, nil)
+ assert_equal(@item.iLevel, nil)
+ assert_equal(@item.hidden, nil)
+ assert_equal(@item.customBuiltin, nil)
+ end
+
+ def test_name
+ assert_raise(ArgumentError) { @item.name = -1 }
+ assert_nothing_raised { @item.name = "stylin" }
+ assert_equal(@item.name, "stylin" )
+ end
+
+ def test_xfId
+ assert_raise(ArgumentError) { @item.xfId = -1 }
+ assert_nothing_raised { @item.xfId = 5 }
+ assert_equal(@item.xfId, 5 )
+ end
+
+ def test_builtinId
+ assert_raise(ArgumentError) { @item.builtinId = -1 }
+ assert_nothing_raised { @item.builtinId = 5 }
+ assert_equal(@item.builtinId, 5 )
+ end
+
+ def test_iLevel
+ assert_raise(ArgumentError) { @item.iLevel = -1 }
+ assert_nothing_raised { @item.iLevel = 5 }
+ assert_equal(@item.iLevel, 5 )
+ end
+
+ def test_hidden
+ assert_raise(ArgumentError) { @item.hidden = -1 }
+ assert_nothing_raised { @item.hidden = true }
+ assert_equal(@item.hidden, true )
+ end
+
+ def test_customBuiltin
+ assert_raise(ArgumentError) { @item.customBuiltin = -1 }
+ assert_nothing_raised { @item.customBuiltin = true }
+ assert_equal(@item.customBuiltin, true )
+ end
+
+end
diff --git a/test/stylesheet/tc_color.rb b/test/stylesheet/tc_color.rb
new file mode 100644
index 00000000..55f69448
--- /dev/null
+++ b/test/stylesheet/tc_color.rb
@@ -0,0 +1,38 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestColor < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::Color.new
+ end
+
+ def teardown
+ end
+
+ def test_initialiation
+ assert_equal(@item.auto, nil)
+ assert_equal(@item.rgb, "FF000000")
+ assert_equal(@item.tint, nil)
+ end
+
+ def test_auto
+ assert_raise(ArgumentError) { @item.auto = -1 }
+ assert_nothing_raised { @item.auto = true }
+ assert_equal(@item.auto, true )
+ end
+
+ def test_rgb
+ assert_raise(ArgumentError) { @item.rgb = -1 }
+ assert_nothing_raised { @item.rgb = "FF00FF00" }
+ assert_equal(@item.rgb, "FF00FF00" )
+ end
+
+ def test_tint
+ assert_raise(ArgumentError) { @item.tint = -1 }
+ assert_nothing_raised { @item.tint = -1.0 }
+ assert_equal(@item.tint, -1.0 )
+ end
+
+
+end
diff --git a/test/stylesheet/tc_fill.rb b/test/stylesheet/tc_fill.rb
new file mode 100644
index 00000000..090a395b
--- /dev/null
+++ b/test/stylesheet/tc_fill.rb
@@ -0,0 +1,19 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestFill < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::Fill.new Axlsx::PatternFill.new
+ end
+
+ def teardown
+ end
+
+ def test_initialiation
+ assert(@item.fill_type.is_a?(Axlsx::PatternFill))
+ assert_raise(ArgumentError) { Axlsx::Fill.new }
+ assert_nothing_raised { Axlsx::Fill.new(Axlsx::GradientFill.new) }
+ end
+
+end
diff --git a/test/stylesheet/tc_font.rb b/test/stylesheet/tc_font.rb
new file mode 100644
index 00000000..f4b18776
--- /dev/null
+++ b/test/stylesheet/tc_font.rb
@@ -0,0 +1,114 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestFont < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::Font.new
+ end
+
+ def teardown
+ end
+
+
+ def test_initialiation
+ assert_equal(@item.name, nil)
+ assert_equal(@item.charset, nil)
+ assert_equal(@item.family, nil)
+ assert_equal(@item.b, nil)
+ assert_equal(@item.i, nil)
+ assert_equal(@item.strike, nil)
+ assert_equal(@item.outline, nil)
+ assert_equal(@item.shadow, nil)
+ assert_equal(@item.condense, nil)
+ assert_equal(@item.extend, nil)
+ assert_equal(@item.color, nil)
+ assert_equal(@item.sz, nil)
+ end
+
+
+
+ # def name=(v) Axlsx::validate_string v; @name = v end
+ def test_name
+ assert_raise(ArgumentError) { @item.name = 7 }
+ assert_nothing_raised { @item.name = "bob" }
+ assert_equal(@item.name, "bob")
+ end
+ # def charset=(v) Axlsx::validate_unsigned_int v; @charset = v end
+ def test_charset
+ assert_raise(ArgumentError) { @item.charset = -7 }
+ assert_nothing_raised { @item.charset = 5 }
+ assert_equal(@item.charset, 5)
+ end
+
+ # def family=(v) Axlsx::validate_unsigned_int v; @family = v end
+ def test_family
+ assert_raise(ArgumentError) { @item.family = -7 }
+ assert_nothing_raised { @item.family = 5 }
+ assert_equal(@item.family, 5)
+ end
+
+ # def b=(v) Axlsx::validate_boolean v; @b = v end
+ def test_b
+ assert_raise(ArgumentError) { @item.b = -7 }
+ assert_nothing_raised { @item.b = true }
+ assert_equal(@item.b, true)
+ end
+
+ # def i=(v) Axlsx::validate_boolean v; @i = v end
+ def test_i
+ assert_raise(ArgumentError) { @item.i = -7 }
+ assert_nothing_raised { @item.i = true }
+ assert_equal(@item.i, true)
+ end
+
+ # def strike=(v) Axlsx::validate_boolean v; @strike = v end
+ def test_strike
+ assert_raise(ArgumentError) { @item.strike = -7 }
+ assert_nothing_raised { @item.strike = true }
+ assert_equal(@item.strike, true)
+ end
+
+ # def outline=(v) Axlsx::validate_boolean v; @outline = v end
+ def test_outline
+ assert_raise(ArgumentError) { @item.outline = -7 }
+ assert_nothing_raised { @item.outline = true }
+ assert_equal(@item.outline, true)
+ end
+
+ # def shadow=(v) Axlsx::validate_boolean v; @shadow = v end
+ def test_shadow
+ assert_raise(ArgumentError) { @item.shadow = -7 }
+ assert_nothing_raised { @item.shadow = true }
+ assert_equal(@item.shadow, true)
+ end
+
+ # def condense=(v) Axlsx::validate_boolean v; @condense = v end
+ def test_condense
+ assert_raise(ArgumentError) { @item.condense = -7 }
+ assert_nothing_raised { @item.condense = true }
+ assert_equal(@item.condense, true)
+ end
+
+ # def extend=(v) Axlsx::validate_boolean v; @extend = v end
+ def test_extend
+ assert_raise(ArgumentError) { @item.extend = -7 }
+ assert_nothing_raised { @item.extend = true }
+ assert_equal(@item.extend, true)
+ end
+
+ # def color=(v) DataTypeValidator.validate "Font.color", Color, v; @color=v end
+ def test_color
+ assert_raise(ArgumentError) { @item.color = -7 }
+ assert_nothing_raised { @item.color = Axlsx::Color.new(:rgb=>"00000000") }
+ assert(@item.color.is_a?(Axlsx::Color))
+ end
+
+ # def sz=(v) Axlsx::validate_unsigned_int v; @sz=v end
+ def test_sz
+ assert_raise(ArgumentError) { @item.sz = -7 }
+ assert_nothing_raised { @item.sz = 5 }
+ assert_equal(@item.sz, 5)
+ end
+
+end
diff --git a/test/stylesheet/tc_gradient_fill.rb b/test/stylesheet/tc_gradient_fill.rb
new file mode 100644
index 00000000..f5c87771
--- /dev/null
+++ b/test/stylesheet/tc_gradient_fill.rb
@@ -0,0 +1,65 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestGradientFill < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::GradientFill.new
+ end
+
+ def teardown
+ end
+
+
+ def test_initialiation
+ assert_equal(@item.type, :linear)
+ assert_equal(@item.degree, nil)
+ assert_equal(@item.left, nil)
+ assert_equal(@item.right, nil)
+ assert_equal(@item.top, nil)
+ assert_equal(@item.bottom, nil)
+ assert(@item.stop.is_a?(Axlsx::SimpleTypedList))
+ end
+
+ def test_type
+ assert_raise(ArgumentError) { @item.type = 7 }
+ assert_nothing_raised { @item.type = :path }
+ assert_equal(@item.type, :path)
+ end
+
+ def test_degree
+ assert_raise(ArgumentError) { @item.degree = -7 }
+ assert_nothing_raised { @item.degree = 5.0 }
+ assert_equal(@item.degree, 5.0)
+ end
+
+ def test_left
+ assert_raise(ArgumentError) { @item.left = -1.1 }
+ assert_nothing_raised { @item.left = 1.0 }
+ assert_equal(@item.left, 1.0)
+ end
+
+ def test_right
+ assert_raise(ArgumentError) { @item.right = -1.1 }
+ assert_nothing_raised { @item.right = 0.5 }
+ assert_equal(@item.right, 0.5)
+ end
+
+ def test_top
+ assert_raise(ArgumentError) { @item.top = -1.1 }
+ assert_nothing_raised { @item.top = 1.0 }
+ assert_equal(@item.top, 1.0)
+ end
+
+ def test_bottom
+ assert_raise(ArgumentError) { @item.bottom = -1.1 }
+ assert_nothing_raised { @item.bottom = 0.0 }
+ assert_equal(@item.bottom, 0.0)
+ end
+
+ def test_stop
+ @item.stop << Axlsx::GradientStop.new(Axlsx::Color.new(:rgb=>"00000000"), 0.5)
+ assert(@item.stop.size == 1)
+ assert(@item.stop.last.is_a?(Axlsx::GradientStop))
+ end
+end
diff --git a/test/stylesheet/tc_gradient_stop.rb b/test/stylesheet/tc_gradient_stop.rb
new file mode 100644
index 00000000..d7735231
--- /dev/null
+++ b/test/stylesheet/tc_gradient_stop.rb
@@ -0,0 +1,32 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestGradientStop < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::GradientStop.new(Axlsx::Color.new(:rgb=>"FFFF0000"), 1.0)
+ end
+
+ def teardown
+ end
+
+
+ def test_initialiation
+ assert_equal(@item.color.rgb, "FFFF0000")
+ assert_equal(@item.position, 1.0)
+ end
+
+ def test_position
+ assert_raise(ArgumentError) { @item.position = -1.1 }
+ assert_nothing_raised { @item.position = 0.0 }
+ assert_equal(@item.position, 0.0)
+ end
+
+ def test_color
+ assert_raise(ArgumentError) { @item.color = nil }
+ color = Axlsx::Color.new(:rgb=>"FF0000FF")
+ @item.color = color
+ assert_equal(@item.color.rgb, "FF0000FF")
+ end
+
+end
diff --git a/test/stylesheet/tc_num_fmt.rb b/test/stylesheet/tc_num_fmt.rb
new file mode 100644
index 00000000..281773ce
--- /dev/null
+++ b/test/stylesheet/tc_num_fmt.rb
@@ -0,0 +1,31 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestNumFmt < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::NumFmt.new
+ end
+
+ def teardown
+ end
+
+
+ def test_initialiation
+ assert_equal(@item.numFmtId, 0)
+ assert_equal(@item.formatCode, "")
+ end
+
+ def test_numFmtId
+ assert_raise(ArgumentError) { @item.numFmtId = -1.1 }
+ assert_nothing_raised { @item.numFmtId = 2 }
+ assert_equal(@item.numFmtId, 2)
+ end
+
+ def test_fomatCode
+ assert_raise(ArgumentError) { @item.formatCode = -1.1 }
+ assert_nothing_raised { @item.formatCode = "0" }
+ assert_equal(@item.formatCode, "0")
+ end
+
+end
diff --git a/test/stylesheet/tc_pattern_fill.rb b/test/stylesheet/tc_pattern_fill.rb
new file mode 100644
index 00000000..a9b6a113
--- /dev/null
+++ b/test/stylesheet/tc_pattern_fill.rb
@@ -0,0 +1,38 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestPatternFill < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::PatternFill.new
+ end
+
+ def teardown
+ end
+
+
+ def test_initialiation
+ assert_equal(@item.patternType, :none)
+ assert_equal(@item.bgColor, nil)
+ assert_equal(@item.fgColor, nil)
+ end
+
+ def test_bgColor
+ assert_raise(ArgumentError) { @item.bgColor = -1.1 }
+ assert_nothing_raised { @item.bgColor = Axlsx::Color.new }
+ assert_equal(@item.bgColor.rgb, "FF000000")
+ end
+
+ def test_fgColor
+ assert_raise(ArgumentError) { @item.fgColor = -1.1 }
+ assert_nothing_raised { @item.fgColor = Axlsx::Color.new }
+ assert_equal(@item.fgColor.rgb, "FF000000")
+ end
+
+ def test_pattern_type
+ assert_raise(ArgumentError) { @item.patternType = -1.1 }
+ assert_nothing_raised { @item.patternType = :lightUp }
+ assert_equal(@item.patternType, :lightUp)
+ end
+
+end
diff --git a/test/stylesheet/tc_styles.rb b/test/stylesheet/tc_styles.rb
new file mode 100644
index 00000000..0c9b3fba
--- /dev/null
+++ b/test/stylesheet/tc_styles.rb
@@ -0,0 +1,64 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestStyles < Test::Unit::TestCase
+ def setup
+ @styles = Axlsx::Styles.new
+ end
+ def teardown
+ end
+
+ def test_valid_document
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
+ doc = Nokogiri::XML(@styles.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ errors.push error
+ puts error.message
+ end
+ assert(errors.size == 0)
+ end
+
+
+ def test_add_style
+ fill_count = @styles.fills.size
+ font_count = @styles.fonts.size
+ xf_count = @styles.cellXfs.size
+
+ @styles.add_style :bg_color=>"FF000000", :fg_color=>"FFFFFFFF", :sz=>13, :num_fmt=>Axlsx::NUM_FMT_PERCENT, :alignment=>{:horizontal=>:left}, :border=>Axlsx::STYLE_THIN_BORDER, :hidden=>true, :locked=>true
+ assert_equal(@styles.fills.size, fill_count+1)
+ assert_equal(@styles.fonts.size, font_count+1)
+ assert_equal(@styles.cellXfs.size, xf_count+1)
+ xf = @styles.cellXfs.last
+ assert_equal(xf.fillId, (@styles.fills.size-1), "points to the last created fill")
+ assert_equal(@styles.fills.last.fill_type.fgColor.rgb, "FF000000", "fill created with color")
+
+ assert_equal(xf.fontId, (@styles.fonts.size-1), "points to the last created font")
+ assert_equal(@styles.fonts.last.sz, 13, "font sz applied")
+ assert_equal(@styles.fonts.last.color.rgb, "FFFFFFFF", "font color applied")
+
+ assert_equal(xf.borderId, Axlsx::STYLE_THIN_BORDER, "border id is set")
+ assert_equal(xf.numFmtId, Axlsx::NUM_FMT_PERCENT, "number format id is set")
+
+ assert(xf.alignment.is_a?(Axlsx::CellAlignment), "alignment was created")
+ assert_equal(xf.alignment.horizontal, :left, "horizontal alignment applied")
+ assert_equal(xf.applyProtection, 1, "protection applied")
+ assert_equal(xf.protection.hidden, true, "hidden protection set")
+ assert_equal(xf.protection.locked, true, "cell locking set")
+ assert_raise(ArgumentError, "should reject invalid borderId") { @styles.add_style :border => 2 }
+
+ end
+
+
+ #:numFmts, :fonts, :fills, :borders, :cellStyleXfs, :cellXfs, :dxfs, :tableStyles
+ def test_ensure_locking
+ assert_equal(@styles.numFmts.locked_at, 2, "numFmts should be locked at 2")
+ assert_equal(@styles.fonts.locked_at, 1, "fonts should be locked at 1" )
+ assert_equal(@styles.fills.locked_at, 2, "fills should be locked at 2" )
+ assert_equal(@styles.borders.locked_at, 2, "borders should be locked at two" )
+ assert_equal(@styles.cellStyleXfs.locked_at, 1, "cellStyleXfs should be locked at two" )
+ assert_equal(@styles.cellXfs.locked_at, 2, "cellXfs should be locked at 2" )
+ assert_equal(@styles.dxfs.locked_at, 0, "dxfs should be locked at 0" )
+ assert_equal(@styles.tableStyles.locked_at, 0, "tableStyles should be locked at 0" )
+ end
+end
diff --git a/test/stylesheet/tc_table_style.rb b/test/stylesheet/tc_table_style.rb
new file mode 100644
index 00000000..54bebb5b
--- /dev/null
+++ b/test/stylesheet/tc_table_style.rb
@@ -0,0 +1,37 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestTableStyle < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::TableStyle.new "fisher"
+ end
+
+ def teardown
+ end
+
+ def test_initialiation
+ assert_equal(@item.name, "fisher")
+ assert_equal(@item.pivot, nil)
+ assert_equal(@item.table, nil)
+ end
+
+ def test_name
+ assert_raise(ArgumentError) { @item.name = -1.1 }
+ assert_nothing_raised { @item.name = "lovely table style" }
+ assert_equal(@item.name, "lovely table style")
+ end
+
+ def test_pivot
+ assert_raise(ArgumentError) { @item.pivot = -1.1 }
+ assert_nothing_raised { @item.pivot = true }
+ assert_equal(@item.pivot, true)
+ end
+
+ def test_table
+ assert_raise(ArgumentError) { @item.table = -1.1 }
+ assert_nothing_raised { @item.table = true }
+ assert_equal(@item.table, true)
+ end
+
+end
diff --git a/test/stylesheet/tc_table_style_element.rb b/test/stylesheet/tc_table_style_element.rb
new file mode 100644
index 00000000..9cfa5204
--- /dev/null
+++ b/test/stylesheet/tc_table_style_element.rb
@@ -0,0 +1,37 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestTableStyleElement < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::TableStyleElement.new
+ end
+
+ def teardown
+ end
+
+ def test_initialiation
+ assert_equal(@item.type, nil)
+ assert_equal(@item.size, nil)
+ assert_equal(@item.dxfId, nil)
+ end
+
+ def test_type
+ assert_raise(ArgumentError) { @item.type = -1.1 }
+ assert_nothing_raised { @item.type = :blankRow }
+ assert_equal(@item.type, :blankRow)
+ end
+
+ def test_size
+ assert_raise(ArgumentError) { @item.size = -1.1 }
+ assert_nothing_raised { @item.size = 2 }
+ assert_equal(@item.size, 2)
+ end
+
+ def test_dxfId
+ assert_raise(ArgumentError) { @item.dxfId = -1.1 }
+ assert_nothing_raised { @item.dxfId = 7 }
+ assert_equal(@item.dxfId, 7)
+ end
+
+end
diff --git a/test/stylesheet/tc_table_styles.rb b/test/stylesheet/tc_table_styles.rb
new file mode 100644
index 00000000..825a18d8
--- /dev/null
+++ b/test/stylesheet/tc_table_styles.rb
@@ -0,0 +1,30 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestTableStyles < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::TableStyles.new
+ end
+
+ def teardown
+ end
+
+ def test_initialiation
+ assert_equal(@item.defaultTableStyle, "TableStyleMedium9")
+ assert_equal(@item.defaultPivotStyle, "PivotStyleLight16")
+ end
+
+ def test_defaultTableStyle
+ assert_raise(ArgumentError) { @item.defaultTableStyle = -1.1 }
+ assert_nothing_raised { @item.defaultTableStyle = "anyones guess" }
+ assert_equal(@item.defaultTableStyle, "anyones guess")
+ end
+
+ def test_defaultPivotStyle
+ assert_raise(ArgumentError) { @item.defaultPivotStyle = -1.1 }
+ assert_nothing_raised { @item.defaultPivotStyle = "anyones guess" }
+ assert_equal(@item.defaultPivotStyle, "anyones guess")
+ end
+
+end
diff --git a/test/stylesheet/tc_xf.rb b/test/stylesheet/tc_xf.rb
new file mode 100644
index 00000000..9ca53562
--- /dev/null
+++ b/test/stylesheet/tc_xf.rb
@@ -0,0 +1,121 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestXf < Test::Unit::TestCase
+
+ def setup
+ @item = Axlsx::Xf.new
+ end
+
+ def teardown
+ end
+
+ def test_initialiation
+ assert_equal(@item.alignment, nil)
+ assert_equal(@item.protection, nil)
+ assert_equal(@item.numFmtId, nil)
+ assert_equal(@item.fontId, nil)
+ assert_equal(@item.fillId, nil)
+ assert_equal(@item.borderId, nil)
+ assert_equal(@item.xfId, nil)
+ assert_equal(@item.quotePrefix, nil)
+ assert_equal(@item.pivotButton, nil)
+ assert_equal(@item.applyNumberFormat, nil)
+ assert_equal(@item.applyFont, nil)
+ assert_equal(@item.applyFill, nil)
+ assert_equal(@item.applyBorder, nil)
+ assert_equal(@item.applyAlignment, nil)
+ assert_equal(@item.applyProtection, nil)
+ end
+
+ def test_alignment
+ assert_raise(ArgumentError) { @item.alignment = -1.1 }
+ assert_nothing_raised { @item.alignment = Axlsx::CellAlignment.new }
+ assert(@item.alignment.is_a?(Axlsx::CellAlignment))
+ end
+
+ def test_protection
+ assert_raise(ArgumentError) { @item.protection = -1.1 }
+ assert_nothing_raised { @item.protection = Axlsx::CellProtection.new }
+ assert(@item.protection.is_a?(Axlsx::CellProtection))
+ end
+
+ def test_numFmtId
+ assert_raise(ArgumentError) { @item.numFmtId = -1.1 }
+ assert_nothing_raised { @item.numFmtId = 0 }
+ assert_equal(@item.numFmtId, 0)
+ end
+
+ def test_fillId
+ assert_raise(ArgumentError) { @item.fillId = -1.1 }
+ assert_nothing_raised { @item.fillId = 0 }
+ assert_equal(@item.fillId, 0)
+ end
+
+ def test_fontId
+ assert_raise(ArgumentError) { @item.fontId = -1.1 }
+ assert_nothing_raised { @item.fontId = 0 }
+ assert_equal(@item.fontId, 0)
+ end
+
+ def test_borderId
+ assert_raise(ArgumentError) { @item.borderId = -1.1 }
+ assert_nothing_raised { @item.borderId = 0 }
+ assert_equal(@item.borderId, 0)
+ end
+
+ def test_xfId
+ assert_raise(ArgumentError) { @item.xfId = -1.1 }
+ assert_nothing_raised { @item.xfId = 0 }
+ assert_equal(@item.xfId, 0)
+ end
+
+ def test_quotePrefix
+ assert_raise(ArgumentError) { @item.quotePrefix = -1.1 }
+ assert_nothing_raised { @item.quotePrefix = false }
+ assert_equal(@item.quotePrefix, false)
+ end
+
+ def test_pivotButton
+ assert_raise(ArgumentError) { @item.pivotButton = -1.1 }
+ assert_nothing_raised { @item.pivotButton = false }
+ assert_equal(@item.pivotButton, false)
+ end
+
+ def test_applyNumberFormat
+ assert_raise(ArgumentError) { @item.applyNumberFormat = -1.1 }
+ assert_nothing_raised { @item.applyNumberFormat = false }
+ assert_equal(@item.applyNumberFormat, false)
+ end
+
+ def test_applyFont
+ assert_raise(ArgumentError) { @item.applyFont = -1.1 }
+ assert_nothing_raised { @item.applyFont = false }
+ assert_equal(@item.applyFont, false)
+ end
+
+ def test_applyFill
+ assert_raise(ArgumentError) { @item.applyFill = -1.1 }
+ assert_nothing_raised { @item.applyFill = false }
+ assert_equal(@item.applyFill, false)
+ end
+
+ def test_applyBorder
+ assert_raise(ArgumentError) { @item.applyBorder = -1.1 }
+ assert_nothing_raised { @item.applyBorder = false }
+ assert_equal(@item.applyBorder, false)
+ end
+
+ def test_applyAlignment
+ assert_raise(ArgumentError) { @item.applyAlignment = -1.1 }
+ assert_nothing_raised { @item.applyAlignment = false }
+ assert_equal(@item.applyAlignment, false)
+ end
+
+ def test_applyProtection
+ assert_raise(ArgumentError) { @item.applyProtection = -1.1 }
+ assert_nothing_raised { @item.applyProtection = false }
+ assert_equal(@item.applyProtection, false)
+ end
+
+end
diff --git a/test/tc_package.rb b/test/tc_package.rb
new file mode 100644
index 00000000..672c3a81
--- /dev/null
+++ b/test/tc_package.rb
@@ -0,0 +1,70 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestPackage < Test::Unit::TestCase
+ def setup
+ @package = Axlsx::Package.new
+ ws = @package.workbook.add_worksheet
+ chart = ws.add_chart Axlsx::Pie3DChart
+ chart.add_series :data=>[1,2,3], :labels=>["a", "b", "c"]
+ end
+
+ def test_default_objects_are_created
+ assert(@package.instance_values["app"].is_a?(Axlsx::App), 'App object not created')
+ assert(@package.instance_values["core"].is_a?(Axlsx::Core), 'Core object not created')
+ assert(@package.workbook.is_a?(Axlsx::Workbook), 'Workbook object not created')
+ assert(Axlsx::Package.new.workbook.worksheets.size == 0, 'Workbook should not have sheets by default')
+ end
+
+ def test_serialization
+ fname = 'test_serialization.xlsx'
+ assert_nothing_raised do
+ if File.writable? fname
+ f = File.open(fname, 'w')
+ z= @package.serialize(f)
+
+ zf = Zip::ZipFile.open(f.path)
+ @package.send(:parts).each{ |part| zf.get_entry(part[:entry]) }
+ File.delete(f.path)
+
+ else
+ puts "Skipping write to disk as write permission is not granted to this user"
+ end
+ end
+
+ end
+
+ def test_validation
+ assert_equal(@package.validate.size, 0, @package.validate)
+ #how to test for failure? the internal validations on the models are so strict I cant break anthing.....
+ end
+
+ def test_parts
+ p = @package.send(:parts)
+ p.each do |part|
+ #all parts must have :doc, :entry, :schema
+ assert(part.keys.size == 3 && part.keys.reject{ |k| [:doc, :entry, :schema].include? k}.empty?)
+ end
+ #all parts have an entry
+ assert_equal(p.select{ |part| part[:entry] =~ /_rels\/\.rels/ }.size, 1, "rels missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /docProps\/core\.xml/ }.size, 1, "core missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /docProps\/app\.xml/ }.size, 1, "app missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/_rels\/workbook\.xml\.rels/ }.size, 1, "workbook rels missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/workbook\.xml/ }.size, 1, "workbook missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /\[Content_Types\]\.xml/ }.size, 1, "content types missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/styles\.xml/ }.size, 1, "styles missin")
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/_rels\/drawing\d\.xml\.rels/ }.size, @package.workbook.drawings.size, "one or more drawing rels missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/drawing\d\.xml/ }.size, @package.workbook.drawings.size, "one or more drawings missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/charts\/chart\d\.xml/ }.size, @package.workbook.charts.size, "one or more charts missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/sheet\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet missing")
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/_rels\/sheet\d\.xml\.rels/ }.size, @package.workbook.worksheets.size, "one or more sheet rels missing")
+
+ #no mystery parts
+ assert_equal(p.size, 12)
+
+ end
+
+ def test_workbook_is_a_workbook
+ assert @package.workbook.is_a? Axlsx::Workbook
+ end
+end
diff --git a/test/util/tc_simple_typed_list.rb b/test/util/tc_simple_typed_list.rb
new file mode 100644
index 00000000..6195153e
--- /dev/null
+++ b/test/util/tc_simple_typed_list.rb
@@ -0,0 +1,66 @@
+require 'test/unit'
+require 'axlsx.rb'
+class TestSimpleTypedList < Test::Unit::TestCase
+ def setup
+ @list = Axlsx::SimpleTypedList.new Fixnum
+ end
+
+ def teardown
+ end
+
+ def test_type_is_a_class_or_array_of_class
+ assert_nothing_raised { Axlsx::SimpleTypedList.new Integer }
+ assert_nothing_raised { Axlsx::SimpleTypedList.new [Integer,String] }
+ assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new }
+ assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new "1" }
+ assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new [Integer, "Class"] }
+ end
+
+ def test_indexed_based_assignment
+ #should not allow nil assignment
+ assert_raise(ArgumentError) { @list[0] = nil }
+ assert_raise(ArgumentError) { @list[0] = "1" }
+ assert_nothing_raised { @list[0] = 1 }
+ end
+
+ def test_concat_assignment
+ assert_raise(ArgumentError) { @list << nil }
+ assert_raise(ArgumentError) { @list << "1" }
+ assert_nothing_raised { @list << 1 }
+ end
+
+ def test_concat_should_return_index
+ assert( @list.size == 0 )
+ assert( @list << 1 == 0 )
+ assert( @list << 2 == 1 )
+ @list.delete_at 0
+ assert( @list << 3 == 1 )
+ assert( @list.index(2) == 0 )
+ end
+
+ def test_push_should_return_index
+ assert( @list.push(1) == 0 )
+ assert( @list.push(2) == 1 )
+ @list.delete_at 0
+ assert( @list.push(3) == 1 )
+ assert( @list.index(2) == 0 )
+ end
+
+ def test_locking
+ @list.push 1
+ @list.push 2
+ @list.push 3
+ @list.lock
+
+ assert_raise(ArgumentError) { @list.delete 1 }
+ assert_raise(ArgumentError) { @list.delete_at 1 }
+ assert_raise(ArgumentError) { @list.delete_at 2 }
+ @list.push 4
+ assert_nothing_raised { @list.delete_at 3 }
+ @list.unlock
+ #ignore garbage
+ assert_nothing_raised { @list.delete 0 }
+ assert_nothing_raised { @list.delete 9 }
+ end
+
+end
diff --git a/test/util/tc_validators.rb b/test/util/tc_validators.rb
new file mode 100644
index 00000000..09afcc27
--- /dev/null
+++ b/test/util/tc_validators.rb
@@ -0,0 +1,76 @@
+require 'test/unit'
+require 'axlsx.rb'
+class TestValidators < Test::Unit::TestCase
+ def setup
+ end
+ def teardown
+ end
+
+ def test_validators
+ #unsigned_int
+ assert_nothing_raised { Axlsx.validate_unsigned_int 1 }
+ assert_nothing_raised { Axlsx.validate_unsigned_int +1 }
+ assert_raise(ArgumentError) { Axlsx.validate_unsigned_int -1 }
+ assert_raise(ArgumentError) { Axlsx.validate_unsigned_int '1' }
+
+ #int
+ assert_nothing_raised { Axlsx.validate_int 1 }
+ assert_nothing_raised { Axlsx.validate_int -1 }
+ assert_raise(ArgumentError) { Axlsx.validate_int 'a' }
+ assert_raise(ArgumentError) { Axlsx.validate_int Array }
+
+ #boolean (as 0 or 1, :true, :false, true, false, or "true," "false")
+ [0,1,:true, :false, true, false, "true", "false"].each do |v|
+ assert_nothing_raised { Axlsx.validate_boolean 0 }
+ end
+ assert_raise(ArgumentError) { Axlsx.validate_boolean 2 }
+
+ #string
+ assert_nothing_raised { Axlsx.validate_string "1" }
+ assert_raise(ArgumentError) { Axlsx.validate_string 2 }
+ assert_raise(ArgumentError) { Axlsx.validate_string false }
+
+ #float
+ assert_nothing_raised { Axlsx.validate_float 1.0 }
+ assert_raise(ArgumentError) { Axlsx.validate_float 2 }
+ assert_raise(ArgumentError) { Axlsx.validate_float false }
+
+ #pattern_type
+ assert_nothing_raised { Axlsx.validate_pattern_type :none }
+ assert_raise(ArgumentError) { Axlsx.validate_pattern_type "none" }
+ assert_raise(ArgumentError) { Axlsx.validate_pattern_type "crazy_pattern" }
+ assert_raise(ArgumentError) { Axlsx.validate_pattern_type false }
+
+ #gradient_type
+ assert_nothing_raised { Axlsx.validate_gradient_type :path }
+ assert_raise(ArgumentError) { Axlsx.validate_gradient_type nil }
+ assert_raise(ArgumentError) { Axlsx.validate_gradient_type "fractal" }
+ assert_raise(ArgumentError) { Axlsx.validate_gradient_type false }
+
+ #horizontal alignment
+ assert_nothing_raised { Axlsx.validate_horizontal_alignment :general }
+ assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment nil }
+ assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment "wavy" }
+ assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment false }
+
+ #vertical alignment
+ assert_nothing_raised { Axlsx.validate_vertical_alignment :top }
+ assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment nil }
+ assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment "dynamic" }
+ assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment false }
+
+ #contentType
+ assert_nothing_raised { Axlsx.validate_content_type Axlsx::WORKBOOK_CT }
+ assert_raise(ArgumentError) { Axlsx.validate_content_type nil }
+ assert_raise(ArgumentError) { Axlsx.validate_content_type "http://some.url" }
+ assert_raise(ArgumentError) { Axlsx.validate_content_type false }
+
+ #relationshipType
+ assert_nothing_raised { Axlsx.validate_relationship_type Axlsx::WORKBOOK_R }
+ assert_raise(ArgumentError) { Axlsx.validate_relationship_type nil }
+ assert_raise(ArgumentError) { Axlsx.validate_relationship_type "http://some.url" }
+ assert_raise(ArgumentError) { Axlsx.validate_relationship_type false }
+
+ end
+end
+
diff --git a/test/workbook/tc_workbook.rb b/test/workbook/tc_workbook.rb
new file mode 100644
index 00000000..753e97e7
--- /dev/null
+++ b/test/workbook/tc_workbook.rb
@@ -0,0 +1,53 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestWorkbook < Test::Unit::TestCase
+ def setup
+ p = Axlsx::Package.new
+ @wb = p.workbook
+ end
+
+ def teardown
+ end
+
+ def test_date1904
+ assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
+ @wb.date1904 = :false
+ assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
+ Axlsx::Workbook.date1904 = :true
+ assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
+ end
+
+ def test_add_worksheet
+ assert(@wb.worksheets.empty?, "worbook has no worksheets by default")
+ ws = @wb.add_worksheet(:name=>"bob")
+ assert_equal(@wb.worksheets.size, 1, "add_worksheet adds a worksheet!")
+ assert_equal(@wb.worksheets.first, ws, "the worksheet returned is the worksheet added")
+ assert_equal(ws.name, "bob", "name option gets passed to worksheet")
+ end
+ def test_relationships
+ #current relationship size is 1 due to style relation
+ assert(@wb.relationships.size == 1)
+ @wb.add_worksheet
+ assert(@wb.relationships.size == 2)
+ end
+
+ def test_to_xml
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
+ doc = Nokogiri::XML(@wb.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ errors.push error
+ puts error.message
+ end
+ assert(errors.empty?, "error free validation")
+ end
+
+ def test_to_xml_adds_worksheet_when_worksheets_is_empty
+ assert(@wb.worksheets.empty?)
+ @wb.to_xml
+ assert(@wb.worksheets.size == 1)
+ end
+
+
+end
diff --git a/test/workbook/worksheet/tc_cell.rb b/test/workbook/worksheet/tc_cell.rb
new file mode 100644
index 00000000..6cc9a2c8
--- /dev/null
+++ b/test/workbook/worksheet/tc_cell.rb
@@ -0,0 +1,78 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestCell < Test::Unit::TestCase
+
+ def setup
+ p = Axlsx::Package.new
+ @ws = p.workbook.add_worksheet :name=>"hmmm"
+ p.workbook.styles.add_style :sz=>20
+ @row = @ws.add_row
+ @c = @row.add_cell 1, :type=>:float, :style=>1
+ end
+
+ def test_initialize
+ assert_equal(@row.cells.last, @c, "the cell was added to the row")
+ assert_equal(@c.type, :float, "type option is applied")
+ assert_equal(@c.style, 1, "style option is applied")
+ assert_equal(@c.value, 1.0, "type option is applied and value is casted")
+ end
+
+ def test_index
+ assert_equal(@c.index, @row.cells.index(@c))
+ end
+
+ def test_r
+ assert_equal(@c.r, "A1", "calculate cell reference")
+ end
+
+ def test_r_abs
+ assert_equal(@c.r_abs,"$A$1", "calculate absolute cell reference")
+ end
+
+ def test_style
+ assert_raise(ArgumentError, "must reject invalid style indexes") { @c.style=3 }
+ assert_nothing_raised("must allow valid style index changes") {@c.style=1}
+ assert_equal(@c.style, 1)
+ end
+
+ def test_type
+ assert_raise(ArgumentError, "type must be :string, :integer, :float, :time") { @c.type = :array }
+ assert_nothing_raised("type can be changed") { @c.type = :string }
+ assert_equal(@c.value, "1.0", "changing type casts the value")
+
+ assert_equal(@row.add_cell(Time.now).type, :time, 'time should be time')
+ end
+
+ def test_value
+ assert_raise(ArgumentError, "type must be :string, :integer, :float, :time") { @c.type = :array }
+ assert_nothing_raised("type can be changed") { @c.type = :string }
+ assert_equal(@c.value, "1.0", "changing type casts the value")
+ end
+
+ def test_col_ref
+ assert_equal(@c.send(:col_ref), "A")
+ end
+
+ def test_cell_type_from_value
+ assert_equal(@c.send(:cell_type_from_value, 1.0), :float)
+ assert_equal(@c.send(:cell_type_from_value, 1), :integer)
+ assert_equal(@c.send(:cell_type_from_value, Time.now), :time)
+ assert_equal(@c.send(:cell_type_from_value, []), :string)
+ assert_equal(@c.send(:cell_type_from_value, "d"), :string)
+ assert_equal(@c.send(:cell_type_from_value, nil), :string)
+ assert_equal(@c.send(:cell_type_from_value, -1), :integer)
+ end
+
+ def test_cast_value
+ @c.type = :string
+ assert_equal(@c.send(:cast_value, 1.0), "1.0")
+ @c.type = :integer
+ assert_equal(@c.send(:cast_value, 1.0), 1)
+ @c.type = :float
+ assert_equal(@c.send(:cast_value, "1.0"), 1.0)
+ @c.type = :string
+ assert_equal(@c.send(:cast_value, nil), "")
+
+ end
+end
diff --git a/test/workbook/worksheet/tc_row.rb b/test/workbook/worksheet/tc_row.rb
new file mode 100644
index 00000000..5dfdc601
--- /dev/null
+++ b/test/workbook/worksheet/tc_row.rb
@@ -0,0 +1,30 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestRow < Test::Unit::TestCase
+
+ def setup
+ p = Axlsx::Package.new
+ @ws = p.workbook.add_worksheet :name=>"hmmm"
+ @row = @ws.add_row
+ end
+
+ def test_initialize
+ assert(@row.cells.empty?, "no cells by default")
+ assert_equal(@row.worksheet, @ws, "has a reference to the worksheet")
+ end
+
+ def test_index
+ assert_equal(@row.index, @row.worksheet.rows.index(@row))
+ end
+
+ def test_add_cell
+ c = @row.add_cell(1)
+ assert_equal(@row.cells.last, c)
+ end
+
+ def test_array_to_cells
+ r = @ws.add_row [1,2,3], :style=>0, :types=>:integer
+ assert_equal(r.cells.size, 3)
+ end
+end
diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb
new file mode 100644
index 00000000..ce913778
--- /dev/null
+++ b/test/workbook/worksheet/tc_worksheet.rb
@@ -0,0 +1,85 @@
+require 'test/unit'
+require 'axlsx.rb'
+
+class TestWorksheet < Test::Unit::TestCase
+ def setup
+ p = Axlsx::Package.new
+ @ws = p.workbook.add_worksheet
+ end
+
+ def test_pn
+ assert_equal(@ws.pn, "worksheets/sheet1.xml")
+ ws = @ws.workbook.add_worksheet
+ assert_equal(ws.pn, "worksheets/sheet2.xml")
+ end
+
+ def test_rels_pn
+ assert_equal(@ws.rels_pn, "worksheets/_rels/sheet1.xml.rels")
+ ws = @ws.workbook.add_worksheet
+ assert_equal(ws.rels_pn, "worksheets/_rels/sheet2.xml.rels")
+ end
+
+ def test_rId
+ assert_equal(@ws.rId, "rId1")
+ ws = @ws.workbook.add_worksheet
+ assert_equal(ws.rId, "rId2")
+ end
+
+ def test_index
+ assert_equal(@ws.index, @ws.workbook.worksheets.index(@ws))
+ end
+
+ def test_add_row
+ assert(@ws.rows.empty?, "sheet has no rows by default")
+ r = @ws.add_row([1,2,3])
+ assert_equal(@ws.rows.size, 1, "add_row adds a row")
+ assert_equal(@ws.rows.first, r, "the row returned is the row added")
+ end
+
+ def test_add_chart
+ assert(@ws.workbook.charts.empty?, "the sheet's workbook should not have any charts by default")
+ @ws.add_chart Axlsx::Pie3DChart
+ assert_equal(@ws.workbook.charts.size, 1, "add_chart adds a chart to the workbook")
+ end
+
+ def test_drawing
+ assert @ws.drawing.is_a? Axlsx::Drawing
+ end
+
+
+ def test_to_xml
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
+ doc = Nokogiri::XML(@ws.to_xml)
+ errors = []
+ schema.validate(doc).each do |error|
+ errors.push error
+ puts error.message
+ end
+ assert(errors.empty?, "error free validation")
+ end
+
+ def test_relationships
+ assert(@ws.relationships.empty?, "No Drawing relationship until you add a chart")
+ c = @ws.add_chart Axlsx::Pie3DChart
+ assert_equal(@ws.relationships.size, 1, "adding a chart creates the relationship")
+ c = @ws.add_chart Axlsx::Pie3DChart
+ assert_equal(@ws.relationships.size, 1, "multiple charts still only result in one relationship")
+ end
+
+
+ def test_update_auto_with_data
+ small = @ws.workbook.styles.add_style(:sz=>2)
+ big = @ws.workbook.styles.add_style(:sz=>10)
+ @ws.add_row ["chasing windmills", "penut"], :style=>small
+ assert(@ws.auto_fit_data.size == 2, "a data item for each column")
+ assert_equal(@ws.auto_fit_data[0], {:sz=>2,:longest=>"chasing windmills"}, "adding a row updates auto_fit_data if the product of the string length and font is greater for the column")
+ @ws.add_row ["mule"], :style=>big
+ assert_equal(@ws.auto_fit_data[0], {:sz=>10,:longest=>"mule"}, "adding a row updates auto_fit_data if the product of the string length and font is greater for the column")
+ end
+
+ def test_auto_width
+ assert(@ws.send(:auto_width, {:sz=>11, :longest=>"fisheries"}) > @ws.send(:auto_width, {:sz=>11, :longest=>"fish"}), "longer strings get a longer auto_width at the same font size")
+ assert(@ws.send(:auto_width, {:sz=>12, :longest=>"fish"}) > @ws.send(:auto_width, {:sz=>11, :longest=>"fish"}), "larger font size gets a longer auto_width using the same text")
+ end
+
+end
diff --git a/unzip/[Content_Types].xml b/unzip/[Content_Types].xml
new file mode 100644
index 00000000..04d6b151
--- /dev/null
+++ b/unzip/[Content_Types].xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
+ <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
+ <Default Extension="xml" ContentType="application/xml"/>
+ <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
+ <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
+ <Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>
+ <Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
+ <Override PartName="/xl/drawings/drawing1.xml" ContentType="application/vnd.openxmlformats-officedocument.drawing+xml"/>
+ <Override PartName="/xl/drawings/drawing2.xml" ContentType="application/vnd.openxmlformats-officedocument.drawing+xml"/>
+ <Override PartName="/xl/drawings/drawing3.xml" ContentType="application/vnd.openxmlformats-officedocument.drawing+xml"/>
+ <Override PartName="/xl/charts/chart1.xml" ContentType="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"/>
+ <Override PartName="/xl/charts/chart2.xml" ContentType="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"/>
+ <Override PartName="/xl/charts/chart3.xml" ContentType="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"/>
+ <Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
+ <Override PartName="/xl/worksheets/sheet2.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
+ <Override PartName="/xl/worksheets/sheet3.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
+</Types>
diff --git a/unzip/_rels/.rels b/unzip/_rels/.rels
new file mode 100644
index 00000000..34dd22a6
--- /dev/null
+++ b/unzip/_rels/.rels
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId1" Target="xl/workbook.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"/>
+ <Relationship Id="rId2" Target="docProps/core.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/metadata/core-properties"/>
+ <Relationship Id="rId3" Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"/>
+</Relationships>
diff --git a/unzip/docProps/app.xml b/unzip/docProps/app.xml
new file mode 100644
index 00000000..41823de6
--- /dev/null
+++ b/unzip/docProps/app.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Properties xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"/>
diff --git a/unzip/docProps/core.xml b/unzip/docProps/core.xml
new file mode 100644
index 00000000..0d17f36c
--- /dev/null
+++ b/unzip/docProps/core.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <dc:creator>axlsx</dc:creator>
+ <dcterms:created xsi:type="dcterms:W3CDTF">2011-11-20T10:46:37</dcterms:created>
+ <cp:revision>0</cp:revision>
+</cp:coreProperties>
diff --git a/unzip/test.zip b/unzip/test.zip
new file mode 100644
index 00000000..e758a0c2
--- /dev/null
+++ b/unzip/test.zip
Binary files differ
diff --git a/unzip/xl/_rels/workbook.xml.rels b/unzip/xl/_rels/workbook.xml.rels
new file mode 100644
index 00000000..226e9215
--- /dev/null
+++ b/unzip/xl/_rels/workbook.xml.rels
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId1" Target="worksheets/sheet1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"/>
+ <Relationship Id="rId2" Target="worksheets/sheet2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"/>
+ <Relationship Id="rId3" Target="worksheets/sheet3.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"/>
+ <Relationship Id="rId4" Target="styles.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"/>
+</Relationships>
diff --git a/unzip/xl/charts/chart1.xml b/unzip/xl/charts/chart1.xml
new file mode 100644
index 00000000..cc661ebe
--- /dev/null
+++ b/unzip/xl/charts/chart1.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <c:chart>
+ <c:title>
+ <c:tx>
+ <c:strRef>
+ <c:f></c:f>
+ <c:strCache>
+ <c:ptCount val="1"/>
+ <c:pt idx="0">
+ <c:v>Candy Bar Consumption Per Age Group</c:v>
+ </c:pt>
+ </c:strCache>
+ </c:strRef>
+ </c:tx>
+ </c:title>
+ <c:view3D>
+ <c:rAngAx val="1"/>
+ </c:view3D>
+ <c:plotArea>
+ <c:layout/>
+ <c:bar3DChart>
+ <c:barDir val="bar"/>
+ <c:grouping val="clustered"/>
+ <c:varyColors val="1"/>
+ <c:ser>
+ <c:idx val="0"/>
+ <c:order val="0"/>
+ <c:tx>
+ <c:v></c:v>
+ </c:tx>
+ <c:cat>
+ <c:strRef>
+ <c:f>Candy Bar!$A$5:$C$5</c:f>
+ <c:strCache>
+ <c:ptCount val="3"/>
+ <c:pt idx="0">
+ <c:v>0 ~ 10</c:v>
+ </c:pt>
+ <c:pt idx="1">
+ <c:v>11 ~ 20</c:v>
+ </c:pt>
+ <c:pt idx="2">
+ <c:v>21 ~ 60</c:v>
+ </c:pt>
+ </c:strCache>
+ </c:strRef>
+ </c:cat>
+ <c:val>
+ <c:numRef>
+ <c:f>Candy Bar!$A$6:$C$6</c:f>
+ <c:numCache>
+ <c:formatCode>General</c:formatCode>
+ <c:ptCount val="3"/>
+ <c:pt idx="0">
+ <c:v>12</c:v>
+ </c:pt>
+ <c:pt idx="1">
+ <c:v>60</c:v>
+ </c:pt>
+ <c:pt idx="2">
+ <c:v>25</c:v>
+ </c:pt>
+ </c:numCache>
+ </c:numRef>
+ </c:val>
+ </c:ser>
+ <c:axId val="1760623"/>
+ <c:axId val="223337"/>
+ <c:axId val="0"/>
+ </c:bar3DChart>
+ <c:catAx>
+ <c:axId val="1760623"/>
+ <c:scaling>
+ <c:orientation val="minMax"/>
+ </c:scaling>
+ <c:axPos val="l"/>
+ <c:majorGridlines/>
+ <c:numFmt sourceLinked="1" formatCode=""/>
+ <c:tickLblPos val="nextTo"/>
+ <c:crossAx val="223337"/>
+ <c:crosses val="autoZero"/>
+ <c:auto val="true"/>
+ <c:lblAlgn val="ctr"/>
+ <c:lblOffset val="100%"/>
+ </c:catAx>
+ <c:valAx>
+ <c:axId val="223337"/>
+ <c:scaling>
+ <c:orientation val="minMax"/>
+ </c:scaling>
+ <c:axPos val="l"/>
+ <c:majorGridlines/>
+ <c:numFmt sourceLinked="1" formatCode=""/>
+ <c:tickLblPos val="nextTo"/>
+ <c:crossAx val="1760623"/>
+ <c:crosses val="autoZero"/>
+ <c:crossBetween val="between"/>
+ </c:valAx>
+ </c:plotArea>
+ <c:legend>
+ <c:legendPos val="r"/>
+ <c:layout/>
+ </c:legend>
+ </c:chart>
+</c:chartSpace>
diff --git a/unzip/xl/charts/chart2.xml b/unzip/xl/charts/chart2.xml
new file mode 100644
index 00000000..55634a62
--- /dev/null
+++ b/unzip/xl/charts/chart2.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <c:chart>
+ <c:title>
+ <c:tx>
+ <c:strRef>
+ <c:f></c:f>
+ <c:strCache>
+ <c:ptCount val="1"/>
+ <c:pt idx="0">
+ <c:v>Pie in the Face</c:v>
+ </c:pt>
+ </c:strCache>
+ </c:strRef>
+ </c:tx>
+ </c:title>
+ <c:view3D>
+ <c:rotX val="30"/>
+ <c:rotY val="30"/>
+ </c:view3D>
+ <c:plotArea>
+ <c:layout/>
+ <c:pie3DChart>
+ <c:varyColors val="1"/>
+ <c:ser>
+ <c:idx val="0"/>
+ <c:order val="0"/>
+ <c:tx>
+ <c:v></c:v>
+ </c:tx>
+ <c:cat>
+ <c:strRef>
+ <c:f>Face Pie!$A$2:$C$2</c:f>
+ <c:strCache>
+ <c:ptCount val="3"/>
+ <c:pt idx="0">
+ <c:v>Rich kids</c:v>
+ </c:pt>
+ <c:pt idx="1">
+ <c:v>Poor kids</c:v>
+ </c:pt>
+ <c:pt idx="2">
+ <c:v>Red-headed Stepchildren</c:v>
+ </c:pt>
+ </c:strCache>
+ </c:strRef>
+ </c:cat>
+ <c:val>
+ <c:numRef>
+ <c:f>Face Pie!$A$3:$C$3</c:f>
+ <c:numCache>
+ <c:formatCode>General</c:formatCode>
+ <c:ptCount val="3"/>
+ <c:pt idx="0">
+ <c:v>0.5</c:v>
+ </c:pt>
+ <c:pt idx="1">
+ <c:v>0.3</c:v>
+ </c:pt>
+ <c:pt idx="2">
+ <c:v>0.02</c:v>
+ </c:pt>
+ </c:numCache>
+ </c:numRef>
+ </c:val>
+ </c:ser>
+ </c:pie3DChart>
+ </c:plotArea>
+ <c:legend>
+ <c:legendPos val="r"/>
+ <c:layout/>
+ </c:legend>
+ </c:chart>
+</c:chartSpace>
diff --git a/unzip/xl/charts/chart3.xml b/unzip/xl/charts/chart3.xml
new file mode 100644
index 00000000..c5347f50
--- /dev/null
+++ b/unzip/xl/charts/chart3.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<c:chartSpace xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <c:chart>
+ <c:title>
+ <c:tx>
+ <c:strRef>
+ <c:f></c:f>
+ <c:strCache>
+ <c:ptCount val="1"/>
+ <c:pt idx="0">
+ <c:v></c:v>
+ </c:pt>
+ </c:strCache>
+ </c:strRef>
+ </c:tx>
+ </c:title>
+ <c:view3D>
+ <c:rotX val="30"/>
+ <c:rotY val="30"/>
+ </c:view3D>
+ <c:plotArea>
+ <c:layout/>
+ <c:pie3DChart>
+ <c:varyColors val="1"/>
+ <c:ser>
+ <c:idx val="0"/>
+ <c:order val="0"/>
+ <c:tx>
+ <c:v></c:v>
+ </c:tx>
+ <c:cat>
+ <c:strRef>
+ <c:f></c:f>
+ <c:strCache>
+ <c:ptCount val="3"/>
+ <c:pt idx="0">
+ <c:v>nothing</c:v>
+ </c:pt>
+ <c:pt idx="1">
+ <c:v>in</c:v>
+ </c:pt>
+ <c:pt idx="2">
+ <c:v>the sheet</c:v>
+ </c:pt>
+ </c:strCache>
+ </c:strRef>
+ </c:cat>
+ <c:val>
+ <c:numRef>
+ <c:f></c:f>
+ <c:numCache>
+ <c:formatCode>General</c:formatCode>
+ <c:ptCount val="3"/>
+ <c:pt idx="0">
+ <c:v>13</c:v>
+ </c:pt>
+ <c:pt idx="1">
+ <c:v>54</c:v>
+ </c:pt>
+ <c:pt idx="2">
+ <c:v>1</c:v>
+ </c:pt>
+ </c:numCache>
+ </c:numRef>
+ </c:val>
+ </c:ser>
+ </c:pie3DChart>
+ </c:plotArea>
+ <c:legend>
+ <c:legendPos val="r"/>
+ <c:layout/>
+ </c:legend>
+ </c:chart>
+</c:chartSpace>
diff --git a/unzip/xl/drawings/_rels/drawing1.xml.rels b/unzip/xl/drawings/_rels/drawing1.xml.rels
new file mode 100644
index 00000000..18b88291
--- /dev/null
+++ b/unzip/xl/drawings/_rels/drawing1.xml.rels
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId1" Target="../charts/chart1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"/>
+</Relationships>
diff --git a/unzip/xl/drawings/_rels/drawing2.xml.rels b/unzip/xl/drawings/_rels/drawing2.xml.rels
new file mode 100644
index 00000000..f2e2ac3e
--- /dev/null
+++ b/unzip/xl/drawings/_rels/drawing2.xml.rels
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId1" Target="../charts/chart2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"/>
+</Relationships>
diff --git a/unzip/xl/drawings/_rels/drawing3.xml.rels b/unzip/xl/drawings/_rels/drawing3.xml.rels
new file mode 100644
index 00000000..c055f672
--- /dev/null
+++ b/unzip/xl/drawings/_rels/drawing3.xml.rels
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId1" Target="../charts/chart3.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"/>
+</Relationships>
diff --git a/unzip/xl/drawings/drawing1.xml b/unzip/xl/drawings/drawing1.xml
new file mode 100644
index 00000000..58950fb8
--- /dev/null
+++ b/unzip/xl/drawings/drawing1.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <xdr:twoCellAnchor>
+ <xdr:from>
+ <xdr:col>0</xdr:col>
+ <xdr:colOff>0</xdr:colOff>
+ <xdr:row>7</xdr:row>
+ <xdr:rowOff>0</xdr:rowOff>
+ </xdr:from>
+ <xdr:to>
+ <xdr:col>3</xdr:col>
+ <xdr:colOff>0</xdr:colOff>
+ <xdr:row>17</xdr:row>
+ <xdr:rowOff>0</xdr:rowOff>
+ </xdr:to>
+ <xdr:graphicFrame>
+ <xdr:nvGraphicFramePr>
+ <xdr:cNvPr name="#&lt;Axlsx::Title:0x1029dd340&gt;" id="2"/>
+ <xdr:cNvGraphicFramePr/>
+ </xdr:nvGraphicFramePr>
+ <xdr:xfrm>
+ <a:off x="0" y="0"/>
+ <a:ext cx="0" cy="0"/>
+ </xdr:xfrm>
+ <a:graphic>
+ <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">
+ <c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId1"/>
+ </a:graphicData>
+ </a:graphic>
+ </xdr:graphicFrame>
+ <xdr:clientData/>
+ </xdr:twoCellAnchor>
+</xdr:wsDr>
diff --git a/unzip/xl/drawings/drawing2.xml b/unzip/xl/drawings/drawing2.xml
new file mode 100644
index 00000000..ab98a78b
--- /dev/null
+++ b/unzip/xl/drawings/drawing2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <xdr:twoCellAnchor>
+ <xdr:from>
+ <xdr:col>0</xdr:col>
+ <xdr:colOff>0</xdr:colOff>
+ <xdr:row>7</xdr:row>
+ <xdr:rowOff>0</xdr:rowOff>
+ </xdr:from>
+ <xdr:to>
+ <xdr:col>3</xdr:col>
+ <xdr:colOff>0</xdr:colOff>
+ <xdr:row>17</xdr:row>
+ <xdr:rowOff>0</xdr:rowOff>
+ </xdr:to>
+ <xdr:graphicFrame>
+ <xdr:nvGraphicFramePr>
+ <xdr:cNvPr name="#&lt;Axlsx::Title:0x1029d5a28&gt;" id="2"/>
+ <xdr:cNvGraphicFramePr/>
+ </xdr:nvGraphicFramePr>
+ <xdr:xfrm>
+ <a:off x="0" y="0"/>
+ <a:ext cx="0" cy="0"/>
+ </xdr:xfrm>
+ <a:graphic>
+ <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">
+ <c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId1"/>
+ </a:graphicData>
+ </a:graphic>
+ </xdr:graphicFrame>
+ <xdr:clientData/>
+ </xdr:twoCellAnchor>
+</xdr:wsDr>
diff --git a/unzip/xl/drawings/drawing3.xml b/unzip/xl/drawings/drawing3.xml
new file mode 100644
index 00000000..167e9fcb
--- /dev/null
+++ b/unzip/xl/drawings/drawing3.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
+ <xdr:twoCellAnchor>
+ <xdr:from>
+ <xdr:col>1</xdr:col>
+ <xdr:colOff>0</xdr:colOff>
+ <xdr:row>32</xdr:row>
+ <xdr:rowOff>0</xdr:rowOff>
+ </xdr:from>
+ <xdr:to>
+ <xdr:col>3</xdr:col>
+ <xdr:colOff>0</xdr:colOff>
+ <xdr:row>42</xdr:row>
+ <xdr:rowOff>0</xdr:rowOff>
+ </xdr:to>
+ <xdr:graphicFrame>
+ <xdr:nvGraphicFramePr>
+ <xdr:cNvPr name="#&lt;Axlsx::Title:0x1029d2080&gt;" id="2"/>
+ <xdr:cNvGraphicFramePr/>
+ </xdr:nvGraphicFramePr>
+ <xdr:xfrm>
+ <a:off x="0" y="0"/>
+ <a:ext cx="0" cy="0"/>
+ </xdr:xfrm>
+ <a:graphic>
+ <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">
+ <c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId1"/>
+ </a:graphicData>
+ </a:graphic>
+ </xdr:graphicFrame>
+ <xdr:clientData/>
+ </xdr:twoCellAnchor>
+</xdr:wsDr>
diff --git a/unzip/xl/styles.xml b/unzip/xl/styles.xml
new file mode 100644
index 00000000..2e1bec5e
--- /dev/null
+++ b/unzip/xl/styles.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
+ <numFmts count="2">
+ <numFmt numFmtId="100" formatCode="yyyy/mm/dd"/>
+ <numFmt numFmtId="101" formatCode="yyyy/mm/dd hh:mm:ss"/>
+ </numFmts>
+ <fonts count="7">
+ <font>
+ <name val="Arial"/>
+ <family val="1"/>
+ <sz val="11"/>
+ </font>
+ <font>
+ <color rgb="FFFFFFFF"/>
+ <sz val="14"/>
+ </font>
+ <font>
+ <sz val="22"/>
+ </font>
+ <font/>
+ <font/>
+ <font/>
+ <font/>
+ </fonts>
+ <fills count="3">
+ <fill>
+ <patternFill patternType="none"/>
+ </fill>
+ <fill>
+ <patternFill patternType="gray125"/>
+ </fill>
+ <fill>
+ <patternFill patternType="solid">
+ <fgColor rgb="FF000000"/>
+ </patternFill>
+ </fill>
+ </fills>
+ <borders count="2">
+ <border></border>
+ <border><left style="thin"><color rgb="FF000000"/></left><right style="thin"><color rgb="FF000000"/></right><top style="thin"><color rgb="FF000000"/></top><bottom style="thin"><color rgb="FF000000"/></bottom></border>
+ </borders>
+ <cellStyleXfs count="1">
+ <xf fontId="0" numFmtId="0" xfId="0" borderId="0" fillId="0"/>
+ </cellStyleXfs>
+ <cellXfs count="8">
+ <xf fontId="0" numFmtId="0" xfId="0" borderId="0" fillId="0"/>
+ <xf fontId="0" numFmtId="0" xfId="0" borderId="1" fillId="0"/>
+ <xf fontId="1" numFmtId="0" applyFill="1" applyProtection="0" applyFont="1" borderId="0" fillId="2">
+ <alignment horizontal="center"/>
+ <protection/>
+ </xf>
+ <xf fontId="2" numFmtId="0" applyFill="1" applyProtection="0" applyFont="1" borderId="0" fillId="0">
+ <protection/>
+ </xf>
+ <xf fontId="3" numFmtId="9" applyFill="1" applyProtection="0" applyFont="1" borderId="1" fillId="0">
+ <protection/>
+ </xf>
+ <xf fontId="4" numFmtId="101" applyFill="1" applyProtection="0" applyFont="1" borderId="0" fillId="0">
+ <protection/>
+ </xf>
+ <xf fontId="5" numFmtId="100" applyFill="1" applyProtection="0" applyFont="1" borderId="0" fillId="0">
+ <protection/>
+ </xf>
+ <xf fontId="6" numFmtId="0" applyFill="1" applyProtection="0" applyFont="1" borderId="0" fillId="0">
+ <protection/>
+ </xf>
+ </cellXfs>
+ <dxfs count="0"/>
+ <tableStyles count="0" defaultPivotStyle="PivotStyleLight16" defaultTableStyle="TableStyleMedium9"/>
+</styleSheet>
diff --git a/unzip/xl/workbook.xml b/unzip/xl/workbook.xml
new file mode 100644
index 00000000..2bfb3a97
--- /dev/null
+++ b/unzip/xl/workbook.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
+<workbookPr date1904="true"/>
+<sheets>
+<sheet r:id="rId1" sheetId="1" name="Candy Bar"/>
+<sheet r:id="rId2" sheetId="2" name="Face Pie"/>
+<sheet r:id="rId3" sheetId="3" name="Direct Charting"/>
+</sheets>
+</workbook>
diff --git a/unzip/xl/worksheets/_rels/sheet1.xml.rels b/unzip/xl/worksheets/_rels/sheet1.xml.rels
new file mode 100644
index 00000000..e9fd609e
--- /dev/null
+++ b/unzip/xl/worksheets/_rels/sheet1.xml.rels
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId1" Target="../drawings/drawing1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"/>
+</Relationships>
diff --git a/unzip/xl/worksheets/_rels/sheet2.xml.rels b/unzip/xl/worksheets/_rels/sheet2.xml.rels
new file mode 100644
index 00000000..4580b95c
--- /dev/null
+++ b/unzip/xl/worksheets/_rels/sheet2.xml.rels
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId1" Target="../drawings/drawing2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"/>
+</Relationships>
diff --git a/unzip/xl/worksheets/_rels/sheet3.xml.rels b/unzip/xl/worksheets/_rels/sheet3.xml.rels
new file mode 100644
index 00000000..65ba6e13
--- /dev/null
+++ b/unzip/xl/worksheets/_rels/sheet3.xml.rels
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+ <Relationship Id="rId1" Target="../drawings/drawing3.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"/>
+</Relationships>
diff --git a/unzip/xl/worksheets/sheet1.xml b/unzip/xl/worksheets/sheet1.xml
new file mode 100644
index 00000000..448efd88
--- /dev/null
+++ b/unzip/xl/worksheets/sheet1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<worksheet xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><cols><col width="59.6" customWidth="true" min="1" max="1"/><col width="19.0" customWidth="true" min="2" max="2"/><col width="8.90909090909091" customWidth="true" min="3" max="3"/></cols><sheetData><row r="1"><c s="3" r="A1" t="inlineStr"><is><t>Examples 1</t></is></c></row><row r="2"><c s="0" r="A2" t="inlineStr"><is><t>generated</t></is></c><c s="5" r="B2"><v>39405.4490324959</v></c></row><row r="3"><c s="0" r="A3" t="inlineStr"><is><t>researched on</t></is></c><c s="6" r="B3"><v>39405.4490324998</v></c></row><row r="4"><c s="3" r="A4" t="inlineStr"><is><t>Candy Bar Consumption Per Age Group</t></is></c></row><row r="5"><c s="2" r="A5" t="inlineStr"><is><t>0 ~ 10</t></is></c><c s="2" r="B5" t="inlineStr"><is><t>11 ~ 20</t></is></c><c s="2" r="C5" t="inlineStr"><is><t>21 ~ 60</t></is></c></row><row r="6"><c s="7" r="A6"><v>12</v></c><c s="7" r="B6"><v>60</v></c><c s="7" r="C6"><v>25</v></c></row></sheetData><drawing r:id="rId1"/></worksheet>
diff --git a/unzip/xl/worksheets/sheet2.xml b/unzip/xl/worksheets/sheet2.xml
new file mode 100644
index 00000000..0033af7f
--- /dev/null
+++ b/unzip/xl/worksheets/sheet2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<worksheet xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><cols><col width="26.0" customWidth="true" min="1" max="1"/><col width="8.90909090909091" customWidth="true" min="2" max="2"/><col width="25.7090909090909" customWidth="true" min="3" max="3"/></cols><sheetData><row r="1"><c s="3" r="A1" t="inlineStr"><is><t>Who likes face Pie?</t></is></c></row><row r="2"><c s="2" r="A2" t="inlineStr"><is><t>Rich kids</t></is></c><c s="2" r="B2" t="inlineStr"><is><t>Poor kids</t></is></c><c s="2" r="C2" t="inlineStr"><is><t>Red-headed Stepchildren</t></is></c></row><row r="3"><c s="4" r="A3"><v>0.5</v></c><c s="4" r="B3"><v>0.3</v></c><c s="4" r="C3"><v>0.02</v></c></row></sheetData><drawing r:id="rId1"/></worksheet>
diff --git a/unzip/xl/worksheets/sheet3.xml b/unzip/xl/worksheets/sheet3.xml
new file mode 100644
index 00000000..6beda523
--- /dev/null
+++ b/unzip/xl/worksheets/sheet3.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<worksheet xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><cols><col width="35.8" customWidth="true" min="1" max="1"/></cols><sheetData><row r="1"><c s="0" r="A1" t="inlineStr"><is><t>Charts can be build without any data in the worksheet</t></is></c></row></sheetData><drawing r:id="rId1"/></worksheet>