Subject: RE: [xsl] Efficient Templating - Concise Template Design From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 21 Feb 2005 10:49:18 -0000 |
> -----Original Message----- > From: Adam J Knight [mailto:adam@xxxxxxxxxxxxxxxxx] > Sent: 21 February 2005 10:02 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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={@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={@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={@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={@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={@id}"> > <xsl:value-of select="@value"/> > </a> > </td> > <td align="right" width="5%"> > <a href="{$url}&action=edit&node={@id}">edit</a> > </td> > <td align="right" width="5%"> > <a href="{$url}&action=delete&node={@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."
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Efficient Templating - Concis, Adam J Knight | Thread | [xsl] Global variable, Katharina Kreis |
[xsl] Efficient Templating - Concis, Adam J Knight | Date | [xsl] Global variable, Katharina Kreis |
Month |