Durante esta práctica, los alumnos serán capaces de:
Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.
A continuación se resume la manera de procesar un documento de XML (Extensible Markup Language) desde Python utilizando el API de minidom, que es una versión ligera de la interfaz de DOM (Document Object Model).
Para parsear un documento de XML existen dos opciones: desde un archivo o directamente desde un string.
from xml.dom.minidom import parse, parseString # parsear un documento XML indicando su nombre de archivo dom1 = parse('mis_datos.xml') # parsear an documento XML desde un string dom2 = parseString('<mixml>Unos datos<vacio/> mas datos</mixml>')
En los ejemplos anteriores, las variables dom1
y dom2
contienen una referencia al nodo raíz de un árbol de DOM que fue generado al momento de parsear los documentos de XML. Todos los nodos de dichos árboles de DOM son objetos de Python que cuentan con los siguientes campos y métodos:
Nombre | Descripción |
---|---|
nodeType
|
Campo que indica como entero el tipo de este nodo. Puede ser uno de los siguientes valores definidos en la clase xml.dom.Node :
|
nodeName
|
Campo que indica como string el nombre de este nodo. |
nodeValue
|
Campo que indica como string el valor de este nodo. Si este nodo no cuenta con un valor, el campo contiene None .
|
childNodes
|
Campo que contiene una lista de todos los nodos hijos de este nodo. |
getElementsByTagName(nombre)
|
Método que devuelve una lista de todos los nodos hijos de este nodo cuyo nombre de etiqueta sea igual a la cadena del parámetero nombre. |
attributes
|
Campo que contiene un mapa con los nodos de atributo de este nodo. Si este nodo no cuenta con atributos, el valor del campo es None . El mapa tiene la misma interfaz que los diccionarios de Python. Cada nodo de atributo tiene adicionalmente los siguientes campos: name y value .
|
toprettyxml(encoding="UTF-8")
|
Método que devuelve una cadena de caracteres con el árbol de XML adecuadamente formateado (pretty-printed). |
La siguiente liga apunta a la documentación oficial del API de minidom: Lightweight DOM implementation.
NOTA IMPORTANTE: Las actividades de la práctica se pueden elaborar de manera individual o en parejas. El reporte de la práctica de laboratorio debe ser desarrollado de manera individual.
Antes de comenzar esta práctica, renombra tu directorio www
utilizado en la práctica pasada y durante las clases. Desde la línea de comando teclea:
mv www www.backup2
Vuelve a crear otra vez el directorio www
, y sus subdirectorios static
y cgi-bin
.
mkdir www cd www mkdir static mkdir cgi-bin
Con esto estarás iniciando esta práctica con un sitio Web vacío, pero sin necesidad de modificar los archivos de configuración de Apache.
Escribe un script CGI en Python, llamado movies.py
. Dicho programa debe leer el contenido del archivo movies.xml y desplegar una <table>
de HTML conformada por cuatro columnas y un renglón por cada elemento <film>
como se muestra a continuación:
Película | Año | Director | Actores |
---|---|---|---|
The Godfather | 1972 | Francis Ford Coppola | Marlon Brando, Al Pacino, Diane Keaton |
... | ... | ... | ... |
Verifica que la salida del script sea HTML5 válido utilizando el Servicio de Validación de W3C.
Para entregar tu trabajo individual, sigue las siguientes instrucciones:
reporte_lab3_A0MMMMMMM.txt
, en donde A0MMMMMMM
corresponde a tu matrícula. A partir del código fuente de AsciiDoc debes generar el archivo HTML correspondiente. Dicho archivo se debe llamar reporte_lab3_A0MMMMMMM.html
. Coloca ambos archivos dentro del directorio www
.
www
. Nombra a este archivo xml.tgz
.
Este archivo se puede crear desde la línea de comando tecleando lo siguiente (asegúrate que te encuentres en el mismo nivel que el directorio www
):
tar czf xml.tgz www
Fecha límite: Martes, Enero 31.
Esta actividad será evaluada usando los siguientes criterios:
50% | Implementación de los requerimientos. |
---|---|
50% | Reporte de la práctica de laboratorio. |
DA | El programa y/o reporte es un plagio. |