John Horner wrote:
<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?
There are many ways that lead to Rome. It can be done very short in XSLT
2, but I guess you are using XSLT 1. Here's one way to tackle it, using
only template matching, which will output the number "1" is there is no
image with @default, and will print the position of the one with
@default when there is one.
<xsl:template match="/">
pos2: <xsl:apply-templates
select="$gallery-xml-file/gallery/image" />
</xsl:template>
<xsl:template match="image[(_at_)default] |
image[not(../image/@default)][1]">
<xsl:value-of select="position()" />
</xsl:template>
<xsl:template match="image" />
Cheers,
-- Abel Braaksma
http://www.nuntia.nl
--~------------------------------------------------------------------
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>
--~--