Единственное, что выглядит странно, это строка:
<xsl:apply-templates select="//Row[generate-id() = generate-id(key('Project-Phases', concat(ProjectNo, '|', Phase))[1][ProjectNo=current()/ProjectNo])]" mode="phase"/>
Не следует прикреплять деталь [ProjectNo=current()/ProjectNo]
к ключуВместо этого он должен быть перемещен после последнего ]
.