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 :
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 $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);
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>
Partager