コレクションを指定しなくても、これでうまくいきます:
DECLARE @X XML SET @x = N' <parameters xmlns="http://www.educations.com/Search/Parameters.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <parameter xsi:type="category" categoryID="38" /> </parameters>' ; WITH XMLNAMESPACES ( 'http://www.educations.com/Search/Parameters.xsd' as p, 'http://www.w3.org/2001/XMLSchema-instance' as xsi ) SELECT @X.value('(/p:parameters/p:parameter/@xsi:type)[1]','nvarchar(max)')
プレ>
search.SearchParameters
の内容を投稿していただけませんか ?更新:
スキーマにバインドされた
XML
について 、これは不可能のようです。列を freetype
XML
にキャストできます :WITH XMLNAMESPACES ( 'http://www.educations.com/Search/Parameters.xsd' as p, 'http://www.w3.org/2001/XMLSchema-instance' as xsi ) SELECT CAST(@X AS XML).value('(/p:parameters/p:parameter/@xsi:type)[1]','nvarchar(max)')
プレ>(ただし、
XML
は使用できません) 列の任意のインデックス)、または特定の型でブール チェックを実行します:WITH XMLNAMESPACES ( 'http://www.educations.com/Search/Parameters.xsd' as p ) SELECT @X.query('(/p:parameters/p:parameter)[1] instance of element(*, p:category?)')
プレ>