Я не смог ничего найти конкретно по этому вопросу, но мне хотелось бы знать, как я могу выбрать атрибут подузла в XML, который идентифицируется пространством имен, asp для пространства имен XLINK ниже:
<?xml version="1.0" encoding="UTF-8"?>
<result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink">
<people lastUpdateDate="xxxx-xx-xx">
<person name="Paul" surname="Who Cares" height="180" weight="89" xlink:href="https://i.stack.imgur.com/jMgYU.jpg?s=48&g=1" />
</people>
</result>
В настоящее время мой запрос выглядит следующим образом, но мне просто нужно внести небольшое изменение, чтобы получить ссылку.
DECLARE @xml AS TABLE(MyXml xml);
INSERT @xml SELECT CONVERT(xml, BulkColumn, 2)
FROM OPENROWSET (Bulk '[filepath]', SINGLE_BLOB) [rowsetresults];
WITH xmlnamespaces('http://www.w3.org/1999/xlink' AS a)
SELECT
Person.value('@name', 'NVARCHAR(50)'),
Person.value('@surname', 'NVARCHAR(50)'),
Person.value('@height', 'INT'),
Person.value('@weight', 'INT'),
Person.value('@xlink:href', 'NVARCHAR(500)'), -- THIS IS WHERE I NEED HELP
FROM
@xml
CROSS APPLY [MyXml].nodes('result/people') AS MyXml(People)
OUTER APPLY People.nodes('person') AS People(Person);