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: Poorly Formed HTML inside XSL Stylesheet


Basically, the way you've outlined this doesn't fit the XSLT processing
model at all. You've got one template that produces lots of start tags, and
another that produces the corresponding end tags. This goes completely
against the theoretical model, which is that XSLT is producing a tree, not a
serial output file. Writing one node to the result tree is an atomic
operation, you can't split it into two halves.

So you need to do some radical restructuring. If it's as simple as your
example, this isn't too difficult, you just need to rewrite it as:

<xsl:template match="note">
<xsl:call-template name="contentWrapper"/>
</xsl:template>

<xsl:template name="contentWrapper">
<table>
<tr><td><img src="j.jpg"></td>
<td align=left>
<xsl:copy-of select="."/>
</td></tr></table>
</xsl:template>

In a more complex situation, you might have to pass a parameter to the
template. But usually xsl:apply-templates does the job automatically for
you.

Mike Kay


> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Kevin
> Holbrook
> Sent: 26 November 2001 21:24
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] Poorly Formed HTML inside XSL Stylesheet
>
>
> Hello All,
>
> I am in the process of writing stylesheets to transform structured XML
> documents into an existing HTML structure.
>
> The problem I face is that I have to include massive amounts
> of dirty HTML
> around my XML data, and my manager wants the HTML to be
> placed in separate
> templates which provide a degree of separation between the
> markup and the
> data, WITHOUT using ![CDATA.
>
> So, I have the following setup.
>
> Source XML:
> <note>stuff</note>
>
> My XSL:
> <xsl:template name="preContentHeader">
> 	<xsl:text><![CDATA[
> <table>
> <tr><td><img src="j.jpg"></td>
> <td align=left>
> 	]]></xsl:text>
> </xsl:template>
>
> <xsl:template name="postContentFooter">
> 	<xsl:text><![CDATA[
> </td></tr></table>
> 	]]></xsl:text>
> </xsl:template>
>
> <xsl:template match="note">
> <xsl:call-template name="preContentHeader"/>
> <xsl:copy-of select="."/>
> <xsl:call-template name="postContentFooter"/>
> </xsl:template>
>
>
> Resulting HTML:
> <table>
> <tr>
> <td><img src="j.jpg"></td>
> <td align=left>stuff</td>
> </tr></table>
>
> Any ideas of how I can do this without using ![CDATA?
>
> Thanks in advance,
>
> -Kevin
>
> _________________________________________________________________
> Get your FREE download of MSN Explorer at
http://explorer.msn.com/intl.asp


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


 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]