Không chỉ định bộ sưu tập, điều này phù hợp với tôi:
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)')
Bạn có thể vui lòng đăng nội dung của search.SearchParameters
?
Cập nhật:
Trên XML
có giới hạn lược đồ , điều này dường như là không thể.
Bạn có thể truyền cột của mình thành một XML
freetype :
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)')
(nhưng bạn sẽ không thể sử dụng XML
của bất kỳ chỉ mục nào trên cột của bạn) hoặc thực hiện kiểm tra boolean trên một loại cụ thể:
WITH XMLNAMESPACES
(
'http://www.educations.com/Search/Parameters.xsd' as p
)
SELECT @X.query('(/p:parameters/p:parameter)[1] instance of element(*, p:category?)')