This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Conditional Assigining


Hi jeni,

Thank you very very much for the reply.  I really got struck with a serious 
problem and require your valuable help (as usual) to solve it.

Here comes my XML FILE
<xslTutorial >

<section>
<sectionID>1</sectionID>
<parentID>0</parentID>
<text>section 1</text>
</section>

<section>
<sectionID>2</sectionID>
<parentID>0</parentID>
<text>section 2</text>
</section>

<section>
<sectionID>3</sectionID>
<parentID>1</parentID>
<text>section 1.1</text>
</section>


<section>
<sectionID>4</sectionID>
<parentID>1</parentID>
<text>section 1.2</text>
</section>

<section>
<sectionID>5</sectionID>
<parentID>3</parentID>
<text>section 1.1</text>
</section>

<section>
<sectionID>6</sectionID>
<parentID>2</parentID>
<text>section 2.1</text>
</section>

<section>
<sectionID>7</sectionID>
<parentID>2</parentID>
<text>section 2.2</text>
</section>

<section>
<sectionID>8</sectionID>
<parentID>6</parentID>
<text>section 2.1.1</text>
</section>
</xslTutorial>

My xsl file read as follows:
-----------------------------
<xsl:template match="First">
	<xsl:for-each select="Section[parentID='0']">
		<xsl:variable name="ID" select="sectionID"/>
		<xsl:call-template name="recur">
			<xsl:with-param name="id">
				<xsl:value-of select="sectionID" />
			</xsl:with-param>
			<xsl:with-param name="pid">
				<xsl:value-of select="parentID" />
			</xsl:with-param>
			<xsl:with-param name="textvalue">
				<xsl:value-of select="text" />
			</xsl:with-param>
		</xsl:call-template>
		<xsl:for-each select="../Section[parentID=$ID]">
		sub
			<xsl:variable name="ID" select="sectionID"/>
			<xsl:call-template name="recur">
				<xsl:with-param name="id">
					<xsl:value-of select="sectionID" />
				</xsl:with-param>
				<xsl:with-param name="pid">
					<xsl:value-of select="parentID" />
				</xsl:with-param>
				<xsl:with-param name="textvalue">
					<xsl:value-of select="text" />
				</xsl:with-param>
			</xsl:call-template>
			<xsl:apply-templates select="child::*/section" />
			<xsl:text>
			</xsl:text>
		</xsl:for-each>
		<!--after functiion
		<xsl:call-template name="recur">
				<xsl:with-param name="id">
					<xsl:value-of select="sectionID" />
				</xsl:with-param>
				<xsl:with-param name="pid">
					<xsl:value-of select="parentID" />
				</xsl:with-param>
				<xsl:with-param name="textvalue">
					<xsl:value-of select="text" />
				</xsl:with-param>
			</xsl:call-template>-->
		</xsl:for-each>

</xsl:template>


<xsl:template name="recur">
	<xsl:param name="id" />
	id <xsl:value-of select="$id"/>
	<xsl:param name="pid" />
	pid <xsl:value-of select="$pid"/>
	<xsl:param name="textvalue" />
	text <xsl:value-of select="$textvalue"/>

</xsl:template>
<xsl:template name="recur1">
	<xsl:param name="id" />
	id <xsl:value-of select="$id"/>
	<xsl:param name="pid" />
	pid <xsl:value-of select="$pid"/>
	<xsl:param name="textvalue" />
	text <xsl:value-of select="$textvalue"/>

</xsl:template>

</xsl:stylesheet>


My output is as follows:
---------------------------
<?xml version="1.0" encoding="UTF-8"?>

	id 1
	pid 0
	text Section 1
		sub

	id 5
	pid 1
	text Section 1.1

	id 2
	pid 0
	text Section 2
		sub

	id 6
	pid 2
	text Section 2.1

	id 6
	pid 2
	text Section 2.1.1



As you can see, i am not getting only the first level of output (ie. 1, 1.1 
and 2, 2.1, 2.1.1).  I am not getting the second level of output ( ie 1, 1.2 
and 2, 2.2) AT ALL.

can you please please help me out from this??.  I really got struck with 
this for almost 2 days.

thanks jeni for your patience,
Srini


>From: Jeni Tennison <mail@jenitennison.com>
>Reply-To: xsl-list@lists.mulberrytech.com
>To: "Sri ni" <srini75@hotmail.com>
>CC: xsl-list@lists.mulberrytech.com
>Subject: Re: [xsl] Conditional Assigining
>Date: Wed, 16 May 2001 19:41:01 +0100
>
>Hi Sri,
>
> > <xsl:variable name="ID">-1</xsl:variable>
> > <xsl:for-each select="Section[parentID='0']">
> >         <xsl:if test="$ID=-1">
> >                 <xsl:variable name="ID" select="sectionID" />
> >         </xsl:if>
> > id <xsl:value-of select="$ID"/>
>
>You cannot use variables in this way within XSLT. A variable's scope
>is limited to its following siblings and their descendants, and you
>cannot reassign a different value to the variable (unless you use an
>extension element like saxon:assign).
>
>If you want to get the value of the sectionID of that first Section
>element, then that's what you should set the value of the variable to:
>
><xsl:variable name="ID" select="Section[parentID = '0'][1]" />
>
>I hope that helps,
>
>Jeni
>
>---
>Jeni Tennison
>http://www.jenitennison.com/
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]