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]
Other format: [Raw text]

Re: testing for child node and counting


Alex,

At 04:52 PM 2/6/02, you wrote:
><Orders>
>     <Row att="...">
>         <field_a>...</field_a>
>         <field_b>...</field_b>
>     </Row>
>     <Row att="...">
>         <field_a>...</field_a>
>         <field_b>...</field_b>
>         <field_c>...</field_c>
>     </Row>
>     ...
></Orders>
>
>
>1. I want to go through each <row> and create
>    an html table row only if <row> contains a
>    <field_c> child. I've tried this but it
>    didn't work:
>
><xsl:for-each select="Orders/Row">
>   <xsl:if text="Orders/Row/field_c">
>
>      <tr>
>        <td><xsl:value-of select="field_c"/></td>
>      </tr>
>
>   </xsl:if>
></xsl:for-each>

The test expression (not "text") is being evaluated, like any XPath 
expression, relative to a context node, which in this case will be the Row 
element that the template happens to be matching. You need <xsl:if 
test="field_c"> which is short for <xsl:if test="child::field_c">: this 
tests true if the context node has any field_c children.

>2. I want to print at the top of the html table
>    the number of <row>s that have a <field_c>
>    child.

If you're creating the table in a template matching Orders, the instruction

<xsl:value-of select="count(Row[field_c])"/>

should do it. This is short for count(child::Row[child::field_c]), which 
counts the Row children (of your Orders context node) that have field_c 
children.

I hope that helps,
Wendell


======================================================================
Wendell Piez                            mailto:wapiez@mulberrytech.com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
   Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


 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]