Have a nice day everybody
i'm trying to call a XSLT file from an XML that i'm rendering using data:text/xml, obtained from a REST. The most basic attempt is to use this line of code:
window.open( 'data:text/xml,' + encodeURIComponent( responseData ) );
another attempt of mine is to open it in a modal iframe (with angular-material) setting up the src with the xml data, both tests opens the XML with the URL but with this error:
Error loading the stylesheet: unknown error (805303f4)
I have test it in firefox and chrome, and chrome is more clear with the error details in the console:
Unsafe attempt to load URL route-to-xsl.xsl from frame with URL data:text/xml,... Domains, protocols and ports must match.
I tried to use an absolute path to the stylesheet including same protocols, domains etc. but the error remains (both in iframe or new tab options).
Any help pls, thanks.
As this is client-side Javascript inside of web browsers like Firefox or Chrome I would suggest to use
XSLTProcessor
to perform the XSLT transformation, you can pull in the XSLT stylesheet usingXMLHttpRequest
, parse yourresponseData
usingDOMParser
and then you can useXSLTProcessor
for the transformation.I don't think you will get the browser to execute an XSLT referenced in the
data
URL, unless the XSLT is embedded itself as data:However, it seems only Mozilla swallows that attempt and applies the XSLT, Chrome continues to complain about an unsafe attempt. So I think it is better and more portable to implement any XSLT transformation where you have the input as a Javascript string with XSLTProcessor.