I am trying to retrieve an XML attribute from an XML variable passing in the name of the desired attribute. The first select statement works just fine retrieving the correct attribute values. However, when I try to set within a SQL variable the desired attribute name, all that is displayed is the string /root/attribs/@id instead of the actual value. I have tried numerous permutations of the @path variable, all to no avail.
What am I missing here?
DECLARE @XMLString XML = '<root><attribs flags="1" id="test_id" platform="test_platform" /></root>';
SELECT
flags = x.c.value('(/root/attribs/@flags)[1]', 'nvarchar(50)') ,
id = x.c.value('(/root/attribs/@id)[1]', 'nvarchar(50)') ,
[platform] = x.c.value('(/root/attribs/@platform)[1]', 'nvarchar(50)')
FROM
@XMLString.nodes('/*') x ( c );
DECLARE @Path NVARCHAR(50) = '/root/attribs/@id';
SELECT
result = x.c.value('(sql:variable("@Path"))[1]', 'nvarchar(50)')
FROM
@XMLString.nodes('/*') x ( c );