【发布时间】:2013-07-03 20:38:15
【问题描述】:
我构建 XML 的查询包括子查询。子记录应该进入容器元素。即使没有子记录,XML 也必须具有容器元素。
考虑以下问题。即使没有子记录或验证失败,<Patients> 容器元素也必须存在。
<Hospital>
<Patients>
<Patient></Patient>
<Patient></Patient>
<Patient></Patient>
</Patients>
</Hospital>
我使用FOR XML PATH 尝试了几种不同的方法:
select
(
select
PatientFields
from
PatientTable
for xml path('Patient'), root('Patients'), elements xsinil, type
)
for xml path('Hospital'), elements xsinil, type
上述方法将<Patients> 元素完全省略为一个空集。
下面的包含标签但添加了xsi:nil="true"属性,这也会导致验证失败。
select
(
select
PatientFields
from
PatientTable
for xml path('Patient'), elements xsinil, type
) Patients
for xml path('Hospital'), elements xsinil, type
有没有办法强制容器元素出现?
【问题讨论】:
标签: sql-server tsql for-xml-path