xml – xslt的优雅例子?
在通过XAML进行了长时间的学习循环之后,我又回到了
HTML和
javascript,并意识到声明性代码的概念 – 在转换规则方面 – 是一个非常强大的概念.
尽管语法过多,但XML的XSLT处理是声明性转换编程的基石.但是,我总是发现很难理解XSLT如何用于日常任务(使用XML). 在生成HTML之外,XSLT优雅地解决编程问题的一些很好的例子是什么? 我猜它擅长图形转换和数据再处理…… 编辑:我希望有一些实际的例子 – 让我完全放弃xslt的一个原因是代码的视觉复杂性. 解决方法
人们经常可以找到漂亮的XSLT代码的例子,特别是当XSLT用作函数式编程语言时.
有关示例,请参阅FXSL 2.0上的this article – XSLT 2.0的函数编程库. 作为FP语言,XSLT也是declarative language.除其他外,这意味着一个声明,指定现有的关系. 这样的定义通常不需要任何额外的代码来产生结果 – 它本身就是它自己的实现,或者是可执行的定义或可执行的规范. 这是一个小例子. 此XPath 2.0表达式定义“自然数的最大Prime Factor”: if(f:isPrime($pNum)) then $pNum else for $vEnd in xs:integer(floor(f:sqrt($pNum,0.1E0))),$vDiv1 in (2 to $vEnd)[$pNum mod . = 0][1],$vDiv2 in $pNum idiv $vDiv1 return max((f:maxPrimeFactor($vDiv1),f:maxPrimeFactor($vDiv2))) 要用英语发音,数字pNum的最大素数因子是数字本身,如果pNum是素数,否则如果vDiv1和vDiv2是pNum的两个因子,则pNum的最大素数因子是最大素数因子中的较大者vDiv1和vDiv2. 我们如何使用它来实际计算XSLT中的最大素数因子?我们简单地将上面的定义包含在< xsl:function>中.并…得到结果! <xsl:function name="f:maxPrimeFactor" as="xs:integer"> <xsl:param name="pNum" as="xs:integer"/> <xsl:sequence select= "if(f:isPrime($pNum)) then $pNum else for $vEnd in xs:integer(floor(f:sqrt($pNum,$vDiv2 in $pNum idiv $vDiv1 return max((f:maxPrimeFactor($vDiv1),f:maxPrimeFactor($vDiv2))) "/> </xsl:function> 我们可以,然后,calculate the MPF for any natural number,例如: f:maxPrimeFactor(600851475143)= 6857 至于效率,这个转换只需0.109秒. 优雅和高效的XSLT代码的其他示例: > Tim Bray‘s Wide Finder,已解决here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |