client side xslt transformation in Firefox

Z

Zzzbla

Hi all,

anyone has a live example of loading an xml file from a server, an xslt
file from the server, then transforming the xml using the xslt and
outputing the results (preferably with appendChild)?

I'm trying to write a function to do just that (given url to xml, url
to xslt and elementid). Works a charm on IE. Can't get it to work with
Firefox.

Thanks in advance,
R. Green
 
?

=?ISO-8859-1?Q?P=E8re_No=EBl?=

Martin Honnen said:

Fine thanks !

this example works also on Mac OS X 10.4.8 with :

WebKit (latest nightly)
Firefox 2.0.x
Flock 0.7.8
Opera 9.10
Camino 1.1a1+

don't work with :
Safari 2.0.4
Shiira 2.0b1
SunRiseBrowser 0.895 (latest)
TrailBlazer 0.5


may be that's only a question of javascript core version ???

how to get that version number ?
 
V

VK

Zzzbla said:
anyone has a live example of loading an xml file from a server, an xslt
file from the server, then transforming the xml using the xslt and
outputing the results (preferably with appendChild)?

I'm trying to write a function to do just that (given url to xml, url
to xslt and elementid). Works a charm on IE. Can't get it to work with
Firefox.

(One more sample besides the one by Martin Honnen)

Full sample at <http://jsnet.sourceforge.net/tmp/xslt/dxslt.html>

That may be confusing because MSXML and Gecko are using different
patterns.

In MSXML you
1) obtaining XML data
2) obtaining XSL template
3) applying XSL template onto XML data; this automatically invokes
XSLT processor

// 1
var xml = new ActiveXObject('Microsoft.XMLDOM');
xml.async = false;
xml.load('demo.xml');
// 2
var xsl = new ActiveXObject('Microsoft.XMLDOM');
xsl.async = false;
xsl.load('demo.xsl');
// 3
document.body.
insertAdjacentHTML('beforeEnd',
xml.transformNode(xsl));

In Gecko you
1) creating an instance of XSLT processor
2) loading XML data to be processed
3) loading XSL template to be used
4) "charging" the processor with XSL template
5) passing XML data through the processor.

// 1
var XSLT = new XSLTProcessor;

// 2
var $xml = new XMLHttpRequest;
$xml.open('GET', 'demo.xml', false);
$xml.overrideMimeType('text/xml');
$xml.send(null);
var xml = $xml.responseXML;

// 3
var $xsl = new XMLHttpRequest;
$xsl.open('GET', 'demo.xsl', false);
$xsl.overrideMimeType('text/xml');
$xsl.send(null);
var xsl = $xsl.responseXML;

// 4
XSLT.importStylesheet(xsl);

// 5
document.body.
appendChild(XSLT.transformToFragment(xml, document));

Full sample at <http://jsnet.sourceforge.net/tmp/xslt/dxslt.html>

P.S. I wanted to reference a MDC source first - this raised again my
suspicion that there is some kind of sabotage by anonymous Wiki
editors. Way too many - IMHO - articles are not just not full or
erroneous. Not just that: they are rather sophistically written with a
lot of convincing code samples but with a few key errors or omissions
well hidden here and there.
<http://developer.mozilla.org/en/docs/Using_the_Mozilla_JavaScript_interface_to_XSL_Transformations>
is very demonstrative in this aspect.
That can a winter paranoia from my side of course.
 
?

=?ISO-8859-1?Q?P=E8re_No=EBl?=

VK said:
(One more sample besides the one by Martin Honnen)

have used the way of Martin to build a menu, here :

<www.yvon-thoraval.com/Canvas/menu.html>

a screenshot of it :

<www.yvon-thoraval.com/Canvas/menu.png>

it works with Opera 9.1 and Firefox 2 but not with WebKit (latest
nightly).

WebKit is able to work with the example of martin i've reproduced here :

<www.yvon-thoraval.com/JS/xslt>

i think for the menu case the prob comes from my xsl sheet :

<xsl:variable name="href"><xsl:value-of select="link"/></xsl:variable>
<li class="local"><a
href="javasript:setPage(&quot;{$href}&quot;);"><xsl:value-of
select="label"/></a></li>
 
V

VK

Père Noël said:
href="javasript:setPage(&quot;{$href}&quot;);"

OT to XSLT, but should be "javascript" - unless a typo in the post.

Also if you are not resolving entities, in HTML it will be as it is
href="javascript:setPage(&quot;URL&quot;);"
which is not a valid JavaScript call.

if you are resolving entities, then in HTML it will be
href="javasript:setPage("URL");"
with nested quotes and UA going nuts.

If entities are resolved on parsing then should be:
href="javasript:setPage(&apos;{$href}&apos;);"
 
?

=?ISO-8859-1?Q?P=E8re_No=EBl?=

VK said:
OT to XSLT, but should be "javascript" - unless a typo in the post.

that was a typo of me ))
if you are resolving entities, then in HTML it will be
href="javasript:setPage("URL");"
with nested quotes and UA going nuts.

i get that output in HTML : verified by DOM Inspector and Firefox.
 

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,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top