samedi 30 janvier 2016

A propos de DMOZ





A propos de DMOZ

DMOZ est le plus grand répertoire, de l'homme-édité le plus complet du Web. Il est développé et maintenu par une passionnée communauté mondiale d'éditeurs bénévoles. Il a été historiquement connu comme l'Open Directory Project (ODP).

La République du Web

Le Web continue de croître à un rythme vertigineux. Les moteurs de recherche sont de plus en plus automatisés incapable de tourner jusqu'à des résultats utiles aux requêtes de recherche. Les petites rédactions payé au sites d'annuaires commerciaux ne peuvent pas suivre le rythme de soumissions, et la qualité et l'exhaustivité de leurs répertoires a souffert. Vérification des liens et ils ne peuvent pas suivre le rythme de la croissance de l'Internet.

Au lieu de combattre la croissance explosive de l'Internet, DMOZ fournit les moyens de l'Internet de se syndiquer. Comme l'Internet se développe, donc faire le nombre de net-citoyens. Ces citoyens peuvent chacun organiser une petite partie de la bande et de le présenter vers le reste de la population, l'abattage sur le mauvais et inutile et ne garder que le meilleur contenu.

Le catalogue définitif du Web

DMOZ suit les traces de certains des plus importants projets de l'éditeur / contributeur du 20e siècle. Tout comme le Oxford English Dictionary est devenu le mot définitif sur les mots à travers les efforts des bénévoles, DMOZ suit ses traces pour devenir le catalogue définitif du Web.

DMOZ a été fondée dans l'esprit du mouvement Open Source, et est le seul répertoire majeur qui est 100% gratuit. Il n'y a pas, il n'y en aura jamais être, un coût de soumettre un site dans l'annuaire, et / ou d'utiliser les données de l'annuaire. Les données DMOZ est mis gratuitement à toute personne qui accepte de se conformer avec notre licence d'utilisation libre.

Le cerveau de l'Internet

DMOZ est la base la plus largement distribuée de données de contenu Web classés par les humains. Son corps normes de rédaction de net-citoyens fournir le cerveau collectif derrière la découverte de ressources sur le Web. DMOZ pouvoirs sur les services de répertoire de base pour les plus grands et les plus populaires moteurs de recherche et les portails du Web, y compris Netscape Search, AOL Search, Google, Lycos, HotBot, DirectHit, et des centaines d'autres.

Tu peux faire la différence

Comme toute communauté, vous obtenez ce que vous donnez. DMOZ est l'occasion pour chacun de contribuer.

L'inscription est facile: choisissez un sujet que vous savez quelque chose sur et joignez. Modification catégories est un clin d'œil. Nous avons un ensemble complet d'outils pour ajouter, supprimer, mettre à jour et des liens en quelques secondes. Pour seulement quelques minutes de votre temps, vous pouvez aider à faire du Web un endroit meilleur, et être reconnu comme un expert sur ​​le thème choisi.

Rejoignez DMOZ

Trouver une catégorie que vous souhaitez conserver.
Suivez le devenir éditeur lien en haut de la page de la catégorie.
Notez que certaines catégories ne disposent pas d'un un éditeur Devenir lien; vous devriez trouver une catégorie plus spécifique qui vous intéresse, et appliquer là. Une fois que vous avez rejoint, et acquis une certaine expérience, vous pouvez demander plus de catégories générales.

Informations complémentaires

FAQ générale - Vous voulez plus d'info? Découvrez quelques FAQ générales sur nous dans notre zone d'Aide.
Sites Utilisation DMOZ données - Catégorie liste de tous les sites, les moteurs de recherche, portails, etc., en utilisant la décharge DMOZ RDF.
DMOZ dans la Nouvelles et médias - News, articles et autres rapports sur DMOZ.
Lier à DMOZ - Montrez votre soutien de la DMOZ en reliant à nous de votre site.
Téléchargement DMOZ données - obtenir le répertoire définitif du Web pour votre site. Il est gratuit et accessible à tous.
Licence d'utilisation gratuite - Licence utilisation de gouvernance des données DMOZ.
Contrat social - Notre engagement et la promesse de tous les citoyens du Net à garder DMOZ une ressource gratuite et ouverte.

Pourquoi utiliser un logiciel de gestion de version




Pourquoi utiliser un logiciel de gestion de version
lundi 14 mai 2007, par Nicolas
Un développeur est souvent amené à utiliser un logiciel de gestion de version pour ses projets. Pourtant c’est un outil très puissant qui peut servir à bien d’autres choses.

Qu’est-ce qu’un logiciel de gestion de version ?

Il s’agit d’un logiciel qui permet de suivre les différentes versions d’un ensemble de fichiers. Il permet de retrouver un ou des fichiers tels qu’ils étaient à une date donnée. C’est, en résumé, un logiciel qui garde un historique de l’évolution du fichier.

Ces logiciels permettent, quand il s’agit de fichiers texte [1], de voir les modifications (ajout, suppression, changement) entre différentes versions des fichiers, de savoir qui a modifié, etc. Pour un fichier binaire, le logiciel se contente de garder les différentes versions, sans être capable de dire les modifications [2].

Plus précisément, le développeur demande manuellement, et aussi souvent qu’il le désire, au logiciel de gestion de version de stocker l’état de ses fichiers à un instant donné, lui permettant de revenir à cette version à tout moment.

Pour les utilisateurs connaissant un logiciel tel que Microsoft Word (c), un logiciel de gestion de version est similaire au contrôle de révisions que le traitement de texte offre [3].

Pourquoi utiliser un tel logiciel, et quelles sont ses fonctionnalités majeures ?

La première utilisation est bien sûr de garder une trace des modifications. C’est un point très important :
- il est possible de faire de nombreuses modifications sur les fichiers, puis de tout annuler pour revenir à une version précédente sans avoir besoin de tout annuler manuellement, ou de garder une copie des fichiers originaux, ...
- le logiciel de gestion de version permet de suivre l’historique, qui a modifié quoi, quand. La plupart de ces logiciels permettent d’entrer un commentaire au moment de sauver l’état des fichiers. Associé à la liste, générée automatiquement, des fichiers modifiés, ceci permet de suivre la vie d’un logiciel.

Le logiciel de gestion de version permet également de faciliter le travail entre plusieurs personnes. Chaque développeur travaille sur une copie des sources sur son propre ordinateur, puis quand il juge que sa version est correcte, il la transmet au logiciel de gestion de version, qui centralise les modifications. Les autres développeurs peuvent alors récupérer depuis cette base centrale la dernière version des fichiers.

Il existe deux philosophies par rapport au travail collaboratif :
- soit les développeurs travaillent en mode « exclusif », c’est-à-dire qu’une seule personne à la fois peut modifier un fichier donné
- soit les développeurs modifient arbitrairement n’importe quel fichier, et le logiciel de gestion de version s’occupe de fusionner automatiquement les différentes modifications. Si la fusion automatique n’est pas possible (deux personnes ont modifié une même zone d’un fichier de façon différente et non compatible), il est nécessaire qu’un développeur résolve à la main les conflits de modification [4].

Les deux philosophies ont des points positifs et négatifs. La première évite les conflits de modification puisqu’une seule personne peut modifier un fichier ; en revanche elle peut parfois forcer un développeur à attendre qu’un autre ait fini de travailler sur un fichier pour pouvoir continuer. La deuxième approche est plus souple car elle permet de modifier sans restriction ni délai ; par contre elle demande une coordination entre les développeurs pour qu’ils ne modifient pas le même endroit en même temps [5].

Une fonctionnalité importante d’un logiciel de gestion de version est la possibilité de créer des « branches ». Cette fonctionnalité permet d’avoir plusieurs versions en parallèle des fichiers.

Ainsi, le projet Crossfire, auquel je participe, a deux branches :
- la branche « 1.x » correspond à la version 1.10 du logiciel distribuée publiquement
- la branche « trunk » comprend la version en cours de développement qui sera la future version 2.

Après la distribution de la version 1.10, plusieurs bugs ont été signalés, et corrigés. Les corrections ont eu lieu sur la branche « 1.x », qui donnera lieu, lorsque suffisamment de bugs auront été corrigés, à la version 1.11.

Simultanément, un travail de fond de modification a eu lieu sur la branche « trunk ». Cette branche est considérée expérimentale, et c’est sur elle que les efforts majeurs de développement ont lieu, que la plupart des nouvelles fonctionnalités sont rajoutées. Les corrections apportées sur la branche « 1.x » sont, si applicables, dupliquées sur cette branche.

Lorsque la branche « trunk » sera considérée stable, la branche « 1.x » sera abandonnée sauf pour corrections de bugs majeurs.

Deux versions des fichiers cohabitent donc, chacune ayant son utilité, l’une pour avoir une version distribuable à tout instant et l’autre pour expérimenter.

À quoi peut servir un tel logiciel pour un non développeur ?

Même si c’est à l’origine un outil destiné aux développeurs, un logiciel de gestion de version peut parfaitement être utilisé par un non développeur.

Le premier avantage est qu’une copie des fichiers gérés par le logiciel est disponible dans un emplacement centralisé. Ceci permet de facilement faire une sauvegarde des données — il suffit de copier le répertoire central. De plus même si un fichier est effacé par erreur il est possible d’en récupérer une version depuis le logiciel de gestion de version.

Le deuxième avantage est l’historique offert. Pour des documents souvent modifiés, pouvoir revenir à un point arbitraire dans le passé est un énorme avantage.

Bien sûr, utiliser un tel logiciel impose une certaine discipline, à savoir transmettre régulièrement au logiciel de gestion de versions les modifications effectuées sur les documents. Cependant les gains sont probablement suffisants pour s’imposer cette contrainte sans trop de difficultés.

Utiliser un logiciel de version nécessite également d’avoir un peu plus d’espace disque disponible, puisqu’un fichier existe en différentes versions, occupant de la place sur le disque. Mais avec les capacités actuelles de stockage, ce n’est pas vraiment une difficulté — enfin, vouloir gérer des versions de films en haute définition poserait certainement des soucis !

Exemple d’application de la gestion de versions

Un exemple d’application de gestion de versions est disponible l’encyclopédie Wikipédia. En effet, chaque article a un historique intégral depuis sa création, comprenant toutes les modifications jamais effectuées [6]. Il est possible de visualiser les changements apportés entre deux versions arbitraires, de revenir à des versions antérieures, ...

De plus plusieurs personnes peuvent modifier le même article simultanément, avec un conflit uniquement si la même zone a été modifiée de façon incompatible.

Même si le mécanisme est peu visible pour le contributeur, il s’agit bel et bien d’un système de gestion de version.

Mise à jour le 04/05/2011 : petit article sur Git, outil de contrôle de sources.

[1] Il est coutume de distinguer les fichiers ou formats dits texte — qui ne contiennent que des caractères alphanumériques ou symboles — qui peuvent être simplement affichés, et les fichiers dits binaires qui nécessitent un programme pour être visualisés. Ainsi une image est un fichier binaire, alors que par exemple un mail est en format texte — il contient parfois des « tags » qui permettent d’indiquer l’italique, le gras, ..., mais ces tags eux-mêmes sont en format texte, et peuvent être lus sans logiciel spécial si besoin.

[2] Se contenter de repérer les modifications d’une image entre deux versions ne serait pas forcément une tâche insurmontable, mais pour par exemple un film cela n’aurait pas beaucoup de sens.

[3] À noter qu’un document Word n’est pas un document texte, mais bien un fichier binaire. Les données de mise en forme (gras, italique, tableaux, ...) sont stockées sous format complexe illisible sans logiciel spécialisé. Cependant les dernières versions peuvent aussi utiliser un format dit XML, qui lui devrait être, si j’ai bien compris, en format texte un peu plus simple à interpréter sans logiciel spécial.

[4] La plupart des logiciels travaillent sur un mode de modification ligne à ligne, avec une certaine zone autour. En général, les conflits ont lieu uniquement si la même ligne est modifiée par deux développeurs simultanément, les algorithmes des logiciels étant assez puissant pour fusionner les modifications.

[5] Un argument en faveur de cette méthode est que « si deux développeurs modifient en même temps la même zone d’un fichier, ils ont un problème de communication, ce qu’aucun logiciel de gestion de version ne peut résoudre. »

[6] Il est possible de totalement supprimer des versions, cependant c’est une fonctionnalité uniquement utilisée pour purger les modifications de type spam, ou requises pour raisons légales.



290 recettes pour les programmeurs en PHP




Résultats de recherche
PHP en action - Résultats Google Recherche de Livres

https://books.google.fr/books?isbn=2841772314
David Sklar, ‎Adam Trachtenberg - 2003
1 290 recettes pour les programmeurs en PHP O'REILLY' David Sklar & Adam Trachtenberg Traduction de Alexandre Cachet PHP en action Traduction de ...
Cherche Bouquin PHP et MySQL - Invision Board France

www.invisionboard.fr › ... › Discussions Diverses › Divers
2 oct. 2003 - 4 messages - ‎2 auteurs
Cherche Bouquin PHP et MySQL - posté dans Divers : Hello ! ... "PHP en Action" (290 recettes pour les programmeurs en PHP) editeur : O' ...
PHP en action - Solutions et exemples pour les développeurs PHP ...

www.developpez.net › Index du forum › PHP › Langage › Livres
5 août 2015 - PHP en action Solutions et exemples pour les développeurs PHP PHP est le principal ... Avec PHP en action, vous trouverez un recueil de 290 recettes, prêtes à ...
Quels cours ou tutoriels souhaiteriez-vous voir paraître dans la ... 10 sept. 2015
compiler un programme Python pour accélérer son exécution ... 1 juin 2014
Conseil jeune diplomé : quel métier ? - Page 2 - Forum du club des ... 31 mai 2013

