5

我想知道是否可以为我的网站创建一个与 Facebook 的 Open Graph 元标记具有相同功能的自定义 HTML 标记。

我在想这样的事情:

<mysite title="My website title" description="Some description" 
    image="http://mysite.com/image.png">

然后使用 PHP 来获取这些数据(我已经可以使用元标记来做到这一点)。

几点:

  • 我使用 HTML5,使用这种方法有语法问题吗?

  • Google+ 使用这样的东西:g:plusone

4

4 回答 4

4

主要问题是自定义元素在形式上是无效的。

这是文档所说的:

作者不得使用本规范或其他适用规范不允许的元素、属性或属性值,因为这样做会使该语言在未来的扩展变得更加困难。

HTML5 元素

顺便说一句,对于 W3 错误跟踪器中的自定义元素,有一个可靠的面向未来的提议,但它像往常一样被一个很酷的家伙 Hixie 拒绝了。

于 2012-11-10T01:50:35.317 回答
2

是的,如果您将页面呈现为 XHTML (XML),您应该能够做到这一点。<html xmlns="http://www.w3.org/1999/xhtml">在您的开始<html>标签中使用。正如 Marat Tanalin 所说,它是“正式”无效的语法。

您可以使用 in use XPATH 以各种方式解析文档simplexml_load_string()以查询这些元素。

$fileContents = file_get_contents('/path/to/template', FILE_USE_INCLUDE_PATH);
$template     = simplexml_load_string($fileContents);
$myTags       = $template->xpath('//mysite');
于 2012-11-10T01:57:06.110 回答
2

Marat Tanalin 是对的,在 HTML5 中,您不允许“发明”未指定的元素/属性/值。Alohci 给出了一个很好的例子,为什么这是原因。

mmmshuddup 说明,您可以使用 XHTML5。但是,我认为在这种情况是允许的,如果你扩展词汇表是正确的。毕竟是 XML。不过,它不再是多语言 (X)HTML5 文档了。

我认为可能有一个 (X)HTML5 解决方案可以为您工作(但取决于您的具体用例):data-*属性

<div data-title="My website title" data-description="Some description" data-image="http://mysite.com/image.png">…&lt;/div>

data-您可以“发明”以您可以自由定义的字符串开头的属性。

另一种可能(更复杂)的方法可能是使用具有适合您需求的现有词汇表的微数据(如果找不到,您可以自己创建一个)。如果您要提供的(元)数据对其他人有价值,我只会这样做。

于 2012-11-10T02:43:28.320 回答
1

看到这个问题:Removing Chrome's "translate" DOM Property

在这里,有人使用了非标准属性名称(非标准元素名称可能存在相同的问题),结果发现该名称现在已在浏览器中进行了标准化和解释,而提问者面临着可怕的变通方法避免大量返工。

我从未见过证明所涉及风险合理的用例。

当然,如果您碰巧像 Google 或 Facebook 一样大,那么您的非标准名称很可能会广为人知,不会因名称冲突而被发现。

于 2012-11-10T02:00:13.110 回答