【问题标题】:How to use HTML5 features with XHTML如何在 XHTML 中使用 HTML5 功能
【发布时间】:2012-09-29 03:44:16
【问题描述】:

我需要一些有关网络编程的帮助。我必须从学校完成这项任务,教授已经提供了有关结构的详细信息。其中之一是我的网站应该符合 XHTML(严格或过渡)。另一个是我需要使用至少一个 HTML5 功能。如果没有任何新标签可以通过 XHTML 验证,我该如何使用 HTML5 功能?

我将它声明为 XHTML 1.0 过渡。

这是我遇到问题的 HTML 代码。

<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="#">Header1 </a></h1>

<nav><ul>
<li class="active"><a href="#">home</a></li>
<li><a href="#">portfolio</a></li>
<li><a href="#">blog</a></li>
<li><a href="#">contact</a></li>
</ul></nav>

</header>
</body>

在带有 header 和 nav 的行中,它表示元素未定义,并且 header 中没有属性 id 和 class。请帮忙。

谢谢。

【问题讨论】:

  • 你的教授在问一些没有任何意义的问题。

标签: html xhtml


【解决方案1】:

根据您的作业对“HTML5”的定义,仅使用标记是不可能的。文档不能使用新的 HTML5 元素同时保持与任何 XHTML 1.0 文档类型兼容。

但是,如果您被允许使用随 HTML5 引入的 JavaScript API,例如 localStorage,您也许可以在不使用任何新的 HTML5 元素(例如 @987654323)的情况下编写脚本来访问这些 API。 @ 或 &lt;nav&gt;。这些 API 与 HTML5 标记无关,因此可以与任何风格的标记一起使用,但通常称为“HTML5 功能”。

【讨论】:

  • 谢谢。这就是我的想法,但我不太确定。我想我会问教授澄清。
  • 您也可以动态创建新元素,例如document.createElement('nav')
  • @Jukka:好点子。我一直忘记你可以用 DOM 脚本轻松解决验证问题——至少在技术实现限制允许的范围内。
【解决方案2】:

似乎最有意义的赋值解释是,您需要使用 HTML5 的XHTML linearization,也称为 XHTML5。这只是意味着您可以像其他人一样使用 HTML5,但要使用通用 XML 原则。

在示例情况下,这意味着以下标记:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="#">Header1 </a></h1>

<nav><ul>
<li class="active"><a href="#">home</a></li>
<li><a href="#">portfolio</a></li>
<li><a href="#">blog</a></li>
<li><a href="#">contact</a></li>
</ul></nav>

</header>
</body>
</html>

XHTML 1.0 文档类型完全不同。它们定义了 HTML 的固定版本,因此您不能在静态标记中使用这些版本不允许的任何内容,即与 XHTML 1.0 和 HTML 4.01 相比,HTML5 中的任何新内容(这可能是“HTML5 功能”在那作业)。 “兼容 XHTML(严格或过渡)”的要求是模糊的,但如果它是专门指 XHTML 1.0,那么分配是自相矛盾的(除非您应该使用客户端脚本来获得“HTML5 功能” ”)。

(感谢@Alohci 的 cmets,这个答案在很大程度上被重写了。)

【讨论】:

  • 那个 sn-p 不会验证为 XHTML5。一方面,“doctype”这个词必须是大写的。另一方面,标记不符合 HTML5 内容模型要求。
  • @Alohci,你在验证器上测试过吗?我做到了。确实,对于 XML 格式正确doctype 必须为大写,并且整个文档必须包含在单个元素中,&lt;html&gt;&lt;/html&gt;(或 @987654327 @ 和 &lt;/foo&gt;),但这是一个不同的问题。 HTML5 没有强加这样的要求。它没有 XML 意义上的内容模型要求——没有 HTML5 DTD。
  • Jukka,是的,我做到了。内容模型要求来自 W3C HTML5 规范的第 4 章,除了第 8 章和第 9 章(或 Living Unstandard 中的第 12 和 13 章)之外,几乎所有内容都同样适用于 HTML 和 XHTML 序列化。没有 DTD 是无关紧要的。
  • @Alohci,查看此验证链接:validator.nu/…,它会给出“验证”响应。您可能尝试过验证作为 application/xhtml+xml 的文档。然后您需要遵循 XML 规则,如果您实际使用期望它是 XML 的软件处理文档,您也需要这样做。
  • Jukka,我不明白你的意思。该链接上的文档是格式良好的 XML,并且符合 (X)HTML5 的内容模型。 (实际上,它是有效的多语种。)这与您答案中的示例完全不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 2014-11-17
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多