xsl-list
[Top] [All Lists]

RE: Following-sibling node test

2005-02-20 15:28:59
Most people use (position() = last()) to test for the last item in a list.

The reason your test isn't working is that the last section with a non-empty
HTML element *does* have a following sibling, it just happens to be a
following-sibling that you're not including in your list.

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: Maria Amuchastegui [mailto:mamuchastegui(_at_)to(_dot_)epost(_dot_)ca] 
Sent: 20 February 2005 20:43
To: 'xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com'
Subject: [xsl] Following-sibling node test

I am trying to output a list of all 'ref' attributes for which the
corresponding 'HTML' element is empty. For example, given the 
following xml
data, I would want to  output ['2','3','4','5']. The final 
element in the
list should *not* be followed by a comma. I am tying to use the
following-sibling node test but it's not working. How can I 
test for these
two conditions (HTML element is not empty, and is last item in list)? 

     <Content>
          <Section ref="1">
               <Name/>
               <HTML/>
          </Section>
          <Section ref="2">
               <Name>Summary</Name>
               <HTML>This is the Summary section.</HTML>
          </Section>
          <Section ref="3">
               <Name>Details</Name>
               <HTML>This is the Details section.</HTML>
          </Section>
          <Section ref="4">
               <Name>Contacts</Name>
               <HTML>This is the Contacts section.</HTML>
          </Section>
          <Section ref="5">
               <Name>Terms</Name>
               <HTML>This is the Terms section.</HTML>
          </Section>
          <Section ref="6">
               <Name/>
               <HTML/>
          </Section>
     </Content>

     <xsl:template name="SectionNumbers">
          <xsl:for-each select="/Content/Section[HTML != '']">
               <xsl:text>'</xsl:text>
               <xsl:value-of select="@ref"/>
               <xsl:choose>
<xsl:when test="(following-sibling::*) and (HTML != '')">
                         <xsl:text>',</xsl:text>
                    </xsl:when>
                    <xsl:otherwise>
                         <xsl:text>'</xsl:text>
                    </xsl:otherwise>
               </xsl:choose>
          </xsl:for-each>
     </xsl:template>

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>