我想从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
答案 0 :(得分:3)
你过分使用PD命名空间(为什么PD btw?),&#34; transport&#34;电视没有命名空间。另外,要选择属性,请在属性名称前使用@符号:)
试试这个:
SELECT ConfigXSLT.value('declare namespace PD="http://www.w3.org/1999/XSL/Transform"; (//PD:variable/transport/@filename)[1]','VARCHAR(MAX)')
FROM #Temp1
结果:
file1*.csv
答案 1 :(得分:0)
select @xml.value('(/stylesheet/variable/transport/@filename)[1]', 'nvarchar(max)')
也许是这样的?