一段时间前,我开始在一个项目,我设计了一个html式XML模式,以便提交人可以编写他们的内容(教育的课程材料)在简化的格式,随后将转变成HTML通过XSLT。我打围(努力),与它同时并得到了它的一个非常基本的水平,但后来太恼火的限制,我遇到的(其中可能已限制了我的知识),并当我读到一篇博客暗示放弃XSLT,只是写你自己的XML到任何分析器在你选择的语言,我热切地跳上,和它的工作出色。

我仍然在它的工作到今天(我实际上应该是工作上它,现在,而不是在玩这样),我看到越来越多的事情这让我思考,决定放弃XSLT是一个很好的一个。

我知道,XSLT有它的地方,在于它是一个接受的标准,并说,如果每个人都写他们自己的口译,90%的他们最终会在 TheDailyWTF.但鉴于它是一个 功能性的风格语言 而不是程序性的风格,其中大多数程序员都很熟悉,对于某人在开展一个项目,如我自己的, 你会推荐他们下去的道路,我没有,或者坚持有XSLT?

有帮助吗?

解决方案

优点XSLT:

  • 特定领域的XML,因此,例如没有必要引用文字的XML在的输出。
  • 支持XPath/谢谢,它可以是一个很好的方式来查询海外,以同样的方式,定期表达形式可以是一个很好的方式来查询串。
  • 功能性的语言。

缺点XSLT:

  • 可以可耻的详细-你没有引述的文字XML,这实际上意味着你做得报价码。而不是在一个漂亮的方式。但是,再说,这不是更糟糕的比典型的SSI。
  • 不做某些事情大多数程序员理所当然的。例如串的操纵,可以是一个苦差事。这可能会导致"不幸的时刻"当新设计代码,然后疯狂的搜索网页的提示如何实现功能他们以为只会存在并没有得到自己的时间来编写。
  • 功能性的语言。

一个办法来获取程序性行为,通过这种方式,是链的多个变在一起。每个步骤之后你有一个全新的DOM工作,这反映了变化这一步骤。一些XSL处理器已经扩展到有效地这样做在一个变换,但我忘了细节。

所以,如果你的代码是主要的输出,并没有太多的逻辑、XSLT可以是一个非常简洁的方式来表达它。如果有大量的逻辑,但主要的形式,它们是建立在XSLT(选择的所有要素,这看起来像等等,并且为每一个输出等等),这可能是一个相当友好的环境。如果你喜欢的思想XML的那种在所有时间,然后给XSLT2去。

否则,我会这么说如果你最喜欢的编程语言都有一个良好的DOM执行行动,支持XPath和让你建立文件中的一个有用的方式,然后有几个好处,使用XSLT。绑定libxml2和gdome2应该做的很好的,有没有羞耻,在坚持普通用的语言,你知道。

自家种植的XML分析程序通常是不完整的(在这种情况下你会完蛋的一天)或其他不小得多东西,你可以有现成的(在这种情况下你可能是在浪费你的时间),有给你任何数量的机会来介绍严重的安全问题恶意的输入。不要写一个除非你知道究竟什么你获得通过这样做。这并不是说你不能写一个分析器,用于简单的东西,比XML作为你的输入格式,如果你不需要的一切,XML提供。

其他提示

这么多消极!

我一直在使用XSLT好几年了,真的爱它。关键的事情你必须知道, 这不是一种编程语言,这是一个模板的语言 (在这方面,我别提有多高级到asp.net /吐).

XML是事实上的数据格式的网络发展的今天,它的配置文件、原始数据或在内存reprsentation.XSLT和XPath给你一个 巨大的 强大的和非常有效的方式变换,数据入的任何格式的输出,你可能会喜欢,立即让你视方面的分离所呈现的数据。

然后有实用工具的能力:洗出来的名字空间,承认不同的模式定义、合并文件。

它的 必须 可以更好地处理与XSLT于发展自己的内部方法。至少XSLT是一个标准和一些东西,你可以雇用,如果它真的一个问题,对你的团队,这是非常自然会让你保持最你的团队工作,只有XML。

