XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
David KarrSubject: How to call template in imported xslt from the graphical view
Author: David Karr
Date: 31 Oct 2005 05:35 PM
How do I insert a transform function that calls a template in an imported xslt? I'm trying to use the EXSLT, and this just requires importing a stylesheet and then calling a template. I can see how it's done in raw XSLT, but I don't see how to do this in the graphical view.

The "Call Template" option seems to only be for registered Java classes.

Postnext
David KarrSubject: How to call template in imported xslt from the graphical view
Author: David Karr
Date: 31 Oct 2005 05:50 PM
I misspoke on one point. I realized later that the "call-template" menu refers to templates defined inside the xsl, not Java functions. However, it doesn't provide access to templates defined in imported xslts, which is what I'm trying to do.

Postnext
David KarrSubject: How to call template in imported xslt from the graphical view
Author: David Karr
Date: 31 Oct 2005 06:10 PM
Hmm, well, I guess I failed to properly import the function library. I copied the top-level exslt xsl, but not the functions directory. Once I had all the referenced files, the templates from the imported xslt showed up fine. I wish there was some way to know that the import had not been fully resolved yet.

Postnext
Ivan PedruzziSubject: How to call template in imported xslt from the graphical view
Author: Ivan Pedruzzi
Date: 31 Oct 2005 06:10 PM

It should, I am running 377o and works fine for me.
I just added <xsl:import href="mylib.xsl"/> in the code panel and I can see all named templates in the pop-up menu


Ivan Pedruzzi
Stylus Studio Team

Postnext
David KarrSubject: How to call template in imported xslt from the graphical view
Author: David Karr
Date: 31 Oct 2005 06:55 PM
Ok, now I can see the templates, but I'm having trouble calling them. When I run my transform in the debugger (which still doesn't stop at breakpoints), I get a weird exception:

-------
TransformerException: misplaced literal result in a func:function container.
URL: file:.../exslt/str/functions/tokenize/str.tokenize.function.xsl
Line: 40
Col: 17
-------

Line 40 is the end tag of the "func:function" element defining "str:tokenize".

I have the processor set to xalan-j 2.5.2.

My xslt is just this:
--------------------
<pre>
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0"
xmlns:str="http://exslt.org/str"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
extension-element-prefixes="str">
<xsl:import href="exslt/str/str.xsl"/>
<xsl:template match="/">
<addressData>
<complexAddress>
<xsl:call-template name="extractAddress">
<xsl:with-param name="simpleAddress" select="addressData/simpleAddress"/>
</xsl:call-template>
</complexAddress>
</addressData>
</xsl:template>
<xsl:template name="extractAddress">
<xsl:param name="simpleAddress"/>
<xsl:variable name="tokens" select="str:tokenize($simpleAddress)"/>
<streetAddress>$tokens[0]</streetAddress>
<city>$tokens[1]</city>
<state>$tokens[2]</state>
<zip>$tokens[3]</zip>
</xsl:template>
</xsl:stylesheet>
</pre>
----------------

Posttop
Ivan PedruzziSubject: How to call template in imported xslt from the graphical view
Author: Ivan Pedruzzi
Date: 31 Oct 2005 11:29 PM
>Ok, now I can see the
>templates, but I'm having
>trouble calling them. When I
>run my transform in the
>debugger (which still doesn't
>stop at breakpoints),

Which JVM version are you running (Help -> About)?


> I get a weird exception:
>My xslt is just this:
>--------------------
><pre>

What is this <pre> ?
If the XML PI is present has to be at the beggging of the file


><?xml version='1.0' ?>
><xsl:stylesheet
>version="1.0"
>xmlns:str="http://exslt.org/st
>r"
>xmlns:xsl="http://www.w3.org/1
>999/XSL/Transform"
>extension-element-prefixes="st
>r">
><xsl:import
>href="exslt/str/str.xsl"/>


I would rather use a more portable solution based on the named template

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exslt="http://exslt.org/common"
xmlns:str="http://exslt.org/strings">
<xsl:import href="exslt/str/functions/tokenize/str.tokenize.template.xsl"/>


><xsl:template match="/">
> <addressData>
> <complexAddress>
><xsl:call-template
>name="extractAddress">
><xsl:with-param
>name="simpleAddress"
>select="addressData/simpleAddr
>ess"/>
> </xsl:call-template>
> </complexAddress>
> </addressData>
> </xsl:template>
><xsl:template
>name="extractAddress">
><xsl:param
>name="simpleAddress"/>
><xsl:variable name="tokens"
>select="str:tokenize($simpleAd
>dress)"/>
><streetAddress>$tokens[0
>]</streetAddress>
><city>$tokens[1]</cit

What are you trying to do with the above?
XPath expression are 1 base and the $token doesn't just get evaluate you need to use the appropriate XSLT instruction see the following

<streetAddress>
<xsl:value-of select="exslt:node-set($tokens)/token[1]"/>
</streetAddress>
<city>
<xsl:value-of select="exslt:node-set($tokens)/token[2]"/>
</city>
<state>
<xsl:value-of select="exslt:node-set($tokens)/token[3]"/>
</state>
<zip>
<xsl:value-of select="exslt:node-set($tokens)/token[4]"/>
</zip>

My suggestion is to buy a good XSLT book to build solid fondations.
An excellent book is "XSLT 2.0 Programmer's Reference" written by dr. Michael Kay

http://www.amazon.com/exec/obidos/tg/detail/-/0764569090/qid=1130819160/sr=8-2/ref=pd_bbs_2/002-2662202-9776818?v=glance&s=books&n=507846

Hope this helps
Ivan

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.