编写严格的 XHTML 1.0

Writing Strict XHTML 1.0

提问人:javapalava 提问时间:5/24/2016 更新时间:5/24/2016 访问量:92

问:

我有一个考试,将向我提供一系列代码片段,并要求我确定它们是有效还是无效的严格 XHTML1.0。我在网上找不到任何规则或可消化的资源。谁能建议我是否可以记住一组检查?

xhtml xhtml-1.0-严格

评论

0赞 Erik 5/24/2016
你检查 w3.org/TR/xhtml1?还是属于“难以消化”的类别?我认为它包含您需要的所有信息。
0赞 Mr Lister 5/24/2016
如果你必须用一张纸手工完成,那将是很多工作。这些语言规格很大!所以。。。从哪里开始。您知道XML语法吗?这是规则#1,显然,格式良好的XML。然后是有效的元素;这个 w3.org/2010/04/xhtml10-strict.html 怎么样
0赞 Mr Lister 5/24/2016
你知道吗,我一直在想。也许这个话题本身是无关紧要的,也许他们只是想通过询问一个他们从未涉及过的主题来了解你的 Google-fu 有多好。

答:

1赞 John 5/24/2016 #1

您可以而且应该做的最直接的事情是确保文件以 .如果您正在创建一个文件并且无权访问服务器端脚本,那么您只需要创建一个带有扩展名的文件,并通过您使用的任何浏览器中的开发人员工具。application/xhtml+xml.xhtmlapplication/xhtml+xml

强烈推荐使用Firefox;当您遇到XML解析错误时,整个页面将被隐藏,它将具有黄色背景并显示错误,它是红色文本的行号和列号。它对于快速解决格式错误的 XML 解析错误非常有用。

请记住,XHTML 1(相当于 HTML4)已经过时了,我强烈建议使用 XHTML5。虽然我已经将我的平台从 XHTML 1 Strict 更新到 XHTML 5(我的个人资料中的链接),但您将很难找到更好的遵循 XHTML5 的更严格代码示例。

还要记住,HTML () 由浏览器的 HTML 解析器处理,而 XHTML () 由浏览器的 XML 解析器处理。text/htmlapplication/xhtml+xml

XML 解析器将捕获格式错误的 XML,但它不会阻止重复的属性在 JavaScript 中造成严重破坏(将始终以两个或多个相同值的第一个 'id 属性为目标)。id

还应该注意的是,XHTML1 将属性定义为具有与属性名称相同的值:

XHTML 1 的

<select>
<option selected="selected"></option>
</select>

XHTML 5 的

<select>
<option selected="true"></option>
</select>

XHTML5 将大多数(但不是全部)定义为具有布尔值(例如 或 )。autocompletetruefalse

最后,您可以让所有内容完全符合 XHTML1/5,但如果媒体类型/MIME 是,那么您的页面就不是任何形式的 XHTML。XHTML最大的优点之一是必须严格服务;严格代码可以可靠地松散地提供,尽管松散的代码不能严格地依赖服务,我不是在谈论文档类型。text/html

评论

0赞 Mr Lister 5/24/2016
它在哪里说 was 的值从 XHTML 1 到 5 之间更改了?selectedselectedtrue
0赞 John 5/24/2016
@MrLister Everywhere 属性的定义与实际规范中相同。 w3.org/TR/2012/WD-html5-20121025/... --- “该属性是布尔属性。”booleanselected
1赞 Mr Lister 5/24/2016
不不,术语布尔属性并不意味着值应该是 或 。这意味着属性本身应该不存在或存在!如果通过 W3C 验证器运行 XHTML5 文件,它会抱怨,但没关系。 validator.w3.org/nu/..."true""false"selected="true"selected="selected"
1赞 Mr Lister 5/24/2016
事实上,如果你写 ,浏览器会将其解释为选中,因为该属性存在。请参阅 w3.org/TR/html5/infrastructure.html#boolean-attribute 请注意,(X)HTML5 规范中的一些属性可以具有值和 ,例如 ,但这些属性不称为布尔属性。selected="false""true""false"draggable
0赞 John 5/25/2016
@MrLister 从技术上讲,这是一个古老的错误,因为我记得测试过旧版本的浏览器(特别是 Firefox),并且像往常一样,XML 解析器被视为二等公民。