-Su nombre viene de eXtenseble Markup Language (lenguaje de
marcas extensible)
Un lenguaje de marcado o lenguaje de marcas es una forma de
codificar un documento que, junto con el texto, incorpora etiquetas o marcas que contienen información adicional acerca de la estructura del texto o su presentación. El lenguaje de marcas más extendido es el
HTML
XML fue desarrollado por un Grupo de Trabajo SGML (originalmente
conocido como "SGML Editorial Review Board") formado bajo los
auspicios del Consorcio World Wide Web (W3C), en 1996.
Los objetivos de diseño de XML son:
• Debe ser directamente utilizable sobre Internet.
• Soportar una amplia variedad de aplicaciones.
• Debe ser fácil la escritura de programas que procesen
documentos XML.
• Los documentos XML deben ser legibles por humanos y
razonablemente claros.
• El diseño debe ser preparado rápidamente, además, de ser
formal y conciso.
• Los documentos XML deben ser fácilmente creables.
Instalando rubygems y builder
Se nos ofrece una librería que nos ayuda a construir esto de forma
sencilla. La librería en cuestión es 'builder', y tenemos que instalarla, ya que no viene con el paquete básico de ruby.
Para instalarla, debemos utilizar rubygems, que es un gestor de librerías que nos sirve para instalar, eliminar y actualizar las librerías que tengamos instaladas en el equipo.
Para saber si tenemos instalado rubygems, abrir un terminal y escribir
gem –version
Si da un error, debemos intalar rubygems en nuestro equipo.
La instalación desde linux es bastante fácil.
En un terminal escribir lo siguiente:
sudo aptget install rubygems
Saldrán unas cuantas cosas en la consola y al final un mensaje que indica que se ha instalado correctamente.
A continuación se debe escribir lo siguiente para instalar el paquete builder:
gem install builder
Igual que antes, saldrán unas cuantas cosas en la pantalla. Salvo que se lea un mensaje de error, quedará bien instalado en nuestro ordenador.
En el caso de que falle algún paquete escribir la siguiente linea:
export RUBYOPT=rubygems
Crear un documento xml con builder:
Lo primero de todo es crear una variable que represente al documento xml que vamos a escribir.Para ello utilizamos el método Builder::XmlMarkup.new Este método recibe como parámetro el destino, (identificado por la clave :target ) donde se escribirá lo que vayamos haciendo con el objeto que acabamos de crear (debe responder al método <<) Se pueden especificar más parámetros, como el número de espacios que se incluirán al anidar elementos o el margen inicial en el que se empezará a escribir.
Ejemplo x= Builder::XmlMarkup.new:target => $stdout
Con esto, todo lo que se escriba en la variable x se escribirá por la salida estándar.
Escribiendo etiquetas:
Con todo lo anterior, ya tenemos el documento preparado para empezar a escribir la información que queramos en ella.
Para crear una etiqueta, simplemente llamamos al método:
x.h1 "Encabezado h1Generará lo siguiente:
Encabezado h1Especificando atributos en una etiqueta
Para especificar algun tipo de atributo, se hace mediante un hash, en el que la clave será el nombre del atributo y el valor de dicha clave, el valor que tomará el atributo.
x.h1 "Encabezado h1", :id => 'encabezado' escribirá
Encabezado h1
Anidando etiquetas
Podemos anidar etiquetas a base de abrir bloques:
x.ul {
x.li 'Manzana', :class => 'fruta'
x.li 'Fresa', :class => 'fruta'
x.li 'Albaricoque', :class => 'otra_clase'
}
Daría como resultado
- Manzana
- Fresa
- Albaricoque
Otra forma de hacerlo seria:
x.tag!(:ul, :id => 'lista_frutas'){
x.li 'Manzana', :class => 'fruta'
x.li 'Fresa', :class => 'fruta'
x.li 'Albaricoque', :class => 'otra_clase'
}
Daría como resultado
- Manzana
- Fresa
- Albaricoque
require "persona"
require "builder"#incluida en libraria
p1=Persona.new("Pepito","Gonzalez","29")
p2=Persona.new("Raquel","Blanco","31")
p3=Persona.new("Rodrigo","Fernandez","32")
personas=Array.new
personas<< < f, :indent => 2)
x.personas{
personas.each do |elemento|
x.tag!(:persona, :edad => elemento.edad){
x.nombre elemento.nombre
x.apellido elemento.apellidos
}
end
}
end
Este código generaría la siguiente salida en un fichero:
Pepito
Gonzalez
Raquel
Blanco
Rodrigo
Fernandez
No hay comentarios:
Publicar un comentario