Traductor Python de XML

Cibernatural S.L. está desarrollando para la Universidad de La Laguna, y en particular junto al grupo de Paralelismo del departamento de Computación como coautor, un traductor XML.

El objetivo es obtener un conjunto de clases C++ para un problema de programación dinámica paralelo desde una fórmula matemática del problema en Latex.

Como ya se posee un generador de las clases a partir de una especificación XML del problema y la fórmula en Latex puede ser especificada también mediante XML usando MathML, se necesita un traductor que transforme el XML que especifica la fórmula (MathML) al XML que especifica la entrada al generador de clases.

Cibernatural está desarrollando en Python dicho traductor XML.

El XML de salida de nuestro traductor debe corresponder a la definición de un problema de programación dinámica paralela, que servirá como entrada a un generador de clases C++ que cree los ficheros del código fuente correspondiente al problema para ejecutarlo.

El objetivo es generar estos ficheros XML de definición del problema a partir de las fórmulas matemáticas de definición del problema en Latex. Como se pueden generar ficheros XML (MathML) a partir de fórmulas en Latex, lo que faltaría para cerrar el círculo sería un traductor del XML de la fórmula (MathML) al XML de entrada al generador de clases del problema.

Lo primero que necesitamos es el fichero XML de entrada el cual podemos obtener, por ejemplo, con TtM, un traductor de TeX a MathML, (ttmL es su versión para Linux). Una vez ejecutado, ya tenemos el MathML.

Para comenzar a traducir el XML con Python, lo primero que debemos hacer es cargar el archivo XML de entrada en memoria. Para ello, usaremos lxml, una librería de procesamiento de XML y HTML en Pyhton, y en concreto la API ElementTree.

import sys, string
from lxml import etree

Definiendo un parser XML y usando el método parse ya tenemos nuestro XML (MathML) en memoria:

parser = etree.XMLParser(load_dtd=True, no_network=False, remove_blank_text=True, ns_clean=True, resolve_entities=True)
tree = etree.parse(’problemaMathML.xml’,parser)

Podemos mostrar el fichero cargado por pantalla para comprobar que todo ha ido bien:

fsalida.write(etree.tostring(tree, pretty_print=True))

En entradas siguientes, veremos como recorrer los nodos del árbol y las acciones de procesamiento a realizar en cada uno de ellos para conseguir la traducción correcta mediante ejemplos concretos.

Los comentarios están cerrados.

Publicidad
Idiomas
EspañolEnglishDeutschFrançaisItalianoPortuguês
Bonos Tecnológicos Lanzarote
Publicidad
Facebook
Twitter: cibernatural
DELL Partner
Listado de Servicios
  • Diseño y desarrollo de páginas web en Lanzarote
  • Comercio electrónico - Tienda Virtual
  • Servicios web
  • Blogs para difusión de eventos
  • Integración en redes sociales
  • Software a medida
  • Aplicaciones empresariales
  • Migración de aplicaciones obsoletas
  • Migración de bases de datos
  • Posicionamiento web en Lanzarote
  • Optimización en motores de búsqueda (SEO)
  • Marketing on-line (SEM)
  • Software colaborativo: Correo, Agenda, Movil
  • Redes. Configuración y Mantenimiento
  • Dispositivos móviles
  • Consultoría y Planificación de proyectos
  • Hardware DELL
 
febrero 2012
L M X J V S D
« ene    
 12345
6789101112
13141516171819
20212223242526
272829