2012-06-19 6 views
8

Meine Entwickler codierten eine Liste der Produkte mit Hilfe von HTML-Tabellen verstreut zu identifizieren. Der Code kam in etwa so aus:Microdata ItemID Elemente in einer HTML-doc/HTML-Tabellen

<table> 
<tr class="name"> 
<td>Product Name #1</td><td>Product Name #2</td><td>Product Name #3</td> 
</tr> 
<tr class="price"> 
<td>Product Price #1</td><td>Product Price #2</td><td>Product Price #3</td> 
</tr> 
<tr class="brand"> 
<td>Product Brand #1</td><td>Product Brand #2</td><td>Product Brand #3</td> 
</tr> 
</table> 

Sie bekommen die Idee. Optisch sieht es perfekt aus, aber wenn ich versuche, über schema.org zu markieren, stoße ich auf Probleme, da die Produkteigenschaften nicht existieren, sind ordentlich verschachtelte HTML-Elemente, sind aber über die Tabelle verteilt. Wäre es möglich, das ItemID Microdata-Attribut zu verwenden, um sicherzustellen, dass jede Marke und jeder Preis mit dem richtigen Produktnamen verknüpft ist?

Etwas wie:

<tr class="name"> 
<td itemscope itemtype="http://www.schema.org/Product" itemID="Product1">Product Name #1</td> 
<td itemscope itemtype="http://www.scema.org/Product" itemID="Product2">Product Name #2</td> 

etc., etc. Irgendwelche Gedanken? Muss ich die Seiten neu codieren, damit dies funktioniert?

Antwort

6

Ja, itemid ist der richtige Weg, dies zu tun. Ihr Beispiel würde wie folgt aussehen:

<table> 
    <tr class="name"> 
    <td itemscope itemtype="http://www.schema.org/Product" itemid="Product1"> 
     <span itemprop="name">Product Name #1</span> 
    </td> 
    <td itemscope itemtype="http://www.schema.org/Product" itemid="Product2"> 
     <span itemprop="name">Product Name #2</span> 
    </td> 
    </tr> 
    <tr class="price"> 
    <td itemscope itemtype="http://www.schema.org/Product" itemid="Product1"> 
     <div itemprop="offers" itemscope itemtype="http://schema.org/Offer"> 
     <span itemprop="price">Product Price #1</span> 
     </div> 
    </td> 
    <td itemscope itemtype="http://www.schema.org/Product" itemid="Product2"> 
     <div itemprop="offers" itemscope itemtype="http://schema.org/Offer"> 
     <span itemprop="price">Product Price #2</span> 
     </div> 
    </td> 
    </tr> 
</table> 

Durch Wiederverwendung des gleichen itemid, Sie sagen den Mikrodaten-Parser, den Sie sprechen über das gleiche Element in verschiedenen Teilen der Seite.

+0

mit [ 'itemid'] (http://www.w3.org/TR/2013/NOTE-microdata-20131029/# attr-itemid) "muss einen Wert haben, der eine gültige URL ist". – unor

+0

@unor relative URLs sind gültige itemids –

+0

Ah, das stimmt. – unor

6

Eigentlich wäre itemid nicht der richtige Weg, dies zu tun. Im Gegensatz zu RDF verbindet das Mikrodatenanalysemodell keine Objekte, die dieselbe Objekt-ID haben.

Stattdessen sollten Sie die itemref Attribut verwenden.

Zum Beispiel:

<div itemscope itemtype="http://schema.org/Product" itemref="foo"></div> 
<div id="foo" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> 
    <span itemprop="price">Product Price #1</span> 
</div> 

Sie können Mikrodaten testen http://foolip.org/microdatajs/live/