Bonjour, je débute en XQuery et malheureusement la requête que je dois réalisée n'est pas des plus simples, si quelqu'un pouvait m'aider...

J'ai une application C# avec une base de données SQL Server. Une de mes tables contient les champs suivant:

Table Document:

* IDDocument (INTEGER)
* Doc_Sommaire (XML)


Le champ Doc_Sommaire contient du xml ayant la structure suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<sommaire>
    <node label="Sommaire" isBranch="true">
        <node label="Actus" isBranch="true">
            <node label="L'actualité en bref" />
            <node label="Agenda" />
        </node>
        <node label="Outils" isBranch="true">
            <node label="SonarJ et Maven surveillent votre architecture Java" />
        </node>
        <node label="Evénement" isBranch="true">
            <node label="TechDays 2008: c'est parti pour Windows Server 2008!" />
        </node>
        <node label="Projets" isBranch="true">
            <node label="Eclipse Process Framework Composer" />
        </node>
    </node>
</sommaire>
Mon application doit comparer une chaine avec tous les champs label du sommaire et renvoyer le IDDocument lorsque la comparaison est vrai.

Par exemple en imaginant qu'un de mes documents contienne le xml ci-dessus dans son champ Doc_Sommaire, si je donne la chaine "Eclipse", ma requête doit me retourner son IDDocument car la chaine "Eclipse" fait bien parti du xml.

Voici ce que j'ai essayé mais cette requête ne fonctionne pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT IDDocument
FROM Document
WHERE Doc_Sommaire.value('contains(//node[@label], " + strSearch + ")', 'bit')=1
strSearch étant la chaine de recherche.

Je pense que je dois pas être bien loin de la réponse, mais sur internet je n'ai réussi à trouver aucun exemple qui couvre mon cas de figure!

Merci pour votre aide!