Valores NULL
En esta sección explicamos cómo se ocupa MapForce de los valores NULL en los componente de origen y de destino. Para poder usar el atributo xsi:nil="true" en un archivo XML debe especificar el atributo nillable="true» en los elementos relevantes del archivo de esquema correspondiente. Para saber más sobre los atributos nillable y xsi:nil consulte la especificación del W3C. Observe que el atributo xsi:nil no es visible en la estructura de los componentes del panel Asignación.
A continuación explicamos algunos casos de uso de los valores NULL en asignaciones.
Valores NULL en componentes XML
En esta subsección vamos a ver algunos ejemplos de casos de uso de elementos de asignación que tienen un atributo xsi:nil="true".
Sólo el elemento de origen tiene xsi:nil="true"/Tanto el elemento de origen como el de destino tienen xsi:nil="true"
En este caso las condiciones son:
•La conexión está basada en destino.
•El elemento de origen es un atributo xsi:nil="true". El elemento de destino correspondiente no tiene este atributo.
•También es posible que los dos elementos, el de origen y el de destino, tengan atributos xsi:nil="true".
•Los atributos nillable="true" se deben definir en los esquemas de origen y de destino,
•Los elementos de origen y de destino son de tipo simple.
En este caso, el elemento de destino tendrá el atributo xsi:nil="true" en el archivo de salida, como se ve en el archivo de resultados de más abajo (resaltado en amarillo).
<book id="7">
<author>Edgar Allan Poe</author>
<title>The Murders in the Rue Morgue</title>
<category xsi:nil="true"/>
<year>1841</year>
<OrderID id="213"/>
</book>
Nota: | Si el atributo nillable="true" no está definido en el esquema de destino, el elemento de destino correspondiente estará vacío en el resultado. |
Sólo el elemento de destino tiene xsi:nil="true»
En este caso las condiciones son:
•La conexión está basada en destino.
•El elemento de origen no tiene un atributo xsi:nil="true".
•El elemento de destino correspondiente tiene un atributo xsi:nil="true".
•Los elementos de origen y de destino pueden ser de tipo simple o complejo.
En este caso el elemento de origen sobrescribirá el elemento de destino que contiene el atributo xsi:nil="true". En el ejemplo siguiente puede ver un archivo de resultados de ejemplo. El elemento <genre> incluye el atributo xsi:nil="true" en el elemento de destino. Sin embargo, este elemento se sobrescribe en tiempo de ejecución, por lo que el elemento <genre> (resaltado en amarillo) tiene Fiction en el resultado.
<publication>
<id>1</id>
<author>Mark Twain</author>
<title>The Adventures of Tom Sawyer</title>
<genre>Fiction</genre>
<year>1876</year>
<OrderID id="124"/>
</publication>
El elemento de tipo complejo de origen/los dos elementos de tipo complejo tienen xsi:nil="true"
En este caso las condiciones son:
•La conexión está basada en destino.
•El elemento de origen es de tipo complejo. En este ejemplo el elemento de origen tiene un atributo id="213" y un atributo xsi:nil="true». El elemento de destino correspondiente también es de tipo complejo y tiene un atributo id="124", pero no un atributo xsi:nil="true».
•También puede ser que los dos elementos, el de origen y el de destino, que son de tipo complejo, tengan atributos xsi:nil="true».
En este caso el elemento de origen sobrescribirá el elemento de destino (resaltado en amarillo). Sin embargo, el atributo xsi:nil="true" no se escribe automáticamente en el archivo de salida. Para ver el atributo xsi:nil="true" en el elemento de destio del archivo de resultados use una conexión de copia total.
<book id="7">
<author>Edgar Allan Poe</author>
<title>The Murders in the Rue Morgue</title>
<year>1841</year>
<OrderID id="213"/>
</book>
Funciones útiles
Estas funciones sirven para comprobar, reemplazar y asignar valores NULL:
•is-xsi-nil: Ayuda a comprobar de forma explícita si un elemento de origen tiene el atributo xsi:nil definido como true.
•substitute-missing: Sustituye un valor NULL en el elemento de origen con algo específico.
•set-xsi-nil: Asigna el elemento xsi:nil="true" a un elemento de destino. Esto funciona con elementos de destino de tipo simple y complejo.
•substitute-missing-with-xsi-nil: Si hay contenido, este se escribe en el elemento de destino; si falta algún valor, esta función produce un elemento de destino con el atributo xsi:nil="true» en el resultado.
•Si conecta la función exists a un elemento de origen con un valor NULL devuelve true aunque el elemento no tenga contenido.
Observe que las funciones que generan xsi:nil no pueden pasar a través de funciones o componentes que sólo operan en valores (como la función if-else).