français

a/X développement web 2

XHTML est la variante du HTML conforme à la syntaxe XML.

C'est un langage de description de contenu, interprété par le navigateur client.

Il existe sur le web une polémique tenace sur l'opportunité d'utiliser cette spécification plutôt que le HTML 4.0, compte tenu du traitement qui en est fait par les différents navigateurs. Il existe de bons arguments pour les deux positions mais ils se résument en une simple phrase, qui annonce mon choix :

Le XHTML-1.0 offre une syntaxe plus rigoureuse et, s'il est utilisé de manière conforme à la spécification, en particulier l'appendice sur la compatibilité avec le HTML, il apporte une meilleure fondation pour le futur, pour sa compatibilité Ajax en particulier.

Les pages de ce site sont servies comme application/xhtml+xml aux navigateurs capables et comme text/html aux incapables (IE).

Cela n'est pas le cas pour la spécification XHTML-1.1, pour laquelle nous devrons attendre que les principaux navigateurs soient prêts.

Toutes les pages de ce site sont donc XHTML-1.0-strict et c'est toujours le cas quand je n'ai pas de contraintes extérieures.

Dans un site dynamique, certaines parties du code HTML sont générées à la demande par un programme en PHP qui s'exécute sur le serveur. Pour automatiser la création d'un code valide et lisible, j'ai développé une bibliothèque de classe en PHP, HoinP (HTML objects in PHP). Elle permet de séparer les parties qui sont plus facilement écrites avec un éditeur HTML (WYSIWYG ou non), de celles qui sont fabriquées par php.

Exemple :

Note : pour une meilleure efficacité, le code généré par PHP doit être mis en cache, autant que possible. Ce site utilise la gestion de cache du Zend Framework.

views/xhtml_fr.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

	<title>xhtml_fr</title>
	
</head>

<body>
	<p><em>XHTML</em> est la variante du <abbr title="HyperText Markup Language">HTML</abbr> conforme à la syntaxe XML.</p>
	<p>C'est un langage de description de contenu, interprété par le navigateur client.</p>
	<p>Il existe sur le web une polémique tenace sur l'opportunité d'utiliser cette spécification plutôt que le HTML 4.0,
		compte tenu du traitement qui en est fait par les différents navigateurs.
		Il existe de bons arguments pour les deux positions mais ils se résument en une simple phrase, qui annonce mon choix :</p>
	<p>Le XHTML-1.0 offre une syntaxe plus rigoureuse et, s'il est utilisé de manière conforme à la spécification,
		en particulier l'appendice sur la compatibilité avec le <abbr title="HyperText Markup Language">HTML</abbr>, il apporte une meilleure fondation pour le futur,
		pour sa compatibilité Ajax en particulier.</p>
	<p>Les pages de ce site sont servies comme <code>application/xhtml+xml</code> aux navigateurs capables et comme <code>text/html</code> aux incapables (IE).</p>
	<p>Cela n'est pas le cas pour la spécification <code>XHTML-1.1</code>, pour laquelle nous devrons attendre que les principaux navigateurs soient prêts.</p>
<p>Toutes les pages de ce site sont donc <code>XHTML-1.0-strict</code> et c'est toujours le cas quand je n'ai pas de contraintes extérieures.</p>
	<p>Dans un site dynamique, certaines parties du code <abbr title="HyperText Markup Language">HTML</abbr> sont générées à la demande par un programme en <code>PHP</code> qui s'exécute sur le serveur.
		Pour automatiser la création d'un code valide et lisible, j'ai développé une bibliothèque de classe en <code>PHP</code>, <span class="contrib">Ho<sub>in</sub>P</span> (HTML objects in PHP).
		Elle permet de séparer les parties qui sont plus facilement écrites avec un éditeur <abbr title="HyperText Markup Language">HTML</abbr>
		(<abbr title="What You See Is What You Get">WYSIWYG</abbr> ou non), de celles qui sont fabriquées par php.</p>
	<p>Exemple :</p>
	<ul>
		<li><a href="#xhtml_html" onclick="Element.show($('xhtml_html'))">Voir le source XHTML spécifique de cette page.</a></li>
		<li><a href="#xhtml_xhtml" onclick="Element.show($('xhtml_xhtml'))">Voir ce XHTML, avant inclusion dans la page.</a></li>
		<li><a href="#theme_php" onclick="Element.show($('theme_php'))">Voir le <code>PHP</code> qui génère la structure de la page, le menu etc.</a></li>
		<li>Comparer avec le source final affiché par votre navigateur.</li>
	</ul>
	<p><b>Note :</b> pour une meilleure efficacité, le code généré par <code>PHP</code> doit être mis en cache, autant que possible.
		Ce site utilise la gestion de cache du <span class="contrib">Zend Framework</span>.</p>
		
