summaryrefslogtreecommitdiffstats
path: root/misc/xml-tokens/gnumeric.xsd
diff options
context:
space:
mode:
Diffstat (limited to 'misc/xml-tokens/gnumeric.xsd')
-rwxr-xr-xmisc/xml-tokens/gnumeric.xsd1296
1 files changed, 1296 insertions, 0 deletions
diff --git a/misc/xml-tokens/gnumeric.xsd b/misc/xml-tokens/gnumeric.xsd
new file mode 100755
index 0000000..a2c79cf
--- /dev/null
+++ b/misc/xml-tokens/gnumeric.xsd
@@ -0,0 +1,1296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+
+ <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
+ Author: Marc Johnson (marc_johnson27591@hotmail.com)
+
+ updated for 1.4.2 in Feb 2005
+ updated for 1.6.0 in Sept 2005
+ 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
+ partially updated for 1.10.17 in July 2011 aguelzow@pyrshep.ca
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="Workbook" type="gnm:Workbook"/>
+
+ <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>
+
+ <xs:complexType name="Calculation">
+ <xs:attribute name="ManualRecalc" type="xs:boolean"/>
+ <xs:attribute name="EnableIteration" type="xs:boolean"/>
+ <xs:attribute name="MaxIterations" type="xs:nonNegativeInteger"/>
+ <xs:attribute name="FloatRadix" type="xs:positiveInteger"/>
+ <xs:attribute name="FloatDigits" 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:group name="WorkbookContentBlockA">
+ <xs:sequence>
+ <!-- ancient files lack this, modern files require it -->
+ <xs:element name="SheetNameIndex" type="gnm:SheetNameIndex" 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 -->
+ <xs:element name="DateConvention" type="xs:int" minOccurs="0" maxOccurs="1"/>
+
+ <!-- preferred height and width -->
+ <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? -->
+ <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:sequence>
+ </xs:group>
+
+ <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"/>
+
+ <xs:choice>
+ <xs:sequence>
+ <!-- In new files the Calculation element comes first, in old files last -->
+ <xs:element name="Calculation" type="gnm:Calculation" minOccurs="0" maxOccurs="1"/>
+ <xs:group ref="gnm:WorkbookContentBlockA"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:group ref="gnm:WorkbookContentBlockA"/>
+ <xs:element name="Calculation" type="gnm:Calculation" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:sequence>
+ <!-- version number should be v10 - - &gt;
+ <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 -->
+ <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 -->
+ <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.
+ -->
+ <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">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Cols" type="xs:positiveInteger" form="qualified"/>
+ <xs:attribute name="Rows" type="xs:positiveInteger" form="qualified"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </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 -->
+ <xs:element name="Name" type="xs:string"/>
+ <!-- maximum column used -->
+ <xs:element name="MaxCol" type="xs:integer" minOccurs="0" maxOccurs="1"/>
+ <!-- maximum row used -->
+ <xs:element name="MaxRow" type="xs:integer" minOccurs="0" maxOccurs="1"/>
+ <!-- most recently used zoom factor -->
+ <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
+ -->
+ <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="GridColor" 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 -->
+ <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 -->
+ <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 -->
+ <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 -->
+ <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 -->
+ <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 -->
+ <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 -->
+ <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 -->
+ <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 -->
+ <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 -->
+ <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 -->
+ <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 -->
+ <xs:element name="paper" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <!-- do not print this sheet when "all" is selected in the job -->
+ <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="print-to-uri" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <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:element name="print_range" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:attribute name="value" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:integer">
+ <xs:enumeration value="-1"/>
+ <!-- PRINT_SAVED_INFO -->
+ <xs:enumeration value="0"/>
+ <!-- PRINT_ACTIVE_SHEET -->
+ <xs:enumeration value="1"/>
+ <!-- PRINT_ALL_SHEETS -->
+ <xs:enumeration value="2"/>
+ <!-- PRINT_ALL_SHEETS_INCLUDING_HIDDEN -->
+ <xs:enumeration value="3"/>
+ <!-- PRINT_SHEET_RANGE -->
+ <xs:enumeration value="4"/>
+ <!-- PRINT_SHEET_SELECTION -->
+ <xs:enumeration value="5"/>
+ <!-- PRINT_IGNORE_PRINTAREA -->
+ <xs:enumeration value="6"/>
+ <!-- PRINT_SHEET_SELECTION_IGNORE_PRINTAREA -->
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </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>
+
+ <xs:simpleType name="print_units">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="mm"/>
+ <xs:enumeration value="millimeter"/>
+ <xs:enumeration value="cm"/>
+ <xs:enumeration value="centimeter"/>
+ <xs:enumeration value="in"/>
+ <xs:enumeration value="inch"/>
+ <xs:enumeration value="inches"/>
+ <xs:enumeration value="Pt"/>
+ <xs:enumeration value="Pts"/>
+ <xs:enumeration value="points"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="print_ordering">
+ <xs:restriction base="xs:string">
+ <!-- right, then down -->
+ <xs:enumeration value="r_then_d"/>
+ <!-- down, then right -->
+ <xs:enumeration value="d_then_r"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="print_orientation">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="landscape"/>
+ <xs:enumeration value="portrait"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="Styles">
+ <xs:sequence>
+ <xs:element name="StyleRegion" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Style" type="gnm:Style" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="startCol" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="startRow" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="endCol" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="endRow" type="xs:nonNegativeInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="Style">
+ <xs:sequence>
+ <xs:element name="Font" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:simpleContent>
+ <!-- Since these might be conditional styles, the atributes are
+ not required -->
+ <xs:extension base="xs:string">
+ <xs:attribute name="Unit" type="xs:double" use="optional"/>
+ <xs:attribute name="Bold" type="xs:boolean" use="optional"/>
+ <xs:attribute name="Italic" type="xs:boolean" use="optional"/>
+ <xs:attribute name="Underline" type="gnm:underline" use="optional"/>
+ <xs:attribute name="StrikeThrough" type="xs:boolean" use="optional"/>
+ <xs:attribute name="Script" type="gnm:script" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="HyperLink" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:attribute name="type" type="xs:string" use="required"/>
+ <xs:attribute name="target" type="xs:string" use="optional"/>
+ <xs:attribute name="tip" type="xs:string" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="StyleBorder" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="6">
+ <!-- The order of the last two elements appears to be
+ version dependent-->
+ <xs:element name="Top" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Bottom" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Left" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Right" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Diagonal" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Rev-Diagonal" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Validation" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Expression0" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Expression1" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="Style" type="xs:integer" use="required"/>
+ <xs:attribute name="Type" type="xs:integer" use="required"/>
+ <xs:attribute name="Operator" type="xs:integer" use="optional"/>
+ <xs:attribute name="AllowBlank" type="xs:boolean" use="optional"/>
+ <xs:attribute name="UseDropdown" type="xs:boolean" use="optional"/>
+ <xs:attribute name="Title" type="xs:string" use="optional"/>
+ <xs:attribute name="Message" type="xs:string" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="InputMessage" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:attribute name="Title" type="xs:string" use="optional"/>
+ <xs:attribute name="Message" type="xs:string" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Condition" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Expression0" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Expression1" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Style" type="gnm:Style" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="Operator" type="gnm:CondOp" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="HAlign" type="gnm:horizontal_alignment"/>
+ <xs:attribute name="VAlign" type="gnm:vertical_alignment"/>
+ <xs:attribute name="WrapText" type="xs:boolean" />
+
+ <!-- should be bool, but some files have odd truth values -->
+ <xs:attribute name="ShrinkToFit" type="xs:integer" />
+
+ <xs:attribute name="Rotation" type="xs:integer" use="optional"/>
+ <xs:attribute name="Orient" type="xs:integer" use="optional"/>
+ <xs:attribute name="Shade" type="gnm:Stipple" use="optional"/>
+ <xs:attribute name="Indent" type="xs:integer" use="optional"/>
+ <xs:attribute name="Locked" type="xs:boolean" use="optional"/>
+ <xs:attribute name="Hidden" type="xs:boolean" use="optional"/>
+ <xs:attribute name="Fore" type="gnm:color" use="optional"/>
+ <xs:attribute name="Back" type="gnm:color" use="optional"/>
+ <xs:attribute name="PatternColor" type="gnm:color" use="optional"/>
+ <xs:attribute name="Format" type="xs:string" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+
+ <xs:complexType name="StyleBorderElement">
+ <xs:attribute name="Style" type="gnm:border_style" use="required"/>
+ <!-- Color is present when Style is not 0 -->
+ <xs:attribute name="Color" type="gnm:color" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+
+ <xs:simpleType name="border_style">
+ <xs:restriction base="xs:integer">
+ <!-- 0 = NONE
+ 1 = THIN
+ 2 = MEDIUM
+ 3 = DASHED
+ 4 = DOTTED
+ 5 = THICK
+ 6 = DOUBLE
+ 7 = HAIR
+ 8 = MEDIUM_DASH
+ 9 = DASH_DOT
+ 10 = MEDIUM_DASH_DOT
+ 11 = DASH_DOT_DOT
+ 12 = MEDIUM_DASH_DOT_DOT
+ 13 = SLANTED_DASH_DOT
+ -->
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="13"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="underline">
+ <xs:restriction base="xs:integer">
+ <!-- 0 = NONE
+ 1 = SINGLE
+ 2 = DOUBLE
+ -->
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="script">
+ <xs:restriction base="xs:integer">
+ <!-- GO_FONT_SCRIPT_SUB = -1,
+ GO_FONT_SCRIPT_STANDARD = 0,
+ GO_FONT_SCRIPT_SUPER = 1
+ -->
+ <xs:minInclusive value="-1"/>
+ <xs:maxInclusive value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="horizontal_alignment">
+ <xs:restriction base="xs:integer">
+ <!-- this is a bit map as follows:
+ 1 = GENERAL
+ 2 = LEFT
+ 4 = RIGHT
+ 8 = CENTER
+ 16 = FILL
+ 32 = JUSTIFY
+ 64 = CENTER ACROSS SELECTION
+ 128 = DISTRIBUTED
+ -->
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="128"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="vertical_alignment">
+ <xs:restriction base="xs:integer">
+ <!-- this is a bit map as follows:
+ 1 = TOP
+ 2 = BOTTOM
+ 4 = CENTER
+ 8 = JUSTIFY
+ 16 = DISTRIBUTED
+ -->
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="16"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="Stipple">
+ <xs:restriction base="xs:integer">
+ <!-- the values are defined as follows:
+ 0 = NONE
+ 1 = Solid
+ 2 = 75%
+ 3 = 50%
+ 4 = 25%
+ 5 = 12.5%
+ 6 = 6.25%
+ 7 = Horizontal Stripe
+ 8 = Vertical Stripe
+ 9 = Reverse Diagonal Stripe
+ 10 = Diagonal Stripe
+ 11 = Diagonal Crosshatch
+ 12 = Thick Diagonal Crosshatch
+ 13 = Thin Horizontal Stripe
+ 14 = Thin Vertical Stripe
+ 15 = Thin Reverse Diagonal Stripe
+ 16 = Thin Diagonal Stripe
+ 17 = Thin Crosshatch
+ 18 = Thin Diagonal Crosshatch
+ 19 = Applix small circle
+ 20 = Applix semicircle
+ 21 = Applix small thatch
+ 22 = Applix round thatch
+ 23 = Applix Brick
+ 24 = 100%
+ 25 = 87.5%
+ -->
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="25"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="color">
+ <xs:restriction base="xs:string">
+ <!-- colors in hex, 16 bits red, green, then blue -->
+ <xs:pattern value="[0-9A-F]{1,4}:[0-9A-F]{1,4}:[0-9A-F]{1,4}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="Col_Row">
+ <!-- column/row number -->
+ <xs:attribute name="No" type="xs:nonNegativeInteger" use="required"/>
+ <!-- size in points -->
+ <xs:attribute name="Unit" type="xs:double" use="required"/>
+ <!-- DEPRECATED in 1.7.1 : top/left margin (no unit it does not scale) -->
+ <xs:attribute name="MarginA" type="gnm:col_row_margin" use="optional"/>
+ <!-- DEPRECATED in 1.7.1 : botton/right margin (no unit it does not scale) -->
+ <xs:attribute name="MarginB" type="gnm:col_row_margin" use="optional"/>
+ <!-- true if size is explicitly set -->
+ <xs:attribute name="HardSize" type="xs:boolean" use="optional" default="0"/>
+ <xs:attribute name="Hidden" type="xs:boolean" use="optional" default="0"/>
+ <xs:attribute name="Collapsed" type="xs:boolean" use="optional" default="0"/>
+ <xs:attribute name="OutlineLevel" type="xs:integer" use="optional" default="0"/>
+ <!-- The number of consequitive identically sized cols/rows -->
+ <xs:attribute name="Count" type="xs:integer" use="optional" default="1"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+
+ <xs:simpleType name="col_row_margin">
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="7"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="Selections">
+ <xs:sequence>
+ <xs:element name="Selection" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="startCol" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="startRow" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="endCol" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="endRow" type="xs:nonNegativeInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="CursorCol" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="CursorRow" type="xs:nonNegativeInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+
+ <xs:attributeGroup name="ObjectAnchor">
+ <xs:attribute name="ObjectBound" type="xs:string" use="required"/>
+ <xs:attribute name="ObjectOffset" type="gnm:offsets" use="required"/>
+ <xs:attribute name="ObjectAnchorType" type="gnm:anchor_type" use="optional"/>
+ <xs:attribute name="Direction" type="gnm:direction" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="ObjectProperties">
+ <xs:attribute name="Print" type="xs:boolean" use="optional"/>
+ <xs:attribute name="Name" type="xs:string" use="optional"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="ObjectAdjustmentProps">
+ <xs:attribute name="Min" type="xs:double" use="required"/>
+ <xs:attribute name="Max" type="xs:double" use="required"/>
+ <xs:attribute name="Inc" type="xs:double" use="required"/>
+ <xs:attribute name="Page" type="xs:double" use="required"/>
+ <xs:attribute name="Value" type="xs:double" use="required"/>
+ <xs:attribute name="Input" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:attributeGroup>
+
+ <xs:complexType name="Objects">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="CellComment">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:attribute name="Author" type="xs:string" use="optional"/>
+ <xs:attribute name="Text" type="xs:string" use="required"/>
+ <xs:attribute name="TextFormat" type="xs:string" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetObjectFilled">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:any namespace="##local" processContents="lax"/>
+ </xs:choice>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:attribute name="OutlineColor" type="gnm:color" use="required"/>
+ <xs:attribute name="FillColor" type="gnm:color" use="required"/>
+ <xs:attribute name="Type" type="gnm:objectfilled" use="required"/>
+ <xs:attribute name="Width" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="Label" type="xs:string" use="optional"/>
+ <xs:attribute name="LabelFormat" type="xs:string" use="optional"/>
+
+ <!-- the arrow shape attributes are only used if the type is
+ arrow (type="gnm:2")
+ -->
+ <xs:attribute name="ArrowShapeA" type="xs:double" use="optional"/>
+ <xs:attribute name="ArrowShapeB" type="xs:double" use="optional"/>
+ <xs:attribute name="ArrowShapeC" type="xs:double" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- widgets -->
+ <xs:element name="SheetWidgetButton">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:attribute name="Label" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:integer" />
+ <xs:attribute name="Input" type="xs:string" />
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetWidgetCheckbox">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:attribute name="Label" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:integer" use="required"/>
+ <xs:attribute name="Input" type="xs:string" />
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetWidgetToggleButton" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:attribute name="Label" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:integer" use="required"/>
+ <xs:attribute name="Input" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="SheetWidgetScrollbar">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectAdjustmentProps"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetWidgetSpinbutton">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectAdjustmentProps"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetWidgetSlider" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectAdjustmentProps"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="SheetObjectImage">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Content" form="unqualified">
+ <xs:complexType mixed="true">
+ <xs:attribute name="image-type" type="xs:string" use="required"/>
+ <xs:attribute name="size-bytes" type="xs:int" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:attribute name="crop-top" type="xs:double" use="required"/>
+ <xs:attribute name="crop-bottom" type="xs:double" use="required"/>
+ <xs:attribute name="crop-left" type="xs:double" use="required"/>
+ <xs:attribute name="crop-right" type="xs:double" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetObjectGraph">
+ <xs:complexType>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="GogObject" type="gnm:GogObject"/>
+ <xs:element name="GogObject" type="gnm:GogObject" form="unqualified"/>
+ </xs:choice>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetWidgetFrame">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetWidgetLabel">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetWidgetList">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:attribute name="Content" type="xs:string" use="required"/>
+ <xs:attribute name="Output" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SheetWidgetCombo">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ <xs:attributeGroup ref="gnm:ObjectProperties"/>
+ <xs:attribute name="Content" type="xs:string" use="required"/>
+ <xs:attribute name="Output" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- no longer supported -->
+ <xs:element name="SheetObjectBonobo">
+ <xs:complexType>
+ <xs:attributeGroup ref="gnm:ObjectAnchor"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:complexType>
+
+ <xs:complexType name="GogObject">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="property" type="gnm:GogProperty"/>
+ <xs:element name="property" type="gnm:GogProperty" form="unqualified"/>
+ <xs:element name="data" type="gnm:GOData"/>
+ <xs:element name="data" type="gnm:GOData" form="unqualified"/>
+ <xs:element name="GogObject" type="gnm:GogObject"/>
+ <xs:element name="GogObject" type="gnm:GogObject" form="unqualified"/>
+ </xs:choice>
+ <xs:attribute name="type" type="xs:string" use="optional"/>
+ <xs:attribute name="role" type="xs:string" use="optional"/>
+ </xs:complexType>
+
+ <xs:complexType name="GogProperty" mixed="true">
+ <xs:sequence>
+ <!-- children are unstructured -->
+ <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="type" type="xs:string" use="optional"/>
+ </xs:complexType>
+
+ <xs:complexType name="GOData">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="dimension" type="gnm:GODimension"/>
+ <xs:element name="dimension" type="gnm:GODimension" form="unqualified"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="GODimension">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="id" type="xs:integer" use="required"/>
+ <xs:attribute name="type" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:simpleType name="offsets">
+ <xs:restriction base="xs:string">
+ <!-- if this seems hard to read, it purportedly describes 4
+ space-separated doubles
+ -->
+ <xs:pattern value="[+\-]?\d+(.\d+)?([Ee]([+\-])?\d+)? [+\-]?\d+(.\d+)?([Ee]([+\-])?\d+)? [+\-]?\d+(.\d+)?([Ee]([+\-])?\d+)? [+\-]?\d+(.\d+)?([Ee]([+\-])?\d+)?"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- As of 1.7.7 this is deprecated -->
+ <xs:simpleType name="anchor_type">
+ <xs:restriction base="xs:string">
+ <!-- if this seems hard to read, it purportedly describes 4
+ space-separated positive numbers
+
+ each number needs to be one of the following:
+ 0 = UNKNOWN
+ 16 = PERCENTAGE_FROM_COLROW_START
+ 32 = PTS_FROM_COLROW_START
+ 33 = PTS_FROM_COLROW_END
+ 48 = PTS_ABSOLUTE
+ -->
+ <xs:pattern value="\d+ \d+ \d+ \d+"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="direction">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="-1"/>
+ <!-- unknown -->
+ <xs:enumeration value="0"/>
+ <!-- up right -->
+ <xs:enumeration value="1"/>
+ <!-- up left -->
+ <xs:enumeration value="16"/>
+ <!-- down right -->
+ <xs:enumeration value="17"/>
+ <!-- down left -->
+ <xs:enumeration value="255"/>
+ <!-- unknown -->
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="objectfilled">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1"/>
+ <!-- line -->
+ <xs:enumeration value="2"/>
+ <!-- arrow -->
+ <xs:enumeration value="101"/>
+ <!-- box -->
+ <xs:enumeration value="102"/>
+ <!-- oval -->
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="Cells">
+ <xs:sequence>
+ <xs:element name="Cell" minOccurs="0" maxOccurs="unbounded">
+ <!-- expressions are stored as entered, with a leading '='.
+ Once a shared expression has been defined, subsequent
+ Cell elements using that same shared expression simply
+ use the "ExprID" attribute to indicate which shared
+ expression is used, and no Content element is included
+ -->
+ <xs:complexType mixed="true">
+ <!-- Compatibility for ancient 0.x format -->
+ <xs:sequence>
+ <xs:element name="Content" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+
+ <!-- Col and Row are sufficient for a cell that is an element of
+ an array of cells as long as it's not the top left cell -->
+ <xs:attribute name="Col" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="Row" type="xs:nonNegativeInteger" use="required"/>
+ <!-- ExprID is only used to refer to a shared expression -->
+ <xs:attribute name="ExprID" type="xs:nonNegativeInteger" use="optional"/>
+ <!-- ValueType is not used if the cell contains an expression -->
+ <xs:attribute name="ValueType" type="gnm:ValueType" use="optional"/>
+ <!-- ValueFormat is apparently used only for cell-by-cell format overrides -->
+ <xs:attribute name="ValueFormat" type="xs:string" use="optional"/>
+ <!-- Cols and Rows are used to define an array of cells -->
+ <xs:attribute name="Cols" type="xs:positiveInteger" use="optional"/>
+ <xs:attribute name="Rows" type="xs:positiveInteger" use="optional"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:simpleType name="ValueType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="10"/>
+ <!-- empty -->
+ <xs:enumeration value="20"/>
+ <!-- boolean -->
+ <xs:enumeration value="30"/>
+ <!-- integer -->
+ <xs:enumeration value="40"/>
+ <!-- float -->
+ <xs:enumeration value="50"/>
+ <!-- error -->
+ <xs:enumeration value="60"/>
+ <!-- string -->
+ <xs:enumeration value="70"/>
+ <!-- cellrange -->
+ <xs:enumeration value="80"/>
+ <!-- array -->
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="CondOp">
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <!-- GNM_STYLE_COND_BETWEEN -->
+ <xs:enumeration value="1"/>
+ <!-- GNM_STYLE_COND_NOT_BETWEEN -->
+ <xs:enumeration value="2"/>
+ <!-- GNM_STYLE_COND_EQUAL -->
+ <xs:enumeration value="3"/>
+ <!-- GNM_STYLE_COND_NOT_EQUAL -->
+ <xs:enumeration value="4"/>
+ <!-- GNM_STYLE_COND_GT -->
+ <xs:enumeration value="5"/>
+ <!-- GNM_STYLE_COND_LT -->
+ <xs:enumeration value="6"/>
+ <!-- GNM_STYLE_COND_GTE -->
+ <xs:enumeration value="7"/>
+ <!-- GNM_STYLE_COND_LTE -->
+
+ <!-- Arbitrary expr evaluated at EvalPos -->
+ <xs:enumeration value="8"/>
+ <!-- GNM_STYLE_COND_CUSTOM -->
+
+ <!-- New in Gnumeric 1.8 -->
+ <xs:enumeration value="16"/>
+ <!-- GNM_STYLE_COND_CONTAINS_STR -->
+ <xs:enumeration value="17"/>
+ <!-- GNM_STYLE_COND_NOT_CONTAINS_STR -->
+ <xs:enumeration value="18"/>
+ <!-- GNM_STYLE_COND_BEGINS_WITH_STR -->
+ <xs:enumeration value="19"/>
+ <!-- GNM_STYLE_COND_NOT_BEGINS_WITH_STR -->
+ <xs:enumeration value="20"/>
+ <!-- GNM_STYLE_COND_ENDS_WITH_STR -->
+ <xs:enumeration value="21"/>
+ <!-- GNM_STYLE_COND_NOT_ENDS_WITH_STR -->
+
+ <xs:enumeration value="22"/>
+ <!-- GNM_STYLE_COND_CONTAINS_ERR -->
+ <xs:enumeration value="23"/>
+ <!-- GNM_STYLE_COND_NOT_CONTAINS_ERR -->
+
+ <xs:enumeration value="24"/>
+ <!-- GNM_STYLE_COND_CONTAINS_BLANKS -->
+ <xs:enumeration value="25"/>
+ <!-- GNM_STYLE_COND_NOT_CONTAINS_BLANK -->
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FilterFieldType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="expr"/>
+ <xs:enumeration value="blanks"/>
+ <xs:enumeration value="nonblanks"/>
+ <xs:enumeration value="bucket"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FilterFieldOp">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="eq"/>
+ <xs:enumeration value="gt"/>
+ <xs:enumeration value="lt"/>
+ <xs:enumeration value="gte"/>
+ <xs:enumeration value="lte"/>
+ <xs:enumeration value="ne"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="FilterField">
+ <xs:attribute name="Index" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="Type" type="gnm:FilterFieldType" use="required"/>
+
+ <!-- WARNING WARNING WARNING
+ Value and ValueType have their senses
+ reversed due to an old typo -->
+ <!-- Only valid for Type=expr -->
+ <xs:attribute name="Value0" type="gnm:ValueType" use="optional"/>
+ <xs:attribute name="ValueType0" type="xs:string" use="optional"/>
+ <xs:attribute name="Op0" type="gnm:FilterFieldOp" use="optional"/>
+ <xs:attribute name="Value1" type="gnm:ValueType" use="optional"/>
+ <xs:attribute name="ValueType1" type="xs:string" use="optional"/>
+ <xs:attribute name="Op1" type="gnm:FilterFieldOp" use="optional"/>
+
+ <!-- Only valid for Type=bucket -->
+ <xs:attribute name="top" type="xs:boolean" use="optional"/>
+ <!-- top vs bottom -->
+ <xs:attribute name="items" type="xs:boolean" use="optional"/>
+ <!-- top n vs top n% -->
+ <xs:attribute name="count" type="xs:double" use="optional"/>
+ <!-- top COUNT -->
+
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+
+ <xs:complexType name="Filters">
+ <xs:sequence>
+ <xs:element name="Filter" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Field" type="gnm:FilterField" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Area" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="MergedRegions">
+ <xs:sequence>
+ <xs:element name="Merge" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+
+ <xs:complexType name="Solver">
+ <xs:sequence>
+ <xs:element name="Constr" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="Lcol" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="Lrow" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="Rcol" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="Rrow" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="Cols" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="Rows" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="Type" type="gnm:solver_constraint_t" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="TargetCol" type="xs:integer" use="optional"/>
+ <xs:attribute name="TargetRow" type="xs:integer" use="optional"/>
+ <xs:attribute name="ProblemType" type="gnm:solver_problem_t" use="required"/>
+ <xs:attribute name="ModelType" type="gnm:model_type_t"/>
+ <xs:attribute name="Inputs" type="xs:string"/>
+ <xs:attribute name="MaxTime" type="xs:integer" use="required"/>
+ <xs:attribute name="MaxIter" type="xs:integer" use="required"/>
+ <xs:attribute name="NonNeg" type="xs:boolean" use="required"/>
+ <xs:attribute name="Discr" type="xs:boolean" use="required"/>
+ <xs:attribute name="AutoScale" type="xs:boolean" use="required"/>
+ <xs:attribute name="ShowIter" type="xs:boolean"/>
+ <xs:attribute name="AnswerR" type="xs:boolean"/>
+ <xs:attribute name="SensitivityR" type="xs:boolean"/>
+ <xs:attribute name="LimitsR" type="xs:boolean"/>
+ <xs:attribute name="PerformR" type="xs:boolean"/>
+ <xs:attribute name="ProgramR" type="xs:boolean" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+
+ <xs:simpleType name="solver_constraint_t">
+ <xs:restriction base="xs:integer">
+ <xs:enumeration value="0" />
+ <!-- none -->
+ <xs:enumeration value="1" />
+ <!-- &lt;= -->
+ <xs:enumeration value="2" />
+ <!-- &gt;= -->
+ <xs:enumeration value="4" />
+ <!-- = -->
+ <xs:enumeration value="8" />
+ <!-- Int -->
+ <xs:enumeration value="16"/>
+ <!-- boolean -->
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="solver_problem_t">
+ <xs:restriction base="xs:integer">
+ <xs:enumeration value="0" />
+ <!-- SolverMinimize -->
+ <xs:enumeration value="1" />
+ <!-- SolverMaximize -->
+ <xs:enumeration value="2" />
+ <!-- SolverEqualTo -->
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="model_type_t">
+ <xs:restriction base="xs:integer">
+ <xs:enumeration value="0" />
+ <!-- GNM_SOLVER_LP -->
+ <xs:enumeration value="1" />
+ <!-- GNM_SOLVER_QP -->
+ <xs:enumeration value="2" />
+ <!-- GNM_SOLVER_NLP -->
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="SheetVisibility">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="GNM_SHEET_VISIBILITY_VISIBLE"/>
+ <xs:enumeration value="GNM_SHEET_VISIBILITY_HIDDEN"/>
+ <xs:enumeration value="GNM_SHEET_VISIBILITY_VERY_HIDDEN"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="Scenarios">
+ <xs:sequence>
+ <xs:element name="Scenario" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element name="Comment" type="xs:string"/>
+ <xs:element name="CellsStr" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SheetLayout">
+ <xs:sequence>
+ <xs:element name="FreezePanes" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:attribute name="FrozenTopLeft" type="xs:string" use="required"/>
+ <xs:attribute name="UnfrozenTopLeft" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="TopLeft" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+</xs:schema>