2011-06-24 23 views
6

En mi proyecto de Scala tenemos una gran cantidad de XSLT heredado y nos preguntamos si deberíamos convertir el XSLT en código de Scala.¿Cómo usar Scala como reemplazo para XSLT?

Me gusta el enfoque de XSLT de aplicar plantillas a los nodos, y estoy bien usarlo para transformaciones puramente DOM, pero no creo que sea adecuado para procesar datos dentro del documento XML (difícil de leer y probar) - Me gustaría más bien usa Scala para hacer eso.

Teniendo en cuenta la compatibilidad con XML incorporado en Scala y de coincidencia de patrones que pensé que podría ser un buen reemplazo. ¿Alguien ha convertido con éxito scripts XSLT a Scala? ¿Hay algún patrón o mejores prácticas?

Conozco un viejo proyecto para convertir XSLT a código fuente de Scala llamado XSLT2src, pero que ha estado inactivo durante mucho tiempo y no es compatible con XSLT2.

Gracias

+0

Teníamos un montón de xslt que no generaba archivos xml. Reemplazar el xslt con scalate + scala fue bastante directo y es mucho más fácil de entender/desarrollar. – Fabian

+1

Me inclino a sugerir que si necesita hacer un procesamiento extenso de los datos dentro del documento XML, debería considerar rediseñar el diseño de su XML. Por ejemplo, si usted tiene ' primera, segunda, tercera', esto debe ser realmente ' primera segundo tercer '. Un archivo XML es esencialmente una base de datos jerárquica, y se aplica la regla 'cualquier campo solo debe contener una sola pieza de datos'. – Flynn1179

+1

Para el XSLT/XML que utilizamos, el soporte XML de Scala es un poco inexistente.Necesitamos más XPath (el XML está definido por un estándar de la industria, así que no podemos cambiarlo). Puede ser pirateado regresando al Scala "normal" cuando el \ y \\ no lo hacen, pero con una pérdida de legibilidad –

Respuesta

6

Es difícil decir con seguridad sin saber exactamente lo XML que desea transformar y cómo, pero como están las cosas plantilla XSLT/partido son a la vez más potente y más fácil de leer que Scala coincidencia de patrones XML, que tiene una cantidad de problemas

En particular:

  • ninguna coincidencia no trivial es imposible o muy difícil de hacer
  • espacios de nombres no son compatibles

lo que podría ser mejor de llamar sajona de Scala a realizar estas transformaciones.

Aún así, es posible que desee ver en la chapter on XML de programación Scala.

Por último, la opinión prevaleciente en estos días es que el soporte integrado XML en Scala se carece de muchas maneras. Ver p. Anti-XML para un proyecto que tiene como objetivo construir algo mejor.

1

Scales Xml proporciona correspondencia en espacios de nombres y atributos directamente, pero también proporciona una dsl interna más flexible para el manejo de XPaths (así como la evaluación basada en cadenas).

Quizás lo más interesante para las transformaciones es su capacidad para doblar caminos, seleccionar lo que desea en una XPath y transformar los resultados "in place". Estas reglas de transformación se pueden combinar.

Aún se podía replicar gran parte del enfoque de XSLT con el uso de XPath directa en Escalas y transformación/construcción de los árboles como lo haría en XSLT.

Cuestiones relacionadas