【发布时间】:2016-03-09 16:23:08
【问题描述】:
我想删除 XML 数据类型列中的所有节点;匹配所有记录的属性条件。例如<resource> 节点,其属性“type”的值类似于'%audio%'。
输入:
<metadata Item="1234" version="5" packageVersion="5" xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2">
<contents>
<content version="0" href="content_es-mx_en-us.xml" lang="es-mx" altlang="en-us">
<resources />
</content>
<content version="3" href="content_en-us.xml" lang="en-us">
<resources>
<resource type="image/svg" href="girlwateringtomatoes2.svg" />
<resource type="audio/ogg" href="Audio/115988A_Sound1.ogg" />
<resource type="audio/mp4" href="Audio/115988A_Sound1.m4a" />
</resources>
</content>
</contents>
<references />
<brailleEncodings />
</metadata>
输出:
<metadata Item="1234" version="5" packageVersion="5" xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2">
<contents>
<content version="0" href="content_es-mx_en-us.xml" lang="es-mx" altlang="en-us">
<resources />
</content>
<content version="3" href="content_en-us.xml" lang="en-us">
<resources>
<resource type="image/svg" href="girlwateringtomatoes2.svg" />
</resources>
</content>
</contents>
<references />
<brailleEncodings />
</metadata>
这是我尝试过但没有用的查询。
;WITH XMLNAMESPACES ('http://www.imsglobal.org/xsd/imsqti_v2p2' AS NS)
Update dbo.TableX
SET [XML].modify('delete /NS:metadata/NS:contents/NS:content[2]/resources/resource[@type != "image/svg"]')
谢谢!
【问题讨论】:
标签: sql-server xml tsql xquery-sql