XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
+ Stylus Studio Technical Forum (14621)
+ Website Feedback (249)
- XSLT Help and Discussion (7625)
-> + Use of before and after string (3) Sticky Topic
-> - How do I substitute element ty... (1)
-> + How does one add working days ... (4)
-> - Help, I have existing XLT and... (1)
-> + Need help on XSLT issue - (2)
-> + EDI to XML Conversion (7)
-> - XML To JSON Conversion using X... (1)
-> + Formatting Paragraphs to same ... (2)
-> - Grouping of records (1)
-> + Problems with xsd 1.1 (4)
-> + XML to HL7 mapping (3)
-> + XSLT 3 and Iterate (2)
-> + XSL-FO to PDF preview (3)
-> + java.lang.RuntimeException: Er... (2)
-> + Create Acroforms with Stylus X... (2)
-> + How to change XSLT parameter s... (3)
-> + how to change format of the da... (2)
-> + Search "Next 8 Results " doesn... (2)
-> - Support for Git (1)
-> + newbee (8)
-- [1-20] [21-40] [41-60] Next
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Alan BSubject: Variable within a variable
Author: Alan B
Date: 21 Dec 2008 09:50 AM
Originally Posted: 21 Dec 2008 09:47 AM
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[@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>

Postnext
Tony LavinioSubject: Variable within a variable
Author: Tony Lavinio
Date: 21 Dec 2008 01:19 PM
This does not appear to be a Stylus Studio question;
please ask general XSLT questions on the XSL-LIST run
by Mulberry Technologies.

Posttop
Alan BSubject: Variable within a variable
Author: Alan B
Date: 22 Dec 2008 04:27 AM
My apologies I thought this was an open forum sponsored by Stylus Studio. Thank you for the recommendation - I shall post to the XSL-LIST instead.

Kind regards and Christmas wishes to you.

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.