2011-06-02 11 views
5

Tengo una vieja aplicación de Python que solía usar XSLT para transformar algunos datos XML (dos tipos de archivos xml con sus respectivos xslt) para producir resultados html.cómo reescribir inteligentemente un script python que solía usar XSLT?

Me gustaría portar esta aplicación para appengine, pero, por desgracia, la versión de pypen appengine no es compatible con xslt.

¿Existe alguna manera fácil de reescribir mi código sin analizar y analizar manualmente las etiquetas dadas en las entradas xml?

en otras palabras, ¿tiene alguna idea de una forma genérica para hacer esto?

Gracias y lo siento por mi pobre inglés!

+0

Su inglés es excelente, no se malvenda. –

+0

Gracias, @Rafe, en realidad es el cuarto idioma que aprendí. Por lo tanto, estoy haciendo todo lo posible :) – Liza

+0

¿Tienes que hacerlo en el lado del servidor? De lo contrario, puede usar javascript en el lado del cliente para hacer eso. –

Respuesta

2

Lamentablemente, no existe una implementación XSLT en funcionamiento en python puro. Es posible que pueda adaptar su código python para que se ejecute en jython, lo que le daría acceso a la implementación XSLT de java. Esto se describe en este blog post.

Tendrás que decidir si portar/probar tu código existente a jython es una mejor opción que escribir tu propio analizador/transformador xml específico de tu caso.

+0

Gracias a Anthony, en realidad he estado en esa publicación del blog, pero sinceramente parece muy difícil configurar jyton (que nunca he usado por cierto) en GAE. Gracias de todos modos :) – Liza

+0

No es una lucha en absoluto. Todo lo que tiene que hacer es descargar un archivo zip, extraerlo en una estructura de directorio, mover algunos archivos, usar un solo comando "jar" para crear un archivo WAR y luego cargarlo en AppEngine. Las instrucciones están aquí [Jython en Google App Engine] (http://opensource.xhaus.com/projects/1/wiki/ModjyGoogleAppEngine) –

0

Puede usar lxml para hacer tranformaciones XSLT, Y lxml debería funcionar con versiones anteriores de python (el sitio web dice que admite 2.3 a 3.2).

+0

'lxml' es un contenedor de bibliotecas de C, no Python puro; como tal, no se puede usar en App Engine. –

0

Si sus XSLT no son demasiado horrible, tal vez no sea muy difícil de puerto a Python usando la función de iterparse elementtree (http://effbot.org/zone/element-iterparse.htm, y ver http://www.dalkescientific.com/writings/diary/archive/2006/11/06/iterparse_filter.html).

Tendría que volver a escribir sus plantillas XSLT como funciones de Python que podrían llamarse durante el análisis como elementos de "eventos" y podría tener que almacenar algún estado del documento para permitir ciertos tipos de xsl: template/@ match patrones para ser manejados, pero probablemente no sería demasiado desagradable.

Cuestiones relacionadas