martes, 5 de mayo de 2009

AAP BloqueT2.12 ejercicio1

Para los atributos en XPath se usa la expresión @atributo. Sabiéndolo, poner la expresión XPath que, en los XML de habitaciones anterior, imprima todos los nodos que tengan puerta a una habitación determinada.
Primero hay que definir el archivo que vamos a analizar: muebles.xml

<?xml version="1.0" encoding='iso-8859-1' ?>
<micasa>
<habitacion id='comedor'>
<mueble>aparador</mueble>
<mueble>sofá</mueble>
<puerta a='balcón' />
</habitacion>
<habitacion id='cocina'>
<mueble>encimera</mueble>
<mueble>horno</mueble>
<puerta a='comedor' />
</habitacion>
<habitacion id='baño'>
<mueble>espejo</mueble>
<mueble>estantería</mueble>
<puerta a='comedor' />
</habitacion>
</micasa>


A continuación preparamos el programa en Ruby que encuentra las habitaciones que tienen una puerta con dirección a la habitación pasada por parámetro: muebles.rb

#!/usr/bin/ruby

require 'rexml/document'
include REXML
destino = ARGV[0]
documento = 'muebles.xml'
file = File.new(documento)
doc = Document.new(file)
XPath.each(doc,"//habitacion[puerta[@a='"+destino+"']]/@id") { |habitacion|
puts "*"+habitacion.value
}


Por último, si ejecutamos en la terminal el comando ./muebles.rb comedor nos devuelve lo siguiente:
afharo@ajelandroHP:~/AAP/Clase 18/bloqueT212ej1$ ./muebles.rb comedor
*cocina
*baño

No hay comentarios:

Publicar un comentario