XSLT vs CSS用于显示XML

pis*_*lis 18 css xml xslt

有人建议我用CSS来显示XML.我心里知道这是错的,但是找不到充分说服别人的话.任何人都可以向我提供使用CSS和XSLT显示XML的优缺点列表.

谢谢!

Abe*_*bel 21

你的心告诉你的是正确的.虽然可以将CSS用于XML,但XML本身没有任何语义.CSS适用于Web,HTML和语义数据(良好)外观.

XML比那更通用.XSLT是为将一种数据格式转换为另一种数据格式(XSLT 1.0仅XML,XSLT 2.0任何Unicode数据格式)而发明的,即XML到HTML或XML到XSL-FO或其他XML或文本格式.XSL-FO是为在纸张或屏幕上布置XML而发明的,比CSS更详细.

CSS + XML的一些优缺点

主要是缺点,尤其是 考虑在浏览器中使用XML.如果你不想要我所有的bab呀学语,请跳到下面的整体建议;-)

CSS缺点1:互联网没有CSS + XML

缺点:它在很大程度上取决于上下文,但如果您想使用XML在互联网上显示,请再想一想:不要使用XML,而是将其转换为HTML.然后使用CSS + HTML显示您的数据.如果你在互联网上使用XML,没有搜索引擎或爬行,就会明白之间的差别<x><y>,但他们会明白之间的差别<h1><h2>.

仅这一点就足以成为使用XSLT转换为HTML + CSS并自行避免使用XML的原因.

CSS缺点2:CSS意味着更多的工作

您可以使用的另一个非常重要的原因:XML + CSS意味着定义CSS中的每个元素.使用HTML + CSS意味着用户代理已经知道所有元素的默认布局属性.使用XML + XSLT通常意味着您创建HTML + CSS.您应该在服务器端执行此操作,因为客户端XSLT不是非常可靠并且仍然是跨浏览器兼容的.

CSS缺点3:可访问性

(对不起,我找不到专业人员)除非XML有语义(SVG,正如另一个用户所提到的),否则使用CSS进行布局是没有意义的.如果应该由用户代理在语义上理解布局,那么XML + CSS是不可行的.文本到语音的读者不知道该怎么做,WAI(可访问性)有效性是不可能的等等.

CSS缺点4:可维护性,可理解性,脚本编写,麻烦

使用XML使得很难做任何客户端脚本(是的,DOM是可用的,但是你如何告诉浏览器脚本标签是什么?但也许它会做出反应<script>,但是,嘿,你需要XSLT才能得到它标签在那里)并使其难以使其跨浏览器正确(某些浏览器本身很难使用XML).任何HTML(如元,标题,正文,脚本)都不可用.无法添加标题属性或告诉浏览器图像是什么(afaik).

没有脚本可以在你的XML页面上工作(prototype.js?jquery.js?ajax?no no and no).

任何查看代码的人都必须了解每个标记的"含义".使用XSLT转换为HTML,可以防止这种情况发生.这个额外的步骤是有益的,并且应该在从XML到浏览器显示时应用.

CSS专业人员1:特定领域

如果您的域名是SVG,SMIL,OD或其他任何内容,您可能已经知道:CSS是规范中不可或缺的一部分,应该使用它.这与纯的,可能是非结构化的数据XML完全不同.

AJAX想

仅供比较:任何异步AJAX调用(应该)都返回XML.但是任何使用它的库,都会将其解释为HTML,或者在将其注入现有页面之前使用XSLT或其他方法对其进行转换.

总体建议

根据OP的评论,我们正在查看数据XML(不是SVG或OpenDocument),它需要在浏览器中显示.可访问性和可索引性并不重要.但这并不重要:你不应该单独使用XML + CSS,除非你真的喜欢冒险并希望在浏览器中发现XML的所有缺点,想要再次发明每个HTML标签并定义每个和一切,只是在一段时间后放弃并恢复为HTML(XML + XSLT == HTML + CSS).

更新:添加缺点2
更新:添加缺点3和优点1
更新:添加缺点4,AJAX注释和结论

  • 当你投票时,请礼貌地解释原因,这样我就可以为你和他人提高答案,并在此过程中学到一些东西. (5认同)