HTML5属性值规范化

HTML5属性值规范化,html,css,css-selectors,normalization,Html,Css,Css Selectors,Normalization,在XML中,属性值中的空格为。因此,当解析时,在foo和bar之间具有CRLF的test=fooxDxAbar被规范化为test=foo-bar 但是属性规范化是否也适用于HTML,特别是HTML5?警察没有提到这件事。令人惊讶的是,搜索html5是否规范了web上的属性值,并没有立即透露任何关于这一问题的讨论 我发现一个似乎是HTML4规范化了属性值,但HTML5没有。它指出了2011年的W3C HTML5,但没有提供额外的信息。我还发现了W3C;这似乎是在几乎没有讨论过的情况下发生的 让我给

在XML中,属性值中的空格为。因此,当解析时,在foo和bar之间具有CRLF的test=fooxDxAbar被规范化为test=foo-bar

但是属性规范化是否也适用于HTML,特别是HTML5?警察没有提到这件事。令人惊讶的是,搜索html5是否规范了web上的属性值,并没有立即透露任何关于这一问题的讨论

我发现一个似乎是HTML4规范化了属性值,但HTML5没有。它指出了2011年的W3C HTML5,但没有提供额外的信息。我还发现了W3C;这似乎是在几乎没有讨论过的情况下发生的

让我给你举一个应用的例子。我有几个以前缀开头的HTML5CSS类,其中包括前缀foo和前缀bar。我想选择element-example,但前提是它不包含以prefix开头的类——类似于|=和~=属性选择器的组合

这是蓝色的 这不应该是蓝色的 这不应该是蓝色的 但这应该是蓝色的 请注意,上一个示例有一个前缀子字符串,但不是作为CSS类标记前缀

我提出了以下选择器,它适用于上述示例:

示例:not[class^=前缀-]:not[class*=前缀-]: 背景颜色:蓝色; ; 我担心的是,如果源代码使用空格而不是空格,那么选择器是否仍能工作。例如:

这也不应该是蓝色的 令人惊讶的是,这在Firefox和Chrome上都有效。属性源中的换行符似乎正在被规范化为DOM中的一个空间。或者可能没有发生规范化,但是一些CSS规范指出属性选择器中的空格应该匹配任何空格,即规范化是在匹配期间而不是在解析期间

现在我已经解释了我的用例,让我简化测试用例。以CSS样式为例:

div[class*=前缀-]{ 背景颜色:绿色; ; 以这个HTML为例:

这应该是绿色的 只有当空白被规范化时,它才应该是绿色的 在Firefox和Chrome中,这两种浏览器都显示为绿色

表示该值为,其中包括任何包含制表符和换行符的内容。但它没有说明规范化


请有人引用相关权威规范解释一下,HTML5是否规范化了属性值;CSS属性选择器中的空格是否符合字面意思或任何空格?

我认为问题在于我的测试文件是一个XHTML5文件,浏览器遵循XML属性规范化规则与HTML5一样,似乎没有发生属性规范化

我最初的测试用例实际上是一个存储在例如text.xhtml中的XHTML5文件,看起来像这样:

… 这应该是绿色的 只有当空白被规范化时,它才应该是绿色的 这是非常有效的XHTML5。我使用的是生成HTML5的静态站点生成器,但我忘记了我的源代码是XHTML5。当我从文件系统本地测试该文件时,Firefox和Chrome都正确地将该文件识别为基于XML的,从而应用了XML属性规范化规则

当我运行静态站点生成器并将这些文件作为文本/html文件HTML5(没有XML声明)提供时,Firefox和Chrome都没有选择第二个


因此,HTML5似乎没有规范化属性中的空白。我错误地认为这是因为我无意中按照XML规范化规则对XHTML5文件进行了测试。

为了澄清这一点,.select-prefix-is-not-a-prefix应该是蓝色的,正如名称所示,并且是蓝色的。但是newl的示例在我的测试中,class属性中的ines也注册为蓝色。在CSS中,空白规范化只发生在字符串之外。对,我把select和match搞混了。也许我应该找到一种简化示例的方法,而不是不简化。我在复制我的特定用例。我现在已经修复了拼写错误。现在,BoltClock,关于t的任何想法空白规范化?你的评论似乎暗示了属性的CSS规范化,但这个问题的主旨是:是否确实存在规范化,如果存在,是什么权威?据我所知,CSS不会规范属性值中字符串中的空白。它将规范str之外的源代码中的换行符除非对换行符使用转义序列,如\a。请参阅,如果CSS没有规范化空格,那么为什么当前会按预期跳过带换行符的类?not[class*=prefix-]除非换行符被规范化为空格,否则不应该工作,对吗?我将在问题中添加一个简化的示例。啊,BoltClock,我发现了问题。我可以理解为什么换行符示例对您不起作用。我的源文件被正确地解释为XHTML5,不是吗
t HTML5。你是对的:HTML中似乎没有属性规范化。请看我的单独答案。谢谢你的讨论。很高兴你找到了答案!我使用了数据:text/html,。。。在我的测试中,我应该想到文件类型与它vs application/xhtml+xml有关。谢天谢地,你的赏金很小,也不是完全白费;