Autres résultats sur www.developpez.net
PHP en action - Google Books

books.google.fr/books/about/PHP_en_action.html?id=YopOCr3iwegC
Le langage open source PHP brille par sa souplesse pour l'écriture de scripts et ... aux problèmes les plus fréquents auxquels se heurtent les programmeurs web. ... PHP en action présente 290 recettes classées en fonction de leur complexité ...
BeL-Inra Bibliothèques en Ligne à l'Inra

https://belinra-test.inra.fr/index.php?lvl=publisher_see...l...
Document: ouvrage Pratique de MySQL et PHP / P. Rigaux (2001) ... PHP en action (290 recettes pour les programmeurs en PHP) / D. Sklar (2003). Permalink.
Domotique avec une CP 290 sur Excel - Cuisine facile
cuisine-facile.com › Les pages › Bricolage › Divers
Note : 3 - ‎54 avis
21 déc. 2009 - Accueil; Les recettes ... Si vous utilisez une interface CP 290 pour faire un peu de domotique et par exemple réguler ... de la documentation de référence CP290 pour les programmeurs disponible sur le site de SmartHome.
Formats and Editions of PHP cookbook [WorldCat.org]

libcat.calacademy.org/.../editions?...desc...
Traduire cette page
PHP cookbook : solutions & examples for PHP programmers by David Sklar ... PHP en action : [290 recettes pour les programmeurs... by David Sklar.
Java EE 5: 3e édition - Page ii - Résultats Google Recherche de Livres

https://books.google.fr/books?isbn=2212145810
Antonio Goncalves - 2011 - ‎Computers
Collection « Les cahiers du programmeur » F. Potencier. – Symfony. ... Bien développer en PHP. N°12392 ... PHP 5. N°11234, 2004, 290 pages. Collection « Les cahiers de l'Admin » r. HertzoG, r. ... Les meilleures recettes pour bien débuter.
Livres PHP : Livres en français - Developpez.com

php.developpez.com › PHP › Livres
18 déc. 2015 - Les meilleurs livres PHP. ... PHP/MySQL et JavaScript - Les cahiers du Programmeur · Dynamisez PHP 5 - Utilisez des extensions PHP pour ...
PHP EN ACTION: Amazon.ca: DAVID SKLAR, ADAM ...

www.amazon.ca › ... › Web Development › Programming › PHP
PHP est l'un des langages de script les plus populaires sur Internet. ... Avec PHP en action, vous trouverez un recueil de 290 recettes, prêtes à l'emploi, qui ... David Sklar est programmeur free-lance et consultant en stratégie technologique.


jeudi 28 janvier 2016

29 EXEMPLES DE CODE WLANGAGE (L5G)



29 EXEMPLES DE CODE WLANGAGE (L5G)

Cette page présente quelques exemples de code WLangage.

Voila à quoi ressemble du code L5G !
(et n'oubliez pas que pour de nombreuses fonctions, il est inutile de coder, il suffit de cliquer sur les choix proposés par l'IDE; ces exemples illustrent juste le langage).



Exemple 1 : Scan d'un document


// Enregistre le document présent dans le scanneur dans le fichier
"MaPhoto.JPEG"
// Le document sera enregistré en noir et blanc
SI TwainVersJPEG("C:\Temp\MaPhoto.JPEG", 0, Faux, TwainNoirBlanc) = Vrai ALORS
Info("Le document a été enregistré")
SINON
Erreur("Le document n'a pas été scanné")
FIN



Exemple 2 : Lecture d'une clé de registre


// Lit la valeur "Langage" dans la clé "HKEY_LOCAL_MACHINE\SOFTWARE\Appli"
// Le booléen ResExécute permet de savoir si la valeur a été lue
ResLecture = RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\Appli", "Langage", ResExécute)

SI ResExécute = Vrai ALORS
Info("La valeur a été lue et vaut : " + ResLecture)
FIN



Exemple 3 : Sélection d'une couleur


Valeur est un entier
RésultatSélection est un booléen

Valeur = RVB(10, 17, 69)
Info("Couleur de départ : " + Valeur)
RésultatSélection = SelectCouleur(Valeur, scInit)
Info("Couleur d'arrivée : " + Valeur)


Exemple 4 : Calcul du nombre de jours entre 2 dates


// Affiche le nombre de jours écoulés depuis le 01/01/1998
Info(NumériqueVersChaîne(DateDifférence("19980101", DateSys())) + " jours écoulés")



Exemple 5 : Extraction d'une partie de chemin de fichier


// Récupèration du nom du fichier
ResNomFichier = fExtraitChemin("C:\MesRépertoires\Fichier.doc", fFichier)
// fExtraitChemin renvoie "Fichier"



Exemple 6 : Phonétique d'une chaîne


// Comparaison de deux chaînes de caractères
Phonétique("volant") = Phonétique("volent")


Exemple 7 : Envoi d'un email


SI EmailOuvreSession(USER, PASSWORD, "pop3.ifrance.fr", "smtp.ifrance.fr") = Vrai ALORS
NomUser = USER
SINON
NomUser = ""
Erreur("Impossible d'établir la connexion")
FIN

// Initialise les composantes du mail
Email.Expéditeur = "" // L'expéditeur
Email.Destinataire[1] = DESTINATAIRE // Le destinataire
Email.NbDestinataire = 1 // Le nombre de destinataires
Email.Sujet = SUJET // Le sujet
Email.Message = TEXTE // Le corps du message
Email.NbAttache = 0 // Le nombre de pièces attachées

// Envoie le mail
SI EmailEnvoieMessage(NomUser) = Faux ALORS
Erreur()
FIN


Exemple 8 : Ajout d'une icône dans le systray


// Ajout de l'icône "C:\Icones\Icone.ICO" dans la barre des tâches
ResAjoutIcone = SysIconeAjoute("C:\Icones\Icone.ICO", "", "Ventes 2013")



Exemple 9 : Sauvegarde d'une hard copie


// Sauve en mémoire l'image présente dans "IMG_ImageDessin"
ResSauvegarde = dSauveImageJPEG(IMG_ImageDessin, enMémoire)



Exemple 10 : Exemple de déclaration de variables


// Déclaration de variables
Valeur est un entier
RésultatSélection est un booléen
Prix est un réel
i,j,k sont des entiers


Exemple 11 : Interaction Code / Interface


// Exécute le traitement de clic sur un bouton
ExécuteTraitement(BTN_Sauve, trtClic)



Exemple 12 : Gestion des Thread par programme


// Exécution d'un thread avec passage de paramètres
sDate est une chaîne
sDate = DateSys()
// Exécution du thread
ThreadExécute("THREADNAME", threadNormal, "pExecReq", sDate)

// Détail de la procédure "pExecReq" qui attend une date en paramètre d'une requête
PROCEDURE pExecReq(sDate)
SI HExécuteRequête(Sup_Date, hRequêteDéfaut, sDate) = Faux ALORS
Erreur(HErreurInfo())
SINON
HLitPremier(Sup_Date)
FIN



Exemple 13 : Aperçu avant impression


// Suppression des boutons Email de l'aperéu avant impression
iParamètreAperéu(iBoutonTous - iBoutonEmail - iBoutonEmailPdf)
iAperéu()
iImprimeEtat(ETAT_MonEtat)



Exemple 14 : Impression en HTML


// Impression dans un fichier HTML d'un état basé sur une requête sans paramètre
// Générer un nom de fichier unique
MonFichierEtat est une chaîne = fRepWeb() + "\" + "EtatRequête_" + DateSys() + HeureSys() + ".htm"
// Paramètrer la destination de l'impression
iDestination(iHTML, MonFichierEtat)
// Imprimer l'état ETAT_EtatRequête
iImprimeEtat(ETAT_EtatRequête)
// Extraire le nom et l'extension du fichier généré
NomFichierGénéré est une chaîne = fExtraitChemin(MonFichierEtat, fFichier + fExtension)
// Envoyer le fichier dans le navigateur
PageAffiche(NomFichierGénéré)



Exemple 15: Génération d'un fichier PDF


// Générer un nom de fichier PDF unique
UnFichier est une chaîne
UnFichier = fRepWeb() + "\" + DateSys() + HeureSys() + ".pdf"
// Paramètrer la destination de l'impression
iDestination(iPDF, UnFichier)
// Imprimer l'état ETAT_FacturePDF
iImprimeEtat(ETAT_FacturePDF)
// Envoyer le fichier dans le navigateur
FichierAffiche(UnFichier, "application/pdf")
// Supprimer le fichier
fSupprime(UnFichier)


Exemple 16 : Protection d'un fichier PDF


// Dans cet exemple le mot de passe est donc "motdepasse"
iParamètrePDF("ouverture", "motdepasse", iProtectionImpression + iProtectionSélection)

// Création du PDF
iAperéu(iPDF, "MonPDF.PDF")

// Code d'impression
iCréePolice(1, 16, iGras, iRoman)
iImprimeMot("Première ligne de mon PDF" + RC + "Seconde ligne de mon PDF" + RC + "Dernière ligne de mon PDF")

// Fin de l'impression et fermeture du fichier PDF cr
iFinImprime()

// Affichage du PDF
LanceAppliAssociée(iDernierFichier())



Exemple 17 : Sélection d'une imprimante PCL (mobile)


// Imprimante PCL à utiliser
iDestination(iPCL, "\\MonRéseau\MonImprimante")



Exemple 18 : Impression au format PCL (mobile)


iDestination(iPCL, "\MesDocuments\MonFichier.PCL")



Exemple 19 : Composer un numéro de téléphone


SI telCompose(SAI_NuméroTéléphone, "TestEtatLigne") = Vrai ALORS
Info("Cliquez sur OK pour raccrocher")
telRaccroche()
FIN

PROCEDURE TestEtatLigne(ValeurEtatLigne est un entier)
SELON ValeurEtatLigne
CAS telLigneOccupée : Message("La ligne est occupée")
CAS telLigneDecrochée : Message("OK, connecté")
CAS telLigneNumérote : Message("Numérotation en cours")
CAS telLigneTonalité : Message("Tonalité")
CAS telLigneRaccrochée : Message("Le correspondant a raccroché")
CAS telLigneAttendRéponse : Message("Recherche du correspondant")
CAS telLigneSonnerie : Message("Sonnerie chez le correspondant")
FIN



Exemple 20 : Calculs financiers


// Taux d'intérêt pour un emprunt de 25 000 Euros. Six versements
// de 5 000 Euros sont nécessaires au remboursement de l'emprunt.
ResTauxIntérêt = FinTauxIntérêt(6, -5000, 25000)



Exemple 21 : Lecture d'un fichier texte ligne par ligne



// Sortie selon une condition SI
BOUCLE
// Lecture d'une ligne du fichier texte
UneLigne = fLitLigne(NumFic)
SI UneLigne = EOT ALORS SORTIR
TraiteLigne(UneLigne)
FIN



Exemple 22 : Sortie selon une condition TANTQUE


MaListe = INILit("Exemples", "", "", FichierINI)
MotClé = ExtraitChaîne(MaListe, nb, RC)
TANTQUE MotClé <> ""
nb = nb + 1
NomExpl = INILit("Projets installés", MotClé, "", FichierINI)
MotClé = ExtraitChaîne(MaListe, nb + 1, RC)
FIN


Exemple 23 : Sortie selon une itération


// Sortie selon une itération
BOUCLE (10)
// Lecture d'une ligne du fichier texte
UneLigne = fLitLigne(NumFic)
TraiteLigne(UneLigne)
FIN



Exemple 24 : Export vers Excel


sFic est une chaîne
// On demande le nom du fichier
sFic = fSélecteur("", "", "Choisissez le fichier d'exportation", ...
"Fichiers Excel (*.xls) *.xls", "xls", fselCrée + fselExiste)
// Si le nom n'a pas été fourni, on abandonne l'export
// Sinon, on exporte le contenu de la table TABLE_TABLE1
SI sFic <> "" ALORS TableVersExcel(TABLE_TABLE1, sFic, taSansTitre)



Exemple 25 : Export vers XML


sFic est une chaîne
// Nom du fichier
sFic = fSélecteur("", "", "Choisissez le fichier d'exportation", ...
"Fichiers XML (*.XML) *.xml", "xml", fselCrée + fselExiste)
// Si le nom n'a pas été fourni, on abandonne l'export
// Sinon, on exporte le contenu de la table TABLE_TABLE1
SI sFic <> "" ALORS TableVersXML(TABLE_TABLE1, sFic, taSansTitre)



Exemple 26 : Extraction d'une partie de chemin de fichier


sFic est une chaîne
// On demande le nom du fichier
sFic = fSélecteur("", "", "Choisissez le fichier d'exportation", ...
"Fichiers Word (*.rtf) *.rtf", "rtf", fselCrée + fselExiste)
// Si le nom n'a pas été fourni, on abandonne l'export
// Sinon, on exporte le contenu de la table TABLE_TABLE1
SI sFic <> "" ALORS TableVersWord(TABLE_TABLE1, sFic, taSansTitre)



Exemple 27 : Envoi d'un SMS


// Initialisation de la structure SMS pour un numéro classique
SMS.Numéro = "0610203040"
SMS.Message = "J'envoie des SMS avec WINDEV Mobile !"

// Envoi du SMS
ResEnvoi = SMSEnvoie()

// Erreur rencontrée ?
SI ResEnvoi = Faux ALORS
Erreur(ErreurInfo(errMessage))
FIN



Exemple 28 : Envoi d'un fax


IDConnect est un entier
IDConnect = FaxConnecte()
SI IDConnect = 0 ALORS
Erreur("La connexion au serveur de fax a échoué." + ...
"Vérifiez que celui-ci est bien démarré", ...
ErreurInfo(errMessageSystème))
SINON
ListeAjoute(LISTE_FaxEnvoi, FaxBoîteEnvoi(IDConnect))
FIN
...
// Code de clic de la liste
SI FaxEtat(LISTE_FaxEnvoi..ValeurAffichée) = FaxEtatPrisEnCharge ALORS
FaxRéinitialise(LISTE_FaxEnvoi..ValeurAffichée)
FIN

...
FaxDéconnecte(IDConnect)



Exemple 29 : Acquisition sur le port série
(ce code est généré par un assistant, vous n'aurez même pas à le taper !)


Résultat1 = sOuvre(1, 2000, 2000) // Ouverture de COM1
SI Résultat1 = Vrai ALORS
// Paramètrage Com1 : Taux 9600, Parité paire,
// 8 bits de données, 1 bit de stop
sFixeParamètre(1, 9600, 1, 8, 0) // Paramètrage de COM1
// Suite traitement...
sFerme(1) // Fermeture de COM1
SINON
Erreur("Erreur d'ouverture de COM1")
FIN


mercredi 27 janvier 2016

Introduction au langage Go


Introduction au langage Go
Historique
En premier lieu c’est en 2007 que le langage Go a commencé à être développé au sein même du département recherche chez Google. Ses principaux auteurs ne sont autres que Robert Griesemer, Rob Pike et Kenneth Thompson pour ne citer que les principaux d’entre eux car nombreux sont les contributeurs.

Pour ceux qui ne les connaissent pas déjà, Kenneth Thompson avec Dennis Ritchie, ont travaillé sur l’écriture du système Unix et ont aussi créé le langage B devenu la base du C aujourd’hui très présent puisque beaucoup de langages de haut niveau, ont été conçu avec comme PHP et Python. Il est également l’inventeur de l’éditeur ed et avec Rob Pike du codage de caractères UTF-8.

Le 10 Novembre 2009, est la date à laquelle fut rendu public le projet sous licence BSD-style qui a permis depuis, de rassembler une communauté croissante qui contribue à l’amélioration et l’évolution du langage pour notre plus grand plaisir à tous.

Il n’est pas rare que les langages soient associé à une mascotte souvent rigolote que l’on retrouve en peluches, autocollants et autres goodies. Go n’échappe pas à la règle puisque lui aussi possède sa mascotte nommée Gopher. C’est un petit chien un peu fou mais attachant, rapide et fidèle, voyez par vous mêmes !

Logo-go


Qu’est-ce que Go ?
Encore un nouveau langage ! N’y en a-t-il pas déjà assez ?!

Dans un sens se poser cette question est légitime et tout à votre honneur mais ses concepteurs, après un long voyage dans le monde du développement, ont constaté que pour choisir un langage de nos jours le choix était limité soit par, une exécution/compilation rapide mais un code fastidieux à écrire, soit par un code simple mais avec des performances diminuées.

C’est d’après cette réflexion, qu’ils ont eu l’ambition de concevoir un langage, qui rassemblerait d’un côté la simplicité dans le développement, à l’image d’un langage interprété, structuré, d’un typage dynamique et de l’autre, l’efficacité, la sécurité et les performances d’un langage compilé à fort typage statique.

Go c’est aussi :

open source
concurrent
un ramasse-miettes
efficace
évolutif
simple
fun
ennuyeux (pour certains)
Liens vers les sites officiels du langage Go
(en) Golang – site officiel du langage Go
(en) Téléchargements
(en) Wiki
Conclusion
Le langage Go se veut généraliste et peut donc être utilisé pour tout type d’application (système, web, serveur, …) et a été pensé dès sa conception, pour des machines possédant une architecture multicœur. C’est un langage prometteur, soutenu par une communauté grandissante, conçu par des développeurs dont la renommée n’est plus à faire et une société qui n’aura pas de mal à faire avancer le projet.

Vincent Letourneau



Google Analytics


N Web & Tech Analytics Google Analytics
15/01/16 12:19
Google Analytics : nouveautés, astuces, conseils
Régulièrement enrichi, Google Analytics offre de vastes possibilités en matière d'analyse d'audience d'un site Web. L'e-commerce, le SEO ou la présence sur les réseaux sociaux peuvent être améliorés grâce à cet outil de Web Analytics. Une version Premium avec plus de possibilités existe aussi.

Ces chiffres qu'il ne faut pas trop croire dans Google Analytics
Ces chiffres qu'il ne faut pas trop croire dans Google Analytics
SEO : le Français Botify lève 6,6 millions d'euros
SEO : le Français Botify lève 6,6 millions d'euros
Google Analytics : les indicateurs "user centrics" apportés par les nouvelles statistiques calculées
Google Analytics : les indicateurs "user centrics" apportés par les nouvelles statistiques calculées
Universal Analytics : bien adopté, mais peu utilisé chez les ténors du Web
Universal Analytics : bien adopté, mais peu utilisé chez les ténors du Web
Bloguer sur LinkedIn
Bloguer sur LinkedIn
Un puissant outil de Web Analytics

Hérité de la technologique d'Urchin que Google a racheté en 2005, Google Analytics est un puissant outil de Web Analytics pensé pour analyser le trafic d'un site. Les pages Web doivent être marquées, ou tagguées, pour que les données apparaissent dans des rapports et tableaux de bord préconfigurés mais aussi personnalisables. Source du trafic, conversions réalisées, terminaux mobiles utilisés par les visiteurs, optimisation du référencement naturel, réseaux sociaux font partie de la multitude d'indicateurs nativement proposés.

Une technologie Analytics qui évolue en permanence

Google a beaucoup fait évoluer son outil, désormais capable de mesurer le trafic en temps réel, d'aider à calculer le ROI des réseaux sociaux, de faire apparaître des variables personnalisées, ou encore d'aider à attribuer précisément les conversions, entre autres. L'outil peut aussi être très simplement relié à des comptes Google Webmaster Tools, AdSense et AdWords.

Il est généralement utilisé gratuitement, mais sa précision et son efficacité peuvent être améliorées en souscrivant à l'offre Premium (plus de 100 000 euros par an, minimum).


Découvrez aussi nos fiches pratiques sur Google Analytics et Universal Analytics. Exemples :

Google Analytics : comment supprimer un site
Quelles différences entre ga ou _gaq.push pour analyser des événements dans Google Analytics ?
Universal Analytics : quel est le client ID pour envoyer des mesures à Google Analytics ?
ACTUALITÉS GOOGLE ANALYTICS
AMP, le nouveau format pour le mobile, sera servi par Google en février - 10/12/15
Google Analytics permet (à nouveau) d'analyser le trafic venant de Google Images - 26/11/15
AMP, le projet de Google pour accélérer le web sur mobile dans les starting-blocks - 26/11/15
Mozilla active l’anti-tracking publicitaire dans Firefox - 04/11/15
Toute l'actualité Google Analytics
DOSSIERS GOOGLE ANALYTICS
Web Analytics, A/B Test et gestion de tags : parts de marché des outils en France fin 2015
Google Analytics, Optimizely, TagCommander… Zoom sur les parts de marché des outils de Web Analytics, de gestion de tag et d'A/B Testing en France, à partir des chiffres récoltés en 2015 par Tag-Trek.
Google Web Analytics
Temps de chargement et référencement naturel : état des lieux
Chronique de Damien Jubeau
Dressons le bilan des relations qui peuvent exister entre la performance web et le SEO, y compris les dernières évolutions de Google à ce sujet : test du Red Slow Label, etc.
SEO Google Moteur de recherche Référencement naturel
Outils de Web Analytics et de gestion de tag : les parts de marché en France mi-2015
Google Analytics, AT Internet, TagCommander, Google Tag Manager… Zoom sur les parts de marché des outils de Web Analytics en France, à partir des chiffres récoltés par les spécialistes Tag-Trek et Converteo.
Web Analytics Universal Analytics AT Internet
Optimisez la gestion de vos campagnes AdWords
Chronique de Baptiste Delamare
Découvrez comment optimisez la gestion de vos campagnes Google AdWords en plusieurs points. Comprenez les enjeux économiques d'une campagne, utilisez les bases d'AdWords pour atteindre vos objectifs.
Publicité Google Réseau Smartphone

Google Analytics : suivre cinq événements utiles aux e-commerçants
Ajout au panier, souscription à la newsletter... L'analyse de ces événements peut aider les e-commerçants. Voici les codes pour les mesurer dans
Google Analytics.
Web Analytics
Baromètre : Universal Analytics vers les 15% de parts de marché en France
Sur plus d'un demi-million de sites français parcourus par Tag-Trek, près de la moitié utilise Google Analytics. Universal Analytics a été détecté sur 13,8% de ces sites.
Adobe Web Analytics Universal Analytics AT Internet
Pages 404 : et si elles n’étaient pas si inutiles que ça ?
Chronique de Sébastien Bulté
Ne vous est-il jamais arrivé de pester devant une erreur 404. Rares sont les sites qui en sont exempts. Avez-vous déjà mesuré l’impact de ces pages sur votre trafic ? Pour ne pas que ce trafic parte à la poubelle, voici quelques pistes.
SEO Moteur de recherche HTML Ergonomie
Le vocabulaire pour comprendre le Web Analytics
Terme technique, jargon... Les outils de web analytics et les professionnels de ce secteur n'emploient pas toujours un vocabulaire facile à comprendre. Voici quelques définitions.
Web Analytics AT Internet Analytics
Une avancée dans la gestion et la fiabilité des datas grâce à Google Tag Manager
Chronique de Grégory Garcia
L’implémentation des tags analytics doit représenter 20 % du temps et les 80 % restants doivent être dédiés à l’analyse de la performance (loi de Pareto).
SEO Tracking
Tous les articles
GOOGLE ANALYTICS ÉGALEMENT CITÉ DANS
Les 4 profils spécialisés dans la data que l'on va s'arracher en 2015
L'avalanche de données générées par l'explosion du numérique peut être analysée par des spécialistes. Voici 4 de ces profils, avec leurs salaires et missions commentés par Robert Half.
Entreprises Big Data
Marché des OS fixes et mobiles : Android passe les 15% en France
Taux de pénétration des OS, au global, mais aussi sur mobiles, part de marché des navigateurs... Le point sur les positions d'Apple, Microsoft et Google sur le terrain des terminaux.
DSI
Google Webmaster Tools : les nouveautés qui auront marqué 2014
Google aura grandement amélioré ses outils pour les webmasters cette année. Retour sur les nouveautés les plus importantes.
SEO Indexation Smartphone Référencement naturel
16 outils utilisés par les Community Managers
Surveiller Twitter, répondre aux commentaires, lancer des jeux sur Facebook.. Le JDN a demandé à quatre Community Managers les logiciels qu'ils utilisent le plus souvent, et pourquoi.
Cloud Facebook Réseaux sociaux Twitter
7 outils gratuits et open source utiles au SEO
Voici des outils gratuits et open source qui peuvent grandement aider les référenceurs. Une sélection commentée par le spécialiste Jean-Benoît Moingt.
SEO Indexation Référencement naturel Référenceurs
Les ténors de l'analyse des réseaux sociaux au crible
Quels sont les poids lourds en matière de plateforme de veille et d'analyse des réseaux sociaux ? Forrester les a comparés.
Réseaux sociaux Big Data Social Analytics Forrester
Les 16 CV les plus créatifs jamais vus
Des demandeurs d'emploi particulièrement imaginatifs entendent se démarquer des concurrents avec des créations très originales.
Carrière Curriculum vitae
13 start-up prometteuses à garder à l'oeil cette année
De nombreuses start-up ont été lancées en 2013. En se projetant sur cette année, Business Insider a identifié quelques-unes des start-up les plus à même de percer dans l'écosystème.
Start-up
Ces personnalités françaises de l'open source à la stature mondiale
Linux Mint, PrestaShop, Drupal Commerce, Symfony... Ces technologies ont un point commun. Elles ont toutes été lancées par des français.
DSI Linux Drupal CMS




https://www.service-public.fr/associations/vosdroits/F3109


https://www.service-public.fr/associations/vosdroits/F3109



Le jeu de go en informatique est une branche de l'intelligence artificielle qui s'attache à créer des logiciels informatiques capables de jouer au jeu de go, un très ancien jeu de plateau.


Jeu de go en informatique

Tableau de jeu de Go informatisé
Le jeu de go en informatique est une branche de l'intelligence artificielle qui s'attache à créer des logiciels informatiques capables de jouer au jeu de go, un très ancien jeu de plateau.
Jeu de go en informatique
Le jeu de go est considéré comme un problème complexe d'intelligence artificielle, qui ne peut pas être résolu aussi facilement que le jeu d'échecs.

Le premier programme a été écrit en 1968 par Albert Zobrist comme un élément de sa thèse sur la reconnaissance des formes.

Sommaire [masquer]
1 Difficulté du go
2 Performances
3 Méthode de Monte-Carlo
4 Notes et références
5 Voir aussi
5.1 Articles connexes
5.2 Liens externes
Difficulté du go[modifier | modifier le code]
Comme pour tous les jeux, il faut jouer un coup qui améliore sa situation et détériore celle de son adversaire. Pour estimer une situation aux échecs, une bonne estimation est de compter le nombre de pièces sur l'échiquier, en les pondérant (1 point par pion, 5 par tour...), et en ajustant la valeur trouvée par les libertés, les protections des pièces... Cela n'est pas possible au go : on ne dispose pas d'estimation ne reposant pas, justement, sur les capacités humaines de reconnaissance de formes, et sur l'expérience de parties déjà jouées. La technique d'exploration des différentes possibilités (pour chaque coup, déterminer la meilleure réponse possible, puis la meilleure réponse à celle-ci, et ainsi de suite ; c'est plus techniquement la méthode du minimax) échoue au go à cause de l'énorme quantité de coups plausibles, et de la durée des parties.

Performances[modifier | modifier le code]
Ce modèle est-il pertinent ? Cliquez pour voir d'autres.Cet article ou cette section est à actualiser. (indiquez la date de pose grâce au paramètre date).
Des passages de cet article sont obsolètes ou annoncent des événements désormais passés. Améliorez-le ou discutez des points à vérifier. Vous pouvez également préciser les sections à actualiser en utilisant {{section à actualiser}}.
Contrairement aux programmes de jeu d'échecs qui ont rivalisé avec les meilleurs professionnels dès les années 1990, les programmes de jeu de go n'ont commencé à atteindre le niveau des joueurs de go professionnels qu'en 20131. Sur les petits plateaux de taille 9×9, les meilleurs programmes ont atteint récemment le niveau des joueurs en dan, mais les techniques qui ont permis cette progression n'ont donné que des résultats mitigés sur la taille normale de plateau 19×19. Sur 19×19, le niveau en dan est resté hors d'atteinte jusqu'à l'apparition récente des programmes Monte-Carlo ; avant 2002, un joueur moyen était capable de battre les meilleurs programmes et certains joueurs forts entraînés spécifiquement les avaient battu avec des handicaps allant jusqu'à 30 pierres, ce qui serait impossible contre un joueur humain, même très peu expérimenté. Ainsi en 1997, Janice Kim, shodan professionnelle, battait le programme HandTalk malgré un handicap de 25 pierres puis en 1998, Martin Müller, sixième dan amateur, battait Many Faces of Go malgré un handicap de 29 pierres.

L'augmentation de la puissance des ordinateurs n'a que très peu d'influence sur le niveau des programmes de go, et le problème du jeu de go est souvent considéré comme l'un des prochains défis de l'intelligence artificielle.

Méthode de Monte-Carlo[modifier | modifier le code]
Une des alternatives majeures à l'utilisation de connaissances et de recherches est l'utilisation des méthodes de Monte-Carlo. Pour cela il suffit de lister les coups possibles et pour chaque coup de jouer des milliers de parties au hasard2. Le coup qui conduit au meilleur résultat pour le joueur courant est supposé le meilleur coup. L'avantage de cette méthode est qu'elle requiert peu de connaissances spécifiques mais l'inconvénient est qu'elle est coûteuse en termes de mémoire et de temps processeur. De plus, parce que les coups utilisés pour l'évaluation sont choisis au hasard, il est possible qu'un coup qui serait excellent sauf pour une réponse spécifique soit de façon erronée choisie comme un bon coup. Le résultat est un programme qui est fort d'un point de vue stratégique mais faible tactiquement. Ce problème peut être compensé en ajoutant de la connaissance à la génération de coup et une plus grande profondeur de recherche avant l'évaluation de Monte-Carlo. Parmi les programmes qui utilisent les techniques de Monte-Carlo se trouvent MoGo, CrazyStone, Olga and Gobble.

En 2006, une nouvelle technique, upper confidence bounds applied to trees (UCT), a été développée et utilisée par de nombreux programmes sur 9×9 avec d'excellents résultats. UCT utilise les résultats des play outs joués jusque là pour guider l'exploration tout en autorisant des séquences alternatives à être explorées. UCT et de nombreuses autres optimisations ont conduit MoGo à être l'un des plus forts programmes produits par un chercheur. Parmi les premières applications avec succès de la méthode UCT sur 19×19 on peut trouver MoGo, CrazyStone, et Mango. MoGo a gagné l'édition 2007 des Computer Olympiad et gagné un blitz sur trois contre Guo Juan, 5e dan professionnel, sur le goban 9×9. The Many Faces of Go a gagné l'édition 2008 des Computer Olympiad après avoir ajouté UCT à ses méthodes classiques de recherche.

En 2008, grâce à une parallélisation efficace, MoGo a gagné une partie3 (sur trois) contre Catalin Taranu, 5e dan professionnel, sur 9×9 avec des temps classiques (30 minutes pour chaque joueur). Mogo tournait sur un cluster fournit par Bull (32 nœuds avec 8 cœurs par nœud, chacun séquencé à 3 GHz). La machine n'était pas disponible durant l'un des matchs perdus. MoGo a également joué une partie sur 19×19 contre Catalin Taranu et a perdu en dépit d'un avantage de 9 pierres de handicap. Cependant Mogo était en bonne position durant cette partie et a perdu à cause d'un mauvais choix lors d'un ko. La machine utilisée pour cet évènement (l'IAGO challenge, organisé par la société "Recitsproque") était une bonne machine mais loin des meilleurs standards de l'industrie.

