Main Contents

XSLT: XML zu CSV mit Kopfzeile

Juli 12, 2010

Folgendes XSLT-Transformation generiert eine CSV-Datei, wobei die XML-Tag-Namen als Kopfzeile ausgegeben werden. Die Tag-Namen müssen für diese Transformation nicht bekannt sein.

XSL:

  1. <xsl:stylesheet version=“1.0″ xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”>
  2.  <xsl :o utput omit-xml-declaration=“yes” method=“html” indent=“yes” encoding=“ISO-8859-1″/>
  3.  
  4. <xsl:strip-space elements=“*” />
  5. <!–Erstellung der Kopfzeile–>
  6. <xsl:template match=“/*/child::*”>
  7. <xsl:for-each select=“*[1]/child::*”>
  8. <xsl:if test=“position() != last()”>"<xsl:value-of select=“name()”/>";</xsl:if>
  9. <xsl:if test=“position()  = last()”>"<xsl:value-of select=“name()”/>"<xsl:text>&#xD;</xsl:text></xsl:if>
  10. </xsl:for-each>
  11. <xsl:apply-templates/>
  12. </xsl:template>
  13.  
  14. <!–Erstellung der Inhaltszeilen–>
  15. <xsl:template match=“/*/*/child::*”>
  16. <xsl:for-each select=“child::*”>
  17. <xsl:if test=“position() != last()”>"<xsl:value-of select=“normalize-space(.)”/>";</xsl:if>
  18. <xsl:if test=“position()  = last()”>"<xsl:value-of select=“normalize-space(.)”/>"<xsl:text>&#xD;</xsl:text>
  19. </xsl:if>
  20. </xsl:for-each>
  21.  
  22. </xsl:template>
  23. </xsl:stylesheet>

Beispiel-XML:

  1. <?xml version=“1.0″ encoding=“UTF-8″?>
  2. <DATA>
  3. <LIST>
  4. <PRODUKT>
  5.         <TYP>AUTO</TYP>
  6.         <BESCHREIBUNG>VW</BESCHREIBUNG>
  7. </PRODUKT>
  8. <PRODUKT>
  9.         <TYP>AUTO</TYP>
  10.         <BESCHREIBUNG>DAIMLER</BESCHREIBUNG>
  11. </PRODUKT>
  12. <PRODUKT>
  13.         <TYP>AUTO</TYP>
  14.         <BESCHREIBUNG>OPEL</BESCHREIBUNG>
  15. </PRODUKT>
  16. </LIST>
  17. </DATA>

Als Tool zum testen der Transformation hat sich: TWXml2Csv bewährt.

Links zum Thema:
Kopieren mit XSLT

Filed under: Coding | Comments (0)

Hinterlasse einen Kommentar

This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)

Du mußt die 5 Zeichen im Bild, (Zahlen von 0 - 9 und Buchstaben von A - F),
in das Feld eintragen und das Formular abschicken um den Download zu starten.

  

Ohje, das kann ich nicht lesen. Bitte, generiere mir eine