RE: [xsl] How to Substitute HTML template with values?

Subject: RE: [xsl] How to Substitute HTML template with values?
From: Amir Yiron <amir@xxxxxxxxxxxxxxxxxx>
Date: Thu, 4 Dec 2003 14:19:14 +0200
Thanks David, it really works!
 
Now consider the following example with table:

XML Doc:
========
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="D:\Test\XML\subst.xhtml"?>
<mapping>
  <NAME>My Name</NAME>
  <ADDR>My Address</ADDR>
  <MYTABLE>
  	<ROW><C1>first</C1><C2>last</C2></ROW>
  	<ROW><C1>dram</C1><C2>piano</C2></ROW>
  </MYTABLE>
</mapping>

XHTML - XSLT Doc:
=================
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xsl:version="1.0">
<head><title>My Template</title></head>
<body>
  <br />Name <input type="text" value="{/mapping/NAME}" size="15"/>
  <br />Address <input type="text" value="{/mapping/ADDR}" size="15"/>
		<table>
			<thead>
				<tr>
					<th>One</th>
					<th>Two</th>
				</tr>
			</thead>
			<tbody>
				<xsl:for-each select="/mapping/MYTABLE/ROW">
				<tr>
					<td><xsl:value-of select="C1"
/></td>
					<td><xsl:value-of select="C2"
/></td>
				</tr>
				</xsl:for-each>
			</tbody>
		</table>
</body>
</html>

The only problem is that while viewing the xhtml doc,
I cannot see the single (template) row, because it's hidden
in unknown tag for xhtml (xsl:value-of). I wish to see it as I see
the {/mapping/NAME} and {/mapping/ADDR}.
Again, my point is that I want to be able to build and design the
page as a regular html (xhtml) doc, using standard tools.
Without seeing table's rows, I cannot design the table that way.

-- Amir

-----Original Message-----
From: David Carlisle [mailto:davidc@xxxxxxxxx]
Sent: Thursday, December 04, 2003 1:01 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] How to Substitute HTML template with values?




  XML Doc:
  <mapping>
    <@@@NAME@@@>My Name</@@@NAME@@@>
    <@@@ADDR@@@>My Address</@@@NAME@@@>
  </mapping>


That's not XML, XML element names can not have @

If you changed your names to well formed XML you could program this in
xslt, or if you are prepared to change your syntax just a bit you could
use the "literal result element as stylesheet" syntax

xmldoc:

<mapping>
  <NAME>My Name</NAME>
  <ADDR>My Address</NAME>
</mapping>

stylesheet == XHTML template

<html xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xsl:version="1.0">
<head><title>My Template</title></head>
<body>
  <br />Name <input type="text" value="{/mapping/NAME}" size="15"/>
  <br />Address <input type="text" value="{/mapping/ADDR}" size="15"/>
</body>
</html>


that is all you need have is an xsl:version attribute in your html
element then you can use AVT templates to pull things into attributes (or
any xsl instruction such as xsl:value-of to pull things into elements)


David

-- 
http://www.dcarlisle.demon.co.uk/matthew

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

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

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


Current Thread