我收到"警告:使用schema.org不完整的微数据".使用Google结构化数据测试工具验证我的页面时.
我定义了这些属性:
我缺少什么想法?我看了,我没有看到任何我想念的东西.
我已经研究了很多关于标记格式Microdata,Microformats和RDFa的信息.谷歌推荐Microdata超过其他两个加价,我想知道原因.阅读大量文件并研究这些标记让我比以前读起来更无能为力.有谁知道谷歌推荐这种类型的原因?它与HTML5有关吗?
这是我从Google获取信息的网站的链接.
谢谢.
keywords来自Schema.org 的属性,因为它以复数形式表示,似乎暗示它的值应该是一行逗号分隔的文本.如下例所示:
<p itemprop="keywords">lorem, ipsum, dolor, sit, amet</p>
Run Code Online (Sandbox Code Playgroud)
这让我想起了<meta name="keywords" content="lorem, ipsum, dolor, sit, amet">我们过去<head></head>因为SEO原因而放置的标签.
但是,从语义学的角度来看,我认为上面的例子是不正确的,因为关键字应该是一个单词列表.因此,应该使用该<ul>元素进行标记.
关于如何使用HTML5和Microdata标记博客文章的关键字,是否存在共识?
我已尝试发布一小段代码并尝试在Google结构化数据测试工具中对此进行测试,但没有显示丰富的代码段.
这是我的意思截图:

