#!/usr/bin/ruby
require 'rexml/document'
include REXML
documento = ARGV[0]
habitacion = ARGV[1]
file = File.new(documento)
doc = Document.new(file)
XPath.each(doc,"//habitacion[puerta[@a='#{habitacion}']]") { |habit|
puts "*"+habit.attributes['id']
}
Y el archivo de XML que hemos utilizado es este:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE micasa PUBLIC "MI CASA" "micasa.dtd">
<micasa>
<habitacion id="cuarto de baño">
<mueble>aparador</mueble>
<mueble>bañera</mueble>
<puerta a='pasillo' />
</habitacion>
<habitacion id="pasillo">
<mueble>cuadro</mueble>
<puerta a='cuarto de baño' />
<puerta a='dormitorio' />
<puerta a='recibidor' />
</habitacion>
<habitacion id="recibidor">
<mueble>espejo</mueble>
<puerta a="pasillo" />
</habitacion>
</micasa>
Y he logrado que muestre todas las habitaciones uqe tienen una puerta al destino que se le pase como parámetro, de la forma:
./xpath.rb pasillo
que devolverá:
- *cuarto de baño
- *recibidor
No hay comentarios:
Publicar un comentario