Subject: RE: [xsl] <xsl:for-each> not working... From: "John Liebermann" <ahsan_hussain@xxxxxxxxxxxxx> Date: Fri, 15 Aug 2003 14:19:05 -0700 |
Sir, your recommended piece of code doesn't do much different from what my code was doing. I want the heading "Output Descriptions" to be displayed only once before the fields under the output parent are displayed. Here is a snippet of the input XML: <HSDataContainerType list="true" name="Outputs" required="true" revision="" systype="true"> <HSDataContainerType name="NoValueRestrictions" required="true" revision=""> <HSString name="required" required="true" xmlNodeType="1" /> <HSString name="optional_NoDefault" xmlNodeType="1"> <DefaultValue /> </HSString> <HSString name="optional_withDefault" xmlNodeType="1"> <DefaultValue>This is the default value</DefaultValue> </HSString> </HSDataContainerType> <HSDataContainerType name="TextValueRestrictions" required="true" revision=""> <HSString name="restrictByValue" required="true" restrictType="1" xmlNodeType="1"> <restrictedValue>CA</restrictedValue> <restrictedValue>WA</restrictedValue> <restrictedValue>VA</restrictedValue> </HSString> <HSString name="restrictByRange" required="true" restrictType="2" xmlNodeType="1"> <restrictedValue>0</restrictedValue> <restrictedValue>100</restrictedValue> </HSString> .... I think if i put the text "Output Descriptions" before the for-each loop, i would be able to separate the Heading from the icons and the field heading. So if i write my XSL like this: <b>Output Description: </b><br /><br /> <img src="texticon.gif"><a name="{generate-id(.)}"> <b><xsl:comment>Accessing the parent nodes...</xsl:comment> <xsl:for-each select="ancestor::*"> <xsl:choose> <xsl:when test="contains(@name, 'Inputs')"></xsl:when> <xsl:when test="contains(@name, 'Outputs') and not(ancestor::*[contains(@name,'Outputs')])"> <!-- <xsl:when test="contains(@name, 'Outputs')"> --> <a name="out"></a> </xsl:when> <xsl:when test="contains(@name, 'Settings')"></xsl:when> <xsl:otherwise> <xsl:if test="not(position()='1')"> <xsl:value-of select="@name" />/ </xsl:if> </xsl:otherwise> </xsl:choose> </xsl:for-each> But this doesn't solve the problem either since it puts "Output Descriptions" above every field with the ancestor 'Output'. The reason for this is that i am using certain templates which are called over and over again. Is there a way to put it inside and display it only without the icon. Thanks. John -----Original Message----- From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of David Carlisle Sent: Tuesday, July 15, 2003 1:27 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] <xsl:for-each> not working... it would have been easier if you'd shown the input but guessing.. change <xsl:when test="contains(@name, 'Outputs')"> to <xsl:when test="contains(@name, 'Outputs') and not(ancestor::*[contains(@name,'Outputs')])"> so you only get the first such name (this will search the ancestor list in quadratic time, but assuming your tree is only a few deep not thousands that doesn't really matter) I assume this is left over debuging <xsl:if test="contains(@name, 'Outputs')"></xsl:if> as it's always true (as it's inside an xsl:when with the same test) and doesn't do anything. David XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] <xsl:for-each> not workin, David Carlisle | Thread | RE: [xsl] <xsl:for-each> not workin, David Carlisle |
[xsl] <xsl:for-each> not working..., John Liebermann | Date | RE: [xsl] <xsl:for-each> not workin, John Liebermann |
Month |