xsl-list
[Top] [All Lists]

RE: Display children of node with given id!!

2005-02-15 04:19:38
Hi,

I have had it. I don't have a clue.
I want to display all the children of node with id (ie: 7) 
should be: 8,9. 

COMPLETE XML STRUCTURE:

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


COMPLETE XSL STRUCTURE:

<?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/>
    </table>
  </xsl:template>
  
  <xsl:template match="tree_node[parent::tree or
child::tree_node[(_at_)id=$id]]">

Variables cannot be used in patterns in XSLT 1.0. (In XSLT 2.0 they can be 
used.)

Now you "select all and match only those elements that qualify" (and let the 
rest be handled by build-in templates). How about changing the approach to 
"select the qualifying elements only".

  <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/descendant::tree_node[(_at_)id = 
$id]/tree_node"/>
    </table>
  </xsl:template>
  <xsl:template match="tree_node">
    <tr>
      <td>
        <table width="100%">
          <tr>
            <td align="right" width="{count(ancestor-or-self::*) * 10}">
              <a href="{$url}&amp;node={(_at_)id}">+</a>
            </td>
            <td>
              <xsl:value-of select="@value"/>
            </td>
            <td 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:template>

Cheers,

Jarno - Billy Bunter: Promo Mix

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