嘗試這樣的事情,而不是。它將在元素的文本之前輸出任何屬性。
XML輸入
<projects>
<project>
<name ID="A">Shockwave</name>
<language>Ruby</language>
</project>
<project>
<name ID="B">Other</name>
<language>Erlang</language>
</project>
</projects>
XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="project">
<xsl:apply-templates select="@*|node()"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="@*">
<xsl:value-of select="."/>
<xsl:if test="../text() or parent::project">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="*[ancestor::project]">
<xsl:apply-templates select="@*"/>
<xsl:if test="preceding-sibling::*">
<xsl:text>,</xsl:text>
</xsl:if>
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
輸出
A,Shockwave,Ruby
B,Other,Erlang
EDIT對新要求
XML輸入
<projects>
<project>
<name ID="A" StartDate='2012-01-01' EndDate='2012-01-30'>Shockwave</name>
<language>Ruby</language>
<Manager ID="M1">Nathan</Manager>
</project>
<project>
<name ID="B" StartDate='2012-01-01' EndDate='2012-02-30'>Other</name>
<language>Erlang</language>
<Manager ID="M2">Kristi</Manager>
</project>
</projects>
XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="project">
<xsl:apply-templates select="@*|node()"/>
<xsl:text>|</xsl:text>
</xsl:template>
<xsl:template match="@*">
<xsl:if test="count(parent::*/@*)=1 and not(parent::project)">
<xsl:text>;</xsl:text>
</xsl:if>
<xsl:value-of select="."/>
<xsl:if test="parent::project or (last())">
<xsl:text>;</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="*[ancestor::project]">
<xsl:apply-templates select="@*"/>
<xsl:if test="preceding-sibling::* and not(@*)">
<xsl:text>;</xsl:text>
</xsl:if>
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
輸出
A;2012-01-01;2012-01-30;Shockwave;Ruby;M1;Nathan|B;2012-01-01;2012-02-30;Other;Erlang;M2;Kristi|
XSLT 1.0或2.0? – harpo
xml 1.0 ....屬性不是靜態的,從一個XML文件更改爲另一個... –
我嘗試瞭解http://stackoverflow.com/questions/365312/xml-to-csv-using-xslt上的解決方案但不復制項目ID –