Entradas etiquetadas como emacs

xhtml 1.0 strict en emacs con nxml-mode


El modo por defecto que utiliza el editor emacs para trabajar con ficheros html se denomina html-mode, pero me resulta más cómodo utilizar el modo genérico nxml para trabajar con ficheros xml (en este caso será con xhtml). En esta breve entrada explicaremos los pasos que hay que dar para utilizar nxml adecuadamente con ficheros html, seleccionando el esquema concreto que queramos utilizar.

Modo nxml para ficheros html

En primer lugar hay que decirle a emacs que cuando se abra un fichero con extensión .html, no debe activar el modo html, sino que en su lugar debe activar el modo nxml. Para ello editamos el fichero de configuración de nuestro usuario (por ejemplo ~/.emacs) e incluimos la línea (aprovechamos e incluimos en este modo también los ficheros con extensión .xml, .xsl y .xhtml):

(setq auto-mode-alist
      (cons '("\\.\\(xml\\|xsl\\|xhtml\\|html\\)\\'" . nxml-mode)
            auto-mode-alist)

De esta manera cada vez que abramos un fichero de extensión .html o .xhtml se activará el modo nxml.

Seleccionar un esquema concreto

Hay más de un esquema en XHTML 1.0 para validar los documentos, más concretamente los dos más habituales son XHTML 1.0 Transitional y XHTML 1.0 Strict (¿y XHTML 1.0 Frameset? Ejem. pasapalabra). Emacs en modo nxml utiliza por defecto XHTML 1.0 transitional, que es más tolerante que el modo Strict. Sin embargo, es mucho más adecuado para aprender HTML utilizar el modo estricto, por lo que vamos a cambiar el comportamiento de emacs para que cargue el esquema de XHTML 1.0 Strict por defecto.

Añadimos la siguiente línea a nuestro fichero de configuración de Emacs (~/.emacs por ejemplo):

(eval-after-load 'rng-loc '(add-to-list 'rng-schema-locating-files "~/.schemas/schemas.xml"))

Para que se busquen los esquemas de los diferentes dialectos en el directorio ~/.schemas, de acuerdo a lo especificado en el fichero schemas.xml, por lo que el siguiente paso es crear el directorio ~/.schemas y ubicar allí el fichero schemas.xml con el siguiente contenido:

<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
    <namespace ns="http://www.w3.org/1999/xhtml" typeId="XHTML"/>
    <typeId id="XHTML" typeId="XHTML Strict"/>
    <typeId id="XHTML Strict" uri="xhtml-strict.rnc"/>
    <typeId id="XHTML Transitional" uri="xhtml-transitional.rnc"/>
</locatingRules>

Ahora tenemos que ubicar dentro del directorio ~/.schemas los ficheros con los esquemas de XHTML 1.0 Strict y XHMTML 1.0 Transitional en formato Relax NG Compact que utiliza Emacs. En primer lugar instalamos los paquetes xhtml-relaxng y trang. El primero incluye los esquemas de XHTML, pero en formato rng, no rnc y trang es una aplicación que permite transformar uno en otro.

Copiamos el directorio con los esquemas de XHTML en formato rng a un directorio temporal:

$ cp -a /usr/share/xml/xhtml-relaxng /tmp/esquemas/

Utilizamos trang para transformar los ficheros .rng a .rnc:

$ cd /tmp/esquemas
$ trang -I rng -O rnc xhtml.rng xhtml-transitional.rnc
$ trang -I rng -O rnc xhtml-strict.rng xhtml-strict.rnc

Por último movemos todos los ficheros en formato .rnc al directorio ~/.schemas:

$ mv *.rnc ~/.schemas

Ahora podremos decidir el esquema a utilizar a través del menú “XML > Set Schema > For Document Type”

Anuncios

, ,

1 comentario

Primeros pasos con DocBook


Para realizar presentaciones o documentos de texto, en lugar de utilizar aplicaciones ofimáticas, llevo muchos años utilizando LaTeX. LaTeX es muy potente y el resultado final es impresionante, es el formato estándar para publicar documentación científica y era el formato utilizado para crear de forma colaborativa documentación en proyectos de software libre, sin embargo hace años surgió el formato Docbook, que ha sustituido a LaTeX en determinados ámbitos, en particular en este último. No tengo todavía una opinión formada sobre las ventajas de uno sobre otro, creo que voy a empezar a utilizar DocBook para determinadas cosas e iré aprendiendo de la experiencia.

En esta entrada se explica una manera de empezar a trabajar con DocBook (versión 5), utilizando Emacs como editor y Debian GNU/Linux (squeeze) como sistema operativo.

Leer el resto de esta entrada »

, ,

3 comentarios

Emacs como editor XML


Emacs es un extraordinario editor de textos que utilizo desde hace años (más de la cuenta :-) ), principalmente para algunas cosas de programación y LaTeX. Este año estoy descubriendo las posibilidades que tiene como editor XML utilzando el modo nxml.

En esta entrada se explica la configuración de emacs con el modo nxml, los pasos para transformar un esquema cualquiera al formato a rnc utilizado por emacs y cómo se demuestra la utilidad de XML con la validación al vuelo de documentos. En particular vamos a utilizar los esquemas de la api de virtualización libvirt y veremos que es mucho más sencillo así editar manualmente los ficheros de configuración para las máquinas y redes virtuales.

Esta implementación se ha realizado utilizando paquetes oficiales de la distribución de pruebas (actualmente squeeze) de Debian GNU/Linux, aunque seguramente es posible utilizarlo con pocos cambios en otras distribuciones GNU/Linux

Leer el resto de esta entrada »

, ,

1 comentario

A %d blogueros les gusta esto: