xsl-list
[Top] [All Lists]

#Please Help: Nested conditions

2004-02-20 12:13:51
Can anyone please help me? O have the following problem I cannot solve:

I am trying to transform a table structure which is, simplified, like
this:

<TABLE>
  <TITLE>...</TITLE>
  <TROW>
    <TH>
      ...
    </TH>
  </TROW>
  <TROW>
    <CELL>
      ...
    </CELL>
  </TROW>
  ...
</TABLE>

The availability and number of <TROW> elements with a nested <TH> or,
respectively, with a nested <TB> varies.

The objective is to drop the <TH>'s and <TB>'s, and to wrap all <TROW>'s
that before contained a <TH> into a single <THEAD> element, and
similarly to wrap all <TROW>'s that before contained a <TB> into a
single <TBODY> element.

The XSL approach I have worked out so far is this:

        <xsl:template match="TABLE">
                <TABLE>
                <TTITLE>
                        <xsl:value-of select="Table-TITLE"/>
                </TTITLE>
                <xsl:text disable-output-escaping="yes">
                        &#60;TGROUP&#62;</xsl:text>
                        <xsl:apply-templates/>
                <xsl:text disable-output-escaping="yes">
                        &#60;&#47;TGROUP&#62;</xsl:text>
                </TABLE>
        </xsl:template>

        <xsl:template match="ROW">
                        <xsl:choose>
                                <xsl:when test="element-available('TH')">
                                        <THEAD>
                                                <xsl:apply-templates/>
                                        </THEAD>
                                </xsl:when>
                                <xsl:when test="element-available('CELL')">
                                        <TBODY>
                                                <xsl:apply-templates/>
                                        </TBODY>
                                </xsl:when>
                                <xsl:when test="element-available('TH')">
                                        <TFOOT>
                                                <xsl:apply-templates/>
                                        </TFOOT>
                                </xsl:when>
                        </xsl:choose>
        </xsl:template>

        <xsl:template match="TH | CELL | TF">
                <TROW>
                        <TDATA>
                                <xsl:apply-templates/>
                        </TDATA>
                </TROW>
        </xsl:template>
However, this approach does not work. What am I doing wrong?

Matthias Fischer


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



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