XSLT Conversion from XML to Tab-separated Text
If you want to try this files, copy and paste the code
into a file called nutrition_csv.xslt
in the
nutrition
directory. (See Linux and Windows setup
instructions.)
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text"https://alistapart.com/> <xsl:variable name="newline"><xsl:text> </xsl:text></xsl:variable> <xsl:variable name="tab"><xsl:text>	</xsl:text></xsl:variable> <!-- category names --> <xsl:template match="nutrition"> <xsl:text>Name	Manufacturer	Serving Size	</xsl:text> <xsl:text>Serving Units	Total Calories	</xsl:text> <xsl:text>Calories from Fat	Total Fat	</xsl:text> <xsl:text>Saturated Fat	Cholesterol	</xsl:text> <xsl:text>Sodium	Carbohydrates	Fiber	</xsl:text> <xsl:text>Protein	Vitamin A	Vitamin C	</xsl:text> <xsl:text>Calcium	Iron</xsl:text> <xsl:value-of select="$newline"https://alistapart.com/> <!-- daily values; fake the headers --> <xsl:text>Daily Values	N/A	N/A	N/A	</xsl:text> <xsl:text>N/A	N/A	</xsl:text> <xsl:value-of select="daily-values/total-fat"https://alistapart.com/> <xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="daily-values/saturated-fat"https://alistapart.com/> <xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="daily-values/cholesterol"https://alistapart.com/> <xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="daily-values/sodium"https://alistapart.com/> <xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="daily-values/carb"https://alistapart.com/> <xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="daily-values/fiber"https://alistapart.com/> <xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="daily-values/protein"https://alistapart.com/> <xsl:value-of select="$tab"https://alistapart.com/> <!-- vitamins/minerals --> <xsl:text>100	100	100	100</xsl:text> <xsl:value-of select="$newline"https://alistapart.com/> <xsl:apply-templates select="food"https://alistapart.com/> </xsl:template> <xsl:template match="food"> <xsl:value-of select="name"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="mfr"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="serving"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="serving/@units"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="calories/@total"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="calories/@fat"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="total-fat"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="saturated-fat"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="cholesterol"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="sodium"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="carb"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="fiber"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="protein"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="vitamins/a"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="vitamins/c"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="minerals/ca"https://alistapart.com/><xsl:value-of select="$tab"https://alistapart.com/> <xsl:value-of select="minerals/fe"https://alistapart.com/><xsl:value-of select="$newline"https://alistapart.com/> </xsl:template> </xsl:stylesheet>