|
Subject: Re: [xsl] Using saxon-js to run a javasscript function from XSLT at the command line From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 20 May 2025 06:55:10 -0000 |
> Error XPST0017:
> Static error in XPath on line 20 in _betterXML/test-js.xsl
{saxon:call('greet', $name)}: Unknown function Q{http://saxon.sf.net/}call()
> Failed to compile stylesheet
Use the ixsl:call() function documented at
https://www.saxonica.com/saxonjs/documentation3/index.html#!ixsl-extension/fu
nctions/call
You can also use ixsl:window() to get access to the global Javascript object.
A better starting point might be
https://www.saxonica.com/saxonjs/documentation3/index.html#!development/globa
l
I don't know where you got the idea of saxon:script from. You don't include JS
functions within your stylesheet, you include them within the calling JS
application. The simplest thing is to pass in a Javascript object to the
stylesheet as a parameter, then the XPath code can call its methods.
Michael Kay
Saxonica
>
> STYLESHEET test-js.xsl
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:mf="http://example.org/my-functions"
> xmlns:js="http://saxonica.com/ns/globalJS"
> xmlns:saxon="http://saxon.sf.net/"
> xmlns="http://www.w3.org/2005/xpath-functions"
> exclude-result-prefixes="xs js ping mf"
> version="3.0">
>
> <xsl:output method="xml" indent="yes"/>
>
> <saxon:script src="my-functions.js"/>
>
> <xsl:function name="mf:greet" as="xs:string">
> <xsl:param name="name" as="xs:string"/>
> <xsl:sequence select="saxon:call('greet', $name)"/>
> </xsl:function>
>
> <xsl:template match="/">
> <result>
> <xsl:value-of select="mf:greet('World')"/>
> </result>
> </xsl:template>
> <xsl:stylesheet>
>
>
> my-functions.js
>
> // my-functions.js
> function greet(name) {
> return "Hello, " + name + "!";
> }
>
> Stylesheet and JS file are in the same folder. I'm using the stylsheet as
the data file as the stylesheet isn't really doing any processing. I suspect
this isn't correct, but something is needed to connect the stylesheet to the
JS file like this
>
> <saxon:script src="my-functions.js"/>
>
> ..dan
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Using saxon-js to run a j, Martynas Jusevičius | Thread | [xsl] [jats-list] upcoming 3-day on, Liam R. E. Quin liam |
| Re: [xsl] Using saxon-js to run a j, Michael Mueller-Hill | Date | Re: [xsl] Using saxon-js to run a j, dvint dvint@xxxxxxxx |
| Month |