将XML和XSLT用于网站是一个好主意吗?

时间:2009-05-13 07:45:27

标签: xml xslt

我想知道在将XML文档用于网页内容和XSLT来管理显示部分而不使用纯HTML时是否带来优点或缺点。

我眼中的第一个条件是浏览器支持XML和XSLT。但据我所知,现代浏览器没有问题。 (如果我错了,请纠正我。)

但在搜索引擎排名中是否有例如益处(语义网等)或损失(HTML标签更常见)?

或者您是否看到为什么应该或不应该将XML和XSLT组合用于网页的其他原因?

相关:

  

Why choose an XSL-transformation?

     

Is there a point creating a site using XSLT

11 个答案:

答案 0 :(得分:5)

我个人不会经常使用 clientside xslt;浏览器支持存在问题,并且您可能需要删除xml中的数据(即客户端不需要知道或不应该知道)。

但是服务器...回来几年,我常常使用这种方法作为VB6的MVC实现 - 即VB6代码(控制器)将数据收集为xml(模型),并使用xslt来塑造html(视图)。它在关注点分离方面表现良好。这些天我会使用ASP.NET MVC来做同样的事情,但使用ascx / aspx视图模板。

答案 1 :(得分:5)

这是一个非常重要的话题。 10年前,人们开始问这个问题.....我们可以向浏览器发送数据包并让浏览器呈现内容吗?设计目标如此重要的原因是为了解决我们今天面临的问题......多种类型的设备和平板电脑并不完全支持桌面浏览模式。到目前为止,XHTML已经占据了我们......现在ECMAScripting就是人们为了做这样的事情而试图创建的东西。但从长远来看,这是一个非常糟糕的模式。它打破了网络上标记和内容的重新利用目标。

答案是肯定的......您可以构建XSL / XSLT / XML类型系统。您可以发送一个XML数据包并链接到其XSLT样式表,并且大多数现代浏览器都会将该文件解析为客户端上的标记。我已经做到了,它的工作速度令人难以置信。

现在该小组提到的缺点是真实的。关于浏览器如何解析XSLT然后渲染说脚本元素和缓存陈旧XML等问题存在问题。与设计团队接口,学习抽象内容以及设计和构造这些类型的片段存在实际问题。但这是Web长期的真正目标,也是为什么XSL的设计方式。它的功能在于分离出结构,数据和设计,并使服务器和客户端免于锁定到设计元素中的内容的奴役。编译并分层到UI中的Javascripted解决方案没有帮助,但却使情况变得更糟,因为标记设计和数据经常联系在一起。我鼓励所有新的Web开发人员开始考虑使用XSLT / XML解决方案,因为最终目标是能够专注于向桌面浏览器之外的大量客户端提供XML数据。如果您有为各种不同设备设计的XSLT / CSS,并且XML已经超出缓存范围而发送给您的客户端,那么您将拥有一个非常简单,快速且功能强大的再利用数据传输系统,该系统超出了当前的桌面应用程序/基于桌面浏览器的网站现在为我们提供了,并为Web带来了真正可扩展且强大的数据传输时代。所以,我说是的,试试XSLT吧!

答案 2 :(得分:4)

以下是基于xsl的网站示例。

http://www.skechers.com

够了

答案 3 :(得分:2)

您应该在服务器端进行转换,而不是依赖浏览器支持。

我们使用它来支持我们网站上的多种语言。缺点是有时候我们的设计师在使用XSL / XSLT / XPATH设计页面时会有一个陡峭的学习曲线。

答案 4 :(得分:1)

(因为我无法评论这是对“Saint Gerbil”的答复)

实际上你可以在XSL中使用ASP.NET控件,它非常简单,将命名空间asp添加到XSL,转换为字符串编写器,然后解析转换后的字符串中的控件:

// Transform
xsltrans.Transform(xmldoc, xslArg, oSW);

// Get transformed content
string sPage = oSW.ToString();

// Add to page
Page.Controls.Clear();
Page.Controls.Add(Page.ParseControl(sPage));

这将解析转换内容中的所有ASP.NET控件。

答案 5 :(得分:0)

XHTML是HTML的XML版本。我可能会避免在网站上使用XSLT。我会使用XHTML和CSS来控制演示文稿。我这样说是因为(X)HTML / CSS几乎是Web应用程序的事实标准,还有更多的工具可用于开发和调试。

如果您想利用XHTML中的一些非理想的HTML内容,XHTML有不同级别的验证。

答案 6 :(得分:0)

这是一种很好的做事方式,但不幸的是很多服务器端技术都不支持这个想法。

例如,在ASP.NET中,您无法使用此方法使用服务器控件,这通常足以让人们关闭。

XSLT非常适合没有报告等交互的网页。

答案 7 :(得分:0)

如果将其与服务器端代码的功能进行比较,则XSLT不能满足几个参数。

如果您的页面完全是动态的,那么在服务器端代码中创建它仍然是值得的。如果您的数据源是XML,您仍然可以使用服务器端XML解析和转换来创建转换后的XHTML并将其提供给客户端。

很少需要完全依赖浏览器的功能在客户端上专门转换HTML。大多数现代浏览器都支持XML / XSLT,但它们的主要区别在于使用的XSLT处理器类型。

答案 8 :(得分:0)

我有时会使用XML,因为当一个网站没有MySQL数据库或只是为了记录一小部分项目(需要进行大量更改),然后使用PHP在我的网页中用HTML解析它/ CSS。

但是,这确实要求您手动编辑每个xml条目,因此只需将其用于小型应用程序。

答案 9 :(得分:0)

我必须在我的主页上使用客户端XSL(T)来防止freehoster自动插入广告;-)(IE和Firefox有这个问题!)

我会在服务器端使用XML,但除了简单的XHTML + CSS之外绝不会传输任何内容。互联网必不可少的是,所有东西都是用一种技术而不是成千上万的个人语言和语义构建的。

答案 10 :(得分:0)

我从来没有听说过其他人这样做,但是我使用XSLT作为基于XML的html模板语言的宏语言。我不会将它用于从一个文档到另一个文档的大规模转换,而是用于基本上自定义标记。模板在编译之前通过xslt运行,因此它不需要实际操作数据。它提供的是一种尽可能简洁地使用一段xml的方法,然后执行一个非常简单的转换,以一种在模板语言本身中不可能或至少更难做的方式输出代码。

使用html,通常需要嵌套div,并添加类等,以使其看起来正确而不添加任何实际意义。不是在整个地方重复那个模式,而是简单地创建一个自定义元素,然后编写一个简单的XSLT转换来获取该元素及其属性,并将其转换为完全展开的html。但是,我绝不会梦想使用XSLT作为模板化数据的唯一方法。太毛茸茸了。