一个真正的世界的使用情况:我只写了一个应用程序,它处理在XML文档的存储器的整个系统,并将其转换为式,HTML,或XML作为要求终端用户。我有一个相当随机请求提供如Excel数据。一个以前的同事已经做了一些类似的通过程序,但它需要一个模块的几类文件,该服务器已MS办公室安装!原来Excel有一个文件:新的功能以最小的basecode的影响在3小时。

我个人认为这是一个干净的东西,我遇到的在我的职业生涯中,我相信所有的这是显而易见的问题(调试、字符串操作、方案编制结构)是下一个有缺陷的了解的工具。

显然,我强烈认为,这是"值得的"。

我不得不承认一个偏在这里是因为我教XSLT为生。但是,它可以涵盖关的领域,我看到我工作的学生。他们分成三组:出版、银行业务和网络。

许多回答迄今为止可能可以概括为"它没有很好的用于创建网站"或者"这是什么样的语言X"。许多技术人员通过他们的职业生涯中没有曝光的功能/声明的语言。在我教学、经验丰富的Java/VB/C/等民间是那些有问题的语言(变量变量的意义上的代数而不是程序性的方案编制的示例)。这是许多人回答在这里-我从来没有得到与Java但是我不会打扰到批评的语言,因为这一点。

在许多情况下这是一个不恰当的工具,用于创建网站--一个通用编程语言可能会更好。我经常需要采取非常大的XML文件和出他们上网;XSLT使得这一微不足道的。学生们我看到的在这个空间的往往是处理数据集,并介绍他们上网。XSLT肯定不是唯一适用的工具,在这空间。然而,它们大多是使用DOM做到这一点,XSLT肯定是痛苦少。

该银行的学生我看到使用DataPower框在一般。这是一个XML设备和用来当服务之间的'说'不同的XML方言。转变,从一个XML语言的另一个几乎是琐碎的在XSLT和数学生参加我的课程,这正在增加。

最后一组的学生我看到来自出版的背景(喜欢我)。这些人往往具有巨大的文件在XML(相信我,布作为一个行业变得非常成XML技术的出版已有多年,贸发布是越来越有现在)。这些文件需要处理(DocBook ePub想到此处)。

有人述说,脚本往往低于60线,或他们变成难以处理。如果它不成为难以处理,赔率是编码还没有真正的想法-XSLT是一个非常不同的思维方式,从许多其他语言。如果你不获得的心态,它不会的工作。

它肯定不是一个死亡的语言(大量的工作我得告诉我那)。现在,这是一个有点'停留',直到Microsoft完成他们的(很晚了)执行XSLT2.但它仍然存在,似乎是强劲,从我的观点。

我们使用XSLT广泛的东西,如文件,并使得一些复杂的结构设置用户维护。

对文件,我们使用了大量的DocBook,这是一个基于XML格式。这让我们可以存储和管理我们的文件与我们所有的源代码,因为该文件是纯文本。与XSLT,我们可以很容易地建立我们自己的文件格式,允许我们两个自动生成的内容在一个通用的方式,并使内容更具可读性。例如,当我们发布的释放笔记,我们可以创造XML,看起来是这样的:

<ReleaseNotes>
    <FixedBugs>
        <Bug id="123" component="Admin">Error when clicking the Foo button</Bug>
        <Bug id="125" component="Core">Crash at startup when configuration is missing</Bug>
        <Bug id="127" component="Admin">Error when clicking the Bar button</Bug>
    </FixedBugs>
</ReleaseNotes>

然后使用XSLT(其将上述DocBook)我们结束了很好的发行说明(PDF和HTML通常)在错误标识是会自动链接到我们的错误跟踪,错误是按分量和格式的一切都是完全一致的。和上述XML可以自动生成,通过查询我们的错误,追踪用发生了什么变化之间的版本。

其他地方,我们已经找到XSLT是有用的是实际上在我们的核心产品。有时与第三方系统中,我们需要以某种方式处理数据在复杂HTML网页。分析HTML是丑陋的,因此,我们料的数据通过喜欢的东西 TagSoup (其产生适当萨克斯XML活动,基本上让我们处理HTML,如果它是适当地编写的XML)和然后我们就可以运行的一些XSLT反对,把数据并入一个"知的稳定"格式实际上,我们可以一起工作。通过分离出来,转变成一个XSLT文件,这意味着,如果当HTML格式变化、应用程序本身不需要升级,而不是终端用户可能只是编辑XSLT文件本身,或者我们可以e-mail它们更新XSLT文件没有整个系统需要升级。

