我想使用XSLT把XML轉換成CSV,但是從SO線程題爲XML To CSV XSLT對我的輸入應用XSL時:XML到CSV使用XSLT幫助
<WhoisRecord> <DomainName>127.0.0.1</DomainName> <RegistryData> <AbuseContact> <Email>[email protected]</Email> <Name>Internet Corporation for Assigned Names and Number</Name> <Phone>+1-310-301-5820</Phone> </AbuseContact> <AdministrativeContact i:nil="true"/> <BillingContact i:nil="true"/> <CreatedDate/> <RawText>...</RawText> <Registrant> <Address>4676 Admiralty Way, Suite 330</Address> <City>Marina del Rey</City> <Country>US</Country> <Name>Internet Assigned Numbers Authority</Name> <PostalCode>90292-6695</PostalCode> <StateProv>CA</StateProv> </Registrant> <TechnicalContact> <Email>[email protected]</Email> <Name>Internet Corporation for Assigned Names and Number</Name> <Phone>+1-310-301-5820</Phone> </TechnicalContact> <UpdatedDate>2010-04-14</UpdatedDate> <ZoneContact i:nil="true"/> </RegistryData> </WhoisRecord>
我結束了:
[email protected] Corporation for Assigned Names and Number+1-310-301-5820,
,
,
,
...,
4676 Admiralty Way, Suite 330Marina del ReyUSInternet Assigned Numbers Authority90292-6695CA,
[email protected] Corporation for Assigned Names and Number+1-310-301-5820,
2010-04-14,
我的問題是,產生的轉換缺少節點(如包含IP地址的DomainName元素)和一些子節點沒有逗號(如AbuseContact的子節點)連接在一起。
我希望看到所有以CSV格式輸出的XML輸出,以及以逗號分隔的字符串:「[email protected] Corporation for Assigned Names and Number + 1-310-301-5820」。
我的XSL是相當生疏。感謝您的幫助。 :)
下面是我使用的XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" encoding="iso-8859-1"/> <xsl:strip-space elements="*" /> <xsl:template match="/*/child::*"> <xsl:for-each select="child::*"> <xsl:if test="position() != last()"><xsl:value-of select="normalize-space(.)"/>, </xsl:if> <xsl:if test="position() = last()"><xsl:value-of select="normalize-space(.)"/><xsl:text> </xsl:text> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>
很好的問題(+1)。查看我的答案獲得簡單的解決方案。 :) – 2010-05-17 18:50:20