Adding three more issues found today:
1) saxon:evaluate() doesn't allow variables references so dyn:evaluate("$data//record[@id='1']/field" has been converted to saxon:evaluate('$p1//record[@id='1']/field', $data)
2) //command[1] has been converted to (//command)[1] when used within <xsl:value-of/>
3) iterating <xsl:for-each/> atomic tokens drops document context in Saxon so fix by setting a variable to remember the context within the iterative logic
4) some of the exsl functions are now intrinsically supported by XPath 2.0 so remove the namespace and fix the casting issues

5) duplicate global parameters were used in import templates to eliminate syntax errors squiggly lines in oXygen editor.  Saxon doesn’t allow duplicates

6) Ambiguous rule matched within same template allowed in Xalan and not allowed in Saxon

7) ISO8601 dateTime format not allowed when timezone is missing ':' between hour and minute