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