2016-04-19 13 views
1

local-name(.)のノード名を表示する場合はhereと表示されますが、各ジョブ候補の名前を再開して姓を再開することはできません。T-SQL XQueryノードの値のパスが一致しません

USE AdventureWorks2012; 

    WITH XMLNAMESPACES(
    'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' 
     AS ns) 

     SELECT 
     T.rows.value('(ns:Name.First)[1]', 'nvarchar(100)') AS firstName, 
     T.rows.value('(ns:Name.Last)[1]', 'nvarchar(100)') AS lastName 
     FROM HumanResources.JobCandidate 
     CROSS APPLY 
     Resume.nodes('//ns:Name/*') AS T(rows); 

エラーメッセージには、対象ノードと思われるものを含め、コンテキスト内のノードが一覧表示されます。

のXQuery [HumanResources.JobCandidate.Resume.value()]:タイプ 「要素(NS {http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume}に "Name.First {http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume}" : という名前の要素が存在しない名前.Prefix、XS:列)| 要素(NS {http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume}:Name.First、XS:列)

...

要素(ns {http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume}:Name.Last、xs:string)| 要素(NS {} http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume:Name.Suffix、XS:文字列)。」

elementがレベルダウンしているという問題です

答えて

0

問題は、そのコンテキストがあまりにも深いレベルであった固定?。 /*nodesパスから削除します。

WITH XMLNAMESPACES(
'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' 
    AS ns) 

    SELECT 
    T.rows.value('(ns:Name.First)[1]', 'nvarchar(100)') AS firstName, 
    T.rows.value('(ns:Name.Last)[1]', 'nvarchar(100)') AS lastName 
    FROM HumanResources.JobCandidate 
    CROSS APPLY 
    Resume.nodes('//ns:Name/*') AS T(rows); 
関連する問題