2013-03-07 13 views
8

wir haben eine einfache Tabelle und konvertieren müssen XMLSpecial für Xml in SqlServer

Declare @Person TABLE 
( [BusinessEntityID] [int] NOT NULL, 
    [PersonType] [varchar](2) NULL, 
    [Title] [varchar](30) NULL, 
    [FirstName] [varchar](30) NULL, 
    [MiddleName] [varchar](30) NULL, 
    [LastName] [varchar](30) NULL) 

Insert Into @Person Values(10001,'IN','Article','Carolyn','Jo','Alonso') 

wir brauchen diese xml für die Ausgabe mit für XML in SQL Server

<?xml-stylesheet type='text/xsl' href='result.xsl'?> 
<documents> 
    <document> 
    <field name="BusinessEntityID">10001</field> 
    <field name="PersonType">IN</field> 
    <field name="Title">Article</field> 
    <field name="FirstName">Carolyn</field> 
    <field name="MiddleName">Jo</field> 
    <field name="LastName">Alonso</field> 
    </document> 
</documents> 

Antwort

8

Die Abfrage folgende XML-Pfad sollte bekomme den größten Teil des Weges. Sie müssen nur den Stylesheet-Header hinzufügen.

SELECT 
'BusinessEntityID' AS 'document/field/@name' 
, BusinessEntityID AS 'document/field' 
, '' AS 'document' 
, 'documentType' AS 'document/field/@name' 
, PersonType AS 'document/field' 
, '' AS 'document' 
, 'Title' AS 'document/field/@name' 
, Title AS 'document/field' 
, '' AS 'document' 
, 'FirstName' AS 'document/field/@name' 
, FirstName AS 'document/field' 
, '' AS 'document' 
, 'MiddleName' AS 'document/field/@name' 
, MiddleName AS 'document/field' 
, '' AS 'document' 
, 'LastName' AS 'document/field/@name' 
, LastName AS 'document/field' 
, '' AS 'document' 
FROM @Person 
FOR XML PATH(''), ROOT('documents') 
+0

sehr Panzer viel – jozi