sql-server - 使用带有子命名空间的 SQL Server 生成 xml

标签 sql-server xml azure namespaces azure-sql-database

我正在使用 SQL Server 生成 XML,并且需要以下 namespace :

xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance" ns0:noNamespaceSchemaLocation="http://myLink2Schema.xsd"

我尝试使用以下代码生成它:

WITH XMLNAMESPACES( 

 'http://www.w3.org/2001/XMLSchema-instance' as ns0
 ,'http://myLink2Schema.xsd' as noNamespaceSchemaLocation
)

但是我得到的结果是:

xmlns:noNamespaceSchemaLocation="http://myLink2Schema.xsd" xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance"

如果我尝试这样写它是行不通的:

WITH XMLNAMESPACES( 

 'http://www.w3.org/2001/XMLSchema-instance' as ns0
 ,'http://myLink2Schema.xsd' as ns0:noNamespaceSchemaLocation
)

就像 noNamespaceSchemaLocation 需要是 ns0 的子级一样。

我知道我可以将 XML 视为字符串并在生成后对其进行操作,但我宁愿以正确的方式进行操作。

最佳答案

在您指定的“需要”中ns0:noNamespaceSchemaLocation="http://myLink2Schema.xsd"不是命名空间定义,而是 ns0 中的属性命名空间前缀。您将其输出为 SQL 查询的一部分,例如:

with xmlnamespaces (
'http://www.w3.org/2001/XMLSchema-instance' as ns0
)
select
    'http://myLink2Schema.xsd' as [@ns0:noNamespaceSchemaLocation],
    1 as World
for xml path('Hello');

哪些输出:

<Hello xmlns:ns0="http://www.w3.org/2001/XMLSchema-instance" ns0:noNamespaceSchemaLocation="http://myLink2Schema.xsd">
  <World>1</World>
</Hello>

关于sql-server - 使用带有子命名空间的 SQL Server 生成 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72218735/

相关文章:

asp.net - 像Google一样的SQL搜索语句?

xml - 在 XSLT 中检查字符串是否为有效日期

java - 显示启动画面,然后显示 AppIntro(首次启动)而不是 mainactivity 不工作

XML 架构错误 "Element not allowed for content model"

regex - Azure 媒体播放器播放错误 (0x10600003)

Azure 应用服务 Kudu 工具 "LogFiles"自动删除 - 容器应用服务 (linux)

sql - 消息 208,级别 16,状态 1,第 1 行对象名称无效

sql-server - 使用 SQLCMD 执行发布脚本不返回

sql - TSQL:获取数字的字母表示

azure - 如何从另一台电脑配置kubectl?命名空间为空