Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASSE DOMDOCUMENT COMPATIBLE PHP4 ET PHP5


Information sur la source

Catégorie :Xml Classé sous : dom, php4, domdocument, domxml, xslt Niveau : Débutant Date de création : 15/08/2007 Date de mise à jour : 29/12/2008 14:29:46 Vu / téléchargé: 14 902 / 294

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


Description

Comme je l'ai promis et suite à ma source de création de document XHTML, j'ai concocté une classe DOM pour php4 et php5.
L'idée était de créer un site qui utilise DOM pour générer ses pages mais tout en étant compatible php4 et php5 afin de pouvoir être hébergé par la quasi-totalité des hébergeurs mutualisés !
Cependant il faut l'extension DOM XML de php4 qui n'est peut-être pas présente partout.

Pour que le script fonctionne, il faut juste remplacer "new DOMDocument" par "new _DOMDocument". Euh simple, nan ?
Bon voilà ! Le script est à améliorer puisque certains paramètres ne collent pas, par exemple je n'arrive pas à placer un doctype au DOMDocument, un vrai casse-tête !!!
 

Source

  • <?php
  • // Exemple d'utilisation 1
  • require_once("DOM.inc.php");
  • header("Content-Type: text/html");
  • $doc = new _DOMDocument();
  • $root = $doc->createElement('html');
  • $root = $doc->appendChild($root);
  • $head = $doc->createElement('head');
  • $head = $root->appendChild($head);
  • $title = $doc->createElement('title');
  • $title = $head->appendChild($title);
  • $name = $doc->createTextNode('Ceci est le titre');
  • $name = $title->appendChild($name);
  • $body = $doc->createElement('body');
  • $body = $root->appendChild($body);
  • $page = $doc->createElement('div');
  • $page->setAttribute('id', 'page');
  • $page = $body->appendChild($page);
  • $content = $doc->createTextNode('Voici un exemple de document fabriqué avec DOM !');
  • $content = $page->appendChild($content);
  • echo $doc->saveXML();
  • // Et cela donne :
  • ?>
  • <?xml version="1.0"?>
  • <html><head><title>Ceci est le titre</title></head><body><div id="page">Voici un exemple de document fabriqué avec DOM !</div></body></html>
  • <?php
  • // ------------------------------------------------------------
  • // Exemple d'utilisation 2
  • require_once 'DOM.inc.php';
  • // Chargement local
  • $xslDoc = new _DOMDocument();
  • $xslDoc->load("collection.xsl");
  • // Chargement statique
  • $xmlDoc = _DOMDocument::load("collection.xml");
  • // Processeur XSL
  • $proc = new XSLTProcessor();
  • $proc->importStylesheet($xslDoc);
  • echo $proc->transformToXML($xmlDoc);
  • ?>
<?php

// Exemple d'utilisation 1

require_once("DOM.inc.php");

header("Content-Type: text/html");

$doc = new _DOMDocument();
$root = $doc->createElement('html');
$root = $doc->appendChild($root);
	$head = $doc->createElement('head');
	$head = $root->appendChild($head);
		$title = $doc->createElement('title');
		$title = $head->appendChild($title);
			$name = $doc->createTextNode('Ceci est le titre');
			$name = $title->appendChild($name);
	$body = $doc->createElement('body');
	$body = $root->appendChild($body);
		$page = $doc->createElement('div');
		$page->setAttribute('id', 'page');
		$page = $body->appendChild($page);
			$content = $doc->createTextNode('Voici un exemple de document fabriqué avec DOM !');
			$content = $page->appendChild($content);
echo $doc->saveXML();

// Et cela donne :

?>
<?xml version="1.0"?>
<html><head><title>Ceci est le titre</title></head><body><div id="page">Voici un exemple de document fabriqué avec DOM !</div></body></html>
<?php


// ------------------------------------------------------------

// Exemple d'utilisation 2

require_once 'DOM.inc.php';

// Chargement local
$xslDoc = new _DOMDocument();
$xslDoc->load("collection.xsl");

// Chargement statique
$xmlDoc = _DOMDocument::load("collection.xml");

// Processeur XSL
$proc = new XSLTProcessor();
$proc->importStylesheet($xslDoc);
echo $proc->transformToXML($xmlDoc);

?>

Conclusion

Quelques améliorations ont été apportées... Bon développement !
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

