2

I want to create a breadcrumb navigation with the Microdata format.

So I'm using following BreadcrumbList markup and Google Structured Data Testing Tool recognized it:

<ol itemscope itemtype="http://schema.org/BreadcrumbList">                  
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a itemprop="item" href="https://example.com/home">
            <span itemprop="name">Home</span>
        </a>
        <meta itemprop="position" content="1" />
    </li>

    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a itemprop="item" href="https://example.com/home/fashionn">
            <span itemprop="name">Fashion</span>
        </a>
        <meta itemprop="position" content="2" />
    </li>

    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <span itemprop="name">Coats</span>
        <meta itemprop="position" content="3">
    </li>
</ol>

But from Bing Markup Validator I receved following message:

We are not seeing any markup on this page. Please ensure the markup has been implemented correctly.

Regarding Bing documentation the following markup is correct for breadcrumb:

<ol>                    
    <li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
        <a itemprop="url" href="https://example.com/home">
            <span itemprop="title">Home</span>
        </a>
    </li>

    <li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
        <a itemprop="url" href="https://example.com/home/fashion">
            <span itemprop="title">Fashion</span>
        </a>
    </li>

    <li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
        <span itemprop="title">Coats</span>                 
    </li>
</ol>

So is there a way to create a breadcrumb navigation with Microdata format which would be valid both for Google and Bing?

Ani
  • 96
  • 11
  • It’s a pity that Bing’s validator requires a login -- can’t test whether possible solutions really work. -- Would you be willing to use RDFa instead of Microdata? – unor Aug 03 '17 at 21:01
  • Thanks for replying and editing. I have just checked, RDFa codes from schema.org and bing.com are also different and I've got the same result. – Ani Aug 03 '17 at 21:45
  • Yes, but I’m asking because there *might* a way to make it possible with RDFa (while it *might* be impossible with Microdata). If I find some time, I can try to come up with something (without being able to test it for Bing) -- so would a RDFa solution be interesting for you? – unor Aug 03 '17 at 21:51
  • If is't possible to find some solution with RDFa, I will be very grateful ! – Ani Aug 03 '17 at 21:57
  • I posted an answer. As it’s already long, I decided to leave out possible RDFa solutions. I’d be interested to know what Bing’s testing tool says about my Microdata snippets. If nothing works, you could create a new question asking about a way to combine these in RDFa (but I’m not sure if it would be possible with RDFa). – unor Aug 05 '17 at 19:16

1 Answers1

3

To rephrase your goal, as far as I understand it: You want to markup your breadcrumbs

  • with Microdata
  • using two vocabularies (Schema.org and Data-Vocabulary.org)
  • without duplicating your content
  • so that Bing’s and Google’s testing tool still validate it.

Microdata makes it hard to mix vocabularies:

  • In itemtype, you can only use types from the same vocabulary.

  • In itemprop, you can mix properties from different vocabularies, but only the properties from one vocabulary can be specified in the shorter string form, while the properties from all other vocabularies have to be specified as absolute URIs.

    (This isn’t a problem if consumers support the absolute URI form for the properties they recognize.)

(By the way, RDFa supports mixing vocabularies way better, so you might want to consider using RDFa instead of Microdata.)

A way to avoid the problem, maybe.

Use Data-Vocabulary.org for Bing and Google.

While the vocabulary Data-Vocabulary.org is deprecated and deleted (I wonder why Bing is still recommending it), Google still seems to support it, too (probably because it’s still used on many websites from back then, when Google recommended it, too).

I don’t know if it really works, but at least Google’s SDTT doesn’t give any warnings/errors for your Data-Vocabulary.org snippet.

Solutions, maybe.

Unfortunately, I can’t test it in Bing’s tool (because an account is required), so the following snippets don’t necessarily work.

itemref + absolute URIs for Data-Vocabulary.org’s title

This snippet uses Schema.org as primary vocabulary. An empty div outside of Schema.org’s BreadcrumbList is used to create the item for Data-Vocabulary.org’s Breadcrumb. This item references the a elements via itemref. It reuses the url property (because it’s named the same in both vocabularies) and provides Data-Vocabulary.org’s title property as absolute URI.

<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" itemref="b1 b2">
</div>

<ol itemscope itemtype="http://schema.org/BreadcrumbList">                  

  <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <span itemprop="item" itemscope itemtype="http://schema.org/WebPage">
      <span itemprop="name">
        <a itemprop="url" href="https://example.com/" id="b1">
          <span itemprop="http://data-vocabulary.org/Breadcrumb/title">Home</span>
        </a>
      </span>
    </span>
    <meta itemprop="position" content="1" />
  </li>
 
  <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <span itemprop="item" itemscope itemtype="http://schema.org/WebPage">
      <span itemprop="name">
        <a itemprop="url" href="https://example.com/fashion" id="b2">
          <span itemprop="http://data-vocabulary.org/Breadcrumb/title">Fashion</span>
        </a>
      </span>
    </span>
    <meta itemprop="position" content="2" />
  </li>

</ol>

It works in Google’s SDTT (it should be fine to ignore the warning that Breadcrumb/title is not recognized; it’s specified as absolute URI, so it can be used everywhere).

Whether it works in Bing’s testing tool depends on if Bing recognizes http://data-vocabulary.org/Breadcrumb/title as title property.

As the vocabulary is deleted, I’m not sure if it really was http://data-vocabulary.org/Breadcrumb/title instead of http://data-vocabulary.org/title, but if I remember it correctly, it should have been the first one.

itemref + absolute URIs for Schema.org’s name

Same idea like in the snippet above, but this time Data-Vocabulary.org would be the primary vocabulary, while Schema.org’s BreadcrumbList gets created in an empty div.

This is harder, because Schema.org’s structure requires more properties, so you have to create more empty elements.

<div itemscope itemtype="http://schema.org/BreadcrumbList">

  <div itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <span itemprop="item" itemscope itemtype="http://schema.org/WebPage" itemref="b1">
    </span>
    <meta itemprop="position" content="1" />
  </div>

  <div itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <span itemprop="item" itemscope itemtype="http://schema.org/WebPage" itemref="b2">
    </span>
    <meta itemprop="position" content="2" />
  </div>

</div>

<ol itemscope itemtype="http://data-vocabulary.org/Breadcrumb">                  

  <li itemprop="title">
    <a itemprop="url" href="https://example.com/" id="b1">
      <span itemprop="http://schema.org/name">Home</span>
    </a>
  </li>
 
  <li itemprop="title">
    <a itemprop="url" href="https://example.com/fashion" id="b2">
      <span itemprop="http://schema.org/name">Fashion</span>
    </a>
  </li>

</ol>

It works in Google’s SDTT (it should be fine to ignore the warning that name is not recognized; it’s specified as absolute URI, so it can be used everywhere).

Community
  • 1
  • 1
unor
  • 92,415
  • 26
  • 211
  • 360