xslt - 只有 name 属性的 xsl:template 和 xsl:function 有什么区别
问题描述
我发现它们都可以用参数和 return xsl:value-of
and调用xsl:sequence
,但有什么区别?在什么情况下应该使用一个而不是另一个更好?大量使用时它们是否会出现小性能问题?
非常感谢你。
顺便说一句:我的 XSLT 处理器是 saxon-he 9.8+。
解决方案
还有一些重要的区别是:
- 次要结果文档只能在模板中创建,不能在函数中创建,请参阅https://www.w3.org/TR/xslt-30/#re sult-document-restrictions 指定“[ERR XTDE1480] 它是评估
xsl:result-document
处于临时输出状态的指令的动态错误。” 和 "xsl:variable、xsl:param、xsl:with-param、xsl:function、xsl:key、xsl:sort、xsl:accumulator-rule 和 xsl:merge-key 总是在它们包含的序列构造函数中评估指令临时输出状态”。 - 在函数体内,焦点(上下文项、上下文位置、上下文大小)最初不存在(请参阅https://www.w3.org/TR/xslt-30/#function-result指定“在序列构造函数中,焦点最初不存在;这意味着任何引用上下文项、上下文位置或上下文大小的尝试都是动态错误”),这意味着任何未存储在全局变量中的项都需要作为参数传递给函数
- 在撒克逊(至少 9.8 和 9.9),而 API(http://saxonica.com/html/documentation/javadoc/net/sf/saxon/s9api/Xslt30Transformer.html#callFunction-net.sf.saxon.s9api。 QName-net.sf.saxon.s9api.XdmValue:A- ) 已扩展为支持新的 XSLT 3 功能以通过调用命名(和公共)函数开始处理,命令行界面不允许这样做,因为它有没有新的命令行选项
推荐阅读
- java - Firestore:从firestore获取数据并从对象获取值并将其添加到listview
- git - 如何在 git 中修复“修改后的内容,未跟踪的内容”?
- aerospike - 如何从 Aerospike 恢复数据
- java - 我收到错误:选项 http://10.100.8.58:8080/user/view 401 () ,
- reactjs - 在 ReactJS 中将 HTML 文件转换为 PDF
- java - “adb shell date > date.txt”命令执行在 Mac 中使用 Process exec 不起作用
- ios - 如何快速隐藏嵌入在导航堆栈中的视图控制器中的选项卡栏?
- html - 带有平滑圆角的 CSS 三角形
- c# - 即使我有权限访问路径 wwwroot 也被拒绝
- c# - 如何在多个word文档中添加自定义任务窗格