29 décembre 2008 14:29:46 :
| Ajout de la classe XSLTProcessor. | Possibilité d'appeler load, loadXML, loadHTMLFile, loadHTML en statique depuis _DOMDocument. | _DOMDocument::createElement() accepte l'argument $value (merci DoudouBidou). | Bug corrigé sur _domxmlelement::normalize(), la méthode tagname() n'existe pas toujours.

Commentaires et avis

signaler à un administrateur
Commentaire de coucou747 le 16/08/2007 00:12:45

tu peux en profiter pour faire en sorte que le code produit soit indente, du coup, c'est vraiment pas complique :)

moi j'avais pas fait $doc->CreateElement(, trouvant que cette facon de proceder etait certe interessante, mais trop peu souple si tu veux abstraire certaines choses, comme un champ de formulaire, tu aurais envie d'en faire un objet afficheable, donc : $a=new FormInputChose(); mais $doc->appendChild($a);

apres, c'est assez impressionnant, le respect du mode de fonctionnement DOM, t'es vraiment alle tres tres loin :)

passe ca au moins en initie...

ouais, j'ai lu le code, je n'ai pas teste (ayant une source comparable, je ne fais que comparer les codes...), joli travail en tout cas :)

tu devrais oublier php4, php5 est la depuis deja longtemps, il est meme passe sur la debian stable, alors bon :)

allez, c'est rare, mais je vais mettre 10/10

signaler à un administrateur
Commentaire de DoudouBidou le 23/06/2008 09:34:06 9/10

C'est exactement ce dont j'avais besoin, mon serveur de test étant en PHP5 alors que mon serveur de prod est encore en PHP4.
Par contre j'ai modifié légèrement ton script car il y avait un oubli, en effet createElement() accepte un paramètre value.
Ci-dessous la modif ligne 340

function _domxmlelement(&$doc, $name = null, $value = null) {
parent::_domxmlnode($doc, $name);
if ($value){
  $val = $doc->createTextNode($value);
  $this->appendChild($val);
}
}

signaler à un administrateur
Commentaire de abys le 04/09/2008 22:53:30

tu fais comment pour rechercher les liens d une page dans le but de modifier le href ?
merci

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

pb domxml [ par djcal007 ] salut, j'ai un probl&#232;me pour ajouter,gr&#226;ce &#224; domxml, de nouveaux noeuds : voila mon fichier xml: &lt;?xml version="1.0"?&gt; &lt;root& Sockets [ par slhuilli ] Bonjour1. Quelqu'un aurait il un exemple SIMPLE d&#233;pouill&#233; de toutes lignes inutiles (ou alors bien comment&#233;es) pour utiliser les socket Dom XML [ par syndrael ] Bonjour Puis faire du DOM XML sous Linux ? Mon code sera-t-il 100% compatible avec celui de mon site ki tourne sous Windows ? Merci de me rassurer. S pb avec les accents lors de la génération d'un flux RSS(fichier xml) en utilisant domxml [ par maurimaure ] Bonjour, J'ai essay&#233; de g&#233;n&#233;rer un flux RSS&nbsp; en utilisant domxml, Mais j'ai un gros souci, mon navigateur se bloque sur les accen Migration PHP4 a PHP5 [ par laetitiadf ] Bonjour,j'essaye de migrer la version 4.3 de php vers la version 5 mais quand j'execute le php.exe il me dis qu'il ne trouve pas mmcache.dll alors qu' variable $_SERVER PHP4->PHP5 [ par aurelie_devplus ] Bonjour, Je programme en PHP (intranet) pour une entreprise depuis un petit moment. Sur mon serveur intranet, j'ai Apache 2.0 et PHP 4.3. Je me sers Générateur de chaine de date pour la fonction Date() php4 [ par MaX3315 ] Je viens de post&#233;e une source javascript ici : http://www.javascriptfr.com/code.aspx?ID=34855Il s'agit d'une interface g&#233;n&#233;rant les cha camembert en php4 [ par niko14 ] Une question les gars .et les filles.!! je voudrais faire un camembert sur un site sur lequel je travaille mais je travaille sou sphp4 est ce possible DOMXML et les fils ... [ par Teclis01 ] Bonjour ! Voila j ai eu un petit soucis et j ai trouv&#233; une solution mais ... elle est vraiment pas jolie jolie ^^ Alors voila ... qd je fais un g XML == MySQL ? [ par Teclis01 ] Bonjour, Je me suis lanc&#233; il y a peu dans la classe DOM XML mais il y a quelqques chose qui me parait vraiment etrange ...J'ai entendu dire et me


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.