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 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Nigel CarlsonSubject: Calling External functions
Author: Nigel Carlson
Date: 25 Aug 2005 08:47 AM
Hi,

I have written a bunch of XSLs which run quite happily under Xalan-j and am trying to upgrade them to run under Saxon 8.1.1 so I can use XSLT2 commands to give us more functionally.

The XSLs call some external functions which were written for us in java by a.n.other and they work quite happily with Xalan-j, however when I try the built-in Saxon 8.1.1 processor I am getting errors.

I have managed to get past some basic syntax errors but now am stuck with - "ABS-Test.xsl (17, 1): java.lang.RuntimeException: net.sf.saxon.xpath.StaticError: XPath syntax error at char 36 on line 17 in {..._util:removeNonNumeric(col[...}:; Cannot find a matching 1-argument function named {java:com.jpm.tio.util}removeNonNumeric()"

====================================================================

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date_convert="java:com.jpm.tio.util.TioDateTimeConversion"
xmlns:string_util="java:com.jpm.tio.util.TioGeneralUtil"
exclude-result-prefixes="date_convert string_util" version="2.0">

<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" encoding="ISO-8859-1"/>


<xsl:template match="*">
<xsl:for-each select="row">
<xsl:element name="Numeric-from-row{position()}">
<!-- <xsl:call-template name="RemoveNonNumeric">
<xsl:with-param name="String" select="col[1]"/>
<xsl:with-param name="Pos" select="1"/>
</xsl:call-template> -->
<xsl:value-of select="string_util:removeNonNumeric(col[1])"/>
</xsl:element>
<xsl:element name="Actual-of-row{position()}">
<xsl:value-of select="col[1]"/>
</xsl:element>
</xsl:for-each>
</xsl:template>


</xsl:stylesheet>

====================================================================

As you can see I am experimenting with a very very simple stylesheet just so I can understand the syntax required.

The java class files are on my C drive at "C:\JavaClasses\com\jpm\tio\util" and I have declared C:\JavaClasses in the JVM ClassPath options.

As I am not a trained programmer and am self taught on XSLs any thoughts or offers of help would be gratefully received.

Nigel

Postnext
Ivan PedruzziSubject: Calling External functions
Author: Ivan Pedruzzi
Date: 26 Aug 2005 10:57 AM
Hi Nigel,

Change your code as following

<xsl:value-of select="string_util:removeNonNumeric(string_util:new(), col[1])"/>

Each XSLT processor implements the extension mechanism in its own way.
Saxon requires to esplicity create the java object.

May i ask you what removeNonNumeric does?
I may be able to suggest a solution that doesn't require Java so
would work with different processors.

Hope this helps
Ivan Pedruzzi
Stylus Studio Team



Postnext
Nigel CarlsonSubject: Calling External functions
Author: Nigel Carlson
Date: 26 Aug 2005 11:08 AM
Hi Ivan,

thanks for the reply, I will try that next week.

The removeNonNumeric function was written to allow only numeric values (0,1,2,3,4,5,6,7,8,9) or a decimal point to be passed. This is because (A) Our system requires clean numeric fields, (B) the incoming files are CSV format and (C) clients will insist on formatting them so we are handling numeric fields that could and do contain any of the following, -,£,$,(,) or a comma.

There are some other functions that are included in the class file, I was just trying to make things work with XSLT2.

Regards
Nigel

Postnext
Ivan PedruzziSubject: Calling External functions
Author: Ivan Pedruzzi
Date: 26 Aug 2005 11:52 AM

If you need to let through only numbers and . do the following

<xsl:value-of select="translate(col[1], translate(col[1], '1234567890.', ''), '' ))"/>


Ivan Pedruzzi
Stylus Studio Team

Posttop
Nigel CarlsonSubject: Calling External functions
Author: Nigel Carlson
Date: 26 Aug 2005 12:13 PM
Smooth, Ivan, smooth :)

Took me a few moments to get me head round how it works.

Thanks
Nigel

 
Topic Page 1 2 3 4 5 6 7 8 9 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.