Le 7 août 2008 Mogo a gagné une partie sur 19×19 face à Kim MyungWan 8e dan professionnel, avec MoGo ayant un avantage de 9 pierres de handicap. MoGo a gagné (de 0,5 pt, mais cette victoire n'est pas si serrée qu'il y parait, le programme jouant la sécurité et perdant des points dès qu'il est certain de gagner). Kim MyungWan a utilisé environ 13 minutes de temps alors que MoGo en a utilisé environ 55, cependant il ne pense pas qu'utiliser plus de temps lui aurait permis de gagner. MoGo fonctionnait depuis les Pays-Bas sur un super ordinateur de 800 nœuds, chacun contenant 4 cœurs tournant à 4,7 GHz pour produire 15 Téraflops4. MyungWan et MoGo ont joué un total de 4 parties à handicap et limite de temps variable, chacun en gagnant deux. Les enregistrements des parties sont accessibles sur le serveur de go KGS où Mogo a joué en tant que MogoTitan.

En 2009, d'autres victoires contre des professionnels à des handicaps plus faibles (par des programmes tels que Crazystone) ont eu lieu ; de plus, Zen (programme médaille d'or aux olympiades de 2009) s'est classé de manière consistante entre 1 et 2 dan sur KGS.

Zen, en particulier, a connu ensuite une progression plus lente, mais régulière, l'amenant au début 2012 à un niveau de 4e dan sur KGS, et même de 6e dan en parties rapides ; lors d'un match-exhibition contre Takemiya Masaki, il a gagné successivement une partie à 5 pierres de handicap, puis une partie à 4 pierres5.

