J'utilise une requête Xpath assez simple (ci-dessous) pour interroger une colonne de la base de données SQL Server 2008 dont les valeurs suivent toutes la forme de l'exemple (ci-dessous). Ma requête renvoie NULL
pour toutes les lignes, plutôt que les valeurs de l'élément example
(par exemple, "VALUE"), même si l'attribut example
est défini pour chaque ligne que j'interroge.
J'ai essayé de déclarer le xsd
y xsi
dans mon expression Xquery, et en choisissant parmi plusieurs noms d'attributs différents, mais ni l'un ni l'autre n'a eu d'effet. Que me manque-t-il ?
Requête :
select ColumnName.value('(/RootNode/@example)[1]', 'nvarchar(15)') [Result]
from TableName
Exemple de nœud XML (le XML réel contient beaucoup plus d'attributs, que j'ai omis) :
<RootNode xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://intranet"
example="VALUE">
<IsValid>true</IsValid>
</RootNode>
Tentative de requête en utilisant les espaces de noms, avec le même résultat. :
select ColumnName.value('
declare namespace xsd="http://www.w3.org/2001/XMLSchema";
declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance";
(/RootNode/@example)[1]', 'nvarchar(15)') [Result]
from TableName