为什么HTML样式元素内容不是标准XML?

时间:2009-10-29 21:46:17

标签: html css xml

我是HTML新手,但对XML有着悠久的历史。令我感到奇怪的是HTML样式元素看起来像这样。

<style type="text/css">
    .style1 { width: 250px; }
    .style2 { width: 20px; }
</style>

我原本以为可以用更友好的XML格式捕获相同的信息。例如,这可能是

<style type="text/css">
    <style1 width="250px"/>
    <style2 width="25px"/>
</style>

在我看来,后者将由XML解析器解析,而前者需要自定义解析代码。看起来很不寻常,我想知道是否有充分的理由。

谢谢,

迈克尔

5 个答案:

答案 0 :(得分:2)

CSS是一种不同的语言。 XHTML只允许嵌入,因为它是内容。想想就像JavaScript在XML文档中一样。

更不用说使用XML会导致DTD出现问题,并且在CSS简单易懂的情况下会非常冗长。

以下是CSS的一些历史记录:http://en.wikipedia.org/wiki/Cascading_Style_Sheets#History

答案 1 :(得分:2)

主要是因为它早于XML。参见HåkonWium Lie论文的第7.2.3.3节:  http://people.opera.com/howcome/2006/phd/#h-275

答案 2 :(得分:1)

因为CSS语法更清晰,更简洁,更具表现力。在基于XML的语言中,在单个规则中特别具有多个选择器将是非常繁琐的。 (它可以放在一个属性上,但这只是将现有CSS语法的大部分嵌入到XML标记属性或值中的丑陋黑客)。

答案 3 :(得分:0)

在这种情况下

<style type="text/css">
    .style1 { width: 250px; }
    .style2 { width: 20px; }
</style>

CSS样式是元素样式的内容。 CSS本身不是HTML

答案 4 :(得分:0)

正如其他人所说,CSS是一种完全不同的语言。它不符合XML语法。 CSS解析器不是XML解析器。要在JHTML文档中正确嵌入Javascript和CSS,请将它们包含在CDATA部分中。 CSS也可以包含在XML注释中,因为它通常不具有像Javascript那样的非XML兼容字符。

这是一篇关于这个主题的好文章。 https://developer.mozilla.org/en/Properly_Using_CSS_and_JavaScript_in_XHTML_Documents

相关问题