Try
select="(image[1] | image[(_at_)default='true'])[last()]"
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: John Horner [mailto:Horner(_dot_)John(_at_)abc(_dot_)net(_dot_)au]
Sent: 15 January 2007 22:50
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Find a specific element or fall back to element 1
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>
--~--
--~------------------------------------------------------------------
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>
--~--