Altova MapForce 2024 Enterprise Edition

En este apartado describimos distintos casos de uso en los que los valores predeterminados y las funciones de nodo pueden ser útiles. Para probar estos casos de uso necesita la asignación simple de ejemplo: Tutorial\MissingFields.mfd. Nuestro punto de partida es la asignación que ve más abajo.

mf_nodefunc_01

Algunos de los nodos del archivo de origen están vacíos. En este punto la asignación tiene este aspecto:

 

T-Shirt

Shirt

Pants

Jacket

25,3

70,3

 

57,5

20

60

 

40

Available in black, blue, and red

 

Limited stock

 

 

En los casos que describimos más abajo puede ver cómo definir un valor predeterminado para todos los nodos de tipo cadena, definir valores predeterminados para diferentes tipos de datos, bloquear reglas para nodos específicos, sobrescribir reglas heredadas, definir una función de nodo y aplicarla condicionalmente a los nodos relevantes, y aplicar valores predeterminados a nodos sin conexión.

 

Caso 1: definir un valor predeterminado para todos los nodos de tipo cadena

En nuestra asignación, algunos nodos de tipo cadena están vacíos. Nuestro objetivo es definir un valor predeterminado n/a que reemplace esas cadenas vacías. Siga estos pasos:

 

1.Haga clic con el botón derecho en el elemento Article y seleccione Funciones de nodo y valores predeterminados | Funciones de nodo y predeterminados de salida en el menú contextual.

2.Haga clic en la opción mf_ic_add_default en la ventana Funciones de nodo y teclee n/a en el campo Valor predeterminado (imagen siguiente).

mf_nodefunc_02

En el componente ArticlesOfClothing, los elementos Name y Description son de tipo cadena, por lo que pueden tomar el valor predeterminado. Esto quiere decir que ahora el icono mf_ic_node_func_applied aparece junto a esos nodos. Los valores predeterminados se aplican solamente a los valores vacíos, por lo que solamente dos nodos Field4 tienen el valor predeterminado n/a en el resultado (texto resaltado en amarillo).

 

T-Shirt

Shirt

Pants

Jacket

25,3

70,3

 

57,5

20

60

 

40

Available in black, blue, and red

n/a

Limited stock

n/a

 

Caso 2: definir los valores predeterminados para distintos tipos de datos

Además de definir un valor predeterminado para nodos de un tipo en concreto, también puede definir otro para tipos de datos distintos. Por ejemplo, uno de los artículos tiene valores vacíos en Price y en ItemsInStock, que son de tipo numérico. Ahora nuestro objetivo es reemplazar esos valores vacíos con 0. Siga estos pasos:

 

1.Repita los pasos del Caso 1. Eso añade un valor predeterminado a todos los nodos de tipo cadena que tengan valores vacíos.

2.Agregue otro valor predeterminado y seleccione numérico como tipo de datos.

3.Teclee 0 en el campo Valor predeterminado (imagen siguiente).

mf_nodefunc_03

El resultado ahora tiene este aspecto (observe las partes resaltadas en amarillo):

 

T-Shirt

Shirt

Pants

Jacket

25,3

70,3

0

57,5

20

60

0

40

Available in black, blue, and red

n/a

Limited stock

n/a

 

Nota:según la especificación XML Schema, entero se deriva de decimal y ambos pertenecen al tipo de datos numérico. En nuestro ejemplo la regla se aplica a los dos elementos, ItemsInStock y Price si seleccionó numérico como tipo de datos en la ventana Funciones de nodo. Si selecciona decimal como tipo de datos, la regla también se aplica a los dos elementos. Sin embargo, si selecciona entero como tipo de datos, la regla se aplica solamente al elemento ItemsInStock.

 

Caso 3: crear reglas de bloqueo para nodos específicos

En este caso queremos aplicar valores predeterminados a todos los nodos de tipo cadena y numéricos, pero no queremos que ese valor se aplique al elemento Price. Para alcanzar ese objetivo reproduzca los pasos del Caso 2, haga clic en el elemento Price y desmarque la casilla Heredar reglas de antecesores. En la asignación siguiente, el elemento Price ya no hereda las reglas de su antecesor, Article. Por lo tanto, el icono mf_ic_node_function_blocked aparece junto al elemento Price (imagen siguiente).

mf_nodefunc_04

En el resultado siguiente puede ver que el valor vacío del elemento Price, para el que hemos bloqueado la regla, se ha asignado a Field2 (observe las partes resaltadas).

 

T-Shirt

Shirt

Pants

Jacket

25,3

70,3

    

57,5

20

60

0

40

Available in black, blue, and red

n/a

Limited stock

n/a

 

Caso 4: sobrescribir las reglas heredadas

