XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
+ Stylus Studio Technical Forum (14621)
+ Website Feedback (249)
- XSLT Help and Discussion (7625)
-> + How to add page number in to v... (2)
-> + XSL Grouping (7)
-> + Repeat images using FOR EACH l... (7)
-> + How to get File name (2)
-> + image and text on the same lin... (2)
-> + Create XSLT stylesheets for us... (2)
-> + Merge Multiple Files While Che... (2)
-> + xslt 3 level or multi level gr... (6)
-> + How to create xsl which will c... (2)
-> + xsl:variable and Result Tree F... (7)
-> - XSL-FO fo:table continued from... (1)
-> + XSLT Java issue (2)
-> + problem with hyperlink (4)
-> + substring-after function probl... (4)
-> + Xalan Processing (3)
-> + Memory utilization high with m... (2)
-> + check all parent node groups s... (2)
-> + CSV DOC to XML CONVERSION (11)
-> + XSLT: Ordered List (based on r... (4)
-> + XSLT Mapping - Issue (4)
-> + XSL following-sibling, how to ... (5)
-> + need xslt elements help (2)
-> + Dynamic generation of URL in X... (2)
-> + List Created from Section Navi... (2)
-> + xslt elements help (2)
-> + Map field if source is not nul... (3)
-> + XSLT group and sort whith gene... (4)
-> + Nested XML value (2)
-> + Specifying condition with coun... (4)
-> + xsl:function using found in er... (4)
-> + How to remove an unwanted spac... (2)
-> + Question about variable substi... (2)
-> + XSL for Comparing nodes and di... (4)
-> + External lookup list (8)
-> + XSL HTML output now needs to b... (2)
-> + Adding a new sub element to th... (4)
-> + How do I get rid of 'Tip' node... (9)
-> + Trying to dynamically create n... (2)
-> + Display XML link, using XSLT a... (9)
-> + calling templates based on ord... (2)
-> + How to add internal links usin... (4)
-> + How to call user defined java ... (3)
-> + XSLT and WebApps past and futu... (3)
-> + passing condition through java... (3)
-> + Apllying a template from withi... (4)
-> + Getting xsl element in javascr... (3)
-> + The document() function inside... (3)
-> + Footnote text move to para (2)
-> + XSL: multiple element come to ... (3)
-> + How to use following-sibling &... (2)
-> + How to use FOP 0.95 with Stylu... (4)
-> + Error during creating PDF from... (2)
-> + Help creating a comma delimite... (4)
-> + Selective Add using XSLT recur... (3)
-> + Help: convert without parent e... (2)
-> - Correct my substring function ... (1)
-> + Old xsl into reports (4)
-> + How to save xslt converted fil... (3)
-> + How to find non tagging text? (5)
-> + Help: Hex entity to Character... (6)
-> + EDI QUOTES MESSAGE NEED TO REP... (2)
-> + How to convert in multi level ... (4)
-> + Need some help with a styleshe... (3)
-> - Conditional Formattinf Formula... (1)
-> + Creating HTML Unordered LIsts.... (2)
-> + xslt params uknown number of i... (2)
-> + How to use fonts other than ba... (2)
-> - Converting existing HTML into ... (1)
-> + Help to tune up this XSLT (2)
-> + XSLT - is only converting the ... (2)
-> + XSLT Editor tab (4)
-> + Convert multiple files from XM... (2)
-> + how to use in select expressi... (2)
-> + Help needed in XSL transformat... (2)
-> + How to add a string with math ... (5)
-> + How to add a string with math ... (6)
-> - br element (1)
-> + Stylesheet directed terminatio... (2)
-> + Who can help me whit sum funct... (2)
-> + XSLT Works in Stylus Studio, n... (3)
-> - Filter by Attribute (1)
-> + Display x number of items whic... (6)
-> + MultiColumn Reporting (3)
-> + cant get namespace declaration... (3)
-> + Performance xsl:for each and n... (3)
-> + How to assign value to a XSLT ... (3)
-> + Select element value based on ... (2)
-> + Version 10 of Saxon? (8)
-> + How to get the value of a node... (5)
-> + Display Xpath using (4)
-> + XSLT to report (2)
-> + xslt help for a noobie (2)
-> + XSL-FO XML to PDF with XSLT (3)
-> + Using XSLT to transform XML to... (4)
-> + XSLT to sort a list alphabetic... (4)
-> + How to Get Colum Values based ... (2)
-> + non persisting predicate filte... (5)
-> + HTML to XSLT (2)
-> + extra carriage returns in "csv... (2)
-> + extra carriage returns in "csv... (3)
-- Previous [301-320] [321-340] [341-360] Next
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Liam BSubject: Counting children and grandchildren
Author: Liam B
Date: 12 Feb 2009 10:46 AM
Hello all

I need to test if a node has more than one child element AND no grandchildren.

This is what i'm using at the moment but it's not having any effect.

"count(Data_For_Visio[last()-1]>1) and count(descendant::Data_For_Visio[last()]=0)"

Any ideas where i'm going wrong?

Postnext
John BamptonSubject: Counting children and grandchildren
Author: John Bampton
Date: 13 Feb 2009 12:47 AM
I used this xml

<?xml version="1.0" encoding="UTF-8"?>



<Data_For_Visio>
<g></g>
<h></h>
</Data_For_Visio>

And this XSL

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">

<xsl:if test="count(child::Data_For_Visio/node() ) &gt; 1 and count(child::Data_For_Visio/child::*/node()) = 0 ">
<xsl:text>Data_For_Visio has more than one child and no grandchildren</xsl:text>
</xsl:if>

</xsl:template>
</xsl:stylesheet>


Make sure there is no whitespace in the xml elements and it works

Postnext
John BamptonSubject: Counting children and grandchildren
Author: John Bampton
Date: 13 Feb 2009 03:13 AM
It would be better if you posted your xml so that we could understand the problem a bit better. Cheers John Bampton.

Postnext
Liam BSubject: Counting children and grandchildren
Author: Liam B
Date: 13 Feb 2009 06:09 AM
Hi John,

Thanks for your responses.

The data is for an orgchart, and when a person has two or more subordinates, but those subordinates have no subordinates then apply a different transorm to those subordinates. For example in the following XML i wish to apply a different transform to Jon Snow, Moira Stewart, Jimmie Krankie and Alex Zane only.


This is My XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="..\styles\orgchartstest.xsl" ?>
<dataroot>
<Data_For_Visio Employee_ID="123" Person_Name="Terry Wogan" Reports-To="1" Position_Title="Finance - Corporate Services Manager" Substantive="">
<Data_For_Visio Employee_ID="615" Person_Name="Cliff Richard" Reports-To="123" Position_Title="Management Accountant" Substantive="">
<Data_For_Visio Employee_ID="654" Person_Name="Sue Barker" Reports-To="615" Position_Title="Accounting Assistant" Substantive=""/>
</Data_For_Visio>
<Data_For_Visio Employee_ID="616" Person_Name="Dermot O'Leary" Reports-To="123" Substantive="">
<Data_For_Visio Employee_ID="683" Person_Name="Cat Deeley" Reports-To="616" Position_Title="Accounting Assistant" Substantive=""/>
</Data_For_Visio>
<Data_For_Visio Employee_ID="632" Person_Name="David Dimbleby" Reports-To="123" Position_Title="Finance Manager" Substantive="">
<Data_For_Visio Employee_ID="656" Person_Name="Jon Snow" Reports-To="632" Position_Title="Procurement and Contracts Assistant" Substantive=""/>
<Data_For_Visio Employee_ID="657" Person_Name="Moira Stewart" Reports-To="632" Position_Title="Payroll Admin" Substantive="" />
<Data_For_Visio Employee_ID="983" Person_Name="Jimmie Krankie" Reports-To="632" Position_Title="Payroll Input Assistant" Substantive=""/>
<Data_For_Visio Employee_ID="1210" Person_Name="Alex Zane" Reports-To="632" Position_Title="Procurement and Contracts Assistant" Substantive=""/>
</Data_For_Visio>
<Data_For_Visio Employee_ID="648" Person_Name="Raghesh Omar" Reports-To="123" Position_Title="Team Co-Ordinator" Substantive=""/>
</Data_For_Visio>
</dataroot>

And this is the XML i'm using to transform it(Including the updated test supplied by yourself):


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method="html" />

<xsl:template match="/">
<html>
<head>

<script type="text/javascript" language="JavaScript" src="..\scripts\jquery.js"><xsl:comment></xsl:comment></script>
<link type="text/css" rel="stylesheet" href="../styles/orgcharts.css"><xsl:comment></xsl:comment></link>
</head>
<body>
<table cellspacing="0" cellpadding="0" class="roottable">
<tr>
<xsl:apply-templates select="dataroot" />
</tr>
</table>
</body>
</html>
</xsl:template>

<xsl:choose>
<xsl:when test="count(child::Data_For_Visio/node() ) &gt; 1 and count(child::Data_For_Visio/child::*/node()) = 0 ">


<xsl:template match="Data_For_Visio">
<td valign="top" class="open">

<div>


<div class="last">
<div class="wrapperbox">
<div class="boxc">

<div class="box">
<b><xsl:value-of select="@Person_Name" /></b>
<p><xsl:if test="count(.//Data_For_Visio)">
<xsl:text> (</xsl:text>
<xsl:value-of select="number(count(.//Data_For_Visio))" />
<xsl:text>)</xsl:text>
</xsl:if>
<xsl:comment></xsl:comment>
</p>
<p><xsl:value-of select="@Position_Title"/></p>
<p><xsl:value-of select="@Organisation"/></p>
<xsl:choose>
<xsl:when test="@Substantive != @Person_Name">
<b><xsl:text>Substantive: </xsl:text><xsl:value-of select="@Substantive"/></b>

</xsl:when>
<xsl:when test="@Substantive !=Null">
<b><xsl:text>Substantive: </xsl:text><xsl:value-of select="@Substantive"/></b>
</xsl:when>
</xsl:choose>


</div>
</div>
</div>
</div>


<xsl:if test="*">
<div class="linemiddle"><div class="openclose" ></div></div>
</xsl:if>
<div class="tablewrapper">
<table cellspacing="0" cellpadding="0" align="center">
<tr>
<xsl:apply-templates select="*" />
<xsl:comment></xsl:comment>
</tr>
</table>
</div>
</div>
</td>
</xsl:template>
</xsl:when>
<xsl:otherwise>
<xsl:template match="Data_For_Visio">
<td valign="top" class="open">
<xsl:if test="parent::* and count(parent::*/*)&gt;1">
<div>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="not(preceding-sibling::*)">leftabove</xsl:when>
<xsl:otherwise>rightabove</xsl:otherwise>
</xsl:choose>
</xsl:attribute></div>
<div>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="not(following-sibling::*) or not(preceding-sibling::*)">nolines</xsl:when>
<xsl:otherwise>above</xsl:otherwise>
</xsl:choose>
</xsl:attribute></div>
</xsl:if>
<div>



<div class="wrapperbox">
<div class="boxc">

<div class="box">
<b><xsl:value-of select="@Person_Name" /></b>
<p><xsl:if test="count(.//Data_For_Visio)">
<xsl:text> (</xsl:text>
<xsl:value-of select="number(count(.//Data_For_Visio))" />
<xsl:text>)</xsl:text>
</xsl:if>
<xsl:comment></xsl:comment>
</p>
<p><xsl:value-of select="@Position_Title"/></p>
<p><xsl:value-of select="@Organisation"/></p>
<xsl:choose>
<xsl:when test="@Substantive != @Person_Name">
<b><xsl:text>Substantive: </xsl:text><xsl:value-of select="@Substantive"/></b>

</xsl:when>
<xsl:when test="@Substantive !=Null">
<b><xsl:text>Substantive: </xsl:text><xsl:value-of select="@Substantive"/></b>
</xsl:when>
</xsl:choose>


</div>
</div>
</div>


<xsl:if test="*">
<div class="linemiddle"><div class="openclose" ></div></div>
</xsl:if>
<div class="tablewrapper">
<table cellspacing="0" cellpadding="0" align="center">
<tr>
<xsl:apply-templates select="*" />
<xsl:comment></xsl:comment>
</tr>
</table>
</div>
</div>
</td>
</xsl:template>
</xsl:otherwise>
</xsl:choose>

</xsl:stylesheet>

Postnext
John BamptonSubject: Counting children and grandchildren
Author: John Bampton
Date: 13 Feb 2009 09:59 AM
here is the condtion that you need

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">


<xsl:for-each select="//Data_For_Visio">
<xsl:choose>
<xsl:when test="count(child::*) &gt; 1 and count(child::*/child::*) = 0 ">
more than one child and no grandchildren
</xsl:when>
<xsl:otherwise>
the condition fails
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>


</xsl:template>
</xsl:stylesheet>


Cheers, John Bampton.

Postnext
Liam BSubject: Counting children and grandchildren
Author: Liam B
Date: 13 Feb 2009 12:47 PM
Thanks John,

It's abit late in the day in the UK so i'll have to check whetehr this works on monday. But thanks you very much for your help thus far.

Posttop
John BamptonSubject: Counting children and grandchildren
Author: John Bampton
Date: 19 Feb 2009 08:20 AM
i love it when 125 people check out my handy work.

Hey you didn't thank me!???

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.