xsl-list
[Top] [All Lists]

Re: conditional count

2004-10-19 11:31:35
Please try this XSL -

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="text"/>
        
<xsl:template match="/root">
  <xsl:variable name="x">
    <xsl:for-each select="row">
       <xsl:variable name="y">
        <xsl:for-each select="column">
          <xsl:if test="normalize-space(.) != ''">
            1
          </xsl:if>
        </xsl:for-each>
       </xsl:variable>
       <xsl:if
test="(string-length(normalize-space($y)) -
string-length(translate(normalize-space($y), '1',
''))) = count(column)">
          2
       </xsl:if>
     </xsl:for-each>
  </xsl:variable>
  <xsl:value-of
select="string-length(normalize-space($x)) -
string-length(translate(normalize-space($x), '2',
''))"/>
</xsl:template>
        
</xsl:stylesheet>

Regards,
Mukul

--- Daniel Heskia <daniel(_at_)heskia(_dot_)dk> wrote:

Hi.
I have some unhandy xml that I would like to process
in plain xsl by
counting elements conditionally (if the entire data
set in the elemt is
full).
In the example below I want to count only the number
of element "row" where
all underlying columns have data. i.e. the number in
the example should be
1.

I can filter out the empty "row"'s by challenging
the contents of the entire
element by:
<xsl:value-of
select="count(/root/row[normalize-space()])"/>

But how do I exclude an element "row" if just a
single "column" in the
element is empty?

<root>
<row>
  <column>Peter</column> 
  <column>Johnson</column> 
  <column>High Street 10</column> 
  <column>Male</column> 
  <column>15-10-2004</column> 
  <column>13.11</column> 
  </row>
<row>
  <column></column> 
  <column></column> 
  <column></column> 
  <column></column> 
  <column></column> 
  <column></column> 
  </row>
<row>
  <column>Sue</column> 
  <column>Bond</column> 
  <column>Dollar Avenue</column> 
  <column>Female</column> 
  <column>01-05-2003</column> 
  <column></column> 
</row>
</root>



                
__________________________________
Do you Yahoo!?
Yahoo! Mail Address AutoComplete - You start. We finish.
http://promotions.yahoo.com/new_mail 


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