Commit 1d2f93d1 authored by Jody Goldberg's avatar Jody Goldberg

update schema

svn path=/trunk/; revision=16203
parent 10c4d57c
......@@ -8,7 +8,9 @@ Andreas:
Jody:
* OFFSET use size of input range. [#497294]
* Finish .gnumeric i/o support for explicit page breaks.
* Update the .gnumeric schema to handle modern content.
* Make xlsx import more defensive against unsupported bits.
* Fix xlsx round trip of margins.
Morten:
* Fix crash in dependency code for named expressions. [#498347]
......
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gnm="http://www.gnumeric.org/v10.dtd"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
targetNamespace="http://www.gnumeric.org/v10.dtd"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:annotation>
<xsd:documentation xml:lang="en">
<xs:annotation>
<xs:documentation xml:lang="en">
Schema for gnumeric spreadsheet documents
Created for Gnumeric 1.2.2,
Based on gnumeric source code and sample gnumeric documents
......@@ -18,492 +18,503 @@
updated for 1.7.1 in Jun 2006
updated for 1.7.11 in Jun 2007 jody@gnome.org
updated for 1.7.91 in Nov 2007 jody@gnome.org
</xsd:documentation>
</xsd:annotation>
</xs:documentation>
</xs:annotation>
<xsd:element name="Workbook" type="gnm:Workbook"/>
<xs:element name="Workbook" type="gnm:Workbook"/>
<xsd:complexType name="Version">
<xsd:attribute name="Epoch" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="Major" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="Minor" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="Full" type="xsd:string" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
<xs:complexType name="Version">
<xs:attribute name="Epoch" type="xs:nonNegativeInteger" use="required"/>
<xs:attribute name="Major" type="xs:nonNegativeInteger" use="required"/>
<xs:attribute name="Minor" type="xs:nonNegativeInteger" use="required"/>
<xs:attribute name="Full" type="xs:string" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xsd:complexType name="Workbook">
<xsd:sequence>
<xsd:element name="Version" type="gnm:Version" minOccurs="0" maxOccurs="1"/>
<xsd:element name="Attributes" type="gnm:Attributes"/>
<xs:complexType name="Workbook">
<xs:sequence>
<xs:element name="Version" type="gnm:Version" minOccurs="0" maxOccurs="1"/>
<xs:element name="Attributes" type="gnm:Attributes"/>
<!-- ignore office:document-meta -->
<xs:any minOccurs="0" maxOccurs="unbounded"
namespace="##other" processContents="lax"/>
<!-- ancient files lack this, modern files require it -->
<xsd:element name="SheetNameIndex" type="gnm:SheetNameIndex" minOccurs="0" maxOccurs="1"/>
<xs:element name="SheetNameIndex" type="gnm:SheetNameIndex" minOccurs="0" maxOccurs="1"/>
<xsd:element name="Names" type="gnm:Names" minOccurs="0" maxOccurs="1"/>
<xs:element name="Names" type="gnm:Names" minOccurs="0" maxOccurs="1"/>
<!-- Deprecated, moved to Calculation and expanded in 1.7.11
Valid value == 1904, anything else == Lotus:1900 -->
<xsd:element name="DateConvention" type="xsd:int" minOccurs="0" maxOccurs="1"/>
<xs:element name="DateConvention" type="xs:int" minOccurs="0" maxOccurs="1"/>
<!-- preferred height and width -->
<xsd:element name="Geometry">
<xsd:complexType>
<xsd:attribute name="Width" type="xsd:positiveInteger" use="required"/>
<xsd:attribute name="Height" type="xsd:positiveInteger" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Sheets" type="gnm:Sheets"/>
<xs:element name="Geometry">
<xs:complexType>
<xs:attribute name="Width" type="xs:nonNegativeInteger" use="optional"/>
<xs:attribute name="Height" type="xs:nonNegativeInteger" use="optional"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<xs:element name="Sheets" type="gnm:Sheets"/>
<!-- which sheet was selected when the spreadsheet was saved? -->
<xsd:element name="UIData">
<xsd:complexType>
<xsd:attribute name="SelectedTab" type="xsd:nonNegativeInteger" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Calculation" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:attribute name="ManualRecalc" type="xsd:boolean"/>
<xsd:attribute name="EnableIteration" type="xsd:boolean"/>
<xsd:attribute name="MaxIterations" type="xsd:nonNegativeInteger"/>
<xsd:attribute name="IterationTolerance" type="xsd:double"/>
<xsd:attribute name="DateConvention" type="gnm:DateConvention" use="optional" default="Lotus:1900"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="document-meta" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:attribute name="version" type="xsd:string"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xs:element name="UIData">
<xs:complexType>
<xs:attribute name="SelectedTab" type="xs:nonNegativeInteger" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<xs:element name="Calculation" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ManualRecalc" type="xs:boolean"/>
<xs:attribute name="EnableIteration" type="xs:boolean"/>
<xs:attribute name="MaxIterations" type="xs:nonNegativeInteger"/>
<xs:attribute name="IterationTolerance" type="xs:double"/>
<xs:attribute name="DateConvention" type="gnm:DateConvention" use="optional" default="Lotus:1900"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<!-- version number should be v10 - - &gt;
<xsd:attribute name="gnm" type="gnm:namespace" use="required"/> -->
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
<xs:attribute name="gnm" type="gnm:namespace" use="required"/> -->
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<!-- How values are mapped to dates. All date functions are affected -->
<xsd:simpleType name="DateConvention">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Lotus:1900"/>
<xsd:enumeration value="Apple:1904"/>
<xs:simpleType name="DateConvention">
<xs:restriction base="xs:string">
<xs:enumeration value="Lotus:1900"/>
<xs:enumeration value="Apple:1904"/>
<!-- future values. currently treated as Lotus:1900 -->
<xsd:enumeration value="ODF:1899"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="CellRef">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]+\d+"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="Names">
<xsd:sequence>
<xsd:element name="Name" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xs:enumeration value="ODF:1899"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CellRef">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]+\d+"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Names">
<xs:sequence>
<xs:element name="Name" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<!-- an oversight in the sax exporter (fixed in 1.4.3)
leaves off the namespace. Handle both formats.
-->
<xsd:choice>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="name" type="xsd:string" form="unqualified"/>
</xsd:choice>
<xsd:choice>
<xsd:element name="value" type="xsd:string"/>
<xsd:element name="value" type="xsd:string" form="unqualified"/>
</xsd:choice>
<xsd:choice>
<xsd:element name="position" type="xsd:string"/>
<xsd:element name="position" type="xsd:string" form="unqualified"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Attributes">
<xsd:sequence>
<xsd:element name="Attribute" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="type" minOccurs="0" maxOccurs="1" type="gnm:AttributeType"/><!-- must be 4 -->
<xsd:element name="name" minOccurs="1" maxOccurs="1" type="xsd:string"/>
<xsd:element name="value" minOccurs="1" maxOccurs="1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="AttributeType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="4"/>
<xsd:maxInclusive value="4"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="SheetNameIndex">
<xsd:sequence>
<xsd:element name="SheetName" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Sheets">
<xsd:sequence>
<xsd:element name="Sheet" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xs:choice>
<xs:element name="name" type="xs:string"/>
<xs:element name="name" type="xs:string" form="unqualified"/>
</xs:choice>
<xs:choice>
<xs:element name="value" type="xs:string"/>
<xs:element name="value" type="xs:string" form="unqualified"/>
</xs:choice>
<xs:choice>
<xs:element name="position" type="xs:string"/>
<xs:element name="position" type="xs:string" form="unqualified"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Attributes">
<xs:sequence>
<xs:element name="Attribute" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="type" minOccurs="0" maxOccurs="1" type="gnm:AttributeType"/><!-- must be 4 -->
<xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
<xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="AttributeType">
<xs:restriction base="xs:integer">
<xs:minInclusive value="4"/>
<xs:maxInclusive value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="SheetNameIndex">
<xs:sequence>
<xs:element name="SheetName" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Sheets">
<xs:sequence>
<xs:element name="Sheet" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<!-- name of the sheet -->
<xsd:element name="Name" type="xsd:string"/>
<xs:element name="Name" type="xs:string"/>
<!-- maximum column used -->
<xsd:element name="MaxCol" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
<xs:element name="MaxCol" type="xs:integer" minOccurs="0" maxOccurs="1"/>
<!-- maximum row used -->
<xsd:element name="MaxRow" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
<xs:element name="MaxRow" type="xs:integer" minOccurs="0" maxOccurs="1"/>
<!-- most recently used zoom factor -->
<xsd:element name="Zoom" type="xsd:double"/>
<xsd:element name="Names" type="gnm:Names" minOccurs="0" maxOccurs="1"/>
<xsd:element name="PrintInformation" type="gnm:PrintInformation"/>
<xsd:element name="Styles" type="gnm:Styles"/>
<xsd:element name="Cols">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ColInfo" type="gnm:Col_Row" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="DefaultSizePts" type="xsd:double" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Rows">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RowInfo" type="gnm:Col_Row" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="DefaultSizePts" type="xsd:double" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Selections" type="gnm:Selections"/>
<xsd:element name="Objects" type="gnm:Objects" minOccurs="0" maxOccurs="1"/>
<xsd:element name="Cells" type="gnm:Cells"/>
<xsd:element name="MergedRegions" type="gnm:MergedRegions" minOccurs="0" maxOccurs="1"/>
<xsd:element name="Filters" type="gnm:Filters" minOccurs="0" maxOccurs="1"/>
<xsd:element name="SheetLayout" type="gnm:SheetLayout"/>
<xsd:element name="SheetFormat" type="gnm:SheetLayout"/>
<xsd:element name="Solver" type="gnm:Solver"/>
<xsd:element name="Scenarios" type="gnm:Scenarios" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<!-- note: xsd:boolean values can be true, false, 1, 0;
<xs:element name="Zoom" type="xs:double"/>
<xs:element name="Names" type="gnm:Names" minOccurs="0" maxOccurs="1"/>
<xs:element name="PrintInformation" type="gnm:PrintInformation"/>
<xs:element name="Styles" type="gnm:Styles"/>
<xs:element name="Cols">
<xs:complexType>
<xs:sequence>
<xs:element name="ColInfo" type="gnm:Col_Row" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="DefaultSizePts" type="xs:double" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<xs:element name="Rows">
<xs:complexType>
<xs:sequence>
<xs:element name="RowInfo" type="gnm:Col_Row" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="DefaultSizePts" type="xs:double" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<xs:element name="Selections" type="gnm:Selections"/>
<xs:element name="Objects" type="gnm:Objects" minOccurs="0" maxOccurs="1"/>
<xs:element name="Cells" type="gnm:Cells"/>
<xs:element name="MergedRegions" type="gnm:MergedRegions" minOccurs="0" maxOccurs="1"/>
<xs:element name="SheetLayout" type="gnm:SheetLayout" minOccurs="0" maxOccurs="1"/>
<xs:element name="Filters" type="gnm:Filters" minOccurs="0" maxOccurs="1"/>
<xs:element name="Solver" type="gnm:Solver" minOccurs="0" maxOccurs="1"/>
<xs:element name="Scenarios" type="gnm:Scenarios" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<!-- note: xs:boolean values can be true, false, 1, 0;
gnumeric, in this element, always generates 'true' or
'false' for its attributes
-->
<xsd:attribute name="DisplayFormulas" type="xsd:boolean" use="optional" default="false"/>
<xsd:attribute name="HideZero" type="xsd:boolean" use="optional" default="false"/>
<xsd:attribute name="HideGrid" type="xsd:boolean" use="optional" default="false"/>
<xsd:attribute name="HideColHeader" type="xsd:boolean" use="optional" default="false"/>
<xsd:attribute name="HideRowHeader" type="xsd:boolean" use="optional" default="false"/>
<xsd:attribute name="DisplayOutlines" type="xsd:boolean" use="optional" default="true"/>
<xsd:attribute name="OutlineSymbolsBelow" type="xsd:boolean" use="optional" default="true"/>
<xsd:attribute name="OutlineSymbolsRight" type="xsd:boolean" use="optional" default="true"/>
<xsd:attribute name="RTL_Layout" type="xsd:boolean" use="optional" default="false"/>
<xsd:attribute name="Protected" type="xsd:boolean" use="optional" default="false"/>
<xsd:attribute name="TabColor" type="gnm:color" use="optional"/>
<xsd:attribute name="TabTextColor" type="gnm:color" use="optional"/>
<xsd:attribute name="ExprConvention" type="gnm:ExprConvention" use="optional" default="gnumeric:A1"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xs:attribute name="DisplayFormulas" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="HideZero" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="HideGrid" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="HideColHeader" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="HideRowHeader" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="DisplayOutlines" type="xs:boolean" use="optional" default="true"/>
<xs:attribute name="OutlineSymbolsBelow" type="xs:boolean" use="optional" default="true"/>
<xs:attribute name="OutlineSymbolsRight" type="xs:boolean" use="optional" default="true"/>
<xs:attribute name="Visibility" type="gnm:SheetVisibility" use="optional" default="GNM_SHEET_VISIBILITY_VISIBLE"/>
<xs:attribute name="RTL_Layout" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="Protected" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="TabColor" type="gnm:color" use="optional"/>
<xs:attribute name="TabTextColor" type="gnm:color" use="optional"/>
<xs:attribute name="ExprConvention" type="gnm:ExprConvention" use="optional" default="gnumeric:A1"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- How expressions are _displayed_ no impact on evaluation -->
<xsd:simpleType name="ExprConvention">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="gnumeric:A1"/>
<xsd:enumeration value="gnumeric:R1C1"/>
<xs:simpleType name="ExprConvention">
<xs:restriction base="xs:string">
<xs:enumeration value="gnumeric:A1"/>
<xs:enumeration value="gnumeric:R1C1"/>
<!-- future values, currently displayed as gnumeric:A1 -->
<xsd:enumeration value="ODF:A1"/>
<xsd:enumeration value="Lotus:A1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="PrintInformation">
<xsd:sequence>
<xsd:element name="Margins">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="top" type="gnm:margin"/>
<xsd:element name="bottom" type="gnm:margin"/>
<xsd:element name="left" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="right" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="header" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="footer" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Scale">
<xsd:complexType>
<xsd:attribute name="type" type="xsd:string" use="required"/>
<xsd:attribute name="percentage" type="xsd:double" use="optional"/>
<xsd:attribute name="cols" type="xsd:integer" />
<xsd:attribute name="rows" type="xsd:integer" />
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xs:enumeration value="ODF:A1"/>
<xs:enumeration value="Lotus:A1"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="PrintInformation">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Margins">
<xs:complexType>
<xs:sequence>
<xs:element name="top" type="gnm:margin"/>
<xs:element name="bottom" type="gnm:margin"/>
<xs:element name="left" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="right" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="header" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="footer" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Scale">
<xs:complexType>
<xs:attribute name="type" type="xs:string" use="required"/>
<xs:attribute name="percentage" type="xs:double" use="optional"/>
<xs:attribute name="cols" type="xs:integer" />
<xs:attribute name="rows" type="xs:integer" />
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- center vertically -->
<xsd:element name="vcenter">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:boolean" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xs:element name="vcenter">
<xs:complexType>
<xs:attribute name="value" type="xs:boolean" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- center horizontally -->
<xsd:element name="hcenter">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:boolean" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xs:element name="hcenter">
<xs:complexType>
<xs:attribute name="value" type="xs:boolean" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- print grid lines -->
<xsd:element name="grid">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:boolean" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xs:element name="grid">
<xs:complexType>
<xs:attribute name="value" type="xs:boolean" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- print even if only styles -->
<xsd:element name="even_if_only_styles">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:boolean" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xs:element name="even_if_only_styles">
<xs:complexType>
<xs:attribute name="value" type="xs:boolean" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- print in monochrome -->
<xsd:element name="monochrome">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:boolean" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xs:element name="monochrome">
<xs:complexType>
<xs:attribute name="value" type="xs:boolean" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- print in draft mode -->
<xsd:element name="draft">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:boolean" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xs:element name="draft">
<xs:complexType>
<xs:attribute name="value" type="xs:boolean" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- print titles -->
<xsd:element name="titles">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:boolean" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xs:element name="titles">
<xs:complexType>
<xs:attribute name="value" type="xs:boolean" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- repeat range -->
<xsd:element name="repeat_top" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:string" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xs:element name="repeat_top" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="value" type="xs:string" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<!-- repeat range -->
<xsd:element name="repeat_left" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:string" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="order" type="gnm:print_ordering"/>
<xsd:element name="orientation" type="gnm:print_orientation"/>
<xsd:element name="Header" type="gnm:HeaderFooter"/>
<xsd:element name="Footer" type="gnm:HeaderFooter"/>
<xs:element name="repeat_left" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="value" type="xs:string" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<xs:element name="order" type="gnm:print_ordering"/>
<xs:element name="orientation" type="gnm:print_orientation"/>
<xs:element name="Header" type="gnm:HeaderFooter"/>
<xs:element name="Footer" type="gnm:HeaderFooter"/>
<!-- typical values are A4, US-Letter -->
<xsd:element name="paper" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="paper" type="xs:string" minOccurs="0" maxOccurs="1"/>
<!-- do not print this sheet when "all" is selected in the job -->
<xsd:element name="do_not_print">
<xsd:complexType>
<xsd:attribute name="value" type="xsd:boolean" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="vPageBreaks" type="gnm:PageBreaks" minOccurs="0" maxOccurs="1"/><!-- between rows -->
<xsd:element name="hPageBreaks" type="gnm:PageBreaks" minOccurs="0" maxOccurs="1"/><!-- between cols -->
</xsd:sequence>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
<xsd:complexType name="HeaderFooter">
<xsd:attribute name="Left" type="xsd:string" use="required"/>
<xsd:attribute name="Middle" type="xsd:string" use="required"/>
<xsd:attribute name="Right" type="xsd:string" use="required"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
<xsd:complexType name="PageBreaks">
<xsd:sequence>
<xsd:element name="break" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="pos" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="type" type="gnm:PageBreakType" use="optional" default="auto"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="count" type="xsd:nonNegativeInteger" use="optional"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
<xsd:simpleType name="PageBreakType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="auto"/>
<xsd:enumeration value="manual"/>
<xsd:enumeration value="data-slice"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="margin">
<xsd:attribute name="Points" type="xsd:double"/>
<xsd:attribute name="PrefUnit" type="gnm:print_units"/>
<xsd:anyAttribute namespace="##other" processContents="lax"/>
</xsd:complexType>
<xs:element name="do_not_print" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="value" type="xs:boolean" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="vPageBreaks" type="gnm:PageBreaks" minOccurs="0" maxOccurs="1"/><!-- between rows -->
<xs:element name="hPageBreaks" type="gnm:PageBreaks" minOccurs="0" maxOccurs="1"/><!-- between cols -->
</xs:choice>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:complexType name="HeaderFooter">
<xs:attribute name="Left" type="xs:string" use="optional"/>
<xs:attribute name="Middle" type="xs:string" use="optional"/>
<xs:attribute name="Right" type="xs:string" use="optional"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:complexType name="PageBreaks">
<xs:sequence>
<xs:element name="break" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="pos" type="xs:nonNegativeInteger" use="required"/>
<xs:attribute name="type" type="gnm:PageBreakType" use="optional" default="auto"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="count" type="xs:nonNegativeInteger" use="optional"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:simpleType name="PageBreakType">
<xs:restriction base="xs:string">
<xs:enumeration value="auto"/>
<xs:enumeration value="manual"/>
<xs:enumeration value="data-slice"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="margin">
<xs:attribute name="Points" type="xs:double"/>
<xs:attribute name="PrefUnit" type="gnm:print_units"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xsd:simpleType name="print_units">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="mm"/>
<xsd:enumeration value="cm"/>
<xsd:enumeration value="in"/>
<xsd:enumeration value="Pt"/>
<xsd:enumeration value="Px"/>
<xsd:enumeration value="points"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="print_ordering">
<xsd:restriction base="xsd:string">
<xs:simpleType name="print_units">
<xs:restriction base="xs:string">
<xs:enumeration value="mm"/>
<xs:enumeration value="cm"/>
<xs:enumeration value="in"/>
<xs:enumeration value="Pt"/>
<xs:enumeration value="Px"/>
<xs:enumeration value="points"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="print_ordering">
<xs:restriction base="xs:string">
<!-- right, then down -->