1*b1cdbd2cSJim Jagielski<!--***********************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski ***********************************************************-->
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim Jagielski<!ENTITY % chart-class "(line|area|circle|ring|scatter|radar|bar|stock|add-in)">
26*b1cdbd2cSJim Jagielski<!ENTITY % chart-solid-type "(cuboid|cylinder|cone|pyramid)">
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski<!-- Chart element -->
29*b1cdbd2cSJim Jagielski<!ELEMENT chart:chart ( chart:title?, chart:subtitle?, chart:legend?,
30*b1cdbd2cSJim Jagielski					    chart:plot-area,
31*b1cdbd2cSJim Jagielski						table:table? )>
32*b1cdbd2cSJim Jagielski<!ATTLIST chart:chart
33*b1cdbd2cSJim Jagielski		  chart:class %chart-class; #REQUIRED
34*b1cdbd2cSJim Jagielski		  chart:add-in-name %string; #IMPLIED
35*b1cdbd2cSJim Jagielski		  chart:table-number-list %string; #IMPLIED
36*b1cdbd2cSJim Jagielski		  draw:name %string; #IMPLIED
37*b1cdbd2cSJim Jagielski		  %draw-position;
38*b1cdbd2cSJim Jagielski		  %draw-size;
39*b1cdbd2cSJim Jagielski		  %draw-style-name;
40*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED>
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski<!ATTLIST chart:chart %presentation-class; >
43*b1cdbd2cSJim Jagielski<!ATTLIST chart:chart %zindex;>
44*b1cdbd2cSJim Jagielski<!ATTLIST chart:chart %draw-end-position; >
45*b1cdbd2cSJim Jagielski<!ATTLIST chart:chart draw:id %draw-shape-id; >
46*b1cdbd2cSJim Jagielski<!ATTLIST chart:chart draw:layer %layerName; #IMPLIED>
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski<!ATTLIST style:properties
49*b1cdbd2cSJim Jagielski		  chart:scale-text %boolean; "true"
50*b1cdbd2cSJim Jagielski		  chart:stock-updown-bars %boolean; "false"
51*b1cdbd2cSJim Jagielski		  chart:stock-with-volume %boolean; "false"
52*b1cdbd2cSJim Jagielski		  chart:three-dimensional %boolean; "false"
53*b1cdbd2cSJim Jagielski		  chart:deep %boolean; "false"
54*b1cdbd2cSJim Jagielski		  chart:lines %boolean; "false"
55*b1cdbd2cSJim Jagielski		  chart:percentage %boolean; "false"
56*b1cdbd2cSJim Jagielski		  chart:solid-type %chart-solid-type; "cuboid"
57*b1cdbd2cSJim Jagielski		  chart:splines %nonNegativeInteger; "0"
58*b1cdbd2cSJim Jagielski		  chart:stacked %boolean; "false"
59*b1cdbd2cSJim Jagielski		  chart:symbol %integer; "-1"
60*b1cdbd2cSJim Jagielski		  chart:vertical %boolean; "false"
61*b1cdbd2cSJim Jagielski		  chart:lines-used %nonNegativeInteger; "0"
62*b1cdbd2cSJim Jagielski		  chart:connect-bars %boolean; "false">
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielski<!-- Main/Sub Title -->
65*b1cdbd2cSJim Jagielski<!-- the cell-address attribute is currently not supported for titles -->
66*b1cdbd2cSJim Jagielski<!ELEMENT chart:title (text:p)?>
67*b1cdbd2cSJim Jagielski<!ATTLIST chart:title
68*b1cdbd2cSJim Jagielski		  table:cell-range %cell-address; #IMPLIED
69*b1cdbd2cSJim Jagielski		  svg:x %coordinate; #IMPLIED
70*b1cdbd2cSJim Jagielski		  svg:y %coordinate; #IMPLIED
71*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED >
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski<!ELEMENT chart:subtitle (text:p)?>
74*b1cdbd2cSJim Jagielski<!ATTLIST chart:subtitle
75*b1cdbd2cSJim Jagielski		  table:cell-range %cell-address; #IMPLIED
76*b1cdbd2cSJim Jagielski		  svg:x %coordinate; #IMPLIED
77*b1cdbd2cSJim Jagielski		  svg:y %coordinate; #IMPLIED
78*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED >
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski<!-- you must specify either a legend-position or both, x and y coordinates -->
81*b1cdbd2cSJim Jagielski<!ELEMENT chart:legend EMPTY>
82*b1cdbd2cSJim Jagielski<!ATTLIST chart:legend
83*b1cdbd2cSJim Jagielski		  chart:legend-position (top|left|bottom|right) "right"
84*b1cdbd2cSJim Jagielski		  svg:x %coordinate; #IMPLIED
85*b1cdbd2cSJim Jagielski		  svg:y %coordinate; #IMPLIED
86*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED >
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski<!-- Plot-Area specification -->
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielski<!ELEMENT chart:plot-area (dr3d:light*,
91*b1cdbd2cSJim Jagielski						   chart:axis*,
92*b1cdbd2cSJim Jagielski						   chart:categories?,
93*b1cdbd2cSJim Jagielski						   chart:series*,
94*b1cdbd2cSJim Jagielski						   chart:wall?,
95*b1cdbd2cSJim Jagielski						   chart:floor?) >
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski<!ATTLIST chart:plot-area
98*b1cdbd2cSJim Jagielski		  svg:x %coordinate; #IMPLIED
99*b1cdbd2cSJim Jagielski		  svg:y %coordinate; #IMPLIED
100*b1cdbd2cSJim Jagielski		  svg:width %length; #IMPLIED
101*b1cdbd2cSJim Jagielski		  svg:height %length; #IMPLIED
102*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED
103*b1cdbd2cSJim Jagielski		  table:cell-range-address %cell-range-address; #IMPLIED
104*b1cdbd2cSJim Jagielski		  chart:table-number-list %string; #IMPLIED
105*b1cdbd2cSJim Jagielski		  chart:data-source-has-labels (none|row|column|both) "none" >
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski<!-- 3d scene attributes on plot-area -->
108*b1cdbd2cSJim Jagielski<!ATTLIST chart:plot-area
109*b1cdbd2cSJim Jagielski		  dr3d:vrp %vector3D; #IMPLIED
110*b1cdbd2cSJim Jagielski		  dr3d:vpn %vector3D; #IMPLIED
111*b1cdbd2cSJim Jagielski		  dr3d:vup %vector3D; #IMPLIED
112*b1cdbd2cSJim Jagielski		  dr3d:projection (parallel|perspective) #IMPLIED
113*b1cdbd2cSJim Jagielski		  dr3d:transform CDATA #IMPLIED
114*b1cdbd2cSJim Jagielski		  dr3d:distance %length; #IMPLIED
115*b1cdbd2cSJim Jagielski		  dr3d:focal-length %length; #IMPLIED
116*b1cdbd2cSJim Jagielski		  dr3d:shadow-slant %nonNegativeInteger; #IMPLIED
117*b1cdbd2cSJim Jagielski		  dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED
118*b1cdbd2cSJim Jagielski		  dr3d:ambient-color %color; #IMPLIED
119*b1cdbd2cSJim Jagielski		  dr3d:lighting-mode %boolean; #IMPLIED >
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski<!ATTLIST style:properties
122*b1cdbd2cSJim Jagielski		  chart:series-source (columns|rows) "columns" >
123*b1cdbd2cSJim Jagielski
124*b1cdbd2cSJim Jagielski<!ELEMENT chart:wall EMPTY>
125*b1cdbd2cSJim Jagielski<!ATTLIST chart:wall
126*b1cdbd2cSJim Jagielski		  svg:width %length; #IMPLIED
127*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED >
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski<!ELEMENT chart:floor EMPTY>
130*b1cdbd2cSJim Jagielski<!ATTLIST chart:floor
131*b1cdbd2cSJim Jagielski		  svg:width %length; #IMPLIED
132*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED >
133*b1cdbd2cSJim Jagielski
134*b1cdbd2cSJim Jagielski<!-- Axis -->
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski<!ELEMENT chart:axis (chart:title?, chart:grid*)>
137*b1cdbd2cSJim Jagielski<!ATTLIST chart:axis
138*b1cdbd2cSJim Jagielski		  chart:class (category|value|series|domain) #REQUIRED
139*b1cdbd2cSJim Jagielski		  chart:name %string; #IMPLIED
140*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED >
141*b1cdbd2cSJim Jagielski
142*b1cdbd2cSJim Jagielski<!ATTLIST style:properties
143*b1cdbd2cSJim Jagielski		  chart:tick-marks-major-inner %boolean; "false"
144*b1cdbd2cSJim Jagielski		  chart:tick-marks-major-outer %boolean; "true"
145*b1cdbd2cSJim Jagielski		  chart:tick-marks-minor-inner %boolean; "false"
146*b1cdbd2cSJim Jagielski		  chart:tick-marks-minor-outer %boolean; "false"
147*b1cdbd2cSJim Jagielski		  chart:logarithmic %boolean; "false"
148*b1cdbd2cSJim Jagielski		  chart:maximum %float; #IMPLIED
149*b1cdbd2cSJim Jagielski		  chart:minimum %float; #IMPLIED
150*b1cdbd2cSJim Jagielski		  chart:origin %float; #IMPLIED
151*b1cdbd2cSJim Jagielski		  chart:interval-major %float; #IMPLIED
152*b1cdbd2cSJim Jagielski		  chart:interval-minor %float; #IMPLIED
153*b1cdbd2cSJim Jagielski		  chart:gap-width %integer; #IMPLIED
154*b1cdbd2cSJim Jagielski		  chart:overlap %integer; #IMPLIED
155*b1cdbd2cSJim Jagielski		  text:line-break %boolean; "true"
156*b1cdbd2cSJim Jagielski		  chart:display-label %boolean; "true"
157*b1cdbd2cSJim Jagielski		  chart:label-arrangement (side-by-side|stagger-even|stagger-odd) "side-by-side"
158*b1cdbd2cSJim Jagielski		  chart:visible %boolean; "true"
159*b1cdbd2cSJim Jagielski		  chart:link-data-style-to-source %boolean; "true" >
160*b1cdbd2cSJim Jagielski
161*b1cdbd2cSJim Jagielski<!ELEMENT chart:grid EMPTY>
162*b1cdbd2cSJim Jagielski<!ATTLIST chart:grid
163*b1cdbd2cSJim Jagielski		  chart:class (major|minor) "major"
164*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED >
165*b1cdbd2cSJim Jagielski
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim Jagielski<!ELEMENT chart:categories EMPTY>
168*b1cdbd2cSJim Jagielski<!ATTLIST chart:categories
169*b1cdbd2cSJim Jagielski		  table:cell-range-address %cell-range-address; #REQUIRED >
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski<!--
172*b1cdbd2cSJim Jagielski	each series element must have an cell-range-address element that points
173*b1cdbd2cSJim Jagielski	to the underlying table data.
174*b1cdbd2cSJim Jagielski	Impl. Note: Internally all href elements are merged to one table range
175*b1cdbd2cSJim Jagielski	that represents the data for the whole chart
176*b1cdbd2cSJim Jagielski-->
177*b1cdbd2cSJim Jagielski<!ELEMENT chart:series ( chart:domain*,
178*b1cdbd2cSJim Jagielski						 chart:data-point* )>
179*b1cdbd2cSJim Jagielski<!ATTLIST chart:series
180*b1cdbd2cSJim Jagielski		  chart:values-cell-range-address %cell-range-address; #IMPLIED
181*b1cdbd2cSJim Jagielski		  chart:label-cell-address %cell-address; #IMPLIED
182*b1cdbd2cSJim Jagielski		  chart:class %chart-class; #IMPLIED
183*b1cdbd2cSJim Jagielski		  chart:attached-axis %string; #IMPLIED
184*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED >
185*b1cdbd2cSJim Jagielski
186*b1cdbd2cSJim Jagielski<!ELEMENT chart:domain EMPTY>
187*b1cdbd2cSJim Jagielski<!ATTLIST chart:domain
188*b1cdbd2cSJim Jagielski		  table:cell-range-address %cell-range-address; #IMPLIED >
189*b1cdbd2cSJim Jagielski
190*b1cdbd2cSJim Jagielski<!ELEMENT chart:data-point EMPTY>
191*b1cdbd2cSJim Jagielski<!ATTLIST chart:data-point
192*b1cdbd2cSJim Jagielski		  chart:repeated %nonNegativeInteger; #IMPLIED
193*b1cdbd2cSJim Jagielski		  chart:style-name %styleName; #IMPLIED >
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski<!-- statistical properties -->
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski<!ATTLIST style:properties
198*b1cdbd2cSJim Jagielski		  chart:mean-value %boolean; #IMPLIED
199*b1cdbd2cSJim Jagielski		  chart:error-category (none|variance|standard-deviation|percentage|error-margin|constant) "none"
200*b1cdbd2cSJim Jagielski		  chart:error-percentage %float; #IMPLIED
201*b1cdbd2cSJim Jagielski		  chart:error-margin %float; #IMPLIED
202*b1cdbd2cSJim Jagielski		  chart:error-lower-limit %float; #IMPLIED
203*b1cdbd2cSJim Jagielski		  chart:error-upper-limit %float; #IMPLIED
204*b1cdbd2cSJim Jagielski		  chart:error-upper-indicator %boolean; #IMPLIED
205*b1cdbd2cSJim Jagielski		  chart:error-lower-indicator %boolean; #IMPLIED
206*b1cdbd2cSJim Jagielski		  chart:regression-type (none|linear|logarithmic|exponential|power) "none" >
207*b1cdbd2cSJim Jagielski
208*b1cdbd2cSJim Jagielski<!-- data label properties -->
209*b1cdbd2cSJim Jagielski
210*b1cdbd2cSJim Jagielski<!ATTLIST style:properties
211*b1cdbd2cSJim Jagielski		  chart:data-label-number (none|value|percentage) "none"
212*b1cdbd2cSJim Jagielski		  chart:data-label-text %boolean; "false"
213*b1cdbd2cSJim Jagielski		  chart:data-label-symbol %boolean; "false" >
214*b1cdbd2cSJim Jagielski
215*b1cdbd2cSJim Jagielski<!-- general text properties -->
216*b1cdbd2cSJim Jagielski
217*b1cdbd2cSJim Jagielski<!ATTLIST style:properties text:rotation-angle %integer; "0" >
218*b1cdbd2cSJim Jagielski
219*b1cdbd2cSJim Jagielski<!-- symbol properties -->
220*b1cdbd2cSJim Jagielski
221*b1cdbd2cSJim Jagielski<!ATTLIST style:properties
222*b1cdbd2cSJim Jagielski		  chart:symbol-width %nonNegativeLength; #IMPLIED
223*b1cdbd2cSJim Jagielski		  chart:symbol-height %nonNegativeLength; #IMPLIED
224*b1cdbd2cSJim Jagielski		  chart:symbol-image-name %string; #IMPLIED >
225