Forums : Les possiblités de la plateforme Mozilla

Aller à la discussion :  Plus récente Plus ancienne

# La fonction document() dans une XSLT ne répond pas

Envoyé par : ligoz

Date : 06/09/2007 13:21

Bonjour,

Mon appli XUL nécessite un moment de transformer un doc XHTML vers un autre par une XSLT. Dans cette XSLT j'utilise la fonction document() pour y importer un doc XML, exemple (où 'monxml.xml' est dans le répertoire 'content'):

<xsl:variable name="monxml" select="document('monxml.xml')"/>

La console retourne une 'erreur de sécurité', le doc n'est pas importé. Même erreur en employant une url chrome. Il n'y a plus d'erreur avec un chemin absolu, admettons. Le probème est que rien est importé ! alors que (en PHP par exemple) ça marche et que cette fonction document() est documentée

Quelqu'un a t'il eu ce problème ?

# Re: La fonction document() dans une XSLT ne répond pas

Envoyé par : Cerber

Date : 31/10/2007 09:44

Bonjour

J'ai le même problème avec une extention Firefox, dans mon cas, ni les URLs relatives ni les URL chrome:// ne fonctionnent, MAIS les URLs absolues marchent... document('file:/C:/test.xml')

Je suis en train de lire les autres topics du forum et je pense que le topic suivant tombe dans le même problème. http://xulfr.org/forums/read.php?1,9103

# Re: La fonction document() dans une XSLT ne répond pas

Envoyé par : Cerber

Date : 31/10/2007 10:21

Si tu as besoin d'un élément disponnible via chrome j'ai trouvé une solution en m'inspirant du post suivant : http://xulfr.org/forums/read.php?1,869,8(..)

Dans mon xsl :

<xsl:param name="extra-file" />
<xsl:variable name="extra-xml" select="document($extra-file)"/>

Dans mon JS :

var processor = new XSLTProcessor();
processor.importStylesheet(myStyleSheet);

//TODO vérifier la compatibilité JAR de chrome2uri
processor.setParameter(null,'extra-file','file:'+chrome2uri('chrome://monappli/content/Db.xml'));

et le code de "chrome2uri" (version pré-alpha ==> a tester :) ) :

function chrome2uri(chromeUrl) {
	try{
		var ios = Components.classes["@mozilla.org/network/io-service;1"].
					getService(Components.interfaces.nsIIOService);
		var ch_ec = ios.newURI(chromeUrl, null, null);
		var chs = Components.classes["@mozilla.org/chrome/chrome-registry;1"].
					getService(Components.interfaces.nsIChromeRegistry)
		var uri = chs.convertChromeURL(ch_ec).path;
		return uri;
	}catch(e){
		alert(e);
		return null;
	}
}

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.