This kind usage of xmlns in an xml doc is a hack done by SIMPLE WG breaking XML standard, because any ns has to use a prefix for each corresponding name. If you search on google, you will fine some discussions on the web (iirc, Inaki was there as well) - libxml2 devs said they don't want to break the xml standard to handle this case, probably they didn't change the mind meanwhile.

Anyhow, set a prefix for the namespace via xml_ns parameter and then use it in xpath

modparam("xmlops", "xml_ns", "di=urn:ietf:params:xml:ns:dialog-info")

$xml(u=>xpath:/di:dialog-info/di:dialog[1]/di:state/text())

Hope i remembered correctly, anyhow it is somewhere in this direction. If not, search on mailing list archive, the situation popped up few times around.

Cheers,
Daniel

On 03/05/14 09:49, Alex Balashov wrote:
It's definitely namespace-related, because when I manually hack out the namespace, it works fine!

   $var(x) = $rb;
   $var(x) = $(var(x){re.subst,/xmlns=\".+\"//});

   $xml(u=>doc) = $var(x);

   xlog("L_INFO", "State: $xml(u=>xpath:/dialog-info/dialog[1]/state/text())\n");

But I can't for the life of me figure out how to construct an XPath expression that properly captures the urn:ietf:params:xml:ns:dialog-info namespace.



-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda