Valeurs NULL
Cette section décrit comment MapForce gère les valeurs NULL dans les composants source et cible. Pour pouvoir utiliser l’attribut xsi:nil="true" dans votre fichier XML, vous devez spécifier l’attribut nillable="true" pour les élément(s) dans votre fichier de schéma. Pour en savoir plus sur les attributs nillable et xsi:nil, voir la spécification W3C. Notez que l’attribut xsi:nil n’est pas visible dans une arborescence de composant dans le volet Mappage.
Les sous-sections ci-dessous illustrent quelques scénarios possibles de valeurs NULL de mappage.
Valeurs NULL dans les composants XML
Cette sous-section décrit quelques uns des scénarios possibles de mappage des éléments avec un attribut xsi:nil="true".
Uniquement l’élément source a xsi:nil="true"/Les deux éléments source et cible ont xsi:nil="true"
Ce scénario a les conditions suivantes :
•La connexion est target-driven.
•L’élément source a un attribut xsi:nil="true". L’élément cible correspondant n’a pas cet attribut.
•En alternative, les deux éléments source et cible peuvent avoir les attributs xsi:nil="true".
•Les attributs nillable="true" doivent être définis dans les schémas source et cible.
•Les éléments source et cible sont de type simple.
Dans ce cas, l’élément cible aura l’attribut xsi:nil="true" dans le fichier de sortie, tel qu’affiché dans le modèle de fichier de sortie ci-dessous (en surbrillance jaune).
<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"/>
</books>
Note : | si l’attribut nillable="true" n’est pas défini dans le schéma cible, l’élément cible correspondant sera vide dans la sortie. |
Seul l’élément cible a xsi:nil="true"
Ce scénario a les conditions suivantes :
•La connexion est target-driven.
•L’élément source n’a pas d’attribut xsi:nil="true".
•L’élément cible correspondant a un attribut xsi:nil="true".
•L’élément source et cible peut être de type simple ou complexe.
Dans ce cas, l’élément source écrasera l’élément cible contenant l’attribut xsi:nil="true". L’exemple ci-dessous montre un modèle de fichier de sortie. L’élément <genre> inclut l’attribut xsi:nil="true" dans l’élément cible. Toutefois, cet élément a été écrasé lors de l’exécution de mappage. Pour cette raison, l’élément <genre> (en surbrillance jaune) a Fiction dans la sortie.
</publication>
<id>1</id>
<author>Mark Twain</author>
<title>The Adventures of Tom Sawyer</title>
<Genre>Rock</Genre>
<year>1876</year>
<OrderID id="124"/>
</publication>
L’élément source Complex-type/les éléments complex-type ont xsi:nil="true"
Ce scénario a les conditions suivantes :
•La connexion est target-driven.
•L’élément source est de type complexe. Dans notre exemple, l’élément source a un attribut id="213" et un attribut xsi:nil="true". L’élément cible correspondant est de type complexe et a un attribut id="124" , mais n’a pas d’attribut xsi:nil="true".
•En alternative, les éléments source et cible, dont les deux sont de type complexe, peuvent avoir des attributs xsi:nil="true".
Dans ce cas, l’élément source écrasera l’élément cible (en surbrillance jaune ci-dessous. Toutefois, l’attribut xsi:nil="true" ne sera pas écrit dans le fichier de sortie automatiquement. Pour voir l’attribut xsi:nil="true" dans l’élément cible dans le fichier de sortie, utilisez la connexion copy-all.
<book id="7">
<author>Edgar Allan Poe</author>
<title>The Murders in the Rue Morgue</title>
<year>1841</year>
<OrderID id="213"/>
</books>
Fonctions utiles
Les fonctions suivantes pourraient vous aider à vérifier, remplacer et assigner les valeurs NULL :
•is-xsi-nil : Aide à vérifier explicitement si un élément source a un attribut xsi:nil définit à true.
•substitute-missing : Substitue une valeur NULL dans l’élément source avec quelque chose de spécifique.
•set-xsi-nil : Assigne l’attribut xsi:nil="true » à un élément cible. Ceci fonctionne pour les éléments cible de types simple et complexe.
•substitute-missing-with-xsi-nil : S’il y a un contenu, il sera écrit à l’élément cible ; s’il y a des valeurs qui manquent, utilisez cette fonction résultera en élément cible avec un attribut xsi:nil="true" dans la sortie.
•Connecter une fonction exists à un élément source avec une valeur NULL retourne true, même si l’élément n’a pas de contenu.
Veuillez noter que les fonctions qui génèrent xsi:nil ne peuvent pas être passées par les fonctions ou composants qui opèrent uniquement sur des valeurs (telles que la fonction if-else).