Entradas etiquetadas como xml
Uso de APIs web RESTful con Python requests
Publicado por albertomolina en General el 20-02-13
Uno de los métodos que se están imponiendo en Internet para la comunicación de aplicaciones con servicios web disponibles es una API web tipo RESTful o REST, este método está desplazando paulatinamente a XML-RPC que está en progresivo desuso o SOAP, protocolo que es una recomendación de la W3C para ofrecer servicios web.
Las API REST está imponiéndose a otros métodos por su sencillez, y a pesar de que no son un protocolo bien establecido como SOAP, tienen un conjunto de aspectos que las definen:
- Se utiliza una URI para definir el servicio web
- Los datos se transfieren utilizando un formato como estandarizado (XML y JSON son los dos más extendidos actualmente)
- Se utilizan métodos estándar HTTP: GET, POST, PUT o DELETE
En esta entrada veremos mediante algunos ejemplos la forma de utilizar APIs REST desde una aplicación Python, utilizando la biblioteca requests.
xhtml 1.0 strict en emacs con nxml-mode
Publicado por albertomolina en General el 23-10-12
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”
Primeros pasos con DocBook
Publicado por albertomolina en General el 29-04-12
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.
Servicios web
Publicado por albertomolina en General el 16-04-12
Pequeña introducción a los servicios web para utilizar en el curso de Lenguajes de Marcas:
Emacs como editor XML
Publicado por albertomolina en General el 28-10-10
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


Comentarios