</body>
</html>
	

rendu d'objet HoP

<p><em>XHTML</em> est la variante du <abbr title="HyperText Markup Language">HTML</abbr> conforme à la syntaxe XML.</p>
<p>C'est un langage de description de contenu, interprété par le navigateur client.</p>
<p>Il existe sur le web une polémique tenace sur l'opportunité d'utiliser cette spécification plutôt que le HTML 4.0,
	compte tenu du traitement qui en est fait par les différents navigateurs.
	Il existe de bons arguments pour les deux positions mais ils se résument en une simple phrase, qui annonce mon choix :</p>
<p>Le XHTML-1.0 offre une syntaxe plus rigoureuse et, s'il est utilisé de manière conforme à la spécification,
	en particulier l'appendice sur la compatibilité avec le <abbr title="HyperText Markup Language">HTML</abbr>, il apporte une meilleure fondation pour le futur,
	pour sa compatibilité Ajax en particulier.</p>
<p>Les pages de ce site sont servies comme <code>application/xhtml+xml</code> aux navigateurs capables et comme <code>text/html</code> aux incapables (IE).</p>
<p>Cela n'est pas le cas pour la spécification <code>XHTML-1.1</code>, pour laquelle nous devrons attendre que les principaux navigateurs soient prêts.</p>
<p>Toutes les pages de ce site sont donc <code>XHTML-1.0-strict</code> et c'est toujours le cas quand je n'ai pas de contraintes extérieures.</p>
<p>Dans un site dynamique, certaines parties du code <abbr title="HyperText Markup Language">HTML</abbr> sont générées à la demande par un programme en <code>PHP</code> qui s'exécute sur le serveur.
	Pour automatiser la création d'un code valide et lisible, j'ai développé une bibliothèque de classe en <code>PHP</code>, <span class="contrib">Ho<sub>in</sub>P</span> (HTML objects in PHP).
	Elle permet de séparer les parties qui sont plus facilement écrites avec un éditeur <abbr title="HyperText Markup Language">HTML</abbr>
	(<abbr title="What You See Is What You Get">WYSIWYG</abbr> ou non), de celles qui sont fabriquées par php.</p>
<p>Exemple :</p>
<ul>
	<li><a href="#xhtml_html" onclick="Element.show($('xhtml_html'))">Voir le source XHTML spécifique de cette page.</a></li>
	<li><a href="#xhtml_xhtml" onclick="Element.show($('xhtml_xhtml'))">Voir ce XHTML, avant inclusion dans la page.</a></li>
	<li><a href="#theme_php" onclick="Element.show($('theme_php'))">Voir le <code>PHP</code> qui génère la structure de la page, le menu etc.</a></li>
	<li>Comparer avec le source final affiché par votre navigateur.</li>
</ul>
<p><b>Note :</b> pour une meilleure efficacité, le code généré par <code>PHP</code> doit être mis en cache, autant que possible.
	Ce site utilise la gestion de cache du <span class="contrib">Zend Framework</span>.</p>
	

views/theme.php

<?php

// génération page
// require_once 'hop/hop.php';

$page = Hop_page::factory(array('title' =>"a/X : {$tr->_("développement web 2")} - {$tr->_($sujet)}", 'lang' => $session->lang));

$page->head->add($hop->meta('keywords')->auto_name()->set_attr('content', $tr->_("développement web, indépendant, web2, web 2, xhtml, php, javascript, ajax, jquery, prototype, mysql")));
$page->head->add($hop->link('feuille_style')->auto_id()
	->set_rel('stylesheet')->set_type('text/css')->set_media('screen')->set_href('views/a_x.css'));

$page->head
	->add($hop->link()->rel('alternate')->type('text/html')->hreflang('fr')->href('?lang=fr')->title('français'))
	->add($hop->link()->rel('alternate')->type('text/html')->hreflang('en')->href('?lang=en')->title('English'))
	->add($hop->script()->set_type('text/javascript')->set_src('lib_js/prototype.js'))
	->add($hop->script()->set_type('text/javascript')->set_src('lib_js/effects.js'))
	->add($hop->script()->set_type('text/javascript')->set_src('lib_js/dragdrop.js'))
	->add($hop->script()->set_type('text/javascript')->set_src('js/a_x.js'))
	->add($hop->script()->set_type('text/javascript')->set_src('js/ajax_menu.js'))
;

//SVG vector image
//commented out : Safari is the only browser to display and scale
// $page->body->add($hop->object('fond_logo')->auto_id()
// 	->set_type('image/svg+xml')
// 	->set_data('views/logo.svg')
// 	);

//titre page
$page->body
	->add($hop->p($hop->a($tr->getLocale() == 'en' ? 'français' : 'English')->set_href($tr->getLocale() == 'en' ? '?lang=fr' : '?lang=en'), 'lang')->auto_id())
	->add($hop->h1('<span class="a_X">a/X</span> ' . $tr->_("développement web 2"),'titre_page')->auto_id())
	;

// menu
$menu = Hop_menu::factory(array(
	'id' => 'menu_g',
	'page' => $page,
	'css' => 'views/hop_menu_IE6.css',
	'items' => array(
		'accueil' => $hop->a($tr->_("accueil"))->set_href('accueil.html'),
		'contributions' => $tr->_("contributions"),
		'web2' => $hop->a("Ajax, web 2")->set_href('web2.html'),
		'xhtml' => $hop->a("XHTML")->set_href('xhtml.html'),
		'css' => $hop->a("CSS")->set_href('css.html'),
		'javascript' => $hop->a("JavaScript")->set_href('javascript.html'),
		'php' => $hop->a("PHP")->set_href('php.html'),
		'zend' => $hop->a("Zend framework")->set_href('zend.html'),
		'mvc' => $hop->a("MVC")->set_href('mvc.html'),
		'mysql' => $hop->a("MySQL")->set_href('mysql.html'),
		'i18n' => $hop->a("i18n")->set_href('i18n.html'),
		'spip' => $hop->a("CMS, SPIP")->set_href('spip.html')
		)))
	->sub_menu(Hop_menu::factory(array(
		'id'=>'logiciels',
		'items' => array(
			'hop' => $hop->a("Ho<sub>in</sub>P")->set_href('hop.html'),
			'menus' => $hop->a($tr->_("menus en CSS"))->set_href('menus.html')
			)))
	, 'contributions')
	->auto_id()
	;
$hop->pool()->$sujet->add_class('actif'); //pool access for submenu items
$page->head->hop_menu->auto_id(); //for javascript vivibility
//menu div
$page->body->add($hop->div('menu')->auto_id()->add($menu));

// subject zone
$page->body->add($hop->div('travail')->auto_id()->add(include('cache_sujet.php')));

//footer
$page->body->add($hop->p('<a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10-blue" alt="Valid XHTML 1.0 Strict" height="15" width="44" /></a>')
	->set_class('pied'));

// return as object
return $page; 

?>
	

Valid XHTML 1.0 Strict