我要说的是,对于网络的项目,有更好的方式来处理的图侧比XSLT今天,但作为一个技术都有一定的用途XSLT。它不是最简单的语言在全世界使用,但它肯定不是死了,在我看来仍然有许多良好的使用。

XSLT是一个例子一个 说明性程序 语言。

其他的例子说明性程序语言,包括经常表达、言,并SQL。所有这些都是高度的表现性和紧凑的,并通常非常好的设计和强有力的任务,为他们设计的。

然而,软件开发人员通常讨厌这样的语言,因为他们是如此不同于主流OO或程序性语言,他们难以了解和调试。他们的契约性质通常使得它很容易做到的一个很大的伤害无意中。

因此,虽然XSLT是一个有效的机构的数据合并到演示,它无法在易于使用的部门。我相信这就是为什么它没有真正抓住了。

我记得所有的宣传周围XSLT当的标准是新的释放。所有的兴奋周围是能够建立一个整个HTML UI与"简单"的变换。

让我们面对它,它是很难使用,几乎不可能"调试",往往无法忍受的缓慢。最终的结果是几乎总是古怪的和不太理想。

我迟早会咬断自己的腿比使用XSLT,同时有更好的方法来做的事情。它仍然具有其地,对其简单的改造任务。

我用XSLT(也属)广泛用于各种各样的事情-产生C++码的一部分建立的过程中,产生文件,医生的意见,并在应用程序的工作有XML在一般和XHTML特别是很多。代码生成器特别是超过10,000行的XSLT2.0码散布在大约十几个单独的文件(它做很多事情-标题为客户,远程处理代理/桩,COM包装.净纸,奥姆-一些)。我继承了它在另一个家伙谁真的不理解的语言,和老位们因此相当的混乱。新东西那我们写的主要是保持理智和可读性,但是,我不记得任何特别问题与实现这一目标。它肯定不是任何更难于做C++。

发言的版本,处理XSLT2.0肯定有助于保持你的理智的,但1.0仍然是好的,简单的转换。在其适当位置,它是一种极为方便的工具,生产力得到来自某些特定领域的功能(最重要的是,动态调度通过的模板匹配)是难以匹配。尽管认冗长的XSLT的基于XML语法、同样的事情在皇宫XML(甚至在VB用XML文本)通常是几次更长的时间。通常,然而,它就会被不当flack,因为不必要地使用XML在某些情况下,在第一位。

总的来说:它是一个非常有用的工具,具有在一个人的"工具箱",但它是一个非常专门化的一个,所以这是好事所以只要你正确地使用它,并对其预期的目的。我真的希望有一个适当、当地人。净执行XSLT2.0.

我用XSLT(由于缺乏更好的替代方法),但未呈现的,只是为了转变:

  1. 我写简短的XSLT transformations要做到质量的编辑在我们的家pom.xml 文件。

  2. 我已经写了一个管道中的转化产生XML模式从配件(UML图)。它的工作一段时间,但它最后得到了过于复杂,我们必须把它取出来后的谷仓。

  3. 我用转变到"重构"XML模式。

  4. 我工作了周围的一些限制在XSLT通过使用它生成XSLT做的实际工作。(曾试图写XSLT,产生输出使用名称空间是不是已知的,直到运行时?)

我继续回来,因为它没有一个更好的工作往返XML这是处理比其他方法,我已经试过,这似乎是不必要的损耗或只是误会XML。XSLT是令人不愉快,但是我发现使用 氧气 使得可以承受的。

这就是说,我在调查使用 (a list)执行变革的XML,但是我还没有得到足够远,但知道如果这一方法将给我带来好处。

我个人使用XSLT在一个完全不同的上下文。计算机游戏,我的工作在时间使用吨的网页定使用XML。在一个主要的重构,不久后释放我们想要的结构改变这些XML文件。我们做游戏的输入格式遵循一个更好的和架构意识到结构。

