使用HTML5和Microdata标记博客文章"关键字"的正确方法?

Ian*_* Y. 4 html5 semantic-markup microdata schema.org

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标记博客文章的关键字,是否存在共识?

uno*_*nor 8

更新: Schema.org keywords属性的定义已更改.现在它清楚地表明它需要多个标签,并且它们通常应该以逗号分隔.

tl; dr:如果你想ul为你的标签使用一个元素,使用Schema.org的keywords属性可能在Microdata中看起来像这样:

<article itemscope itemtype="http://schema.org/BlogPosting">

  <footer>
    <ul itemprop="keywords">
      <li><a href="/tags/foo" rel="tag">foo</a>,</li>
      <li><a href="/tags/bar" rel="tag">bar</a></li>
    </ul>
  </footer>

</article>
Run Code Online (Sandbox Code Playgroud)

如果像这样使用它,你必须确保不ul包含其他非标记文本.


HTML

meta具有该name值的元素keywords提供了一种指定适用于整个页面的关键字的方法.这些关键字仅包含文本,因此您无法使用URI.

因此,对于典型的博客标签,您可以采用以下方式(可能除了meta- keywords).

链接类型

HTML5定义了链接类型tag:

tag关键字指示标签所引用的文件是适用于当前文档.

请注意,此链接类型只能用于单个帖子页面,因为标记始终适用于整个页面.

(注意:tag也是Microformat,但它有不同的定义:您只能为Microformat使用特制的URL tag.)

如果您的标签更像是类别(受控词汇表而不是免费标记),您可以使用链接类型category(可能与之结合使用tag).

标记的标记

您可以使用uldl:

<ul>
  <li><a href="/tags/foo" rel="tag">foo</a></li>
  <li><a href="/tags/bar" rel="tag">bar</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
<dl>
  <dt>Tags</dt>
  <dd><a href="/tags/foo" rel="tag">foo</a></dd>
  <dd><a href="/tags/bar" rel="tag">bar</a></dd>
</dl>
Run Code Online (Sandbox Code Playgroud)

dl当你还要列出其他元数据时,我会选择,例如作者,出版日期等.

当然,div带逗号分隔a元素的A 也可以使用:

<div>Tags: <a href="/tags/foo" rel="tag">foo</a>, <a href="/tags/bar" rel="tag">bar</a></div>
Run Code Online (Sandbox Code Playgroud)

列表的容器

该列表应该是footer元素的一部分(article如果您使用的是博客文章中的内容):

页脚通常包含有关其部分的信息,例如谁编写它,链接到相关文档,版权数据等.

词汇

Schema.org

CreativeWork定义属性keywords(BlogPosting继承它):

用于描述此内容的关键字或标签.关键字列表中的多个条目通常用逗号分隔.

它需要纯文本,因此无法在Schema.org中提供标记URL.

由于keywords需要以逗号分隔的标记列表,dl因此不能使用(除非dl除了标记之外只包含其他内容).

有了ul,它可能在Microdata中看起来像这样:

<ul itemprop="keywords">
  <li><a href="/tags/foo" rel="tag">foo</a>,</li>
  <li><a href="/tags/bar" rel="tag">bar</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

如果使用a div,则需要添加另一个div/ child以使标签"Tags:"不被解释为标签本身:

<div>Tags: <span itemprop="keywords"><a href="/tags/foo" rel="tag">foo</a>, <a href="/tags/bar" rel="tag">bar</a></span></div>
Run Code Online (Sandbox Code Playgroud)

常用标签

Common Tag是用于标记的(RDF)词汇表.与Schema.org的keywords属性相比,它使用URI作为标记,而不是仅使用文本.

RDFa中的快速入门指南示例:

<div xmlns:ctag="http://commontag.org/ns#" rel="ctag:tagged">
   NASA's <a typeof="ctag:Tag" 
             rel="ctag:means"
             href="http://rdf.freebase.com/ns/en.phoenix_mars_mission"
             property="ctag:label">Phoenix Mars Lander</a> has deployed its robotic arm. 
</div>
Run Code Online (Sandbox Code Playgroud)

说明:内容使用标记(ctag:tagged)标记(ctag:Tag).此标记ctag:means由URI" http://rdf.freebase.com/ns/en.phoenix_mars_mission " 定义(),它被称为(ctag:label)"Phoenix Mars Lander"

而不是ctag:Tag你可以使用该类ctag:AuthorTag(这意味着它被内容作者标记).

护城河

还有MOAT词汇表,代表"标签的含义".不幸的是,他们的网站似乎已经消失了(?).

一种本体,允许用户定义Tag对象和语义Web资源的URI之间的关系