这是我使用的代码片段,我直接从Schema.org获取:
<div itemscope itemtype="http://schema.org/Product">
<span itemprop="name">Product name</span>
<div itemprop="aggregateRating"
itemscope itemtype="http://schema.org/AggregateRating">
Rated <span itemprop="ratingValue">5</span>/5
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
任何想法为什么它没有出现在测试工具中?
谢谢,巴乔
我想将schema.org标记添加到产品页面.所以基本上所有页面都包含在:<div itemscope itemtype="http://schema.org/Product">
页面显示我标记的产品名称itemprop="name",它显示我标记的图像itemprop="image"等.
为了标记商品的价格和类别,我使用http://schema.org/Offer.问题是价格和类别显示在网页的不同部分.是否可以使用itemtype=http://schema.org/Offer两次,如下例所示?
<div itemscope itemtype="http://schema.org/Product">
<span itemprop="name">Name of product</span>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<span itemprop="category">animals</span>
</div>
<img itemprop="image" src="#"/>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<span itemprop="price">1000 EUR</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 基本的Microdata应该是这样的:
<div itemscope itemtype="http://schema.org/LocalBusiness">
<a itemprop="url" href="url"><div itemprop="name"><strong>name</strong></div>
</a>
<div itemprop="description">My Description</div>
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">My Address</span><br>
<span itemprop="addressLocality">My City</span><br>
<span itemprop="postalCode">My Zip</span><br>
<span itemprop="addressCountry">My Country</span><br>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但我可以itemscope沿着页面"拆分" 吗?
举一个极端的例子 - 假设我有name一个页面的标题,在页面address的中间,country在页脚.
以这种方式分割数据仍然是有效/有效的吗?或者我总是需要使用群集.
如果拆分有效,究竟如何执行?我只需要重复这样div的事情:
<div itemscope itemtype="http://schema.org/LocalBusiness">
<div itemprop="name"><strong>name</strong></div>
</a>
<div itemprop="description">My Description</div>
</div>
Run Code Online (Sandbox Code Playgroud)
而......
<div itemscope itemtype="http://schema.org/LocalBusiness">
<span itemprop="streetAddress">My Address</span><br>
</div>
Run Code Online (Sandbox Code Playgroud)
而......
<div itemscope itemtype="http://schema.org/LocalBusiness">
<span itemprop="country">My Country</span><br>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我第一次考虑使用Microdata - 而我只是想确保我正确地使用它 - 而且我看不到任何对这种"分裂"的引用. …
<a itemprop="url" href="…"><span itemprop="name">…</span></a>
Run Code Online (Sandbox Code Playgroud)
但是您认为此代码也正确吗?
<li class="menu-home" itemprop="url">
<a href="http://example.com/" title="Home" itemprop="name">Home</a>
</li>
Run Code Online (Sandbox Code Playgroud) 我是Microdata/Schema.org的新手,所以仍然找到我的方法.既然我明白将内容放在关系和引用中,那么将公司的整个网页itemscope添加到body标签中是不是一个好(或坏)的想法?所以你会得到一个像这样的结构:
<body itemscope itemtype="http://schema.org/BarOrPub">
<header>
<img itemprop="logo" src="logo.jpg" alt="Logo" />
<h1 itemprop="name">The Bar</h1>
</header>
<p>Bla bla</p>
<table itemscope itemtype="http://schema.org/OpeningHoursSpecification">
<tr><th itemprop="dayOfWeek">Monday</th><td itemprop="opens">17:00-02:00</td></tr>
<tr><th itemprop="dayOfWeek">Tuesday</th><td itemprop="opens">17:00-02:00</td></tr>
<tr><th itemprop="dayOfWeek">Wednesday</th><td itemprop="opens">17:00-02:00</td></tr>
<tr><th itemprop="dayOfWeek">Thursday</th><td itemprop="opens">17:00-02:00</td></tr>
<tr><th itemprop="dayOfWeek">Friday</th><td itemprop="opens">17:00-02:00</td></tr>
</table>
<p>Bla bla</p>
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">straatnaam huisnummer</span>
<span itemprop="addressLocality">Plaats</span>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
如果这是一个好主意,我可以itemtype像上面那样使用"OpeningHoursSpecification",还是我需要让它成为一个孩子itemprop?
我想知道使用片段标识符格式引用实体是否更好/适当 - 基本上是通过在名称前插入哈希
[url] + # + [name] => http://example.com/page/#webPage
编辑:
根据来自慷慨和伟大的@Unor的回复,我添加了这个编辑以试图限制我的查询范围并澄清我遇到的主要问题.我还删除了大部分原始问题(大约95%)(事后看来)我觉得有缺点:1.我的核心问题; 2.对未来读者的好处.
这是我的问题:
在微数据的itemid和json-ld的@id值开始时手动键入哈希的做法是否有效?
以下是我更详细的问题:
我可以在微数据的itemid值和json-ld的@id值中插入HASH符号(#),以便通过正确有效地使用片段标识符来创建有效的结果URI吗?
所以,如果这是在网页上:
<div itemscope itemtype="http://www.schema.org/Person" itemid="#joe"></div>
Run Code Online (Sandbox Code Playgroud)
或者,如果这也在网页上:
{"@context":"http://schema.org",
"@type":"Person",
"@id":"#Joe"}
Run Code Online (Sandbox Code Playgroud)
我知道他们会被读到这样的uri(假设消费者的相对构造是谷歌的结构化数据测试工具):
http://www.example.com/page#joe
Run Code Online (Sandbox Code Playgroud)
那是uri:
有效的uri; 和
是否正确使用片段标识符(HASH)?
我尝试在我的代码中标记一个小部分,NewsArticle但我无法让它验证.
如果我这样做
<div itemscope itemprop="publisher" itemtype="https://schema.org/Organization">
<span itemprop="name">My Company</span>
</div>
Run Code Online (Sandbox Code Playgroud)
验证者抱怨说没有logo.
如果我添加logo这样的
<div itemscope itemprop="publisher" itemtype="https://schema.org/Organization">
<img itemprop="logo" src="https://www.mysite.de/resources/assets/71/small/my_logo_web.png" />
<span itemprop="name">My Company</span>
</div>
Run Code Online (Sandbox Code Playgroud)
验证器抱怨该属性包含无效值.我在这做错了什么?
microdata ×10
schema.org ×8
html5 ×3
html ×1
iri ×1
json-ld ×1
microformats ×1
rdfa ×1
serp ×1
uri ×1