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
zon goSubject: xsl and script
Author: zon go
Date: 16 Jan 2006 06:53 AM
what's wrong here? i tried to embed a javascript into my xsl file. therefore i adapted the the w3 example (http://www.w3.org/TR/xslt11/#ecmascript-binding). but it does not work. the xsl:script node is an unexpected child. i can't see my error... thanx for your help!

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

<xsl:script language="ecmascript" implements-prefix="util">
<![CDATA[
function calc_x(elems,i) {
var calc_x = Math.cos(((360/elems*i)*(elems*1.5*Math.PI))/360*2*Math.PI);
return calc_x
}
function calc_y(elems,i) {
var calc_y = Math.sin(((360/elems*i)*(elems*1.5*Math.PI))/360*2*Math.PI);
return calc_y
}
]]>
</xsl:script>

<xsl:template match="catalog">

<xsl:variable name="x" select="util:calc_x(4,5)"/>
<xsl:variable name="y" select="util:calc_y(4,5)"/>

<X3D profile="Immersive" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.0.xsd" version="3.0">
<Scene>
<Transform translation="1 0 0">
<Shape>
<Text string='{$x}'/>
</Shape>
</Transform>
<Transform translation="2 0 0">
<Shape>
<Text string='{$y}'/>
</Shape>
</Transform>
</Scene>
</X3D>
</xsl:template>
</xsl:stylesheet>

Postnext
Tony LavinioSubject: xsl and script
Author: Tony Lavinio
Date: 16 Jan 2006 02:04 PM
If you look at the start of the spec you described, you will notice two things. First, it is for XSLT 1.1, no current processor implements XSLT 1.1, because of the second point at http://www.w3.org/TR/xslt11/#status which tells you that XSLT 1.1 has been discontinued.

Unfortunately, there is no cross-platform way to call Java, JavaScript, ECMAScript, VBScript, or anything else. But if you tell us what your processor engine is (e.g. Saxon, Xalan, System.Net, etc.) we can help better.

Postnext
zon goSubject: xsl and script
Author: zon go
Date: 17 Jan 2006 06:55 AM
ok, that's the prob. i would like to use saxon8 for my project. are the EXSLT modules what i should use, then? i don't get how to implement them, because i don't need just a math:cos() function, but my own calc_x() function. how do i manage this?

Postnext
Tony LavinioSubject: xsl and script
Author: Tony Lavinio
Date: 17 Jan 2006 10:09 AM
See http://www.saxonica.com/documentation/extensibility/functions.html

Postnext
zon goSubject: xsl and script
Author: zon go
Date: 17 Jan 2006 03:12 PM
sorry, i still don't get it... how do i address my function in the namespace? and where to put the java class-file?

this is my xsl:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="org.test.position.Position" extension-element-prefixes="java">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/>

<xsl:template match="catalog">

<xsl:variable name="x" select="java:calc_x(4,5)"/>

<X3D profile="Immersive" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.0.xsd" version="3.0">
<Scene>
<Transform translation="1 0 0">
<Shape>
<Text string="{$x}"/>
</Shape>
</Transform>
</Scene>
</X3D>
</xsl:template>
</xsl:stylesheet>

and that's my java file named Position.class:

package org.test.position;

public class Position{
public Double calc_x(int elems, int i){
Double calc_x = Math.cos((360/elems*i)*(elems*1.5*Math.PI)/360*2*Math.PI);
return calc_x;
}

}

this file is in the folder /org/test/position, relativ to the xslt and xml file. when i process the xsl with saxon i get the error:

Cannot find a matching 2-argument function named {org.test.position.Position}calc_x()

Postnext
Tony LavinioSubject: xsl and script
Author: Tony Lavinio
Date: 17 Jan 2006 03:20 PM
Did you look at the samples on the www.saxonica.com website?
Also, with Saxon there are samples that are similar to what
you are doing.

For Saxon-specific questions, the author maintains a mailing
list at saxon-help@lists.sourceforge.net which should help
you further.

Posttop
Tony LavinioSubject: xsl and script
Author: Tony Lavinio
Date: 17 Jan 2006 03:25 PM
You're using Saxon 8, right? Because your XSLT shows 1.0, but
Saxon 8 is a 2.0 processor.

Also, Saxon has many EXSLT functions already built in, so you
probably don't have to call your own cosine function. See
http://www.saxonica.com/documentation/extensions/exslt.html

 
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.