Bonjour,

Je débute dans le xml, et je ne comprends pas où ça bloque. En fait, sous ie7 ma page html s'affiche correctement, bien interprétée par mon xslt. Mais sous Firefox, je ne vois que du texte non formaté selon mon xslt.

Je pense que j'ai raté une étape Smiley decu , mais je ne trouve pas la réponse. Merci de m'aider.

Cordialement

catcat
Bonjour!

Est-ce que tu pourrais nous montrer un bout de code (par exemple les premières lignes de ton fichier XML) ? Parce que sans indice, ça va être dur de t'aider Smiley cligne
Ah oui, excusez moi Smiley confused

fichier xsl :


<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
	<xsl:output method="html" version="1.0" encoding="iso-8859-1" indent="yes"/>
	
<xsl:template match="/">
	<html>
		<head>


fichier xml :

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="fichedescb.xsl"?>

<!DOCTYPE fiche SYSTEM "fiche.dtd"  [

<!ENTITY nbsp "&#160;">
]>

<fiche>
	<en-tete>Séjour multi-activités hiver au Québec</en-tete>
	<bal>


et voilà
Je ne vois rien de choquant, mais il est possible que ce soit parce que je ne suis pas bien réveillé Smiley hein J'avais pensé a priori à deux/trois trucs possibles, mais je ne les détecte pas dans ton code Smiley id

Est-ce que tu as un exemple en ligne, pour voir en situation et que l'on teste aussi?

Est-ce que cela marche en local, sur ta machine? C'est peut-être un problème de paramétrage du serveur (type MIME des fichiers xsl, par exemple).
Si tu mets ton fichier XML sur un serveur, alors l'appel à la DTD doit changer, et ce même si cette dernière se trouve dans le même répertoire: il faut la rendre publique.

En local en effet, après avoir téléchargé le XML, la feuille de style et la DTD, sous Firefox tout passe (vérifie quand même la validité de ton fichier XML... chez moi, il apparaît truffé d'erreurs au regard de la DTD)
je vais rechercher pour rendre ma dtd publique. Et peux tu me dire quel genre d'erreur ? Désolée, je me lance et j'ai essayé au mieux, mais à priori ... ma copie est à revoir Smiley cligne
Bonjour!

L'autre jour, j'étais passé à côté d'un détail, car j'avais téléchargé et sauvegardé en local ton fichier en le renommant. Et quand je l'ai renommé, je lui ai donné une extension .xml.

Or je viens de me rendre compte que tu avais un fichier avec une extension .html, et de fait le type MIME délivré par le serveur est... text/html. Essaie de renommer ton fichier en .xml, pour voir...
Modifié par Gilles (20 Nov 2008 - 15:54)
en fait, ça marche très bien quand c'est en xml. Mais je ne comprends pas Smiley decu comment le fichier de sortie peut avoir une extension htm ou html. Peux tu m'éclairer sur ce sujet ?

Merci
Ce qui est envoyé au navigateur, c'est un fichier XML. Il appelle ensuite son processeur XSLT interne pour transformer le document en accord avec la feuille de style xsl que tu joins. Mais fondamentalement, c'est un fichier XML qui est envoyé -d'ailleurs, quand tu regardes le code source, c'est du XML que tu vois et pas de l'HTML.

Le fait est que l'URL que tu donnes (http://www.oao.fr/dt/desc21.html) pointe vers un fichier dont l'extension est html, alors que comme je viens de te le dire, c'est un fichier XML. C'est ainsi que tu l'as nommé (ou bien ton éditeur), et envoyé sur le serveur... Ce n'est pas de la faute de ce dernier. Renomme-le en desc21.xml, envoie-le sur le serveur et regarde ce qui se passe.
oui, tout fonctionne bien quand c'est un xml.

Mais je souhaiterais que le fichier généré soit un html. Existe-t-il une solution, ou dois je réécrire mon code ?
Si tu veux que le fichier consulté par le navigateur soit un fichier HTML et non un fichier XML, alors la seule solution est que le serveur lui envoie un fichier HTML.

Il y a deux solutions:
- soit le serveur effectue lui-même la transformation dynamiquement (si tu as PHP, c'est assez facile à faire) ; il lui suffit pour cela d'avoir le fichier XML et la feuille de style XSLT.
- soit tu produis toi-même le fichier HTML sur ton ordinateur personnel, et l'envoies ensuite sur le serveur.

Suivant que tu te sens plus à l'aise avec un bout de code PHP, ou l'installation de logiciels ou l'utilisation de la ligne de commande sur ton ordinateur personnel; tu opteras respectivement pour la première ou la seconde solution. La première est plus simple à mettre en oeuvre à terme (une fois le bout de script écrit, il suffit d'envoyer les fichiers comme tu le fais actuellement), mais elle est plus longue à mettre en place initialement. Et si tu n'as pas PHP sur ton serveur, c'est cuit...
La difficulté de mise en oeuvre de la seconde méthode dépend de tes compétences en informatique (elle peut donc être très simple), mais restera toujours plus longue en temps au moment de la publication. En effet, au lieu de te contenter de mettre à jour les fichiers XML et XSLT sur le serveur, tu seras obligé(e?) d'effectuer la transformation sur ta machine, puis de mettre à jour le fichier HTML sur le serveur.
Modifié par Gilles (21 Nov 2008 - 08:52)
Bonjour,

La solution php me semble bien, étant donné que tout le reste du site est en php.

Si je peux encore te solliciter, as tu une adresse où ce code est expliqué ?

Merci