XHTML真的是可扩展的吗?

3
有没有办法(在服务器端或客户端)可以扩展HTML以包含新的标签?例如,如果我可以编写一个模式片段来定义一个“blogpost”,其中包含一个“postname”,一个“postauthor”,一个“posttime”和一个“postcontent”,然后在我的HTML中引用“blogpost”而不是使用基本的HTML“div”和“p”标签,那就太棒了。

另一个有趣的问题是:如果您只使用这些自定义元素并对它们应用CSS规则,那么在哪些浏览器中会起作用(如开箱即用)? - Šime Vidas
6个回答

2
那将会很棒。这里有一篇文章解释为什么它行不通。基本上,你可以扩展标记语言。但是HTML浏览器不知道如何解释你的新标签。

这接近我所讨论的内容。(虽然在尝试创建新的DTD之前,我可能会尝试创建一个新的XML模式) - JnBrymn
请您详细说明一下。HTML浏览器是什么意思?除IE外,所有现代浏览器都有XML解析器。哪些浏览器知道如何解释自定义标签,哪些不知道呢? - Šime Vidas
所提到的文章非常过时(“Netscape Navigator”?)。此外,我怀疑浏览器并没有根据文件扩展名来基于HTML解释文件内容,正如他们所声称的那样。 - ijw

2
听起来像是 HTML5 是你需要的!
你可以使用像 section 来包含所有的文章,使用 article 包含每篇文章,同时还有基本元素如 header, nav, 和 footer。虽然没有像 postauthor 或 posttime 这样的细粒度元素,但你可以提供其他属性来定义这些。
哦,看来我说得太快了,你也可以使用这个:
<time pubdate datetime="2010-11-13T20:00+09:00">Posted Nov 13.</time>

对于发布时间,时间元素也应该有一个 pubdate 属性。 - Alohci
有趣,但这并没有说XHTML是可扩展的,正如所问:它仅仅说HTML5更大了,甚至默认包含了更多的标签和属性。 - ijw
直接的问题没有用是/否回答,然而 OP 想要更好地管理他的博客内容。由于 HTML5 现在是新的“标准”,并且更好地管理这种类型的内容,我建议使用它,OP 觉得这是一个值得考虑的选项。 - scunliffe

0
对于一般的网页开发者来说,不需要。你需要编写自己的DTD来拥有自己的标签,即使这样做,从语义上讲也不会为你带来任何好处,除了让你自己更清楚。
此外,一些浏览器(咳咳IE)将不知道如何处理您的自定义标记,您将不得不使用JavaScript来教它。这并不是一个推荐的方法...

IE真的无法处理带有适当DTD的XHTML文档中的自定义标签吗? - Chuck
@Chuck,你说的部分正确。根据IE文档,你可以使用自己的自定义标签,但它们必须有命名空间,否则它会将其视为未知标签(这意味着IE不允许它包含子元素)。此外,命名空间必须在HTML标记中声明。然而,我从未尝试过创建自己的DTD来测试IE对未命名空间元素的支持,因为它们在DTD中被定义。 - simshaun

0

虽然浏览器不会轻易理解基于XML派生的可扩展性,但这并不意味着人们没有在解决这个问题。

除了HTML5的添加如<section>之外,你尝试做的最好的解决方案可能是microformats。在你的博客示例中,hAtom

然后你得到了一些浏览器可以理解的东西,但随着更多系统支持hAtom,你可以使用类引用(例如.hentry.entry-title.author)来逐步增强样式条目。


0

你可以向DOM树添加自定义标签。虽然你不会得到有效的XHTML,但只要正确地为其设置样式,浏览器就能理解这些标签。

一个非常有趣的项目利用了这种浏览器行为,它就是WebODF,这是一个将ODF文档带到浏览器中的工具。请查看该网站上的视频和实时演示,以了解其工作原理。


我想我把首字母缩写递归了一步。XML代表可扩展标记语言。 - JnBrymn

0

您可以通过将XHTML与自定义语言混合来添加自定义标签。该语言不再是XHTML,而是包括XHTML的复合语言,但这始终是XHTML的意图。

但是,您需要正确使用XHTML,并使用XML MIME类型(例如application/xhtml+xml)进行服务,这意味着在IE9之前没有IE支持。

您可以在此处查看使用blogpost、postname、postauthor等的示例:

http://www.alohci.net/application/xhtml+xml/custom1.xhtml.ashx

(适用于Firefox,Chrome,Safari,Opera和IE9)


当然,你可以将无效标签放入HTML并对其进行样式设置,但在我看来,这似乎不是问题的重点,问题特别涉及XHTML的可扩展性质。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接