Я пытаюсь создать действительный XML для документа HL7 CDA из SQL Server 2008, используя FOR XML.У меня проблемы с синтаксисом, чтобы получить несколько дочерних элементов внутри узла вместо повторения узла для каждого дочернего элемента.
/* Expected output:
<!--
********************************************************
Past Medical History section
********************************************************
-->
<component>
<section>
<code code="10153-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/>
<title>Past Medical History</title>
<text>
<list>
<item>COPD - 1998</item>
<item>Dehydration: 2001</item>
<item>Myocardial infarction: 2003</item>
</list>
</text>
</section>
</component>
*/
SELECT '
********************************************************
Past Medical History section
********************************************************
' As "comment()",
'10153-2' AS [section/code/@code],
'2.16.840.1.113883.6.1' AS [section/code/@codeSystem],
'LOINC' AS [section/code/@codeSystemName],
'Past Medical History' AS [section/title],
(SELECT [Incident] + ' - ' + [IncidentYear] as [item]
FROM [tblSummaryPastMedicalHistory] AS PMH
WHERE ([PMH].[Incident] IS NOT NULL)
AND ([PMH].[PtUnitNum] = [PatientEncounter].[PtUnitNum])
FOR XML PATH('list'), TYPE
) as [section/text]
FROM tblPatientEncounter AS PatientEncounter
WHERE (PatientEncounterNumber = 54)
FOR XML PATH('component'), TYPE
Вместо получения структуры
<text>
<list>
<item>blah</item>
<item>blah2</item>
</list>
</text>
из ожидаемоговывод:
<text>
<list>
<item>blah</item>
</list>
<list>
<item>blah2</item>
</list>
</text>
Может кто-нибудь объяснить, как отформатировать FOR XML, чтобы получить несколько дочерних элементов внутри узла?