Habilite JavaScript para visualizar esta página.

Altova MapForce 2021 Professional Edition

Funciones > Valores predeterminados y funciones

Aplicar funciones de nodo y valores predeterminados de forma condicional

Desplazarse Inicio Anterior Inicio Siguiente Más

Siempre que cree una función de nodo o un valor predeterminado (las llamadas "reglas") puede definirlos tanto en un elemento con descendientes como en un elemento "hoja". Si el elemento tiene descendientes es importante que especifique un tipo de datos para la regla. Esto significa que la regla solo afectará a los descendientes de este tipo de datos. Para entender mejor este concepto, abra la siguiente asignación de ejemplo: <Documentos>\Altova\MapForce2021\MapForceExamples\\OrderInUSD.mfd. A continuación, haga clic en el icono mf_ic_node_func_defined que aparece junto al elemento Rows en el componente de destino.

mf_nodefunc_07

OrderInUSD.mfd

Esta asignación lee datos de un archivo XML y los escribe en un archivo CSV de destino. En el componente CSV de destino hay una regla definida en el lado de entrada del elemento Row. Observe que este elemento tiene secundarios del tipo string e integer. Como el tipo de datos de la regla es string, la regla afectará únicamente a los elementos de este tipo. En otras palabras, el icono mf_ic_node_func_applied está presente para los elementos de tipo string, pero no para los de tipo integer. El icono mf_ic_node_function_blocked indica que la regla está bloqueada para algunos elementos. Para más información consulte el apartado Cómo funcionan los valores predeterminados y las funciones de nodo.

 

Nota: para mostrar el tipo de datos junto a cada elemento de esta asignación, active el botón Mostrar tipos de datos ic-show-types de la barra de herramientas y desactive el botón Mostrar anotaciones ic-show-annot. Estos comandos también están disponibles en el menú Vista.
 

Para cambiar el tipo de datos de una regla, haga clic en el botón de puntos suspensivos mf_ic_ellipsis, en la tabla que aparece en la parte superior de la asignación. Se abrirá un cuadro de diálogo en el que puede escoger el tipo que necesite.

mf_nodefunc_08

Cuadro de diálogo "Funciones de nodo y predeterminados de entrada"

Por ejemplo, si selecciona integer como tipo de datos, la regla solo se aplicará al elemento Amount (que es el único de tipo integer). Ahora el componente cambia para reflejar ese cambio. Observe que la regla no ha afectado al resto de elementos, de tipo string.

mf_nodefunc_09

 

Cambie el tipo de datos de una regla solo si es importante para una función de nodo. En la asignación de ejemplo OrderInUSD.mfd la función de nodo está diseñada para procesar datos de tipo string, no numéricos (es decir, que concatena cadenas). En consecuencia, esta asignación no se podrá ejecutar si cambia el tipo de datos de la función del nodo a integer.

 

Herencia del tipo

MapForce no solo trabaja con datos XML; los tipos de datos que se pueden seleccionar en el cuadro de diálogo "Funciones de nodo y predeterminados de entrada" no se corresponden exactamente con los tipos del esquema XML. De hecho, algunos de ellos son categorías de tipos, por lo que coincidirán con más tipos. Por ejemplo, el tipo string coincide con otros tipos de datos derivados de string, como normalizedString, token, NCName, NMTOKEN, IDREF, ENTITY, entre otros. Asimismo, el tipo decimal coincidirá con los tipos derivados integer, long, short y otros.

 

La jerarquía de tipos obedece a la recomendación de X3C para el esquema XML. Para ver un diagrama que muestre la jerarquía completa, consulte el §3 de "XML Schema Part 2: Datatypes Second Edition", https://www.w3.org/TR/xmlschema-2.

 

Filtros avanzados

También puede aplicar reglas que se basen en criterios aún más avanzados:

 

Aplicar la regla si el nodo es de un tipo específico Y el nombre del nodo coincide con un texto concreto

Aplicar la regla si el nodo es de un tipo específico Y el nombre del tipo coincide con un texto concreto

 

Por ejemplo, la siguiente configuración aplica una regla solo si el tipo del nodo es string Y el nombre del nodo s "Title". La imagen de la derecha muestra una estructura de ejemplo en la que esta regla sería útil (solo hay coincidencia con el nodo "Title", que recibe el icono mf_ic_node_func_applied):

 

mf_nodefunc_11

mf_nodefunc_12

 

Otra opción es la de usar expresiones regulares para emparejar varios nombres de nodo o de tipo que cumplan los requisitos. Por ejemplo, en la siguiente configuración se aplica una regla a todos los elementos de tipo string cuyo nombre termina en "total". Observe que se usa una expresión regular, .+total, que significa literalmente: buscar una o más ocurrencias de cualquier carácter que vaya seguido de "total". Esta búsqueda también distingue entre mayúsculas y minúsculas, lo que significa que tanto "SOMETOTAL" como "SomeTotal" aparecerán en la búsqueda. La imagen de la derecha muestra una estructura de ejemplo en la que esta regla sería útil (los tres elementos "Total" cumplen los criterios de la regla, por lo que se distinguen con el icono mf_ic_node_func_applied):

 

mf_nodefunc_10

mf_nodefunc_13

 

La semántica de las expresiones regulares es la misma que la del esquema XML (véase también el apartado Expresiones regulares). Observe que:

 

las anclas ^ y $ están implícitas y no es necesario introducirlas en el campo Buscar.

con la casilla Coinc. mayús./m puede controlar si se diferencia o no entre mayúsculas y minúsculas, por lo que no se admite la bandera i.

© 2015-2021 Altova GmbH