Document a lot of setCellProperties.
authorBen Pfaff <blp@cs.stanford.edu>
Wed, 24 Feb 2016 06:22:04 +0000 (22:22 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Wed, 24 Feb 2016 06:22:04 +0000 (22:22 -0800)
detail-xml
parse-detail-xml
parse-xml.c
spv-file-format.texi

index 9fca90acf4aa118f8f887bd9208810b275b36cc9..cae148b68877ea8ce5ab3c46556657db64107f9d 100644 (file)
@@ -88,8 +88,8 @@ paragraph := [id? hangingIndent]
 
 setCellProperties :=
     [id? applyToConverse]
-    setMetadata setStyle* setFormat+ union?
-setMetadata := [id? key target value]
+    setMetaData setStyle* setFormat+ union?
+setMetaData := [id? key target value]
 setStyle := [id? style target]
 setFormat :=
     [id? target reset?]
index f0b175e7ab6c1037733f27abbb37d0c72b854906..0eb3555a745404595e79c20fe4106e35db79a310 100755 (executable)
@@ -5,5 +5,5 @@ legacyXML=`ls -1 unzipped/*/*.xml |grep -vE 'outputViewer|stats|chart|model'`
 if test -n "$1"; then
     for d in $legacyXML; do
        ./parse-xml $d $1
-    done | sort | uniq
+    done
 fi
index 9cf6694f91a008f64fef9f1a1dcb37192da289fb..70a7a89928617c8a854253f55d39586a6cf8ed16 100644 (file)
@@ -159,21 +159,44 @@ print_attribute (xmlNode *node, const char *attr)
     }
 }
 
+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);
     }
 }
 
@@ -259,6 +282,8 @@ main (int argc, char **argv)
     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
index dd4b0b8f5a05bc4f42661c2ee153e416b36ca0f4..1eb9a3ef52822703d22edf1c76502b7150afcb4d 100644 (file)
@@ -1267,6 +1267,7 @@ elements are assigned @code{id} attributes that are never referenced.
 * SPV Detail location Element::
 * SPV Detail coordinates Element::
 * SPV Detail faceting Element::
+* SPV Detail facetLayout Element::
 @end menu
 
 @node SPV Detail visualization Element
@@ -1752,6 +1753,7 @@ When present, this is always @code{nest}.
 
 Parent: @code{graph} @*
 Contents: @code{tableLayout} @code{facetLevel}@math{+} @code{setCellProperties}*
+
 @subsubheading The @code{tableLayout} Element
 
 Parent: @code{facetLayout} @*
@@ -1775,7 +1777,7 @@ 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.
@@ -1801,3 +1803,79 @@ and in a member with four @code{variableReference} elements, a
 @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.