[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: Improving XSLT code


Subject: Re: Improving XSLT code
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 12 Jul 1999 17:48:50 -0700

At 99/07/12 09:32 -0700, Mallikarjuna Sangappa wrote:
>There are elements with the same attributes. So when
>I'm writing the stylesheet, I have to repeat the code
>for the two elements. 
...
<!ENTITY % ENT_CITY "CITY_VALUE
(Chicago|SanFrancisco|NewYork|Detroit) #IMPLIED">
...
>So in the stylesheet, I'll have to repeat the code
>for both CITY and METROS, like

Fortunately, you are using the same attribute name for both element types,
so you are really close ... just put what you have into a named template
and call the template each time you process each element type.

>  <!--City-->  
>  <xsl:param-variable name="varcity" expr = "CITY"/>

There is no need to use a parameterized variable here ... a regular
variable is fine since you don't need to pass a parameter.  BTW, your
attribute name is "CITY_VALUE" not "CITY".

I've attached a sample below (simplified without the use of an external
function).

I hope this helps.

............... Ken


T:\malliks>type test.xml
<?xml version="1.0"?>
<!--
<!ENTITY % ENT_CITY "CITY_VALUE
(Chicago|SanFrancisco|NewYork|Detroit) #IMPLIED">

<!ELEMENT CITY EMPTY>
<!ATTLIST CITY %ENT_CITY;>

<!ELEMENT METROS EMPTY>
<!ATTLIST METROS %ENT_CITY;>
-->
<test>
  <METROS CITY_VALUE="SanFrancisco"/>
  <CITY CITY_VALUE="NewYork"/>
</test>

T:\malliks>type test.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">

<xsl:template match="CITY">
  <xsl:call-template name="city"/>
</xsl:template>

<xsl:template match="METROS">
  <xsl:call-template name="city"/>
</xsl:template>

<xsl:template name="city">
  <!--City-->  
  <xsl:variable name="varcity" expr = "@CITY_VALUE"/>

    <xsl:choose> 
	
	   <xsl:when test="$varcity='Chicago'">
		   <xsl:text>C</xsl:text>
       </xsl:when>

	   <xsl:when test="$varcity='SanFrancisco'">
		   <xsl:text>S</xsl:text>
	   </xsl:when>

	   <xsl:when test="$varcity='NewYork'">
		   <xsl:text>N</xsl:text>
	   </xsl:when>

	   <xsl:when test="$varcity='Detroit'">
		   <xsl:text>D</xsl:text>
	   </xsl:when>

   </xsl:choose>
</xsl:template>

</xsl:stylesheet>
T:\malliks>call xsl test.xml test.xsl test.txt
T:\malliks>type test.txt

  S
  N

T:\malliks>


--
G. Ken Holman                    mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.             http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0   +1(613)489-0999   (Fax:-0995)
Website:  XSL/XML/DSSSL/SGML services, training, libraries, products.
Publications:   Introduction to XSLT (3rd Edition) ISBN 1-894049-00-4
Next instructor-led training:   MS'99 1999-08-16  MT'99 1999-12-05/06


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



Current Thread
Keywords