2014-07-10 145 views
0

到csv我有一個這樣的XML:XML多層次使用XSLT

<PROGRAM> 
    <date>10/07/2014</date> 
    <name>Name</name> 
    <LOTS> 
     <LOT> 
      <ID>1</ID> 
      <type>A</type> 
     </LOT> 
     <LOT> 
      <ID>2</ID> 
      <type>B</type> 
     </LOT> 
</PROGRAM> 

而且我想從轉換(XSLT)結果得到這樣的:

2014年10月7日,名稱,1,A
10月7日/ 2014年,名稱,2,B

這裏是我的XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 
<xsl:output method="text"/> 
    <xsl:variable name='newline'> 
     <xsl:text></xsl:text> 
    </xsl:variable> 

<xsl:template match="/"> 
     <xsl:for-each select="//LOT"> 
      <xsl:for-each select="//PROGRAM"> 
       <xsl:value-of select="concat(date,',',name)"/> 
      </xsl:for-each> 
      <xsl:value-of select="concat(',',ID,',',type,$newline)"/> 
     </xsl:for-each> 
</xsl:template> 

有沒有人知道XSLT實現這一目標?

謝謝!

回答

0

如何更簡單的東西:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text" encoding="UTF-8"/> 

<xsl:template match="/"> 
     <xsl:for-each select="PROGRAM/LOTS/LOT"> 
      <xsl:value-of select="concat(../../date, ',', ../../name, ',', ID, ',', type)"/> 
      <xsl:if test="position()!=last()"> 
       <xsl:text>&#10;</xsl:text> 
      </xsl:if> 
     </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 
+0

感謝您的答覆它的工作原理 – dali

+0

@dali如果您的問題被回答,請接受答案關閉它。 –