|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Pulling out my hair: XSLT and XML with namespace
> I hope I'm not repeating a post of another message in this list, but I've
> looked everywhere on the net with both Google and Altavista, and cannot
> figure out what is wrong with my XPath/XSLT parsing.
>
> Given the following XML file:
>
> <?xml version="1.0"?>
> <definitions name="TemperatureService"
> targetNamespace="http://www.xmethods.net/sd/TemperatureService.wsdl"
> xmlns:tns="http://www.xmethods.net/sd/TemperatureService.wsdl"
> xmlns:xsd="http://www.w3.org/1999/XMLSchema"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/">
> <service name="TemperatureService">
> <documentation>Returns current temperature in a given U.S.
> zipcode </documentation>
> <port name="TemperaturePort"
> binding="tns:TemperatureBinding">
> <soap:address
> location="http://services.xmethods.net:80/soap/servlet/rpcrouter"/>
> </port>
> </service>
> </definitions>
>
> and the following XSLT snippet:
>
> <?xml version="1.0" encoding="utf-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method="html"/>
> <xsl:template match="/">
>
> <xsl:for-each select="definitions/service/port">
> POST Path = <xsl:value-of select="soap:address/@location"/>
> </xsl:for-each>
>
> I get the following result:
>
> (BLANK DOCUMENT)
You are really close (dont pull your hair out - trust me you'll want ot
keep it for as long as possible)
The problem is the xml document has a default name space
...xmlns="http://schemas.xmlsoap.org/wsdl/">
Which (in a sense) means that <definitions> really is
<{http://schemas.xmlsoap.org/wsdl/}definitions> (for give me if my
syntax is wrong.
What you can do is reference that name space in the xslt like so:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:booga="http://schemas.xmlsoap.org/wsdl/"
>
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:for-each select="booga:definitions/booga:service/booga:port">
POST Path = <xsl:value-of select="soap:address/@location"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
and that should yield
POST Path = http://services.xmethods.net:80/soap/servlet/rpcrouter
do you see why? repost if you dont.
Cheers,
Rob
--
_/ _/_/ _/_/_/
_/_/ _/ _/ _/
_/ _/
_/ _/
_/ _/_/_/_/
http://treebeard.sourceforge.net
http://ashpool.sourceforge.net
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