En octobre 2015, un programme développé par Google DeepMind, l'algorithme AlphaGo, a franchi une nouvelle étape (que les experts pensaient ne pas pouvoir être atteinte avant de nombreuses années) en battant à égalité Fan Hui, le meilleur joueur européen, professionnel 2 dan, par le score sans appel de cinq victoires à zéro6,7. Un match sera organisé contre Lee Sedol au printemps 2016.

La libération de la version 1 Go, 1 Go pour faire court, est une étape majeure dans le développement de la langue. (go)


introduction

La libération de la version 1 Go, 1 Go pour faire court, est une étape majeure dans le développement de la langue.
Go 1 est une plate-forme stable pour la croissance des programmes et des projets écrits en Go.

Aller 1 définit deux choses: d'abord, la spécification de la langue; et la seconde, la spécification d'un ensemble d'API de base, les «packages standard" de la bibliothèque Go. Le Go 1 version inclut leur mise en œuvre sous la forme de deux suites de compilation (gc et gccgo), et le noyau bibliothèques elles-mêmes.

Il est prévu que les programmes écrits à la spécification 1 Go vont continuer à compiler et fonctionner correctement, inchangée, au cours de la durée de vie de cette spécification. À un certain moment indéterminée, une spécification Go 2 peut se poser, mais jusqu'à ce moment, Aller programmes qui fonctionnent aujourd'hui devraient continuer à travailler même comme futur «point» rejets de 1 Go se posent (1.1 Go, Go 1.2, etc.).

La compatibilité est au niveau de la source. La compatibilité binaire pour les paquets compilés ne sont pas garanties entre les versions. Après un point de déverrouillage, la source Go devra être recompilés pour être liés à la nouvelle version.

Les API peuvent grandir, acquérir de nouveaux forfaits et fonctions, mais pas d'une manière qui rompt Go Code 1 existant.

Attentes

Bien que nous nous attendons à ce que la grande majorité des programmes sera de maintenir cette compatibilité avec le temps, il est impossible de garantir que aucun changement futur va briser tout programme. Ce document est une tentative pour définir les attentes pour la compatibilité des logiciels Go 1 à l'avenir. Il ya un certain nombre de façons dont un programme qui compile et fonctionne aujourd'hui peut ne pas le faire après une future version de point. Ils sont tous les enregistrements peu probable, mais vaut la peine.

Sécurité. Un problème de sécurité dans la spécification ou de la mise en œuvre peut venir à la lumière dont la résolution nécessite la compatibilité de rupture. Nous nous réservons le droit de répondre à ces questions de sécurité.
Comportement non spécifié. La spécification Go essaie d'être explicite sur la plupart des propriétés de la langue, mais il ya certains aspects qui ne sont pas définies. Programmes qui dépendent de tels comportement non spécifié peuvent se briser dans les futures versions.
Les erreurs de spécification. Si il devient nécessaire de corriger une incohérence ou incomplets dans la spécification, la résolution du problème pourrait affecter le sens ou la légalité des programmes existants. Nous nous réservons le droit de répondre à ces questions, y compris la mise à jour des implémentations. Sauf pour les questions de sécurité, pas de changements incompatibles à la spécification seraient faites.
Bugs. Si un compilateur ou de la bibliothèque a un bug qui viole la spécification, un programme qui dépend du comportement buggy peut se briser si le bug est corrigé. Nous nous réservons le droit de fixer ces bugs.
Littéraux structure. Pour l'ajout de fonctionnalités dans les versions ultérieures de points, il peut être nécessaire d'ajouter des champs à structs exportés dans l'API. Code qui utilise littéraux struct sans clé (comme pkg.T {3, "x"}) pour créer des valeurs de ces types ne parviendrait pas à compiler, après un tel changement. Toutefois, le code qui utilise littéraux à clé (pkg.T {A: 3, B: "x"}) continuera à compiler, après un tel changement. Nous mettrons à jour ces structures de données d'une manière qui permet littéraux struct à clé pour rester compatible, bien que non détrompé littéraux peuvent échouer à compiler. (Il ya aussi des cas plus complexes impliquant des structures de données imbriquées ou des interfaces, mais ils ont la même résolution.) Nous recommandons donc que les littéraux composites dont le type est défini dans un paquet séparé devraient utiliser la notation à clé.
Méthodes. Comme avec les champs struct, il peut être nécessaire d'ajouter des méthodes de types. Dans certaines circonstances, comme lorsque le type est intégré dans une structure avec un autre type, l'ajout de la nouvelle méthode peut briser la structure en créant un conflit avec une méthode existante de l'autre type intégré. Nous ne pouvons pas protéger contre ce cas rare et ne pas garantir la compatibilité devrait-il se poser.
Les importations point. Si un programme importe un package standard en utilisant l'importation. «chemin», noms supplémentaires définies dans le package importé dans les futures versions peuvent entrer en conflit avec d'autres noms définis dans le programme. Nous ne recommandons pas l'utilisation de l'importation. Extérieur de tests, et de l'utiliser peut provoquer un programme à ne pas compiler dans les futures versions.
Utilisation du paquet dangereux. Forfaits qui importent dangereuse peut dépendre de propriétés internes de la mise en œuvre Go. Nous nous réservons le droit d'apporter des modifications à la mise en œuvre qui peuvent briser ces programmes.
Bien sûr, pour toutes ces possibilités, si elles se produisent, nous nous efforcerons de mettre à jour chaque fois que possible les spécifications, des compilateurs, ou des bibliothèques sans affecter le code existant.

Ces mêmes considérations valent pour rejets ponctuels successifs. Par exemple, le code qui fonctionne sous 1.2 Go devrait être compatible avec Go 1.2.1, 1.3 Go, Go 1.4, etc., mais pas nécessairement avec Go 1.1, car il peut utiliser des fonctionnalités ajoutées que dans Go 1.2

Fonctionnalités ajoutées entre les versions, disponibles dans le référentiel source, mais ne font pas partie des versions binaires numérotés, sont en cours de développement. Aucune promesse de compatibilité est faite pour les logiciels utilisant ces fonctions jusqu'à ce qu'ils aient été libérés.

Enfin, bien que ce soit pas un problème exactitude, il est possible que la performance d'un programme peut être affecté par des changements dans la mise en œuvre des compilateurs ou des bibliothèques dont il dépend. Aucune garantie ne peut être faite à propos de la performance d'un programme donné entre deux versions.

Bien que ces attentes appliquent à 1 Go lui-même, nous espérons que des considérations similaires seraient prises pour le développement de logiciels développés en externe sur la base de 1 Go.

Sous-dépôts

Code en sous-dépositaires de la principale aller arbre, comme golang.org/x/net, peut être développé dans le cadre des exigences de compatibilité plus souples. Cependant, les sous-répertoires seront étiquetés comme appropriée pour identifier les versions qui sont compatibles avec les Go 1 rejets ponctuels.

Systèmes d'exploitation

