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更详细.
主要是缺点,尤其是 考虑在浏览器中使用XML.如果你不想要我所有的bab呀学语,请跳到下面的整体建议;-)
缺点:它在很大程度上取决于上下文,但如果您想使用XML在互联网上显示,请再想一想:不要使用XML,而是将其转换为HTML.然后使用CSS + HTML显示您的数据.如果你在互联网上使用XML,没有搜索引擎或爬行,就会明白之间的差别<x>和<y>,但他们会明白之间的差别<h1>和<h2>.
仅这一点就足以成为使用XSLT转换为HTML + CSS并自行避免使用XML的原因.
您可以使用的另一个非常重要的原因:XML + CSS意味着定义CSS中的每个元素.使用HTML + CSS意味着用户代理已经知道所有元素的默认布局属性.使用XML + XSLT通常意味着您创建HTML + CSS.您应该在服务器端执行此操作,因为客户端XSLT不是非常可靠并且仍然是跨浏览器兼容的.
(对不起,我找不到专业人员)除非XML有语义(SVG,正如另一个用户所提到的),否则使用CSS进行布局是没有意义的.如果应该由用户代理在语义上理解布局,那么XML + CSS是不可行的.文本到语音的读者不知道该怎么做,WAI(可访问性)有效性是不可能的等等.
使用XML使得很难做任何客户端脚本(是的,DOM是可用的,但是你如何告诉浏览器脚本标签是什么?但也许它会做出反应<script>,但是,嘿,你需要XSLT才能得到它标签在那里)并使其难以使其跨浏览器正确(某些浏览器本身很难使用XML).任何HTML(如元,标题,正文,脚本)都不可用.无法添加标题属性或告诉浏览器图像是什么(afaik).
没有脚本可以在你的XML页面上工作(prototype.js?jquery.js?ajax?no no and no).
任何查看代码的人都必须了解每个标记的"含义".使用XSLT转换为HTML,可以防止这种情况发生.这个额外的步骤是有益的,并且应该在从XML到浏览器显示时应用.
如果您的域名是SVG,SMIL,OD或其他任何内容,您可能已经知道:CSS是规范中不可或缺的一部分,应该使用它.这与纯的,可能是非结构化的数据XML完全不同.
仅供比较:任何异步AJAX调用(应该)都返回XML.但是任何使用它的库,都会将其解释为HTML,或者在将其注入现有页面之前使用XSLT或其他方法对其进行转换.
根据OP的评论,我们正在查看数据XML(不是SVG或OpenDocument),它需要在浏览器中显示.可访问性和可索引性并不重要.但这并不重要:你不应该单独使用XML + CSS,除非你真的喜欢冒险并希望在浏览器中发现XML的所有缺点,想要再次发明每个HTML标签并定义每个和一切,只是在一段时间后放弃并恢复为HTML(XML + XSLT == HTML + CSS).
更新:添加缺点2
更新:添加缺点3和优点1
更新:添加缺点4,AJAX注释和结论
| 归档时间: |
|
| 查看次数: |
10120 次 |
| 最近记录: |