Bonjour tous,POUR XML PATH et xsi: nil attributs
J'ai une grande requête utilisant FOR XML PATH pour produire un .xml file.I ont la principale sélection qui représente fondamentalement juste la racine à savoir
select *
from tbl
for xml path ('root'),elements xsinil
je puis sélectionne suivantes imbriquées dans ce principal, sélectionnez-à-dire
select
(
select null [level1],
'2' [level2]
from tbl
for xml path('nested1'),type
),
(
select null [level1],
'2' [level2]
from tbl
for xml path('nested2'),type
)
for xml path('root'),elements xsinil
Cependant, l'élément XSINIL l'argument placé sur le chemin pour XML n'a aucun effet sur le contenu subqu C'est-à-dire que l'élément Level1 est juste une étiquette fermée. J'ai besoin de ceci pour montrer comme xsi: nil = "vrai".
Je peux y parvenir en ajoutant des éléments xsinil à l'instruction de chemin for xml, par exemple. Le problème avec ceci est que la déclaration de l'espace de noms est répétée au niveau de la sous-requête.
Je peux trouver beaucoup d'exemples d'utilisation des éléments xsinil mais aucun où il doit s'appliquer à une sous-requête sans une déclaration de namesapce répétée.
Pour confirmer, je suis à la recherche de la sortie suivante:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<nested1>
<level1 xsi:nil="true">
<level2>2</level2>
</nested1>
<nested2>
<level1 xsi:nil="true">
<level2>2</level2>
</nested2>
</root>
Espoir vous pouvez aider!
Merci d'avoir pris le temps de répondre. Je pense que vous avez raison de dire qu'il n'est pas possible d'utiliser des sous-requêtes. J'ai, par conséquent, changé la façon dont les requêtes précédentes génèrent les données de sorte que la création du fichier .xml ne nécessite pas de sous-requêtes. Je vais marquer votre réponse aussi correcte que cela fonctionne - mon client veut juste éviter l'utilisation de xml explicite. Merci – JordanMazurke