xsl-list
[Top] [All Lists]

[xsl] Variable issues

2008-12-23 03:43:20
Hi all,

I have been trying to get this working for hours and days now and need a fresh 
pair of eyes to tell me what I'm doing wrong. I hope someone out there can 
help. Thanks you so much in advance if you able to help :)

BACKGROUND INFO

I have the following two xml files that are combined together into one xml file 
and then transformed using server side XSLT, PHP and the MODx content 
management system.

WHAT I AM TRYING TO DO

From a long list of hotels in the xml file (hotellist.xml - please see below), 
I am trying to call ONE hotel in particular with the ID of '1234567' and get 
it's 'hotelurl' value and place this into a link using XSLT.

THE PROBLEM

The problem I am having with the XSL below is with the 'ThisHotelID' variable 
and 'HotelURL' variable. I don't get an error but I can't seem to be able to 
get the value of the 'ThisHotelID' variable into the variable of 'HotelURL' - 
it seems to just ignore it and parse the variable as if it's empty?!

MY QUESTIONS

What am I doing wrong here?
Are you not able to put a variable within another variable?
What is the best way to do this?

---------------------------------------- CODE 
----------------------------------------

XML 1 (hotelinfo.xml)

<Hotel>
<HotelID>1234567</HotelID>
<HotelName>Hotel Name Here</HotelName>
<HotelAddress>Hotel Address Here</HotelAddress>
<City>City Name</City>
<Country>Country Name</Country>
<StarRating>5</StarRating>
<!-- There is lots more information in this xml file omitted here to save space 
-->
</Hotel>

XML 2 (hotellist.xml)

<hotels>

<hotel id="1234567">
<hotelname>Hotel Name Here</hotelname>
<hotelurl>/link/to/hotel/url/on/server.php</hotelurl>
<latitude>18.76624</latitude>
<longitude>98.99526</longitude>
</hotel>
<hotel id="7654321">
<hotelname>Hotel Name Here</hotelname>
<hotelurl>/link/to/hotel/url/on/server.php</hotelurl>
<latitude>18.76624</latitude>
<longitude>98.99526</longitude>
</hotel>
<!-- There are lots more hotels in this xml file omitted here to save space -->

</hotels>

COMBINED XML FILE (combined.xml)

<hoteldetails>
<file href="http://www.mydomain.org/hotels/hotelinfo.xml"/>
<file href="http://www.mydomain.org/hotels/hotellist.xml"/>
</hoteldetails>

XSL FILE (hotel.xsl)

<?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" encoding="UTF-8" doctype-public="-//W3C//DTD XHTML 
1.0 Transitional//EN" 
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>

<xsl:template match="hoteldetails">

<h1><xsl:value-of select="document(file/@href)/Hotel/HotelName"/></h1>
<p><xsl:value-of select="document(file/@href)/Hotel/Address"/></p>

<xsl:variable name="ThisHotelID"><xsl:value-of 
select="document(file/@href)/Hotel/HotelID" /></xsl:variable>
<xsl:variable name="HotelURL"><xsl:value-of 
select="document(file/@href)/hotels/hotel[(_at_)id='{$ThisHotelID}']/hotelurl" 
/></xsl:variable>

<p>
<a href="http://www.mydomain.org{$HotelURL}"; title="Click to view the 
{document(file/@href)/Hotel/HotelName}" target="_top">
<img src="http://www.mydomain.org/hotels/images/image.jpg"; 
alt="{document(file/@href)/Hotel/HotelName}" />
</a>
</p>
<!-- There are a lot more hotels and hotels info in this xml file omitted here 
to save space -->

</xsl:template>
</xsl:stylesheet>


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Date: Mon, 22 Dec 2008 14:39:49 +0100
To:  xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
From: Martin Honnen <Martin(_dot_)Honnen(_at_)gmx(_dot_)de>
Subject: Re: [xsl] Variable issues
Message-ID: <494F98A5(_dot_)7010709(_at_)gmx(_dot_)de>

Alan Bull (Local Origins) wrote:

<xsl:variable name="ThisHotelID"><xsl:value-of 
select="document(file/@href)/Hotel/HotelID" /></xsl:variable>

<xsl:variable name="HotelURL"><xsl:value-of 
select="document(file/@href)/hotels/hotel[(_at_)id='{$ThisHotelID}']/hotelurl" 
/></xsl:variable>

Consider to use

<xsl:variable name="ThisHotelID" 
select="document(file[1]/@href)/Hotel/HotelID"/>
<xsl:variable name="HotelURL"  
select="document(file[2]/@href)/hotels/hotel[(_at_)id =$ThisHotelID]/hotelurl"/>

       Martin Honnen
       http://JavaScript.FAQTs.com/

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hi Martin Honnen,

Unfortunately I have tried that and it still does not work - it's so 
frustrating, it's probably something simple but I just can't see it. Any other 
ideas?

Many thanks,

Alan





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>