Forums d'assistance et de discussion sur les logiciels produits par Mozilla ou créés à partir des technologies Mozilla. Ce site ne dépend pas de la fondation Mozilla et est maintenu par un collectif de bénévoles.
HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
j'ai un serveur web:
- qui sert une page xml dynamique "page.xml", associée à une base de données
- cette page appelle une feuille de style "feuille.xslt"
- qui est censée transformer la page xml en une belle page html lisible par l'internaute
J'ai débuggé ma feuille de style et ma page xml avec un éditeur xml, qui ne trouve pas d'erreur.
Quand j'ouvre ma page "page.xml" dans Firefox, j'obtiens le message ci dessous:
Error loading stylesheet: An XSLT stylesheet does not have an XML mimetype:
suivi de l'URL de ma feuille de style.
Que signifie ce message
L'erreur est-elle:
- un mauvais paramétrage de firefox?
- une mauvaise déclaration de ma feuille xslt?
- autre chose????
PsyDk a écrit :Ton serveur Web doit envoyer le type mime « text/xml » en même temps que ton fichier xslt.
j'ai ça dans les deux premieres lignes de ma page xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="TD_4DOX_3.xslt"?>
c pas bon??
j'ai mis un suffixe .xslt à ma feuille bien que je ne crois pas que ce soit nécessaire.
Attention, text/xml et pas text/xsl. Mais ce n'est pas la cause du problème. Quand un serveur Web envoie un fichier, il envoie aussi son type. Exemple quand tu vas sur Google :
PsyDk a écrit :Ton serveur Web doit envoyer le type mime « text/xml » en même temps que ton fichier xslt.
j'ai ça dans les deux premieres lignes de ma page xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="TD_4DOX_3.xslt"?>
c pas bon??
j'ai mis un suffixe .xslt à ma feuille bien que je ne crois pas que ce soit nécessaire.
Attention, text/xml et pas text/xsl. Mais ce n'est pas la cause du problème. Quand un serveur Web envoie un fichier, il envoie aussi son type.
La page Google est de l'html, donc le serveur envoie comme type « text/html ». C'est l'attribut Content-Type.
Sur ton serveur Web, tu dois spécifier que les fichiers *.xslt doivent être envoyés avec le type « text/xml ».
Mon serveur est un peu spécial (c'est la base 4D qui fait elle mm serveur web), et je ne sais pas comment accéder au paramétrage des mime type.
Le probleme est qu'avec LE MM serveur web, j'ai une autre page xml, "page2.xml", avec les memes deux premieres lignes.. et qui marche.
Aussi j'ai un serveur Apache. Si je lui fais servir la meme page "page.xml", j'ai AUSSI l'erreur signalée par firefox.
Donc j'ai pas l'impression que ca vienne d'un mauvais paramétrage du serveur.
j'ai ajouté un fichier truc.htaccess, contenant "AddType texte/xml .xslt" à la racine du site servi par Apache.
j'ai installé les extensions FireFox permettant de trapper les headers.
Pour Apache: il n'indique aucun ContentType pour "page.xml". Puis pour la "feuille.xslt", il indique application/xslt+xml.
Pour mon autre serveur (4D_Webstar_D/2004), il donne pour "page.xml" le contenttype text/xml, et pour la "feuille.xslt" text/html.
Comme les pages servies sont identiques, je vois pas bien pourquoi ces différences.
Avec les deux serveurs, j'obtiens le fameux message XSLT stylesheet does not have an XML mimetype.
N'est ce pas fun: si j'ouvre "mapage.xml" en tant que file:// avec FireFox, j'obtiens une magnifique page html avec ses tableaux et ses titres en couleurs juste comme je voulais. Je pense donc que mon code xml ou xslt est OK.
donc soit c'est un reglage de Firefox, soit un réglage des serveurs...?
Qqun a une idée ??
Attention le fichier doit s'appeler .htaccess , tel quel, si tu l'appelles truc.htaccess, çà ne marchera pas !!
Sinon, oui, ton code xml et xslt est surement juste, c'est bien un problème de content type envoyé par le serveur. Cà marche avec file:// car dans ce cas firefox ne s'attend pas à recevoir l'info d'un serveur, et donc se base uniquement sur l'extension.