XSLT似乎是完美的选择,对于这种翻译,从旧格式化->的新格式。两周内我有一个工作转换从老到新为我们数百页。我还能够利用它来提取大量的信息的布局我们UI页。我创建了名单,其组件被嵌入在其相对容易地然后我用XSLT写入我们的架构的定义。

此外,来自C++的背景,这是一个非常有趣的语言的掌握。

我认为,作为一种工具翻译XML格式,这是奇妙的。然而,它不是唯一的方式定义了一种算法,需要XML作为一个输入和输出 的东西.如果你的算法是充分复杂,事实上,输入XML变得无关紧要你选择的工具。e滚你自己在C++/Python/无论。

具体来你如我们想象的更好的想法是创建你自己的XML->XML转换下你的商务逻辑。接下来,编写一XSLT翻译,仅仅知道有关格式和并没有什么聪明。这可能是一个很好的中间立场,但它完全取决于你在做什么。具有XSLT翻译上的输出,使得它更容易创造替代输出格式印刷,用手机,等等。

是的,我用了很多。通过使用不同的xslt文件,我可以使用相同的XML源,以创造多种多语种(X)HTML文件(提出同一数据的方式不同)、RSS,一个原子的饲料,卢旺达国防军的描述文件和碎片的一个网站地图。

它不是灵丹妙药。有些事情就不好了,事情没有做好,像所有其他方面的节目,它是所有关于使用权工具的正确的工作。它是一种工具,都值得在你的工具箱,但应该使用的只有在合适的时候这样做。

我肯定会推荐坚持它。特别是如果您使用的是visual studio其已经建立,在编辑、查看和调试工具XSLT。

是的,这是一个痛苦而你正在学习,但大多数痛苦的是要做到有的熟悉程度。疼痛不会削弱作为你学习语言。

W3schools有两篇文章,特别值得:http://www.w3schools.com/xpath/xpath_functions.asp http://www.w3schools.com/xsl/xsl_functions.asp

我已经找到XSLT是相当困难的工作。

我已经有工作经验上的系统有点类似于一种你描述的。我的公司注意,该数据我们回来的"中层"是在XML和网页们要呈现在HTML这也可能是XHTML,再加上他们会听到,XSL是一个标准转变之间的XML格式。所以"建筑师"(我的意思是人们深深的设计想法,但显然从来没有代码)决定我们前线执通过编写XSLT脚本,改变了数据进XHTML显示。

选择被证明是灾难性的。XSLT,它的出现,是一个疼痛的编写。所以我们所有的页面难以编写和维护。我们会做好得多的有用JSP(这是在Java)或某一类似的方法,使用一种标记(括号角)为输出格式(HTML)和另一种标记(喜欢 <%...%>)元数据。最混乱的事情XSLT是,它是写在XML,这意味着从XML XML...它是相当困难的保留所有3个不同的XML文件直在一个人的心灵。

你的情况略有不同:而不是制作中的每一页XSLT因为我没有,你只需要编写一位代码在XSLT(代码转换模板显示)。但听起来好像你可能已经运行到同样的困难,我没有。我要说的是,试图解释一个简单的基于XML DSL(域特定的语言)等你是在做不是一个坚强点XSLT。(虽然它可以做的工作...毕竟,这是图灵完成!)

但是,如果你有什么是简单的:你有数据中的一种XML格式,并想做简单的改动它-不全面页的说明DSL,但是一些简单的常简单的修改,然后XSLT是一个极好的工具,用于这一目的。它的声明(而不是程序性的)性质实际上是一个优点用于这一目的。

--迈克尔*彻姆赛德

XSLT是困难的工作,但一旦你征服它,你将有一个非常透彻的了解DOM和架构。如果你还XPath,然后你用自己的方式学习的功能编程,这将让新的技术和方法有关的解决问题。在某些情况下,连续转变为更强大的比程序上的解决方案。

我用XSLT广泛,定制的软风格的前端。该模型是"化"xml(不过xml serializaiton),然后转换为html通过xslt。的优势ASP.NET 躺在自然integration with XPath,并更严格的良好标准格式要求(这是更容易因有关文件的结构xslt中比在大多数其他语言)。

不幸的是,语言含有若干限制(例如,能力变换所输出的另一个变换的),这意味着,这是令人沮丧偶尔的工作。

