如何从 header 中的元标记正确引用微数据项?
How to correctly reference Microdata item from meta tag in header?
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/WebSite">
<head>
<meta itemprop="creator" itemscope itemref="mdFoo">
</head>
<body>
<div id="mdFoo" itemscope itemtype="http://schema.org/LocalBusiness">
<meta itemprop="name" content="Foo comp">
<meta itemprop="telephone" content="0">
<meta itemprop="legalName" content="Foo comp Ltd">
<meta itemprop="url" content="http://www.foo.com">
<meta itemprop="email" content="info@foo.com">
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<meta itemprop="streetAddress" content="mystreet">
<meta itemprop="postalCode" content="1233">
<meta itemprop="addressLocality" content="London">
<meta itemprop="addressCountry" content="UK">
</div>
</div>
</body>
</html>
使用 Google ( https://google.com/webmasters/markup-tester/ ) 验证时:"WebSite is not a valid type."
使用 https://validator.nu/ 得到 "Element meta is missing required attribute content"。
关于如何解决这个问题有什么建议吗?
您必须在要向其添加属性的 itemscope
上指定 itemref
(即您的案例中的 html
元素)。并且具有相应 id
的元素必须获得 itemprop
。
但是,在您的情况下,您不需要 meta
元素,也不需要使用 itemref
:
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/WebSite">
<head>
<title>…</title>
</head>
<body>
<div itemprop="creator" itemscope itemtype="http://schema.org/LocalBusiness">
</div>
</body>
</html>
但假设您在 body
上使用另一个 itemscope
(例如,对于 WebPage
项),在这种情况下您需要使用 itemref
:
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/WebSite" itemref="mdFoo">
<head>
<title>…</title>
</head>
<body itemscope itemtype="http://schema.org/WebPage">
<div itemprop="creator" itemscope itemtype="http://schema.org/LocalBusiness" id="mdFoo">
</div>
</body>
</html>
现在 creator
属性 将应用于两个项目(WebSite
感谢 itemref
,WebPage
因为它是 child).
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/WebSite">
<head>
<meta itemprop="creator" itemscope itemref="mdFoo">
</head>
<body>
<div id="mdFoo" itemscope itemtype="http://schema.org/LocalBusiness">
<meta itemprop="name" content="Foo comp">
<meta itemprop="telephone" content="0">
<meta itemprop="legalName" content="Foo comp Ltd">
<meta itemprop="url" content="http://www.foo.com">
<meta itemprop="email" content="info@foo.com">
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<meta itemprop="streetAddress" content="mystreet">
<meta itemprop="postalCode" content="1233">
<meta itemprop="addressLocality" content="London">
<meta itemprop="addressCountry" content="UK">
</div>
</div>
</body>
</html>
使用 Google ( https://google.com/webmasters/markup-tester/ ) 验证时:"WebSite is not a valid type."
使用 https://validator.nu/ 得到 "Element meta is missing required attribute content"。
关于如何解决这个问题有什么建议吗?
您必须在要向其添加属性的 itemscope
上指定 itemref
(即您的案例中的 html
元素)。并且具有相应 id
的元素必须获得 itemprop
。
但是,在您的情况下,您不需要 meta
元素,也不需要使用 itemref
:
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/WebSite">
<head>
<title>…</title>
</head>
<body>
<div itemprop="creator" itemscope itemtype="http://schema.org/LocalBusiness">
</div>
</body>
</html>
但假设您在 body
上使用另一个 itemscope
(例如,对于 WebPage
项),在这种情况下您需要使用 itemref
:
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/WebSite" itemref="mdFoo">
<head>
<title>…</title>
</head>
<body itemscope itemtype="http://schema.org/WebPage">
<div itemprop="creator" itemscope itemtype="http://schema.org/LocalBusiness" id="mdFoo">
</div>
</body>
</html>
现在 creator
属性 将应用于两个项目(WebSite
感谢 itemref
,WebPage
因为它是 child).