xsl-list
[Top] [All Lists]

Halt rendering of nodes based on node id!!

2005-02-17 03:33:06
Hi all,

Hooray!!! 
I may have made some progress, I hope!!!

Question: 
Given the following xml/xsl files:
How do I stop stylesheet rendering or exclude nodes from rendering once a
particular nodes children are rendered. Ie: If the current node selected is
node with id(10); it, its ancestors and its children are displayed. However,
the children of its children(12,13) are node rendered.

The modification I believe with need to occur here:
<xsl:apply-templates select="//tree_node[parent::tree or
ancestor::tree_node[(_at_)id=$id]]"/>


COMPLETE XML FILE:

<tree>
  <tree_node id="7" value="Test">
    <tree_node id="8" value="Test Sub One"/>
    <tree_node id="9" value="Test Sub One">
      <tree_node id="10" value="Test Sub Two"/>
       <tree_node id="11" value="Test Sub Two">
         <tree_node id="12" value="Test Sub Three"/>
         <tree_node id="13" value="Test Sub Three"/>
       </tree_node>
    </tree_node>
  </tree_node>
  
</tree>

COMPLETE XSL FILE:

<?xml version="1.0"?>
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
  <xsl:param name="css"/>
  <xsl:param name="url"/>
  <xsl:param name="id"/> 
  <xsl:output method="html" indent="yes"/>

  <xsl:template match="/">
    <table cellspacing="0" cellpadding="2" class="{$css}">
      <tr>
          <td class="ui_tree_bar">
          <a href="{$url}&amp;action=add">add</a>
        </td>
        </tr>
        <xsl:apply-templates select="//tree_node[parent::tree or
ancestor::tree_node[(_at_)id=$id]]"/>
    </table>
  </xsl:template>
  
  <xsl:template match="tree_node">
      
        <tr>
        <td>
          <table width="100%">
              <tr>
                <td align="right" width="{count(ancestor-or-self::*) * 10}">
                    <xsl:choose>
                      <xsl:when test="child::tree_node">
                          <a href="{$url}&amp;node={(_at_)id}">+</a>
                        </xsl:when>
                        <xsl:otherwise>
                          -
                        </xsl:otherwise>
                    </xsl:choose>
              </td>
                <td>
                  <xsl:value-of select="@value"/>
                </td>
                  <td align="right" width="25%">
                    <a 
href="{$url}&amp;action=edit&amp;node={(_at_)id}">edit</a>
                    <a
href="{$url}&amp;action=delete&amp;node={(_at_)id}">delete</a>
                  </td>
            </tr>
            </table>
          </td>
      </tr> 
      <xsl:apply-templates select="child::tree_node[(_at_)id = $id]"/>
        
  </xsl:template>

</xsl:stylesheet>

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>
--~--



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