sábado, 9 de mayo de 2009

Bloque T2.5 Ejercicio 2

Bueno, ya que me he puesto, voy a recuperar mis parcos conocimientos (aplicados a anima adversa, como siempre) de PHP, pues vamos a hacer lo mismo que en el Bloque T2.5 Ejercicio 1, pero en PHP, para que veamos lo polivalentes que somos. El código que he hecho al final es:

<?php
$url = "xml/muebles.xml";
$rawxml = file_get_contents($url); // guardamos el XML como string
$xml = simplexml_load_string($rawxml); // cargamos el objeto
echo "<ul>";
foreach($xml->habitacion as $h)
{
$tmpid = $h->attributes();
$id = $tmpid['id'];
echo "<li>".$id."</li>";
}
echo "</ul>";
?>


El ejemplo lo podéis encontrar aquí. Y la fuente de Xml que he usado es muebles.xml.

Bloque T2.3

Bueno, aquí había que asignar varios espacios de nombres. Siguiendo con la cosa de mi equipo filosófico ateniense (aunque con jugadores de otras ciudades estado), cree dos espacios de nombres, el de equipo (que se refiere a las posiciones gubernamentales dentro de la estructura jerárquica del equipo -toma ya-), y otro para la plantilla, los jugadores, que son los que se dejan los cuernos cada cuatro años en los juegos en honor a Apolo, en Olimpia. Y este es el resultado:
<eq:equipo xmlns:eq='http://www.lfp.com/equipo' id="Atenas C.F" xmlns:plan='http://www.lfp.com/plantilla'>
<eq:entrenador>Pericles</eq:entrenador>
<eq:presidente>Leonidas</eq:presidente>
<eq:plantilla_titular>
<plan:jugador posicion="portero">Socrates</eq:jugador>
<plan:jugador posicion="defensa">Empedocles</eq:jugador>
<plan:jugador posicion="centro">Aristofanes</eq:jugador>
<plan:jugador posicion="mediapunta">Aristoteles</eq:jugador>
<plan:jugador posicion="delantero">Platon</eq:jugador>
</eq:plantilla_titular>
<eq:plantilla_suplente>
<plan:jugador posicion="defensa">Diogenes</eq:jugador>
<plan:jugador posicion="delantero">Pitagoras</eq:jugador>
</eq:plantilla_suplente>
</eq:equipo>

Bloque T2.1

Bueno, se está acabando ya el cuatrimestre, así que estoy echando la vista atrás y viendo que ejercicios me faltan por hacer, por aquello de tener todo completo, caray. Empiezo por el tema 2, ya que el tema 1 me da hasta verguenza ponerme a hacer algo de ahí.

Ejercicio 1
El motivo de este ejercicio es buscar un editor XML especializado o un editor que tenga posibilidad de editar XML. En principio, probé con Quanta, el editor de código html en linux por excelencia (aunque ya como que le deja de gustar a uno). Finalmente, decidí que Quanta sigue sin convencerme en el área de HTML, por lo que lo desinstalé y a por otra, mariposa.
Despues de descubrír a un troll en un blog que pedía encarecíamente que se pudiera instalar Dreamweaver, y por una referencia extraña, por una vez descubrí que un troll podría servir para algo: citar de pasada para criticar al editor Bluefish. Por una vez he encontrado un editor que me guste en Linux, y por supuesto, también soporta XML, como debe ser. Tiene un entorno apañao, y una barra que se llama "personalizable", donde te va poniendo las cosas que mas usas (no veas, cacho de avance). Sigo con él desde que lo descubrí (hace ya algunos meses) y la verdad, me parece una opción más que aceptable, si bien le sigue faltando la opción de "vista previa" o de "edición gráfica". Ahora, que a estas alturas del "conocimiento", como que me la trae un poquillo... floja.
Finalmente, decir que gedit, el editor de gnome, también tiene soporte para resaltar el código en XML, pero sin más, no abre ni cierra etiquetas ni nada de eso. Cosas de ser un editor de texto plano.

Ejercicio 2
Este ejercicio era simplemente visualizar un archivo XML en el navegador, pero... ¡Ah! ¡Se veía bonito y todo! ¿Cómo puede ser eso? Normalmente, abrimos con firefox algún archivo xml y se ve normalito, con las etiquetas resaltadas y poco más. Pero el misterio (no tan insondable) era que este archivo se veía bien. Pistas... es de un blog, el blog de JJ...

¡Claro! ¡Ahí está la respuesta! Se trata de un feed RSS (creo, a lo mejor es Atom, pero cualquiera se pone a buscar). Total, que nuestro amigo Firefox nos engaña y tiene una plantilla exclusiva para mostrarnos de forma bonita los feed RSS (donde nos da también la opción de suscribirnos mediante la opción tan graciosa de "marcadores dinámicos", curioso cuando menos.. aunque donde esté un lector tradicional). Indagando encontré que Firefox llama a estos archivitos:
@import chrome://global/locale/intl.css";
@import "chrome://global/skin/formatting.css";
Donde se encuentran todas las directrices para mostrar un feed de RSS. Bonito, ¿no?

viernes, 24 de abril de 2009

Ejercicio T2.8.3

He aquí el ejercicio


#!/usr/bin/perl

use CGI qw(:standard);

print header( -type => 'application/xhtml+xml' );

print<<EOC;
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Anima Adversa - Noticias</title>
<description>Noticias de Anima Adversa</description>
<link>http://www.animaadversa.es/</link>
<language>es-sp</language>
<copyright>Copyright 2009 Anima Adversa</copyright>

