Suministrar metadatos del nodo a funciones de nodo
Es posible que existan casos en los que quiera que una función de nodo haga algo basándose en metadados del nodo. Por metadatos del nodo entendemos información diversa sobre el nodo en el que se aplica la función (por ejemplo, un nombre de nodo, la longitud de su valor y su precisión), que se almacena en el esquema. En la tabla siguiente puede ver todos los parámetros de metadatos que puede usar en una función de nodo. Recuerde que algunos parámetros de metadatos afectan solamente a ciertos tipo de datos. MapForce le avisa si intenta usar unos metadatos que son incompatibles con el nodo actual.
Parámetros de los metadatos | Descripción |
---|---|
node_name | Da el nombre del nodo en cuestión. Estos metadatos se aplican a todos los nodos. En el caso de XML, node_name es el nombre del elemento o atributo actual. En el caso de CSV, node_name es el campo CSV. En el caso de bases de datos, node_name es el nombre de la columna de tabla. |
node_annotation | Da la anotación de texto que aparece junto al valor del nodo en los resultados. Estos metadatos se aplican a todos los nodos. |
node_minLength | Da el valor del aspecto minLength del tipo de datos del nodo. Se aplica a los nodos XML y de texto con los tipos correspondientes. Para más información consulte la recomendación de XML Schema. |
node_maxLength | Da el valor del aspecto maxLength del tipo de datos del nodo. Se aplica a nodos XML y de texto con los tipos correspondientes. Para más información consulte la recomendación de XML Schema. |
node_totalDigits | Da el valor del aspecto totalDigits del tipo de datos del nodo. Se aplica a los nodos XML con los tipos correspondientes. Para más información sobre el aspecto totalDigits consulte la recomendación de XML Schema. |
node_fractionDigits | Da el valor del aspecto fractionDigits del tipo de datos del nodo. Se aplica a nodos XML con los tipos correspondientes. Para más información sobre el aspecto totalDigits consulte la recomendación de XML Schema. |
node_length | Da a longitud del tipo de datos del nodo. Se aplica a los campos de BD con los tipos correspondientes. Para más información consulte la documentación de Microsoft. |
node_precision | Da la precisión del tipo de datos del nodo. Se aplica a los campos de BD con los tipos correspondientes. Consulte la documentación de Microsoft para obtener más información. |
node_scale | Da la el número máximo de dígitos a la derecha del punto decimal. Se aplica a los campos de BD con los tipos correspondientes. Consulte la documentación de Microsoft para obtener más información. |
Nota: | el tipo de datos del parámetro de metadatos debe coincidir con el tipo de datos del nodo correspondiente. De lo contrario no se puede ejecutar la función. |
Suministrar metadatos a una función de nodo
Para suministrar metadatos a una función de nodo comience por crear una nueva función de nodo y después haga clic en la opción Agregar detalles del nodo, que se encuentra bajo la ventana Funciones de nodo. Esta acción abre el cuadro de diálogo Insertar componente de entrada, donde puede seleccionar los parámetros de los metadatos. En vez de la opción Agregar detalles del nodo, también puede elegir una de estas:
•Haga clic con el botón derecho en un área vacía de la asignación y seleccione Insertar componente de entrada en el menú contextual.
•Haga clic en el comando de la barra de herramientas .
•Haga clic en Insertar componente de entrada en el menú Función.
Metadatos no compatibles con nodos
Si un parámetro de metadatos no es compatible con un nodo, puede indicar a MapForce que devuelva una secuencia vacía o que no aplique la función de nodo (puede encontrar ambas opciones en el cuadro de diálogo Insertar componente de entrada con nodo específico). Ahora debe ocuparse de la secuencia vacía; de lo contrario la función de nodo no devolverá ningún valor. Normalmente tendría que usar funciones de secuencia (como substitute-missing y exists) u otros tipos de componente para seguir procesando la secuencia vacía.
Ejemplo
En el ejemplo siguiente puede ver cómo suministrar un texto de anotación a una función de nodo. Para este ejemplo necesita la asignación: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\MissingFields.mfd. En MissingFields.xsd (en la que se basa MissingFields.xml) hemos añadido esta anotación para el elemento Name: Article name from catalog Spring 2022. Nuestro objetivo es pasar esta anotación a una función de nodo y verla en el resultado. Siga las instrucciones a continuación.
1.Cree una función de nodo para el elemento Name del componente ArticlesOfClothing.
2.Replique la función de más abajo. Para agregar un parámetro node_annotation haga clic en Agregar detalles del nodo (encuadrado en rojo más abajo) y seleccione este parámetro de la lista. Para averiguar cómo agregar y manipular funciones consulte Fundamentos de las funciones.
Nota: | por defecto, las estructuras anidadas con mucha profundidad no se escanean completamente para ahorrar memoria y mejorar la experiencia del usuario. Si el componente al que está aplicando la función tiene este tipo de estructuras anidadas profundas, puede expandir los nodos relevantes en la asignación para que MapForce los tenga en cuenta. En este caso la aplicación incluirá los nodos expandidos cuando agregue un parámetro de metadatos nuevo y la advertencia desaparecerá. La función de nodo debe estar conectada para que funcione; los elementos expandidos pero no conectados no se tienen en cuenta. |
Resultados
A continuación puede ver que la anotación se ha añadido a los valores de los elementos Name.
T-Shirt (Article name from catalog Spring 2022) 25.5 20 Available in black, blue, and red Shirt (Article name from catalog Spring 2022) 70.3 60 Pants (Article name from catalog Spring 2022) Limited stock Jacket (Article name from catalog Spring 2022) 57.5 40 |