1--- ods-schema/OpenDocument-v1.2-os-schema.rng	2015-04-08 21:49:54.000000000 -0600
2+++ ods-schema/OpenDocument-v1.2-os-ext-schema.rng	2016-01-01 19:47:48.204868483 -0700
3@@ -62,6 +62,12 @@
4 	xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
5 	xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
6 	xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
7+
8+	xmlns:gnm="http://www.gnumeric.org/odf-extension/1.0"
9+	xmlns:css3t="http://www.w3.org/TR/css3-text/"
10+	xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
11+	xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"
12+	xmlns:tableooo="http://openoffice.org/2009/table"
13 >
14 	<define name="office-process-content">
15 		<optional>
16@@ -2484,6 +2490,11 @@
17 						<ref name="string"/>
18 					</attribute>
19 				</optional>
20+				<optional>
21+					<attribute name="gnm:error-value">
22+						<ref name="string"/>
23+					</attribute>
24+				</optional>
25 			</group>
26 		</choice>
27 	</define>
28@@ -3380,6 +3391,9 @@
29 			<optional>
30 				<ref name="table-named-expressions"/>
31 			</optional>
32+			<optional>
33+				<ref name="gnm-selections"/>
34+			</optional>
35 		</element>
36 	</define>
37 	<define name="table-columns-and-groups">
38@@ -3670,6 +3684,11 @@
39 				</attribute>
40 			</optional>
41 			<optional>
42+				<attribute name="gnm:columns-spanned-fake">
43+					<ref name="boolean"/>
44+				</attribute>
45+			</optional>
46+			<optional>
47 				<attribute name="table:number-rows-spanned">
48 					<ref name="positiveInteger"/>
49 				</attribute>
50@@ -6369,6 +6388,26 @@
51 	</define>
52 	<define name="common-draw-position-attlist">
53 		<optional>
54+			<attribute name="gnm:is-position-manual">
55+				<ref name="boolean"/>
56+			</attribute>
57+		</optional>
58+		<optional>
59+			<attribute name="gnm:position">
60+				<ref name="string"/>
61+			</attribute>
62+		</optional>
63+		<optional>
64+			<attribute name="gnm:anchor">
65+				<ref name="string"/>
66+			</attribute>
67+		</optional>
68+		<optional>
69+			<attribute name="gnm:compass">
70+				<ref name="string"/>
71+			</attribute>
72+		</optional>
73+		<optional>
74 			<attribute name="svg:x">
75 				<ref name="coordinate"/>
76 			</attribute>
77@@ -8354,9 +8393,14 @@
78 	<define name="chart-title-attlist">
79 		<interleave>
80 			<optional>
81-				<attribute name="table:cell-range">
82-					<ref name="cellRangeAddressList"/>
83-				</attribute>
84+			        <choice>
85+				        <attribute name="table:cell-range">
86+					        <ref name="cellRangeAddressList"/>
87+				        </attribute>
88+				        <attribute name="gnm:expression">
89+					        <ref name="string"/>
90+				        </attribute>
91+				</choice>
92 			</optional>
93 			<ref name="common-draw-position-attlist"/>
94 			<optional>
95@@ -8638,6 +8682,9 @@
96 			<optional>
97 				<ref name="chart-data-label"/>
98 			</optional>
99+			<zeroOrMore>
100+				<ref name="gnm-droplines"/>
101+			</zeroOrMore>
102 		</element>
103 	</define>
104 	<define name="chart-series-attlist">
105@@ -8648,9 +8695,14 @@
106 				</attribute>
107 			</optional>
108 			<optional>
109-				<attribute name="chart:label-cell-address">
110-					<ref name="cellRangeAddressList"/>
111-				</attribute>
112+			        <choice>
113+				        <attribute name="chart:label-cell-address">
114+					        <ref name="cellRangeAddressList"/>
115+				        </attribute>
116+				        <attribute name="gnm:label-cell-expression">
117+					        <ref name="string"/>
118+				        </attribute>
119+				</choice>
120 			</optional>
121 			<optional>
122 				<attribute name="chart:class">
123@@ -10473,6 +10525,7 @@
124 			<ref name="common-data-field-attlist"/>
125 			<ref name="list-source"/>
126 			<ref name="list-source-type"/>
127+			<ref name="gnm-list-linkage-type"/>
128 			<ref name="common-linked-cell"/>
129 			<ref name="common-source-cell-range"/>
130 			<optional>
131@@ -10637,6 +10690,7 @@
132 		<ref name="selected"/>
133 		<ref name="common-tab-attlist"/>
134 		<ref name="common-title-attlist"/>
135+		<ref name="gnm-value-type-attlist"/>
136 		<ref name="common-value-attlist"/>
137 		<ref name="common-data-field-attlist"/>
138 		<ref name="common-form-visual-effect-attlist"/>
139@@ -12676,11 +12730,28 @@
140 		</element>
141 	</define>
142 	<define name="number-scientific-number-attlist">
143-		<optional>
144-			<attribute name="number:min-exponent-digits">
145-				<ref name="integer"/>
146-			</attribute>
147-		</optional>
148+		<interleave>
149+			<optional>
150+				<attribute name="number:min-exponent-digits">
151+					<ref name="integer"/>
152+				</attribute>
153+			</optional>
154+			<optional>
155+				<attribute name="gnm:forced-exponent-sign">
156+					<ref name="boolean"/>
157+				</attribute>
158+			</optional>
159+			<optional>
160+				<attribute name="gnm:engineering">
161+					<ref name="boolean"/>
162+				</attribute>
163+			</optional>
164+			<optional>
165+				<attribute name="gnm:literal-E">
166+					<ref name="boolean"/>
167+				</attribute>
168+			</optional>
169+		</interleave>
170 	</define>
171 	<define name="number-fraction">
172 		<element name="number:fraction">
173@@ -12702,10 +12773,22 @@
174 				</attribute>
175 			</optional>
176 			<optional>
177+				<attribute name="gnm:max-denominator-digits">
178+					<ref name="integer"/>
179+				</attribute>
180+			</optional>
181+			<optional>
182 				<attribute name="number:denominator-value">
183 					<ref name="integer"/>
184 				</attribute>
185 			</optional>
186+			<optional>
187+				<attribute name="gnm:display-factor">
188+					<choice>
189+						<value>pi</value>
190+					</choice>
191+				</attribute>
192+			</optional>
193 		</interleave>
194 	</define>
195 	<define name="number-currency-style">
196@@ -12997,14 +13080,17 @@
197 		</element>
198 	</define>
199 	<define name="number-hours-attlist">
200-		<optional>
201-			<attribute name="number:style">
202-				<choice>
203-					<value>short</value>
204-					<value>long</value>
205-				</choice>
206-			</attribute>
207-		</optional>
208+		<interleave>
209+			<ref name="gnm-truncate-on-overflow"/>
210+			<optional>
211+				<attribute name="number:style">
212+					<choice>
213+						<value>short</value>
214+						<value>long</value>
215+					</choice>
216+				</attribute>
217+			</optional>
218+		</interleave>
219 	</define>
220 	<define name="number-minutes">
221 		<element name="number:minutes">
222@@ -13013,14 +13099,17 @@
223 		</element>
224 	</define>
225 	<define name="number-minutes-attlist">
226-		<optional>
227-			<attribute name="number:style">
228-				<choice>
229-					<value>short</value>
230-					<value>long</value>
231-				</choice>
232-			</attribute>
233-		</optional>
234+		<interleave>
235+			<ref name="gnm-truncate-on-overflow"/>
236+			<optional>
237+				<attribute name="number:style">
238+					<choice>
239+						<value>short</value>
240+						<value>long</value>
241+					</choice>
242+				</attribute>
243+			</optional>
244+		</interleave>
245 	</define>
246 	<define name="number-seconds">
247 		<element name="number:seconds">
248@@ -13030,6 +13119,7 @@
249 	</define>
250 	<define name="number-seconds-attlist">
251 		<interleave>
252+			<ref name="gnm-truncate-on-overflow"/>
253 			<optional>
254 				<attribute name="number:style">
255 					<choice>
256@@ -13047,7 +13137,16 @@
257 	</define>
258 	<define name="number-am-pm">
259 		<element name="number:am-pm">
260-			<empty/>
261+			<optional>
262+				<attribute name="gnm:am-suffix">
263+					<ref name="string"/>
264+				</attribute>
265+			</optional>
266+			<optional>
267+				<attribute name="gnm:pm-suffix">
268+					<ref name="string"/>
269+				</attribute>
270+			</optional>
271 		</element>
272 	</define>
273 	<define name="number-boolean-style">
274@@ -13097,7 +13196,15 @@
275 	</define>
276 	<define name="number-text">
277 		<element name="number:text">
278-			<text/>
279+			<zeroOrMore>
280+				<optional>
281+					<ref name="gnm-invisible"/>
282+				</optional>
283+				<optional>
284+					<ref name="gnm-repeated"/>
285+				</optional>
286+				<text/>
287+			</zeroOrMore>
288 		</element>
289 	</define>
290 	<define name="number-text-content">
291@@ -13169,6 +13276,11 @@
292 					</choice>
293 				</attribute>
294 			</optional>
295+			<optional>
296+				<attribute name="gnm:format-magic">
297+					<ref name="integer"/>
298+				</attribute>
299+			</optional>
300 		</interleave>
301 	</define>
302 	<define name="common-auto-reorder-attlist">
303@@ -13203,6 +13315,11 @@
304 				</attribute>
305 			</optional>
306 			<optional>
307+				<attribute name="gnm:min-integer-chars">
308+					<ref name="integer"/>
309+				</attribute>
310+			</optional>
311+			<optional>
312 				<attribute name="number:grouping">
313 					<ref name="boolean"/>
314 				</attribute>
315@@ -14101,6 +14218,22 @@
316 					<ref name="string"/>
317 				</attribute>
318 			</optional>
319+			<optional>
320+				<group>
321+					<attribute name="gnm:arrow-type">
322+						<ref name="integer"/>
323+					</attribute>
324+					<attribute name="gnm:arrow-a">
325+						<ref name="double"/>
326+					</attribute>
327+					<attribute name="gnm:arrow-b">
328+						<ref name="double"/>
329+					</attribute>
330+					<attribute name="gnm:arrow-c">
331+						<ref name="double"/>
332+					</attribute>
333+				</group>
334+			</optional>
335 		</interleave>
336 	</define>
337 	<define name="draw-stroke-dash">
338@@ -14383,6 +14516,21 @@
339 					<ref name="boolean"/>
340 				</attribute>
341 			</optional>
342+			<optional>
343+				<attribute name="gnm:style-print">
344+					<ref name="string"/>
345+				</attribute>
346+			</optional>
347+			<optional>
348+				<attribute name="gnm:scale-to-X">
349+					<ref name="positiveInteger"/>
350+				</attribute>
351+			</optional>
352+			<optional>
353+				<attribute name="gnm:scale-to-Y">
354+					<ref name="positiveInteger"/>
355+				</attribute>
356+			</optional>
357 		</interleave>
358 	</define>
359 	<define name="style-page-layout-properties-elements">
360@@ -14874,11 +15022,33 @@
361 				</attribute>
362 			</optional>
363 			<optional>
364+				<attribute name="gnm:font-stretch-pango">
365+					<ref name="integer"/>
366+				</attribute>
367+			</optional>
368+			<optional>
369+				<attribute name="gnm:font-gravity-pango">
370+					<ref name="integer"/>
371+				</attribute>
372+			</optional>
373+			<optional>
374+				<attribute name="gnm:auto-font">
375+					<ref name="boolean"/>
376+				</attribute>
377+			</optional>
378+			<optional>
379 				<attribute name="style:text-underline-mode">
380 					<ref name="lineMode"/>
381 				</attribute>
382 			</optional>
383 			<optional>
384+				<attribute name="gnm:text-underline-placement">
385+					<choice>
386+						<value>low</value>
387+					</choice>
388+				</attribute>
389+			</optional>
390+			<optional>
391 				<attribute name="style:text-line-through-mode">
392 					<ref name="lineMode"/>
393 				</attribute>
394@@ -15090,6 +15260,18 @@
395 	<define name="style-paragraph-properties-attlist">
396 		<interleave>
397 			<optional>
398+				<attribute name="gnm:GnmHAlign">
399+					<ref name="integer"/>
400+				</attribute>
401+			</optional>
402+			<optional>
403+				<attribute name="css3t:text-justify">
404+					<choice>
405+						<value>distribute</value>
406+					</choice>
407+				</attribute>
408+			</optional>
409+			<optional>
410 				<attribute name="fo:line-height">
411 					<choice>
412 						<value>normal</value>
413@@ -15461,14 +15643,21 @@
414 		</optional>
415 	</define>
416 	<define name="common-background-color-attlist">
417-		<optional>
418-			<attribute name="fo:background-color">
419-				<choice>
420-					<value>transparent</value>
421+		<interleave>
422+			<optional>
423+				<attribute name="fo:background-color">
424+					<choice>
425+						<value>transparent</value>
426+						<ref name="color"/>
427+					</choice>
428+				</attribute>
429+			</optional>
430+			<optional>
431+				<attribute name="gnm:background-colour">
432 					<ref name="color"/>
433-				</choice>
434-			</attribute>
435-		</optional>
436+				</attribute>
437+			</optional>
438+		</interleave>
439 	</define>
440 	<define name="style-background-image">
441 		<optional>
442@@ -15564,6 +15753,36 @@
443 				<ref name="string"/>
444 			</attribute>
445 		</optional>
446+		<optional>
447+			<attribute name="gnm:border-line-style-top">
448+				<ref name="string"/>
449+			</attribute>
450+		</optional>
451+		<optional>
452+			<attribute name="gnm:border-line-style-bottom">
453+				<ref name="string"/>
454+			</attribute>
455+		</optional>
456+		<optional>
457+			<attribute name="gnm:border-line-style-left">
458+				<ref name="string"/>
459+			</attribute>
460+		</optional>
461+		<optional>
462+			<attribute name="gnm:border-line-style-right">
463+				<ref name="string"/>
464+			</attribute>
465+		</optional>
466+		<optional>
467+			<attribute name="gnm:diagonal-bl-tr-line-style">
468+				<ref name="string"/>
469+			</attribute>
470+		</optional>
471+		<optional>
472+			<attribute name="gnm:diagonal-tl-br-line-style">
473+				<ref name="string"/>
474+			</attribute>
475+		</optional>
476 	</define>
477 	<define name="common-border-line-width-attlist">
478 		<optional>
479@@ -15904,6 +16123,37 @@
480 					<ref name="boolean"/>
481 				</attribute>
482 			</optional>
483+			<optional>
484+				<attribute name="gnm:display-formulas">
485+					<ref name="boolean"/>
486+				</attribute>
487+			</optional>
488+			<optional>
489+				<attribute name="gnm:display-col-header">
490+					<ref name="boolean"/>
491+				</attribute>
492+			</optional>
493+			<optional>
494+				<attribute name="gnm:display-row-header">
495+					<ref name="boolean"/>
496+				</attribute>
497+			</optional>
498+			<optional>
499+				<attribute name="gnm:tab-color">
500+					<ref name="color"/>
501+				</attribute>
502+			</optional>
503+			<optional>
504+				<attribute name="gnm:tab-text-color">
505+					<ref name="color"/>
506+				</attribute>
507+			</optional>
508+			<optional>
509+				<attribute name="tableooo:tab-color">
510+					<ref name="color"/>
511+				</attribute>
512+			</optional>
513+
514 		</interleave>
515 	</define>
516 	<define name="style-table-properties-elements">
517@@ -16004,6 +16254,11 @@
518 				</attribute>
519 			</optional>
520 			<optional>
521+				<attribute name="gnm:GnmVAlign">
522+					<ref name="integer"/>
523+				</attribute>
524+			</optional>
525+			<optional>
526 				<attribute name="style:text-align-source">
527 					<choice>
528 						<value>fix</value>
529@@ -16028,6 +16283,16 @@
530 			<ref name="common-background-color-attlist"/>
531 			<ref name="common-border-attlist"/>
532 			<optional>
533+				<attribute name="gnm:pattern-colour">
534+					<ref name="color"/>
535+				</attribute>
536+			</optional>
537+			<optional>
538+				<attribute name="gnm:pattern">
539+					<ref name="integer"/>
540+				</attribute>
541+			</optional>
542+			<optional>
543 				<attribute name="style:diagonal-tl-br">
544 					<ref name="string"/>
545 				</attribute>
546@@ -16104,6 +16369,16 @@
547 					<ref name="boolean"/>
548 				</attribute>
549 			</optional>
550+			<optional>
551+				<attribute name="gnm:input-title">
552+					<ref name="string"/>
553+				</attribute>
554+			</optional>
555+			<optional>
556+				<attribute name="gnm:input-msg">
557+					<ref name="string"/>
558+				</attribute>
559+			</optional>
560 		</interleave>
561 	</define>
562 	<define name="common-style-direction-attlist">
563@@ -17060,6 +17335,46 @@
564 					<ref name="nonNegativeInteger"/>
565 				</attribute>
566 			</optional>
567+			<optional>
568+				<attribute name="gnm:auto-dash">
569+					<ref name="boolean"/>
570+				</attribute>
571+			</optional>
572+			<optional>
573+				<attribute name="gnm:auto-width">
574+					<ref name="boolean"/>
575+				</attribute>
576+			</optional>
577+			<optional>
578+				<attribute name="gnm:auto-color">
579+					<ref name="boolean"/>
580+				</attribute>
581+			</optional>
582+			<optional>
583+				<attribute name="gnm:auto-type">
584+					<ref name="boolean"/>
585+				</attribute>
586+			</optional>
587+			<optional>
588+				<attribute name="gnm:foreground-solid">
589+					<ref name="boolean"/>
590+				</attribute>
591+			</optional>
592+			<optional>
593+				<attribute name="gnm:pattern">
594+					<ref name="integer"/>
595+				</attribute>
596+			</optional>
597+			<optional>
598+				<attribute name="gnm:marker-outline-colour">
599+					<ref name="color"/>
600+				</attribute>
601+			</optional>
602+			<optional>
603+				<attribute name="gnm:marker-fill-colour">
604+					<ref name="color"/>
605+				</attribute>
606+			</optional>
607 		</interleave>
608 	</define>
609 	<define name="style-graphic-fill-properties-attlist">
610@@ -17388,6 +17703,10 @@
611 						<value>none</value>
612 						<value>cubic-spline</value>
613 						<value>b-spline</value>
614+						<value>gnm:closed-spline</value>
615+						<value>gnm:parabolic-cspline</value>
616+						<value>gnm:cubic-cspline</value>
617+						<value>gnm:clamped-cspline</value>
618 					</choice>
619 				</attribute>
620 			</optional>
621@@ -17661,6 +17980,10 @@
622 						<value>logarithmic</value>
623 						<value>exponential</value>
624 						<value>power</value>
625+						<value>gnm:polynomial</value>
626+						<value>gnm:log-fit</value>
627+						<value>gnm:moving-average</value>
628+						<value>gnm:exponential-smoothed</value>
629 					</choice>
630 				</attribute>
631 			</optional>
632@@ -17697,6 +18020,62 @@
633 					<ref name="boolean"/>
634 				</attribute>
635 			</optional>
636+			<optional>
637+				<attribute name="gnm:outliers">
638+					<ref name="boolean"/>
639+				</attribute>
640+			</optional>
641+			<optional>
642+				<attribute name="gnm:multi-series">
643+					<ref name="boolean"/>
644+				</attribute>
645+			</optional>
646+			<optional>
647+				<attribute name="gnm:vary-style-by-element">
648+					<ref name="boolean"/>
649+				</attribute>
650+			</optional>
651+			<optional>
652+				<attribute name="gnm:show-negatives">
653+					<ref name="boolean"/>
654+				</attribute>
655+			</optional>
656+			<optional>
657+				<attribute name="gnm:radius-ratio">
658+					<ref name="double"/>
659+				</attribute>
660+			</optional>
661+			<optional>
662+				<attribute name="gnm:default-separation">
663+					<ref name="percent"/>
664+				</attribute>
665+			</optional>
666+			<optional>
667+				<attribute name="gnm:regression-affine">
668+					<ref name="boolean"/>
669+				</attribute>
670+			</optional>
671+			<optional>
672+				<attribute name="loext:regression-force-intercept">
673+					<ref name="boolean"/>
674+				</attribute>
675+			</optional>
676+			<optional>
677+				<attribute name="loext:regression-intercept-value">
678+					<ref name="double"/>
679+				</attribute>
680+			</optional>
681+			<optional>
682+				<attribute name="gnm:regression-polynomial-dims">
683+					<ref name="nonNegativeInteger"/>
684+				</attribute>
685+			</optional>
686+			<optional>
687+				<attribute name="loext:regression-max-degree">
688+					<ref name="nonNegativeInteger"/>
689+				</attribute>
690+			</optional>
691+
692 		</interleave>
693 	</define>
694 	<define name="labelPositions">
695@@ -18124,4 +18503,85 @@
696 			</element>
697 		</zeroOrMore>
698 	</define>
699+
700+	<define name="gnm-selections">
701+		<element name="gnm:selections">
702+			<attribute name="gnm:cursor-col">
703+				<ref name="integer"/>
704+			</attribute>
705+			<attribute name="gnm:cursor-row">
706+				<ref name="integer"/>
707+			</attribute>
708+			<zeroOrMore>
709+				<ref name="gnm-selection"/>
710+			</zeroOrMore>
711+		</element>
712+	</define>
713+	<define name="gnm-selection">
714+		<element name="gnm:selection">
715+			<attribute name="gnm:start-col">
716+				<ref name="integer"/>
717+			</attribute>
718+			<attribute name="gnm:start-row">
719+				<ref name="integer"/>
720+			</attribute>
721+			<attribute name="gnm:end-col">
722+				<ref name="integer"/>
723+			</attribute>
724+			<attribute name="gnm:end-row">
725+				<ref name="integer"/>
726+			</attribute>
727+		</element>
728+	</define>
729+	<define name="gnm-list-linkage-type">
730+		<optional>
731+			<attribute name="gnm:list-linkage-type">
732+				<choice>
733+					<value>selection</value>
734+					<value>selection-indices</value>
735+				</choice>
736+			</attribute>
737+		</optional>
738+	</define>
739+	<define name="gnm-value-type-attlist">
740+		<optional>
741+			<attribute name="gnm:value-type">
742+				<ref name="valueType"/>
743+			</attribute>
744+		</optional>
745+	</define>
746+	<define name="gnm-truncate-on-overflow">
747+		<optional>
748+			<attribute name="gnm:truncate-on-overflow">
749+				<ref name="boolean"/>
750+			</attribute>
751+		</optional>
752+	</define>
753+	<define name="gnm-invisible">
754+		<element name="gnm:invisible">
755+			<optional>
756+		  		<attribute name="gnm:char">
757+					<ref name="string"/>
758+				</attribute>
759+			</optional>
760+			<optional>
761+				<attribute name="office:process-content">
762+					<ref name="boolean"/>
763+				</attribute>
764+			</optional>
765+			<empty/>
766+		</element>
767+	</define>
768+	<define name="gnm-repeated">
769+		<element name="gnm:repeated">
770+			<text/>
771+		</element>
772+	</define>
773+	<define name="gnm-droplines">
774+		<element name="gnm:droplines">
775+			<attribute name="chart:style-name">
776+				<ref name="styleNameRef"/>
777+			</attribute>
778+		</element>
779+	</define>
780 </grammar>
781