{
printf ("%s", node->name);
for (xmlAttr *attr = node->properties; attr; attr = attr->next)
- printf (" %s", attr->name);
+ {
+ printf (" %s", attr->name);
+ if (!strcmp ((char *) attr->name, "baseFormat"))
+ printf ("=%s", (char *) xmlGetProp (node, attr->name));
+ }
putchar ('\n');
}
print_xml (xmlDoc *doc, xmlNode *node)
{
xmlBuffer *buf = xmlBufferCreate();
- xmlNodeDump (buf, doc, node, 0, 1);
+ xmlNodeDump (buf, doc, node, 0, 0);
xmlBufferDump (stdout, buf);
xmlBufferFree (buf);
putchar ('\n');
}
static __attribute__((unused)) xmlNode *
-find_page_setup (xmlNode *node)
+find_node (xmlNode *node, const char *name)
{
for (; node; node = node->next)
{
- if (node->name && !strcmp ((char *) node->name, "pageSetup"))
+ if (node->name && !strcmp ((char *) node->name, name))
return node;
- xmlNode *ps = find_page_setup (node->children);
+ xmlNode *ps = find_node (node->children, name);
if (ps)
return ps;
}
xmlNode *root = xmlDocGetRootElement(doc);
-#if 0
- /* Limit what we look at to pageSetup node and below. */
- root = find_page_setup(root);
- if (!root)
- return 0;
- root->next = NULL;
-#endif
-
for (int i = 2; i < argc; i++)
{
if (!strcmp(argv[i], "parents"))
print_attribute (root, argv[i] + 5);
else if (!strncmp(argv[i], "id:", 3))
print_id (doc, root, argv[i] + 3);
+ else if (!strncmp(argv[i], "root:", 5))
+ {
+ /* Limit content to descendants of the given node. */
+ root = find_node (root, argv[i] + 5);
+ if (!root)
+ return 0;
+ root->next = NULL;
+ }
+ else if (!strncmp(argv[i], "musthave:", 9))
+ {
+ if (!find_node (root, argv[i] + 9))
+ return 0;
+ }
else if (!strcmp(argv[i], "labels"))
print_labels (root);
else if (!strncmp(argv[i], "version=", 8))