带有 RFDa 和 XHTML 1.0 过渡支持的 DTD

Posted

技术标签:

【中文标题】带有 RFDa 和 XHTML 1.0 过渡支持的 DTD【英文标题】:DTD with RFDa and XHTML 1.0 Transitional support 【发布时间】:2011-01-20 07:39:18 【问题描述】:

是否存在同时支持 Xhtml 1.0 过渡支持和 RDFa 支持的 W3C 文档类型?

我知道 XHTML+RDFa 1.0 (http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd) DTD,但这是与我当前网站不兼容的 XHTML 1.1。似乎还有一个 HTML4+RDFa 1.0 (http://www.w3.org/MarkUp/DTD/html4-rdfa-1.dtd) DTD 可用。

我不提供 XHTML 1.1 的主要原因当然是 Internet Explorer,但如果没有其他方法,我可能会将其作为文本/html 提供给 IE 用户。

【问题讨论】:

【参考方案1】:

我不相信有这样的 DTD,不。

HTML 变得越来越碎片化,为每种可能的组合创建 DTD 将变得不切实际。 HTML5 不是基于 SGML 的,并且有效地放弃了 DTD。将来,验证器可能需要进行更改,以便调用 RDFa 和 ARIA 等组件集合,并在其结果中指出需要哪些集合才能使每个特定的标记符合要求。

很遗憾,我们目前确实处于过渡点,因此没有干净的解决方案可以解决您的问题。但是,一定程度的实用主义会让你走得很远。

现在,DTD 可以将 XHTML+RDFa 1.0 定义为 XHTML 1.1 的扩展,但它实际上不是 XHTML 1.1,也不是 XHTML 1.0 过渡或严格,或者实际上不是“XHTML+RDFa 1.0” .

因此您可以采取务实的服务方式。考虑一下 HTML5 对此的态度。它表示任何作为 text/html 的内容都是对象模型的 HTML 序列化,而不管您声明的任何 DOCTYPE。这实际上是浏览器所做的。

同样,您使用 XML 内容类型(例如 application/xhtml+xml)提供的任何内容都是 XML 序列化。那些具有 xhtml 命名空间的 XML 部分构成了 XHTML。

因此,在实践中,您可以毫无困难地将 XHTML+RDFa 1.0 作为 text/html 或 application/xhtml+xml 提供,前提是标记满足多语言文档的要求。

这就留下了验证。撇开 RDFa 不谈,您使用的标记是否符合 XHTML 1.0 Transitional 但不符合 XHTML 1.1?如果是这样,您是否足够关心完美验证以更改这些或放弃使用 RDFa?大概您使用 RDFa 是为了让您的用户受益,而验证本质上是为您自己提供的便利工具。

我最近遇到了类似的情况,当时我决定将 ARIA 属性添加到我的 XHTML 1.0 页面中。我认为可访问性胜过有效性,我会添加属性而忘记确保我的页面 100% 有效。

【讨论】:

XHTML+RDFa 1.0 标准确实需要大量工作才能从当前的 XHTML 1.0 过渡页面转换,所以我非常不愿意采取这一步。尽管 XHTML 1.0 过渡版和 XHTML 1.1 之间的区别并没有那么大,但对于所有模板来说,这足以让它成为一个痛苦的转换。然而,由于这里的验证点确实只是为了确保页面中没有真正的错误,因此忽略 W3 错误将是一个合适的解决方案。这只不过是一个可以用一点用户脚本轻松解决的烦恼;)【参考方案2】:

实际上,除非您关心 DTD 实现,否则各种 XHTML 版本之间几乎没有区别,而且几乎没有不使用 XHTML 1.1 的正当理由。您的网站以何种方式依赖于 1.0 过渡?如果您可以使用 1.0 strict 使您的网站有效,那么从该版本迁移到 1.1 应该不会造成问题,因为本质上唯一的区别是模块化 DTD,它确实没有任何缺点。

如果您仍在为 XHTML MIME 的哲学问题苦苦挣扎,我不会担心,因为从概念上讲,使用组织得更好的 1.1 DTD 提供错误的媒体类型并不比使用 1.0 更犯罪。之所以按原样实现 RDFa,是因为将 RDFa 模块添加到 XHTML 1.1 DTD 只涉及向主模块添加几行代码。对 1.0 DTD 这样做会更难,也不会那么干净。

需要考虑的其他一些事情是 XHTML 1.1 第二版规范包括 XML 模式实现。此外,最新的 XHTML+RDFa 1.1 工作草案最终完全放弃了指定文档类型的(愚蠢的)要求,因此您可以使用仅模式验证。如果您能找到一种使用 XML/XHTML mimetypes 的方法,这将非常有效,因为不需要 doctype 声明即可在支持它的浏览器上获得标准模式呈现(除 IE8 及以下之外的所有浏览器)。

【讨论】:

以上是关于带有 RFDa 和 XHTML 1.0 过渡支持的 DTD的主要内容,如果未能解决你的问题,请参考以下文章

HTML 符合XHTML 1.0过渡模板 - Web标准项目

带有mootools的XHTML有效外部链接

了解带有和不带有重定向的 JSF 生命周期阶段

Thymeleaf 的 XHTML 基本支持?

带有 :before 和 :after 伪元素的 CSS 过渡

带有 Tailwind css 的 Vue 过渡在淡出时不可见