Classe domdocument compatible php4 et php5

Soyez le premier à donner votre avis sur cette source.

Vue 19 355 fois - Téléchargée 538 fois

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 / Exemple :


<?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 !

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
39
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
25 août 2009

Franchement j'ai vu l'arrivé de cette class ! Comme l'arrivé du Messi !
Je me voyais déja re-coder une class d'export.... et comme je suis féniant !
Messages postés
77
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
29 juillet 2010

tu fais comment pour rechercher les liens d une page dans le but de modifier le href ?
merci
Messages postés
102
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
23 juin 2008
4
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);
}
}
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.