Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: Conditional call-template -broken in 2.6

From: yf110@----.--------.--.-- (------- ---------)
To: NULL
Date: 4/4/2005 4:04:00 PM
terry.jeske@g... wrote:
: Hello,

: In xalan 2.41 we were able to conditionally call a template. This
: appears broken in 2.6. I did glance at the call-template specfications
: but did not see anything that would point to this being a feature or a
: change to follow a standard.  The problem is that if the called
: template is not included in xslt pass, I get:

: javax.xml.transform.TransformerException: ElemTemplateElement error:
: "your missing template name here".

: We are upgrading our app to java 1.5, and have made extensive use of
: this type of call which allow us to have leverage common code for
: presentation and admin pages.  Below is a simplified code snipet. If it
: runs for you, make sure you check your xalan version by running java
: org.apache.xalan.Version.

: Any insight into why this is happening would be most appreciated.

: <?xml version="1.0" encoding="ISO-8859-1"?>
: <xsl:stylesheet version="1.0"
:                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
:                 xmlns="http://www.w3.org/1999/xhtml">

: 	<xsl:output method="xml"
: 				media-type="text/html"
: 				doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
: 				doctype-system="DTD/xhtml1-strict.dtd"
: 				encoding="ISO-8859-1" />

: 	<xsl:variable name="testCall" select="'false'"/>
: 	<xsl:template match="/">
: 	  <html>
: 		<head>
: 		  <title>Conditional call-template test</title>
: 		</head>

: 		<body>
: 		  <xsl:if test="$testCall = 'true'">
: 			<xsl:call-template name="foobar"/>
: 		  </xsl:if>
: 			No errors. Go home and relax
: 		</body>
: 	  </html>
: 	</xsl:template>

: 	<!-- uncomment this and it will work -->
: 	<!--xsl:template name="foobar">
: 		<b>hi</b>
: 	</xsl:template-->
: 	
: </xsl:stylesheet>

it appears that in the earlier version of xalan, calling an undefined
template would be a runtime error.  In other words the template name is
not looked up until you try use the template.  (and since you don't ever
try to actually use the temlate then you don't get the runtime error).

it appears that in the new version, referencing an undefined template is a
compile time error.  In other words the template name is looked up while
the template is being prepared for use (i.e. compile time.)  For most
people this would be considered an advantage.  Typos in template names
will be detected ahead of time, thereby avoiding hard to track down
run-time errors.

I assume that you could simply define do-nothing versions of the templates
for the style sheets that don't really use them.

you might "include" or "import" the defintions, and then play with
relative paths so as to suck in the alternate versions depending on who is
using the style sheet.

$0.02

--

This space not for rent.


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent