2014-06-15 3 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

Вы можете легко добавить шаблоны для обработки других элементов или добавить дополнительные шаблоны соответствия, например. '' хотя в текущем коде, где имя элемента, подобное 'Cust' в результате, похоже, зависит от атрибут 'name' может потребоваться больше усилий. Подумайте о том, чтобы отредактировать свой вопрос с более подробным образцом ввода, который у вас есть и который вы хотите, а затем, надеюсь, будет более ясным, чего вы хотите достичь. –

+0

Я отредактировал вопрос. То, что я хочу сделать, это цикл, как для каждого преобразовать его в . спасибо – user3242743

Смежные вопросы