Pages :
(reprise du message précédent)

a écrit :
Ton fragment PHP à l'air correct en première approche. Mais il y a des conditions précises pour l'emploi de la fonction header : "N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichges PHP. Une erreur très classique est de lire un fichier avec..."


Le code suivant est placé tout au début de mon fichier Smiley smile

<?php
if((strpos($_SERVER['HTTP_ACCEPT'],"application/xhtml+xml") === false) && (strpos($_SERVER['HTTP_USER_AGENT'],"MathPlayer") === false)){
	header("Content-Type: text/html; charset=iso-8859-15");
}else {
	header("Content-Type: application/xhtml+xml");
}


a écrit :
De toute façon pour border ce point là, tu dois vérifier explicitement que FF reçoit bien du application/xhtml+xml.


Ben lorsque je consulte les informations de la page sous FF, le type de la page est bien "application/xhtml+xml", pourtant toutes les données sont envoyées les unes à la suite des autres... Smiley ohwell Le problème viendrait-il d'ailleurs ? Voilà le résultat au cas où tu veux jeter un oeil : http://cilma.mathieu-jobard.info/filtre.php

Sinon un autre question, est-ce que c'est normal que cette déclaration d'espace de nom apparaissent dans toutes les balises :
xmlns="http://www.w3.org/1998/Math/MathML"


Pour le javascript je vais faire des essais de mon côté Smiley smile
Modifié par m@t (17 Feb 2006 - 11:03)
a écrit :
Le problème viendrait-il d'ailleurs ? Voilà le résultat au cas où tu veux jeter un oeil : http://cilma.mathieu-jobard.info/filtre.php

Oui tu as raison, c'est beaucoup plus simple comme cela.

3 problèmes dans ta page :
- il manque le doctype
- espaces de nom inadaptés.
- les formules ne sont pas structurées dans un arbre MathML

Conclusion il doit y avoir encore quelques "bugs" dans tes templates XSLT.

a écrit :
Sinon un autre question, est-ce que c'est normal que cette déclaration d'espace de nom apparaissent dans toutes les balises :

xmlns="http://www.w3.org/1998/Math/MathML"
Non ce n'est pas normal, les éléments XHTML doivent bien sur se trouver dans l'espace de nom : http://www.w3.org/1999/xhtml
1) J'ai ajouté le doctype

2) Pour ce qui est du problème des espace de noms, voilà ce que j'ai fait pour avoir maintenant un rendu satisfaisant ... :

Pour le xml :


<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">


Pour le xsl :

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" encoding="ISO-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="  http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
 


Bon , comme vous aurez pu le remarquer, pour le moment je ne fais plus référence à la dtd correspondant à MathML... parce que je n'arrive à rien ... ça fait trois heures que je cherche et avec des exemples simples (MathML dans XHTML) j'y arrive, mais pour mon appli il n'y a pas moyen...

Est-ce que quelqu'un pourrait m'expliquer :

1) si ce que j'utilise comme déclaration est juste
2) comment m'y prendre, avec un petit exemple simple, comment insérer un fragment de données MathML

Merci d'avance pour cette aide précieuse Smiley smile
Modifié par m@t (17 Feb 2006 - 16:28)
Avoir le bon espace de nom sur chaque élément ne se résume pas simplement à avoir la bonne entete dans ton XSL et XML.

Un petit exemple vaut mieux qu'un long discours, j'espère que ceci te sera utile :

XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<math xmlns="http://www.w3.org/1998/Math/MathML">
	<msub>
		<mi>a</mi>
		<mn>0</mn>
	</msub>
	<mo>+</mo>
	<mi>b</mi>
</math>


XSL :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output 	method="xml" 
			indent="yes" 
			encoding="ISO-8859-1" 
			doctype-public="-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" 
			doctype-system="http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"/>
<xsl:template match="/">
<html>
	<head>
		<title>test</title>
	</head>
	<body>
		<p>du MathML en dessous</p>
		<xsl:copy-of select="/"/>
	</body>
</html>
</xsl:template>
</xsl:stylesheet >


Résultat XHTML + MathML :
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>test</title>
  </head>
  <body>
    <p>du MathML en dessous</p>
    <math xmlns="http://www.w3.org/1998/Math/MathML">
	<msub>
		<mi>a</mi>
		<mn>0</mn>
	</msub>
	<mo>+</mo>
	<mi>b</mi>
    </math>
  </body>
</html>
Mais attention ce n'est pas l'unique façon de gérer correctement les espaces de nom.
Bonne chance Smiley smile
Dans tout ça, j'avais quand même réussi à faire fonctionner mon doc sous IE :d .

Par contre, je viens de remarquer un truc, quand je modifier le xsl:output que j'avais :

<xsl:output method="xml" encoding="ISO-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="  http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>


par celui de ton exemple .. ça ne passe plus sous IE Smiley eek

En tout cas merci pour ton exemple je vais essayer d'intégrer du code MathML Smiley smile
Ok je pense que ça venait de ma feuille de style xsl, maintenant j'arrive à insérer des formules mathématiques Smiley smile

Malheureusement, sous IE elles ne sont pas mises en forme Smiley decu D'ailleurs j'ai testé avec ton exemple (avec PHP ), et sous IE ça ne passe pas non plus ... Smiley decu

Mais bon j'avance, j'avance Smiley smile

Merci pour l'exemple, ça m'a vraiment aidé Smiley smile
Bon ben finalement j'ai encore un problème ... Smiley decu

Je viens de commencer à mettre à jour mon document XML, et lorsque je veux insérer des entités MathML (<mi>&pi;</mi> par exemple) , elle ne sont pas interprétés, dans le document de sortie cette expression est remplacée par <mi />

Pourtant les expressions n'utilisant pas d'entités fonctionnent très bien ...

Par exemple l'expression suivante ne pose pas de soucis :


<math xmlns="http://www.w3.org/1998/Math/MathML">
<msub>

    <mi>a</mi>

    <mn>0</mn>

</msub>

<mo>+</mo>

<mi>b</mi>
<mi>&pi;</mi>
</math>



Je suppose que ça doit venir d'un problème de DTD s'il ne trouve pas ces entités ... mais alors pourquoi les autres expressions fonctionnent elles ??

Voilà comment je procède :

dans le XML :

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

....
<formule>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mo>&notin;</mo>
</math>
</formule>



Dans le xsl :

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" encoding="ISO-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="  http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
 

....
<xsl:template match="formule"> 
	
     <xsl:copy-of select="."/>
    	
</xsl:template>


Je dois forcément me tromper quelque part Smiley decu
a écrit :
Je dois forcément me tromper quelque part
Courage, courage...

Bon typiquement aucun des 2 fichiers XML ou XSL n'a de chance de connaître les entités que tu souhaites utiliser car elles n'y sont pas définies. 3 solutions :
- associer les fichiers XML au bon doctype (qui définit les entités)
- définir les entités dans tes fichiers XML
- utiliser les entités numériques

J'utilise habituellement la dernière solution. Exemple :

&notin;=&#x2209;
&pi;=&#3c0;

Modifié par Xavier (20 Feb 2006 - 10:16)
Ok ça ma rassure Smiley smile

Ok ben je vais essayer d'également utiliser les entités numériques Smiley smile
Pages :