Xml XQuery[nodes()]:名称“s”不表示名称空间
我有一个需要分解的xml。但是我得到了一个错误XQuery[nodes]:名称s并不表示名称空间 我有以下格式的xmlXml XQuery[nodes()]:名称“s”不表示名称空间,xml,sql-server-2008,xquery,xquery-sql,Xml,Sql Server 2008,Xquery,Xquery Sql,我有一个需要分解的xml。但是我得到了一个错误XQuery[nodes]:名称s并不表示名称空间 我有以下格式的xml <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> <s:Header> <a:Action s:mustUnderstand="1">urn:somenam
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">urn:somename-com:Access.2012.Services.Patient.GetCensus</a:Action>
</s:Header>
<s:Body>
<GetCensusByUnitResponse xmlns="urn:somename-com:Access.2012.Services.Patient">
<GetCensusByUnitResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<BeddedPatients>
<BeddedPatient>
...
...
...
</GetCensusByUnitResult>
</GetCensusByUnitResponse>
</s:Body>
</s:Envelope>
;with xmlnamespaces('urn:Epic-com:Access.2012.Services.Patient' as ep,
'http://www.w3.org/2003/05/soap-envelope' as s,
'http://www.w3.org/2005/08/addressing' as a,
'http://www.w3.org/2001/XMLSchema-instance' as i)
谁能告诉我有什么问题吗?提前谢谢 您需要声明名称空间前缀,以便它们在查询执行上下文中可用,而不仅仅在文档中可用。我不熟悉SQLServer的XQuery执行引擎,但它必须有一些用于声明名称空间的功能。你需要找到-或者-你可以考虑使用原生XML数据库,这样你就不需要剪切。
似乎安基尔在他/她的问题正文中添加了正确答案。T-sql要求在select语句之前声明命名空间:
WITH XMLNAMESPACES ( <XML namespace declaration item> [ { , <XML namespace declaration item> }...] )
它仍在处理MS SQL 2016
WITH XMLNAMESPACES ( <XML namespace declaration item> [ { , <XML namespace declaration item> }...] )