如何在<figure>和<figcaption>中正确使用Microdata?Event代码遇地址报错
Event类型Microdata的“地址需要值”错误及figure/figcaption的正确用法 我来帮你搞定这个问题!你遇到的“地址需要值”错误,核心原因是你使用了schema.org的Event类型Microdata,但没有提供该类型要求的必填地址信息。schema.org对Event类型的定义里,address或location是必填属性,你的现有代码只添加了url和image,完全缺失这部分内容,所以校验工具会抛出错误。
同时,我会结合figure和figcaption标签,给你演示如何正确组织Microdata结构,既符合HTML语义,又满足结构化数据的要求。
错误修复+正确示例代码
首先,补全Event类型必填的地址信息,同时把figure/figcaption融入Microdata结构:
<section class="content col-sm-4 mx-auto" id="germination" itemscope itemtype="http://schema.org/Event"> <a itemprop="url" href="http://mevocals.weebly.com/germination.html"> <figure> <!-- 事件海报图片,关联到Event的image属性 --> <img itemprop="image" class="img-fluid rounded" src="https://freedomfieldme.net/images/germinationPoster_02.png" alt="Germination poster of Freedom Field Cannabis Friendly camping..." /> <figcaption> <!-- 事件名称,必填属性 --> <h4 itemprop="name">Freedom Field Germination Campout</h4> <!-- 结构化地址:推荐用PostalAddress类型,更利于搜索引擎解析 --> <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="streetAddress">456 Campground Road</span><br> <span itemprop="addressLocality">Portland</span>, <span itemprop="addressRegion">ME</span> <span itemprop="postalCode">04101</span> </div> <!-- 可选:添加事件时间,丰富结构化数据 --> <p>时间:<time itemprop="startDate" datetime="2024-08-01T09:00">2024年8月1日 上午9点</time></p> </figcaption> </figure> </a> </section>
关键知识点说明
必填属性补全:
Event类型必须包含address(或location,如果是关联Place类型),你可以选择两种方式:- 像示例里的结构化
PostalAddress,提供街道、城市、州等细分信息; - 简化版:直接用字符串地址
<span itemprop="address">456 Campground Road, Portland, ME 04101</span>,适合不需要细分地址的场景。
- 像示例里的结构化
figure/figcaption的语义化结合:figure用于包裹媒体内容(这里是事件海报)和对应的说明,figcaption作为说明容器,完美承载事件名称、地址等结构化数据内容,同时继承外层section的itemscope(即所有内部的itemprop都属于这个Event实例)。语法细节修正:
你原代码里的<img>标签没有闭合,这会导致HTML语法错误,也可能影响Microdata的解析,记得补充闭合标签/>。
备选方案:如果不需要Event类型
如果你只是想标记图片和说明,而非事件信息,可以改用ImageObject类型,这样就不需要地址属性了:
<figure itemscope itemtype="http://schema.org/ImageObject"> <a itemprop="contentUrl" href="http://mevocals.weebly.com/germination.html"> <img itemprop="thumbnailUrl" class="img-fluid rounded" src="https://freedomfieldme.net/images/germinationPoster_02.png" alt="Germination poster of Freedom Field Cannabis Friendly camping..." /> </a> <figcaption itemprop="caption">Freedom Field Cannabis Friendly露营活动海报:Germination</figcaption> </figure>
最后,建议用主流的结构化数据校验工具验证你的代码,确保所有必填属性都已正确添加,避免类似错误。
内容的提问来源于stack exchange,提问作者user1692229

