Tôi muốn chuyển đổi XML thành CSV sử dụng một XSLT, nhưng khi áp dụng XSL từ thread SO với tựa đề XML To CSV XSLT chống đầu vào của tôi:XML để CSV sử dụng XSLT giúp đỡ
<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>
tôi kết thúc với:
[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,
Vấn đề của tôi là chuyển đổi kết quả là thiếu các nút (như phần tử DomainName chứa địa chỉ IP) và một số nút con được ghép nối không có dấu phẩy (như con của AbuseContact).
Tôi muốn xem tất cả đầu ra XML ở dạng CSV và các chuỗi như: "[email protected] Corporation for Assigned Names and Number + 1-310-301-5820", được phân tách bằng dấu phẩy.
XSL của tôi khá gỉ. Trợ giúp của bạn được đánh giá cao. :)
Đây là XSL Tôi đang sử dụng:
<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>
Câu hỏi hay (+1). Xem câu trả lời của tôi cho một giải pháp đơn giản. :) –