TSQL xml pour ajouter un attribut de schéma de nœud racine
Ma situation est la suivante (simplifié):
DECLARE @period XML = (
SELECT
'2012' 'period'
FOR XML PATH(''), ROOT ('survey'))
DECLARE @persons XML = (
SELECT
Person.Name 'users/person'
FROM Person
FOR XML PATH(''), ROOT ('company'))
SET @persons.modify('insert sql:variable("@period") as first into (/company)[1]')
SELECT @persons
Ce qui me donne un XML comme ceci:
<company>
<survey>
<period>2012</period>
</survey>
<users>
<person>Dubach</person>
</users>
<users>
<person>Pletscher</person>
</users>
...
Maintenant, j'ai besoin d'ajouter un XML schema pour le nœud racine comme ceci:
<company xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mydomain.com/xmlns/bla/blabla/myschema.xsd" xmlns="http://www.mydomain.com/xmlns/bla/blabla">
<survey>
<period>2012</period>
</survey>
<users>
<person>Dubach</person>
</users>
<users>
<person>Pletscher</person>
</users>
...
Microsoft dit que je dois utiliser AVEC XMLNAMESPACES avant l'instruction SELECT, mais qui ne fonctionne pas dans mon cas.
Comment puis-je ajouter ces xmlnamespaces?
OriginalL'auteur Bruno Bieri | 2012-10-04
Vous devez vous connecter pour publier un commentaire.
Diviser le déclarer de la sélectionner, puis utilisez
with xmlnamespaces
comme décrit.Ajoutez-les à la avec - voir modifier
Merci, comment puis-je changer la "schemaLocation" préfixe? J'ai trouvé que je peux utiliser "par DÉFAUT" par défaut "xmlns" mais comment puis-je créer la "xsi:schemaLocation" ?
À l'aide d'un
modify
... voir ci-dessusL'attribut n'apparaît pas dans mon cas. Pour le moment je ne vois pas le problème. J'ai trouvé une autre solution. Voir ma réponse.
OriginalL'auteur podiluska
J'ai trouvé une solution pour ajouter tous les espaces de noms ici:
https://stackoverflow.com/a/536781/1306012
Évident que c'est pas très "gentil" le style, mais dans mon cas ça fonctionne et je n'ai pas trouvé une autre solution qui fonctionne encore.
SOLUTION
OriginalL'auteur Bruno Bieri