2011-05-24 5 views
1

J'ai plusieurs images SVG que j'aimerais mettre en page. Firefox et Chrome ne m'ont donné aucun problème, mais Safari semble seulement afficher l'image SVG si et seulement si le document a une extension ".xhtml". Si j'essaie d'utiliser du code PHP (et donc une extension ".php") le même marquage que j'ai utilisé dans le document ".xhtml" n'affichera plus l'image SVG. Le problème est bien sûr, je dois utiliser PHP pour le projet à portée de main. Aucune suggestion? Voici le code source:Problème Doctype affichant SVG avec Safari

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="de" xmlns:xml="http://www.w3.org/XML/1998/namespace"> 
<head> 
<title>SVG Safari Test</title> 
</head> 
<body> 
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve"><circle cx="250" cy="250" r="238.048"/></svg> 
</body> 
</html> 

Répondre

9

La raison .xhtml fonctionne dans Safari et .html n'a pas besoin est que Safari pour traiter le document XML pour permettre SVG embedded. Les dernières versions de Firefox et Chrome utilisent un HTML5 parser qui permet à SVG d'être intégré dans des documents HTML, donc ils devraient fonctionner avec les deux.

Pour que le rendu soit correct dans Safari, vous devez définir le type de contenu sur application/xhtml+xml. Utilisez dans votre fichier PHP avant sortie tout contenu:

<?php 
header('Content-type: application/xhtml+xml'); 
?> 
+0

Merci beaucoup! Cela a fonctionné parfaitement. Et merci d'avoir expliqué la logique qui sous-tend cela. En tant que novice, j'apprécie cela. –

+0

Jarrod, si cette réponse est correcte, vous devriez l'accepter. – mc10

0

vous pouvez définir votre config php pour traiter les fichiers xhtml.

Dans cet exemple, je suppose que vous utilisez apache sur debian/ubuntu

vous pouvez regarder dans le fichier /etc/apache2/mods-enabled/php5.conf

<IfModule mod_php5.c> 

<FilesMatch "\.xhtml$"> 
SetHandler application/x-httpd-php 
</FilesMatch> 

</IfModule> 

Vous peut avoir cette directive SetHandler dans un autre fichier si vous utilisez un autre serveur web ou une autre distribution ou OS ...

en supposant que vous êtes dans une boîte unix, juste grep les répertoires/etc/apache ou/etc/httpd

grep -Ri sethandler /etc/apache