标记“mainContentOfPage”的最佳方法是什么?

时间:2014-04-11 21:57:36

标签: microdata schema.org

对于网页的其他区域,标记起来很简单;即导航元素,页眉,页脚,侧栏

mainContentOfPage不是这样;我已经看到了很多不同的方法来实现这一点,最近(我发现这个方法最奇怪)在schema.org itself上:

<div itemscope itemtype="http://schema.org/Table">
  <meta itemprop="mainContentOfPage" content="true"/>
  <h2 itemprop="about">list of presidents</h2>
  <table>
    <tr><th>President</th><th>Party</th><tr>
    <tr>
      <td>George Washington (1789-1797)</td>
      <td>no party</td>
    </tr>
    <tr>
      <td>John Adams (1797-1801)</td>
      <td>Federalist</td>
    </tr>
    ...
  </table>
</div>

我可以用一些例子;我的页面的主要内容在这种情况下是搜索结果页面,但我也计划在其他页面上使用它(主页,产品页面等)

编辑,我找到了更多的例子:

这会有效吗?我在博客上发现了这个:

<div id="main" itemscope itemtype="http://schema.org/WebPageElement" itemprop="mainContentOfPage">
    <p>The content</p>
</div>

我在另一个博客上也发现了这个更简单的例子(可能太简单了?):

<div id="content" itemprop="mainContentOfPage">
    <p>The content</p>
</div>

2 个答案:

答案 0 :(得分:5)

可以在mainContentOfPage property上使用WebPage,并期望WebPageElement作为值。

Table不是WebPage的孩子,true不是预期值。所以这个例子实际上很奇怪,因为它不符合规范。

WebPage应使用Table作为mainContentOfPage的值:

<body itemscope itemtype="http://schema.org/WebPage">
  <div itemprop="mainContentOfPage" itemscope itemtype="http://schema.org/Table">
  </div>
</body>

编辑:更新

您的第二个示例与我的相同,只是使用更通用的WebPageElement代替Table。 (当然,你仍然需要一个父WebPage项,就像我的例子一样。)

您的第三个示例与schema.org的定义不符,因为值为Text而不是预期的WebPageElement(或子)项。

答案 1 :(得分:0)

有效选项是:

<body itemscope itemtype="http://schema.org/WebPage">
 <main itemprop="mainContentOfPage" itemscope itemtype="http://schema.org/WebPageElement">
  <div itemprop="about" itemscope="" itemtype="http://schema.org/Thing">
   <h1 itemprop="name">whatever</h1>
  </div>
 </main>
</body>

当然,您可以将相关属性添加到顶级或嵌套元素,并将Thing更改为Full Hierarchy中列出的任何其他项类型。我还建议使用mainEntity,文档仍然没有说明是否真的有必要,但根据1st example here,使用WebPage您可能需要指定{ {1}}:

mainEntity

无法判断这是否有效:

<body itemscope itemtype="http://schema.org/WebPage">
 <header><h1 itemscope itemprop="mainEntity" itemtype="http://schema.org/Thing">whatever</h1></header>
  <main itemprop="mainContentOfPage" itemscope itemtype="http://schema.org/WebPageElement">
   <div itemprop="about" itemscope="" itemtype="http://schema.org/Thing">
    <h2 itemprop="name">whatever</h2>
    </div>
 </main>
</body>

文档并未说明将<body itemscope itemtype="http://schema.org/WebPage"> <main itemprop="mainContentOfPage" itemscope itemtype="http://schema.org/WebPageElement"> <div itemprop="mainEntity" itemscope="" itemtype="http://schema.org/Thing"> <h1 itemprop="name">whatever</h1> </div> </main> </body> 设置为嵌套项目。

在任何情况下,请考虑&#34; [...]隐含地假设每个网页都被声明为WebPage [...] &#34;如mainEntity description中所述,将HTML标记用作WebPage<main><footer>已经提供了有关页面中使用的元素类型的信息。因此,如果实际上您不需要向这些元素或网页本身添加相关信息,那么正确使用HTML标记即可轻松完成<header>甚至mainContentOfPage