Introspection: fix problems with boxed type.
[gnumeric.git] / gnumeric.xsd
blob4ee7173cc6a4a7cedebcc484070eee1b164a31ad
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3 xmlns:gnm="http://www.gnumeric.org/v10.dtd"
4 xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
5 targetNamespace="http://www.gnumeric.org/v10.dtd"
6 elementFormDefault="qualified"
7 attributeFormDefault="unqualified">
9 <xs:annotation>
10 <xs:documentation xml:lang="en">
11 Schema for gnumeric spreadsheet documents
12 Created for Gnumeric 1.2.2,
13 Based on gnumeric source code and sample gnumeric documents
14 Author: Marc Johnson (marc_johnson27591@hotmail.com)
16 updated for 1.4.2 in Feb 2005
17 updated for 1.6.0 in Sept 2005
18 updated for 1.7.1 in Jun 2006
19 updated for 1.7.11 in Jun 2007 jody@gnome.org
20 updated for 1.7.91 in Nov 2007 jody@gnome.org
21 partially updated for 1.10.17 in July 2011 aguelzow@pyrshep.ca
22 partially updated for 1.12.13 in March 2014 terra@gnome.org
23 updated for 1.12.21 in Feb 2015 terra@gnome.org
24 </xs:documentation>
25 </xs:annotation>
27 <xs:element name="Workbook" type="gnm:Workbook"/>
29 <xs:complexType name="Version">
30 <xs:attribute name="Epoch" type="xs:nonNegativeInteger" use="required"/>
31 <xs:attribute name="Major" type="xs:nonNegativeInteger" use="required"/>
32 <xs:attribute name="Minor" type="xs:nonNegativeInteger" use="required"/>
33 <xs:attribute name="Full" type="xs:string" use="required"/>
34 <xs:anyAttribute namespace="##other" processContents="lax"/>
35 </xs:complexType>
37 <xs:complexType name="Calculation">
38 <xs:attribute name="ManualRecalc" type="xs:boolean"/>
39 <xs:attribute name="EnableIteration" type="xs:boolean"/>
40 <xs:attribute name="MaxIterations" type="xs:nonNegativeInteger"/>
41 <xs:attribute name="FloatRadix" type="xs:positiveInteger"/>
42 <xs:attribute name="FloatDigits" type="xs:nonNegativeInteger"/>
43 <xs:attribute name="IterationTolerance" type="xs:double"/>
44 <xs:attribute name="DateConvention" type="gnm:DateConvention" use="optional" default="Lotus:1900"/>
45 <xs:anyAttribute namespace="##other" processContents="lax"/>
46 </xs:complexType>
48 <xs:group name="WorkbookContentBlockA">
49 <xs:sequence>
50 <!-- ancient files lack this, modern files require it -->
51 <xs:element name="SheetNameIndex" type="gnm:SheetNameIndex" minOccurs="0" maxOccurs="1"/>
53 <xs:element name="Names" type="gnm:Names" minOccurs="0" maxOccurs="1"/>
55 <!-- Deprecated, moved to Calculation and expanded in 1.7.11
56 Valid value == 1904, anything else == Lotus:1900 -->
57 <xs:element name="DateConvention" type="xs:int" minOccurs="0" maxOccurs="1"/>
59 <!-- preferred height and width -->
60 <xs:element name="Geometry" minOccurs="0" maxOccurs="1">
61 <xs:complexType>
62 <xs:attribute name="Width" type="xs:nonNegativeInteger" use="optional"/>
63 <xs:attribute name="Height" type="xs:nonNegativeInteger" use="optional"/>
64 <xs:anyAttribute namespace="##other" processContents="lax"/>
65 </xs:complexType>
66 </xs:element>
67 <xs:element name="Sheets" type="gnm:Sheets"/>
68 <!-- which sheet was selected when the spreadsheet was saved? -->
69 <xs:element name="UIData">
70 <xs:complexType>
71 <xs:attribute name="SelectedTab" type="xs:nonNegativeInteger" use="required"/>
72 <xs:anyAttribute namespace="##other" processContents="lax"/>
73 </xs:complexType>
74 </xs:element>
75 <xs:element name="GODoc" form="unqualified" minOccurs="0">
76 </xs:element>
77 </xs:sequence>
78 </xs:group>
80 <xs:complexType name="Workbook">
81 <xs:sequence>
82 <xs:element name="Version" type="gnm:Version" minOccurs="0" maxOccurs="1"/>
83 <xs:element name="Attributes" type="gnm:Attributes"/>
85 <!-- ignore office:document-meta -->
86 <xs:any minOccurs="0" maxOccurs="unbounded"
87 namespace="##other" processContents="lax"/>
89 <xs:choice>
90 <xs:sequence> <!-- In new files the Calculation element comes first, in old files last -->
91 <xs:element name="Calculation" type="gnm:Calculation" minOccurs="0" maxOccurs="1"/>
92 <xs:group ref="gnm:WorkbookContentBlockA"/>
93 </xs:sequence>
94 <xs:sequence>
95 <xs:group ref="gnm:WorkbookContentBlockA"/>
96 <xs:element name="Calculation" type="gnm:Calculation" minOccurs="0" maxOccurs="1"/>
97 </xs:sequence>
98 </xs:choice>
99 </xs:sequence>
100 <!-- version number should be v10 - - &gt;
101 <xs:attribute name="gnm" type="gnm:namespace" use="required"/> -->
102 <xs:anyAttribute namespace="##other" processContents="lax"/>
103 </xs:complexType>
105 <!-- How values are mapped to dates. All date functions are affected -->
106 <xs:simpleType name="DateConvention">
107 <xs:restriction base="xs:string">
108 <xs:enumeration value="Lotus:1900"/>
109 <xs:enumeration value="Apple:1904"/>
111 <!-- future values. currently treated as Lotus:1900 -->
112 <xs:enumeration value="ODF:1899"/>
113 </xs:restriction>
114 </xs:simpleType>
116 <xs:simpleType name="CellRef">
117 <xs:restriction base="xs:string">
118 <xs:pattern value="$?[A-Z]+$?\d+"/>
119 </xs:restriction>
120 </xs:simpleType>
122 <xs:complexType name="Names">
123 <xs:sequence>
124 <xs:element name="Name" minOccurs="0" maxOccurs="unbounded">
125 <xs:complexType>
126 <xs:sequence>
127 <!-- an oversight in the sax exporter (fixed in 1.4.3)
128 leaves off the namespace. Handle both formats.
130 <xs:choice>
131 <xs:element name="name" type="xs:string"/>
132 <xs:element name="name" type="xs:string" form="unqualified"/>
133 </xs:choice>
134 <xs:choice>
135 <xs:element name="value" type="xs:string"/>
136 <xs:element name="value" type="xs:string" form="unqualified"/>
137 </xs:choice>
138 <xs:choice>
139 <xs:element name="position" type="xs:string"/>
140 <xs:element name="position" type="xs:string" form="unqualified"/>
141 </xs:choice>
142 </xs:sequence>
143 </xs:complexType>
144 </xs:element>
145 </xs:sequence>
146 </xs:complexType>
148 <xs:complexType name="Attributes">
149 <xs:sequence>
150 <xs:element name="Attribute" minOccurs="0" maxOccurs="unbounded">
151 <xs:complexType>
152 <xs:sequence>
153 <xs:element name="type" minOccurs="0" maxOccurs="1" type="gnm:AttributeType"/><!-- must be 4 -->
154 <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"/>
155 <xs:element name="value" minOccurs="1" maxOccurs="1" type="xs:string"/>
156 </xs:sequence>
157 </xs:complexType>
158 </xs:element>
159 </xs:sequence>
160 </xs:complexType>
161 <xs:simpleType name="AttributeType">
162 <xs:restriction base="xs:integer">
163 <xs:minInclusive value="4"/>
164 <xs:maxInclusive value="4"/>
165 </xs:restriction>
166 </xs:simpleType>
168 <xs:complexType name="SheetNameIndex">
169 <xs:sequence>
170 <xs:element name="SheetName" minOccurs="0" maxOccurs="unbounded">
171 <xs:complexType>
172 <xs:simpleContent>
173 <xs:extension base="xs:string">
174 <xs:attribute name="Cols" type="xs:positiveInteger" form="qualified"/>
175 <xs:attribute name="Rows" type="xs:positiveInteger" form="qualified"/>
176 </xs:extension>
177 </xs:simpleContent>
178 </xs:complexType>
179 </xs:element>
180 </xs:sequence>
181 </xs:complexType>
183 <xs:complexType name="Sheets">
184 <xs:sequence>
185 <xs:element name="Sheet" minOccurs="0" maxOccurs="unbounded">
186 <xs:complexType>
187 <xs:sequence>
188 <!-- name of the sheet -->
189 <xs:element name="Name" type="xs:string"/>
190 <!-- maximum column used -->
191 <xs:element name="MaxCol" type="xs:integer" minOccurs="0" maxOccurs="1"/>
192 <!-- maximum row used -->
193 <xs:element name="MaxRow" type="xs:integer" minOccurs="0" maxOccurs="1"/>
194 <!-- most recently used zoom factor -->
195 <xs:element name="Zoom" type="xs:double"/>
196 <xs:element name="Names" type="gnm:Names" minOccurs="0" maxOccurs="1"/>
197 <xs:element name="PrintInformation" type="gnm:PrintInformation"/>
198 <xs:element name="Styles" type="gnm:Styles"/>
199 <xs:element name="Cols">
200 <xs:complexType>
201 <xs:sequence>
202 <xs:element name="ColInfo" type="gnm:Col_Row" minOccurs="0" maxOccurs="unbounded"/>
203 </xs:sequence>
204 <xs:attribute name="DefaultSizePts" type="xs:double" use="required"/>
205 <xs:anyAttribute namespace="##other" processContents="lax"/>
206 </xs:complexType>
207 </xs:element>
208 <xs:element name="Rows">
209 <xs:complexType>
210 <xs:sequence>
211 <xs:element name="RowInfo" type="gnm:Col_Row" minOccurs="0" maxOccurs="unbounded"/>
212 </xs:sequence>
213 <xs:attribute name="DefaultSizePts" type="xs:double" use="required"/>
214 <xs:anyAttribute namespace="##other" processContents="lax"/>
215 </xs:complexType>
216 </xs:element>
217 <xs:element name="Selections" type="gnm:Selections"/>
218 <xs:element name="Objects" type="gnm:Objects" minOccurs="0" maxOccurs="1"/>
219 <xs:element name="Cells" type="gnm:Cells"/>
220 <xs:element name="MergedRegions" type="gnm:MergedRegions" minOccurs="0" maxOccurs="1"/>
221 <xs:element name="SheetLayout" type="gnm:SheetLayout" minOccurs="0" maxOccurs="1"/>
222 <xs:element name="Filters" type="gnm:Filters" minOccurs="0" maxOccurs="1"/>
223 <xs:element name="Solver" type="gnm:Solver" minOccurs="0" maxOccurs="1"/>
224 <xs:element name="Scenarios" type="gnm:Scenarios" minOccurs="0" maxOccurs="1"/>
225 </xs:sequence>
226 <!-- note: xs:boolean values can be true, false, 1, 0;
227 gnumeric, in this element, always generates 'true' or
228 'false' for its attributes
230 <xs:attribute name="DisplayFormulas" type="xs:boolean" use="optional" default="false"/>
231 <xs:attribute name="HideZero" type="xs:boolean" use="optional" default="false"/>
232 <xs:attribute name="HideGrid" type="xs:boolean" use="optional" default="false"/>
233 <xs:attribute name="HideColHeader" type="xs:boolean" use="optional" default="false"/>
234 <xs:attribute name="HideRowHeader" type="xs:boolean" use="optional" default="false"/>
235 <xs:attribute name="DisplayOutlines" type="xs:boolean" use="optional" default="true"/>
236 <xs:attribute name="OutlineSymbolsBelow" type="xs:boolean" use="optional" default="true"/>
237 <xs:attribute name="OutlineSymbolsRight" type="xs:boolean" use="optional" default="true"/>
238 <xs:attribute name="Visibility" type="gnm:SheetVisibility" use="optional" default="GNM_SHEET_VISIBILITY_VISIBLE"/>
239 <xs:attribute name="RTL_Layout" type="xs:boolean" use="optional" default="false"/>
240 <xs:attribute name="Protected" type="xs:boolean" use="optional" default="false"/>
241 <xs:attribute name="TabColor" type="gnm:color" use="optional"/>
242 <xs:attribute name="TabTextColor" type="gnm:color" use="optional"/>
243 <xs:attribute name="GridColor" type="gnm:color" use="optional"/>
244 <xs:attribute name="ExprConvention" type="gnm:ExprConvention" use="optional" default="gnumeric:A1"/>
245 <xs:anyAttribute namespace="##other" processContents="lax"/>
246 </xs:complexType>
247 </xs:element>
248 </xs:sequence>
249 </xs:complexType>
251 <!-- How expressions are _displayed_ no impact on evaluation -->
252 <xs:simpleType name="ExprConvention">
253 <xs:restriction base="xs:string">
254 <xs:enumeration value="gnumeric:A1"/>
255 <xs:enumeration value="gnumeric:R1C1"/>
257 <!-- future values, currently displayed as gnumeric:A1 -->
258 <xs:enumeration value="ODF:A1"/>
259 <xs:enumeration value="Lotus:A1"/>
260 </xs:restriction>
261 </xs:simpleType>
263 <xs:complexType name="PrintInformation">
264 <xs:choice minOccurs="0" maxOccurs="unbounded">
265 <xs:element name="Margins">
266 <xs:complexType>
267 <xs:sequence>
268 <xs:element name="top" type="gnm:margin"/>
269 <xs:element name="bottom" type="gnm:margin"/>
270 <xs:element name="left" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
271 <xs:element name="right" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
272 <xs:element name="header" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
273 <xs:element name="footer" type="gnm:margin" minOccurs="0" maxOccurs="unbounded"/>
274 </xs:sequence>
275 </xs:complexType>
276 </xs:element>
277 <xs:element name="Scale">
278 <xs:complexType>
279 <xs:attribute name="type" type="xs:string" use="required"/>
280 <xs:attribute name="percentage" type="xs:double" use="optional"/>
281 <xs:attribute name="cols" type="xs:integer" />
282 <xs:attribute name="rows" type="xs:integer" />
283 <xs:anyAttribute namespace="##other" processContents="lax"/>
284 </xs:complexType>
285 </xs:element>
286 <!-- center vertically -->
287 <xs:element name="vcenter">
288 <xs:complexType>
289 <xs:attribute name="value" type="xs:boolean" use="required"/>
290 <xs:anyAttribute namespace="##other" processContents="lax"/>
291 </xs:complexType>
292 </xs:element>
293 <!-- center horizontally -->
294 <xs:element name="hcenter">
295 <xs:complexType>
296 <xs:attribute name="value" type="xs:boolean" use="required"/>
297 <xs:anyAttribute namespace="##other" processContents="lax"/>
298 </xs:complexType>
299 </xs:element>
300 <!-- print grid lines -->
301 <xs:element name="grid">
302 <xs:complexType>
303 <xs:attribute name="value" type="xs:boolean" use="required"/>
304 <xs:anyAttribute namespace="##other" processContents="lax"/>
305 </xs:complexType>
306 </xs:element>
307 <!-- print even if only styles -->
308 <xs:element name="even_if_only_styles">
309 <xs:complexType>
310 <xs:attribute name="value" type="xs:boolean" use="required"/>
311 <xs:anyAttribute namespace="##other" processContents="lax"/>
312 </xs:complexType>
313 </xs:element>
314 <!-- print in monochrome -->
315 <xs:element name="monochrome">
316 <xs:complexType>
317 <xs:attribute name="value" type="xs:boolean" use="required"/>
318 <xs:anyAttribute namespace="##other" processContents="lax"/>
319 </xs:complexType>
320 </xs:element>
321 <!-- print in draft mode -->
322 <xs:element name="draft">
323 <xs:complexType>
324 <xs:attribute name="value" type="xs:boolean" use="required"/>
325 <xs:anyAttribute namespace="##other" processContents="lax"/>
326 </xs:complexType>
327 </xs:element>
328 <!-- print titles -->
329 <xs:element name="titles">
330 <xs:complexType>
331 <xs:attribute name="value" type="xs:boolean" use="required"/>
332 <xs:anyAttribute namespace="##other" processContents="lax"/>
333 </xs:complexType>
334 </xs:element>
336 <!-- repeat range -->
337 <xs:element name="repeat_top" minOccurs="0" maxOccurs="1">
338 <xs:complexType>
339 <xs:attribute name="value" type="xs:string" use="required"/>
340 <xs:anyAttribute namespace="##other" processContents="lax"/>
341 </xs:complexType>
342 </xs:element>
343 <!-- repeat range -->
344 <xs:element name="repeat_left" minOccurs="0" maxOccurs="1">
345 <xs:complexType>
346 <xs:attribute name="value" type="xs:string" use="required"/>
347 <xs:anyAttribute namespace="##other" processContents="lax"/>
348 </xs:complexType>
349 </xs:element>
350 <xs:element name="order" type="gnm:print_ordering"/>
351 <xs:element name="orientation" type="gnm:print_orientation"/>
352 <xs:element name="Header" type="gnm:HeaderFooter"/>
353 <xs:element name="Footer" type="gnm:HeaderFooter"/>
354 <!-- typical values are A4, US-Letter -->
355 <xs:element name="paper" type="xs:string" minOccurs="0" maxOccurs="1"/>
356 <xs:element name="comments" type="gnm:PrintComments"/>
357 <xs:element name="errors" type="gnm:PrintErrors"/>
358 <!-- do not print this sheet when "all" is selected in the job -->
359 <xs:element name="do_not_print" minOccurs="0" maxOccurs="1">
360 <xs:complexType>
361 <xs:attribute name="value" type="xs:boolean" use="required"/>
362 </xs:complexType>
363 </xs:element>
364 <xs:element name="print-to-uri" type="xs:string" minOccurs="0" maxOccurs="1"/>
365 <xs:element name="vPageBreaks" type="gnm:PageBreaks" minOccurs="0" maxOccurs="1"/><!-- between rows -->
366 <xs:element name="hPageBreaks" type="gnm:PageBreaks" minOccurs="0" maxOccurs="1"/><!-- between cols -->
367 <xs:element name="print_range" minOccurs="0" maxOccurs="1">
368 <xs:complexType>
369 <xs:attribute name="value" use="required">
370 <xs:simpleType>
371 <xs:restriction base="xs:string">
372 <xs:enumeration value="GNM_PRINT_SAVED_INFO"/>
373 <xs:enumeration value="GNM_PRINT_ACTIVE_SHEET"/>
374 <xs:enumeration value="GNM_PRINT_ALL_SHEETS"/>
375 <xs:enumeration value="GNM_PRINT_ALL_SHEETS_INCLUDING_HIDDEN"/>
376 <xs:enumeration value="GNM_PRINT_SHEET_RANGE"/>
377 <xs:enumeration value="GNM_PRINT_SHEET_SELECTION"/>
378 <xs:enumeration value="GNM_PRINT_IGNORE_PRINTAREA"/>
379 <xs:enumeration value="GNM_PRINT_SHEET_SELECTION_IGNORE_PRINTAREA"/>
380 </xs:restriction>
381 </xs:simpleType>
382 </xs:attribute>
383 </xs:complexType>
384 </xs:element>
385 </xs:choice>
386 <xs:anyAttribute namespace="##other" processContents="lax"/>
387 </xs:complexType>
389 <xs:complexType name="HeaderFooter">
390 <xs:attribute name="Left" type="xs:string" use="optional"/>
391 <xs:attribute name="Middle" type="xs:string" use="optional"/>
392 <xs:attribute name="Right" type="xs:string" use="optional"/>
393 <xs:anyAttribute namespace="##other" processContents="lax"/>
394 </xs:complexType>
396 <xs:complexType name="PrintComments">
397 <xs:attribute name="placement" type="gnm:PrintCommentsPlacement"/>
398 </xs:complexType>
400 <xs:simpleType name="PrintCommentsPlacement">
401 <xs:restriction base="xs:string">
402 <xs:enumeration value="GNM_PRINT_COMMENTS_NONE"/>
403 <xs:enumeration value="GNM_PRINT_COMMENTS_IN_PLACE"/>
404 <xs:enumeration value="GNM_PRINT_COMMENTS_AT_END"/>
405 </xs:restriction>
406 </xs:simpleType>
408 <xs:complexType name="PrintErrors">
409 <xs:attribute name="PrintErrorsAs" type="gnm:PrintErrorsAs"/>
410 </xs:complexType>
412 <xs:simpleType name="PrintErrorsAs">
413 <xs:restriction base="xs:string">
414 <xs:enumeration value="GNM_PRINT_ERRORS_AS_DISPLAYED"/>
415 <xs:enumeration value="GNM_PRINT_ERRORS_AS_BLANK"/>
416 <xs:enumeration value="GNM_PRINT_ERRORS_AS_DASHES"/>
417 <xs:enumeration value="GNM_PRINT_ERRORS_AS_NA"/>
418 </xs:restriction>
419 </xs:simpleType>
421 <xs:complexType name="PageBreaks">
422 <xs:sequence>
423 <xs:element name="break" minOccurs="0" maxOccurs="unbounded">
424 <xs:complexType>
425 <xs:attribute name="pos" type="xs:nonNegativeInteger" use="required"/>
426 <xs:attribute name="type" type="gnm:PageBreakType" use="optional" default="auto"/>
427 </xs:complexType>
428 </xs:element>
429 </xs:sequence>
430 <xs:attribute name="count" type="xs:nonNegativeInteger" use="optional"/>
431 <xs:anyAttribute namespace="##other" processContents="lax"/>
432 </xs:complexType>
434 <xs:simpleType name="PageBreakType">
435 <xs:restriction base="xs:string">
436 <xs:enumeration value="auto"/>
437 <xs:enumeration value="manual"/>
438 <xs:enumeration value="data-slice"/>
439 </xs:restriction>
440 </xs:simpleType>
442 <xs:complexType name="margin">
443 <xs:attribute name="Points" type="xs:double"/>
444 <xs:attribute name="PrefUnit" type="gnm:print_units"/>
445 <xs:anyAttribute namespace="##other" processContents="lax"/>
446 </xs:complexType>
448 <xs:simpleType name="print_units">
449 <xs:restriction base="xs:string">
450 <xs:enumeration value="mm"/>
451 <xs:enumeration value="millimeter"/>
452 <xs:enumeration value="cm"/>
453 <xs:enumeration value="centimeter"/>
454 <xs:enumeration value="in"/>
455 <xs:enumeration value="inch"/>
456 <xs:enumeration value="inches"/>
457 <xs:enumeration value="Pt"/>
458 <xs:enumeration value="Pts"/>
459 <xs:enumeration value="points"/>
460 </xs:restriction>
461 </xs:simpleType>
463 <xs:simpleType name="print_ordering">
464 <xs:restriction base="xs:string">
465 <!-- right, then down -->
466 <xs:enumeration value="r_then_d"/>
467 <!-- down, then right -->
468 <xs:enumeration value="d_then_r"/>
469 </xs:restriction>
470 </xs:simpleType>
472 <xs:simpleType name="print_orientation">
473 <xs:restriction base="xs:string">
474 <xs:enumeration value="landscape"/>
475 <xs:enumeration value="portrait"/>
476 </xs:restriction>
477 </xs:simpleType>
479 <xs:complexType name="Styles">
480 <xs:sequence>
481 <xs:element name="StyleRegion" minOccurs="0" maxOccurs="unbounded">
482 <xs:complexType>
483 <xs:sequence>
484 <xs:element name="Style" type="gnm:Style" minOccurs="1" maxOccurs="1"/>
485 </xs:sequence>
486 <xs:attribute name="startCol" type="xs:nonNegativeInteger" use="required"/>
487 <xs:attribute name="startRow" type="xs:nonNegativeInteger" use="required"/>
488 <xs:attribute name="endCol" type="xs:nonNegativeInteger" use="required"/>
489 <xs:attribute name="endRow" type="xs:nonNegativeInteger" use="required"/>
490 <xs:anyAttribute namespace="##other" processContents="lax"/>
491 </xs:complexType>
492 </xs:element>
493 </xs:sequence>
494 </xs:complexType>
496 <xs:complexType name="Style">
497 <xs:sequence>
498 <xs:element name="Font" minOccurs="0" maxOccurs="1">
499 <xs:complexType>
500 <xs:simpleContent> <!-- Since these might be conditional styles, the atributes are
501 not required -->
502 <xs:extension base="xs:string">
503 <xs:attribute name="Unit" type="xs:double" use="optional"/>
504 <xs:attribute name="Bold" type="xs:boolean" use="optional"/>
505 <xs:attribute name="Italic" type="xs:boolean" use="optional"/>
506 <xs:attribute name="Underline" type="gnm:underline" use="optional"/>
507 <xs:attribute name="StrikeThrough" type="xs:boolean" use="optional"/>
508 <xs:attribute name="Script" type="gnm:script" use="optional"/>
509 <xs:anyAttribute namespace="##other" processContents="lax"/>
510 </xs:extension>
511 </xs:simpleContent>
512 </xs:complexType>
513 </xs:element>
514 <xs:element name="HyperLink" minOccurs="0" maxOccurs="1">
515 <xs:complexType>
516 <xs:attribute name="type" type="xs:string" use="required"/>
517 <xs:attribute name="target" type="xs:string" use="optional"/>
518 <xs:attribute name="tip" type="xs:string" use="optional"/>
519 <xs:anyAttribute namespace="##other" processContents="lax"/>
520 </xs:complexType>
521 </xs:element>
522 <xs:element name="Condition" minOccurs="0" maxOccurs="unbounded">
523 <xs:complexType>
524 <xs:sequence>
525 <xs:element name="Expression0" type="xs:string" minOccurs="0" maxOccurs="1"/>
526 <xs:element name="Expression1" type="xs:string" minOccurs="0" maxOccurs="1"/>
527 <xs:element name="Style" type="gnm:Style" minOccurs="1" maxOccurs="1"/>
528 </xs:sequence>
529 <xs:attribute name="Operator" type="gnm:CondOp" use="required"/>
530 <xs:anyAttribute namespace="##other" processContents="lax"/>
531 </xs:complexType>
532 </xs:element>
533 <xs:element name="StyleBorder" minOccurs="0" maxOccurs="1">
534 <xs:complexType>
535 <xs:choice minOccurs="0" maxOccurs="6"> <!-- The order of the last two elements appears to be
536 version dependent-->
537 <xs:element name="Top" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
538 <xs:element name="Bottom" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
539 <xs:element name="Left" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
540 <xs:element name="Right" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
541 <xs:element name="Diagonal" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
542 <xs:element name="Rev-Diagonal" type="gnm:StyleBorderElement" minOccurs="0" maxOccurs="1"/>
543 </xs:choice>
544 </xs:complexType>
545 </xs:element>
546 <xs:element name="Validation" minOccurs="0" maxOccurs="1">
547 <xs:complexType>
548 <xs:sequence>
549 <xs:element name="Expression0" type="xs:string" minOccurs="0" maxOccurs="1"/>
550 <xs:element name="Expression1" type="xs:string" minOccurs="0" maxOccurs="1"/>
551 </xs:sequence>
552 <xs:attribute name="Style" type="gnm:ValidationStyle" use="required"/>
553 <xs:attribute name="Type" type="gnm:ValidationType" use="required"/>
554 <xs:attribute name="Operator" type="gnm:ValidationOperator" use="optional"/>
555 <xs:attribute name="AllowBlank" type="xs:boolean" use="optional"/>
556 <xs:attribute name="UseDropdown" type="xs:boolean" use="optional"/>
557 <xs:attribute name="Title" type="xs:string" use="optional"/>
558 <xs:attribute name="Message" type="xs:string" use="optional"/>
559 <xs:anyAttribute namespace="##other" processContents="lax"/>
560 </xs:complexType>
561 </xs:element>
563 <xs:element name="InputMessage" minOccurs="0" maxOccurs="1">
564 <xs:complexType>
565 <xs:attribute name="Title" type="xs:string" use="optional"/>
566 <xs:attribute name="Message" type="xs:string" use="optional"/>
567 <xs:anyAttribute namespace="##other" processContents="lax"/>
568 </xs:complexType>
569 </xs:element>
570 </xs:sequence>
571 <xs:attribute name="HAlign" type="gnm:horizontal_alignment"/>
572 <xs:attribute name="VAlign" type="gnm:vertical_alignment"/>
573 <xs:attribute name="WrapText" type="xs:boolean" />
575 <!-- should be bool, but some files have odd truth values -->
576 <xs:attribute name="ShrinkToFit" type="xs:integer" />
578 <xs:attribute name="Rotation" type="xs:integer" use="optional"/>
579 <xs:attribute name="Orient" type="xs:integer" use="optional"/>
580 <xs:attribute name="Shade" type="gnm:Stipple" use="optional"/>
581 <xs:attribute name="Indent" type="xs:integer" use="optional"/>
582 <xs:attribute name="Locked" type="xs:boolean" use="optional"/>
583 <xs:attribute name="Hidden" type="xs:boolean" use="optional"/>
584 <xs:attribute name="Fore" type="gnm:color" use="optional"/>
585 <xs:attribute name="Back" type="gnm:color" use="optional"/>
586 <xs:attribute name="PatternColor" type="gnm:color" use="optional"/>
587 <xs:attribute name="Format" type="xs:string" use="optional"/>
588 <xs:anyAttribute namespace="##other" processContents="lax"/>
589 </xs:complexType>
591 <xs:complexType name="StyleBorderElement">
592 <xs:attribute name="Style" type="gnm:border_style" use="required"/>
593 <!-- Color is present when Style is not 0 -->
594 <xs:attribute name="Color" type="gnm:color" use="optional"/>
595 <xs:anyAttribute namespace="##other" processContents="lax"/>
596 </xs:complexType>
598 <xs:simpleType name="border_style">
599 <xs:restriction base="xs:integer">
600 <!-- 0 = NONE
601 1 = THIN
602 2 = MEDIUM
603 3 = DASHED
604 4 = DOTTED
605 5 = THICK
606 6 = DOUBLE
607 7 = HAIR
608 8 = MEDIUM_DASH
609 9 = DASH_DOT
610 10 = MEDIUM_DASH_DOT
611 11 = DASH_DOT_DOT
612 12 = MEDIUM_DASH_DOT_DOT
613 13 = SLANTED_DASH_DOT
615 <xs:minInclusive value="0"/>
616 <xs:maxInclusive value="13"/>
617 </xs:restriction>
618 </xs:simpleType>
620 <xs:simpleType name="ValidationStyle">
621 <xs:restriction base="xs:string">
622 <xs:enumeration value="GNM_VALIDATION_STYLE_NONE"/>
623 <xs:enumeration value="GNM_VALIDATION_STYLE_STOP"/>
624 <xs:enumeration value="GNM_VALIDATION_STYLE_WARNING"/>
625 <xs:enumeration value="GNM_VALIDATION_STYLE_INFO"/>
626 <xs:enumeration value="GNM_VALIDATION_STYLE_PARSE_ERROR"/>
627 </xs:restriction>
628 </xs:simpleType>
630 <xs:simpleType name="ValidationType">
631 <xs:restriction base="xs:string">
632 <xs:enumeration value="GNM_VALIDATION_TYPE_ANY"/>
633 <xs:enumeration value="GNM_VALIDATION_TYPE_AS_INT"/>
634 <xs:enumeration value="GNM_VALIDATION_TYPE_AS_NUMBER"/>
635 <xs:enumeration value="GNM_VALIDATION_TYPE_IN_LIST"/>
636 <xs:enumeration value="GNM_VALIDATION_TYPE_AS_DATE"/>
637 <xs:enumeration value="GNM_VALIDATION_TYPE_AS_TIME"/>
638 <xs:enumeration value="GNM_VALIDATION_TYPE_TEXT_LENGTH"/>
639 <xs:enumeration value="GNM_VALIDATION_TYPE_CUSTOM"/>
640 </xs:restriction>
641 </xs:simpleType>
643 <xs:simpleType name="ValidationOperator">
644 <xs:restriction base="xs:string">
645 <xs:enumeration value="GNM_VALIDATION_OP_NONE"/>
646 <xs:enumeration value="GNM_VALIDATION_OP_BETWEEN"/>
647 <xs:enumeration value="GNM_VALIDATION_OP_NOT_BETWEEN"/>
648 <xs:enumeration value="GNM_VALIDATION_OP_EQUAL"/>
649 <xs:enumeration value="GNM_VALIDATION_OP_NOT_EQUAL"/>
650 <xs:enumeration value="GNM_VALIDATION_OP_GT"/>
651 <xs:enumeration value="GNM_VALIDATION_OP_LT"/>
652 <xs:enumeration value="GNM_VALIDATION_OP_GTE"/>
653 <xs:enumeration value="GNM_VALIDATION_OP_LTE"/>
654 </xs:restriction>
655 </xs:simpleType>
657 <xs:simpleType name="underline">
658 <xs:restriction base="xs:integer">
659 <!-- 0 = NONE
660 1 = SINGLE
661 2 = DOUBLE
662 3 = SINGLE LOW
663 4 = DOUBLE LOW
665 <xs:minInclusive value="0"/>
666 <xs:maxInclusive value="4"/>
667 </xs:restriction>
668 </xs:simpleType>
670 <xs:simpleType name="script">
671 <xs:restriction base="xs:integer">
672 <!-- GO_FONT_SCRIPT_SUB = -1,
673 GO_FONT_SCRIPT_STANDARD = 0,
674 GO_FONT_SCRIPT_SUPER = 1
676 <xs:minInclusive value="-1"/>
677 <xs:maxInclusive value="1"/>
678 </xs:restriction>
679 </xs:simpleType>
681 <xs:simpleType name="horizontal_alignment">
682 <xs:restriction base="xs:string">
683 <xs:enumeration value="GNM_HALIGN_GENERAL"/>
684 <xs:enumeration value="GNM_HALIGN_LEFT"/>
685 <xs:enumeration value="GNM_HALIGN_RIGHT"/>
686 <xs:enumeration value="GNM_HALIGN_CENTER"/>
687 <xs:enumeration value="GNM_HALIGN_FILL"/>
688 <xs:enumeration value="GNM_HALIGN_JUSTIFY"/>
689 <xs:enumeration value="GNM_HALIGN_CENTER_ACROSS_SELECTION"/>
690 <xs:enumeration value="GNM_HALIGN_DISTRIBUTED"/>
691 </xs:restriction>
692 </xs:simpleType>
694 <xs:simpleType name="vertical_alignment">
695 <xs:restriction base="xs:string">
696 <xs:enumeration value="GNM_VALIGN_TOP"/>
697 <xs:enumeration value="GNM_VALIGN_BOTTOM"/>
698 <xs:enumeration value="GNM_VALIGN_CENTER"/>
699 <xs:enumeration value="GNM_VALIGN_JUSTIFY"/>
700 <xs:enumeration value="GNM_VALIGN_DISTRIBUTED"/>
701 </xs:restriction>
702 </xs:simpleType>
704 <xs:simpleType name="Stipple">
705 <xs:restriction base="xs:integer">
706 <!-- the values are defined as follows:
707 0 = NONE
708 1 = Solid
709 2 = 75%
710 3 = 50%
711 4 = 25%
712 5 = 12.5%
713 6 = 6.25%
714 7 = Horizontal Stripe
715 8 = Vertical Stripe
716 9 = Reverse Diagonal Stripe
717 10 = Diagonal Stripe
718 11 = Diagonal Crosshatch
719 12 = Thick Diagonal Crosshatch
720 13 = Thin Horizontal Stripe
721 14 = Thin Vertical Stripe
722 15 = Thin Reverse Diagonal Stripe
723 16 = Thin Diagonal Stripe
724 17 = Thin Crosshatch
725 18 = Thin Diagonal Crosshatch
726 19 = Applix small circle
727 20 = Applix semicircle
728 21 = Applix small thatch
729 22 = Applix round thatch
730 23 = Applix Brick
731 24 = 100%
732 25 = 87.5%
734 <xs:minInclusive value="0"/>
735 <xs:maxInclusive value="25"/>
736 </xs:restriction>
737 </xs:simpleType>
739 <xs:simpleType name="color">
740 <xs:restriction base="xs:string">
741 <!-- colors in hex, 16 bits red, green, then blue -->
742 <xs:pattern value="[0-9A-F]{1,4}:[0-9A-F]{1,4}:[0-9A-F]{1,4}"/>
743 </xs:restriction>
744 </xs:simpleType>
746 <xs:complexType name="Col_Row">
747 <!-- column/row number -->
748 <xs:attribute name="No" type="xs:nonNegativeInteger" use="required"/>
749 <!-- size in points -->
750 <xs:attribute name="Unit" type="xs:double" use="required"/>
751 <!-- DEPRECATED in 1.7.1 : top/left margin (no unit it does not scale) -->
752 <xs:attribute name="MarginA" type="gnm:col_row_margin" use="optional"/>
753 <!-- DEPRECATED in 1.7.1 : botton/right margin (no unit it does not scale) -->
754 <xs:attribute name="MarginB" type="gnm:col_row_margin" use="optional"/>
755 <!-- true if size is explicitly set -->
756 <xs:attribute name="HardSize" type="xs:boolean" use="optional" default="0"/>
757 <xs:attribute name="Hidden" type="xs:boolean" use="optional" default="0"/>
758 <xs:attribute name="Collapsed" type="xs:boolean" use="optional" default="0"/>
759 <xs:attribute name="OutlineLevel" type="xs:integer" use="optional" default="0"/>
760 <!-- The number of consequitive identically sized cols/rows -->
761 <xs:attribute name="Count" type="xs:integer" use="optional" default="1"/>
762 <xs:anyAttribute namespace="##other" processContents="lax"/>
763 </xs:complexType>
765 <xs:simpleType name="col_row_margin">
766 <xs:restriction base="xs:integer">
767 <xs:minInclusive value="0"/>
768 <xs:maxInclusive value="7"/>
769 </xs:restriction>
770 </xs:simpleType>
772 <xs:complexType name="Selections">
773 <xs:sequence>
774 <xs:element name="Selection" minOccurs="0" maxOccurs="unbounded">
775 <xs:complexType>
776 <xs:attribute name="startCol" type="xs:nonNegativeInteger" use="required"/>
777 <xs:attribute name="startRow" type="xs:nonNegativeInteger" use="required"/>
778 <xs:attribute name="endCol" type="xs:nonNegativeInteger" use="required"/>
779 <xs:attribute name="endRow" type="xs:nonNegativeInteger" use="required"/>
780 <xs:anyAttribute namespace="##other" processContents="lax"/>
781 </xs:complexType>
782 </xs:element>
783 </xs:sequence>
784 <xs:attribute name="CursorCol" type="xs:nonNegativeInteger" use="required"/>
785 <xs:attribute name="CursorRow" type="xs:nonNegativeInteger" use="required"/>
786 <xs:anyAttribute namespace="##other" processContents="lax"/>
787 </xs:complexType>
789 <xs:attributeGroup name="ObjectAnchor">
790 <xs:attribute name="AnchorMode" type="gnm:anchor_mode" use="optional"/>
791 <xs:attribute name="ObjectBound" type="xs:string" use="required"/>
792 <xs:attribute name="ObjectOffset" type="gnm:offsets" use="required"/>
793 <xs:attribute name="ObjectAnchorType" type="gnm:anchor_type" use="optional"/>
794 <xs:attribute name="Direction" type="gnm:direction" use="required"/>
795 <xs:anyAttribute namespace="##other" processContents="lax"/>
796 </xs:attributeGroup>
798 <xs:attributeGroup name="ObjectProperties">
799 <xs:attribute name="Print" type="xs:boolean" use="optional"/>
800 <xs:attribute name="Name" type="xs:string" use="optional"/>
801 </xs:attributeGroup>
803 <xs:attributeGroup name="ObjectAdjustmentProps">
804 <xs:attribute name="Min" type="xs:double" use="required"/>
805 <xs:attribute name="Max" type="xs:double" use="required"/>
806 <xs:attribute name="Inc" type="xs:double" use="required"/>
807 <xs:attribute name="Page" type="xs:double" use="required"/>
808 <xs:attribute name="Value" type="xs:double" use="required"/>
809 <xs:attribute name="Input" type="xs:string" use="optional"/>
810 <xs:anyAttribute namespace="##other" processContents="lax"/>
811 </xs:attributeGroup>
813 <xs:complexType name="Objects">
814 <xs:choice minOccurs="0" maxOccurs="unbounded">
815 <xs:element name="CellComment">
816 <xs:complexType>
817 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
818 <xs:attributeGroup ref="gnm:ObjectProperties"/>
819 <xs:attribute name="Author" type="xs:string" use="optional"/>
820 <xs:attribute name="Text" type="xs:string" use="required"/>
821 <xs:attribute name="TextFormat" type="xs:string" use="optional"/>
822 <xs:anyAttribute namespace="##other" processContents="lax"/>
823 </xs:complexType>
824 </xs:element>
825 <xs:element name="SheetObjectFilled">
826 <xs:complexType>
827 <xs:choice minOccurs="0" maxOccurs="1">
828 <xs:any namespace="##local" processContents="lax"/>
829 </xs:choice>
830 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
831 <xs:attributeGroup ref="gnm:ObjectProperties"/>
832 <xs:attribute name="OutlineColor" type="gnm:color" use="optional"/>
833 <xs:attribute name="FillColor" type="gnm:color" use="optional"/>
834 <xs:attribute name="Type" type="gnm:objectfilled" use="required"/>
835 <xs:attribute name="Width" type="xs:nonNegativeInteger" use="optional"/>
836 <xs:attribute name="Label" type="xs:string" use="optional"/>
837 <xs:attribute name="LabelFormat" type="xs:string" use="optional"/>
839 <!-- the arrow shape attributes are only used if the type is
840 arrow (type="gnm:2")
842 <xs:attribute name="ArrowShapeA" type="xs:double" use="optional"/>
843 <xs:attribute name="ArrowShapeB" type="xs:double" use="optional"/>
844 <xs:attribute name="ArrowShapeC" type="xs:double" use="optional"/>
845 <xs:anyAttribute namespace="##other" processContents="lax"/>
846 </xs:complexType>
847 </xs:element>
849 <!-- widgets -->
850 <xs:element name="SheetWidgetButton">
851 <xs:complexType>
852 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
853 <xs:attributeGroup ref="gnm:ObjectProperties"/>
854 <xs:attribute name="Label" type="xs:string" use="required"/>
855 <xs:attribute name="Value" type="xs:integer" />
856 <xs:attribute name="Input" type="xs:string" />
857 <xs:anyAttribute namespace="##other" processContents="lax"/>
858 </xs:complexType>
859 </xs:element>
860 <xs:element name="SheetWidgetCheckbox">
861 <xs:complexType>
862 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
863 <xs:attributeGroup ref="gnm:ObjectProperties"/>
864 <xs:attribute name="Label" type="xs:string" use="required"/>
865 <xs:attribute name="Value" type="xs:integer" use="required"/>
866 <xs:attribute name="Input" type="xs:string" />
867 <xs:anyAttribute namespace="##other" processContents="lax"/>
868 </xs:complexType>
869 </xs:element>
870 <xs:element name="SheetWidgetRadioButton">
871 <xs:complexType>
872 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
873 <xs:attributeGroup ref="gnm:ObjectProperties"/>
874 <xs:attribute name="Label" type="xs:string" use="required"/>
875 <xs:attribute name="Value" type="xs:string" use="required"/>
876 <xs:attribute name="ValueType" type="gnm:ValueType" use="required"/>
877 <xs:attribute name="Active" type="xs:boolean" use="required"/>
878 <xs:attribute name="Input" type="xs:string" use="optional"/>
879 <xs:anyAttribute namespace="##other" processContents="lax"/>
880 </xs:complexType>
881 </xs:element>
883 <xs:element name="SheetWidgetScrollbar">
884 <xs:complexType>
885 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
886 <xs:attributeGroup ref="gnm:ObjectAdjustmentProps"/>
887 <xs:attributeGroup ref="gnm:ObjectProperties"/>
888 <xs:attribute name="Horizontal" type="xs:boolean" use="optional"/>
889 <xs:anyAttribute namespace="##other" processContents="lax"/>
890 </xs:complexType>
891 </xs:element>
892 <xs:element name="SheetWidgetSpinbutton">
893 <xs:complexType>
894 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
895 <xs:attributeGroup ref="gnm:ObjectAdjustmentProps"/>
896 <xs:attributeGroup ref="gnm:ObjectProperties"/>
897 <xs:anyAttribute namespace="##other" processContents="lax"/>
898 </xs:complexType>
899 </xs:element>
900 <xs:element name="SheetWidgetSlider" minOccurs="0" maxOccurs="unbounded">
901 <xs:complexType>
902 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
903 <xs:attributeGroup ref="gnm:ObjectAdjustmentProps"/>
904 <xs:attributeGroup ref="gnm:ObjectProperties"/>
905 <xs:anyAttribute namespace="##other" processContents="lax"/>
906 </xs:complexType>
907 </xs:element>
909 <xs:element name="SheetObjectImage">
910 <xs:complexType>
911 <xs:sequence>
912 <xs:element name="Content" form="unqualified">
913 <xs:complexType mixed="true">
914 <xs:attribute name="image-type" type="xs:string" use="required"/>
915 <xs:attribute name="name" type="xs:string" use="optional"/>
916 <xs:attribute name="size-bytes" type="xs:int" use="optional"/>
917 <xs:anyAttribute namespace="##other" processContents="lax"/>
918 </xs:complexType>
919 </xs:element>
920 </xs:sequence>
921 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
922 <xs:attributeGroup ref="gnm:ObjectProperties"/>
923 <xs:attribute name="crop-top" type="xs:double" use="required"/>
924 <xs:attribute name="crop-bottom" type="xs:double" use="required"/>
925 <xs:attribute name="crop-left" type="xs:double" use="required"/>
926 <xs:attribute name="crop-right" type="xs:double" use="required"/>
927 <xs:anyAttribute namespace="##other" processContents="lax"/>
928 </xs:complexType>
929 </xs:element>
930 <xs:element name="SheetObjectGraph">
931 <xs:complexType>
932 <xs:choice minOccurs="1" maxOccurs="1">
933 <xs:element name="GogObject" type="gnm:GogObject"/>
934 <xs:element name="GogObject" type="gnm:GogObject" form="unqualified"/>
935 </xs:choice>
936 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
937 <xs:attributeGroup ref="gnm:ObjectProperties"/>
938 <xs:anyAttribute namespace="##other" processContents="lax"/>
939 </xs:complexType>
940 </xs:element>
941 <xs:element name="SheetWidgetFrame">
942 <xs:complexType>
943 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
944 <xs:attributeGroup ref="gnm:ObjectProperties"/>
945 <xs:attribute name="Label" type="xs:string" use="optional"/>
946 <xs:anyAttribute namespace="##other" processContents="lax"/>
947 </xs:complexType>
948 </xs:element>
949 <xs:element name="SheetWidgetLabel">
950 <xs:complexType>
951 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
952 <xs:attributeGroup ref="gnm:ObjectProperties"/>
953 <xs:anyAttribute namespace="##other" processContents="lax"/>
954 </xs:complexType>
955 </xs:element>
956 <xs:element name="SheetWidgetList">
957 <xs:complexType>
958 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
959 <xs:attributeGroup ref="gnm:ObjectProperties"/>
960 <xs:attribute name="Content" type="xs:string" use="required"/>
961 <xs:attribute name="Output" type="xs:string" use="required"/>
962 <xs:attribute name="OutputAsIndex" type="xs:boolean" use="required"/>
963 <xs:anyAttribute namespace="##other" processContents="lax"/>
964 </xs:complexType>
965 </xs:element>
966 <xs:element name="SheetWidgetCombo">
967 <xs:complexType>
968 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
969 <xs:attributeGroup ref="gnm:ObjectProperties"/>
970 <xs:attribute name="Content" type="xs:string" use="required"/>
971 <xs:attribute name="Output" type="xs:string" use="required"/>
972 <xs:attribute name="OutputAsIndex" type="xs:boolean" use="required"/>
973 <xs:anyAttribute namespace="##other" processContents="lax"/>
974 </xs:complexType>
975 </xs:element>
977 <xs:element name="SheetObjectGraphic">
978 <xs:complexType>
979 <xs:sequence>
980 <xs:element name="Style" type="gnm:GOStyle" form="unqualified"/>
981 </xs:sequence>
982 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
983 <xs:attributeGroup ref="gnm:ObjectProperties"/>
984 <xs:attribute name="Type" type="xs:integer" use="required"/>
985 <xs:attribute name="StartArrowType" type="xs:string" use="optional"/>
986 <xs:attribute name="StartArrowShapeA" type="xs:double" use="optional"/>
987 <xs:attribute name="StartArrowShapeB" type="xs:double" use="optional"/>
988 <xs:attribute name="StartArrowShapeC" type="xs:double" use="optional"/>
989 <xs:attribute name="EndArrowType" type="xs:string" use="optional"/>
990 <xs:attribute name="EndArrowShapeA" type="xs:double" use="optional"/>
991 <xs:attribute name="EndArrowShapeB" type="xs:double" use="optional"/>
992 <xs:attribute name="EndArrowShapeC" type="xs:double" use="optional"/>
993 <xs:anyAttribute namespace="##other" processContents="lax"/>
994 </xs:complexType>
995 </xs:element>
997 <!-- no longer supported -->
998 <xs:element name="SheetObjectBonobo">
999 <xs:complexType>
1000 <xs:attributeGroup ref="gnm:ObjectAnchor"/>
1001 </xs:complexType>
1002 </xs:element>
1003 </xs:choice>
1004 </xs:complexType>
1006 <xs:complexType name="GOStyle">
1007 <xs:sequence>
1008 <xs:element name="line" type="gnm:GOLine" form="unqualified"/>
1009 </xs:sequence>
1010 <xs:attribute name="type" type="xs:string" use="required"/>
1011 </xs:complexType>
1013 <xs:complexType name="GOLine">
1014 <!-- Lazy: -->
1015 <xs:anyAttribute processContents="skip"/>
1016 </xs:complexType>
1018 <xs:complexType name="GogObject">
1019 <xs:choice minOccurs="0" maxOccurs="unbounded">
1020 <xs:element name="property" type="gnm:GogProperty"/>
1021 <xs:element name="property" type="gnm:GogProperty" form="unqualified"/>
1022 <xs:element name="data" type="gnm:GOData"/>
1023 <xs:element name="data" type="gnm:GOData" form="unqualified"/>
1024 <xs:element name="GogObject" type="gnm:GogObject"/>
1025 <xs:element name="GogObject" type="gnm:GogObject" form="unqualified"/>
1026 </xs:choice>
1027 <xs:attribute name="type" type="xs:string" use="optional"/>
1028 <xs:attribute name="role" type="xs:string" use="optional"/>
1029 </xs:complexType>
1031 <xs:complexType name="GogProperty" mixed="true">
1032 <xs:sequence>
1033 <!-- children are unstructured -->
1034 <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
1035 </xs:sequence>
1036 <xs:attribute name="name" type="xs:string" use="required"/>
1037 <xs:attribute name="type" type="xs:string" use="optional"/>
1038 <xs:attribute name="error_type" type="xs:string" use="optional"/>
1039 <xs:attribute name="width" type="xs:integer" use="optional"/>
1040 </xs:complexType>
1042 <xs:complexType name="GOData">
1043 <xs:choice minOccurs="0" maxOccurs="unbounded">
1044 <xs:element name="dimension" type="gnm:GODimension"/>
1045 <xs:element name="dimension" type="gnm:GODimension" form="unqualified"/>
1046 </xs:choice>
1047 </xs:complexType>
1048 <xs:complexType name="GODimension">
1049 <xs:simpleContent>
1050 <xs:extension base="xs:string">
1051 <xs:attribute name="id" type="xs:integer" use="required"/>
1052 <xs:attribute name="type" type="xs:string" use="required"/>
1053 </xs:extension>
1054 </xs:simpleContent>
1055 </xs:complexType>
1057 <xs:simpleType name="offsets">
1058 <xs:restriction base="xs:string">
1059 <!-- if this seems hard to read, it purportedly describes 4
1060 space-separated doubles
1062 <xs:pattern value="[+\-]?\d+(.\d+)?([Ee]([+\-])?\d+)? [+\-]?\d+(.\d+)?([Ee]([+\-])?\d+)? [+\-]?\d+(.\d+)?([Ee]([+\-])?\d+)? [+\-]?\d+(.\d+)?([Ee]([+\-])?\d+)?"/>
1063 </xs:restriction>
1064 </xs:simpleType>
1066 <!-- As of 1.7.7 this is deprecated -->
1067 <xs:simpleType name="anchor_type">
1068 <xs:restriction base="xs:string">
1069 <!-- if this seems hard to read, it purportedly describes 4
1070 space-separated positive numbers
1072 each number needs to be one of the following:
1073 0 = UNKNOWN
1074 16 = PERCENTAGE_FROM_COLROW_START
1075 32 = PTS_FROM_COLROW_START
1076 33 = PTS_FROM_COLROW_END
1077 48 = PTS_ABSOLUTE
1079 <xs:pattern value="\d+ \d+ \d+ \d+"/>
1080 </xs:restriction>
1081 </xs:simpleType>
1083 <xs:simpleType name="anchor_mode">
1084 <xs:restriction base="xs:string">
1085 <xs:enumeration value="GNM_SO_ANCHOR_ABSOLUTE"/>
1086 <xs:enumeration value="GNM_SO_ANCHOR_ONE_CELL"/>
1087 <xs:enumeration value="GNM_SO_ANCHOR_TWO_CELLS"/>
1088 </xs:restriction>
1089 </xs:simpleType>
1091 <xs:simpleType name="direction">
1092 <xs:restriction base="xs:string">
1093 <xs:enumeration value="-1"/> <!-- unknown -->
1094 <xs:enumeration value="0"/> <!-- up right -->
1095 <xs:enumeration value="1"/> <!-- up left -->
1096 <xs:enumeration value="16"/> <!-- down right -->
1097 <xs:enumeration value="17"/> <!-- down left -->
1098 <xs:enumeration value="255"/> <!-- unknown -->
1099 </xs:restriction>
1100 </xs:simpleType>
1102 <xs:simpleType name="objectfilled">
1103 <xs:restriction base="xs:string">
1104 <xs:enumeration value="1"/> <!-- line -->
1105 <xs:enumeration value="2"/> <!-- arrow -->
1106 <xs:enumeration value="101"/> <!-- box -->
1107 <xs:enumeration value="102"/> <!-- oval -->
1108 </xs:restriction>
1109 </xs:simpleType>
1111 <xs:complexType name="Cells">
1112 <xs:sequence>
1113 <xs:element name="Cell" minOccurs="0" maxOccurs="unbounded">
1114 <!-- expressions are stored as entered, with a leading '='.
1115 Once a shared expression has been defined, subsequent
1116 Cell elements using that same shared expression simply
1117 use the "ExprID" attribute to indicate which shared
1118 expression is used, and no Content element is included
1120 <xs:complexType mixed="true">
1121 <!-- Compatibility for ancient 0.x format -->
1122 <xs:sequence>
1123 <xs:element name="Content" type="xs:string" minOccurs="0" maxOccurs="1"/>
1124 </xs:sequence>
1126 <!-- Col and Row are sufficient for a cell that is an element of
1127 an array of cells as long as it's not the top left cell -->
1128 <xs:attribute name="Col" type="xs:nonNegativeInteger" use="required"/>
1129 <xs:attribute name="Row" type="xs:nonNegativeInteger" use="required"/>
1130 <!-- ExprID is only used to refer to a shared expression -->
1131 <xs:attribute name="ExprID" type="xs:nonNegativeInteger" use="optional"/>
1132 <!-- ValueType is not used if the cell contains an expression -->
1133 <xs:attribute name="ValueType" type="gnm:ValueType" use="optional"/>
1134 <!-- ValueFormat is apparently used only for cell-by-cell format overrides -->
1135 <xs:attribute name="ValueFormat" type="xs:string" use="optional"/>
1136 <!-- Cols and Rows are used to define an array of cells -->
1137 <xs:attribute name="Cols" type="xs:positiveInteger" use="optional"/>
1138 <xs:attribute name="Rows" type="xs:positiveInteger" use="optional"/>
1139 <xs:anyAttribute namespace="##other" processContents="lax"/>
1140 </xs:complexType>
1141 </xs:element>
1142 </xs:sequence>
1143 </xs:complexType>
1145 <xs:simpleType name="ValueType">
1146 <xs:restriction base="xs:string">
1147 <xs:enumeration value="10"/> <!-- empty -->
1148 <xs:enumeration value="20"/> <!-- boolean -->
1149 <xs:enumeration value="30"/> <!-- integer -->
1150 <xs:enumeration value="40"/> <!-- float -->
1151 <xs:enumeration value="50"/> <!-- error -->
1152 <xs:enumeration value="60"/> <!-- string -->
1153 <xs:enumeration value="70"/> <!-- cellrange -->
1154 <xs:enumeration value="80"/> <!-- array -->
1155 </xs:restriction>
1156 </xs:simpleType>
1158 <xs:simpleType name="CondOp">
1159 <xs:restriction base="xs:nonNegativeInteger">
1160 <xs:enumeration value="0"/> <!-- GNM_STYLE_COND_BETWEEN -->
1161 <xs:enumeration value="1"/> <!-- GNM_STYLE_COND_NOT_BETWEEN -->
1162 <xs:enumeration value="2"/> <!-- GNM_STYLE_COND_EQUAL -->
1163 <xs:enumeration value="3"/> <!-- GNM_STYLE_COND_NOT_EQUAL -->
1164 <xs:enumeration value="4"/> <!-- GNM_STYLE_COND_GT -->
1165 <xs:enumeration value="5"/> <!-- GNM_STYLE_COND_LT -->
1166 <xs:enumeration value="6"/> <!-- GNM_STYLE_COND_GTE -->
1167 <xs:enumeration value="7"/> <!-- GNM_STYLE_COND_LTE -->
1169 <!-- Arbitrary expr evaluated at EvalPos -->
1170 <xs:enumeration value="8"/> <!-- GNM_STYLE_COND_CUSTOM -->
1172 <!-- New in Gnumeric 1.8 -->
1173 <xs:enumeration value="16"/> <!-- GNM_STYLE_COND_CONTAINS_STR -->
1174 <xs:enumeration value="17"/> <!-- GNM_STYLE_COND_NOT_CONTAINS_STR -->
1175 <xs:enumeration value="18"/> <!-- GNM_STYLE_COND_BEGINS_WITH_STR -->
1176 <xs:enumeration value="19"/> <!-- GNM_STYLE_COND_NOT_BEGINS_WITH_STR -->
1177 <xs:enumeration value="20"/> <!-- GNM_STYLE_COND_ENDS_WITH_STR -->
1178 <xs:enumeration value="21"/> <!-- GNM_STYLE_COND_NOT_ENDS_WITH_STR -->
1180 <xs:enumeration value="22"/> <!-- GNM_STYLE_COND_CONTAINS_ERR -->
1181 <xs:enumeration value="23"/> <!-- GNM_STYLE_COND_NOT_CONTAINS_ERR -->
1183 <xs:enumeration value="24"/> <!-- GNM_STYLE_COND_CONTAINS_BLANKS -->
1184 <xs:enumeration value="25"/> <!-- GNM_STYLE_COND_NOT_CONTAINS_BLANK -->
1185 </xs:restriction>
1186 </xs:simpleType>
1187 <xs:simpleType name="FilterFieldType">
1188 <xs:restriction base="xs:string">
1189 <xs:enumeration value="expr"/>
1190 <xs:enumeration value="blanks"/>
1191 <xs:enumeration value="nonblanks"/>
1192 <xs:enumeration value="bucket"/>
1193 </xs:restriction>
1194 </xs:simpleType>
1195 <xs:simpleType name="FilterFieldOp">
1196 <xs:restriction base="xs:string">
1197 <xs:enumeration value="eq"/>
1198 <xs:enumeration value="gt"/>
1199 <xs:enumeration value="lt"/>
1200 <xs:enumeration value="gte"/>
1201 <xs:enumeration value="lte"/>
1202 <xs:enumeration value="ne"/>
1203 </xs:restriction>
1204 </xs:simpleType>
1206 <xs:complexType name="FilterField">
1207 <xs:attribute name="Index" type="xs:nonNegativeInteger" use="required"/>
1208 <xs:attribute name="Type" type="gnm:FilterFieldType" use="required"/>
1210 <!-- WARNING WARNING WARNING
1211 Value and ValueType have their senses
1212 reversed due to an old typo -->
1213 <!-- Only valid for Type=expr -->
1214 <xs:attribute name="Value0" type="gnm:ValueType" use="optional"/>
1215 <xs:attribute name="ValueType0" type="xs:string" use="optional"/>
1216 <xs:attribute name="Op0" type="gnm:FilterFieldOp" use="optional"/>
1217 <xs:attribute name="Value1" type="gnm:ValueType" use="optional"/>
1218 <xs:attribute name="ValueType1" type="xs:string" use="optional"/>
1219 <xs:attribute name="Op1" type="gnm:FilterFieldOp" use="optional"/>
1221 <!-- Only valid for Type=bucket -->
1222 <xs:attribute name="top" type="xs:boolean" use="optional"/> <!-- top vs bottom -->
1223 <xs:attribute name="items" type="xs:boolean" use="optional"/> <!-- top n vs top n% -->
1224 <xs:attribute name="count" type="xs:double" use="optional"/> <!-- top COUNT -->
1226 <xs:anyAttribute namespace="##other" processContents="lax"/>
1227 </xs:complexType>
1229 <xs:complexType name="Filters">
1230 <xs:sequence>
1231 <xs:element name="Filter" minOccurs="0" maxOccurs="unbounded">
1232 <xs:complexType>
1233 <xs:sequence>
1234 <xs:element name="Field" type="gnm:FilterField" minOccurs="0" maxOccurs="unbounded"/>
1235 </xs:sequence>
1236 <xs:attribute name="Area" type="xs:string" use="required"/>
1237 </xs:complexType>
1238 </xs:element>
1239 </xs:sequence>
1240 </xs:complexType>
1242 <xs:complexType name="MergedRegions">
1243 <xs:sequence>
1244 <xs:element name="Merge" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
1245 </xs:sequence>
1246 <xs:anyAttribute namespace="##other" processContents="lax"/>
1247 </xs:complexType>
1249 <xs:complexType name="Solver">
1250 <xs:sequence>
1251 <xs:element name="Constr" minOccurs="0" maxOccurs="unbounded">
1252 <xs:complexType>
1253 <xs:attribute name="lhs" type="gnm:SolverSide" use="required"/>
1254 <xs:attribute name="rhs" type="gnm:SolverSide" use="required"/>
1255 <xs:attribute name="Type" type="gnm:solver_constraint_t" use="required"/>
1256 </xs:complexType>
1257 </xs:element>
1258 </xs:sequence>
1259 <xs:attribute name="Target" type="gnm:CellRef" use="optional"/>
1260 <xs:attribute name="ProblemType" type="gnm:solver_problem_t" use="required"/>
1261 <xs:attribute name="ModelType" type="gnm:model_type_t"/>
1262 <xs:attribute name="Inputs" type="xs:string"/>
1263 <xs:attribute name="MaxTime" type="xs:integer" use="required"/>
1264 <xs:attribute name="MaxIter" type="xs:integer" use="required"/>
1265 <xs:attribute name="NonNeg" type="xs:boolean" use="required"/>
1266 <xs:attribute name="Discr" type="xs:boolean" use="required"/>
1267 <xs:attribute name="AutoScale" type="xs:boolean" use="required"/>
1268 <xs:attribute name="ShowIter" type="xs:boolean"/>
1269 <xs:attribute name="AnswerR" type="xs:boolean"/>
1270 <xs:attribute name="SensitivityR" type="xs:boolean"/>
1271 <xs:attribute name="LimitsR" type="xs:boolean"/>
1272 <xs:attribute name="PerformR" type="xs:boolean"/>
1273 <xs:attribute name="ProgramR" type="xs:boolean" use="required"/>
1274 <xs:anyAttribute namespace="##other" processContents="lax"/>
1275 </xs:complexType>
1277 <xs:simpleType name="solver_constraint_t">
1278 <xs:restriction base="xs:integer">
1279 <xs:enumeration value="0" /> <!-- none -->
1280 <xs:enumeration value="1" /> <!-- &lt;= -->
1281 <xs:enumeration value="2" /> <!-- &gt;= -->
1282 <xs:enumeration value="4" /> <!-- = -->
1283 <xs:enumeration value="8" /> <!-- Int -->
1284 <xs:enumeration value="16"/> <!-- boolean -->
1285 </xs:restriction>
1286 </xs:simpleType>
1288 <xs:simpleType name="SolverSide">
1289 <xs:restriction base="xs:string">
1290 <xs:pattern value="$?[A-Z]+$?\d+"/>
1291 </xs:restriction>
1292 </xs:simpleType>
1294 <xs:simpleType name="solver_problem_t">
1295 <xs:restriction base="xs:integer">
1296 <xs:enumeration value="0" /> <!-- SolverMinimize -->
1297 <xs:enumeration value="1" /> <!-- SolverMaximize -->
1298 <xs:enumeration value="2" /> <!-- SolverEqualTo -->
1299 </xs:restriction>
1300 </xs:simpleType>
1301 <xs:simpleType name="model_type_t">
1302 <xs:restriction base="xs:integer">
1303 <xs:enumeration value="0" /> <!-- GNM_SOLVER_LP -->
1304 <xs:enumeration value="1" /> <!-- GNM_SOLVER_QP -->
1305 <xs:enumeration value="2" /> <!-- GNM_SOLVER_NLP -->
1306 </xs:restriction>
1307 </xs:simpleType>
1308 <xs:simpleType name="SheetVisibility">
1309 <xs:restriction base="xs:string">
1310 <xs:enumeration value="GNM_SHEET_VISIBILITY_VISIBLE"/>
1311 <xs:enumeration value="GNM_SHEET_VISIBILITY_HIDDEN"/>
1312 <xs:enumeration value="GNM_SHEET_VISIBILITY_VERY_HIDDEN"/>
1313 </xs:restriction>
1314 </xs:simpleType>
1316 <xs:complexType name="Scenarios">
1317 <xs:sequence>
1318 <xs:element name="Scenario" minOccurs="0" maxOccurs="unbounded">
1319 <xs:complexType>
1320 <xs:sequence>
1321 <xs:element name="Name" type="xs:string"/>
1322 <xs:element name="Comment" type="xs:string"/>
1323 <xs:element name="CellsStr" type="xs:string"/>
1324 </xs:sequence>
1325 </xs:complexType>
1326 </xs:element>
1327 </xs:sequence>
1328 </xs:complexType>
1330 <xs:complexType name="SheetLayout">
1331 <xs:sequence>
1332 <xs:element name="FreezePanes" minOccurs="0" maxOccurs="1">
1333 <xs:complexType>
1334 <xs:attribute name="FrozenTopLeft" type="xs:string" use="required"/>
1335 <xs:attribute name="UnfrozenTopLeft" type="xs:string" use="required"/>
1336 </xs:complexType>
1337 </xs:element>
1338 </xs:sequence>
1339 <xs:attribute name="TopLeft" type="xs:string" use="required"/>
1340 <xs:anyAttribute namespace="##other" processContents="lax"/>
1341 </xs:complexType>
1342 </xs:schema>