Il est impossible de garantir la compatibilité à long terme avec des interfaces de système d'exploitation, qui sont modifiés par des tiers. Le syscall package est donc hors du champ des garanties faites ici. Comme de Go version 1.4, le syscall paquet est gelé. Toute évolution de l'interface de l'appel système doit être soutenu ailleurs, comme dans le go.sys subrepository. Pour plus de détails et de fond, voir ce document.

Outils

Enfin, la chaîne d'outils Go (compilateurs, des linkers, de construire des outils, etc.) sont en cours de développement et peut changer de comportement. Cela signifie, par exemple, que les scripts qui dépendent de l'emplacement et les propriétés des outils peuvent être brisés par un point de déverrouillage.

Ces mises en garde de côté, nous croyons que 1 Go sera une base solide pour le développement de Go et de son écosystème.





lien a refaire





Première défaite d’un professionnel du go contre une intelligence artificielle (le monde)


Première défaite d’un professionnel du go contre une intelligence artificielle
image: http://s1.lemde.fr/image/2016/01/27/644x322/4854883_3_3ca2_le-jeu-de-go-represente-un-defi-pour_6630c7018524eb273fd0ef4bee56e385.jpg
Le jeu de go représente un défi pour l'intelligence artificielle.
Un programme de Google DeepMind a relevé le défi du jeu de go, sur lequel planchent depuis des décennies les chercheurs en intelligence artificielle. Une étape historique.
Fan Hui, champion européen de go : « L’ordinateur joue comme un humain » Apprentissage : l’intelligence artificielle, une élève de plus en plus douée

image: http://s2.lemde.fr/image/2016/01/25/312x156/4853284_3_6f55_svante-paabo-dans-son-bureau-de-l-institut_542bb1a281287fe100100da0a6ef1fb1.jpg
Svante Paabo, dans son bureau de l'Institut Max-Planck d'anthropologie évolutive, à Leipzig (Allemagne).
Svante Paabo, chasseur de génomes perdus
Ce généticien suédois, maître dans l’art de faire parler l’ADN ancien, a révélé qu’il y avait du néandertalien en nous.

image: http://s1.lemde.fr/image/2016/01/25/312x156/4853324_3_3ae0_la-king-abdullah-university-of-science-and_12fe2ed344f28f9a12cb1cee80ea52cc.jpg
La King Abdullah University of Science and Technology (KAUST), en Arabie Saoudite.
La science, en marge des sociétés musulmanes, par Nadji Safir 83
Tribune. Pour le sociologue algérien, les indicateurs relatifs à l’état de la connaissance dans les pays musulmans révèlent des carences à l’origine de crises en cours.

image: http://s2.lemde.fr/image/2016/01/25/312x156/4853260_3_2394_2016-01-21-837fde9-15380-1oj6hsw_919e2805ea88dbdfe709963d0ad7ecd3.jpg
Des « Aedes aegypti » modifiés génétiquement afin d’engendrer des descendants non viables.
Le moustique OGM contre le paludisme
Pour vaincre la maladie, des scientifiques proposent de « forcer » les lois de l’hérédité. Une technique de manipulation génétique qui séduit… ou effraie.

image: http://s1.lemde.fr/image/2016/01/24/312x156/4852634_3_5eb8_scott-kelly-en-train-de-faire-rebondir-une_d39ab7669284d5aa1803b8a283719fae.jpg
Scott Kelly, en train de faire rebondir une balle d'eau entre deux raquettes recouvertes d'un revêtement hydrophobe.
L’homme qui joue au ping-pong avec de l’eau POST DE BLOG
A bord de la Station spatiale internationale, le spationaute américain Scott Kelly a testé de manière ludique un revêtement hydrophobe.
19h03

image: http://s2.lemde.fr/image/2016/01/27/147x97/4854890_7_7731_le-francais-fan-hui-en-2004_f94b43cf43f6ef119df8c0e98e05c505.jpg

Le Français Fan Hui en 2004.
ENTRETIEN
Fan Hui, champion européen de go : « L’ordinateur joue comme un humain »
Agé de 34 ans, le Français, champion d’Europe en titre de go, a été battu en octobre 2015 par le programme de Google DeepMind baptisé AlphaGo.

David Larousserie et Morgane Tual
partage facebook twitter 17h04
image: http://s1.lemde.fr/image/2016/01/27/147x97/4854764_7_a9fc_2015-08-25-ae93e18-4738-1gkgdx2_57769b3801048798e6f65f65a3ba0685.jpg


Une battle de rap astrophysique POST DE BLOG
Un rappeur américain qui divague sur Twitter attire dans sa conversation ses deux millions de followers, puis l’astrophysicien Neil deGrasse Tyson.

partage facebook twitter 15h00
image: http://s2.lemde.fr/image/2016/01/27/147x97/4854685_7_ed1d_des-enfants-aux-bresil-surveilles-pour-ne-pas_46e974a56c556df3353ae9228d1bada3.jpg

Des enfants aux Brésil surveillés pour ne pas être contaminés par le virus Zika.
EN IMAGES
Le virus Zika arrive en Europe VIDÉO
Apparu en 1947, le virus Zika se propage depuis 2013. D’abord au Brésil et maintenant en Europe.

partage facebook twitter 10h12
image: http://s1.lemde.fr/image/2016/01/27/147x97/4854384_7_a768_le-petit-pecher-africain-nauclea-latifolia_ec463704f73af7bf00c3105d4d9c974a.jpg

Le petit pêcher africain Nauclea latifolia.
EN IMAGES
Un arbre africain sécrète un antidouleur VIDÉO
Les racines d’un pêcher répandu en Afrique subsaharienne produisent du tramadol, un antalgique dont on pourrait envisager la production biologique.

partage facebook twitter
image: http://s1.lemde.fr/medias/web/img/bg/vide.png

MARDI 26 JANVIER
20h48

image: http://s2.lemde.fr/image/2016/01/26/147x97/4854199_7_2474_le-moustique-aedes-aegypti-transmet-le-virus_08605a3c7ecf75cc90adf48bdac571bd.jpg

Le moustique Aedes aegypti transmet le virus Zika par piqûre.
COMPTE RENDU
Le Brésil mobilise 220 000 soldats pour mener la « guerre » contre le virus Zika
Plus de 220 000 soldats iront de foyer en foyer pour sensibiliser aux moyens de lutte contre le moustique, vecteur de la maladie.

partage facebook twitter 18h33
image: http://s1.lemde.fr/image/2016/01/26/147x97/4854177_7_27b9_marvin-minsky-le-14-juillet-1987-ap_fae005abce1190e167a9ec9de2e85de3.jpg

Marvin Minsky, le 14 juillet 1987. (AP Photo/Robert Kaiser, File)
NÉCROLOGIE
Marvin Minsky, pionnier de l’intelligence artificielle, est mort 5
Le mathématicien américain, grand amateur de science-fiction, avait notamment inventé le principe du microscope confoncal ou le concept de fontaine spatiale, qui offrirait un accès permanent à l’espace.

Hervé Morin

En savoir plus sur http://www.lemonde.fr/sciences/#ePJRKOIfzyhLzmZf.99



Le Monde diplomatique


Le Monde diplomatique
www.monde-diplomatique.fr/
Ce mensuel d'informations internationales a été fondé en 1954. Il propose des archives, des dossiers, des cartes, ses anciens numéros sur cédérom et des ...

Abonnement
Offres d'abonnement au Monde diplomatique et Manière de voir.
Archives
Cette page répertorie les différentes voies pour explorer ...
Connexion
En kiosques : janvier 2016 · Abonnement Faire un don ...
Qui sommes-nous
Fondé en 1954 par Hubert Beuve-Méry, Le Monde diplomatique ...
Cartographie
Cartographie. Des cartes et des graphiques pour mieux ...
Algérie
Voir aussi : Guerre d'Algérie 1954-1962, Ligue arabe. + Plus de ...
Le Monde diplomatique — Wikipédia

https://fr.wikipedia.org/wiki/Le_Monde_diplomatique
Le Monde diplomatique est un mensuel français d'information et d'opinion, fondé en mai 1954 par Hubert Beuve-Méry comme supplément au quotidien Le ...
Dans l'actualité
Image pour le résultat associé aux actualités
Le Conseil d'Etat refuse de suspendre l'état d'urgence
Le Monde‎ - Il y a 3 heures
Pour l'avocat de la Ligue des droits de l'homme, Patrice Spinosi, interrogé par Le Monde, la ...
Taubira, l'oratrice du projet de loi sur le mariage homosexuel
Le Monde‎ - Il y a 7 heures
« Le Canard enchaîné » accuse la SNCF d'avoir manipulé l'enquête sur la catastrophe de Brétigny
Le Monde‎ - Il y a 12 heures
Plus d'actualités pour "le monde diplomatique"
Les blogs du Diplo

blog.mondediplo.net/
Les blogs des collaborateurs du Monde diplomatique.
Le Monde diplomatique - Facebook

https://fr-fr.facebook.com/Monde.diplomatique
Le Monde diplomatique est sur Facebook. Pour communiquer avec Le Monde diplomatique, inscrivez-vous sur Facebook dès maintenant. InscriptionConnexion.
Diplomatie : Toute l'actualité sur Le Monde.fr.

www.lemonde.fr/diplomatie/
Diplomatie - Découvrez gratuitement tous les articles, les vidéos et les infographies de la rubrique Diplomatie sur Le Monde.fr.
Le Monde diplomatique - English edition


mondediplo.comTraduire cette page
Le Monde diplomatique - English edition ... LMD around the world. Le Monde diplomatique, originally published in French, has editions in 25 other languages ...
Recherches associées à le monde diplomatique
courrier international
le figaro
liberation
le nouvel observateur
le monde diplomatique pdf
le parisien
manière de voir
le point


Deezer se muscle face à Apple et Spotify



Résultats de recherche
Deezer se muscle face à Apple et Spotify - Le Monde
www.lemonde.fr/.../deezer-se-muscle-face-a-apple-et-spotify_4851196_32...
Il y a 6 jours - Le management de Deezer peut pousser un ouf de soulagement. Le leader français du streaming musical a trouvé les moyens de son ...
Vous avez consulté cette page le 27/01/16.
Apple Music vs Spotify vs Deezer vs Qobuz : lequel choisir ?
www.mensquare.com/.../1026940-apple-music-deezer-spotify-qobuz-test...
25 nov. 2015 - Lifestyle · Sport · High Tech ... Apple Music, Deezer, Qobuz, Spotify…quel service de streaming ... Toutefois, le service fournit de gros efforts pour se constituer un fond ... Hasard ou coïncidence, Spotify et Deezer ont décidé de muscler ... En face, nous pensions que la concurrence souffrirait davantage au ...
News — MusicTank
www.musictank.co.uk/news
Apple Music Races To 10m Subscribers 7 Months After Launch. 10 Jan 2016 ...... Breakage Is Back: How Deezer Paid $23m In Unallocated Advances To Labels ...... Jesse Norman New Chairman Of Culture, Media And Sport Select Committee .... Sources: Sony Could Face Class-Action Litigation Over Spotify Advances…
articlesLeFac_19-12-2014_01-07.xml - CB News
www.cbnews.fr/var/xml/leFac/articlesLeFac_19-12-2014_01-07.xml
Il en profite pour changer de dénomination et se rebaptiser Mensquare Group… .... Nurun se muscle Nurun renforce ses équipes clients et « réaffirme ainsi son ..... des nouveaux comptes que sontYves Rocher, Total, Fly, Bpifrance et Bulgari. ...... la fin de la saison sportive 2014/2015, incapable de surenchérir face à Adidas.
Olivier Lapotre - YouTube
https://www.youtube.com/user/OlivierLAPOTRE
Buy on iTunes: https://itunes.apple.com/album/id941927785. Listen on Spotify: ..... Activité Physique, Sport, Nutrition, Sommeil, Savoir se Détendre Un contenu ...
Télécharger des programmes gratuits iPhone (Page 2)
fr.softonic.com/iphone/telecharger-logiciels-gratuits/2
Logiciels pour iPhone Anomaly 2 est un Tower offense qui se déroule dans un .... Logiciels pour iPhone Scores365 est une application sportive extrêmement ... Logiciels pour iPhone Votre enfant est bloqué face à un problème de ... Logiciels pour iPhone Apple Store est l'application officielle d'Apple pour ...... Fly Kiwi, Fly!
Used Bowflex Sport Home Gym - Bowflex Pr1000 Vs Free ...
www.netgawez.net/used-bowflex-sport-home-gym - Traduire cette page
Screen telling made sufficient deezer adjustable dumbbells weights look ... Com the fly you really get the 0 http olplimnuen versatility the objective 10 ... Back foyer little private blinking mechanisms position pool goes face and lie by making. ... 100 mesmorized keep mind bersaing wireless muscle growth the full five bipolar ...
Les financements de la French Tech seraient menacés
ookawa-corp.over-blog.com/archive/2014-07/undefined
The only airplane of perpetual endurance, able to fly day and night on solar power, ... Elle se trouve aujourd'hui encore confortée par de nombreuses données ...... Through technological innovation, I returned to my sport stronger and better. ... What are the muscles doing, and how are they controlled by the spinal cord?
18/11 - PhoenixJP.News: le portail de l'actualité numérique ...
www.phoenixjp.net/news/fr/news_others.php?histo=4&nbnews...
28/10 à 17:31:47, -, Mac 4 Ever, : La nouvelle Apple TV arriverait en boutique .... Ventes de consoles au Japon : les semaines se suivent et se ressemblent .... est confiant quant au succès de Rise of the Tomb Raider face à ses concurrents ... PGW 2015 : Sony sort les muscles et prépare le futur virtuel de sa PlayStation 4.
561 Dans la peau de Michael Scofield dans TeamBreak
monavis-surtout.blogspot.com/.../561-dans-la-peau-de-michael-scofield....
23 avr. 2015 - Dans la Mission Impossible on est des agents double face à une bombe à ... sommes des prisonniers en transfert dans un avion qui se crashe.





