Попробуйте следующее решение XSLT-2.0:
<xsl:template match="/Parent">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:variable name="n2">
<xsl:value-of select="Node2" separator=", "/>
</xsl:variable>
<Node1><xsl:value-of select="Node1, if (string-length($n2) > 20) then concat('; Node2: ',$n2) else ''" separator=""/></Node1>
<Node2><xsl:value-of select="substring($n2,1,20)" /></Node2>
</xsl:copy>
</xsl:template>
Вывод:
<?xml version="1.0" encoding="UTF-8"?>
<Parent>
<Node1>Some Text; Node2: Some Name1, Some Name2, Some Name3, Some Name4, Some Name5</Node1>
<Node2>Some Name1, Some Nam</Node2>
</Parent>