Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2012, 17h52   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 9
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : octobre 2007
Messages : 9
Points : 1
Points : 1
Envoyer un message via MSN à jak59
Par défaut xquery inserer un noeud dans une multitude de noeuds

Bonjour,

Sous SQL-SERVER 2005

Voici ma problématique :

J'aimerai insérer au début de chaque noeud <div> de class "maclass" un élément (dans mon cas un commentaire).

Le xml étant créé par l'utilisateur via une interface, la structure du xml pouvant être de n’importe quelle forme.

Citation:
<root>
du texte 1
<texte>du texte 2</texte>
<div class="maclass">du texte 3</div>
<div class="autreclass">
du texte 4
<div class="maclass">du texte 5</div>
</div>
...
</root>
J'avais tout d'abords pensé à la fonction insert
Code :
1
2
 
SET @chaine_xml.MODIFY('insert <!--||--> as first into (//div[@class="maclass"])[1] ')
Le problème est que l'on ne peut utiliser qu'un singleton en cible.

J'ai donc essayer avec une itération, en me disant que je vais boucler sur chaque noeud, tester son attribut class avec un if. Et soit le dupliquer soit le transformer.

Code :
1
2
3
4
5
6
7
 
SELECT @chaine_xml.query('for $i in root//* 
	return 
	if (data($i/@class)="maclass") 
		then <toto>reclace class</toto> 
		else $i
						 ')
Le résultat n'est pas satisfaisant car chaque nœud est remplacé, il faudrait que je parcours l'arbre xml de façon récursive.
La chose n'est pas possible, car la déclaration de fonction xquery n'est pas implémenté dans sql-server.

Là je sèche ...

Quelqu'un aurait-il une petite idée ?

Merci d'avance


Sylvain
jak59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h37.


 
 
 
 
Partenaires

Hébergement Web