我构建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
是否有任何方法可以强制容器元素存在?
select
(
select
'John Doe'
where 1 = 0
for xml path('Patient'), type
)
for xml path('Patients'), root('Hospital'), type