[SR-Users] XMLOPS xpath issues

Daniel-Constantin Mierla miconda at gmail.com
Mon Feb 27 21:13:50 CET 2012


I forgot to mention another option, a dirty workaround, use subst 
transformation to replace "xmlns=" with something else like "xmlxx=". 
Then practically there will be no more a xmlns without prefix and 
limxml2 xpath implementation is working fine without need to add xml_ns 
parameter to xmlops module.

Cheers,
Daniel

On 2/27/12 9:07 PM, Daniel-Constantin Mierla wrote:
> Hello,
>
> an xpath invalid expression should be printed when the xpath 
> expression is incorrect -- I cannot say what is wrong, not being an 
> xpath expert by hart.
>
> However, there is a mismatching between the xml standards and 
> SIP/SIMPLE specs. In XML, the namespaces are bound to prefixes, while 
> the guys at IETF added by their own so called default namespace, which 
> has no prefix for it. That results in not being able to use directly 
> xpath from libxml2 with SIMPLE bodies.
>
> There were some discussions out there (you can google, iirc Inaki was 
> in couple of them), in one side, the devs of libxml2 said they don't 
> want to break XML standards by allowing bogus xpath queries with such 
> namespaces. The workaround is to define xmlns prefix in xmlops module:
>
> http://kamailio.org/docs/modules/devel/modules/xmlops.html#xml_ns
>
> modparam("xmlops", "xml_ns", "ri=urn:ietf:params:xml:ns:reginfo")
>
> and try:
>
> $xml(pub=>xpath://ri:reginfo/ri:registration@aor)
>
> Cheers,
> Daniel
>
>
>
> On 2/27/12 8:50 PM, Olle E. Johansson wrote:
>> Friends,
>> I'm having issues with the xpath support. If I run Daniel's example 
>> in the XMLOPS, xpath works as documented. But if I take the
>> body of a PUBLISH from the and run xpath, I don't get expected 
>> results. Now, I'm no XPATH guru so I may be totally off the markup 
>> here...
>>
>> Here's the test script:
>>
>> $xml(pub=>doc) = $rb;
>>          $var(contact)=$xml(pub=>xpath:registration/contact at event);
>>          xlog("--- Publish contact $var(contact) \n");
>>          xlog("--- Publish aor $xml(pub=>xpath:registration at aor) \n");
>>          xlog("--- Publish aor: $xml(pub=>xpath://@aor) \n");
>>          xlog("--- Publish reg state:  
>> $xml(pub=>xpath://reginfo@state) \n");
>>          xlog("--- Publish uri:  $xml(pub=>xpath:contact/uri/text()) 
>> \n");
>>
>> I've tested with various paths, orginating from /reginfo or just 
>> picking an attribute.
>>
>> Here's the XML from Carsten's PUA_REGINFO module:
>>
>> <?xml version="1.0"?>
>> <reginfo xmlns="urn:ietf:params:xml:ns:reginfo" version="0" 
>> state="full">
>> <registration aor="sip:oej at testnamn.se" id="0x80590a590" 
>> state="terminated"/>
>> </reginfo>
>>
>> I wonder if it's something with using the request body that doesn't 
>> parse properly in the XMLOPS module?
>>
>> Error messages are a series of "XPath error : Invalid expression"
>>
>> /O
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

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




More information about the sr-users mailing list