xsl-list
[Top] [All Lists]

[xsl] Find a specific element or fall back to element 1

2007-01-15 15:50:10
I have a gallery.xml file containing a number of images:

<gallery>
    <image>
      <filename>1.jpg</filename>
    </image>
    <image>
      <filename>2.jpg</filename>
    </image>
    <!-- etc -->
    <image default="true">
      <!-- optional attribute applies to this element -->
      <filename>10.jpg</filename>
    </image>
</gallery>

and my xslt has to do the following thing -- look for an image marked
with a "default" attribute, and if it's not found, use the first image
instead. So I'm looking for the position number of the marked element,
and if I can't find it, using 1:

<xsl:variable name="gallery-xml-file"
select="document($gallery-xml-path)"/>
<xsl:variable name="test-position">
  <xsl:for-each select="$gallery-xml-file//image">
    <xsl:if test="@default='true'">
      <xsl:value-of select="position()"/>
    </xsl:if>
  </xsl:for-each>
</xsl:variable>
<xsl:variable name="display-position">
  <xsl:choose>
    <xsl:when test="$test-position = ''">1</xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$test-position"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:variable>

This seems a bit long and wasteful to me. Is there a better way?

==============================================================================
The information contained in this email and any attachment is confidential and
may contain legally privileged or copyright material.   It is intended only for
the use of the addressee(s).  If you are not the intended recipient of this
email, you are not permitted to disseminate, distribute or copy this email or
any attachments.  If you have received this message in error, please notify the
sender immediately and delete this email from your system.  The ABC does not
represent or warrant that this transmission is secure or virus free.   Before
opening any attachment you should check for viruses.  The ABC's liability is
limited to resupplying any email and attachments
==============================================================================

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>