Altova MapForce 2023 Enterprise Edition

La función group-adjacent agrupa los elementos conectados a los datos de entrada de nodes/rows con la clave conectada a los datos de entrada de key. Observe que si los elementos que comparten la misma clave no son adyacentes, esta clave los coloca en grupos separados. Si varios elementos consecutivos (adyacentes) comparten la misma clave estarán en el mismo grupo.

mf-func-group-adjacent

Por ejemplo, en la imagen siguiente, que ilustra una transformación abstracta, la clave de agrupación es "Department". El lado izquierdo del diagrama muestra los datos de entrada, mientras que el lado derecho muestra los datos de salida tras la agrupación. Al ejecutar la transformación ocurre lo siguiente:

 

Inicialmente, la primera clave, "Administración", crea un grupo nuevo.

La siguiente clave es distinta, así que se crea un segundo grupo, "Publicidad".

Como la tercera clave también es diferente, se crea otro grupo, "Ingeniería".

La cuarta clave es la misma que la tercera, por lo que este registro se coloca en el grupo que ya existe para esa clave.

Por último, la quinta clave es diferente de la cuarta, lo que hace que se cree un último grupo.

 

Como se ve en la siguiente imagen, "Michelle Butler" y "Fred Landis" están en el mismo grupo porque tienen la misma clave y son adyacentes. Sin embargo, "Vernon Callaby" y "Frank Further" están en grupos distintos porque no son adyacentes, aunque tengan la misma clave.

mf_group-adjacent

 

Lenguajes

La función está disponible para XSLT 2.0, XSLT 3.0, Java, C#, C++ y el motor de ejecución integrado.

 

Parámetros

Nombre

Descripción

nodos/filas

Esta entrada debe recibir una conexión desde un elemento de la asignación que suministre una secuencia de cero o más valores. Por ejemplo, la conexión puede provenir de un elemento XML de origen, un campo CSV, un registro de BD, etc.

key

La clave conforme a la cual se agrupan los elementos.

 

Ejemplo

Imaginemos que sus datos de origen son un archivo XML con el siguiente contenido (tenga en cuenta que, para simplificar, en el código de ejemplo siguiente hemos eliminado el espacio de nombre y las declaraciones XML).

 

<company>
<person department="Administration" name="Vernon Callaby"/>
<person department="Marketing" name="Susi Sanna"/>
<person department="Engineering" name="Michelle Butler"/>
<person department="Engineering" name="Fred Landis"/>
<person department="Administration" name="Frank Further"/>
</company>

 

El requisito empresarial es agrupar registros de personas por departamento, siempre que sean adyacentes. Para conseguirlo, la siguiente asignación invoca la función group-adjacent y da como clave el elemento department.

mf_group-adjacent_map

El resultado de la asignación es el siguiente:

 

<groups>
<group>
<record key="Administration" value="Vernon Callaby"/>
</group>
<group>
<record key="Marketing" value="Susi Sanna"/>
</group>
<group>
<record key="Engineering" value="Michelle Butler"/>
<record key="Engineering" value="Fred Landis"/>
</group>
<group>
<record key="Administration" value="Frank Further"/>
</group>
</groups>

 

Este ejemplo, junto con otros ejemplos de agrupación, es parte de esta asignación: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\GroupingFunctions.mfd. Antes de hacer clic en la pestaña Resultados mf_ic_preview recuerde hacer clic en el botón Vista previa de la función que quiere comprobar.

© 2017-2023 Altova GmbH