[xsl] onLoad Collapsing of subtree.

Subject: [xsl] onLoad Collapsing of subtree.
From: "Brahadambal Srinivasan" <brahadambal@xxxxxxxxx>
Date: Tue, 2 May 2006 11:07:18 +0530
I have the folowwing sample XML and XSLT.

I want all the nodes to be collapsed on load! Is it possible? Please
help me out.

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="XMLexample.xsl" type="text/xsl" ?>
<TS>
	<Table1>
		<fld1>0</fld1>
		<disc1>
			<dfld1>7</dfld1>
			<loop3>
				<lfld2>170</lfld2>
				<loop4>
					<lfld3>40</lfld3>
				</loop4>
			</loop3>
			<fld3>1025</fld3>
		</disc1>
		<loop1>
			<lfld1>1030</lfld1>
		</loop1>
		<loop1>
			<lfld1>1031</lfld1>
			<loop2>
				<disc1>
					<dfld1>7</dfld1>
					<loop3>
						<lfld2>170</lfld2>
						<loop4>
							<lfld3>40</lfld3>
						</loop4>
					</loop3>
					<fld3>1025</fld3>
				</disc1>
				<disc2>
					<fld2>1200908</fld2>
					<Iterate1>
						<lfld4>700</lfld4>
						<Iterate2>
							<fld5>7</fld5>
							<Iterate3>
								<fld6>7</fld6>
								<fld7>7</fld7>
							</Iterate3>
							<fld8>7</fld8>
						</Iterate2>
					</Iterate1>
					<fld3>1025</fld3>
				</disc2>
			</loop2>
			<fld10>1024</fld10>
		</loop1>
	</Table1>
</TS>

XSLT is:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
	<xsl:template match="/TS">
		<html>
			<head>
				<title>XML in Tree View</title>
				<meta name="generator" content="ZZEE Art HTML Listing"/>
				<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
				<style type="text/css">
					<!--
						body
						{
							font-family: "Times New Roman";
							font-size: 12pt;
							background-color: #ffffff;
							color: #000000;
							text-align: left;
						}
						ul.zzul {list-style-type:none; display: block;}
						span.zzspace {left:11px;}
						a, a:visited {color: #0000ff;}
						a:hover { color: #ff0000;}
					-->
				</style>
				<!-- [client side code for collapsing and unfolding branches] -->
				<script language="JavaScript">
					function Toggle(node)
					{
						// Unfold the branch if it isn't visible
						if (node.nextSibling.style.display == 'none')
						{
							// Change the image (if there is an image)
							if (node.children.length > 0)
							{
								if (node.children.item(0).tagName == "IMG")
								{
									node.children.item(0).src = "minus.gif";
								}
							}

							node.nextSibling.style.display = '';
						}
						// Collapse the branch if it IS visible
						else
						{
							// Change the image (if there is an image)
							if (node.children.length > 0)
							{
								if (node.children.item(0).tagName == "IMG")
								{
									node.children.item(0).src = "plus.gif";
								}
							}

							node.nextSibling.style.display = 'none';
						}

					}
				</script>
			</head>
			<body>
				<ul style="list-style-type:none; margin:0; padding:0;">
					<table border="0">
						<tr>
							<td>
								<xsl:apply-templates select="." mode="render"/>
							</td>
						</tr>
					</table>
				</ul>
			</body>
		</html>
	</xsl:template>
	<xsl:template match="/" mode="render">
		<xsl:apply-templates mode="render"/>
	</xsl:template>
	<xsl:template match="*" mode="render">
		<table border="0">
			<tr>
				<td/>
				<td/>
				<td/>
				<td>
					<a onClick="Toggle(this)">
						<img src="minus.gif"/>
						<xsl:text>  </xsl:text>
						<xsl:value-of select="local-name()"/>
					</a>
					<div>
						<xsl:apply-templates select="@*" mode="render"/>
						<xsl:apply-templates mode="render"/>
					</div>
				</td>
			</tr>
		</table>
	</xsl:template>
	<xsl:template match="text()" mode="render">
		<xsl:call-template name="escape-ws">
			<xsl:with-param name="text" select="translate(.,' ',' ')"/>
		</xsl:call-template>
	</xsl:template>
	<xsl:template name="escape-ws">
		<xsl:param name="text"/>
		<xsl:choose>
			<xsl:when test="contains($text, ' ')">
				<xsl:call-template name="escape-ws">
					<xsl:with-param name="text" select="substring-before($text, ' ')"/>
				</xsl:call-template>
				<xsl:call-template name="escape-ws">
					<xsl:with-param name="text" select="substring-after($text, ' ')"/>
				</xsl:call-template>
			</xsl:when>
			<xsl:when test="contains($text, ' ')">
				<xsl:value-of select="substring-before($text, ' ')"/>
				<xsl:call-template name="escape-ws">
					<xsl:with-param name="text" select="substring-after($text, ' ')"/>
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="$text"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
</xsl:stylesheet>

TIA.
Brady.

Current Thread