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: if to separate child elements


>  I am somehow really stuck trying to separate out different child
> elements using <xsl:if>. Please help with the following situation if
> possible:
> I am trying:
> 
> <xsl:for-each select="help/helptext|help/helpexample">
> <xsl:if test="helptext"/>

Firstly, the xsl:if should be closed with ">" not "/>": an xsl:if with no
content is meaningless, since it does nothing, whether or not the condition
is true.

Secondly, if you want to test whether the element you are processing is a
helptext element, use <xsl:if test="self::helptext">. The way you've written
the test, you are testing whether the current element has a helptext child.

Thirdly, the best way of doing this kind of processing is to use
<xsl:apply-templates> and template rules, rather than xsl:for-each and
xsl:if.

> <xsl:if test="position() mod 2=0">
> the position() mod 2 part works, but I dont have any 
> guarantee that the
> particular element will always be in the even position.

If the elements won't always be in the even position, then I fail to see why
you are testing to see if the element is in an even position, and I don't
understand what you mean by saying it "works". Presumably you mean that it
sometimes gives the right answer... 

Mike Kay 


 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]