2014-06-15 134 views
0

我想這個XML文件轉換:XSLT轉換轉換元素屬性

<database name="sql_sales"> 
     <!-- Table Customer --> 
     <table name="Customer"> 
      <column name="CustomerID">1</column> 
      <column name="Name">Roth Farrell</column> 
      <column name="Age">50</column> 
      <column name="Country">Canada</column> 
      <column name="City">Fermont</column> 
      <column name="Signup_date">2013-03-09 16:34:13</column> 
      <column name="Channel">Coupon</column> 
     </table> 
     <table name="Customer"> 
     <column name="CustomerID">3</column> 
     <column name="Name">Randall Mosley</column> 
     <column name="Age">20</column> 
     <column name="Country">Belgium</column> 
     <column name="City">Leuze</column> 
     <column name="Signup_date">2012-03-26 04:02:37</column> 
     <column name="Channel">SEO</column> 
    </table> 
</database> 

爲此格式:

 <dataset> 
     <Cust CustomerID="1" Name="Roth Farrell" Age="50" Country="Canada" City="Fermont" Signup_date="2012-04-26 17:34:13.0" Channel="Coupon"/> 
<Cust CustomerID="3" Name="Randall Mosley" Age="20" Country="Belgium" City="Leuze" Signup_date="2011-05-14 05:02:37.0" Channel="SEO"/> 

     </dataset> 

我是新來的XSLT,我怎麼能做到這一點與XSLT?

感謝

回答

2

使用

<xsl:template match="database"> 
    <dataset> 
    <xsl:apply-templates/> 
    </dataset> 
</xsl:template> 

<xsl:template match="table[@name = 'Customer']"> 
    <Cust> 
    <xsl:apply-templates select="column"/> 
    </Cust> 
</xsl:template> 

<xsl:template match="column"> 
    <xsl:attribute name="{@name}"> 
    <xsl:value-of select="."/> 
    </xsl:attribute> 
</xsl:template> 
+0

如果我要重複所有

節點的相同轉型? – user3242743

+0

您可以輕鬆地添加模板來處理其他元素,或者您可以添加更多匹配模式,例如''xsl:template match =「table [@name ='Customer'] | table [@name = Manager']」>'儘管在當前代碼中,結果中類似'Cust'的元素名稱依賴於'name'屬性可能需要更多的努力。考慮用更詳細的輸入樣本來編輯你的問題,並輸出你想要的結果,然後希望更清楚你想要達到的效果。 –

+0

我編輯了這個問題。我想要做的是一個循環,就像每個將其轉換爲一樣。謝謝 – user3242743