Le management de Deezer peut pousser un ouf de soulagement.


Le management de Deezer peut pousser un ouf de soulagement. Le leader français du streaming musical a trouvé les moyens de son développement à l’étranger. « Il faut savoir reculer pour mieux sauter », constate Alexis de Gemini, directeur général de Deezer, pour justifier l’abandon du projet d’introduction en Bourse, projeté à l’automne 2015 qui devait permettre de lever 300 millions d’euros. Le chaos boursier actuel n’est pas pour lui faire regretter ce retrait.

Les deux actionnaires principaux de l’entreprise, le fonds d’investissement britannique Access Industries, entré au capital en 2012 et l’opérateur de télécommunications Orange, actionnaire depuis 2010, ont décidé de participer à une levée de fonds de 100 millions d’euros. Cela traduit « une marque de confiance de nos actionnaires qui se montrent sereins quant à notre avenir et notre développement », assure M. de Gemini
Entre les deux investisseurs, la répartition de l’augmentation de capital n’est pas connue, mais Orange qui, avant cette opération, détenait 11 % de Deezer et Access Industries 27 % vont désormais dépasser la barre des 50 % du capital et stabiliser ce dernier. Les deux entreprises sont aussi directement intéressées par l’activité économique de Deezer.

Deezer compte à ce jour 6,3 millions d’utilisateurs dont 3 millions d’actifs
Propriété de l’homme d’affaires américain Len Blavatnik, le fonds Access Industries détient Warner Music, une des trois majors internationales du disque. Quant à Orange, elle a développé à l’origine un partenariat avec Deezer,..

En savoir plus sur http://www.lemonde.fr/economie/article/2016/01/21/deezer-se-muscle-face-a-apple-et-spotify_4851196_3234.html#ZHh21bBJAk8UZMEg.99




XHTML




XHTMLMD 1.0 : Le langage de balisage hypertexte extensible

Une reformulation de HTML 4 en XML 1.0

Recommandation W3C 26 Janvier 2000

Cette version :
http://www.w3.org/TR/2000/REC-xhtml1-20000126
(version Postscript, version PDF, archive ZIP, ou archive TAR gzippé)
Dernière version :
http://www.w3.org/TR/xhtml1
Version précédente :
http://www.w3.org/TR/1999/PR-xhtml1-19991210
Auteurs :
Voir remerciements.
Copyright ©2000 W3C® (MIT, INRIA, Keio), tous droits réservés. Les règles du W3C sur la responsabilité, les marques déposées, les droits d'auteurs and les licences de logiciels sont appliquées.

Résumé

Cette spécification définit XHTML 1.0, comme une reformulation de HTML 4 en une application XML 1.0, et trois DTDs correspondant à elles définies par HTML 4. Les sémantiques des éléments et leurs attributs sont définis dans la Recommendation W3C pour le HTML 4. Ces sémantiques définissent les fondations de l'extensibilité future de XHTML. La compatibilité avec les agents utilisateurs HTML actuels est possible en suivant un ensemble raisonnable de règles.

Statut de ce document

Cette section décrit le statut de ce document à la date de sa publication. D'autres documents pourront remplacer ce document. Le dernier status de cette série de document est maintenu au W3C.

Ce document a été validé par les membres du W3C ainsi que par d'autres organismes et a été approuvé par le Directeur comme une recommandation. C'est un document stable et il peut-être utilisé comme document de référence et peut être cité comme un référence normative pour d'autres documents. Le rôle du W3C dans l'établissement de cette recommandation est d'attirer l'attention sur la spécification et de promouvoir sa large diffusion. Ceci améliore la fonctionnalité et l'interopérabilité du Web.

Ce document a été produit comme une partie de l'Activité HTML du W3C. Les buts du Groupe de travail HTML (réservé aux membres) sont discutés au sein des statuts du Groupe de Travail HTML (réservé aux membres).

Une liste des recommandations actuelles et d'autres documents techniques peut être trouvée à http://www.w3.org/TR.

La discussion publique à propos des spécificités du HTML a lieu sur la liste de discussion www-html@w3.org (archive).

Faites part des erreurs de ce document à www-html-editor@w3.org.

La liste des erreurs connues de cette spécification est disponible à http://www.w3.org/2000/01/REC-xhtml1-20000126-errata.

Sommaire

1. Qu'est-ce que XHTML ?
1.1 Qu'est-ce que HTML 4?
1.2 Qu'est-ce que XML?
1.3 Pourquoi XHTML?
2. Définitions
2.1 Terminologie
2.2 Termes généraux
3. Définition normative de XHTML 1.0
3.1 Conformité du document
3.2 Conformité de l'agent utilisateur
4. Différences avec le HTML 4
5. Problèmes de compatibilité
5.1 Types de média internet
6. Prospectives futures
6.1 Modulariser HTML
6.2 Sous-ensembles et extensibilité
6.3 Profils de Document
Appendice A. DTDs
Appendice B. Elément interdits
Appendice C. Règles de compatibilités du HTML
Appendice D. Remerciements
Appendice E. Références
1. Qu'est-ce que XHTML ?

XHTML est une famille de types de documents futurs et actuels et de modules qui reproduit, détermine des sous-ensembles, et étends HTML 4 [HTML]. La famille XHTML des types de documents est basée sur XML, et est conçue finalement pour fonctionner en accord avec les agents utilisateurs supportant XML. Les détails de cette famille et de son évolution sont discutés plus en détail dans la section Prospectives futures.

XHTML 1.0 (cette spécification) est le premier type de document dans la famille XHTML. C'est une reformulation des trois types de documents HTML 4 en tant qu'applications de XML 1.0 [XML]. Il a été conçu dans le but d'être utilisé come un langage pour le contenu qui est, à la fois, conforme à XML et, si des règles simples sont suivies, fonctionne également avec les agents utilisateurs compatible HTML4. Les développeurs qui font migrer leur contenu vers XHTML 1.0 réaliseront les bénéfices suivants :

Les documents XHTML sont conformes à XML. Ainsi, ils sont directement lisibles, éditables, et validables avec les outils XML standards.
Les documents XHTML peuvent être écrits pour fonctionner aussi ou mieux qu'ils ne le faisaient précédemment dans les agents utilisateurs compatibles HTML 4 ainsi que que dans les nouveaux agents utilisateurs compatibles XHTML 1.0.
Les documents XHTML peuvent utiliser des applications (soit des scripts et des applets) qui repose sur le Modèle Objet de Document HTML autant que sur le Modèle Objet de Document XML [DOM].
La famille XHTML des documents évoluant, les documents compatibles à XHTML 1.0 pourront interagir bien plus facilment au sein d'environnements XHTML variés.
La famille XHTML est la prochaine étape de l'évolution d'internet. En migrant aujourd'hui vers XHTML, les développeurs de contenu peuvent entrer dans le monde XML avec tous ses bénéfices attendus, tout en restant confiant sur la compatibilité ascendante et future de leur contenu.

1.1 Qu'est-ce que HTML 4 ?

HTML 4 [HTML] est une application SGML (Standard Generalized Markup Language) conforme au standard international ISO 8879, et qui est largement admise comme le standard du langage de publication du World Wide Web.

SGML est un langage pour décrire les langages de structuration (balisage), particulièrement ceux utilisées dans l'échange de documents électroniques, la gestion documentaire, et la publication de document. HTML est un exemple de langage défini en SGML.

SGML a été créé au milieu des années 80 et est resté stable. Cette stabilité est inhérente au fait que le langage est riche de fonctionnalité et souple. Cette souplesse a, tout de même, un prix, et ce prix est un niveau de complexité qui a empêché son développement dans une grande diversité d'environnements, dont le World Wide Web.

HTML, comme il a été conçu à l'origine, a été défini pour être un langage d'échange de documents scientifiques et techniques, et utilisable par des non spécialistes de la grammaire syntaxique. HTML a résolu le problème de la complexité SGML en spécifiant un petit ensemble de balises sémantiques et structurelles, facilement utilisable pour l'écriture de documents relativement simples. De même pour simplifier la structure du document, HTML a ajouté la possibilité de l'hypertexte. Les capacités Multimedia seront ajoutées plus tard.

En un cours espace de temps, HTML est devenu très populaire et a rapidement dépassé sa fonction première. Depuis le commencement de HTML, il y a eu rapidement création de nouveaux éléments au sein de HTML (en tant que standard) et pour adapter HTML aux marchés verticaux, hautement spécialisés. Cette plethore de nouveaux éléments a finalement créé des disparités de compatibilité entre les différentes plateformes.

Comme l'hétérogénité, à la fois des logiciels et des plateformes, s'est rapidement répandue, il est devenu évident que la facilité d'utilisation du HTML 4 'classique' sur ces plateformes est quelque peu limité.

1.2 Qu'est-ce que XML ?

XMLMD est l'abbréviation de Extensible Markup Language, et est un acronyme de Extensible Markup Language [XML].

XML a été conçu comme un moyen de regagner la puissance et la souplesse de SGML sans pour autant subir sa complexité. Bien qu'étant une forme restreinte de SGML, XML préserve pratiquement toute la puissance et la richesse de SGML, et respecte toutes les options habituellement utilisées de SGML.

Bien que conservant ces options avantageuses, XML élimine la plupart des options complexes de SGML qui rendent la conception et l'écriture de logiciels utiles, à la fois difficile et couteux.

1.3 Pourquoi XHTML ?

Les bénéfices de la migration vers XHTML 1.0 sont décris plus hauts. Quelques uns des bénéfices en général sont :

Les développeurs de document et les concepteurs d'agents utilisateurs ont constamment la possibilité de découvrir de nouvelles façons d'exprimer leurs idées grâce à de nouveaux balisages. En XML, il est relativement facile d'introduire de nouveaux éléments ou des attributs d'éléments supplémentaires. La famille XHTML est conçue pour accepter ces extensions grâce à des modules XHTML et pour accepter des techniques de développement de nouveaux modules XHTML compatibles (décrit dans la spécification à venir sur XHTML Modularization). Ces modules permettront la combinaison d'ensembles de fonctionnalités déjà existantes et nouvelles, tout en développant le contenu et en concevant les agents utilisateurs.
Des manières alternatives d'accéder à internet sont constamment créées. Des estimations prédisent qu'en 2002, 75% des documents consultés sur internet, le seront sur ces plateformes alternatives. La famille XHTML est conçue en gardant à l'esprit la notion d'interopérabilité entre les agents utilisateurs. A travers un nouveau mécanisme de traitement de l'agent utilisateur et du document, les serveurs, les proxys et les agents utilisateurs seront capables d'effectuer la transformation la plus efficace possible du contenu. Finalement, il sera possible de développer du contenu compatible XHTML qui est utilisable par n'importe quel agent utilisateur compatible XHTML.
2. Définitions

2.1 Terminologie

Les termes suivants sont utilisés dans la spécification. Ces termes étendent les définitions contenus dans la [RFC2119] en s'appuyant sur des définitions similaires à celles de l'ISO/IEC 9945-1:1990 [POSIX.1]:

Défini possible (Implementation-defined)
Une valeur ou un comportement est défini possible [et documenté] lorsque les exigences pounr une construction correcte du document sont laissées à la mise-en-oeuvre propre de celui-ci.
Peut (May)
Par rapport aux mises en oeuvre, le mot "peut" (may) doit être interprêté comme une caractéristique optionnelle qui n'est pas exigée dans cette spécification mais qui peut être fournie. Par rapport à la Conformité du document, le mot "peut" (may) signifie que la caractéristique optionnelle ne doit pas être utilisée. Le terme "optionnel" (optional) a la même définition que "peut" (may).
Doit (Must)
Dans cette spécification, le mot "doit" (must) signifie une exigence obligatoire de la mise en oeuvre ou dans des Documents XHTML Strictement Conformes, dépendant du contexte. Le terme "shall" a la même définition que "doit" (must).
Réservé (Reserved)
Une valeur ou un comportement est non spécifié, mais il n'est pas permis de l'utiliser dans un document conforme ou bien d'être mise en oeuvre au sein des agents utilisateurs conformes.
Devrait (Should)
Par rapport aux mises en oeuvre, le mot "devrait" (should) est défini comme une possibilité de la recommandation, mais non pas comme une exigence. Par rapport aux documents, le mot "devrait" (should) est défini comme une pratique recommandée de programmation pour les documents et une exigence pour les Documents XHTML Strictement Conformes.
Maintenu (Supported)
Certains aménagements de cette spécification sont optionnels. Si un aménagement est maintenu, il se conforme tel que spécifié par cette spécification.
Non spécifié (Unspecified)
Quand une valeur ou un comportement sont non spécifiés, la spécification ne définit pas d'exigences particulières de portabilité pour l'aménagement de sa mise en oeuvre même lorsque ce document utilise l'aménagement en question. Un document qui requière un comportement spécifique n'est pas un DOcument XHTML Strictement Conforme, plutôt que tolérer quelque comportement utilisant cet aménagement.
2.2 Termes généraux

