列表标记上的微数据未通过W3C验证器验证

时间:2014-04-01 05:23:55

标签: html5 microdata

我是Microdata的新手,我慢慢得到它。但由于某种原因,我没有使用W3C验证器进行验证,因为我在<div>中间放置<ul>

<div itemscope itemtype="http://schema.org/BeautySalon">
  <ul>
    <li>
      <b>
        <span itemprop="name">foobar and you</span>
      </b>
    </li>
    <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
      <li>
        <span itemprop="streetAddress">6969 foobar</span>
      </li>
      <li>
        <span itemprop="addressLocality">Miami Beach</span>, 
        <span itemprop="addressRegion">FL</span>
        <span itemprop="postalCode">33139</span>
      </li>
    </div>
    <li>
      <span itemprop="telephone">305 691 6969</span>
    </li>
  </ul>
</div>

我如何正确添加

<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> 

并正确添加所有itemprop并且仍然是W3C有效吗?

1 个答案:

答案 0 :(得分:1)

ul不允许div作为子级,因此您不能将其用作多个li元素的容器。有各种可能的解决方案。

我认为在这里使用ul是不合适的。但是如果你想继续使用ul

街道地址与地区/地区/邮政编码不在同一个列表项中似乎没有意义。因此,您可能希望将它们全部放在同一个列表项中(您可能还希望将br用于邮政地址)。

如果您想使用b作为名称,则可以省略span。在b上指定微数据或在li上指定(以保持一致性)。

如果您不需要单独的电话号码元素,您可以在li上指定微数据。

这会给你:

<div itemscope itemtype="http://schema.org/BeautySalon">
  <ul>
    <li itemprop="name"><b>foobar and you</b></li>
    <li itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
      <span itemprop="streetAddress">6969 foobar</span><br>
      <span itemprop="addressLocality">Miami Beach</span>, 
      <span itemprop="addressRegion">FL</span><br>
      <span itemprop="postalCode">33139</span>
    </li>
    <li itemprop="telephone">305 691 6969</li>
  </ul>
</div>

can use every HTML5 element for Microdata。重用现有标记。仅当您需要Microdata的其他元素时,请添加并使用div / span(以及可能meta/link)。