On 05/09/2008, Roopesh Chander <[EMAIL PROTECTED]> wrote:
> I need a bit of help with use of namespaces in the xml tree creation
> interface (xmlNewDoc et al.). Specifically, I need to be able to create a an
> xml root element in a self-defined namespace, like this:
>
>  <h:html xmlns:h="http://www.w3.org/HTML/1998/html4";>
>  something...
>  </h:html>

An aside, but the correct namespace uri for html-in-xml-format is
http://www.w3.org/1999/xhtml and getting it wrong is likely to break
whatever you're doing further down the line.

>  Per the api, to create the root element with a namespace, I've gotta call
> xmlNewNode with an xmlNs* argument. But to create an xmlNs, i need to call
> xmlNewNs, which needs the xml element where we want the xmlns tag to be
> added (the root element in this case, which we haven't created yet). What is
> the indended way of creating such an element using the libxml2 tree api?

See this post and the related thread:
<http://mail.gnome.org/archives/xml/2008-June/msg00069.html>
Also some example code:
<http://mail.gnome.org/archives/xml/2008-August/msg00046.html>

>  My present cowardly code includes the namespace in the name, like:
>
>  xmlNode* rootelem = xmlNewNode(NULL, (xmlChar *) "h:html");

No, that is including the prefix in the name, not the namespace, the
upshot of which means you're falling back to pre-Namespaces-in-XML
behaviour. You want to only give local-names (the bit after the colon)
to the node creation functions, along with a namespace object.

Hope the previous mailinglist threads are enough to get you on the right track,

Martin
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to