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

Help with xsl:constant and Are There Xsl Variables?

Subject: Help with xsl:constant and Are There Xsl Variables?
From: "Douglas Nehring" <dnehring@xxxxxxxxxxxxxxxxxx>
Date: Mon, 19 Apr 1999 10:40:18 -0400
xsl constant
A little knowledge is starting to prove dangerous.  Thanks for the help with
conditionals, but I think it has just wetted by appetite.  As previous
viewers may recall, I was trying to color code entries based on a type
attribute.  However what I found myself doing was repeating a lot of "code".
Here's a snippet of what I was doing in the xsl:

<xsl:template match='entry[@type="type1"]/author'>
	<tr>
	<td WIDTH="15%">
<DIV STYLE="background-color:black; color:white; height:100%; width:100%;">
        <SPAN STYLE="font-weight:bold; color:white"></SPAN>
      Author:
</DIV>
	</td>
	<td>
<DIV STYLE="background-color:blue; color:white; width:100%;">
        <SPAN STYLE="font-weight:bold; color:white"></SPAN>
      <xsl:apply-templates/>
</DIV>

	</td>
	</tr>
  </xsl:template>


And I had to repeat this for each child element of entry and for each entry
type (i.e. for "type2" I had an exact copy of the above but with a color
specified as red-everything else was the same.)  I would like to reduce
redundant code and I see that I could specify the color as an attribute of
entry (and thereby just grab the color), but I really want to keep the
presentation separate from the content.  I took a look as the XSL spec and I
see that there are global constants <xsl:constant name="type1"
value="blue"/> , but doing something <DIV
style="background-color:{constant(../@type)} ... doesn't work for me (I'm
using XT).  Doing it this way would allow me to create a crude Hashtable to
store the type/color pairs and then lookup the color based on the entry type
attribute.  Can I lookup a constant the way I am trying or do you have to
explicitly specify the constant (i.e. {constant(type1)} ).


Another idea, ok question, I got after seeing the xsl:constant was "is there
an "xsl:variable" or equivalent"?  What I could do if there was (at least
what I would try to do) is assign the color for the entry type to the
variable and then have the <DIV style... use that variable(s) to assign
colors.  Something sort of like:
<!-somehow assign the color to a "xsl variable" based on the entry type  not
sure how to do that yet-->
TBD
<!-now use the variable to assign the color -->
<DIV STYLE="background-color:'xsl:variable value';...

I hope what I trying to convey here is clear.

Regards,
Doug Nehring


Here's the base xml and xsl I'm playing with if it's of any help.

<body>
	<entry type="type1">
		<title>title</title>
		<author>author</author>
		<desc>text</desc>
	<entry>
	<entry type="type2">
		<title>title2</title>
		<author>author2</author>
		<desc>text2</desc>
	<entry>
	<entry type="type3">
		<title>title3</title>
		<author>author3</author>
		<desc>text3</desc>
	<entry>

</body>


<portions of xsl>

<xsl:template match="entry">
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" WIDTH="82%">
    <xsl:apply-templates/>
<BR/>
</TABLE>
  </xsl:template>


<xsl:template match="title">
	<tr>
<td WIDTH="15%">
<DIV STYLE="background-color:black; color:white; height:100%; width:100%;">
        <SPAN STYLE="font-weight:bold; color:white"></SPAN>
      Title:
</DIV>

</td>
<td>

<!-the background-color is what will be changing based on the entry type -->

<DIV STYLE="background-color:blue; color:white; width:100%;">
        <SPAN STYLE="font-weight:bold; color:white"></SPAN>
      <xsl:apply-templates/>
</DIV>

</td>
	</tr>
</xsl:template>

<xsl:template match="author">

	<tr>
	<td WIDTH="15%">
<DIV STYLE="background-color:black; color:white; height:100%; width:100%;">
        <SPAN STYLE="font-weight:bold; color:white"></SPAN>
      Author:
</DIV>
	</td>
	<td>
<DIV STYLE="background-color:blue; color:white; width:100%;">
        <SPAN STYLE="font-weight:bold; color:white"></SPAN>
      <xsl:apply-templates/>
</DIV>

	</td>
	</tr>

  </xsl:template>

<xsl:template match="desc">

	<tr>
	<td WIDTH="15%">
<DIV STYLE="background-color:black; color:white; height:100%; width:100%;">
        <SPAN STYLE="font-weight:bold; color:white"></SPAN>
      Reference:
</DIV>
	</td>
	<td>
<DIV STYLE="background-color:blue; color:white; width:100%;">
        <SPAN STYLE="font-weight:bold; color:white"></SPAN>
      <xsl:apply-templates/>
</DIV>

	</td>
	</tr>

  </xsl:template>




</portions of xsl

Doug Nehring
Nortel Networks
MSL-100 Advanced Technology 
Richardson, TX
(972) 685-2096, ESN 445-2096


 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.