xsl-list
[Top] [All Lists]

RE: Default Rendering of HTML?

2004-11-22 09:55:09
From: Shawn [mailto:sgrover(_at_)open2space(_dot_)com]
while researching how to
handle
HTML tags in XML, I came across a reference that used xsl:copy-of,
instead
of
value-of.  It occurred to me that what I was trying to do was place
the
entire node into my output, so copy-of was what I should be using.
So, I
changed the <xsl:value-of select="text"/> line of my XSL to read
<xsl:copy-of
select="text"/> - and suddenly my HTML began to work.

I had two nodes that were to get rendered, but the first (which didn't
contain
HTML tags) didn't.  I resolved this by removing the <xsl:output> tag I
had
tried earlier.

So, I have a working solution.  But, I'm not sure if this is going to
be
suitable in all cases with HTML tags embedded in XML, or if there is a
better
way of doing this.  Any suggestions are appreciated.

It seems as if you are not really clear on what you are trying to
accomplish, and that's perhaps why you have been having some trouble.
Apparently, you want to create an html file as the result of your
transformation.  You don't really have to worry about "rendering", just
about producing the html that you intend.

So the first thing is to insert an html element, along with suitable
head and body elements.  Sure, it is legal to omit the html, head, and
even body elements in html, but never mind that, put them in anyway.
Then you will be able to see if you are creating the right structure.
Also, if you include an html element, the processor will realize that
you want output method='html', even if you do not specifically say so.

Then, things get fairly simple.  If your source document has chunks of
working html, insert them into the output using copy-of, as you
discovered.  Where your source document has content that does not fit
that mold, you have to build it up bit by bit with templates.

So a kind of prototypical stylesheet to produce html output could go
like this (omitting some obvious boilerplate) -

<xsl:output method='html'/>
<xsl:template match='/'>
<html>
   <head><title>xxxx</title>
      <xsl:call-template name='style'/>
      <xsl:call-template name='script'/> <!-- if you will have any
javascript --/>
   </head>

   <body>

   </body>
</html>
</xsl:template>

<xsl:template name='style'>
<style type='text/css'>
   /* Put any embedded css style rules here */
</style>
</xsl:template>

Cheers,

Tom P

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



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