2015-01-21 31 views
-9

我想從XML數據字段中檢索元素值。請檢查下面的代碼片段更詳細:從XML數據類型字段獲取元素值

SQL腳本:

CREATE TABLE #Temp1 (ConfigXSLT XML); 

INSERT INTO #Temp1 VALUES('<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" /> 
    <xsl:variable name="transport"> 
    <transport protocol="FILE" direction="get" filename="file1*.csv" /> 
    </xsl:variable> 
    <xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()" /> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet>') 

-- I want only filename element value 'file1*.csv' in select statement 

-- I have tried with below query but it not works 
SELECT ConfigXSLT.value('declare namespace PD="http://www.w3.org/1999/XSL/Transform"; (//PD:variable/PD:transport/PD:filename)[1]','VARCHAR(MAX)') 
FROM #Temp1 

DROP TABLE #Temp1 

回答

3

您使用PD命名空間(?爲什麼PD BTW), 「運輸」 telement是一個沒有命名空間摔過。另外,選擇屬性,你的屬性名稱:)

之前使用@符號試試這個:

SELECT ConfigXSLT.value('declare namespace PD="http://www.w3.org/1999/XSL/Transform"; (//PD:variable/transport/@filename)[1]','VARCHAR(MAX)') 
FROM #Temp1 

結果:

file1*.csv 
0
select @xml.value('(/stylesheet/variable/transport/@filename)[1]', 'nvarchar(max)') 

也許類似的東西?

+0

我試過這個,但沒有工作。此代碼不工作樣式表xml。 – 2015-01-21 10:13:16