Page 1 sur 2

XML (XSLT)

Publié : 26 févr. 2004, 21:05
par Kropotkine
Là j'ai un petit problème qui ne m'était jamais arrivé avant :
Simplement quand je vais sur mon site j'ai ce message d'erreur qui s'affiche : :arrow:

Code : Tout sélectionner

Erreur lors du chargement de la feuille de style : Une feuille de style XSLT ne possède pas de type Mime XML
et je ne sais vraiment pas quoi mettre dans ma feuille de style pour enlever ca ! :cry: :cry:

PS: ca ne me le fait qu'avec FF pas avec IE et en plus ca ne me le fait que depuis que j'ai mis la feuille de style.

Publié : 26 févr. 2004, 21:05
par Kropotkine
Voici ma feuille de style : :arrow:

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" method="xml"/>
    <!-- Match document -->
    <xsl:template match="/">
        <xsl:apply-templates mode="copy" select="."/>
    </xsl:template>
    <!-- Deep copy template -->
    <xsl:template match="*|text()|@*" mode="copy">
        <xsl:copy>
            <xsl:apply-templates mode="copy" select="@*"/>
            <xsl:apply-templates mode="copy"/>
        </xsl:copy>
    </xsl:template>
    <!-- Handle default matching -->
    <xsl:template match="*"/>
</xsl:stylesheet>

Publié : 26 févr. 2004, 22:06
par Benoit
C'est ton serveur qui envoie le mauvais type MIME, un grand classique. Si tu n'as pas accès à httpd.conf, tu peux peut-être changer ça dans un .htaccess, ou en générant la page en php avec un header() approprié.

Publié : 26 févr. 2004, 22:11
par Kropotkine
J'ai des pages en php ( pour les frames ) et aussi .htaccess ( pour la partie privée ) !
Mais ca ne marche pas qu'avec FF, avec IE et Safari ca fonctionne sans problème ! Alors comment je fais avec header() ?

Publié : 26 févr. 2004, 22:40
par Benoit
Bon heu vu que je ne connais pas bien la syntaxe des fichiers htaccess, je te donne la solution en php : tu renommes ton fichier *.xsl en *.php (en changeant le lien en conséquence) et tu mets au début

Code : Tout sélectionner

<?php header("Content-Type: text/xsl"); ?>

Publié : 26 févr. 2004, 22:46
par Kropotkine
Et si ca ne fonctionne toujours pas ? :oops: :oops:

Publié : 26 févr. 2004, 22:50
par Benoit
Tu devrais au moins avoir une autre erreur, ou bien tu n'as pas changé le lien dans ta page comme je te l'ai dit.

Publié : 26 févr. 2004, 22:59
par Kropotkine
Non j'ai toujours la même erreur ! :cry: :cry:
Mais, j'ai changer l'adresse ( chuis pas si stupide ! ) :evil: :evil:

Publié : 26 févr. 2004, 23:01
par Benoit

Publié : 26 févr. 2004, 23:02
par Kropotkine
Je l'ai re-changé pour la re-rendre compatible avec ce "cher" IE !

Publié : 26 févr. 2004, 23:04
par Benoit
Ca n'aurait pas marché avec IE non plus puisque tu as une erreur PHP.
http://www.sefanet.ch/~theo/LeParti.php

Publié : 26 févr. 2004, 23:07
par Kropotkine
'Scuse, j'avais oublié d'enlever la balise XML.
Regarde, le message d'alerte à changer ! :? :?

Publié : 26 févr. 2004, 23:14
par Benoit
Il ne fallait pas l'enlever, mais le content-type doit être envoyé avant.

Publié : 26 févr. 2004, 23:18
par Kropotkine
Donc logiquement j'aurais ça ? :arrow:

Code : Tout sélectionner

<?php header("Content-Type: text/xsl"); ?>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" method="xml"/>
    <!-- Match document -->
    <xsl:template match="/">
        <xsl:apply-templates mode="copy" select="."/>
    </xsl:template>
    <!-- Deep copy template -->
    <xsl:template match="*|text()|@*" mode="copy">
        <xsl:copy>
            <xsl:apply-templates mode="copy" select="@*"/>
            <xsl:apply-templates mode="copy"/>
        </xsl:copy>
    </xsl:template>
    <!-- Handle default matching -->
    <xsl:template match="*"/>
</xsl:stylesheet>

Publié : 26 févr. 2004, 23:22
par Benoit
Ah oui, sauf que php va vouloir interpréter ton tag XML :)

Code : Tout sélectionner

<?php
  header("Content-Type: text/xsl");
  echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
.. devrait fonctionner.