@end iftex
@menu
-* SPV heading Element::
-* SPV label Element::
-* SPV container Element::
-* SPV text Element (Inside @code{container})::
-* SPV html Element::
-* SPV table Element::
-* SPV tableStructure Element::
-* SPV dataPath Element::
-* SPV pageSetup Element::
-* SPV pageHeader and pageFooter Elements::
-* SPV pageParagraph Element::
-* SPV @code{text} Element (Inside @code{pageParagraph})::
+* SPV Structure heading Element::
+* SPV Structure label Element::
+* SPV Structure container Element::
+* SPV Structure text Element (Inside @code{container})::
+* SPV Structure html Element::
+* SPV Structure table Element::
+* SPV Structure tableStructure Element::
+* SPV Structure dataPath Element::
+* SPV Structure pageSetup Element::
+* SPV Structure pageHeader and pageFooter Elements::
+* SPV Structure pageParagraph Element::
+* SPV Structure @code{text} Element (Inside @code{pageParagraph})::
@end menu
@node SPV Structure heading Element
@node SPV Structure @code{text} Element (Inside @code{pageParagraph})
@subsection The @code{text} Element (Inside @code{pageParagraph})
-Parent: @code{pageParagraph} @*
+Parent: @code{pageParagraph}
Contents: CDATA?
This @code{text} element is nested inside a @code{pageParagraph}. There
This format is still under investigation.
The design of the detail XML format is not what one would end up with
-for describing pivot tables. This is because it is a specialization
+for describing pivot tables. This is because it is a special case
of a much more general format (``visualization XML'' or ``VizML'')
that can describe a wide range of visualizations. Most of this
generality is overkill for tables, and so we end up with a funny
All elements have an optional @code{id} attribute. In practice many
elements are assigned @code{id} attributes that are never referenced.
+@menu
+* SPV Detail visualization Element::
+* SPV Detail userSource Element::
+* SPV Detail sourceVariable Element::
+* SPV Detail derivedVariable Element::
+* SPV Detail extension Element::
+* SPV Detail graph Element::
+* SPV Detail location Element::
+* SPV Detail coordinates Element::
+@end menu
+
@node SPV Detail visualization Element
@subsection The @code{visualization} Element
@defvr {Required} name
The title of the pivot table, localized to the output language.
+@end defvr
@defvr {Required} style
The @code{id} of a @code{style} element (@pxref{SPV Detail style
@node SPV Detail userSource Element
@subsection The @code{userSource} Element
-@format
Parent: @code{visualization} @*
Contents:
-@end format
This element has the following attributes.
@node SPV Detail sourceVariable Element
@subsection The @code{sourceVariable} Element
-@format
Parent: @code{visualization} @*
Contents: @code{extension}* (@code{format} @math{|} @code{stringFormat})?
-@end format
This element defines a variable whose values can be used elsewhere in
the visualization. It ties this element's @code{id} to a variable
@node SPV Detail derivedVariable Element
@subsection The @code{derivedVariable} Element
-@format
Parent: @code{visualization} @*
Contents: @code{extension}* (@code{format} @math{|} @code{stringFormat} @code{valueMapEntry}*)
-@end format
Like @code{sourceVariable}, this element defines a variable whose
values can be used elsewhere in the visualization. Instead of being
name of the corresponding categorical variable.
@end defvr
+@menu
+* SPV Detail valueMapEntry Element::
+@end menu
+
@node SPV Detail valueMapEntry Element
@subsubsection The @code{valueMapEntry} Element
-@format
Parent: @code{derivedVariable} @*
Contents: empty
-@end format
A @code{valueMapEntry} element defines a mapping from one or more
values of a source expression to a target value. (In the corpus, the
@defvr {Required} helpId
An identifier.
@end defvr
+
+@node SPV Detail graph Element
+@subsection The @code{graph} Element
+
+Parent: @code{visualization} @*
+Contents: @code{location}@math{+} @code{coordinates} @code{faceting} @code{facetLayout} @code{interval}
+
+@code{graph} has the following attributes.
+
+@defvr {Required} cellStyle
+@defvrx {Required} style
+Each of these is the @code{id} of a @code{style} element (@pxref{SPV
+Detail style element}). The former is the default style for
+individual cells, the latter for the entire table.
+@end defvr
+
+@node SPV Detail location Element
+@subsection The @code{location} Element
+
+Parent: @code{graph} @*
+Contents: empty
+
+Each instance of this element specifies where some part of the table
+frame is located. All the examples in the corpus have four instances
+of this element, one for each of the parts @code{height},
+@code{width}, @code{left}, and @code{top}. Some examples in the
+corpus add a fifth for part @code{bottom}, even though it is not clear
+how all of @code{top}, @code{bottom}, and @code{heigth} can be honored
+at the same time. In any case, @code{location} seems to have little
+importance in representing tables; a reader can safely ignore it.
+
+@defvr {Required} part
+One of @code{height}, @code{width}, @code{top}, @code{bottom}, or
+@code{left}. Presumably @code{right} is acceptable as well but the
+corpus contains no examples.
+@end defvr
+
+@defvr {Required} method
+How the location is determined:
+
+@table @code
+@item sizeToContent
+Based on the natural size of the table. Observed only for
+parts @code{height} and @code{width}.
+
+@item attach
+Based on the location specified in @code{target}. Observed only for
+parts @code{top} and @code{bottom}.
+
+@item fixed
+Using the value in @code{value}. Observed only for parts @code{top},
+@code{bottom}, and @code{left}.
+
+@item same
+Same as the specified @code{target}. Observed only for part
+@code{left}.
+@end table
+@end defvr
+
+@defvr {Optional} min
+Minimum size. Only observed with value @code{100pt}. Only observed
+for part @code{width}.
+@end defvr
+
+@defvr {Dependent} target
+Required when @code{method} is @code{attach} or @code{same}, not
+observed otherwise. This is the ID of an element to attach to.
+Observed with the ID of @code{title}, @code{footnote}, @code{graph},
+and other elements.
+@end defvr
+
+@defvr {Dependent} value
+Required when @code{method} is @code{fixed}, not observed otherwise.
+Observed values are @code{0%}, @code{0px}, @code{1px}, and @code{3px}
+on parts @code{top} and @code{left}, and @code{100%} on part
+@code{bottom}.
+@end defvr
+
+@node SPV Detail coordinates Element
+@subsection The @code{coordinates} Element
+
+Parent: @code{graph} @*
+Contents: empty
+
+This element is always present and always empty, with no attributes
+(except @code{id}).
+
+@node SPV Detail faceting Element
+@subsection The @code{faceting} Element
+
+Parent: @code{graph} @*
+Contents: @code{cross} @code{layer}@math{+}
+