在带有链接的 table 中使用 containedInPlace 属性

Using containedInPlace property within a table with links

我有 table 个城市中的村庄。我计划在这些村庄中的每一个上添加 schema.org 微数据,以指定它们与母城市的关系。由于我刚刚学习微数据,所以我对 属性 containedInPlace works in relation to Place 的链接方式感到困惑,尤其是在 table 中。这种语法在语义上是否正确?:

<article itemscope itemtype='http://schema.org/Place'>
  <h1><span itemprop='name'>San Andres</span></h1>

  <table>
    <thead>
      <tr>
        <th>Village name</th>
        <th>Description</th>
        <th>Other info</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
          <a itemprop='containedInPlace' href='/santa-ana.html'>Santa Ana</a>
        </td>
        <td>Description</td>
        <td>Other info</td>
      </tr>
      <tr>
        <td>
          <a itemprop='containedInPlace' href='/santiago.html'>Santiago</a>
        </td>
        <td>Description</td>
        <td>Other info</td>
      </tr>
    </tbody>
  </table>

</article>

由于 itemscope itemtype='http://schema.org/Place' 被放置在包含 table 的 <article> 标签中,包含 itemprop='containedInPlace' 的村庄现在与城市 San Andres 相关吗?

对于 Microdata,指定它的 HTML 个元素并不重要 ()。因此,使用 table 而不是例如div

您的示例表明地点 "San Andres" 是 URI /santa-ana.html/santiago.html 标识的两个地点的一部分。如果你想传达这两个地方是圣安德烈斯的一部分,你必须使用 属性 containsPlace instead of containedInPlace.

如果您想在该页面上提供有关这些地点的更多数据(例如,它们的名称),您必须提供项目(带有 itemscope)而不仅仅是 URL 值。

<tr itemprop="containsPlace" itemscope itemtype="http://schema.org/Place">
  <td>
    <a itemprop="url" href="/santa-ana.html"><span itemprop="name">Santa Ana</span></a>
  </td>
  <td itemprop="description">Description</td>
  <td>Other info</td>
</tr>

(并且始终使用最具体的可用类型。例如,对于城市,您应该使用 City 而不是父类型 Place。)