[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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Union and descendants: count(./, G. Ken Holman | Thread | Using fo with FOP, Gerald Colin |
Union and descendants: count(.//nam, Joshua Gough | Date | Re: Union and descendants: count(./, G. Ken Holman |
Month |