[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Unable to use the functions


Subject: Re: [xsl] Unable to use the functions
From: James Fuller <jim.fuller@xxxxxxxxxxxxxx>
Date: Tue, 05 Jul 2005 12:09:00 +0200

Lakshmi narayana wrote:

>Hi,
>I am trying to execute one function in XSLT. But I am getting the
>exceptions. Below are the code in XSL file and exceptions.
>Please suggest me the changes i had to make in XSLT to execute the reverse
>function properly.
>
>XSL Code.
>
><xsl:transform
>  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>  xmlns:str="http://user.com/namespace"
>  version="1.0"
>  exclude-result-prefixes="str">
>
><xsl:function name="str:reverse">
>  <xsl:param name="sentence"/>
>  <xsl:result
>     select="if (contains($sentence, ' '))
>             then concat(str:reverse(substring-after($sentence, ' ')),
>                         ' ',
>                         substring-before($sentence, ' '))
>             else $sentence"/>
></xsl:function>
>
><xsl:template match="/">
><output>
>  <xsl:value-of select="str:reverse('DOG BITES MAN')"/>
></output>
></xsl:template>
>
></xsl:transform>
>
>
>Exceptions :
>
>
>javax.xml.transform.TransformerConfigurationException:
>javax.xml.transform.TransformerConfigurationException:
>javax.xml.transform.TransformerException:
>javax.xml.transform.TransformerException: xsl:function is not allowed in
>this position in the stylesheet!
>	at
>org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(Transformer
>FactoryImpl.java:805)
>	at MyTest.test(MyTest.java:31)
>	at MyTest.main(MyTest.java:49)
>Caused by: javax.xml.transform.TransformerConfigurationException:
>javax.xml.transform.TransformerException:
>javax.xml.transform.TransformerException: xsl:function is not allowed in
>this position in the stylesheet!
>	at
>org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFa
>ctoryImpl.java:984)
>	at
>org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(Transformer
>FactoryImpl.java:788)
>	... 2 more
>Caused by: javax.xml.transform.TransformerException:
>javax.xml.transform.TransformerException: xsl:function is not allowed in
>this position in the stylesheet!
>	at
>org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFa
>ctoryImpl.java:980)
>	... 3 more
>Caused by: javax.xml.transform.TransformerException: xsl:function is not
>allowed in this position in the stylesheet!
>	at
>org.apache.xalan.processor.StylesheetHandler.error(StylesheetHandler.java:96
>6)
>	at
>org.apache.xalan.processor.StylesheetHandler.getProcessorFor(StylesheetHandl
>er.java:428)
>	at
>org.apache.xalan.processor.StylesheetHandler.startElement(StylesheetHandler.
>java:662)
>	at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1672)
>	at org.apache.crimson.parser.Parser2.content(Parser2.java:1963)
>	at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1691)
>	at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:667)
>	at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
>	at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
>	at
>org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFa
>ctoryImpl.java:972)
>	... 3 more
>
>  
>

u are trying to execute an EXSLT function

http://xml.apache.org/xalan-j/extensions_xsltc.html#exslt_ext


the namespace should be

    xmlns:str="http://exslt.org/strings"

otherwise you could use the pure XSLT 1.0 template for this at www.exslt.org

gl, jim fuller

>Thanks,
>Laxmi Narayana Babu.
>OSI Technologies.


Current Thread
Keywords