Ah, I see what's going on.
Saxon reports this:
Error at xsl:copy on line 6 of file:/c:/temp/test.xsl:
XTDE0410: An attribute node (startdate) cannot be created after the children of the containing element
The stylesheet is creating attributes for an element after it creates child elements. An XSLT 1.0 processor is allowed to silently recover from this error by simply not writing these attributes. This is apparently what XML Spy is doing. To get round this you have to process the @action attribute after processing all the others.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference