更新 17.Jul.2013:
XALAN 2.7 不在 document()请求中缓存调用。因此,将每个需要的文档存储在 XSL 中的变量中至关重要。
我已经搜索了很长时间,但没有找到我简单问题的具体答案:
哪种方法更快或者编译器足够“智能”以使两个变体相同?
注意:我使用的是Xalan 2.7(JDK 1.6 中的默认实现):
1) 我必须读取外部 XML 中的属性:
<xsl:value-of select="document($path)/person/address/city"/>
每当我需要城市时,我都会使用上面的表达式(比如说 100 次)
2) 我没有调用 document() 100 次,而是将 XML 节点存储在一个变量中:
<xsl:variable name="node" select="document($path)"/>
然后我用了 100 次
<xsl:value-of select="$node/person/address/city"/>
哪个更快,更好,出于哪些原因?谢谢!