Ayrılan Mikro Verileri <div> birbirine bağlamak mı?


11

Schema.org anlamsal işaretlemeleri ekliyorum ve bunların birçoğu web sayfasının birbirinden oldukça farklı kısımlarında birbirine bağlamak istiyorum.

Bunları ebeveyn / çocuk olarak belirttiğimde çalışır :

<div itemscope itemtype="http://schema.org/ExerciseAction">
  <span itemprop="distance">11 km</span>
  <div itemprop="event" itemscope itemtype="http://schema.org/Event">
      <span itemprop="name">first event</span>
      <span itemprop="startDate">2001-01-01</span>
  </div>
</div>

Ancak, HTML dağıyla ayrıldıklarında onları nasıl bağlayacağımı bilmiyorum:

<div itemscope itemtype="http://schema.org/Event">
      <span itemprop="name">some event</span>
      <span itemprop="startDate">2002-02-02</span>
</div>

<!-- 
   ....
   zillion other HTML stuff
   ...
 -->

<div itemscope itemtype="http://schema.org/ExerciseAction">
      <span itemprop="distance">22 km</span>
</div>

Sanırım ilgili konuları bağlamak için "itemref" ya da başka bir şey kullanmalıyım, ama işe yarayamıyorum. Benzer sorulara bakmak bu durumda yardımcı olmadı.

GÜNCELLEME: özellikle bir tür referansla çalışan ve herhangi bir tür yuvalama yoluyla ÇALIŞMAZ ÇÖZÜM aradığımı unutmayın. Ayrıca, ikinci (çalışmayan) örneğin sıralaması aynı kalmalıdır (İlk önce Etkinlik, ExerciseAction ikinci). (Kontrolüm dışında bunun birkaç nedeni var).

Özellikle, "çalışır" öğelerin birbirine bağlandığını gösteren en azından google zengin snippet aracı olarak tanımlanır (ilk çalışan örnekte olduğu gibi)

Yanıtlar:


9

itemrefÖzniteliği kullanabilirsiniz .

Gönderen Mikro veri ( W3C Çalışma Grubu Not spec):

  • 4.2 Temel sözdizimi :

    itemscopeÖzniteliğe sahip öğenin torunları olmayan özellikler, itemreföznitelik kullanılarak öğeyle ilişkilendirilebilir. Bu öznitelik, öğenin alt öğelerini öznitelikle taramaya ek olarak, taranacak öğelerin kimliklerinin bir listesini alır itemscope.

  • 5.2 Kalemleritemref ::

    Bir ile Elemanları itemscopeözniteliği bir olabilir itemreföğenin ad-değer çiftleri bulmak için taramasına ek öğelerin listesini vermek, belirtilen özellik.


EDIT : Bu, soruda belirtilen gereksinimlere göre çalışmalıdır:

<div itemprop="event" itemscope itemtype="http://schema.org/Event" id="event001">
  <span itemprop="name">first event</span>
  <span itemprop="startDate">2001-01-01</span>
</div>

<!-- zillion other HTML stuff -->

<div itemscope itemtype="http://schema.org/ExerciseAction" itemref="event001">
  <span itemprop="distance" id="entfernung">11 km</span>
</div>

DÜZENLEME 2 (başına ek gereksinimi ): Bir ana elemanı başka bir öğe belirtirse (örneğin bir WebPageon body), yukarıdaki çözüm çalışmaları daha sonra olmadığından eventözellik de için de geçerli olacak WebPagedoğru olmaz, hangi.

Bunun için düzgün bir çözüm yok.

Çirkin bir düzeltme, öğesinin üstü olarak başka bir öğe (ile itemscope) ancak herhangi bir tür olmadan (olmadan itemtype) eklenir Event. Bu şekilde, eventmülk bu türlenmemiş öğeye uygulanır WebPage.

<body itemscope itemtype="http://schema.org/WebPage">

  <div itemscope> <!-- dummy item -->
    <div itemprop="event" itemscope itemtype="http://schema.org/Event" id="event001">
      <span itemprop="name">first event</span>
      <span itemprop="startDate">2001-01-01</span>
    </div>
  </div>

  <!-- zillion other HTML stuff -->

  <div itemscope itemtype="http://schema.org/ExerciseAction" itemref="event001">
    <span itemprop="distance" id="entfernung">11 km</span>
  </div>

</body>

