2013-08-21 2 views
2

나는 세 개의 컬럼을 가진 테이블 사용자를 가지고 있습니다 : Id, Username, Email.SQL 테이블을 XML로 변환

나는 다음과 같은 형식으로 XML로 변환해야합니다 지금까지 내가 쓴

<Table Name="Users"> 
     <Column Name='Id'>1</Column> 
     <Column Name='Username'>user1</Column> 
     <Column Name='Email'>[email protected]</Column> 
</Table> 
<Table Name="Users"> 
     <Column Name='Id'>2</Column> 
     <Column Name='Username'>user2</Column> 
     <Column Name='Email'>[email protected]</Column> 
</Table> 

이 :

<Table> 
     <Id>1</Id> 
     <Username>user1</Username> 
     <Email>[email protected]</Email> 
</Table> 
<Table> 
     <Id>2</Id> 
     <Username>user2</Username> 
     <Email>[email protected]</Email> 
</Table> 
+0

당신이 SQL 서버는 다음 양식에 원하는 프로세스 게시 비교적 쉽게해야한다고 할 수 없다,하지만 난 아주 잘 XSLT를 모르는 경우 – Rup

답변

2
select 'Users' as [@Name], 
     (select 'Id'  as [@Name], Id  as '*' for xml path('Column'), type), 
     (select 'Username' as [@Name], Username as '*' for xml path('Column'), type), 
     (select 'Email' as [@Name], Email as '*' for xml path('Column'), type) 
from Users 
for xml path('Table'), type 
. 객체의 계층 구조를 어떻게 보이고, 원하는 형태로 보이게하는 것이 더 어려워 질까요?
+0

대단히 감사합니다! – enb081

1
: 나에게이 결과를 제공

select * from Users for xml raw('Table'), Elements, type 

여기서 xsl 솔루션이 적합한 지 확실하지 않습니다. 다음 경우 작동합니다 :

<?xml version="1.0" ?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" encoding="utf-8" indent="yes" /> 

    <xsl:template match="AllUsers"> 
     <xsl:apply-templates select="Table" /> 
    </xsl:template> 

    <xsl:template match="Table"> 
     <xsl:element name="{name()}"> 
      <xsl:apply-templates /> 
     </xsl:element> 
    </xsl:template> 

    <xsl:template match="*"> 
     <Column> 
      <xsl:attribute name="Name">  
       <xsl:value-of select="name(.)" /> 
      </xsl:attribute> 
      <xsl:value-of select="." /> 
     </Column> 

    </xsl:template> 

</xsl:stylesheet> 

참고 AllUsers는 원본 xml의 루트 노드입니다.

SQL Fiddle