[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Another problem with visibility of params in templates

Subject: Another problem with visibility of params in templates
From: Wolfgang May <may@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 26 Nov 1999 11:44:29 +0100 (MET)
cia greece
Hi,

I have also a problem with passing a non-constant parameter to
xsl:apply-templates (using xt):

When apply-templates is applied to more than one elements, the passed
parameter binding holds only for the first application. For the
second, it is empty.  When the parameter is a constant (e.g.,
select="2") instead, it is passed correctly to all applications.

The effect is illustrated in the below example (the same happens also
when select="current()" is used).

============== mondial-test.xsl ===================================
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xt="http://www.jclark.com/xt"
		version="1.0"
                extension-element-prefixes="xt">

<xsl:output indent="yes"/>

<xsl:template match="mondial">
  <xt:document href="mondial-test.htm">
  <xsl:apply-templates select="country"/>
  </xt:document>
</xsl:template>

<xsl:template match="country">
    <country> 
      <xsl:copy-of select="name|capital|population"/>
      with computed parameter: 
      <xsl:apply-templates select="adm_div">
           <xsl:with-param name="countrycap" select="./capital/@ref"/>
      </xsl:apply-templates>
      with fixed parameter:
      <xsl:apply-templates select="adm_div">
           <xsl:with-param name="countrycap" select="2"/>
      </xsl:apply-templates>
</country> 
</xsl:template>

<xsl:template match="adm_div">
    <xsl:param name="countrycap" 
       ></xsl:param>
    country's capital should go here: <xsl:value-of
select="$countrycap"/>
</xsl:template>

</xsl:stylesheet>
============== mondial-test.xml ===================================
<mondial>
<country id="cid-cia-Greece">
   <name>Greece</name>
   <car_code>GR</car_code>
   <total_area>131940</total_area>
   <population>10538594</population>
   <capital ref="cty-Greece-Athens"/>
    <adm_div ref="prov-cid-cia-Greece-2"/>
    <adm_div ref="prov-cid-cia-Greece-3"/>
    <adm_div ref="prov-cid-cia-Greece-4"/>
</country>

<city id="cty-Greece-Athens">
   <name>Athens</name>
   <country>cid-cia-Greece</country>
   <theProvince>prov-cid-cia-Greece-3</theProvince>
   <longitude>23.7167</longitude>
   <latitude>37.9667</latitude>
   <population year="81">885737</population>
    <located at="sea" ref="sea-Mittelmeer"/>
</city>

<prov id="prov-cid-cia-Greece-2">
   <name>Anatoliki Makedhonia kai Thraki</name>
   <country>cid-cia-Greece</country>
   <population>574308</population>
   <area>14157</area>
</prov>

<prov id="prov-cid-cia-Greece-3">
   <name>Attiki</name>
   <country>cid-cia-Greece</country>
   <population>3522769</population>
   <area>3808</area>
</prov>

<!-- and so on ... -->

</mondial>
========= Output: mondial-test.htm ===================================
<country>
<name>Greece</name>
<population>10538594</population>
<capital ref="cty-Greece-Athens"/>
      with computed parameter: 
      
    country's capital should go here: cty-Greece-Athens
    country's capital should go here: 
    country's capital should go here: 
      with fixed parameter:
      
    country's capital should go here: 2
    country's capital should go here: 2
    country's capital should go here: 2</country>
=========

so "cty-Greece-Athens" is only passed to the first application,
whereas the constant "2" is passes to all applications :(

Wolfgang

-- -----------------------------------------------------------------
Dr. Wolfgang May         E-mail: may@xxxxxxxxxxxxxxxxxxxxxxxxxx   
Universitaet Freiburg    http://www.informatik.uni-freiburg.de/~may/
Institut fuer Informatik D-79110 Freiburg / Germany
Lehrstuhl fuer Datenbanken und Informationssysteme
Tel ++49 761 203-8131    Fax ++49 761 203-8122 


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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.