尽管如此,很容易实现的,极力强制实施分离的关切其它补助金不是我看到的另一技术提供了现在-所以对于文件转换,它仍然是东西,我会推荐。

我用XML文件和XSLT在一个一体化项目之间很dis-类似的DB系统在2004年的某个时候.我不得不学习文件和XSLT从头开始,但这并不难。伟大的事情对这些工具,它使我能够编写的数据独立C++代码,依靠划和XSLT验证/验证,然后转换XML文件。变化的数据格式变化的文件和XSLT文件不C++的代码中采用了xerces库。

为感兴趣:主要文件是有150kb和平均大小的XSLT是 < 5K左右的请参考.

其他很大的好处是,该文件是一种规范文件,XSLT是基础上的。两个工作中和谐。和前是罕见的软件开发中,这些天。

虽然我没有太多的麻烦学习声明的性质划和XSLT我有没有发现其他C/C++编程人员有很大的麻烦调整,以声明的方式。当他们看到它是,啊程序,他们喃喃自语,现在,我理解!和他们进行(双关语?) 写程序XSLT!事情是你必须学会XPath和理解的轴XML。让我想起了我老时间C程序调整,采用面向对象时写C++。

我使用这些工具,因为它们使我能够编写一个小C++码基地,被隔离,但所有的最基本的数据结构的修改和这些后来被DB结构的变化。虽然我喜欢C++的任何其他语言,我们将使用我认为是有用的有益于长期可行的一个软件项目。

我曾经以为XSLT是一个伟大的想法。我的意思是 一个伟大的想法。

它在哪里失败时的执行。

我的问题发现,随着时间的推移,编程语言中的XML只是一个糟糕的想法。它使得整件事是坚不可摧的。具体地说,我认为XSLT是很辛苦的学习,代码和理解。XML上的功能方面只是让整个事情太混乱。我们试图了解有关的5倍,在我职业生涯的,并且它只是不坚持。

好吧,你可以"工具"这--我认为这是部分地点的设计--但这是第二次失败:所有XSLT工具在市场上,很简单...废话!

XSLT说明书 定义XSLT为"一种语言转换XML文件的其他XML文件"。如果你正在尝试做任何事情,但最基本的数据处理内XSLT可能有更好的解决方案。

还值得注意的数据处理能力的XSLT可以延长。净使用的定义扩展功能:

我保持一个在线文件系统为我的公司。作家创建文件中SGML(xml语言).SGML然后结合XSLT和转变为HTML。

这使我们能够很容易地修改文件的布局没有做任何编码。它只是一个问题改变XSLT。

这适用于我们。在我们的情况下,它只读文件。用户不相互作用的文件。

此外,通过使用XSLT,你的工作更接近你的问题领域(HTML)。我一直认为这是好主意。

最后,如果当前系统的工作,独自一人离开。我永远不会建议捣毁现有的代码。如果我是从零开始,我谨使用XSLT,但你的情况,我会使用你有什么。

它涉及到什么您需要它。其主要实力是容易维护性的改变,并编写自己的分析器通常涂掉。与这就是说,有时一个系统是小型和简单的真的不需要一个"幻想"解决方案。只要你的码基于生成器是可替换的,而不必更改其他代码,没什么大不了的。

作为丑陋的XSL,是的,它是丑陋的.是的,它需要一些得到使用。但是一旦你得到了它的窍门(不应该采取长期国际海事组织),它实际上是一帆风顺。编转换运行相当迅速地在我的经验,你一定能调试进入他们。

我仍然认为,XSLT可能是有用的,但它是一个丑陋的语言,并可能导致一个可怕的不可读的,不可维护的混乱。部分原因是因为XML是不是人类可读足以弥补的"语言"部分原因是因为XSLT是卡住的地方之间正在声明性和程序性的。有的说,我认为比较可以得出与经常表达,它有它的使用,当它涉及到简单以及定义的问题。

使用的替代方法和分析XML在代码可同样讨厌的,你真的想要雇用某种XML编组/结合技术(例如JiBX在Java),将转换XML直到一个对象。

如果你可以使用XSLT在一个声明的方式(尽管我不完全同意这是声明性语言),那么我认为这是有益和富有表现力。

我已经编写的网页应用程序的使用面向对象的语言,(C#在我的情况下)处理数据/理层,但是出XML而不是HTML。然后可以将这种消耗直接由客户为数据API,或呈现为HTML通过Xslt.因C#是输出XML是结构符合这一使用这一切都非常顺利,并表示逻辑的是保留的声明。这是更容易执行和改变比发送的标签。

然而,正如你需要更多的处理逻辑的XSLT级它变得错综复杂和冗长的-即使你"获得"功能的风格。

当然,这些天我可能会写这些网络应用程序使用一个宁静的界面--我认为数据"语言"这样的允许获得牵引力的领域,XML传统上被转变XSLT。但现在XSLT仍然是一个重要和有用的技术。

我已经花了很多时间在XSLT和发现,虽然这是一个有用的工具,在某些情况下,它绝对不是一个解决所有。它的工作非常好,B2B目时,它被用于数据的翻译对于机器可读XML输入/输出。我不认为你是错误的轨道在你的声明的其局限性。有一件事,这挫败了我的大部分都是细微差别,在实现XSLT。

也许你应该看看一些其他标记语言提供。我认为,杰夫没有一篇关于这个主题非常有关栈溢出。

是HTML人道标记语言?

我会看看他写的。你也许可以找到一个软件包,不是你想要的"盒子之外",或者至少是非常接近,而不是写你自己的东西从地上爬起来。

我目前的任务是刮数据从一个公共网站(是的,我知道)。值得庆幸的是它符合xhtml使我能够使用xslt收集的数据我的需要。得到的解决方案是可读的,清理和容易改变,如果需要的发生。完美!

我用XSLT之前。小组6。xslt文件(重的一个大一)约为2750线很久以前我改写了它。C#代码目前4000行含有很多逻辑;我甚至都不想去想什么会写在XSLT。

我放弃了是当我意识到不具有XPATH2.0明显伤害我的进展。

来回答你的三个问题:

  1. 我用XSLT一次一些年前。
  2. 我相信XSLT可能是正确的解决方案在某些情况。(永远不要说永远)
  3. 我倾向于同意你的评估,它主要用于"简单"的转变。但我认为,只要你了解XSLT好吧,有一种情况是由于使用它更大的任务,如发布一个网站,作为XML转变成HTML。

我认为原因,许多开发人员不喜欢XSLT是因为他们不了解根本不同的模式,它是基础上的。但与最近的兴趣编程功能,我们可能会看到XSLT卷土重来...

一个地方xslt真正的亮点是在生成报告。我发现2个步骤的过程中,与第一步的出口报告的数据作为一种xml文件,第二步骤产生视觉的报告xml使用xslt。这使得漂亮些报告,同时仍保持原数据作为验证机构,如果需求。

在以前的公司我们做了很多与XML and XSLT。XML and XSLT大。

是的,有一个学习曲线,但然后你有一个强大的工具来处理XML。你甚至可以用XSLT在XSLT(它有时可能是有用的)。

性能也是一个问题(具有非常大的XML)但是你可以解决,通过使用智能XSLT,并做一些预处理与(生成)XML。

任何人都有知识的XSLT可以改变apearance成品,因为它不是编制。

我个人喜欢XSLT,你可能想得到的 简化的语法 一个看起来(没有明确的模板,只是一个普通的老HTML文件与几XSLT标签吐值的成就),但它只是不是对每一个人。

也许你只是想给你作者的一个简单的Wiki或降价的接口。那里是图书馆为,过,如果XSLT不是为你工作,也许XML不为他们工作。

XSLT不是结束所有被所有的xml转变。然而,这是非常难判断的基础上给出的信息如果已经最好的解决您的问题,或者如果存在其他更加有效和可维护的办法。你说提交人可以进入他们的内容在一个简化的格式化-什么格式?文本框?什么样的html是你把它?判断是否XSLT是正确的工具的工作,这将有助于了解特点的这一转变更加详细的说明。

我喜欢使用XSLT仅对于修改树木结构的XML文件。我发现它难以做任何有关文字处理和贬低到一定剧本,我可以运行之前或之后申请一个XSLT XML文件。

XSLT2.0包括更多的串职能,但我认为这是不合适的语言,并没有许多实现XSLT2.0.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top