Wondering if someone could shed some light on exactly what libxml2 is
doing here. I have the following xml file:
<root><node/><node/></root>
I run the following code on it:
obj = xmlXPathEval("//namespace::*", xpath);
set = obj->nodesetval;
for(i=0;i<set->nodeNr;i++)
{
xmlNsPtr ns = (xmlNsPtr)set->nodeTab[i];
printf("Found ns (%i) %s=%s\n", ns, ns->prefix, ns->href);
}
Gives the following output:
Found ns (3303224) xml=http://www.w3.org/XML/1998/namespace
Found ns (3303320) xml=http://www.w3.org/XML/1998/namespace
Found ns (3303416) xml=http://www.w3.org/XML/1998/namespace
-------------------
I understand that the "xml" namespace is magical, doesn't need declared,
only for lang/space, etc. Before/after running this XPath I can't find
any references to these ns structures anywhere in the document. I've
realized that actually using xml:space in a parsed document creates a
"global"(-ish) "xml" ns set up in the doc's/node's "oldNS" field, but
that doesn't help with these.
What are these ns structures returned by the XPath? Archives didn't
seem to have anything related, and looking through the xpath.c source
made my brain melt. Are these alloc'd that need to be freed? Is there
any part of the tree that references these? Is there a proper workflow
for adding a new "xml:space" to a newly created document?
Thanks
Jason
_______________________________________________
xml mailing list, project page http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml