Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示XML的XSLT与CSS_Css_Xml_Xslt - Fatal编程技术网

显示XML的XSLT与CSS

显示XML的XSLT与CSS,css,xml,xslt,Css,Xml,Xslt,有人建议我使用CSS来显示XML。我心里知道这是错误的,但找不到足以说服他人的言辞。谁能给我提供一个使用CSS和XSLT显示XML的利弊列表 谢谢 CSS: 造型和整体视觉表现 XSLT: 样式和视觉展示(如果需要) 允许对渲染的实际树进行完全彻底的更改 如果您的XML很好地映射到各个布局元素,那么就使用CSS;如果您需要更多的工作来调整它以便显示,那么就使用XSLT。内容的任意重新排序或将多个值列表折叠到一个表中等事情都不适合CSS。CSS只有在文档的整体结构与您想要显示的结构相同的情

有人建议我使用CSS来显示XML。我心里知道这是错误的,但找不到足以说服他人的言辞。谁能给我提供一个使用CSS和XSLT显示XML的利弊列表

谢谢

CSS:

  • 造型和整体视觉表现
XSLT:

  • 样式和视觉展示(如果需要)
  • 允许对渲染的实际树进行完全彻底的更改

如果您的XML很好地映射到各个布局元素,那么就使用CSS;如果您需要更多的工作来调整它以便显示,那么就使用XSLT。内容的任意重新排序或将多个值列表折叠到一个表中等事情都不适合CSS。CSS只有在文档的整体结构与您想要显示的结构相同的情况下才能很好地工作。

CSS在IE8中对XML似乎不起作用:

它们是指样式表吗?任何XML样式表都不同于CSS样式表。XSL有时被称为样式表,所以你们可能都是对的:)

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

XML比这更通用。XSLT的发明是为了将一种数据格式转换为另一种数据格式(仅XSLT1.0 XML,XSLT2.0任何Unicode数据格式),即XML转换为HTML或XML转换为XSL-FO或其他XML或文本格式。XSL-FO是为在纸上或屏幕上布局XML而发明的,比CSS更详细

CSS+XML的一些优点和缺点 主要是缺点,特别是考虑到在浏览器中使用XML。如果你不想听到我的胡言乱语,请跳到下面的总体建议;-)

CSS缺点1:没有用于internet的CSS+XML 缺点:这在很大程度上取决于上下文,但如果您想使用XML在internet上显示,请再想一想:不要使用XML,而是将其转换为HTML。然后使用CSS+HTML显示数据。如果您在internet上使用XML,没有搜索引擎或爬虫程序会理解
之间的区别,但他们会理解
之间的区别

仅此一点就足以成为使用XSLT转换为HTML+CSS并避免使用XML的理由

CSS缺点2:CSS意味着更多的工作 您可以使用的另一个非常重要的原因是:XML+CSS意味着定义CSS中的每个元素。使用HTML+CSS意味着用户代理已经知道所有元素的默认布局属性。使用XML+XSLT意味着通常要创建HTML+CSS。您应该在服务器端这样做,因为客户端XSLT不是很可靠,而且跨浏览器兼容

CSS cons 3:可访问性 (对不起,我找不到优点)除非XML有语义(另一个用户提到SVG),否则使用CSS进行布局就没有什么意义。如果布局应该由用户代理在语义上理解,那么XML+CSS是不可能的。文本到语音的读者不知道该做什么,WAI(可访问性)的有效性将是不可能的等等

CSS缺点4:可维护性、可理解性、脚本编写、故障 使用XML很难编写任何客户端脚本(是的,DOM是可用的,但是如何告诉浏览器脚本标记是什么?但是它可能会对
做出反应,但是,嘿,需要XSLT才能将该标记放入其中),并且很难使其跨浏览器正确(一些浏览器本身很难使用XML)。任何HTML(如元、标题、正文、脚本)都将不可用。无法添加标题属性或告诉浏览器图像是什么(afaik)

现有的任何脚本都无法在仅XML页面上工作(prototype.js?jquery.js?ajax?No和No)

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

CSS优点1:特定领域 如果您的域是SVG、SMIL、OD或其他任何内容,那么您可能已经知道:CSS是规范不可分割的一部分,应该使用它。这与纯的、可能是非结构化的数据XML完全不同

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

总体建议 根据OP的评论,我们正在研究数据XML(不是SVG或OpenDocument),它需要在浏览器中显示。可访问性和可转位性并不重要。但这并不重要:你不应该单独使用XML+CSS,除非你真的在冒险,想找出浏览器中XML的所有缺点,想重新发明每一个HTML标记并定义每一个和每一件事,只是在一段时间后放弃并恢复到HTML(XML+XSLT==HTML+CSS

更新:添加了cons 2
更新:添加了缺点3和优点1

更新:添加了cons 4、AJAX注释和一个结论

使用CSS设计XML样式本身并没有什么问题,只是不经常这样做(尽管我过去做过实验)

以SVG为例:它是XML,可以是XML。另外,请看一下:

源文档

应用一个或多个样式表的文档。这是用某种语言编码的,这种语言将文档表示为元素树。每个元素由标识元素类型的名称、若干属性(可选)和一个(可能为空)内容组成。例如,源文档可以是XML或SGML实例

文档语言

源文档的编码语言(例如HTML,