我的XML
包含其他XML
作为元素之一的数据
我需要使用XML
将CSV
元素数据转换为XSLT
。
这是我的XML
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<products>
<details>
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
</catalog>
</details>
</products>
在此我需要将<details>
的数据转换为CSV
。
答案 0 :(得分:0)
假设每个<cd>
数据代表csv文件中的单个数据行,请尝试此操作,
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xsl">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:for-each select="details/catalog/cd">
<xsl:for-each select="*">
<xsl:value-of select="."/>
<xsl:variable name="countNode" select="count(../*)"/>
<xsl:choose>
<xsl:when test="position()=$countNode">
<xsl:text>
</xsl:text>
</xsl:when>
<xsl:otherwise>,</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
结果数据如何显示
Empire Burlesque,Bob Dylan,USA,Columbia,10.90,1985
Hide your heart,Bonnie Tyler,UK,CBS Records,9.90,1988
Greatest Hits,Dolly Parton,USA,RCA,9.90,1982