生成 xml 与 SQL 具有子名称空间的服务器
Generating xml with SQL Server with child namespace
我正在使用 SQL 服务器生成一个 XML,我需要以下名称 space:
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 服务器生成一个 XML,我需要以下名称 space:
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>