[xsl] Re: Recursing in XSLT

Subject: [xsl] Re: Recursing in XSLT
From: "Ahsan" <ahsan_hussain@xxxxxxxxxxxxx>
Date: Mon, 23 Jun 2003 18:10:22 -0700
Hello All-

I am converting the XML attached below to HTML using XSL Style Sheet. We
could have unlimited number of <HSDataContainerType> tags with other
<HSString> or <HSInteger> etc. tags inside those. I don't know how to
recursively go thru. all tags when i don't know the number of
<HSDataContainerType> tags inside one another. Any help or hint would be
greatly appreciated.



XML:
	<HSDataContainerType list="true" name="Inputs" required="true"
systype="true">
		<HSString name="textField_1" required="true" xmlNodeType="1" />
		<HSInteger name="integerField_1" required="true" xmlNodeType="1" />
		<HSDouble name="decimalField_1" required="true" xmlNodeType="1" />
		<HSDate name="dateField_1" required="true" xmlNodeType="1" />
		<HSBinary name="binaryField_1" required="true" xmlNodeType="1" />
		<HSBoolean name="trueFalseField_1" required="true" xmlNodeType="1">
			<DefaultValue>false</DefaultValue>
		</HSBoolean>
		<HSDataContainerType name="DataContainer_1_1" required="true" revision="">
			<HSString name="textField_1_1" required="true" xmlNodeType="1" />
			<HSInteger name="integerField_1_1" required="true" xmlNodeType="1" />
			<HSDataContainerType name="DataContainer_1_1_1" required="true">
				<HSString name="textField_1_1_1" required="true" />
				<HSInteger name="integerField_1_1_1" required="true" />
			</HSDataContainerType>
		</HSDataContainerType>
	</HSDataContainerType>

XSL (use to tackle only a set number of <HSDataContainerType> tags, 1 in
this case):

<xsl:template match="HSDataContainerType">

	<xsl:if test="contains(@name, 'Inputs')">

		<b><p><xsl:value-of select="@name"/>:</p></b>

		<xsl:comment>loop thru all elements in 'Inputs'</xsl:comment>

		<xsl:for-each select="./HSString">
			<xsl:value-of select="@name"/>;
		</xsl:for-each>

		<xsl:for-each select="./HSDouble">
			<xsl:value-of select="@name"/>;
		</xsl:for-each>

		<xsl:for-each select="./HSBoolean">
			<xsl:value-of select="@name"/>;
		</xsl:for-each>

		<xsl:for-each select="./HSBinary">
			<xsl:value-of select="@name"/>;
		</xsl:for-each>

		<xsl:for-each select="./HSInteger">
			<xsl:value-of select="@name"/>;
		</xsl:for-each>

		<xsl:for-each select="./HSDate">
			<xsl:value-of select="@name"/>;
		</xsl:for-each>

</xsl:if> <!-- inputs ends here -->



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


Current Thread