Emacs

De EduTech Wiki
Aller à la navigation Aller à la recherche

Cet article est une ébauche à compléter. Une ébauche est une entrée ayant un contenu (très) maigre et qui a donc besoin d'un auteur.

Emacs est un éditeur de texte (donc un outil pour programmeurs) très puissant. Il existe depuis plus de trente ans et continue d'évoluer. Il existe plusieurs variantes, dont le (presque original) Gnu Emacs.

Emacs fut utilisé dans l'enseignement à TECFA, mais été remplacé par des éditeurs plus faciles et moins puissants. La raison d'être pour cette page était de récupérer une description du module PSGML qu'il fallait enlever de l'article Tutoriel DTD - 1 mars 2011 à 11:29 (CET).

Voir Emacs (Edutechwiki Anglais).


Modules

Utilisation de psgml/Xemacs

Xemacs est un éditeur de programmation, chaptitre à bouger ailleurs !!

Note: il existe une logique assez similaire pour les "vrais" éditeurs XML. Si XEmacs ne convient pas, il faut absolument utiliser un outil qui sait "utiliser" un DTD pour vous aider à rédiger, comme Exchanger lite, Xerlin ou Merlot (gratuits), Oxygen, XML Spy, XML Writer, etc.).

Installation et activation:

  • psgml est un “module” XEmacs pour faire du SGML et XML
  • Le module psgml est normalement compris dans une installation complète
  • Il se charge automatiquement pour les fichiers *.xml
    • Si ce n’est pas le cas, taper: ALT-x xml-mode(pour les fichier *.html qui contiennent XHTML par exemple, note: sur notre serveur les fichiers *.xhtml sont servis comme “XML” (pas lisibles pour les anciens navigateurs)

Utilisation d’une DTD privée

  • copier la DTD dans le même répertoire
  • et utiliser la déclaration de type suivante:
<!DOCTYPE hello SYSTEM "hello.dtd">

Utilisation d’une DTD publique

  • Avantage: si le client (Mozilla, Xemacs, etc.) sait interpréter une déclaration, on n’est pas obligé de renvoyer à un fichier DTD

Xemacs connaît déjà certaines DTD, vous pouvez vérifier en regardant dans le fichier CATALOG

Insertion d’une nouvelle DTD dans le système

  • Il faut localiser le fichier CATALOG, il se trouve à un endroit comme celui-ci:
c:\Program Files\XEmacs\xemacs-packages\etc\psgml-dtds\CATLOG
  • Il faut ajouter le type de lignes suivantes dans le fichier CATALOG:

Exemple Windows simple:

PUBLIC "-//TopicMaps.Org//DTD XML Topic Map (XTM) 1.0//EN" xtm1.dtd
  • Exemple Unix:
PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" /web/lib/xml/dtd/rss-0.91.dtd
PUBLIC "-//TECFA//DTD Stepbystep 0.3//EN" /web/lib/xml/dtd/stepbystep03.dtd
PUBLIC "-//W3C//DTD SVG 1.0//EN" /web/lib/xml/dtd/svg10.dtd
  • La syntaxe est simple:
PUBLIC "nom du DTD" chemin-local-du-fichier.dtd

On vous conseille de mettre les DTD soit dans un répertoire spécial, soit au même endroit que CATALOG.

Retrouver des DTDs publics:

  • Le site http://www.w3.org/
  • Les organisations responsables des différentes DTD
  • Regarder dans un fichier XML en question (“View Source”)
  • Note: pour retrouver le nom public d’une DTD on conseille de trouver un exemple, puis de copier la déclaration.

Commandes XEmacs/psgml de base

ALT-X xml-mode

met l’éditeur en mode XML

DTD->Parse DTD

relit la DTD (utile si vous faites des changements dans la DTD et/ou si vous déclarez la DTD plus tard)

Move->Next trouble spot

affiche la prochaine erreur (à partir de la position du curseur)

Note: il s’agit d’une validation “light”, XEmacs ne trouve pas tout.

Quelques messages d’erreur dans Emacs

p end-tag implied by p start-tag
p end-tag implied by h1 start-tag

Veut dire que Xemacs est tombé sur une balise <p> (ou <h1>) à un endroit, alors qu’il aurait du trouver une balise

. Autrement dit, on a oublié de fermer un paragraphe.

head element can’t end here, need one of (title base)
ul element can’t end here, need one of (li)

Veut dire qu’il manque un élément dans <head> ... </head>, en l’occurence soit "title", soit "base". Pareil pour "ul" et "li" ... Autrement dit, certaines balises exigent qu’il y ait des balises imbriquées et ces balises manquent.

Out of context bla tag

Veut dire qu’il ne peut pas avoir un <bla> ... </bla> à cet endroit. Autrement dit, on a pas le droit d’utiliser une balise n’importe où.