This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Non-well-formed HTML in XSL
- From: Dimitre Novatchev <dnovatchev at yahoo dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Tue, 16 Jul 2002 13:19:48 -0700 (PDT)
- Subject: [xsl] Re: Non-well-formed HTML in XSL
- Reply-to: xsl-list at lists dot mulberrytech dot com
--- Ryan Neil Gillespie <scoobie at UDel dot Edu> wrote:
>
> Thanks a lot for the previous help. Template matching makes more
> sense
> now.
>
> I would like to print HTML that will (eventually) be well-formed.
> However,
> the XSL to display it is not well-formed and thus I get an error.
> What
> I
> need is a way to tell XSL to disregard the non-well-formedness of the
> HTML
> I'm writing.
>
> --------
> some.xsl
> --------
>
> <table>
>
> <tr><td>
> <xsl:attribute name="rowspan">
> <xsl:value-of select="count(meet)"/>
> </xsl:attribute>
>
> <xsl:value-of select="../instructor"/>
> </td>
>
> <xsl:for-each select="meet">
>
> <xsl:if test="ancestor::node()[position() != 1]">
> </tr><tr> # this is the problem
> </xsl:if>
>
> <td>some info</td>
>
> </xsl:for-each>
>
> </tr>
>
> </table>
>
> --------
> What I want the HTML to look like
> --------
> <table>
>
> <tr>
> <td rowspan="2">Johnson</td>
> <td>some info</td>
> </tr>
> <tr>
> <td>some info</td>
> </tr>
>
> <tr>
> <td rowspan="2">Galbraith</td>
> <td>some info</td>
> </tr>
>
> </table>
>
> ---------
> sample XML input
> ---------
>
> <course>
> <title>Early Childhood Development</title>
> <subject>EDUC</subject>
> <number>104</number>
> <section>010</section>
> <instructor>Phillips</instructor>
>
> <meets>
> <meet>
> <format>LEC</format>
> <building>SMI</building>
> <room>205</room>
> <days>MWF</days>
> <starts>1100</starts>
> <ends>1230</ends>
> </meet>
>
>
> _ryan
Hi Ryan,
You should never try to output non-well-formed xml (and this is
possible in 99.9999% of all cases).
In this particular case instead of:
<tr><td>
<xsl:attribute name="rowspan">
<xsl:value-of select="count(meet)"/>
</xsl:attribute>
<xsl:value-of select="../instructor"/>
</td>
<xsl:for-each select="meet">
<xsl:if test="ancestor::node()[position() != 1]">
</tr><tr> # this is the problem
</xsl:if>
<td>some info</td>
</xsl:for-each>
</tr>
use:
<tr>
<td>
<xsl:attribute name="rowspan">
<xsl:value-of select="count(meet)"/>
</xsl:attribute>
<xsl:value-of select="../instructor"/>
</td>
<xsl:apply-templates select="meet"/>
</tr>
In case you could explain what exactly you're trying to do, many people
on this list will be able to show a correct solution.
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
__________________________________________________
Do You Yahoo!?
Yahoo! Autos - Get free new car price quotes
http://autos.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list