After some more investigations, I have found that XPath namespaces
must be predeclared.

If the declaration is on the top-level element, then xalan does seem
to pick up the definition (provided that namespaces are enabled, which
is not currently the case in the XPath extractor).
However namespaces that are declared on child elements are not
available to XPath.

This is because there can be multiple declarations of the same
namespace - and these can use different URIs.

It may be possible to enhance the XPath extractor to allow the user to
provide a namespace declaration; this would simplify the writing of
the XPath.

I.e. instead of

XPath:
//*[local-name()='result' and
namespace-uri()='http://biz.aol.com/schema/2006-12-18' ]

the idea is that you would be able to use:

Namespace declaration:
ns    http://biz.aol.com/schema/2006-12-18

XPath:
//ns:result

But this will have to wait for a future JMeter release.

On 03/09/07, sebb <[EMAIL PROTECTED]> wrote:
> As a temporary work-round, you can use:
>
> //*[local-name()='result']
>
> but this would also match xx:result and yy:result
>
> Once namespaces are enabled, one can use:
>
> //*[local-name()='result' and
> namespace-uri()='http://biz.aol.com/schema/2006-12-18' ]
>
> to restrict the search to the ns namespace.
>
> S
> On 03/09/07, sebb <[EMAIL PROTECTED]> wrote:
> > Check the jmeter log file - you'll probably see something like:
> >
> > WARN  - jmeter.extractor.XPathExtractor: error on
> > XPathExtractor.xpathQuery(//ns:result)Prefix must resolve to a
> > namespace: ns
> >
> > I tried
> >
> > //resultCode
> >
> > and that worked OK.
> >
> > I don't know enough about XPath to know why the namespace is not being
> > resolved; it appears to be defined in the parent node.
> >
> > I checked the code, and the documentFactory was being called with
> > namespace=false, but when I changed it to namespace=true it did not
> > seem to make any difference.
> >
> > However, I then moved the xmlns:ns declaration to the soapenv:Envelope
> > element, and it worked - provided that namespace=true (which is not
> > the case currently).
> >
> > Perhaps the XPath implementation (xalan) is not able to resolve
> > namespaces defined in nested elements?
> >
> > I need to look at this further.
> >
> > I'll raise a bug to be able to set namespace=true on the documentFactory.
> >
> > S.
> > On 30/08/07, dasarih <[EMAIL PROTECTED]> wrote:
> > >
> > > Hi,
> > >
> > > I am unable to extract value of an element when it has a namespace prefix.
> > > Can someone please give me a sample script on how to use "XPath Extractor"
> > > and "XPath Assertion" for a WebService (SOAP) request/response.
> > >
> > > Here is the response from which I need to extract the value for 
> > > "ns:result":
> > > ***********************************
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <soapenv:Envelope
> > > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><SOAP-ENV:Header
> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";><ResponseHeader
> > > xmlns="http://biz.aol.com/schema/header/2006-10";><statusCode>200</statusCode><statusText>Ok</statusText><requestId>5498812049246984836--661430c8.114b6ef1996.-7a4e</requestId></ResponseHeader></SOAP-ENV:Header><SOAP-ENV:Body
> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";><ns:registerOfferResponse
> > > xmlns:ns="http://biz.aol.com/schema/2006-12-18";><ns:result>0</ns:result></ns:registerOfferResponse></SOAP-ENV:Body></soapenv:Envelope>
> > > ***********
> > >
> > > I have tried different variations of XPATH Query and here are some I 
> > > tried:
> > >
> > > *************
> > > /soapenv:Envelope/SOAP-ENV:Body/ns:registerOfferResponse/ns:result
> > >
> > > *************
> > > //ns:result
> > >
> > > *************
> > > /*[local-name(.)="Envelope" and
> > > namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/*[local-name(.)="Body"
> > > and
> > > namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"][1]/*[local-name(.)="registerOfferResponse"
> > > and
> > > namespace-uri(.)="http://biz.aol.com/schema/2006-12-18"][1]/*[local-name(.)="result"
> > > and namespace-uri(.)="http://biz.aol.com/schema/2006-12-18"][1]/text()
> > > *************
> > >
> > > Your help is sincerely appreciated.
> > >
> > > Thank you.
> > > --
> > > View this message in context: 
> > > http://www.nabble.com/Unable-to-extract-using-XPath-Extractor-tf4354380.html#a12407599
> > > Sent from the JMeter - User mailing list archive at Nabble.com.
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to