>There are probably better ways of doing this in XSLT 2.0.
Not really. You could make it more concise using function calls rather than call-template, and using XPath rather than XSLT conditionals, but the logic would be much the same. If it were a span of 200 months rather than 6 then I would write some kind of loop to generate the date values using format-date(), but with only 6, writing them by hand is easier.
(Though hand-editing the XML is easier still. I wonder what the real requirement is?)
Michael Kay
http://www.saxonica.com/
Author, XSLT 2.0 and XPath 2.0 Programmer's Reference