This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Line SVG charts via XSLT
- To: "'XSL-List at lists dot mulberrytech dot com'" <XSL-List at lists dot mulberrytech dot com>
- Subject: [xsl] Line SVG charts via XSLT
- From: Thorsten Richter <Richter at optimal-systems dot de>
- Date: Fri, 6 Jul 2001 16:09:18 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hello, I'm working for a little project to transform XML with XSL(T) in a
SVG line chart.
For drawing lines in SVG I have to specify two points. For example, I would
like to draw a line with the y-coordinates of the three <natrium>-Tags in my
XML-file - the x-coordinates are maybe 50, 100, 150.
I tried to do it with a <xsl:for-each> and a position() like shown in my
(simplified) XSL-file, but it doesn't work. My idea is something like ...
natrium[position + 1] ... for the following value. Can anybody help me??
Thanks a lot...
Thorsten Richter
<?xml version="1.0"?>
<laborviewer>
<labor>
<natrium>144</natrium>
<kalium>4.3</kalium>
<hb>9.1</hb>
</labor>
<labor>
<natrium>150</natrium>
<kalium>4.9</kalium>
<hb>8.8</hb>
</labor>
<labor>
<natrium>140</natrium>
<kalium>5.0</kalium>
<hb>8.0</hb>
</labor>
</laborviewer>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://w3.org/1999/xlink">
<xsl:template match="/">
<xsl:apply-templates select="laborviewer"/>
</xsl:template>
<xsl:template match="laborviewer">
<svg height="100%" width="100%">
<xsl:for-each select="labor">
<xsl:apply-templates select=".">
<xsl:with-param name="x-offset"><xsl:value-of select="(position() *
50)"/></xsl:with-param>
<xsl:with-param name="y-natrium-after"><xsl:value-of
select="natrium[(position() + 1)]"/></xsl:with-param>
</xsl:apply-templates>
</xsl:for-each>
</svg>
</xsl:template>
<xsl:template match="labor">
<xsl:param name="x-offset" select="' '"/>
<xsl:param name="y-natrium-after" select="' '"/>
<xsl:variable name="y-natrium"><xsl:value-of
select="natrium"/></xsl:variable>
<g style="fill:red; stroke:red; stroke-width:1">
<path>
<xsl:attribute name="id">
<xsl:text>line_row1</xsl:text></xsl:attribute>
<xsl:attribute
name="style"><xsl:text>visibility:visible</xsl:text></xsl:attribute>
<xsl:attribute name="d">
<xsl:text>M </xsl:text><xsl:value-of select="$x-offset"/><xsl:text>
</xsl:text><xsl:value-of select="$y-natrium"/>
<xsl:text> L </xsl:text><xsl:value-of select="$x-offset + 28"/><xsl:text>
</xsl:text><xsl:value-of select="$y-natrium-after"/>
</xsl:attribute>
</path>
</g>
</xsl:template>
</xsl:stylesheet>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list