我尝试了一个简单的示例,但是当我使用Google Structured Data Testing Tool对其进行测试时,SiteNavigationElement
无效。它给出了错误:
SiteNavigationElement
不是additionalType
属性的已知有效目标类型。
微观数据:
<div itemscope itemtype="http://schema.org/WebPageElement">
<link itemprop="additionalType" href="http://schema.org/ItemList" />
<meta itemprop="name" content="navigation_menu" />
<ul>
<li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<span itemprop="itemListElement">
<a href="http://www.example.com/link_1" itemprop="url">
<span itemprop="name">Link 1</span>
</a>
</span>
</li>
<li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<span itemprop="itemListElement">
<a href="http://www.example.com/link_2" itemprop="url">
<span itemprop="name">Link 2</span>
</a>
</span>
</li>
</ul>
</div>
答案 0 :(得分:1)
additionalType
属性不应该用于创建另一个项目(使用itemscope
+ itemtype
进行处理)。它的工作是提供其他类型的URI,因此URI本身就是值。
您似乎想在导航中标记每个链接。这不是SiteNavigationElement
(can only be used to mark up the whole navigation所允许的,因此它是typically useless)。
可以使用ItemList
,您可以SiteNavigationElement
作为additionalType
(但我不希望任何消费者使用此功能):
<div itemscope itemtype="http://schema.org/ItemList">
<link itemprop="additionalType" href="http://schema.org/SiteNavigationElement" />
<ul>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/WebPage">
<a href="/link-1" itemprop="url"><span itemprop="name">Link 1</span></a>
</li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/WebPage">
<a href="/link-2" itemprop="url"><span itemprop="name">Link 2</span></a>
</li>
</ul>
</div>
或者作为实际的MTE(没有additionalType
):
<div itemscope itemtype="http://schema.org/ItemList http://schema.org/SiteNavigationElement">
<ul>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/WebPage">
<a href="/link-1" itemprop="url"><span itemprop="name">Link 1</span></a>
</li>
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/WebPage">
<a href="/link-2" itemprop="url"><span itemprop="name">Link 2</span></a>
</li>
</ul>
</div>
答案 1 :(得分:0)
与@unor的上述MTE示例相同,但JSON-LD中除外。 (如果列表中有ID,则可以使用它们。)
<script type="application/ld+json">
{
"@context":"http://schema.org",
"@type":["ItemList", "SiteNavigationElement"],
"@id": "https://example.com/#nav",
"url":"https://example.com/#nav",
"itemListElement":[
{
"@type":"WebPage",
"position":1,
"name": "home",
"@id": "https://example.com/#home",
"url":"https://example.com/home.html"
},
{
"@type":"WebPage",
"position":2,
"name": "Core Solutions",
"@id": "https://example.com/#core",
"url":"https://example.com/core.html"
}
]
}
</script>