I’m new to Microdata and have a problem with itemscope
within a table
.
For example assume I‘ve got a person object and in the table I’m showing Name, Street and City columns.
<table>
<tr itemscope itemtype="http://schema.org/Person">
<td itemprop="name">Name</td>
<td itemprop="streetAddress">123 main</td>
<td itemprop="addressCountry">USA</td>
</tr>
</table>
Note that the streetAddress
and addressCountry
are supposed to be children of an address
property. Yet you can not add a parent div
to group those within the table
.
Further it doesn't appear that dot notation works, e.g. address.streetAddress
.
How would one support this?
There are only rather ugly solutions for this.
You could use the itemref
attribute for the country, but you’d have to add a dummy untyped itemscope
so that the addressCountry
property doesn’t get added to the Person
item:
<table>
<tr itemscope itemtype="http://schema.org/Person">
<td itemprop="name">
Name
</td>
<td itemprop="address" itemscope itemtype="http://schema.org/PostalAddress" itemref="country">
<span itemprop="streetAddress">123 main</span>
</td>
<td itemscope>
<span itemprop="addressCountry" id="country">USA</span>
</td>
</tr>
</table>
You could use itemref
for almost anything, so that you don’t have to add a dummy itemscope
, but the markup gets more complex, and you have to "outsource" the Person
item:
<meta itemscope itemtype="http://schema.org/Person" itemref="person-name person-address" />
<!-- can’t have this as descendant of another Microdata item -->
<table>
<tr>
<td itemprop="name" id="person-name">
Name
</td>
<td itemprop="address" itemscope itemtype="http://schema.org/PostalAddress" id="person-address" itemref="address-country">
<span itemprop="streetAddress">123 main</span>
</td>
<td itemprop="addressCountry" id="address-country">
USA
</td>
</tr>
</table>
Or still have Person
in the table
by adding it to the first td
:
<!-- can’t have this as descendant of another Microdata item -->
<table>
<tr>
<td itemscope itemtype="http://schema.org/Person" itemref="person-address">
<span itemprop="name">Name</span>
</td>
<td itemprop="address" itemscope itemtype="http://schema.org/PostalAddress" id="person-address" itemref="address-country">
<span itemprop="streetAddress">123 main</span>
</td>
<td itemprop="addressCountry" id="address-country">
USA
</td>
</tr>
</table>
来源:https://stackoverflow.com/questions/29684960/microdata-on-tables