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>