Re: backtracking and trying to find a sub-node

Subject: Re: backtracking and trying to find a sub-node
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 21 Nov 2000 17:24:48 +0000
Hi Rob,

<xsl:variable name="images" select="ancestor::section//image"/>
   <xsl:variable name="image.hd1" select="$images[@role='hd1']"/>
   <xsl:variable name="image.hd2" select="$images[@role='hd2']"/>

Just glancing at it, this code looks okay. The values of that 'role' attribute are unique, I take it (or you'd be getting a node set containing more than one node for each of the image.hd1 and image.hd2 attributes).

   &lt;image src="<xsl:value-of select="$image.hd1/@fileref"/>"
width="<xsl:value-of select="$image.hd1/@width"/>" height="<xsl:value-of
select="$image.hd1/@height"/>" /&gt;

  &lt;image src="<xsl:value-of select="$image.hd2/@fileref"/>"
width="<xsl:value-of select="$image.hd2/@width"/>" height="<xsl:value-of
select="$image.hd2/@height"/>" /&gt;

The reason this looks so monstrous is that XSLT wasn't designed to work this way. Try something more like:

 <image src="{$image.hd1/@fileref}"

and you'll be much happier. The { } construction is an attribute value template (XSLT 7.6.2), designed for exactly this use case (evaluating expressions to appear in attribute values in literal result elements). How to do this is, actually, a FAQ.

I'm not sure this answers exactly the question you asked; but maybe it'll clear things up enough to clarify (please feel free to ask again if not).

Good luck,

====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================

XSL-List info and archive:

Current Thread