有没有办法(在服务器端或客户端)可以扩展HTML以包含新的标签?例如,如果我可以编写一个模式片段来定义一个“blogpost”,其中包含一个“postname”,一个“postauthor”,一个“posttime”和一个“postcontent”,然后在我的HTML中引用“blogpost”而不是使用基本的HTML“div”和“p”标签,那就太棒了。
section
来包含所有的文章,使用 article
包含每篇文章,同时还有基本元素如 header
, nav
, 和 footer
。虽然没有像 postauthor 或 posttime 这样的细粒度元素,但你可以提供其他属性来定义这些。<time pubdate datetime="2010-11-13T20:00+09:00">Posted Nov 13.</time>
pubdate
属性。 - Alohci虽然浏览器不会轻易理解基于XML派生的可扩展性,但这并不意味着人们没有在解决这个问题。
除了HTML5的添加如<section>
之外,你尝试做的最好的解决方案可能是microformats。在你的博客示例中,hAtom。
然后你得到了一些浏览器可以理解的东西,但随着更多系统支持hAtom,你可以使用类引用(例如.hentry
、.entry-title
和.author
)来逐步增强样式条目。
你可以向DOM树添加自定义标签。虽然你不会得到有效的XHTML,但只要正确地为其设置样式,浏览器就能理解这些标签。
一个非常有趣的项目利用了这种浏览器行为,它就是WebODF,这是一个将ODF文档带到浏览器中的工具。请查看该网站上的视频和实时演示,以了解其工作原理。
您可以通过将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)