RE: [xsl] XPath and root-less namespace problem

Subject: RE: [xsl] XPath and root-less namespace problem
From: Jarno.Elovirta@xxxxxxxxx
Date: Thu, 15 May 2003 09:33:47 +0300
FAQ,

> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/";
> xmlns:xs="http://www.w3.org/2001/XMLSchema"; name="IZPOP3service"
> targetNamespace="http://www.zanetti-dev.com/";
> xmlns:tns="http://www.zanetti-dev.com/";
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
> xmlns:ns1="http://www.zanetti-dev.com/XMLSchema";
> xmlns:ns2="http://www.borland.com/namespaces/Types";>
>   <service name="IZPOP3service">
>     <port name="IZPOP3Port" binding="tns:IZPOP3binding">
>       <soap:address
> location="http://www.zanetti-dev.com/scripts/zpop3ws.exe/soap/
> IZPOP3"/>
>     </port>
>   </service>
> </definitions>
> 
> My XPath of:
> 
>     //definitions/service/port[@name='IZPOP3service']/*/@location
> 
> returns nothing.
> 
> However, if I remove the 
> "xmlns='http://schemas.xmlsoap.org/wsdl'" from my
> code, it works BEAUTIFULLY.  I can fully traverse this file, 
> and can do any
> XPath I want to.  But that's not the right way to do this.

See <http://www.w3.org/TR/xpath#node-tests>

  "--except that the default namespace declared with xmlns is not used--"

Thus

  //x:definitions/x:service/x:port[@name='IZPOP3service']/*/@location

with ns-prefix x bound to URL http://schemas.xmlsoap.org/wsdl/ will work.

Cheers,

Jarno - Delerium: Heavens Earth

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread