使用XSLT(XML样式表语言转换)从未见过互联网热潮期间出现的许多其他语言的普及。 虽然它正在使用中,并且在某些情况下由大型成功公司(即暴雪娱乐公司)使用,但它似乎从未成为主流。 你为什么认为这是?

===============>>#1 票数:24 已采纳

一个问题是XSLT 看起来很复杂。 任何开发人员都应该能够学习语言结构,因为大多数其他语言都有类比。 问题是构造和数据看起来完全相同,这使得难以区分使得XSLT比其他语言更难以阅读的两者。

第二个问题是它的用途比其他语言更有限。 XSLT非常出色; 在XML上进行复杂或激进的转换。 但它并不适用于与其他语言一样多的问题,所以它没有那么多使用。

第三,许多编程语言都有自己的用于转换XML的库。 大多数情况下,使用XML时,只需要进行小的更改或查找。 XML也可能是由开发人员已经用另一种语言编写的程序生成或使用的。 这些因素意味着使用语言的内置实用程序更方便。

所有这些问题导致的另一个问题是惯性。 也就是说,人们不知道它,他们没有看到他们对它有太多需求,所以如果有另一种选择,他们会避免将其作为解决方案。

您最终得到的是一种语言,它是许多开发人员在创建解决方案时的最后选择。 XSLT很可能甚至被避免,因为它将成为工作的最佳工具。

===============>>#2 票数:9

XSLT使用函数式编程 - 大多数程序员不习惯(因此有些人认为它不直观)。

===============>>#3 票数:7

在我看来,标准XSLT中最烦人的事情之一(我说的是XSLT 1.0,因为这是我用过的唯一版本)是它缺乏对字符串转换和一些基本日期时间函数操作的支持。

我无法理解的一件事是为什么像translate()这样的函数被设计并实现到xpath中,其他更有用的函数,如replaceto_lowerto_upper,或者 - 让我们疯了 - 正则表达式不是。

对于除Microsoft的MSXML以外的解析器,使用eXSLT (扩展的xslt?)来解决其中一些问题。 我说我猜是因为我实际上从未使用它,因为它被声明与MSXML不兼容。

我不明白为什么XSLT 1.0的设计原理是“文本”操作不在语言范围内,因为很明显无论何时转换文件都无法避免这些字符串转换问题(例如:转换为法语格式为美国格式的非正式填充日期,2008年1月31日至2008年1月31日)呵呵......

通过允许使用JScript函数扩展XSL,这些文本操作问题通常非常基础并且很容易在MSXML中解决:您可以调用JScript函数来执行某些处理,就像调用任何XSL模板一样,但我总是发现该解决方案不优雅且最终创建了自己的XSL模板库。 首先是因为JScript方式破坏了您的XSL可移植性,然后因为它迫使您混合编程逻辑:纯XPath / XSLT表达式中的一些位以及使用JScript的DOM /对象表示法中的其他位。

没有可更新变量是另一个对新手来说非常混乱的限制,有些人只是没有克服这个并继续挣扎。 在一些简单的情况下,您可以使用混合的paremetrized模板和递归调用(例如实现增加或减少计数器)的变通方法,但让我们面对它,递归并不是那么自然。

我想我听说XSLT 2.0规范中已经解决了所有这些限制,遗憾的是MS决定不实现它并改为推广XQuery。 那很难过,为什么不实施这两个呢? 我认为XSLT仍然很有可能变得像CSS一样受欢迎。 当你想到它时,学习XSLT最困难的部分是XPath,其余的并不像理解CSS中的级联行为那么困难,CSS已经变得如此受欢迎......

因此,在我的观点中,缺少所有这里提到的小事以及在XSLT 2.0中使用它们的时间(甚至MS都不支持它)导致了这种不受欢迎的情况。 我希望MS毕竟决定实施它......

===============>>#4 票数:4

因为大多数XSLT实现具有较高的内存占用(我认为这是由语言设计引起的),因为人们倾向于滥用XSLT来处理它不是特别适合的各种事物以及XSL的纯粹声明性质这使得某些类型的转换非常困难。

===============>>#5 票数:4

这对于xml来说很棒,但对于典型的编码却不是很好。 它缺乏典型的基本概念(即可变变量),使得简单的东西变得非常复杂(或不可能)。 它的大多数问题源于这样一个事实,即xml是一种很好的数据表示语言,但不是一种优秀的编程语言。 话虽如此,我每天都会使用它,并在有意义的地方推荐它。 结合外部名称空间,它可以变得更有用(调用java等)。 最后,它是另一种学习的语言,许多程序员宁愿坚持使用他们习惯的东西或类似于他们习惯的东西。

===============>>#6 票数:4

因为编写和维护使用Java,C#,JavaScript等代码来反序列化XML流,转换它并导出所需输出更容易,因此XSLT没有实质性的性能优势。

XSLT让事情变得简单,但它使得其他事情变得非常非常困难。

===============>>#7 票数:3

XSL是主流并被广泛采用。 你指的是其他什么语言? XSL不是一种编程语言, 只是一种转换语言 ,因此它的范围非常有限。

===============>>#8 票数:3

好吧......也许是因为写xslts是一种痛苦......几个月前我不得不写几个xslts而且我梦想着尖括号......

<Really> 
    <No>
        <fun/>
    </No>
</Really>         

(我知道,这不是xslt)

===============>>#9 票数:3

通常,您需要将XML数据转换为不同形式的XML数据但不对其进行任何其他处理的时间将非常有限。 通常,XML用作两个独立系统之间的中介,其中一个系统通常是定制的,用于处理另一个系统的输出。 因此,只需编写一个系统来处理另一个系统的XML输出就更简单了,而无需执行某种转换的额外步骤。

===============>>#10 票数:2

如前所述,XSLT(如JavaScript的“好部分”)是一种函数式编程语言。 大多数传统程序员都讨厌这种无国籍状态。 也有太多传统程序员讨厌尖括号。

但是,最重要的是,正确使用XSLT以平台无关的方式解决了Web服务器的声明性GUI生成和数据绑定问题。 像微软这样的供应商没有动力去庆祝这种“不方便”的力量。

但是,我认为Microsoft拥有世界上最好的XSLT支持IDE(Visual Studio)

===============>>#11 票数:2

我认为可归结为XML语法可以说是对描述数据很有用,但它对于什么本质上是一种编程语言(XSLT)来说并不是一个很好的语法。

===============>>#12 票数:1

我发现它非常适合'复合Web服务体系结构'。有时Web服务的数量一起工作以获得最终输出。当这些Web服务需要通过XML在它们之间进行通信时,XSLT可以将xml消息从一种形式转换为另一种形式。

===============>>#13 票数:1

我认为它试图覆盖太多的用例,从而成为图灵完备(或者我听说过)的语言。 如果你尝试进行任何重要的转换,你最终会用一种丑陋且冗长的语言编写复杂的循环,条件......最好用GPL来完成。

在我看来,这种复杂性使得编写正确的XSLT实现变得困难并且限制了可用的选择,因此,在声音黑客中广泛使用,他们经常喜欢修补小而有效的代码,而不是企业代码。

===============>>#14 票数:1

XSLT非常强大,但需要以不同的方式思考问题。 它还通过在早期版本中不提供有用的数据功能而使自己的生活变得艰难。 以ToUpper()样式方法为例,您通常使用以下方法实现它:

<xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>  

<xsl:value-of select="translate($toconvert,$lcletters,$ucletters)"/>

不是最简单的编码方式!

===============>>#15 票数:1

当您拥有已经转义的数据并且输入和输出的清晰定义时,xslt非常适合xml到xml。 将它用于像xml2html这样的东西对我来说似乎是一件令人头疼的问题,并且几乎任何动态语言和css的输出都很容易实现。

  ask by community wiki translate from so

未解决问题?本站智能推荐:

1回复

XSLT流行用法[关闭]

xslt的常用用法在哪里。 我想不起曾经使用过它们的时间吗? 我从事计算已经很长时间了,从未见过它的使用。 这是藏在图书馆中的东西之一吗? 一旦建成它们就不会引起问题吗?
1回复

如何使用XSLT在连续的节点出现时解决此问题? [关闭]

我有这个输入文件: 和我的输出: XSLT文件: 另一种情况: 预期产量: 这个想法是用相同的方法删除连续的节点。 在示例中: 开始/开始/停止/开始/开始->开始/停止/开始 XSLT可以删除连续的节点,但不适用于上述情况。
1回复

在许多行上应用xslt模板

我有一个XML,其中可以包含许多PurchaseOrderLine部分,以LineNumber区分(10、20、30等)。 在每一行中,我需要在UserArea部分中插入一个带有TaxID最后一个字符的子部分。 我当前的xslt部分起作用,因为它总是从第一行获取最后一个char,并将其放在所
1回复

XSLT连接许多文件

我有很多这样的XML文件: File1.xml: File2.xml: 我想连接这些文件,并为这样的命名空间添加前缀: 输出: 我的XLS:
1回复

在XSLT 1.0转换期间首次出现与标准匹配的节点

我正在尝试获取第一次出现的Machine / Properties / Axes / Axis / AxisID / Name值,其中标准Machine / Properties / Axes / Axis / Type = Rotary,以便我可以使用Name元素填充Top元素。 我尝试
1回复

Saxon XSLT转换:转换期间失败时如何关闭输出流

我想对多个输出文件进行XSLT转换。 我在那里使用了“ xsl:result-document”。 转换失败时,应删除所有输出文件。 但是,如果“ xsl:result-document”创建的文档生成失败,则我的程序将无法再删除该文档。 我认为原因是“ xsl:result-docum
2回复

转换期间的XSLT问题

我在xhtml转换期间遇到问题,像这样的元素:xmlns:ms =“ urn:schemas-microsoft-com:xslt”已插入许多我的xhtml标记中。 例如: 我正在使用IIS6。 而且我没有任何解释。 你有同样的问题吗? 我的代码有什么问题? 谢谢
1回复

转换期间忽略XSLT

我有一个HTML文件,可以使用XSL将其转换为另一个HTML文件(只需对其结构进行调整,以便在大多数电子邮件客户端中看起来都不错)。 HTML是从其他系统收到的,我无法修改此HTML的生成方式。 我的问题是包含& 标签 内。 XSL转换忽略了它。 HTML输入:
1回复

基本XSLT出现问题

我对使用XSLT非常陌生,并且正在尝试将基本XML文件转换为SQL以插入数据库。 我正在尝试进行转换: 使用以下XSL: 但是,当我在XML上运行XSL时,它仅返回节点的值,而不返回文字SQL文本。 而且,似乎实际上是在忽略所有XSL,因为当我删除所有模板匹配代码并本质上
2回复

在XSLT上包含语言文件(作为XML)

我进行了正确的转换以开发一个多语言的网站。 该网站的所有文本都必须取自XML文件,因为该网站的输出将是经过处理的文件。 这是基本文件index.xml : 该条目是唯一的,因此不需要翻译。 我的index.xsl : 我包括../lang/index.xml ,其中包含