xsl-list
[Top] [All Lists]

RE: how to test for the element type of the current node

2003-07-02 02:54:33
The logic

<for-each select="X">
  <choose>
     <when name="A">
     <when name="B">

is needed so often that XSLT provides a special construct for it: it's
called xsl:apply-templates. Use it!

Michael Kay


-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Godmar Back
Sent: 02 July 2003 08:51
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] how to test for the element type of the current node



Hi,

what expression do I use if I need to test the type of the 
current node in a for-each loop?

Say I have a DTD that has     

      <!ELEMENT A (B|C)*>

and I want to write

<xsl:template match="A">
    <xsl:for-each select="*">
      <xsl:choose>
          <xsl:when test="if this node is a B"> <--- this is 
what I can't figure out
              apply-templates for B

              ...
          <xsl:otherwise>
              do something else for C
    ...


I tried ".=B" inside the test, which doesn't work, I tried just "B", 
I tried "boolean(B)", nothing works.

Note that I believe that using <xsl:template match="B"> won't 
solve my problem because I need to do something specific that 
I only need to if the 
B element is nested inside  the A element.

This seems such an elementary thing to do (!?), but maybe I 
still don't understand XSL well enough to see an alternative.

Thanks!

      - Godmar


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list