Subject: RE: [xsl] Node Position & Relationship! From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx> Date: Fri, 11 Feb 2005 14:41:41 -0000 |
> Given the following xml structure, I want to create an xsl if > element that tests the current node to see if it is a level 0 > tree_node element. > > <?xml version="1.0"?> > <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> > > > Here is my attached, pretty sad!!!!! > > <xsl:if test="{count(self::*)=1}"> > <xsl:apply-templates select="tree_node"/> > </xsl:if > > Can someone give me the correct way to achieve this. > Also how can I found out if a particular node is a child, > ancestor or peer > Of any given node. > > Thanks to anyone who response, muchly appreciated. You need to read about the "xpath axis'" (plural) To test if a node is the child of a tree node: <xsl:if test="parent::tree"> To test if a tree node is the top-most tree node (dependant on structure): <xsl:if test="not(parent::tree)"> Or, (again depending on the structure of your xml): <xsl:if test="not(ancestor::tree)"> To test if a node has siblings: <xsl:if test="preceding-sibling::tree or following-sibling::tree"> Or: <xsl:if test="../tree"> There are many, many ways. If you are certain of the structure of your xml you could even do it at the template match level: <xsl:template match="/tree"> (level 0 tree) <xsl:template match="/tree/tree"> (level 1 tree) ...and so on. cheers andrew
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Node Position & Relations, Mukul Gandhi | Thread | RE: [xsl] Node Position & Relations, Andrew Welch |
Re: [xsl] Node Position & Relations, Mukul Gandhi | Date | [xsl] Aborting XSL processing durin, ben senior |
Month |