Asignar nombres de nodos

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Diseño de asignaciones >

Asignar nombres de nodos

En la mayoría de las asignaciones de datos de MapForce el objetivo es leer valores de un componente de origen y escribir valores en un componente de destino. Sin embargo, en algunos casos el objetivo no es solo acceder a los valores de los nodos de origen, sino al nombre de los nodos. Por ejemplo, puede tratarse de una asignación que lea el nombre de los elementos o atributos (y no sus valores) de un archivo XML de origen y convertir esos nombres en valores de elemento o atributo en el XML de destino.

 

Imaginemos que tenemos un archivo XML que contiene una lista de productos. Cada producto tiene este formato:

 

  <product>

    <id>1</id>

    <color>red</color>

    <size>10</size>

  </product>

 

Nuestro objetivo es convertir información sobre cada producto en pares nombre/valor. Por ejemplo:

 

  <product>
    <attribute name="id" value="1" />
    <attribute name="color" value="red" />
    <attribute name="size" value="10" />
</product>

 

En este caso, necesitaremos acceder al nombre de los nodos de forma dinámica para realizar conversiones de datos.

 

Nota:la transformación del ejemplo también puede conseguirse con las funciones node-name y static-node-name de la biblioteca core. No obstante, en nuestro ejemplo necesitamos conocer exactamente los nombres de elemento del componente de origen y necesitamos conectar cada uno de los elementos manualmente con el componente de destino. Además, puede que las funciones mencionadas no sean suficiente para filtrar o agrupar nodos por nombre o para manipular el tipo de datos de los nodos.

 

No solo puede acceder al nombre de los nodos de forma dinámica cuando necesite leer nombres de nodo, sino también cuando necesite escribirlos. En una asignación normal y corriente el nombre de los atributos o elementos del componente de destino siempre se conoce antes de que se ejecute la asignación. Estos nombres de atributo o elemento vienen del esquema subyacente del componente. Sin embargo, con los nombres de nodo dinámicos podrá crear atributos o elementos nuevos cuyo nombre no se conoce antes de que se ejecute la asignación. Concretamente, el nombre del atributo o elemento viene dado por la asignación propiamente dicha (por el componente de origen).

 

Para poder acceder a elementos o atributos secundarios de forma dinámica el nodo debe tener elementos o atributos secundarios y el nodo principal no puede ser el nodo XML raíz.

 

Puede trabajar con nombres de nodo dinámicos si en la asignación de datos participan componentes de este tipo:

 

XML
CSV/FLF*

 

* Solo compatible con MapForce Professional or Enterprise Edition.

 

Puede trabajar con nombres de nodo dinámicos si selecciona estos lenguajes de transformación: motor integrado BUILT-IN*, XSLT2, XQuery*, C#*, C++*, Java*.

 

* Solo compatible con MapForce Professional o Enterprise Edition.

 

Para más información consulte el apartado Obtener acceso al nombre de los nodos o el ejemplo del apartado Ejemplo: asignar nombres de elemento a valores de atributo.


© 2019 Altova GmbH