2013-06-26 33 views
1

您好我有以下xml代码: 然后,我需要将这些xml转换为csv格式,标题标题是show。如何使用xsl将xml转换为csv

<?xml version='1.0'?> 

    <portfolio> 

    <stock exchange="nasdaq"> 
    <name>zaffymat inc</name> 
    <symbol>ZFFX</symbol> 
    <price>92.250</price> 
    </stock> 

    <stock exchange="nyse"> 
    <name>zacx corp</name> 
    <symbol>ZCXM</symbol> 
    <price>28.875</price> 
    </stock> 

    <stock exchange="nasdaq"> 
    <name>zysmergy inc</name> 
    <symbol>ZYSZ</symbol> 
    <price>20.313</price> 
    </stock> 

    </portfolio> 

如何将xml转换为csv,如下面的输出通过xsl?

"Name";"Price" 
"zaffymat inc";"92.250" 
"zysmergy inc";"20.313" 

谢谢。

+0

你试过了什么? – Usman

回答

2

试试这个XSLT以得到所需输出:

<xsl:template match="portfolio"> 
    <xsl:text>"Name";"Price"</xsl:text> 
    <xsl:text>&#10;</xsl:text> 
    <xsl:for-each select="stock"> 
     <xsl:text>"</xsl:text> 
     <xsl:value-of select="name"/> 
     <xsl:text>";</xsl:text> 
     <xsl:text>"</xsl:text> 
     <xsl:value-of select="price"/> 
     <xsl:text>"</xsl:text> 
     <xsl:text>&#10;</xsl:text> 
    </xsl:for-each> 
    </xsl:template> 
+0

Thanxs Navin.Its工作。我添加来过滤输出。我还添加
来创建一个新行。 =) – qisadapolka

0

这是我的最后一个脚本:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="portfolio"> 

<xsl:text>"Name"</xsl:text> 
<xsl:text>&#10;</xsl:text> 
<xsl:text>;</xsl:text> 
<xsl:text>&#10;</xsl:text> 
<xsl:text>"Price"</xsl:text><br/>&#10; 

<xsl:for-each select="//stock[@exchange='nasdaq']"> 

<xsl:text>"</xsl:text> 
<xsl:value-of select="name"/> 
<xsl:text>"</xsl:text><xsl:text>&#10;</xsl:text> 

<xsl:text>;</xsl:text> 
<xsl:text>&#10;</xsl:text> 

<xsl:text>"</xsl:text> 
<xsl:value-of select="price"/> 
<xsl:text>"</xsl:text><br/>&#10; 

</xsl:for-each> 
</xsl:template> 

它的做工精细筛选出信息,使新线CSV输出! =)