XML到制表符分隔文本

时间:2012-11-08 15:08:10

标签: xml xslt

需要XML,XSLT专家的帮助。

我有一个以XML格式从系统导出的2个样本记录,如下所示。我喜欢使用XSLT将数据转换为制表符分隔文本,如https://docs.google.com/spreadsheet/ccc?key=0AgOV9Or8-zdzdG8yWTlRb1hWeUhzZG02MHA5TGxqR2c

所示

对于XML新手来说,转换有点复杂。如果有人可以通过创建XSL文件来帮助我,我将不胜感激。

感谢。

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<Results productTitle="XYZ DB/TextWorks" productVersion="11.00" xmlns:inm="http://www.xyz.com/webpublisher/query">
<Recordset setCount="2">
<Record setEntry="0">
<ID>282</ID>
<TIL>TIL value</TIL>
<SET>SET value</SET>
<NOA>NOA value</NOA>
<NOQ>NOQ value 1, NOQ value 2, NOQ value 3, NOQ value 4</NOQ>
<LAN>LAN value</LAN>
<CAL>CAL value</CAL>
<INP>INP value</INP>
<SUT>SUT value</SUT>
<SUG>SUG value</SUG>
<EDI>EDI value</EDI>
<MEP />
<NOG>NOG value</NOG>
<IDX>IDX value</IDX>
<SAU />
<Database>Database value</Database>
<Format>Format value 1</Format>
<Format>Format value 2</Format>
<Format>Format value 3</Format>
<Format>Format value 4</Format>
<DES />
<TYP />
<UTI />
<SUR />
<DATE />
<SystemID>530</SystemID>
</Record>
<Record setEntry="1">
<ID>373</ID>
<TIL>TIL value</TIL>
<SET>SET value</SET>
<NOA>NOA value</NOA>
<NOQ>NOQ value 1, NOQ value 2, NOQ value 3, NOQ value 4</NOQ>
<LAN>LAN value 1</LAN>
<LAN>LAN value 2</LAN>
<LAN>LAN value 3</LAN>
<CAL>CAL value</CAL>
<INP>INP value</INP>
<SUT>SUT value</SUT>
<SUG />
<EDI>EDI value</EDI>
<MEP />
<NOG>NOG value</NOG>
<IDX>IDX value</IDX>
<SAU />
<Database>Database value</Database>
<Format>Format value</Format>
<DES />
<TYP />
<UTI />
<SUR />
<DATE />
<SystemID>611</SystemID>
</Record>
</Recordset>
</Results>

1 个答案:

答案 0 :(得分:14)

这样的事情应该是一个很好的起点

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="//Recordset">
<xsl:for-each select="Record">
        <xsl:value-of select="ID"/>
        <!-- tab char -->
        <xsl:text>&#x9;</xsl:text>
        <xsl:value-of select="TIL"/>
        <xsl:text>&#x9;</xsl:text>
        <xsl:value-of select="SET"/>
        <xsl:text>&#x9;</xsl:text>
        <!-- all other fields... -->
        <xsl:value-of select="SystemID"/>
        <!-- line feed char -->
        <xsl:text>&#10;</xsl:text>
        </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>