html5 - org - microdata html
Microdatos HTML5-itemref a otro itemscope(Persona trabaja para OrganizaciĆ³n) (2)
El sitio web de una organización, digamos "Sun Industries", desea agregar una lista de empleados. La dirección y la información de contacto de la organización ya están presentes en la página web, pero la lista de empleados estaría en otro lugar.
Entonces tenemos
<div id="organization" itemscope itemtype="http://schema.org/Organization">
<span itemprop="name">Sun Industries</span>,
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">Technologies Street 42</span>,
<span itemprop="addressLocality">Venustown</span>
<span itemprop="postalCode">98765</span>
</span>
</span>
</div>
y más adelante en el código HTML5 tendremos
<div id="employee-1" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
</div>
¿Cómo vinculamos los dos objetos "organización" y "empleado-1" juntos?
Intenté agregar el siguiente elemento secundario al objeto "employee-1"
<meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" itemref="organization">
pero eso no funcionó (al menos no en la herramienta de prueba de datos estructurados de Google).
¿Cómo puedo usar correctamente la propiedad de microdatos en este caso?
Para que quede claro, también intenté lo siguiente:
- Agregue
itemprop="worksFor"
al objeto "organización". - Agregue
itemref="organization"
al objeto "empleado".
Asi que
<div id="organization" itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
<span itemprop="name">Sun Industries</span>,
...
</div>
...
<div id="employee-1" itemscope itemtype="http://schema.org/Person" itemref="organization">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
</div>
pero eso me dio una Warning: Page contains property "worksfor" which is not part of the schema.
para el objeto "organización".
Bueno, en realidad su último fragmento de código se ve bien. Tal vez con Yandex Validator la salida será más clara
person
itemType = http://schema.org/Person
worksfor
organization
itemType = http://schema.org/Organization
name = Sun Industries
name = John Doe
jobtitle = Sales Manager
Un par de otros ejemplos de trabajo.
<body>
<div id="organization" itemscope itemtype="http://schema.org/Organization" itemref="employee-1">
<span itemprop="name">Sun Industries</span>,
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">Technologies Street 42</span>,
<span itemprop="addressLocality">Venustown</span>
<span itemprop="postalCode">98765</span>
</span>
</span>
</div>
<div id="employee-1" itemprop="employee" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
</div>
</body>
Da lo siguiente:
organization
itemType = http://schema.org/Organization
employee
person
itemType = http://schema.org/Person
name = John Doe
jobtitle = Sales Manager
name = Sun Industries
location
place
itemType = http://schema.org/Place
address
postaladdress
itemType = http://schema.org/PostalAddress
streetaddress = Technologies Street 42
addresslocality = Venustown
postalcode = 98765
O esto
<body>
<div id="employee-1" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
<meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" itemref="organization">
</div>
<div id="organization">
<span itemprop="name">Sun Industries</span>,
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">Technologies Street 42</span>,
<span itemprop="addressLocality">Venustown</span>
<span itemprop="postalCode">98765</span>
</span>
</span>
</div>
</body>
Eso resulta en
person
itemType = http://schema.org/Person
name = John Doe
jobtitle = Sales Manager
worksfor
organization
itemType = http://schema.org/Organization
name = Sun Industries
location
place
itemType = http://schema.org/Place
address
postaladdress
itemType = http://schema.org/PostalAddress
streetaddress = Technologies Street 42
addresslocality = Venustown
postalcode = 98765
Spec no es muy claro sobre el uso de itemref pero el ejemplo ayuda
<div itemscope id="amanda" itemref="a b"></div>
<p id="a">Name: <span itemprop="name">Amanda</span></p>
<div id="b" itemprop="band" itemscope itemref="c"></div>
<div id="c">
<p>Band: <span itemprop="name">Jazz Band</span></p>
<p>Size: <span itemprop="size">12</span> players</p>
</div>
Tu último ejemplo es correcto.
(La herramienta de prueba de Google ya no proporciona el error mencionado. En aquel entonces, probablemente no estaban actualizados con las nuevas incorporaciones al vocabulario de Schema.org).
Especificación
Enlaces a las especificaciones de itemref
:
tl; dr :
- Especifica
itemref
en el elemento (conitemscope
) al que desea agregar propiedades. - Usted especifica
id
en el elemento (conitemprop
) que desea agregar.
Ejemplos
Un ejemplo mínimo:
<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" id="org">
<!-- this property (worksFor) gets added to the Person item below -->
</div>
<div itemscope itemtype="http://schema.org/Person" itemref="org">
<!-- looks for the element with the ID "org" -->
</div>
Esto es equivalente a:
<div itemscope itemtype="http://schema.org/Person">
<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
</div>
</div>
Otros ejemplos:
- agregando
meta
elementos de lahead
- agregar la propiedad especificada en el elemento del
body
a los elementos que son hijos de esebody
- agregar un
Event
a unaAction
- agregar una propiedad de
name
de un elemento secundario al elemento principal - agregar una propiedad que es un elemento secundario de un elemento
Offer
a la partidaProduct
principal en lugar de laOffer
- añadiendo
breadcrumb
aWebPage
- agregando el
Hotel
como unabranchOf
unaOrganization
- agregando varios productos relacionados a un
Product
- agregando el
Product
a unaOffer
- dos ejemplos de elementos de
Event
relacionados: ya sea a través desuperEvent
o mediantesubEvent
A tener en cuenta
El atributo
itemref
solo se puede usar para elementos en el mismo documento.Puede hacer referencia a múltiples elementos desde un atributo
itemref
(separar los tokens de ID con caracteres de espacio).El elemento al que se hace referencia puede ser un contenedor para propiedades múltiples.
Debes asegurarte de que los elementos a los que se hace referencia no son hijos de un elemento con
itemscope
, de lo contrario sus propiedades también se agregarán a este elemento (pero puedes eludir esto agregando unitemscope
ficticio ).