-----Original Message-----
From: Adam J Knight [mailto:adam(_at_)brightidea(_dot_)com(_dot_)au]
Sent: 21 February 2005 10:02
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Efficient Templating - Concise Template Design
Hi guys,
I have created the template below (a part of my first ever complete
stylesheet). To me it seems a little long winded, and I
wonder if it could
be put more concisely. Be a better example of template design.
If we take your logic starting at
<xsl:when test="@id = $id or descendant::tree_node/@id = $id">
you seem to have three conditions
A: @id = $id
B: descendant::tree_node/@id = $id
C: $node = 'collapse'
and the decision table is
A B C node gif
y ? y expand close
y ? n collapse open
n y ? collapse open
n n ? expand close
which translates into
if ((A and C) or (not(A) and not(B)))
then (expand;open)
else (collapse;close)
I might not have read your logic carefully enough, of course. But it seems
to be essentially a question of simplifying the boolean logic, nothing
specific to XSLT.
Michael Kay
http://www.saxonica.com/
<xsl:template match="tree_node">
<tr>
<td>
<table width="100%">
<tr>
<td align="right"
width="{(count(ancestor-or-self::*) - 1) * 20}">
<xsl:choose>
<xsl:when test="child::tree_node">
<xsl:choose>
<xsl:when test="@id = $id or
descendant::tree_node/@id = $id">
<xsl:choose>
<xsl:when test="@id = $id">
<xsl:choose>
<xsl:when test="$node = 'collapse'">
<a href="{$url}&id={(_at_)id}&node=expand">
<img border="0" width="16" height="16"
src="images/ui_tree/book_close.gif"/>
</a>
</xsl:when>
<xsl:otherwise>
<a href="{$url}&id={(_at_)id}&node=collapse">
<img border="0" width="16" height="16"
src="images/ui_tree/book_open.gif"/>
</a>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<a href="{$url}&id={(_at_)id}&node=collapse">
<img border="0" width="16" height="16"
src="images/ui_tree/book_open.gif"/>
</a>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<a href="{$url}&id={(_at_)id}&node=expand">
<img border="0" width="16" height="16"
src="images/ui_tree/book_close.gif"/>
</a>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<img border="0" width="16" height="16"
src="images/ui_tree/paper.gif"/>
</xsl:otherwise>
</xsl:choose>
</td>
<td>
<a href="{$url}&page={(_at_)id}">
<xsl:value-of select="@value"/>
</a>
</td>
<td align="right" width="5%">
<a href="{$url}&action=edit&node={(_at_)id}">edit</a>
</td>
<td align="right" width="5%">
<a href="{$url}&action=delete&node={(_at_)id}"
onClick="return
deleteConfirm();">delete</a>
</td>
</tr>
</table>
</td>
</tr>
</xsl:template>
Cheers,
Adam
Cheers,
Adam
NB: "Pray as if everything depended upon God and work as if everything
depended upon man."
--~------------------------------------------------------------------
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>
--~--