[php4] classe de création de document xhtml

Soyez le premier à donner votre avis sur cette source.

Vue 13 925 fois - Téléchargée 287 fois

Description

J'ai créé cette classe afin d'éviter de mélanger PHP et HTML et de simplifier l'utilisation du XHTML.
Cette classe essaie comme elle peut de créer un document XHTML 1.0 ou 1.1 W3C valide de façon simple.
Il se peut que votre document ne soit pas valide quand même, lorsque vous utilisez des balises non-XHTML ou des attributs comme "target" qui n'existent plus en XHTML 1.1. (voir la documentation W3C)

L'encodage du document est par défaut UTF-8 et la classe s'occupe toute seule d'encoder le contenu si à la base ce n'est pas de l'UTF-8. Attention : si vous changez le paramètre "encoding" vous obtiendrez de mauvais résultats !

Avec l'utilisation de cette classe votre code pourrait devenir beaucoup plus lisible qu'avant et les risques d'erreurs XHTML (et XML surtout) seront sûrement réduits...

Vous pouvez aussi vous servir de la classe XHTMLElement pour créer des balises indépendantes et les rajouter au document !

Source / Exemple :


<?php

// Exemple d'utilisation :

$Document = new XHTMLDocument();

$Document->setopt('tidy', true);
$Document->setopt('meta-http-equiv', true);
$Document->setopt('title', 'Accueil');

$Document->body(array('id' => 'body'));
	$Document->open('div', array('id' => 'page'));
		$Document->open('div', array('id' => 'top'));
			$Document->add('h1', 'Mon document');
		$Document->close();
		$Document->open('div', array('id' => 'content'));
			$Document->open('p');
				$Document->text('Bienvenue sur mon site ! Explorez les outils de mon répertoire !');
			$Document->close();

			$List = new XHTMLElement('ul', array('id' => 'content-list'));
			$Items = array('C/C++', 'PHP', 'Javascript', 'XHTML', 'AJAX');
			foreach ( $Items as $Str )
				$List->appendChild(new XHTMLElement('li', $Str));
			$Document->add($List);

		$Document->close();
	$Document->close();
$Document->flush();

?>

Conclusion :


J'espère pouvoir vous aider à créer des documents XHTML et à rendre votre code PHP clair sans HTML visible !
Si vous décelez des bugs, laissez un commentaire svp, je fais une correction dès que possible !
Pour la suite j'ai pensé restreindre l'utilisation des balises et des attributs aux règles du w3c... mais ça risque de compliquer sérieusement les choses (il aurait fallu ajouter l'utilisation de die en cas de mauvaise utilisation du xhtml, d'autant plus qu'il existe plusieurs XHTML 1.0 - strict - transitional - frameset - 1.1)...

@+

Codes Sources

A voir également

Ajouter un commentaire Commentaires
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
9 août 2007 à 20:32
requette_qui_contient_du_xhtml et pas Xhtml... si t'ajoutes un systeme de cache, tu verras, ce header, c'est un peu genant de le trouver dans la classe...
ordiman85 Messages postés 41 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 19 mars 2010
9 août 2007 à 19:49
Tout d'abord merci ! J'ai finalement songé à utiliser le DOM de PHP5, or mon hébergeur utilise PHP4, alors je me suis amusé à créer une classe DOM pour PHP4, avec les mêmes méthodes et les mêmes variables ! Quand j'aurai fini je la posterai, je pense que ça promet, malgré une restriction de PHP4 qui interdit d'écrire "$obj->item(0)->node" ! Mais il suffira de placer "$obj->item(0)" dans une variable pour appeler "node"...
J'espère pouvoir ainsi utiliser DOM aussi bien sur PHP5 que sur PHP4 !!

Pour ce qui est du header, c'était volontaire, c'était pour ne pas créer de conflits entre les "Content-Type", "encoding", et aussi pour placer des balises "meta" "http-equiv" qui correspondent aux headers existants. Je n'aurais pas du appeler la classe "XHTMLDocument" mais plutot "XHTML" tout court ou "XHTMLClass" enfin bon...
@+
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 août 2007 à 22:38
:) interessant, j'ai code un truc du genre, mais en beaucoup plus pousse... j'avais recode une interface a la dom la dedans, ca marchait bien, avec des choses specialises pour faire du svg, du xhtml, etc...

considerer que le header fait parti du document, c'est un poil trop pousser les choses... header ca fait parti de la requette, pas du document...
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
5 août 2007 à 20:37
Salut
A premiere vue, l'idee est bonne. Ton code de presentation est sympa, clair et facile a comprendre.
Le code de ta(tes) classe(s) est bien presente, propre et bien commente.
Seul regret (et pas des moindres), tu n'utilises pas DOMXML (php4) ou DOM (php5).
A ce propos, je n'ai pas vu de classes utilisant php 5. Tu utilises bel et bien les classes, mais en php 4, ce qui est plutot dommage. Si tu prends exemples sur le DOM, tu constatera que tu as une ribambelle de classes qui heritent toutes les unes des autres.

Meme si ton code ne sert qu'a creer un document, peut etre y devrait tu inclure une fonction permettant de modifier les elements ? (dans un arbre peut etre, si tu te sens apt a le faire)

En somme, il s'agit ni plus ni moins que d'un moteur de template pas banal du tout :p

Bravo pour l'initiative en tout cas et continue comme sa ;-)

++

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.