Apache Project Xalan XML/XSLT Processor Is Good, But Its ExtensionNot Work on Netscape/IE

R

RC

First, let me say I couldn't find a group discuss
XML/XSLT. So I only choose the closest groups to
post this message.

Here is part of my *.xsl file

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:my-javascript-ext="my-ext1"
extension-element-prefixes="my-javascript-ext"
version="1.0">

<xalan:component prefix="my-javascript-ext" elements="whichever"
functions="hello">
<xalan:script lang="javascript">
function hello(w) {
return ("Hello " + w + "!");
}
</xalan:script>
</xalan:component>

.....

<xsl:if test="function-available('my-javascript-ext:hello')">
<xsl:value-of select="my-javascript-ext:hello('World')" />
<br></br>
</xsl:if>
.....


And this is part of my *.xml file:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?xml-stylesheet type="text/xsl" href="http://myHostName/XML/myfile.xsl" ?>
.....


This is working greate for an XML file iff (if only if) I type

java org.apache.xalan.xslt.Process -in myfile.xml -xsl myfile.xsl

or

java org.apache.xalan.xslt.Process -in myfile.xml


That is wonderful, when I set CLASSPATH with

/usr/local/xalan/bin/xalan.jar:/usr/local/xalan/bin/bsf.jar:/usr/local/xalan/bin/js.jar

So I can make my own extension to call my JavaScript functions and/or
Java Class methods inside a XSL file with XALAN Processor.
But unfortunaely this will NOT work on Netscape, Firefox, IE browsers,
even all these browser support XML/XSLT.

Anyone has some idea how should I make Apache Project XALAN's extension
work on a browser?

Thank Q!
 
T

Tony Marston

Try the XSL forum at http://www.tek-tips.com/

RC said:
First, let me say I couldn't find a group discuss
XML/XSLT. So I only choose the closest groups to
post this message.

Here is part of my *.xsl file

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:my-javascript-ext="my-ext1"
extension-element-prefixes="my-javascript-ext"
version="1.0">

<xalan:component prefix="my-javascript-ext" elements="whichever"
functions="hello">
<xalan:script lang="javascript">
function hello(w) {
return ("Hello " + w + "!");
}
</xalan:script>
</xalan:component>

....

<xsl:if test="function-available('my-javascript-ext:hello')">
<xsl:value-of select="my-javascript-ext:hello('World')" />
<br></br>
</xsl:if>
....


And this is part of my *.xml file:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?xml-stylesheet type="text/xsl" href="http://myHostName/XML/myfile.xsl"
?>
....


This is working greate for an XML file iff (if only if) I type

java org.apache.xalan.xslt.Process -in myfile.xml -xsl myfile.xsl

or

java org.apache.xalan.xslt.Process -in myfile.xml


That is wonderful, when I set CLASSPATH with

/usr/local/xalan/bin/xalan.jar:/usr/local/xalan/bin/bsf.jar:/usr/local/xalan/bin/js.jar

So I can make my own extension to call my JavaScript functions and/or
Java Class methods inside a XSL file with XALAN Processor.
But unfortunaely this will NOT work on Netscape, Firefox, IE browsers,
even all these browser support XML/XSLT.

Anyone has some idea how should I make Apache Project XALAN's extension
work on a browser?

The XALAN extension is for server-side transformations. Client-side
transformations are performed by the transformation engine which is built
into the individual browser. You CANNOT tell the browser to use a different
transformation engine.
 
D

Disco Octopus

RC wrote :
And this is part of my *.xml file:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?xml-stylesheet type="text/xsl" href="http://myHostName/XML/myfile.xsl" ?>
....


This is working greate for an XML file iff (if only if) I type

java org.apache.xalan.xslt.Process -in myfile.xml -xsl myfile.xsl


The line...
<?xml-stylesheet type="text/xsl"
href="http://myHostName/XML/myfile.xsl" ?>
sould be....
<?xml:stylesheet type="text/xsl"
href="http://myHostName/XML/myfile.xsl" ?>
 
M

Martin Honnen

RC wrote:

Here is part of my *.xsl file

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:my-javascript-ext="my-ext1"
extension-element-prefixes="my-javascript-ext"
version="1.0">

<xalan:component prefix="my-javascript-ext" elements="whichever"
functions="hello">
<xalan:script lang="javascript">
function hello(w) {
return ("Hello " + w + "!");
}
</xalan:script>
</xalan:component>

....

<xsl:if test="function-available('my-javascript-ext:hello')">
<xsl:value-of select="my-javascript-ext:hello('World')" />
This is working greate for an XML file iff (if only if) I type

java org.apache.xalan.xslt.Process -in myfile.xml -xsl myfile.xsl
So I can make my own extension to call my JavaScript functions and/or
Java Class methods inside a XSL file with XALAN Processor.
But unfortunaely this will NOT work on Netscape, Firefox, IE browsers,
even all these browser support XML/XSLT.

Anyone has some idea how should I make Apache Project XALAN's extension
work on a browser?

Use XSLT 1.0 without extensions if you want different XSLT processors to
be able to process your stylesheet and give you the desired result.
Using extension functions (written in Java or JavaScript) makes your
stylesheet incompatible.
Netscape/Firefox does not support extension functions in XSLT, neither
written in JavaScript nor in Java.
IE uses MSXML as the XSLT processor, that has support for extension
functions written in an Active Scripting language like JScript or
VBScript but don't expect the object model exposed to script to be the
same as with Xalan.

You have to decide what you want to achieve, if you think you need XSLT
with extension functions then you are usually bound to one certain XSLT
processor which you could for instance use on the server to do
transformations where the transformation result output is then sent to
the browsers so that those only have to deal with HTML.

If you want to use XSLT on different clients then you can't use
extensions, there is a project EXSLT (http://www.exslt.org/) but don't
expect support for that across browsers like Mozilla and IE and Safari.
 
R

RC

Martin Honnen wrote:


Netscape/Firefox does not support extension functions in XSLT, neither
written in JavaScript nor in Java.
IE uses MSXML as the XSLT processor, that has support for extension
functions written in an Active Scripting language like JScript or
VBScript but don't expect the object model exposed to script to be the
same as with Xalan.

Remember last centure during 1990s, sometime you wrote a HTML page it
only can work in Netscape but not work in IE. Or work in IE but not work
in NS. We really don't wish the history repeat, BW2 (Brwoser War II).

I thought XML will end the browser war. But now seems to me a new
browser is starting from XSLT.
 
M

Martin Honnen

RC said:
Remember last centure during 1990s, sometime you wrote a HTML page it
only can work in Netscape but not work in IE. Or work in IE but not work
in NS. We really don't wish the history repeat, BW2 (Brwoser War II).

I thought XML will end the browser war. But now seems to me a new
browser is starting from XSLT.

If you want to use XSLT then it is best used on the server to transform
your XML to HTML that you send to the browsers. Client-side XSLT does
not have enough support, IE 6 has support for XSLT 1.0 (or IE 5/5.5 with
an updated MSXML installation), Mozilla has XSLT 1.0 support, I think
Safari since 1.3 has it too but other browsers not. And as I have
already said, if you want to use XSLT with different processors the
stick to the XSLT standard and do not use extensions.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,818
Latest member
SapanaCarpetStudio

Latest Threads

Top