Yukarıda verilen işe yarayacak bir örnek verebilir misiniz? Saatlerce denedim ve işe almak için başaramadım (örneğin google zengin snippet'ler aracı üzerinde doğrulama ). Tek yapabileceğim, başka bir itemcope'ta çoğaltılan ve aynı ada sahip başka bir isim = değer çifti içermesi - benzer soruda belirtildiği gibi ; ama başka bir
itemcope eklemeyi başaramadım

@MatijaNalis: Parçacığı cevabıma ekledim.
ya da

Teşekkürler, neredeyse tam olarak aradığım şey buydu! Bu basitleştirilmiş bağımsız HTML örneğinde istendiği gibi bunları birbirine bağlar. Ne yazık ki, google zengin snippet'leri aracı , şemanın parçası olmayan "Hata: Sayfa özelliği" olayı "ile daha karmaşık bir örnekte hata veriyor. (tüm sayfanın daha fazla
div bölümü vardır

Bunu nasıl düzeltebileceğine dair bir fikrin var mı? Çıkarma itemprop "olayı" = schema.org/Event yardım o ... sonra bir araya itemscopes bağlantı vermiyor gibi değil itibaren
Matija Nalis

@MatijaNalis: Başka bir pasaj ekledim, ancak bu muhtemelen bu sorunu çözmez. Sanırım üst WebPageişaretlemeyi ayırmanız ve itemreforada da kullanmanız gerekir , böylece (ilgisiz) öğe türlerini alt öğe olarak içermez. Muhtemelen başka bir soru olmalı.
ya da

1

Sorunuzu doğru anlarsam, bu div'i kapatmayın.

<div itemscope itemtype="http://schema.org/Event">
  <span itemprop="name">some event</span>
  <span itemprop="startDate">2002-02-02</span>


<!-- ....zillion other HTML stuff... -->

    <div itemscope itemtype="http://schema.org/ExerciseAction">
      <span itemprop="distance">22 km</span>
    </div>
</div>

Eşleşen etiket bulunmadığı sürece, bu ilk div'in içindeki her ne varsa, o ilk div'in, bu durumda bir Etkinlik'in parçası olarak kabul edilir.


Ne yazık ki, hiçbir tür iç içe kullanamıyorum (orijinal, çok daha karmaşık projede, her biri HTML yapısı kapatılması gereken oldukça farklı alt şablonlarda) veya sıralamayı değiştiremiyorum (diğer şeylerin yanı sıra nedenleri göster). Soruyu açıklığa kavuşturmak için güncelledim. Ayrıca, ExerciseAction öğesinin Etkinlik olarak alt öğe olamayacağı (yalnızca tersi mümkün olabilir) ve bu nedenle bunları birbirine bağlamak için itemprop gerekli olmadığından yanıtınızın doğrulanmayacağını unutmayın .
Matija Nalis

@MatijaNalis Doğrulamamasının tek nedeni, sorunuzda verdiğiniz metni kopyalamamdı. Hata, etkinliğin geçmişte başlayacak şekilde ayarlanması nedeniyle oluşur, 2002-02-02. Gelecekteki bir tarihe güncellendiğinde çalışır. Ayrıca, artık herhangi bir tür iç içe yerleştirme istemediğinizi gösteren sorunuzu güncellediğinizi biliyorum, ancak orijinal "Etkinlik" için girdiğiniz verilerin ikinci kısmı " ExerciseAction "div, yine de çalışır. Örneğin, "startDate" i cevabımdan "ExerciseAction" kapanış div öğesinin sonrasına taşıyın ve çalışmaya devam eder.
Rise Against

1

@Guisasso doğru değil, sadece elemanı kapatmayın. Ancak başka bir notta, sadece DIV öğeleri içinde şema kullanmak ve önerildiği gibi açıklıkları kullanmakla sınırlı değilsiniz (sadece örnekler). Tüm sayfa etkinlikle ilgili konularla ilgiliyse ve bu site genelinde ise, şemanın açılması ve kapanmasıyla otomatik olarak ilgilenen şablonunuz varsa, gövde öğesini kullanmak daha mantıklı olabilir. Bu şekilde, makaleleriniz şablon ayarlarken bu içeriği doldurur.

Örneğin:

<body itemscope itemtype="http://schema.org/Event">
   <article>
       <h1 itemprop="name">Some Event</h1>
       <span itemprop="startDate">2002-02-02</span>
       <p itemprop="description">I am the super awesome event infromation</p>
       <div itemscope itemtype="http://schema.org/ExerciseAction">
           <span itemprop="distance">22 km</span>
       </div>
   </article>
</body>

Veya HTML5 kullanıyorsanız MAINveya ARTICLEöğesinde kullanabilirsiniz .


Guisasso'nun yorumuna bakın, cevabınız aynı nedenlerle çalışmıyor. Sorularımı ihtiyaçlarımı netleştirmek için güncelledim.
Matija Nalis

1

Ayrıca aşağıdaki gibi kullanılabilen extraType özelliği için çalıştım

<div itemscope itemtype="http://schema.org/Event">
      <span itemprop="name">some event</span>
      <span itemprop="startDate">2002-02-02</span>


<!-- 
   ....
   zillion other HTML stuff
   ...
 -->

  <div itemprop="additionalType" itemscope itemtype="http://schema.org/ExerciseAction">
      <span itemprop="distance">22 km</span>
  </div>
</div>

Bu benim birincil sorunuma yardımcı olurken (ExerciseAction / Event çocuk-ebeveyn ilişkisini yeniden sıralayamamak), diğer sorunlara yardımcı olmaz (bu div'leri iç içe koyamaz) ve bir çeşit kludgy ( orijinal çalışma örneğiyle aynı semantik). Bununla birlikte, bağlantı için amaçlanmış öğeleri olmayan schema.org öğe türlerinin bağlanmasına izin verdiği için yararlıdır, böylece örneğin BookE SportsEvent'e veya her neyse bağlantı verebilirsiniz.

Bana gerçekten yardım etmediği için, benzer bir sorunu olan birisine yardımcı olması durumunda kendime cevap veriyorum (daha iyi bir şey gelmezse son hendek tesisi olabilir)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.