Ordenar con variables
En algunos casos puede ser necesario agregar variables intermedias para conseguir ciertos resultados. En el diseño de asignación que aparece a continuación se extraen registros de un archivo XML y éstos se orden con ayuda de variables intermedias. Se trata del diseño de asignación <Documentos>\Altova\MapForce2023\MapForceExamples\Altova_Hierarchical_Sort.mfd.
Altova_Hierarchical_Sort.mfd
Esta asignación lee datos de un archivo XML de origen llamado Altova_Hierarchical.xml y los escribe en un archivo XML de destino. Como puede ver, el XML de origen contiene información sobre una compañía ficticia. La compañía se divide en oficinas y éstas en departamentos. A su vez, los departamentos están compuestos por empleados.
El componente XML de destino PersonList contiene una lista de registros Person. El elemento Details tiene la función de almacenar información sobre la oficina y el departamento al que pertenece cada empleado.
El objetivo de esta asignación es extraer todos los empleados del XML de origen y ordenarlos por apellido y por orden alfabético. Además, el nombre de la oficina y del departamento al que pertenece cada empleado debe escribirse en el elemento Details.
Estos son los componentes necesarios para conseguir el objetivo de la asignación:
1.La función concat, que devuelve una cadena con el patrón Office(Department). Toma como entrada el nombre de la oficina, el nombre del departamento y dos constantes que aportan el paréntesis de apertura y de cierre respectivamente (véase Funciones básicas).
2.Una variable intermedia. El papel que desempeña es recopilar todos los datos de cada empleado en el mismo contexto de asignación. La variable consigue que la asignación busque el departamento y la oficina de cada empleado, en el contexto de cada empleado. Es decir, la variable recuerda el nombre de la oficina y del departamento al que pertenece cada empleado. Sin la variable, el contexto sería incorrecto y la asignación produciría resultados no deseados (véase Reglas y estrategias de asignación de datos). Tenga en cuenta que la variable reproduce la estructura del archivo XML de destino (usa el mismo esquema XML). Esto permite conectar el resultado del componente de ordenación con el componente de destino por medio de una conexión de copia total. Consulte las secciones Usar variables y Conexiones de copia total para obtener más información.
3.Un componente de ordenación que ordena los datos. Observe que el criterio de ordenación del componente está conectado al elemento Last de la variable, lo cual permite ordenar todos los registros por apellido.