首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Schema.org SiteNavigationElement标记

Schema.org SiteNavigationElement标记
EN

Webmasters Stack Exchange用户
提问于 2014-03-02 07:58:38
回答 3查看 8.6K关注 0票数 3

Schema.org SiteNavigationElement是否应该像这样构造

代码语言:javascript
复制
<div itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <ul>
        <li itemprop="url"><a href="#" itemprop="name">Link 1</a>
    </ul>
</div>

或者像这样?

代码语言:javascript
复制
<div itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <ul>
        <li>
            <a href="#" itemprop="url"><span itemprop="name">Link 1</span></a>
        </li>
    </ul>
</div>
EN

回答 3

Webmasters Stack Exchange用户

回答已采纳

发布于 2014-03-02 20:45:05

你的问题似乎是:

  • 我可以在itemprop="url"上指定li吗?
  • 我可以在itemprop="name"上指定a吗?

这两个问题的答案是:不,你不应该这样做。微数据为以下元素定义了特殊的解析规则a

URL的url属性需要一个URL作为值。微数据定义您必须使用a/area/link/etc. (本质上,具有srchref属性的任何元素)之类的元素来指定URL。在第一个示例中,url属性的值不是URL,而是文本"Link 1“。

因为a元素上的属性(如果它们具有href属性)总是以href内容(而不是元素内容)作为值,所以您的第一个示例将把URL作为name属性的值(当然,它需要文本,而不是URL )。

所以:你的第一个例子会产生错误的结果。第二个例子很好。

注意,还可以省略span元素。而不是

代码语言:javascript
复制
<li>
  <a href="#" itemprop="url"><span itemprop="name">Link 1</span></a>
</li>

你可以用

代码语言:javascript
复制
<li itemprop="name">
  <a href="#" itemprop="url">Link 1</a>
</li>

(关于堆栈溢出的问题,请参见我同样的回答。)

票数 5
EN

Webmasters Stack Exchange用户

发布于 2015-09-28 13:35:48

根据搜索引擎土地的说法,应该是这样的:

代码语言:javascript
复制
<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <li itemprop="name">
        <a itemprop="url" href="#">Link 1</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="#">Link 2</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="#">Travel Resources</a>
    </li>
</ul>
票数 2
EN

Webmasters Stack Exchange用户

发布于 2014-03-02 15:26:30

SiteNavigationElement对我和其他一些人都有问题,就像我们可以在@bybe的评论中看到的那样。我们可以说,问题是缺乏范围。

SiteNavigationElement是指导航系统的单个项,因此它被读为:站点导航的一个元素。或者它是指整个导航系统,因此它被读为:站点的导航元素

代码语言:javascript
复制
<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <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>
    </body>
</html>

这有点复杂,因为不仅将导航系统的每个成员视为一个值得标记的元素,还需要一个组合语法,使用additionalType来传达这样的想法,即这些链接是属于某物的项目列表。

更新

我已经将这个答案上的代码修改成上面的版本,以适应一种作为微数据和HTML来工作和验证的方法。在这个问题的版本历史中,您可以看到我早期使用的选项。我换了那些密码是因为

  • 我在第一部分中出现了一个错误,使用了一个类型应该在其中的属性。尽管结构化数据测试工具没有错误地验证了它
  • HTML选项验证得很好,但正如我提到的,实现该选项的方法打破了只读取最后一项的微数据解析方法。
  • 在发出此消息时,似乎没有一种方法可以在单个项目类型上有两种类型。这可以在W3C WebSchemas/additionalTypeProposal上进行检查,尽管自2013年5月以来就没有更新过。
票数 1
EN
页面原文内容由Webmasters Stack Exchange提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webmasters.stackexchange.com/questions/58926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档