}
}
+static void
+print_xml (xmlDoc *doc, xmlNode *node)
+{
+ xmlBuffer *buf = xmlBufferCreate();
+ xmlNodeDump (buf, doc, node, 0, 1);
+ xmlBufferDump (stdout, buf);
+ xmlBufferFree (buf);
+ putchar ('\n');
+}
+
static void
print_element (xmlDoc *doc, xmlNode *node, const char *element)
{
for (; node; node = node->next)
{
if (node->name && !strcmp(element, (char *) node->name))
+ print_xml (doc, node);
+
+ print_element (doc, node->children, element);
+ }
+}
+
+static void
+print_id (xmlDoc *doc, xmlNode *node, const char *id)
+{
+ for (; node; node = node->next)
+ {
+ if (node->type == XML_ELEMENT_NODE)
{
- xmlBuffer *buf = xmlBufferCreate();
- xmlNodeDump (buf, doc, node, 0, 1);
- xmlBufferDump (stdout, buf);
- xmlBufferFree (buf);
- putchar ('\n');
+ const char *node_id = (char *) xmlGetProp (node, (xmlChar *) "id");
+ if (node_id && !strcmp (node_id, id))
+ {
+ print_xml (doc, node);
+ break;
+ }
}
- print_element (doc, node->children, element);
+ print_id (doc, node->children, id);
}
}
print_element (doc, root, argv[2] + 8);
else if (!strncmp(argv[2], "attr:", 5))
print_attribute (root, argv[2] + 5);
+ else if (!strncmp(argv[2], "id:", 3))
+ print_id (doc, root, argv[2] + 3);
else if (!strcmp(argv[2], "labels"))
print_labels (root);
else
* SPV Detail location Element::
* SPV Detail coordinates Element::
* SPV Detail faceting Element::
+* SPV Detail facetLayout Element::
@end menu
@node SPV Detail visualization Element
Parent: @code{graph} @*
Contents: @code{tableLayout} @code{facetLevel}@math{+} @code{setCellProperties}*
+
@subsubheading The @code{tableLayout} Element
Parent: @code{facetLayout} @*
Contents: @code{axis}
Each @code{facetLevel} describes a @code{variableReference} or
-@code{layer}, and thus a table has one @code{facetLevel} element for
+@code{layer}, and a table has one @code{facetLevel} element for
each such element. For example, an SPV detail member that contains
four @code{variableReference} elements and two @code{layer} elements
will contain six @code{facetLevel} elements.
@defvr {Required} gap
Always observed as @code{0pt}.
@end defvr
+
+@subsubheading The @code{setCellProperties} Element
+
+Parent: @code{facetLayout} @*
+Contents: @code{setMetaData} @code{setStyle}* @code{setFormat}@math{+} @code{union}?
+
+This element sets style properties of cells designated by the
+@code{target} attribute of its child elements.
+
+@defvr {Optional} applyToConverse
+If present, always @code{true}. This appears to invert the meaning of
+the @code{target} of sub-elements: the selected cells are the ones
+@emph{not} designated by @code{target}.
+@end defvr
+
+@subsubheading The @code{setMetaData} Element
+
+Parent: @code{setCellProperties} @*
+Contents: empty
+
+It's really not clear what visible effect this element has, if any.
+
+@defvr {Required} target
+The @code{id} of an element whose metadata is to be set. In the
+corpus, this is always @code{graph}, the @code{id} used for the
+@code{graph} element.
+@end defvr
+
+@defvr {Required} key
+@defvrx {Required} value
+A key-value pair to set for the target.
+
+In the corpus, @code{key} is @code{cellPropId} or, rarely,
+@code{diagProps}, and @code{value} is always the @code{id} of the
+parent @code{setCellProperties}.
+@end defvr
+
+@subsubheading The @code{setStyle} Element
+
+Parent: @code{setCellProperties} @*
+Contents: empty
+
+This element associates a style with the target.
+
+@defvr {Required} target
+The @code{id} of an element whose style is to be set. In the corpus,
+this is always the @code{id} of an @code{interval}, @code{labeling},
+or, rarely, @code{graph} element.
+@end defvr
+
+@defvr {Required} style
+The @code{id} of a @code{style} element that identifies the style to
+set on the target.
+@end defvr
+
+@subsubheading The @code{setFormat} Element
+
+@format
+Parent: @code{setCellProperties}
+Contents:
+ @code{format}
+ @math{|} @code{numberFormat}
+ @math{|} @code{stringFormat}@math{+}
+ @math{|} @code{dateTimeFormat}
+@end format
+
+This element sets the format of the target, ``format'' in this case
+meaning an the SPSS print format for a variable.
+
+The details of this element vary depending on the schema version, as
+declared in the root @code{visualization} element's @code{version}
+attribute (@pxref{SPV Detail visualization Element}). In version 2.5
+and earlier, @code{setFormat} contains one of a number of child
+elements that correspond to the different varieties of print formats.
+In version 2.7 and later, @code{setFormat} instead always contains a
+@code{format} element.