<item>
<title>Nuevo disco "El Grito en el Cielo" presentación 20 Marzo, sala El Tren</title>
<description>El nuevo disco de Anima Adversa, "El Grito en el Cielo", ya está disponible en la web para libre descarga y distribución. Si os ha gustado y queréis el disco en soporte físico y calidad CD, lo podéis comprar en la tienda. </description>
<category>![CDATA[4]]</category>
<link>http://www.animaadversa.es/noticias.php?notID=32</link>
<pubDate>Wed, 11 Mar 2009 00:00:00 +0100</pubDate>
</item>

<item>
<title>Sisyphos. Nuevo Videoclip!!</title>
<description>Nuevo Videoclip de Sisyphos que podéis disfrutar tras el enlace. </description>
<category>![CDATA[4]]</category>
<link>http://www.animaadversa.es/noticias.php?notID=31</link>
<pubDate>Fri, 06 Mar 2009 00:00:00 +0100</pubDate>
</item>

<item>
<title>El Grito en el Cielo. Primicia Mundial. </title>
<description>Os presentamos Sisyphos, el próximo Single de Anima Adversa.</description>
<category>![CDATA[4]]</category>
<link>http://www.animaadversa.es/noticias.php?notID=28</link>
<pubDate>Mon, 19 Jan 2009 00:00:00 +0100</pubDate>
</item>

<item>
<title>Ya tenemos feed de RSS! Suscribios!!</title>
<description>Ya tenemos FEED de RSS. Suscribíos!</description>
<category>![CDATA[5]]</category>
<link>http://www.animaadversa.es/noticias.php?notID=29</link>
<pubDate>Thu, 15 Jan 2009 00:00:00 +0100</pubDate>
</item>

<item>
<title>Finalizada la grabación de "El Grito en el Cielo"</title>
<description>Finalizada la grabación de "El Grito en el Cielo".</description>
<category>![CDATA[4]]</category>
<link>http://www.animaadversa.es/noticias.php?notID=27</link>
<pubDate>Sun, 21 Dec 2008 00:00:00 +0100</pubDate>
</item>

</channel>
</rss>
EOC

lunes, 30 de marzo de 2009

Bloque T2.7 Ejercicio 1

Comprobado con un par de Feeds que me he descargado. No sé si funcionará online.

#!/usr/bin/ruby

require 'rss/1.0'
require 'rss/2.0'

documento = ARGV[0]
file = File.new(documento)
rss = RSS::Parser.parse(file, false)
rss.channel.items.each do |i|
puts "*" + i.title
puts "\t" + i.pubDate.to_s + "\n"
end

Bloque T2.5 Ejercicio 1

Con este programa he conseguido que se muestre "habitacion: "+ nombre de habitacion y tipo de habitacion.

#!/usr/bin/ruby

require 'rexml/document'
include REXML
documento = ARGV[0]
file = File.new(documento)
doc = Document.new(file)
doc.root.each_element('habitacion') { |h| #Bucle sobre las habitaciones
puts "Habitacion: "
(puts h.attribute('id')) || (puts h.attribute('tipo'))
puts "\n"
}


Este es el XML que usé.
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Descripci�n de los elementos de una casa so�ada -->
<micasa>
<habitacion id="comedor">
<mueble>aparador</mueble>
<mueble>sof� &quot;de �poca&quot;</mueble>
</habitacion>
<habitacion id="cocina">
<mueble><![CDATA[
<p>En la pared de la derecha hay un frigor�fico
<p>Y en la de la izquierda, s�lo mugre
]]></mueble>
<mueble>fregadero</mueble>
</habitacion>
<habitacion tipo='dormir'><mueble>Cama</mueble></habitacion>
<habitacion tipo='transdimensional'><mueble>armario<habitacion><mueble>Sillon de hielo de la reina mala </mueble></habitacion></mueble></habitacion>

</micasa>

Bloque T2.4 Ejercicio 1

XML Schema (XSD):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="partido">
<xs:complexType mixed="true">
<xs:attribute name="local" type="xs:NMTOKEN" use="required" />
<xs:attribute name="visitante" type="xs:NMTOKEN" use="required" />
<xs:attribute name="id" type="xs:ID" use="required" />
</xs:complexType>
</xs:element>

<xs:element name="quiniela">
<xs:complexType>
<xs:sequence>
<xs:element ref="partido" maxOccurs="15" />
</xs:sequence>
<xs:attribute name="fecha" type="xs:string" use="required" />
<xs:attribute name="id" type="xs:NMTOKEN" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>



Archivo XML:

<?xml version="1.0" encoding="UTF-8"?>
<quiniela id="1" xmlns:noNamespacesSchemaLocation="quiniela.xsd" fecha="27/03/2009">
<partido id="P1" local="equipo_A" visitante="equipo_B">1</partido>
<partido id="P2" local="equipo_C" visitante="equipo_D">2</partido>
<partido id="P3" local="equipo_E" visitante="equipo_F">1</partido>
<partido id="P4" local="equipo_G" visitante="equipo_H">2</partido>
<partido id="P5" local="equipo_I" visitante="equipo_J">X</partido>
<partido id="P6" local="equipo_K" visitante="equipo_L">X</partido>
<partido id="P7" local="equipo_M" visitante="equipo_N">1</partido>
<partido id="P8" local="equipo_O" visitante="equipo_P">2</partido>
<partido id="P9" local="equipo_Q" visitante="equipo_R">2</partido>
<partido id="P10" local="equipo_S" visitante="equipo_T">2</partido>
<partido id="P11" local="equipo_U" visitante="equipo_V">1</partido>
<partido id="P12" local="equipo_W" visitante="equipo_X">1</partido>
<partido id="P13" local="equipo_Y" visitante="equipo_Z">X</partido>
<partido id="P14" local="equipo_1" visitante="equipo_2">X</partido>
<partido id="P15" local="equipo_3" visitante="equipo_4">X</partido>
</quiniela>