XProc es un lenguaje de transformación XML para procesar documentos en flujos de trabajo: encadena conversiones y otros pasos para lograr los resultados deseados. Puede manejar documentos en formato XML , HTML , JSON , texto y binario .
La versión actual (estable) es la 3.1. [ 1 ] Mientras que XProc 1.0 [ 2 ] es una recomendación del W3C , XProc 3.1 es un estándar desarrollado por el Grupo Comunitario XProc Next del W3C . [ 3 ]
Sus principales características son:
- XProc es un lenguaje de programación, expresado en XML, en el que se pueden escribir secuencias de procesamiento (pipelines).
- Un proceso XProc toma datos como entrada (a menudo XML) y los procesa mediante pasos especializados para producir resultados finales.
- Los pasos van desde los más sencillos, como añadir atributos, hasta otros más complejos como dividir/combinar/eliminar, realizar transformaciones con XSLT y XQuery , validaciones contra esquemas , etc.
- Dentro de una canalización puedes hacer cosas como trabajar con variables, crear bifurcaciones, bucles, capturar errores, etc. Todo se basa en los datos que fluyen a través de ella.
- Las canalizaciones de XProc no se limitan a una sucesión lineal de pasos. Pueden bifurcarse y fusionarse.
- XProc permite crear pasos personalizados combinando otros pasos. Estos pasos personalizados se pueden usar como cualquier otro. Por lo tanto, en XProc, los conceptos de canalizaciones y pasos son intercambiables.
- Los pasos personalizados se pueden agrupar en bibliotecas.
- XProc ayuda en las tareas de mantenimiento relacionadas con el procesamiento, como inspeccionar directorios, leer documentos de archivos zip, escribir cosas en el disco, etc.
- Existe un software capaz de ejecutar estas secuencias de procesamiento, los llamados procesadores XProc.
Ejemplo
A continuación se muestra una secuencia de procesamiento XProc (muy) sencilla:
<p:declare-step xmlns:p= "http://www.w3.org/ns/xproc" version= "3.0" ><p:input port= "source" /> <p:output port= "result" /><p:add-attribute attribute-name= "timestamp" attribute-value= "{current-dateTime()}" /> <p:delete match= "@data" /></p:declare-step>- Declara dos puertos :
- Un puerto de entrada llamado
source. Aquí es donde entra el documento original. - Un puerto de salida llamado
result. Aquí es por donde sale el documento resultante.
- Un puerto de entrada llamado
- El documento que llega a través del
sourcepuerto pasa automáticamente al primer paso del proceso. Estep:add-attributepaso añade un atributotimestampcon la fecha y hora actuales. - El resultado de esto se transmite a través del
p:deletepaso que elimina todos los atributos llamadosdata. - Dado que
p:deleteeste es el último paso, el documento resultante sale por elresultpuerto de salida.
Entonces, si proporciona el siguiente documento XML a esta canalización:
<example data= "321" > <item data= "123" > Algunos datos... </item> </example>El resultado es:
<example timestamp= "2024-09-11T15:05:22.82+02:00" > <item> Algunos datos... </item> </example>La fecha y hora exactas registradas en el timestampatributo dependen, por supuesto, de la fecha y hora en que se ejecuta la canalización.
Historia
Las ideas para un lenguaje de programación para el procesamiento de datos existían desde los inicios de XML, a finales del siglo XX. Sin embargo, no fue hasta finales de 2005 que el W3C creó un grupo de trabajo denominado Grupo de Trabajo del Modelo de Procesamiento XML . Esto dio como resultado la recomendación de XProc 1.0, con fecha del 11 de mayo de 2010. [ 2 ]
Se realizaron varios intentos para crear procesadores XProc 1.0 funcionales. Los únicos dos disponibles actualmente como productos de código abierto que implementan el estándar 1.0 completo son XML Calabash [ 4 ] y MorganaXProc. [ 5 ]
Tras el lanzamiento de la versión 1.0, el grupo de trabajo de XProc continuó debatiendo sobre una nueva versión. Se plantearon ideas para la versión 2.0, que se basaba en una sintaxis no XML y no obtuvo mucho apoyo de la comunidad. La participación en el grupo de trabajo disminuyó y, en 2016, este dejó de existir.
En junio de 2017 se fundó el Grupo Comunitario XProc Next [ 3 ] y comenzó a trabajar en una nueva versión, ahora completamente basada en XML. Debido a que este era un enfoque totalmente diferente al de la iniciativa 2.0, el número de versión se incrementó a 3.0. Se lanzó una versión estable el 12 de septiembre de 2022. [ 1 ]
En 2024, el grupo de trabajo comenzó a trabajar en una actualización menor que se publicó como XProc 3.1 el 29 de mayo de 2025. Corrige algunos errores en la especificación del lenguaje y la biblioteca de pasos estándar y también publica las siguientes bibliotecas de pasos como especificaciones terminadas: [ 6 ]
- Ejecución dinámica de pipelines : para ejecutar pipelines construidos dinámicamente.
- Pasos para acceder y administrar archivos en un sistema de archivos.
- Pasos del sistema operativo : para acceder a información sobre el sistema operativo y ejecutar comandos externos.
- Pasos para trabajar con el correo electrónico
- Pasos para medios paginados : para aplicar CSS o XSL-FO a un documento XML o HTML .
- Pasos de texto : pasos opcionales relacionados con el texto, por ejemplo, convertir Markdown a HTML. La biblioteca de pasos estándar ya incluye varios pasos necesarios para trabajar con texto [ 7 ].
- Pasos de validación : para comprobar si una entrada se ajusta a un conjunto de reglas expresadas en un esquema. La entrada puede ser XML , HTML o JSON.
- XML invisible : para trabajar con XML invisible.
Implementaciones
Los siguientes procesadores son compatibles con XProc 3.0 y versiones posteriores:
XProc 3.0 es incompatible con versiones anteriores y, por lo tanto, no se espera que las implementaciones anteriores sean compatibles con XProc 1.0. [ 11 ]
Versiones anteriores
Los siguientes procesadores son compatibles con el estándar XProc 1.0:
- XML Calabash, [ 4 ] mantenido por Norman Walsh. Este procesador también está integrado en el producto Oxygen XML Editor .
- Morgana Xproc 1.0, [ 5 ] mantenido por Achim Berndzen.
Existían otras implementaciones de XProc 1.0, pero estaban incompletas o no recibían mantenimiento.
Logo
El logotipo y la mascota de XProc son un pez llamado Kanava, que proviene de la palabra finlandesa para oleoducto. El logotipo fue creado por Bethan Tovey-Walsh.
Referencias
- 1 2 El sitio web de XProc
- 1 2 La especificación XProc 1.0
- 1 2 El próximo grupo comunitario de XProc
- 1 2 El procesador XML Calabash 1.0
- 1 2 El procesador Morgana XProc 1.0
- ↑ "XProc - Especificaciones" . xproc.org . Consultado el 9 de agosto de 2025 .
- ↑ "XProc 3.1: Biblioteca de pasos estándar" . spec.xproc.org . Consultado el 9 de agosto de 2025 .
- 1 2 "XProc - Procesadores" . xproc.org . Consultado el 09-08-2025 .
- ↑ El procesador MorganaXProc-IIIse XProc
- ↑ El procesador XML Calabash 3.0
- ↑ Tovey-Walsh, Norman (18 de febrero de 2020). "XProc 3.0: ¿Listo o no?" . so.nwalsh.com . Consultado el 9 de agosto de 2025 .
Enlaces externos
- Estándares del Consorcio World Wide Web
- Estándares basados en XML
- Lenguajes de programación basados en XML
- Lenguajes de marcado
- lenguajes de programación declarativos
- Lenguajes de programación concurrentes
- Lenguajes de programación específicos de dominio
- Proceso de datos