[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

how to get node with maximum child nodes ??

Subject: how to get node with maximum child nodes ??
From: Dipesh Khakhkhar <dkhakhkh@xxxxxxxxxxxxxxx>
Date: Thu, 28 Aug 2003 11:38:00 -0400
get child node
Hi,

I am trying to find a node with maximum child node. Here is my xml.

XML
=====

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Dipesh 
Khakhkhar (Fidelity Investments) -->
<AEXDATAEXTRACT DTD_VERSION="2.2" EXTRACT_START_DATETIME="1/9/2003 4:49:39 PM" 
EXTRACT_TYPE="FULL" EXTRACT_COLLECTION="">
	<RESOURCE_TYPE GUID="{493435f7-3b17-4c4c-b07f-c23e7ab7781f}" NAME="Computer" 
DESCRIPTION="Asset Type definition for Computer" SOURCE="Asset" 
CREATED_DATE="7/16/2002 5:22:23 PM" MODIFIED_DATE="9/23/2002 2:17:48 PM" 
DELETED="0">
		<RESOURCE GUID="{C116FCBF-5B94-4F15-BF95-5795DBD384CD}" 
NAME="ALTIRISTEST_CPQ" SOURCE="" SITE_CODE="756win" DOMAIN="FIDD" 
SYSTEM_TYPE="Win32" OS_NAME="Microsoft Windows XP" OS_TYPE="Professional" 
OS_VERSION="5.1" OS_REVISION="Service Pack 1" LAST_LOGON_USER="" 
LAST_LOGON_DOMAIN="">
			<INVENTORY>
				<ASSET>
					<IDENTIFICATION>
						<ATTRIBUTE NAME="Name">ALTIRISTEST_CPQ</ATTRIBUTE>
						<ATTRIBUTE NAME="Domain">FIDDOMRTLSLC</ATTRIBUTE>
						<ATTRIBUTE NAME="Altkey1" NULL="FALSE"/>
						<ATTRIBUTE NAME="Altkey2">00-02-A5-1A-67-A6</ATTRIBUTE>
					</IDENTIFICATION>
					<CLASS NAME="Client_Agent">
						<OBJECT>
							<ATTRIBUTE NAME="Agent Name">Altiris eXpress NS Client</ATTRIBUTE>
							<ATTRIBUTE NAME="Product Version">5.5.0.517</ATTRIBUTE>
							<ATTRIBUTE NAME="Build Number">517</ATTRIBUTE>
							<ATTRIBUTE NAME="Install Path">C:\Program Files\Altiris\eXpress\NS 
Client</ATTRIBUTE>
						</OBJECT>

					</CLASS>
					<CLASS NAME="Inventory_Results">
						<OBJECT>
							<ATTRIBUTE NAME="Collection Time">1/9/2003 3:06:56 AM</ATTRIBUTE>
							<ATTRIBUTE NAME="File Count">3</ATTRIBUTE>
							<ATTRIBUTE NAME="Total Size">139271</ATTRIBUTE>
							<ATTRIBUTE NAME="Version">5: 5: 0: 423</ATTRIBUTE>
						</OBJECT>
					</CLASS>
				</ASSET>
			</INVENTORY>
		</RESOURCE>
		<RESOURCE GUID="{C116FCBF-5B94-4F15-BF95-5795DBD384CD}" 
NAME="ALTIRISTEST_CPQ" SOURCE="" SITE_CODE="756win" DOMAIN="FIDD" 
SYSTEM_TYPE="Win32" OS_NAME="Microsoft Windows XP" OS_TYPE="Professional" 
OS_VERSION="5.1" AdditionalCol="Working Additional Col Value" 
OS_REVISION="Service Pack 1" LAST_LOGON_USER="" LAST_LOGON_DOMAIN="">
			<INVENTORY>
				<ASSET>
					<IDENTIFICATION>
						<ATTRIBUTE NAME="Name">ALTIRISTEST_CPQ</ATTRIBUTE>
						<ATTRIBUTE NAME="Additional Column">additional column value</ATTRIBUTE>
						<ATTRIBUTE NAME="Domain">FIDDOMRTLSLC</ATTRIBUTE>
						<ATTRIBUTE NAME="Altkey1" NULL="FALSE"/>
						<ATTRIBUTE NAME="Altkey2">00-02-A5-1A-67-A6</ATTRIBUTE>
					</IDENTIFICATION>
					<CLASS NAME="Client_Agent">
						<OBJECT>
							<ATTRIBUTE NAME="Agent Name">Altiris eXpress NS Client</ATTRIBUTE>
							<ATTRIBUTE NAME="Product Version">5.5.0.517</ATTRIBUTE>
							<ATTRIBUTE NAME="Extra Column">Extra COlumn Value1</ATTRIBUTE>
							<ATTRIBUTE NAME="Build Number">517</ATTRIBUTE>
							<ATTRIBUTE NAME="Install Path">C:\Program Files\Altiris\eXpress\NS 
Client</ATTRIBUTE>
						</OBJECT>
					</CLASS>
				</ASSET>
			</INVENTORY>
		</RESOURCE>
	</RESOURCE_TYPE>
</AEXDATAEXTRACT>


----------------------------------------------------------------------

In the above xml I am trying to find a node (i.e CLASS having attribute 
Client_Agent)having an OBJECT node which has maximum child nodes i.e 
(ATTRIBUTES). I am sorting the OBJECT node by counting their child nodes i.e. 
"ATTRIBUTES". But i am getting two generate ids for such a OBJECT node whereas 
i should get only one. (I am using XML SPY as a debugger). Then I am tyring to 
get the node corresponding to such generate id but not getting anything from 
it.

Here is my xsl which is doing the above mentioned thing.

XSL
====

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

<!-- Getting Client_Agent node with maximum childnodes i.e. having maximum 
columns-->
<xsl:variable name="mostattClientAgentTable">
<xsl:for-each select="//CLASS">
	<xsl:choose>
		<xsl:when test="normalize-space(@NAME)='Client_Agent'">
			<xsl:for-each select="OBJECT">
				<xsl:sort select="count(ATTRIBUTE)" order="descending"/>
					<xsl:if test="position()=1">
						<xsl:value-of select="generate-id(.)"/>
					</xsl:if>
			</xsl:for-each>
		</xsl:when>
	</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="maxattClntAgt-node" select="//node()[generate-id() = 
$mostattClientAgentTable]"/>
</xsl:stylesheet>

----------------------------------------------------------------------

I am getting two generate ids in the variable mostattClientAgentTable. I guess 
i should get only one. Or am i doing something wrong.

Then i am trying to get the node corresponding to such generate id and here I 
am not getting anything.

Any help to sort out this problem will be greatly appreciated.

Eagerly waiting for reply.

Regards,
Dipesh


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.