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

Re: Is it possible to test if a named template exists?

Subject: Re: Is it possible to test if a named template exists?
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 05 Sep 2006 09:04:29 -0400
ken possible
At 2006-09-05 12:55 +0000, Neville Lugton wrote:
Simplified.. I am trying to use
"xsl:call-template" from an included .xsl file
to insert a named template stored in the main .xsl file.

However not all the main files are going to
need/have the named template. So I only want to
use "xsl:call-template" if the target document has the required named
template.

So far I'm working on the theory I need something like the code below:

There are a number of issues in the code that need to be addressed.


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

<xsl:template match="insertHeader">

I'm guessing you want name="insertHeader" above.


   <!-- this template is included in ALL files -->
   <xsl:if test="element-available(pageScripts)">

The element-available() function is only used to test the presence of an instruction (built-in or extension, and without a namespace (as you have it) it would have to be built-in, and <pageScripts> is not an instruction in XSLT). If all you want to do is check if the document element is <pageScripts> then you need to do:

<xsl:if test="pageScripts">

If it isn't the document element then you will
need to address where the element is in order to test its presence.

       <xsl:call-template name="insertScripts"/>
   </xsl:if>
</xsl:template>

<xsl:template name="insertScripts">
   <!-- NOT all files have this template -->
  do things!!
</xsl:template>

Can anyone help me with what test I need for
"<xsl:if test="??????">" or suggest another way to go about it all.

You need to fragment your stylesheet and use <xsl:import> and the import hierarchy (which is different than the include hierarchy).

If all of your stylesheets imported a very short
stylesheet with your default behaviour for the
template named "insertScripts", then those
stylesheets that included such a template would
override your default template, while those
stylesheets that don't include such a template
would engage your default template.

Then, no test is needed ... you just always
engage the template by name and if you want
nothing to happen by default than your default template is empty.

I hope this helps.

. . . . . . . . . . . . Ken

--
UBL/XML/XSLT/XSL-FO training: Verx, Denmark 2006-10-02/06,11-20/24
UBL International 2006  2006-11-13/17 http://www.ublconference.com
World-wide corporate, govt. & user group UBL, XSL, & XML training.
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Cancer Awareness Aug'05  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

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.