Safari XML/XSL Problème

AntoM

Membre enregistré
12 Juin 2007
8
0
Bonsoir à tous,

Je suis débutant en programmation PHP XML/XSL et j'ai un problème avec mon macbook (safari/FF).

Je m'explique : J'ai crée une petite page toute bete en XML avec des liste XSL mais je n'arrive pas à les visualiser sur mon mac. Safari me renvoie la liste du XML sous forme de texte non formaté , Firefox lui me renvoie caremment une erreur... quand je boote sous windows aucun probleme les pages s'affiche images et texte formaté...

Y'aurais t'il une manip à faire ?
J'ai cherché en vain toute l'aprem sans réelle réponse...
J'ai tenté de modifier le code, ça passe toujours sous windows mais page blanche sous mac :/
J'ai également cherché d'autres codes XML .. meme resultat rien ne s'affiche
L'adresse de mon site http://dictyos.free.fr/test/liste.xml
qui fait appel aux liste.xsl et liste2.xsl du meme répertoire...

Help please Help !
 

Warflo

Membre expert
Club MacG
13 Août 2005
1 486
127
21
Marseille
Chez moi je vois une succession de date et de titres de James Bond ... c'est le but recherché non ? (Safari 3)
 

AntoM

Membre enregistré
12 Juin 2007
8
0
Chez moi je vois une succession de date et de titres de James Bond ... c'est le but recherché non ? (Safari 3)

C'est exactement ce que j'ai.. mais sous internet explorer sous windows le tout est en colone avec des photos des caisses de james bond ...

La question est pourquoi safari (voir macos) n'interprete pas correctement ce code ???
 

ntx

Membre vénérable
Club MacG
15 Octobre 2004
12 128
376
92
Et sous FF tu obtiens un belle erreur :
Bloc de code:
Erreur d'analyse XML : mal formé
Emplacement : http://dictyos.free.fr/test/liste.xml
Numéro de ligne 2, Colonne 6 :<?xml:stylesheet type="text/xsl" href="liste.xsl"?>
-----^
Es-tu sur de ton code ? C'est pas parce que IE l'interprète que cela suit la norme :D
 

AntoM

Membre enregistré
12 Juin 2007
8
0
Et sous FF tu obtiens un belle erreur :
Bloc de code:
Erreur d'analyse XML : mal formé
Emplacement : http://dictyos.free.fr/test/liste.xml
Numéro de ligne 2, Colonne 6 :<?xml:stylesheet type="text/xsl" href="liste.xsl"?>
-----^
Es-tu sur de ton code ? C'est pas parce que IE l'interprète que cela suit la norme :D

Non j'en suis pas sur a 100% mais quand je remplace le <?xml:style... par <?xml-style... safari m'affiche page blanche...
Et firefox (que tu dois utiliser) plante autant...

