msxsl:node-set:把XML片段转化为节点集。参数支持硬编码的变量,不支持参数,动态变量。
对于Map中的复杂需求,可以通过Template Script来实现。把复杂逻辑放入外部类中实现,然后在脚本中调用外部类。有2点需要注意:如果同一时间有多个Map事务在运行,那么外部类是被这些事务共享的。因此,外部类的属性非线程安全,属性可以使用Hashtable类存储,用guid作为key。脚本中的类方法调用包含guid参数,用来分隔可能出现的多个事务调用的外部类状态。
如果msxsl:node-set支持动态变量,那么只需要在外部类中提供少量的方法,把计算后的复杂结果通过XML片段的形式返回给脚本处理,那么就不会有外部类访问冲突的问题了。