[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: closing a template inside a table, forbidden?

Subject: RE: closing a template inside a table, forbidden?
From: cknell@xxxxxxxxxx
Date: Sat, 04 Jan 2003 10:13:19 -0500
forbidden topic template
Yes, it is illegal because you are attempting to do exactly what the error message is complaining about. You are trying to output ill-formed XML. the problem is not closing a template inside a table, but lies in closing a template inside a table which has been opened outside the table, here is a short illustration:

<xsl:template>
  <table>
</xsl:template>
  </table>

As you see, the closing tag </xsl:template> does not match the opening tag <table>, and that's what the Saxon parser is complaining about. You will have to re-think your design so that the opening and closing tags match. In other words, you must output well-formed XML.

This topic has been recently been discussed at length in the thread concering the advisability of using disable-output-escaping (d-o-e) which you probably have seen. The anti-d-o-e faction (I must count myself among them) generally attributes this kind of error to a programmer's clinging to procedural programming pratices (trying to emit XML tags instead of nodes) rather than embracing the functional or declarative model upon which XSLT is based. Consider SQL vs. Java. In the former you tell the database what you want and let the database engine figure out exactly how to get it. With the latter, you concern yourself with loops and branching and output, and etc.

XSLT is more along the lines of SQL, than those of Java. I think this is one of those ideas where one day, a lightbulb suddenly goes on in your head and you say, "Ohhh, now I get it!" It can be rough sledding until that happens.
-- 
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     "Hubert Holtz" <Turnhose_alt@xxxxxxx>
Sent:     Sat, 04 Jan 2003 14:53:26 +0100
To:       XSL-List@xxxxxxxxxxxxxxxxxxxxxx
Subject:   closing a template inside a table, forbidden?

Hy,

is this forbidden ?

-----CODE-----

<xsl:template match="article">
<table>
..
 
</table>	
	<!-- ************SECT1 PROCESSING CONTENT ************** -->
		
		<table width="610" height="48" cellpadding="0" cellspacing="0" border="0" id="sectBackground">
		
		<xsl:apply-templates select="./title[@lang= $lang]"/>
		<xsl:apply-templates select="sect1[@lang = $lang or not(@lang)]"/>

  </xsl:template>
		
		<xsl:template match="article/sect1[@lang= $lang or not(@lang)]">
		 
		 		  
		 		  <xsl:apply-templates/>

		</table>

----CODE----

I get the following error:

The element type "table" must be terminated by the matching end-tag "".

description org.apache.cocoon.ProcessingException: Exception in creating Transform Handler: org.xml.sax.SAXParseException: The element type "table" must be terminated by the matching end-tag "".

And if it is forbidden, why?

Thanks.
Steve


 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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.