Sobre este problema HTML
Microdata é uma especificação HTML que lhe permite incorporar dados legíveis por máquina no seu conteúdo usando três atributos principais: itemscope, itemtype, e itemprop. O atributo itemscope cria um novo item (um grupo de pares nome-valor), itemtype especifica que tipo de coisa o item é (usando um URL de vocabulário como Schema.org), e itemprop define propriedades individuais dentro desse item. Estes atributos funcionam em conjunto — itemprop só faz sentido no contexto de um itemscope.
Quando o validador encontra um atributo itemprop num elemento que não é descendente de qualquer elemento com itemscope, não tem forma de associar essa propriedade com um item. A propriedade fica essencialmente órfã. Isto é um problema por várias razões:
-
Motores de busca não conseguem usar os dados. Consumidores de dados estruturados como Google, Bing, e outros crawlers dependem da hierarquia
itemscope/itemproppara compreender o seu conteúdo. Umitempropórfão é ignorado ou mal interpretado. -
Conformidade com padrões. O padrão HTML living standard do WHATWG requer que um elemento com
itempropdeve ser uma propriedade de um item — significando que deve ter um ancestral comitemscope, ou ser explicitamente referenciado através do atributoitemrefnum elementoitemscope. -
Problemas de manutenção. Atributos
itempropórfãos sugerem que a marcação circundante foi refatorizada e a estrutura microdata foi acidentalmente quebrada.
As causas mais comuns deste erro são:
-
itemscopeem falta — Você adicionou atributositempropmas esqueceu-se de definir o item contentor comitemscope. -
Elementos movidos — Um elemento com
itempropfoi movido para fora do seu contentoritemscopeoriginal durante uma refatorização. -
Erros de copiar-colar — Você copiou um excerto que incluía
itempropmas não oitemscopepai.
Para corrigir o problema, envolva os elementos itemprop dentro de um contentor itemscope, use itemref para associar propriedades distantes com um item, ou remova o atributo itemprop se dados estruturados não forem pretendidos.
Exemplos
Incorreto: itemprop sem itemscope
Isto desencadeia o erro de validação porque não há ancestral itemscope:
<div>
<p>O meu nome é <span itemprop="name">Liza</span>.</p>
</div>
Correto: itemprop dentro de um contentor itemscope
Adicionar itemscope (e opcionalmente itemtype) a um elemento ancestral corrige o problema:
<div itemscope itemtype="https://schema.org/Person">
<p>O meu nome é <span itemprop="name">Liza</span>.</p>
</div>
Correto: itens aninhados com o seu próprio scope
Quando um item contém um sub-item, o item aninhado precisa do seu próprio itemscope:
<div itemscope itemtype="https://schema.org/Person">
<p itemprop="name">Liza</p>
<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
<span itemprop="addressLocality">Portland</span>,
<span itemprop="addressRegion">OR</span>
</div>
</div>
Correto: usar itemref para propriedades fora do scope
Se não consegue reestruturar o seu HTML para aninhar itemprop dentro de itemscope, use itemref para referenciar elementos pelos seus id:
<div itemscope itemtype="https://schema.org/Person" itemref="user-name"></div>
<p id="user-name">
O meu nome é <span itemprop="name">Liza</span>.
</p>
Neste caso, o elemento itemprop="name" não é descendente do elemento itemscope, mas o atributo itemref="user-name" puxa explicitamente a árvore do elemento referenciado para o item, tornando-o válido.
Incorreto: scope quebrado após refatorização
Um cenário comum do mundo real onde o erro aparece após reestruturação:
<div itemscope itemtype="https://schema.org/Product">
<span itemprop="name">Widget</span>
</div>
<!-- Isto foi movido para fora da div acima -->
<span itemprop="price">9.99</span>
Corrija isto movendo o elemento de volta para dentro do contentor itemscope, usando itemref, ou removendo o itemprop órfão.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.
Saiba mais: