Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > XSL & XSLT
XSL & XSLT Forum d'entraide pour les extensions XSL et XSLT permettant de manipuler vos documents XML à l'aide de feuilles de style et de transformations avec PHP. Avant de poster -> tutoriels XSL et XSLT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/11/2007, 22h30   #1
Futur Membre du Club
 
Inscription : avril 2005
Messages : 104
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 104
Points : 18
Points : 18
Par défaut [XSLT] Problème déclaration xml (php/xslt)

Bonjour,
j'utilise php+xslt pour parser mes fichiers xml.

Je tourne sur php5 et les transformations se déroulent trés bien, mise à part qu'a la sortie dans mon document l'entête xml s'affiche:

ex page php:
<body>
<?xml version="1.0" encoding="utf-8"?>
contenue parser
</body>

Comment faire pour que dans ma page php seul le contenu html s'affiche sans <?xml version="1.0" encoding="utf-8"?>

Merci d'avance pour votre aide,
Cordialement,
Thibaut
thibaut06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 23h10   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Ne serait-ce pas l'élément xsl:output qui serait absent ou déclaré dans un tout autre sens ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 23h19   #3
Futur Membre du Club
 
Inscription : avril 2005
Messages : 104
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 104
Points : 18
Points : 18
Merci pour votre aide,
dans mes documents xsl, l'entête est la suivante

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE xsl:stylesheet  [
	<!ENTITY nbsp   "&#160;">
	<!ENTITY copy   "&#169;">
	<!ENTITY reg    "&#174;">
	<!ENTITY trade  "&#8482;">
	<!ENTITY mdash  "&#8212;">
	<!ENTITY ldquo  "&#8220;">
	<!ENTITY rdquo  "&#8221;"> 
	<!ENTITY pound  "&#163;">
	<!ENTITY yen    "&#165;">
	<!ENTITY euro   "&#8364;">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8"/>
thibaut06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 23h25   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Il faut donc changer :
Code :
<xsl:output method="xml" encoding="utf-8"/>
pour HTML
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 23h34   #5
Futur Membre du Club
 
Inscription : avril 2005
Messages : 104
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 104
Points : 18
Points : 18
J'avais déjà effectué le test et je viens rééffectuer des tests avec
l'entête:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE xsl:stylesheet  [
	<!ENTITY nbsp   " ">
	<!ENTITY copy   "©">
	<!ENTITY reg    "®">
	<!ENTITY trade  "™">
	<!ENTITY mdash  "—">
	<!ENTITY ldquo  "“">
	<!ENTITY rdquo  "”"> 
	<!ENTITY pound  "£">
	<!ENTITY yen    "¥">
	<!ENTITY euro   "€">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
et

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE xsl:stylesheet  [
	<!ENTITY nbsp   " ">
	<!ENTITY copy   "©">
	<!ENTITY reg    "®">
	<!ENTITY trade  "™">
	<!ENTITY mdash  "—">
	<!ENTITY ldquo  "“">
	<!ENTITY rdquo  "”"> 
	<!ENTITY pound  "£">
	<!ENTITY yen    "¥">
	<!ENTITY euro   "€">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
mais en sortie j'ai toujours l'entête xml avec standalone yes en plus:
<?xml version="1.0" standalone="yes"?>
thibaut06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2007, 00h07   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Vous utilisez la méthode transformToXML et non transformToDoc de XSLTProcessor ? (enfin façon de parler)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2007, 00h20   #7
Futur Membre du Club
 
Inscription : avril 2005
Messages : 104
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 104
Points : 18
Points : 18
Merci encore pour votre aide, c'est vraiment sympa

j'utilise une class php fourni par dreamweaver, voici la fonction utlisant php5
Code :
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
30
		function transformDocument_domxml5(&$xml, &$xsl, &$params) {
			$magic_quotes_runtime_orig = get_magic_quotes_runtime();
			set_magic_quotes_runtime(0);
			$xmlDom = new DOMDocument;
			$xslDom = new DOMDocument;
			$xmlDom->loadXML($xml);
			$xslDom->loadXML($xsl);
			$proc = new XSLTProcessor;
			foreach ($params as $key => $value) {
				$proc->setParameter('', $key, $value);
			}
			$old_error_reporting = error_reporting(E_ALL);
			$old_error_handler = set_error_handler(array(&$this, 'util_errorHandler'));
			$proc->importStyleSheet($xslDom);
			$result = $proc->transformToDoc($xmlDom);
			restore_error_handler();
			error_reporting($old_error_reporting);
			if ($this->hasError()) {
				$myError = $this->getErrorFromCode('MM_TRANSFORMATION_ERROR');
				$myError .= $this->getRawError();
				$myError .= $this->getErrorFromCode('MM_TRANSFORM_D5_ERROR', array($this->xslname));
				$myError .= $this->util_htmlentities($xsl);
				$this->setError($myError);
				set_magic_quotes_runtime($magic_quotes_runtime_orig);
				return;
			}
			$output = $result->saveXML();
			set_magic_quotes_runtime($magic_quotes_runtime_orig);
			return $output;
		}
Il semble bien que la fonction utilisée soit transformToDoc.
thibaut06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2007, 11h03   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Tentez de remplacer (seulement) les deux lignes suivantes :
Code :
1
2
3
			$result = $proc->transformToDoc($xmlDom);
// [...]
			$output = $result->saveXML();
Par :
Code :
$output = $proc->transformToXML($xmlDom);
Si vous ne l'avez pas déjà fait
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2007, 13h06   #9
Futur Membre du Club
 
Inscription : avril 2005
Messages : 104
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 104
Points : 18
Points : 18
Merci beaucoup pour votre aide précieuse,
en effet c' était la solution et je n'avais pas effectué ce test, ni même imaginé.

Donc tout marche nickel maintenant grave à vous.

Bonne journée,
Thibaut
thibaut06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h24.


 
 
 
 
Partenaires

Hébergement Web