Вы можете использовать функцию function-available (), чтобы определить, какую функцию следует использовать:
<xsl:choose>
<xsl:when test="function-available('exslt:node-set')">
<xsl:apply-templates select="exslt:node-set($nodelist)" />
</xsl:when>
<xsl:when test="function-available('msxsl:node-set')">
<xsl:apply-templates select="msxsl:node-set($nodelist)" />
</xsl:when>
<!-- etc -->
</xsl:choose>
Вы можете даже обернуть эту логику в именованный шаблон и вызвать его с набором узлов в качестве параметра.