j'ai egalement testé avec ce tutorial
http://www.chez.com/xml/initiation/exemples/sort_books.htm
http://www.chez.com/xml/initiation/
et idem j'ai l'entete du tableau mais pas le contenu :(
 

ntx

Membre vénérable
Club MacG
15 Octobre 2004
12 128
376
92
Donc si on suit le premier tutorial venu :
dans ton fichier xml:
Bloc de code:
<?xml[B]-[/B]stylesheet type="text/xsl" href="liste.xsl"?>
Un tiret et pas ":", comme indiqué sur la page de ton lien :siffle:
et dans ton fichier xsl :
Bloc de code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
Il manque l'attribut "version".
Et avec ça chez moi ça marche sur FF et Safari 2. :zen:

PS: extrait de la norme :
An xsl:stylesheet element must have a version attribute, indicating the version of XSLT that the stylesheet requires.
Une fois de plus M$ s'assoit sur la norme. Heureusement que c'est écrit en Anglais, langue maternelle des gens de chez M$ :D
 

AntoM

Membre enregistré
12 Juin 2007
8
0
Merci pour cette reponse Ntx !
Bloc de code:
[I]<?xml-stylesheet version="1.0" type="text/xsl" href="liste.xsl"?>[/I]
Ca n'as pas marché réellement mais ca m'a permis de corriger des erreurs dans mon code et aboutir ainsi a une erreur XSLT.

J'ai cherché et trouvé ca :
Bloc de code:
[I]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">[/I]

Ce qui a eu pour conséquence de faire marcher sous FF et safari mais plus sous IE

J'ai donc continué a cherché et modifié la requete:
Bloc de code:
[I]<xsl:for-each select="catalog/cd" order by="artist">[/I]
(qui fonctionait avant sous IE)
par :
[
Bloc de code:
I]<xsl:for-each select="catalog/cd">
      <xsl:sort select="artist"/> [/I]

Ca fonctionne a present sous tous les navigateurs :D

Merci a tous pour votre aide ! MacGen :love:
 

tatouille

Membre expert
1 Juin 2004
5 174
493
Stanford CA
Bloc de code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet version="1.0" type="text/xsl" href="liste.xsl"?>

<!DOCTYPE liste[
    <!ELEMENT voiture (ann&#65533;e+,film*,nom*,image?)>    
    <!ELEMENT ann&#65533;e (#PCDATA)>
    <!ELEMENT film (#PCDATA)>
    <!ELEMENT nom (#PCDATA)>
    <!ELEMENT image (ANY)>
    
]>





<liste>

<voiture>
    <ann&#65533;e>1964</ann&#65533;e>
    <film>Goldfinger</film>
    <nom>DB5</nom>
    <image>goldfinger.jpg</image>
utf8 ou iso il faut choisir ... a part ca il ya une norme en prog qui s'appele l anglais, une langue sans accent et accessible par tous


<!DOCTYPE list[
<!ELEMENT voiture (year+,movie*,name*,image?)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT movie (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT image (ANY)>

]>
<list>
<car>
<year>1964</year>
<movie>Goldfinger</movie>
<name>DB5</name>
<image>goldfinger.jpg</image>
 

AntoM

Membre enregistré
12 Juin 2007
8
0
utf8 ou iso il faut choisir ... a part ca il ya une norme en prog qui s'appele l anglais, une langue sans accent et accessible par tous


Je suis d'accord avec toi tatouille, mais la j'ai juste repris le xml fait en cours d'info... Donc c'est pas vraiment important de respecter cette norme dans mon cas;) (ca restreint juste à utiliser iso et non utf...)
 

toubai

Membre confirmé
16 Août 2004
41
2
47
Voilà l'entête que tu dois utiliser dans ta feuille XSL :

Bloc de code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE stylesheet [
      <!ENTITY space "<xsl:text> </xsl:text>">
      <!ENTITY nbsp "&#160;">
      <!ENTITY euro "&#8364;">
      <!ENTITY aacute "&#225;">
      <!ENTITY iacute "&#237;">
      <!ENTITY oacute "&#243;">
      <!ENTITY uacute "&#250;">
      <!ENTITY eacute "&#233;">
      <!ENTITY egrave "&#232;">
      <!ENTITY agrave "&#224;">
      <!ENTITY ocirc "&#244;">
      <!ENTITY cr "<xsl:text>
</xsl:text>">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="ISO-8859-1" omit-xml-declaration="yes"/>

</xsl:stylesheet>

Dans cette feuille XSL, il faut évidemment que tous les caractères spéciaux soient encodés en entités HTML.

En ce qui concerne ton XML, il doit avoir cet en-tête :

Bloc de code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="nom_de_la_feuille_xsl.xsl"?>

Avec ça, ça devrait aller...
 
A

Anonyme

Invité
Dans cette feuille XSL, il faut évidemment que tous les caractères spéciaux soient encodés en entités HTML.

Les entités ne sont pas nécessaire* du moment que l'encodage utilisé (éditeur de texte) et celui déclaré est le même non?



*sauf &lt; &gt; &amp;