XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Mike  KingSubject: XML to Google Charts
Author: Mike King
Date: 11 Aug 2009 06:23 PM
I'm working on producing google charts from my xml.

The basic data is very simple. I want to use a line chart to show Actual and Planned values over time.

- <table>
- <row>
<Date>2009-05-15 00:00:00.000</Date>
<Actual>1250.00</Actual>
<Planned>6250.00</Planned>
</row>
- <row>
<Date>2009-05-16 00:00:00.000</Date>
<Actual>1250.00</Actual>
<Planned>12500.00</Planned>
</row>
- <row>
<Date>2009-05-17 00:00:00.000</Date>
<Actual>1250.00</Actual>
<Planned>18750.00</Planned>
</row>
</table>

The google charts api uses a url to send the data:
E.G. http://chart.apis.google.com/chart?chs=250x100&chd=t:60,40&cht=p3&chl=Hello|World

So I've got to get the data values into the form shown here -

chd=t:1250,1250,1250|6250,12500,18750

- where the series of data is comma separated and multiple series are separated by | bars.

I've tried to use a stylus repeater in horizontal layout, with commas. But I end up with a trailing comma.

Anyway - I've got a feeling this may be something that requires more that the standard controls provide.

I'd appreciate your thoughts on how to produce the data into the form required by google charts.

Postnext
Tony LavinioSubject: XML to Google Charts
Author: Tony Lavinio
Date: 11 Aug 2009 06:45 PM
If you are using XSLT 2 or XQuery, you can use this:

string-join(/table/row/Actual, ','),'|',string-join(/table/row/Planned, ','))

Postnext
Mike  KingSubject: XML to Google Charts
Author: Mike King
Date: 12 Aug 2009 04:15 PM
Originally Posted: 12 Aug 2009 11:40 AM
How would you embed this formula into the image source for the chart?

Not sure how best to do this with Stylus (or xsl). For example the report image control has a context property and xpath property.
Is there a way to set these two properties so that the correct url is generated?

Should I be using something other than the image control to reference the google charts?

Postnext
Mike  KingSubject: XML to Google Charts
Author: Mike King
Date: 12 Aug 2009 04:33 PM
Here's what I've tried without success:

Image control -
Context: charts.xml
XPath: string-join('http://chart.apis.google.com/chart?cht=p3&chd=t:', string-join(/table/row/Actual, ','), '&chs=250x100')

I also tried -
XPath: value-of string-join('http://chart.apis.google.com/chart?cht=p3&chd=t:', string-join(/table/row/Actual, ','), '&chs=250x100')

Neither of these work - I got "Error evaluating expression".

Postnext
Tony LavinioSubject: XML to Google Charts
Author: Tony Lavinio
Date: 12 Aug 2009 05:43 PM
You'd want something more like this:

concat('http://chart.apis.google.com/chart?cht=p3&amp;chd=t:', string-join(/table/row/Actual, ','), '&amp;chs=250x100')

Remember two things: string-join() takes two parameters - the list, and
the character to put between the items. You were using it like concat().

Also, & characters need to be represented as &amp;

Here are some examples in-context for XSLT and XQuery, in case that helps.

<html>
<body>
<img>{ attribute src { concat(
'http://chart.apis.google.com/chart?cht=bvs&amp;chs=100x100&amp;chd=t:',
string-join(/table/row/Actual, ','),
'|'
,string-join(/table/row/Planned, ','),
'&amp;chco=4d89f9,c6d9fd&amp;chbh=20&amp;chds=',
min((0, /table/row/(Actual, Planned))),
',',
max(/table/row/(Actual, Planned))
) } }</img>
</body>
</html>

<?xml version='1.0'?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<img src="{concat(
'http://chart.apis.google.com/chart?cht=bvs&amp;chs=100x100&amp;chd=t:',
string-join(/table/row/Actual, ','),
'|'
,string-join(/table/row/Planned, ','),
'&amp;chco=4d89f9,c6d9fd&amp;chbh=20&amp;chds=',
min((0, /table/row/(Actual, Planned))),
',',
max(/table/row/(Actual, Planned))
)}"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Postnext
Mike  KingSubject: XML to Google Charts
Author: Mike King
Date: 12 Aug 2009 06:50 PM
Thanks for your help. This makes sense.

Where I'm stuck is how to use these methods in the context of Stylus Studio reports. I've added an "Image" control, but I'm not sure how to fill in the image parameters in order to produce the charts.

The parameters for the image control are context and xpath. So I had assumed that the concat(...) would be part of the xpath parameter. But I must be forming the parameter incorrectly because I always get an error when the report is previewed.

Error evaluating expression "concat('http://chart.apis.google.com/chart?cht=p3&chd=t:',string-join(doc('file:///c:/Users/Mike/Documents/report_charts.xml')/table/row/Actual,','),'&chs=250x100')" in component 'Image' ERROR : Unrecognized character ''' (0x27) [err:XPST0003])

Postnext
Mike  KingSubject: XML to Google Charts
Author: Mike King
Date: 12 Aug 2009 06:19 PM
Here's what I've tried without success:

Image control -
Context: charts.xml
XPath: string-join('http://chart.apis.google.com/chart?cht=p3&chd=t:', string-join(/table/row/Actual, ','), '&chs=250x100')

I also tried -
XPath: value-of string-join('http://chart.apis.google.com/chart?cht=p3&chd=t:', string-join(/table/row/Actual, ','), '&chs=250x100')

Neither of these work - I got "Error evaluating expression".

Postnext
(Deleted User) Subject: XML to Google Charts
Author: (Deleted User)
Date: 14 Aug 2009 06:55 AM
Hi Mike,
the preview functionality of the XML Report tool has a bug that prevents the processing of strings containing the & character.
You can workaround the problem by writing

concat('http://chart.apis.google.com/chart?cht=p3',codepoints-to-string(38),'chd=t:',string-join(/table/row/Actual,','),codepoints-to-string(38),'chs=250x100')

Hope this helps,
Alberto

Postnext
Mike  KingSubject: XML to Google Charts
Author: Mike King
Date: 14 Aug 2009 09:38 AM
YES!!! The codepoints-to-string(38) replacement for & fixed my report preview.

Thanks very much!

Posttop
Mike  KingSubject: XML to Google Charts
Author: Mike King
Date: 14 Aug 2009 03:35 PM
YES!!! The codepoints-to-string(38) replacement for & fixed my report preview.

Thanks very much!

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.