Ejemplo: Sumar valores de los nodos
En este ejemplo se muestra cómo procesar varios nodos de un documento XML y asignar el resultado como un único valor a un documento XML de destino. En concreto, el objetivo de la asignación es calcular el precio de todos los productos de un archivo XML de origen y escribirlo como un único valor en un archivo XML de salida. Los archivos utilizados en este ejemplo se encuentran en la carpeta DocExamples.
•Summing-nodes.mfd: el archivo de asignación de datos
•input.xml: el archivo XML de origen
•input.xsd: el esquema XML de origen
•output.xsd: el esquema XML de destino
•Summing-nodes.xslt: una hoja de estilos XSLT personalizada que contiene una plantilla con nombre que sumará los nodos.
Hay dos maneras de conseguir el objetivo de la asignación:
•Usando la función sum. Esta función integrada de MapForce está disponible en la ventana Bibliotecas.
•Importando una hoja de estilo XSLT personalizada en MapForce.
Solución n.º 1: Uso de la función de agregado «sum»
Para usar la función de agregado sum en la asignación, basta con arrastrarla desde la ventana Bibliotecas hasta el panel de asignación. Tenga en cuenta que las funciones disponibles en la ventana Bibliotecas dependen de la versión del lenguaje XSLT que haya seleccionado (XSLT 1 o XSLT 2). Tras colocar la función en el área de asignación deberá crear las conexiones de asignación que aparecen a continuación.

Para más información sobre las funciones de agregado de la biblioteca core, consulte también core | aggregate (funciones de agregado).
Solución n.º 2: Usar una hoja de estilos XSLT personalizada
El objetivo del ejemplo es sumar los campos Price de los productos del archivo XML de origen (en este caso los productos A y B).
<?xml version="1.0" encoding="UTF-8"?> |
A continuación puede ver una hoja de estilos XSLT personal que usa la plantilla con nombre "Total" y un solo parámetro string. La plantilla recorre el archivo XML de entrada y suma todos los valores que obtiene la expresión /Product/Price.
<?xml version="1.0" encoding="UTF-8"?> |
Nota: Para sumar los nodos en XSLT 2.0, modifique la declaración de la hoja de estilo para que indique version="2.0".
Antes de importar la hoja de estilo XSLT a MapForce, seleccione XSLT 1.0 como lenguaje de transformación. Ya está listo para importar la función personalizada, tal y como se indica a continuación:
1.Haga clic en el botón Agregar o quitar bibliotecas, en la parte inferior de la ventana Bibliotecas. Se abre la ventana Gestionar bibliotecas.

2.Para importar funciones como biblioteca local (dentro del archivo de asignación actual solamente), haga clic en Agregar bajo el nombre de la asignación activa. Para importar funciones como biblioteca global (a nivel de programa), haga clic en Agregar, junto a Bibliotecas globales importadas. Cuando se importa una biblioteca de forma local, puede hacer que la ruta de acceso al archivo de la biblioteca sea relativa al archivo de asignación. Con las bibliotecas globales la ruta siempre es absoluta.
3.Navegue hasta <Documentos>\Altova\MapForce2027\MapForceExamples\DocExamples\Summing-nodes.xslt y haga clic en Abrir. Aparecerá un cuadro de mensaje en el que se le informará de que se ha añadido una nueva biblioteca, y dicha biblioteca aparecerá en la ventana Bibliotecas.

4.Arrastre la función Total desde Bibliotecas hasta la asignación y cree las conexiones de la asignación tal y como se muestra a continuación.

Para obtener una vista previa del resultado de la asignación, haga clic en la pestaña Resultados. La suma de los dos campos Price aparecen ahora en el campo Total.
<?xml version="1.0" encoding="UTF-8"?> |