2010-01-30 7 views
1

J'essaie de produire un document XML valide pour un document CDA HL7 à partir de SQL Server 2008 en utilisant FOR XML. J'ai des problèmes avec la syntaxe pour obtenir plusieurs enfants dans un nœud au lieu de répéter le nœud pour chaque enfant.Comment obtenir plusieurs enfants XML à l'intérieur d'un nœud parent unique au lieu de répéter le nœud parent pour chaque enfant?

/* 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 

Au lieu d'obtenir le

<text> 
    <list> 
    <item>blah</item> 
    <item>blah2</item> 
    </list> 
</text> 
la structure

de la sortie attendue, je reçois:

<text> 
    <list> 
    <item>blah</item> 
    </list> 
    <list> 
    <item>blah2</item> 
    </list> 
</text> 

Quelqu'un peut-il s'il vous plaît expliquer comment formater le FOR XML pour obtenir les enfants multiples à l'intérieur le noeud?

+0

cette question est spécifique à sql query donc vous devez supprimer tag xml – Ravisha

Répondre

1

... compris cela

Au lieu de:

FOR XML PATH('list'), TYPE) as [section/text] 

à Changé:

FOR XML PATH(''), TYPE) as [list/section/text] 

Hope this helps quelqu'un d'autre dans l'avenir.

Questions connexes