Attribut
Un attribut est un paramètre pour un élément déclaré dans la DTD. Un type d'attribut et un intervalle de valeurs, dont possiblement une valeur par défaut, sont définis dans la DTD.
DTD
Une DTD, ou définition de type de document, est un assemblage de déclarations XML qui, en tant qu'assemblage, définit la structure légale, les éléments, et les attributs qui sont disponibles pour un document se conformant à la DTD.
Document
Un document est un flux de données qui, après avoir été combiné avec tout autre flux qu'il référence, est structuré de manière à ce que l'information contenu à l'intérieur des éléments soit organisée tel que défini par la DTD associée. Voir Conformité du document pour plus d'informations.
Elément
un élément est une unité structurante du document déclarée dans la DTD. Le modèle de contenu de l'élément est définit dans la DTD, et la sémantique supplémentaire peut être défini dans la description factuel de l'élément.
Aménagements
Les fonctionnalités comprennent les éléments, les attributs, et les sémantiques associées à ces éléments et ces attributs. Une mise en oeuvre rendant possible cette fonctionnalité est définie pour fournir les aménagements nécessaires.
Mise en oeuvre
Une mise en oeuvre est un système qui fournit un assemblage d'aménagements et de services qui rendent possible cette spécification. Voir Conformité de l'agent utilisateur pour plus d'informations.
Parser
Parser est l'acte par lequel un document est examiné, et par lequel l'information contenue à l'intérieur de ce document est filtré dans le contexte des éléments structurant l'information.
Interprétation
L'interprétation est l'acte par lequel l'information dans un document est présentée. Cette présentation est faite dans la forme la plus appropriée dépendant de l'environnement (soit sonore, visuelle, imprimé).
Agent utilisateur
Un agent utilisateur est une mise en oeuvre qui extrait et traite les documents XHTML. Voir Conformité de l'agent utilisateur pour plus d'informations.
Validation
La validation est traitement par lequel des documents sont vérifiés en fonction de la DTD associée, assurant que la structure, l'utilisation des éléments, et l'utilisation des attributs sont en accord avec les définitions de la DTD.
Bien rédigé
Un document est bien rédigé lorsqu'il est structuré en accord avec les règles définies dans la Section 2.1 de la recommandation XML 1.0 [XML]. Simplement, cette définition dit que les éléments, délimités par leurs balises de début et de fin, sont correctement emboîtés les uns par rapport aux autres.
3. Définition normative de XHTML 1.0

3.1 Conformité du document

Cette version de XHTML fournit une définition des documents XHTML strictement conformes, ce qui la restreint aux balises et attributs de l'espace nominatif XHTML. Voir Section 3.1.2 pour avoir de l'information sur l'utilisation de XHTML avec d'autres espaces nominatifs, par exemple, pour inclure des données méta exprimées en RDF à l'intérieur des documents XHTML.

3.1.1 Documents strictement conformes

Un Document XHTML strictement conforme est un document qui requiert que tous les aménagements soit décrites comme obligatoires dans cette spécification. Un tel document doit recouvrir tous les critères suivants :

Il doit être validé par l'une des trois DTDs fournies dans l'Appendice A.

L'élément racine du document doit être .

L'élément racine du document doit nommer l'espace nominatif XHTML en utilisant l'attribut xmlns [XMLNAMES]. L'espace nominatif pour XHTML est défini par http://www.w3.org/1999/xhtml.

Une déclaration DOCTYPE doit être présente dans le document avant l'élément racine. L'identificateur publique inclue dans la déclaration DOCTYPE doit faire référence à l'une des trois DTDs fournies dans l'Appendice Aen utilisant l'Identificateur Publique Formel. Le système identificateur peut être changé pour agréer aux conventions des systèmes locaux.






Voici un exemple de document XHTML minimal





Virtual Library


Moved to vlib.org.



Notez que dans cet exemple, la déclaration XML est inclue. Une déclaration XML comme celle-ci n'est pas requise dans tous les documents XML. Les auteurs de documents XHTML sont fortement encouragés d'utiliser des déclarations XML dans tous leurs documents. Ce type de déclaration est requis lorsque l'encodage du document est différent de ceux par défaut tels que UTF-8 ou UTF-16.

3.1.2 Utiliser XHTML avec d'autres espaces nominatifs

L'espace nominatif XHTML peut être utilisé conjointement avec d'autres espaces nominatifs comme par [XMLNAMES], bien que ce type de documents ne soient pas des documents XHTML 1.0 strictement conformes au sens défini plus tôt. Les travaux futurs du W3C donneront des moyens pour spécifier la conformité des documents impliquant plusieurs espaces nominatifs.

L'exemple suivant montre la manière permettrait d'utiliser conjointement XHTML 1.0 et la recommandation MathML :



A Math Example


The following is MathML markup:




3

x




L'exemple suivant montre la manière qui permettrait d'utiliser le balisage XHTML 1.0 en l'incorporant dans un autre espace nominatif XML :




Cheaper by the Dozen
1568491379


This is also available online.



3.2 Conformité de l'agent utilisateur

Un agent utilisateur conforme doit respecter tous les critères suivants :

