我听说大多数情况下,在编写XSLT时,通常可以(或更好)使用apply-templates而不是for-each。这是真的?如果是这样,使用apply-templates有什么好处?什么时候使用for-each和什么时候在xslt中使用apply-templates?
6
A
回答
5
如果确切知道<xsl:for-each>
的处理方式,则使用<xsl:for-each>
绝不会造成危害。
问题在于,很多XSLT的新手都在命令式编程方面有过经验,他们喜欢用<xsl:for-each>
作为他们最喜欢的PL中的“循环”的替代,并且认为它允许他们执行不可能的事情 - 比如递增计数器或者已经定义的<xsl:variable>
的任何其他修改。
XSLT 1.0中<xsl:for-each>
的一个必不可少的用途是更改当前文档 - 为了能够在文档上使用key()
函数(与当前源XML文档不同),例如为了高效访问查找表,驻留在它自己的xml文档中。
另一方面,使用<xsl:template>
和<xsl:apply-templates>
是更强大和优雅。
这里有一些的两种方法之间最重要的区别:
xsl:apply-templates
也更加丰富,比xsl:for-each
更深,甚至只是 因为我们不知道会是什么码应用于 的选择节点上 - 在一般情况下,对于 节点列表的不同节点,此代码将有所不同。将应用于 可写的方式
xsl:apply template
S为书面后由 人不知道原作者的代码。
的FXSL library的实现在XSLT高阶函数(HOF)是不可能的,如果 XSLT没有足够的<xsl:apply-templates>
指令。
摘要:模板和<xsl:apply-templates>
指令是XSLT如何实现和处理多态性。
参考:看到这个整个主题:http://www.stylusstudio.com/xsllist/200411/post60540.html
相关问题
- 1. 什么时候使用__proto__和什么时候使用原型
- 2. 什么时候使用Ruby和什么时候使用PHP
- 3. 什么时候应该使用AWS,什么时候不使用
- 4. intn_t什么时候使用它,什么时候不使用
- 5. 什么时候使用ByteString,什么时候不使用?
- 6. 什么时候应该使用forEach?
- 7. 什么时候应该使用async/await,什么时候不用?
- 8. 在TypeScript中,什么时候使用“let”,什么时候使用“const”?
- 9. 什么时候和Swing一起使用AWT,什么时候不使用?
- 10. 什么时候使用适配器和什么时候使用inflater
- 11. 什么时候使用信号和插槽,什么时候不使用
- 12. 什么时候使用sIFR?
- 13. 什么时候使用MessageDigest.reset()
- 14. 什么时候使用VK_IMAGE_LAYOUT_GENERAL
- 15. 什么时候使用SVDRecommender
- 16. JOINS什么时候使用?
- 17. 什么时候使用SpringApplicationBuilder?
- 18. 什么时候使用StringIO?
- 19. 什么时候使用Dispose
- 20. Railties - 什么时候使用
- 21. 什么时候使用uncaught_exception?
- 22. 什么时候使用ANTLR
- 23. 什么时候使用vtable?
- 24. SQL Server CASE什么时候不使用CASE什么时候
- 25. ZF2什么时候使用getServiceLocator()什么时候不到
- 26. 什么时候使用GWT,什么时候不需要
- 27. 什么时候编译和构建,什么时候不用.NET?
- 28. 我什么时候使用图片和什么时候用css3创建窗体
- 29. 什么时候在Django中使用“AbstractBaseUser”?
- 30. 什么时候在javascript中使用'return'
问得好,这正好给了XSLT的 “心脏”。 +1。 – 2011-05-28 02:04:29