Using XSLT to generate a default value for gaps in XML data
This is an open discussion with 6 replies, filed under XSLT.
Search
I don’t understand how you get from 3 sets of values in the XML to 6 in the JavaScript. How do you define an absent value?
EDIT: got it, it’s based on dates to the “0” are missing days?
I think you’d want to find the difference between the dates in the first and last item
elements to establish a number of days. You then loop for this number (in your example six times) adding a day to the date each time, cross reference back to your XML to see if you have a value for the date.
You’ll need to use the EXSLT date:difference()
and date:add()
functions:
Thanks for the pointers, Nick. I’ll get started and post the results here.
I had the same requirement some time ago and created a custom datasource that just prints out dates of a given time range to iterate over. The XML is grouped by year, month and number of week, spiced with some additional information like the day of year. I can clean up the datasource a bit an post it here if you want to go this way.
Thanks Jonas, I would be very interested in seeing that, if you don’t mind spending the time to clean it up.
Brian, here is a link to the custom datasource. I removed the grouping by week and put the number of the week as a parameter of the day element. You can use start- and end-parameters, they run through strtotime()
, but I didn’t do any error checking there.
Create an account or sign in to comment.
I’m getting XML from a third-party that looks something like this:
I would like to output the values as a JavaScript array like this, filling in the absent date values with a “0”:
Is this feasible in XSLT? Or should I be looking for a different approach altogether?