IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[XSLT] Processor et indentation


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 21
    Points
    21
    Par défaut [XSLT] Processor et indentation
    Bonjour,

    Je ne sais pas pourquoi je n'arrive pas à indenté mon code source avec XSLT !
    Je précise que je débute dans ce domaine qu'es le XML XSLT...
    d'ailleurs j'ajoute que quand il génère le document il ajoute à toutes les balises,
    par exemple "<b></b>" : <b xmlns="></b>

    je sais pas d'ou viens se xmlns dans les elements !

    j'avais aussi rajouter dans le xsl:output indent="yes" et ça ne fonctionnais pas

    j'ai changer dans les propriétés output :
    et quand je remplace html par xml ça indente !

    mais ce n'est surement pas la bonne chose à faire ?
    du moins je suppose !


    voici mon code php :

    J'ai créer un class pour la vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class View extends XSLTProcessor
    {
    	public function render($document, $style)
    	{
    		$xsl = new DOMDocument();
    		$xsl->load($style);
     
    		$xml = new DOMDocument();
    		$xml->loadXML($document);
     
    		$this->importStylesheet($xsl);
     
    		echo $this->transformToXml($xml);
    	}
    }

    Mon fichier XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
     
    	$db	 = new DB("localhost", "******", "******", "******");
    	$doc = new DOMDocument("1.0", "UTF-8");
     
    	$doc->formatOutput = true;
     
    	$root = $doc->createElement("root");
    	$doc->appendChild($root);
     
    	$db->query("SELECT * FROM t_users");
     
    	while($row = $db->resultSet())
    	{
    		$user = $doc->createElement("user");
    		$root->appendchild($user);
     
    		$firstname = $doc->createElement("firstname", utf8_encode($row['firstname']));
    		$user->appendChild($firstname);
     
    		$lastname = $doc->createElement("lastname", $row['lastname']);
    		$user->appendChild($lastname);
     
    		$birthdate = $doc->createElement("birthdate", $row['birthdate']);
    		$user->appendChild($birthdate);
     
    		$mail = $doc->createElement("mail", $row['mail']);
    		$user->appendChild($mail);
     
    		$phone = $doc->createElement("phone", $row['phone']);
    		$user->appendChild($phone);
    	}
     
    	$xml = $doc->saveXML();
    	$xsl = "style/connected.xsl";
     
    	$view = new View();
    	echo $view->render($xml, $xsl);
    ma feuille de style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
     
    	<xsl:output
    		 method="html"
    		 encoding="UTF-8"
    		 doctype-public="-//W3C//DTD HTML 4.01//EN"
    		 doctype-system="http://www.w3.org/TR/html4/strict.dtd"/>
     
    	<xsl:template match="/">
     
    	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
     
    		<head>
    			<title>XSLT</title>
    			<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    			<link rel="stylesheet" type="text/css" href="style/css/default.css" />
    		</head>
     
    		<body>
     
    			<div id="content"><xsl:apply-templates select="root/user"/></div>
     
    			<div id="panel">panel</div>
     
    		</body>
    	</html>
     
    	</xsl:template>
     
     
    	<xsl:template match="/root/user">
    		<b><xsl:value-of select="firstname"/></b>
    		<b><xsl:value-of select="lastname"/></b><br />
    		<xsl:value-of select="phone"/><br /><br />
    	</xsl:template>
     
     
    </xsl:stylesheet>

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    si tu veux générer de l'XHTML, tu dois mettre "method=xml" et tu dois aussi changer "doctype-public" et "doctype-system"

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Merci maintenant le code est bien indenté !

    mais il me reste le problème suivant :

    "<b></b>" : <b xmlns="></b>

    il ajoute de façon automatique xmlns aux balise <b></b>

    je sais vraiment pas à quoi c'est du et j'ai bien mis les doctype prix chez le W3C

  4. #4
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Tu as essayé de les virer tes doctypes? temporairement déjà: pour tester si le problème vient de là.
    Cela pose parfois des problèmes de ce genre.
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Discussions similaires

  1. [XSLT] indenter mon code
    Par Merfolk dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/12/2006, 12h15
  2. Réponses: 3
    Dernier message: 17/07/2006, 08h29
  3. le meilleur XSLT processor
    Par aaronw dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/08/2005, 14h26
  4. XSLT -> HTML : formatage : indentation et retour a la lig
    Par jiib75 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 01/05/2004, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo