Subject: RE: [xsl] Conditional Assigining From: "Sri ni" <srini75@xxxxxxxxxxx> Date: Thu, 17 May 2001 09:01:29 -0000 |
Here is my xml section.xml ---------------- <Section>
<Section> <sectionID>19</sectionID> <parentID>10</parentID> <bulletinID>1</bulletinID> <groupID>1</groupID> <dictionaryID>1012</dictionaryID> <text>Section 1.1.1.1</text> </Section> <Section>
<xsl:template match="First"> <!--<xsl:for-each select="Section[parentID='0']"> --> <xsl:for-each select="Section"> <xsl:variable name="ID" select="sectionID"/> <xsl:value-of select="text"/> <xsl:for-each select="../Section[parentID=$ID]"> <xsl:value-of select="text"/><br/> <xsl:variable name="ID" select="sectionID"/> <!-- currentID = <xsl:value-of select="$ID" />--> </xsl:for-each> <!-- <xsl:variable name="ID" select="sectionID"/> sectionid afterloop= <xsl:value-of select="$ID" />--> <!-- <xsl:variable name="ID" select="text"/> text afterloop = <xsl:value-of select="$ID" />-->
</xsl:for-each> </xsl:template>
CURRENT OUTPUT: ----------------- id 1 pid 0 text Section 1
id 5 pid 1 text Section 1.1
id 10 pid 5 text Section 1.1.1
id 19 pid 10 text Section 1.1.1.1
Desired Output =============== id 1 pid 0 text Section 1
id 5 pid 1 text Section 1.1
id 10 pid 5 text Section 1.1.1
id 19 pid 10 text Section 1.1.1.1
id 11 pid 1 text Section 1.2
Thanks in advance, Srini
From: "Michael Kay" <mhkay@xxxxxxxxxxxx> Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Subject: RE: [xsl] Conditional Assigining Date: Wed, 16 May 2001 17:15:17 +0100
>
> <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"/>
>
XSLT isn't a sequential programming language, you are trying to use it as if
it were. You can't do things in one iteration of xsl:for-each that affect
subsequent iterations, because there is no such thing as "subsequent" in a
non-sequential language. (See my XSLT Programmer's Reference for an essay on
the subject...)
Instead you want something like
<xsl:for-each select="Section[parentID='0']"> <xsl:choose> <xsl:when test="preceding-sibling::Section[parentID='0']"> <xsl:value-of select="preceding-sibling::Section[parentID='0'][1]"/> </xsl:when> <xsl:otherwise>-1</xsl:otherwise> </xsl:choose> </xsl:for-each>
That works because it expresses the output as a function of the input.
Mike Kay
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.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Conditional Assigining, Jeni Tennison | Thread | Re: [xsl] Conditional Assigining, Sri ni |
Re: [xsl] nested templates?, David Carlisle | Date | Re: [xsl] How to copy the whole tre, Jeni Tennison |
Month |