首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xslt的优雅示例?

xslt的优雅示例?
EN

Stack Overflow用户
提问于 2009-03-28 21:52:16
回答 3查看 1K关注 0票数 4

通过XAML的漫长学习循环之后,我回到了HTML和javascript,并意识到声明性代码的概念-就转换规则而言-是一个令人难以置信的强大概念。

尽管XSLT缺少语法,但XML的XSLT处理仍然是声明性转换编程的基础。然而,我总是发现很难理解如何将XSLT用于日常任务(通过XML)。

除了生成HTML之外,还有哪些很好的XSLT示例可以优雅地解决编程问题?

我猜它很擅长图形转换和数据再处理。

编辑:我希望有一些实际的例子--让我对xslt完全反感的一件事就是代码的视觉复杂性。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-29 01:41:45

XSLT经常可以找到漂亮的代码示例,特别是当XSLT用作函数式编程语言时。

有关示例,请参阅上的 -- XSLT2.0的函数式编程库。

作为一种FP语言,XSLT也是一种。这意味着,在其他事情中,一个人声明,指定现有的关系。

这样的定义通常不需要任何额外的代码就能产生结果--它本身就是它自己的实现,或者是一个可执行定义或可执行规范

这里是一个小的示例

此XPath 2.0表达式将定义为“一个自然数的最大”:

代码语言:javascript
复制
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是素数,那么如果vDiv1vDiv2pNum,的两个因子,那么pNum的最大素因数就是vDiv1vDiv2.的最大素因数中较大的一个

我们如何使用它来实际计算XSLT中的最大素因子?我们只是将上面的定义包装在一个<xsl:function>中,并且...获取结果!

代码语言:javascript
复制
 <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, 0.1E0))),
            $vDiv1 in (2 to $vEnd)[$pNum mod . = 0][1],
            $vDiv2 in $pNum idiv $vDiv1
          return
            max((f:maxPrimeFactor($vDiv1),f:maxPrimeFactor($vDiv2)))
   "/>
 </xsl:function>

例如,我们可以使用

f:maxPrimeFactor(600851475143) = 6857

至于效率,好吧,这个转换只需要0.109秒。

高效的XSLT代码的其他示例

作为文本语料库(

  • 's .
  • of a word
  • of a text )的解决方案(the Old Testament)
  • (莎士比亚的Othello)
  • A通用编译器-编译器系统-- ,成功地用于和XPath2.0.
票数 4
EN

Stack Overflow用户

发布于 2009-03-28 21:55:08

那么代码生成呢?我在protobuf-net中使用它从.proto模型(导出为xml) - like so创建.cs文件。在AFAIK4.0中,T4模板将是一个更明显的选择,但在此之前T4引擎并不是独立的(AFAIK4.0)。

Xslt还被广泛用于不同xml布局之间的转换-例如,在biztalk等中间件工具中。

票数 2
EN

Stack Overflow用户

发布于 2009-03-28 22:09:54

前几天我用过XSLT。我需要提供一种方法,让用户将树控件的内容保存到一个文件中,这样他们就可以通过电子邮件将其发送给他们的老板,向他们的孙子等展示它。

要求他们能够将其保存为具有整洁外观的HTML文件,或者保存为XML,以便他们可以随心所欲地进一步处理它。

因此,我建议输出带有链接到它的XSLT的XML,这样他们就有了原始的XML,但是当他们在浏览器中打开它时看起来很好。

这并不理想(如果他们将HTML移到其他没有XSL的地方,IE根本不会显示它!)但是如果我们改变计划,我可以只修改产品,让用户选择格式,如果他们选择HTML,我所要做的就是在保存之前对XML运行XSLT以获取HTML。

理想情况下,有一种方法可以制作包含XML和XSLT的自包含HTML文件,但我不知道有哪种方法……这本身就是一个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/693596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档