Bonjour,
Je me retrouve avec un problème très étrange. Lorsque j'extrais des données d'un fichier xml avec xsl les caractères accentués tels que "é" s'affiche à la condition qu'il soit dans une balise. Exemple :
<mabalisedextraction><h1>titre accentué</h1></mabalisedextraction>
me donne en résultat : "titre accentué"
Les accents ne s'affiche carrément pas si ils ne sont pas dans une balise. Exemple :
<mabalisedextraction><h1>titre accentué.</h1>Être ou ne pas être accentué,tel est la question!</mabalisedextraction>
me donne en résultat : "titre accentué. tre ou ne pas tre accentu, tel est la question!"
J'ai affiché le code source renvoyé par mon navigateur... c'est simple, les caractères accentués ne sont tout bonnement pas présent... pas une trace, rien!
Voici mon fichier xsl en résumé :
1 2 3 4 5 6 7 8 9 10
| <?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output
method="xml"
encoding="iso-8859-1"
doctype-system="madtd.dtd" />
<xsl:template match="/">
<xsl:copy-of select="mabalisedextraction/node()" />
</xsl:template>
</xsl:stylesheet> |
Voici mon fichier madtd.dtd :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <?xml version="1.0" encoding="iso-8859-1" ?>
<!ENTITY nbsp " ">
<!ENTITY aacute "á"> <!ENTITY Aacute "Á">
<!ENTITY acirc "â"> <!ENTITY Acirc "Â">
<!ENTITY agrave "à"> <!ENTITY Agrave "À">
<!ENTITY aring "å"> <!ENTITY Aring "Å">
<!ENTITY atilde "ã"> <!ENTITY Atilde "Ã">
<!ENTITY auml "ä"> <!ENTITY Auml "Ä">
<!ENTITY aelig "æ"> <!ENTITY AElig "Æ">
<!ENTITY ccedil "ç"> <!ENTITY Ccedil "Ç">
<!ENTITY eth "ð"> <!ENTITY ETH "Ð">
<!ENTITY eacute "é"> <!ENTITY Eacute "É">
<!ENTITY ecirc "ê"> <!ENTITY Ecirc "Ê">
<!ENTITY egrave "è"> <!ENTITY Egrave "È">
<!ENTITY euml "ë"> <!ENTITY Euml "Ë">
<!ENTITY iacute "í"> <!ENTITY Iacute "Í">
<!ENTITY icirc "î"> <!ENTITY Icirc "Î">
<!ENTITY igrave "ì"> <!ENTITY Igrave "Ì">
<!ENTITY iuml "ï"> <!ENTITY Iuml "Ï">
<!ENTITY ntilde "ñ"> <!ENTITY Ntilde "Ñ">
<!ENTITY Ograve "Ò"> <!ENTITY ograve "ò">
<!ENTITY Oacute "Ó"> <!ENTITY oacute "ó">
<!ENTITY Ocirc "Ô"> <!ENTITY ocirc "ô">
<!ENTITY Ouml "Ö"> <!ENTITY ouml "ö">
<!ENTITY Ugrave "Ù"> <!ENTITY ugrave "ù">
<!ENTITY Uacute "Ú"> <!ENTITY uacute "ú">
<!ENTITY Ucirc "Ö"> <!ENTITY ucirc "û">
<!ENTITY Uuml "Ü"> <!ENTITY uuml "ü"> |
Voici mon fichier xml en résumé :
1 2 3 4 5
| <?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE dtdsite SYSTEM "http://www.my-sion.ch/dtd.dtd">
<mabalisedextraction>
<h1>titre accentué.</h1>Être ou ne pas être accentué,tel est la question!
</mabalisedextraction> |
Voici ma fonction php en résumé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
$xml = new DOMDocument;
$xml->resolveExternals = TRUE;
$xml->substituteEntities = FALSE;
$xml->load($xmlFile);
$xsl = new DOMDocument;
$xsl->load($xslFile);
$xhtml = new XSLTProcessor;
//Affectation de la feuille de style
$xhtml->importStyleSheet($xsl);
// Transformation du document XML selon la feuille XSL
return($xhtml->transformToXML($xml)); |
Voilà, vous savez tout... et j'avoue ne pas comprendre quel différence il y a entre un caractère accentué dans une balise et un autre hors balise...
Merci d'avance pour vos lumières.
Cordialement,
Grégoire
Partager