Reemplazar el contexto de la asignación

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Diseño de asignaciones > Reglas y estrategias de asignación de datos >

Reemplazar el contexto de la asignación

En algunas asignaciones, para poder conseguir el resultado deseado, puede ser necesario reemplazar el contexto de la asignación. Por este motivo la estructura de algunos componentes ofrece un elemento opcional llamado parent-context que permite determinar el contexto de la asignación. Por ejemplo, las funciones de agregado y las variables cuentan con el elemento opcional parent-context.

fn-count

Función de agregado con el elemento opcional parent-context

Para entender lo importante que es el contexto de la asignación añadiremos a la asignación un archivo XML que contiene nodos anidados con varios niveles. En el menú Insertar haga clic en el comando Archivo o esquema XML y navegue hasta el archivo <Documentos>\Altova\MapForce2019\MapForceExamples\Altova_Hierarchical.xml.

mf_parent-context

Altova_Hierarchical.xml

Lo más importante es observar que, en el archivo XML, el nodo primario Office contiene varios nodos Department que a su vez contienen varios nodos Person. Si abrimos el archivo XML en un editor XML podremos ver la distribución de empleados por oficina y por departamento:

 

Oficina

Departamento

Nº de empleados

Nanonull, Inc.

Administration

3

Marketing

2

Engineering

6

IT & Technical Support

4

Nanonull Partners, Inc.

Administration

2

Marketing

1

IT & Technical Support

3

 

Ahora imaginemos que la asignación debe contar todos los empleados de todos lo departamentos. Para conseguir este objetivo podemos añadir la función count de la biblioteca de funciones core | aggregate functions y crear estas asignaciones de datos:

mf_parent-context1

Si consultamos la vista previa del resultado en este momento, veremos que el resultado es 21, es decir, el número total de empleados de todos los departamentos juntos. Observe que la función count tiene un elemento opcional llamado parent-context que no hemos utilizado por ahora. Como resultado, el contexto primario de la función count es el nodo raíz predeterminado del componente de origen (que, en este caso, es el elemento Altova). Esto significa que se tienen en cuenta todos los empleados de todos los departamentos para el ámbito de la función count. Este es el funcionamiento predeterminado del contexto de la asignación (véase Reglas y estrategias de asignación de datos) y suele ser el funcionamiento adecuado para la mayoría de asignaciones.

 

Sin embargo, en MapForce se puede reemplazar el contexto predeterminado de la asignación. Esto se hace creando una conexión entre el nodo Office y el elemento opcional parent-context de la función count.

mf_parent-context2

Al crear esta conexión estamos indicando que la asignación debe recorrer los registros de empleados en el contexto de cada oficina. Es decir, si ahora consultamos la vista previa del resultado de la asignación, el resultado será 15*. Se trata del número de empleados de la primera oficina ("Nanonull, Inc."). El motivo es que esta vez los nodos Person se contaron dos veces (una vez por cada oficina). El número de empleados de las oficinas es 15 y 6 respectivamente, pero solamente se devuelve el primer resultado (porque la función no puede devolver una secuencia de valores sino un solo valor).

 

* Siempre y cuando el lenguaje de destino elegido para la asignación no sea XSLT 1.0.

 

Puede seguir modificando la asignación y su contexto. Por ejemplo, ahora cambiamos el contexto por Department (imagen siguiente). Esta vez los registros de empleados se contarán en el contexto de cada departamento (es decir, 7 veces, tantas como departamentos). Una vez más, solamente se devuelve el primero de los resultados. Así que el resultado de la asignación es 3, que es el número de empleados del primer departamento de la primera oficina.

mf_parent-context3

Aunque esta asignación no es de gran utilidad, nos sirve para explicar cómo influye el elemento opcional parent-context en el resultado de la asignación. Ahora puede tener esto en cuenta y reemplazar el contexto primario parent-context en sus asignaciones (p. ej. en las que contienen variables.

 

Temas relacionados: Ejemplo: crear grupos y subgrupos de registros


© 2019 Altova GmbH