[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:
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:
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:
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> |