En este caso queremos definir valores predeterminados para todos los nodos de tipo cadena y numéricos, salvo para el elemento Price, cuyo valor predeterminado debe ser 100. Para ello repita los pasos del Caso 2, haga clic en Price en el componente ArticlesOfClothing, agregue un valor predeterminado nuevo e introduzca 100, como se ve en la imagen siguiente. Las reglas heredadas tienen un fondo amarillo.

mf_nodefunc_05

La regla definida directamente en un nodo tiene prioridad frente a las que se crean a nivel del antecesor. Por tanto, el resultado ahora tiene este aspecto (observe las partes resaltadas en amarillo):

 

T-Shirt

Shirt

Pants

Jacket

25,3

70,3

100

57,5

20

60

0

40

Available in black, blue, and red

n/a

Limited stock

n/a

 

Si definió más de una regla para un mismo nodo, la que esté más arriba en la cuadrícula es la que se aplica al nodo actual. Puede arrastrar esas reglas si quiere cambiar su orden.

 

Caso 5: Crear una función de nodo y aplicarla condicionalmente

En este caso vamos a explicar cómo crear una función de nodo y aplicarla condicionalmente. Para ello usaremos la función concat, con la que añadimos texto a los nodos de tipo cadena. Siga las instrucciones a continuación.

 

1.Haga clic con el botón derecho en el elemento Article y seleccione Funciones de nodo y valores predeterminados | Funciones de nodo y predeterminados de salida en el menú contextual.

2.Para agregar una función de nodo haga clic en el icono mf_ic_add_nodefunc y cree la función que ve más abajo.

mf_nodefunc_06

En este punto todavía no hemos filtrado los nodos y el resultado tiene el siguiente aspecto (observe las partes resaltadas):

 

T-Shirt (XXS, L-XXL)

Shirt (XXS, L-XXL)

Pants (XXS, L-XXL)

Jacket (XXS, L-XXL)

25,3

70,3

 

57,5

20

60

 

40

Available in black, blue, and red (XXS, L-XXL)

 

Limited stock (XXS, L-XXL)

 

 

En el resultado puede ver que la regla se ha aplicado a los dos elementos de tipo cadena: Name y Description. Ahora queremos aplicar la regla solamente al elemento Name. Para ello vaya a la ventana Funciones de nodo y haga clic en el botón mf_ic_ellipsis en la columna Tipo de datos y filtro Se abre el cuadro de diálogo Funciones de nodo y valores predeterminados, donde puede cambiar los tipos de datos e indicar las opciones de filtrado. Defina el filtro como se ve en la imagen siguiente.

mf_nodefunc_08

Ahora el resultado tiene este aspecto:

 

T-Shirt (XXS, L-XXL)

Shirt (XXS, L-XXL)

Pants (XXS, L-XXL)

Jacket (XXS, L-XXL)

25,3

70,3

 

57,5

20

60

 

40

Available in black, blue, and red

 

Limited stock

 

 

Filtrar por tipo de nodo

Esta opción permite acotar el tipo de datos que seleccionó en el cuadro de diálogo Funciones de nodo y valores predeterminados. Por ejemplo, si ha elegido aplicar la función de nodo a nodos numéricos, puede indicar un subtipo (p. ej.: Filtrar por/Nombre del nodo: xs:decimal).

 

Filtrar con expresiones regulares

Puede usar expresiones regulares para crear filtros más avanzados (p. ej. Para buscar varios nombres de nodo o de tipos). Para más información consulte Expresiones regulares. Tenga en cuenta que:

 

Los caracteres ancla ^ y $ están implícitos, por lo que no es necesario indicarlos en la caja de texto Buscar.

Puede decidir si quiere distinguir entre mayúsculas y minúsculas en la casilla Coinc. mayús/min. Por tanto, el carácter flag i no se admite.

Tampoco tiene sentido buscar en varias líneas al filtrar nodos. Por tanto, tampoco se admite el carácter flag m.

 

Caso 6: crear valores predeterminados para nodos sin conexión

MapForce permite aplicar valores predeterminados a nodos sin conexión, pero solamente si el nodo principal y/o algún elemento del mismo nivel están conectados. Aquí puede ver un ejemplo:

mf_nodefunc_07

En la asignación anterior definimos un valor predeterminado para el nodo Field4 en el componente ArticlesInfo . En este punto Field4 no tiene ninguna conexión de entrada. Los nodos principales y del mismo nivel están conectados. Si Field4 sigue sin conexión, el valor predeterminado sobrescribe todos los valores de Description en el resultado (imagen siguiente). Si conecta Description y Field4, el valor predeterminado sólo se aplica a secuencias vacías.

 

T-Shirt

Shirt

Pants

Jacket

25,3

70,3

   

57,5

20

60

 

40

n/a

n/a

n/a

n/a

 

Nota:los valores predeterminados no afectan a los nodos sin conexión de los componentes JSON.

 

© 2018-2024 Altova GmbH