Tout d'abord pour être en accord avec la recommandation XML 1.0 [XML], l'agent utilisateur doit examiné et évalué un document XHTML pour vérifier sa bonne rédaction (grammaire). Si l'agent utilisateur requiert d'être un agent utilisateur de validation, il doit également valider les documents selon les DTDs fournies en accord avec [XML].
Lorsque l'agent utilisateur requiert des aménagements maintenus définis à l'intérieur de cette spécification ou requis par cette spécification au travers d'une référence normative, Il doit le faire de façon à rester en accord avec la définition des aménagements.
Lorsqu'un agent utilisateur traite un document XHTML comme du XML générique, ll ne devrait uniquement reconnaître que les attributs de type ID (soit l'attribut id de la plupart des éléments XML) comme les identificateurs partiels.
Si un agent utilisateur rencontre un élément qu'il ne reconnaît pas, il doit interpréter le contenu de l'élément.
Si un agent utilisateur rencontre un attribut qu'il ne reconnaît pas, il doit ignorer la spécification complète de l'attribut (soit l'attribut et sa valeur).
Si un agent utilisateur rencontre une valeur qu'il ne peut pas reconnaître, il doit utiliser la valeur par défaut de l'attribut.
S'il rencontre une référence d'entité (autres que celles des entités prédéfinies) pour lequel l'agent utilisateur n'a pas traité de déclaration (ce qui peut arriver si la déclaration est un sous-ensemble externe non lu par l'agent utilisateur), la référence d'entité doit être interprétée en tant que caractères (démarrant avec un esperluette et se terminant par un point-virgule) tels qu'ils décrivent la référence d'entité.
Lorsque le contenu est interprété, Les agents utilisateurs qui rencontrent des caractères ou des références d'entité caractère qui sont reconnus mais non interprétables devrait afficher le document de façon à mettre en évidence que l'interprétation normale n'a pas eu lieu.
Les caractères suivants sont définis en [XML] comme des caractères d'espacement :
Espacement ( )
Tabulation ( )
Retour Charriot ( )
Fin de ligne ( )
Le processeur XML normalise les codes de fin de ligne des différents systèmes en un unique caractère de fin de ligne, qu'il passe ensuite à l'application. L'agent utilisateur XHTML doit, de plus, traiter les caractères suivants comme des espacements :

Avancement du papier (Form feed)
Espacement de largeur nulle
Dans les éléments où l'attribut 'xml:space' est défini comme 'preserve', l'agent utilisateur doit laisser tous les caractères d'espacement intacts (à l'exception des caractères d'espacement de début ou de fin, qui doivent être éliminés). Autrement, les espacements sont traités avec les règles suivantes :

Tout espace entourant des éléments de bloc doit être éliminé.
Les commentaires sont éliminés et n'affectent pas le traitement des espacements. Un caractère d'espacement de chaque côté d'un commentaire est traité comme deux caractères d'espacement.
Les espacements de début et de fin à l'intérieur d'un élément de bloc doit être éliminé.
Les caractères de fin de ligne à l'intérieur d'un élément de bloc doivent être convertis en un espacement (sauf si l'attribut 'xml:space'est défini comme 'preserve').
Une séquence de caractères d'espacement doit être réduit à un caractère d'espacement unique (sauf si l'attribut 'xml:space'est défini comme 'preserve').
En fonction de l'interprétation, l'agent utilisateur devrait interpréter le contenu de manière appropriée en respectant la langue dans laquelle le contenu est écrit. Dans les langues où l'écriture fondamentale est latine, le caractère d'espacement ASCII est typiquement utilisé pour encoder les limites grammaticales des mots et l'espacement typographique ; dans les langages dont l'écriture est relative au Nagari (c.a-d., le Sanskrit, le Thai, etc.), les limites grammaticales peuvent être encodées en utilisant le caractère d' 'espacement' ZW, mais qui ne sera pas traditionnellement représenté par l'espacement typographique dans les sorties interprétées ; les langages utilisant des écritures arabes peuvent encoder l'espacement typographique en utilisant le caractère d'espacement, mais peuvent également utiliser le caractère d'espacement ZW pour délimiter les limites grammaticales 'internes' (ce qui semble être des mots en Arabe pour un oeil d'une langue latine représente fréquemment plusieurs mots, par exemple 'kitAbuhum' = 'kitAbu-hum' = 'book them' = their book) ; et dans les langues d'écriture chinoise, il n'y a jamais eu de délimiteurs ou d'utilisation d'espaces typographiques utilisés dans ce sens.
Les valeurs d'attribut d'espacement est traité en suivant [XML].

4. Différences avec le HTML 4

Etant donné que XHTML est une application XML, quelques habitudes qui étaient parfaitement légales dans le HTML 4 basé sur SGML [HTML] doivent être changées.

4.1 Les documents doivent être correctement rédigés

La rédaction correcte est un nouveau concept introduit par [XML]. Essentiellement, cela signifie que tous les éléments doivent toujours avoir des balises de fin ou être écrit dans une forme particulière (comme expliqué plus bas), et que tous les éléments doivent être emboîtés.

Bien que le chevauchement soit illégal en SGML, il est largement toléré par les navigateurs actuels.

CORRECT : éléments emboités.

here is an emphasized paragraph.

INCORRECT : éléments se chevauchant

here is an emphasized paragraph.


4.2 Les noms d'élément et d'attribut doivent être en casse minuscule

les documents XHTML documents doivent utiliser la casse minuscule pour tous les noms d'élément HTML et les noms d'attribut. Cette différence est nécessaire car XML est sensible à la casse c.a-d.

et
sont des balises différentes.
4.3 Pour les éléments non-vides, les balises de fin sont obligatoires

Dans le HTML 4 basé sur SGML, il est possible d'omettre la balise de fin de certains éléments ; en considérant que l'élément suivant créé une balise de fin implicite. Cette omission n'est plus autorisée dans le XHTML basé sur XML. Tous les éléments autres que ceux déclarés dans la DTD comme EMPTY doivent posséder une balise de fin.

CORRECT : éléments terminés

here is a paragraph.

here is another paragraph.

INCORRECT : éléments non terminés

here is a paragraph.

here is another paragraph.
4.4 Les valeurs d'attributs doivent être toujours mise entre guillemets

Toutes les valeurs d'attributs doivent être mise entre guillemets, mais celles qui semblent être numériques.

CORRECT : valeurs d'attributes entre guillemets


INCORRECT : valeurs d'attributs sans les guillemets


4.5 Minimisation de l'attribut

XML ne supporte pas la minimisation de l'attribut. la paire Valeur-Attribut doit être écrite au complet. Les noms d'attributs tels que compact et checked ne peuvent pas pris comme éléments sans spécifier leurs valeurs.

CORRECT : attributs non minimisés

INCORRECT : attributs minimisés
4.6 Eléments vides les éléments vides doivent toujours avoir une balise de fin ou la balise de début doit se terminer avec />. Par exemple, ou . Voir les règles de compatibilités HTMLpour obtenir de l'information sur les moyens d'assurer une compatibilité antérieure avec les agent utilisateurs HTML 4. CORRECT : balises vides terminées
INCORRECT : balises vides non terminées
4.7 Traitement des espacements dans les valeurs d'attribut Dans les valeurs d'attributs, les agent utilisateurs oteront les espacements de début et de fin des valeurs d'attributs et dresseront une séquence d'un ou plusieurs caractères d'espacements (tels que les retours de lignes) à un unique espacement inter mots (un caractère d'espacement ASCII pour les écritures occidentales). Voir Section 3.3.3 of [XML]. 4.8 Les éléments Script et Style En XHTML, les éléments script et style elements sont déclarés comme ayant un contenu de type #PCDATA. Ainsi, < et & seront traités comme le début d'un balisage, et les entités comme < et & seront reconnus comme des références d'entités par le processeur XML, soit < et & respectivement. Emballer le contenu des éléments script ou style à l'intérieur d'une section marquée CDATA évitera la transformation de ces entités. les sections CDATA sont reconnus par le processeur XMLet apparaissent commes des noeuds dans le Modèle Object de Document (Document Object Model), voir Section 1.3 de la Recommandation DOM Niveau 1 [DOM]. Une alternative est d'utiliser des scripts et des styles externes. 4.9 Exclusions SGML SGML donne au rédacteur d'une DTD la possibilité d'exclure la présence de certains éléments à l'intérieur d'un élément. Une telle interdiction (appelée "exclusions") n'est pas possible en XML. Par exemple, la DTD HTML 4 Stricte interdit l'emboîtement d'un élément 'a' dans un autre élément 'a' à quelques profondeurs que ce soit. Il n'est pas possible de définir ce type d'interdiction en XML. Bien que cette interdiction ne puisse être défini dans la DTD, certains éléments ne devraient pas être emboîtés. Un sommaire de ce type d'éléments et des éléments qui ne devraient pas être emboîtés en leur sein est fournie dans l'Appendice B. 4.10 Les éléments avec les attributs 'id' et 'name' HTML 4 a défini l'attribut name pour les éléments a, applet, form, frame, iframe, img, and map. HTML 4 a également introduit l'attribut id. Ces deux attributs ont été conçus pour être utilisés comme des identificateurs partiels. En XML, Les identificateurs partiels sont de type ID, et il ne peut y avoir qu'un unique attribut ID par élément. En XHTML 1.0 l'attribut id est aussi défini de type ID. Pour s'assurer que les documents XHTML 1.0 sont des documents XML correctement structurés, les documents XHTML 1.0 DOIVENT utiliser l'attribut id quand l'identificateur partiel est défini, même sur les éléments qui historiquement ont également un attribut name. Voir les règles de compatibilité HTML pour obtenir de l'information pour assurer une compatibilité antérieures lorsque les ancres pointent sur des documents XHTML en tant que type de média text/html. Notez qu'en XHTML 1.0, l'attribut name de ces éléments est formellement abandonné, et il sera éliminé dans les versions suivantes de XHTML. 5. Problèmes de compatibilité Bien qu'il ne soit pas obligatoire que les documents XHTML 1.0 soient compatibles avec les agent utilisateurs actuels, cette option est facilement réalisable. Les régles pour créer des documents compatibles peuvent être trouvées dans l'Appendice C. 5.1 Type de Media Internet Comme la publication de cette recommandation, le nommage MIME général recommandé pour les applications n'a pas encore été résolus. Cependant, les documents XHTML qui suivent les régles définies dans l'Appendice C, "HTML Compatibility Guidelines" peuvent être nommés avec le Type Media Internet "text/html", lorsqu'ils sont compatibles avec la plupart des navigateurs HTML. Ce document ne fait aucune recommandation à propos du choix du nommage MIME pour les autres documents XHTML. 6. Directions futures XHTML 1.0 fournit les bases d'une famille de types de documents qui étendront et définiront des sous-ensembles XHTML, de façon à maintenir une large variété de nouveaux matériels et d'applications, en définissant des modules et en spécifiant le mécanisme pour combiner ces modules. Ce mécanisme permettra l'extension et la construction de sous-ensembles de XHTML 1.0 de façon unique à travers la définition de nouveaux modules. 6.1 Modularisation de HTML Comme l'utilisation de XHTML se fait des agents utilisateurs traditionnels vers d'autres plateformes, il est clair que tous les éléments XHTML ne seront pas nécessaires sur toutes les plateformes. Par exemple, un ordinateur de poche ou un téléphone cellulaire peuvent seulement maintenir un sous-ensemble d'éléments de XHTML. Le processus de modularisation éclate XHTML en une séries d'ensembles d'éléments plus petits. Ces éléments peuvent être recombinés afin de remplir les besoins de différentes communautés. Ces modules seront définis ultérieurement dans un document W3C. 6.2 Sous-ensembles et extensibilité La modularisation apporte certains avantages : Cela donne un mécanisme formel pour créer des sous-ensembles XHTML. Cela donne un mécanisme formel pour étendre XHTML. Cela simplifie la transformation entre les types de documents. Cela permet la réutilisation de modules dans de nouveaux types de document. 6.3 Profils de document Un profil de document spécifie la syntaxe et les sémantiques d'un ensemble de documents. La conformité à un profil de document donne une base pour garantir l'interopérabilité. Le profil de document spécifie les aménagements obligatoires pour traiter les documents de ce type, c.à-d. quels formats d'images peuvent être utilisés, niveaux de scripting, maintenance des feuilles de style, ainsi de suite. Les créateurs de produits cela permet à des groupes différents de définir leur propre profil standard. Pour les auteurs, cela permet d'éviter d'écrire différentes versions d'une même document pour différents clients. Pour des groupes particuliers comme les chimistes, les docteurs en médecine, ou les mathématiciens cela permet de construire un profil particulier en utilisant les éléments HTML standard, plus un groupe d'éléments spécifiques aux besoins de la spécialité. Appendice A. DTDs Cet appendice est normatif. Ces DTDs et ces ensembles d'entité forme une partie normative de cette spécification. L'ensemble complet des fichiers DTD ainsi que la déclaration XML et le SGML Open Catalog sont inclus dans le fichier zip pour cette spécification. A.1 Définitions de Type du Document Ces DTDs s'approchent des DTDs HTML 4. Il est préferrable lorsque les DTDs sont modularisées, d'employer une méthode de construction de la DTD qui se rapproche de HTML 4. XHTML-1.0-Strict XHTML-1.0-Transitional XHTML-1.0-Frameset A.2 Ensembles d'entité Les ensembles d'entité XHTML sont les mêmes que pour HTML 4, mais ont été modifiés pour des déclarations d'entités XML 1.0 valides. Notez que l'entité pour le symbole de la monnaie européenne Euro (€ ou € ou €) est défini comme faisant parti des caractères spéciaux. Caractères Latin-1 Caractères spéciaux Symboles Appendice B. Interdictions d'élément Cette appendice est normatif. Les éléments suivants ont des interdits sur les éléments qu'ils peuvent contenir (voir Section 4.9). Cette interdiction s'applique à toutes profondeurs d'emboîtements, c.à-d. pour tous les éléments fils. a ne peut pas contenir d'autres éléments a. pre ne peut pas contenir les éléments img, object, big, small, sub, ou sup. button ne peut pas contenir les élémentsinput, select, textarea, label, button, form, fieldset, iframe ou isindex. label ne peut pas contenir d'autres éléments label. form ne peut pas contenir d'autres élémentsform. Appendice C. Règles de Compatibilité HTML Cet appendice est informatif. Cet appendice résume les règles pour les auteurs qui souhaitent que leur document XHTML s'affiche sur les agents utilisateurs existants. C.1 Instructions de traitement Vérifiez que les instructions de traitement s'éxécutent sur les agent utilisateurs. Cependant, notez également que si la déclaration XML n'est pas incluse dans un document, le document peut utiliser uniquement le jeu de caractère par défaut UTF-8 ou UTF-16. C.2 Eléments vides Inclure un espacement avant le / et >de fin des éléments vides, par exemple ,
et Karen. Utilisez également une syntaxe minale pour les éléments vides, par exemple , comme syntaxe alternative de
qui est autorisé par XML, car cela donne des résultats inattendus dans certains agents utilisateurs. C.3 Minimisation d'élément et contenu d'élément vide Soit une occurrence vide d'un élément dont le modèle de contenu n'est pas EMPTY (par exemple, un titre ou un paragraphe vide), n'utilisez pas la forme minimisée (utilisez

et non pas

). C.4 Les feuilles de styles imbriquées et les scripts Utilisez des feuilles de style externe si votre feuille de style utilise < ou & ou ]]> ou --. Utilisez des scripts externes si vos scripts utilisent < ou & ou ]]> ou --. Notez que les parseurs XML ont le droit d'éliminer le contenu des commentaires. Par conséquent, la pratique historique de "cacher" ses scripts et ses feuilles de style au sein d'un commentaire pour rendre les documents compatibles avec les anciens navigateurs n'est pas conseillée car elle ne fonctionnera comme attendue dans les mises en oeuvre basées sur XML. C.5 Retours de ligne à l'intérieur des valeurs d'attributs Evitez les retours de ligne et les caractères d'espacement muliples au sein des valeurs d'attributs. Ils seront traités illogiquement par les agents utilisateurs. C.6 Isindex Ne mettez pas plus d'un élément isindex dans le head d'un document. L'élément isindex est abandonné en faveur de l'élément input. C.7 Les attributs lang et xml:lang Utilisez les deux attributs lang et xml:lang lorsque vous spécifiez le langage d'un élément. La valeur de l'attribut xml:lang est prioritaire. C.8 Identificateurs partiels En XML, les URIs [RFC2396] qui termine avec des identificateurs partiels de la forme "#foo" ne se réfère pas aux éléments avec un attribut name="foo" ; mais au contraire, ils se réfèrent aux éléments avec un attribut défini de type ID, c-à.d., l'attribut id de HTML 4. Beaucoup de clients HTML existants ne maintiennent pas l'utilisation des attributs de type ID de cette manière, donc des valeurs identiques doivent être fournies pour les deux attributs pour assurer une compatibilité ascendante et descendante maximum (c.à-d., ...). Egalement, depuis que l'ensemble des valeurs légales définies pour les attributs de type ID est bien plus restreint que pour ceux de type CDATA, le type de l'attribut name a été changé en NMTOKEN. Cet attribut est contraint de manière à ce qu'il ne puisse avoir que les mêmes valeurs que celles de type ID, ou comme la production Name en XML 1.0 Section 2.5, production 5. Malheureusement, cette contrainte ne peut pas être exprimée dans les DTDs XHTML 1.0. A cause de ces changements, la plus grande attention doit être prise lors de la conversion de vos documents HTML existants. Les valeurs de ces attributs doivent être uniques à l'intérieur d'un document, valides et toutes références à ces identificateurs partiels (qu'ils soient internes ou externes) doit être mise à jour même si les valeurs doivent être changées durant la conversion Finalement, notez que le XHTML 1.0 a abandonné l'attribut name des éléments a, applet, form, frame, iframe, img, and map, et qu'il sera éliminé dans les versions suivantes. C.9 Encodage de caractère Pour spécifier l'encodage de caractère dans le document, utilisez la spécification de l'attribut d'encodage dans la déclaration xml (par exemple ) et une déclaration meta http-equiv (par exemple ). La valeur de l'attribut d'encodage de instruction de traitement xml est prioritaire.

C.10 Attributs booléens

Quelques agent utilisateurs HTML sont incapables d'interprêter les attributs booléens quand ils apparaissent dans leur forme complète (non-minimisée), tels que requis par XML 1.0. Notez que ce problème n'affecte pas les agents utilisateurs compatibles avec HTML 4. Cela concerne les attributs suivants : compact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, noresize, defer.

C.11 Modèle Objet du Document et XHTML

La recommandation de Modèle Objet du Document niveau 1 [DOM] définit les interfaces du modèle objet du document pour XML et HTML 4. Le modèle objet du document du HTML 4 spécifie que les noms des élements et des attributs HTML sont retournés en casse majuscule. Le modèle objet du document XML spécifie que les noms des élements et des attributs sont retournés dans la casse spécifiée. En XHTML 1.0, les noms des éléments et des attributs sont spécifiés dans la casse minuscule. Cette différence apparente peut être fixée de 2 manières :

Les applications qui accèdent à des documents XHTML distribués avec le type de media Internet text/html via le DOM peuvent utiliser le DOM HTML, et peuvent s'appuyer sur des noms d'éléments et d'attributs retournés en majuscule par ces interfaces.
Les applications qui accèdent à des documents XHTML distribués avec le type de media Internet text/html ou application/xml peuvent également utiliser le DOM XML. Les noms des élements et des attributs seront retournés dans la casse minuscule. Quelques éléments XHTML peuvent apparaitre ou ne pas apparaître, également, dans l'arbre d'objet parce-qu'ils sont optionnels dans le modèle de contenu (par exemple l'élément tbody à l'intérieur d'un tableau table). Cela arrive parce-qu'en HTML 4 quelques éléments avaient la permission d'être minimisés tels que leur balise de début et de fin pouvaient être toutes les deux omises (une fonctionnalité SGML). Ce n'est pas possible en XML. Plutôt que de demander aux auteurs de document d'insérer des éléments hors contexte, XHTML a rendu les éléments optionnels. Les applications ont besoin de s'adapter en respectant cela.
C.12 Utilisation de l'esperluette dans les valeurs d'attributs

Quand une valeur d'attribut contient une esperluette, il doit être exprimé comme une référence d'entité du caractère (par exemple "&"). Par exemple, quand l'attribut href de l'élément a pointe vers un script CGI qui accepte des paramètres, il doit être exprimé comme ceci http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user plutôt que http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.

C.13 Feuilles de Style Imbriquées (CSS) et XHTML

La recommandation des feuilles de style imbriquée niveau 2 [CSS2] définit les propriétés qui sont appliquées à l'arbre d'analyse grammaticale du document HTML ou XML. Les différences dans l'analyse produiront différents résultats sonores ou visuels, dépendant des sélecteurs utilisés. Les indicateurs suivants réduiront cet effet pour des documents qui sont distribués sans modification des deux types de média :

les feuilles de style CSS pour le XHTML devrait utiliser des noms d'éléments et d'attributs de casse minuscule.
Dans les tableaux, l'élément tbody sera déduit par le parseur d'un agent utilisateur HTML, mais pas par le parseur de l'agent utilisateur XML. Par conséquent, vous devriez toujours ajouter explicitement un élément tbody si il se réfère à un sélecteur CSS.
Au sein de l'espace nominatif XHTML, les agent utilisateurs reconnaîtront l'attribut "id" comme un attribut de type ID. Par conséquent, les feuilles de style devraient être capable de continuer à utiliser la syntaxe raccourcie "#" du sélecteur même si l'agent utilisateur ne lit pas la DTD.
Au sein de l'espace nominatif XHTML, les agent utilisateurs reconnaîtront l'attribut "class". Par conséquent, les feuilles de style devraient être capable de continuer à utiliser la syntaxe raccourcie "." du sélecteur.
Les CSS définissent différentes règles de conformité pour les documents HTML et XML ; faites attention que les règles HTML s'appliquent aux documents XHTML distribués en tant que HTML et que les règles XML s'appliquent aux documents XHTML distribués en tant que XML.