【问题标题】:The correct approach to markup "keywords" of a blog post by using HTML5 and Microdata?使用 HTML5 和微数据标记博客文章“关键字”的正确方法?
【发布时间】:2023-03-11 01:35:02
【问题描述】:

Schema.org 的keywords 属性,正如它的复数形式所暗示的那样,似乎暗示它的值应该是一行逗号分隔的文本。像下面的例子:

<p itemprop="keywords">lorem, ipsum, dolor, sit, amet</p>

这让我想起了 &lt;meta name="keywords" content="lorem, ipsum, dolor, sit, amet"&gt; 标记,我们曾经出于 SEO 原因放在 &lt;head&gt;&lt;/head&gt; 中。

但是,从语义的角度来看,我认为上面的例子是不正确的,因为关键字应该是单词列表。因此,应该使用&lt;ul&gt; 元素对其进行标记。

对于如何使用 HTML5 和 Microdata 标记博客文章的关键字是否存在共识?

【问题讨论】:

    标签: html schema.org semantic-markup microdata


    【解决方案1】:

    更新: Schema.org 的 keywords 属性的定义发生了变化。现在它清楚地表明它需要多个标签,并且它们通常应该用逗号分隔。

    tl;dr:如果您想为标签使用ul 元素,在 Microdata 中使用 Schema.org 的 keywords 属性可能如下所示:

    <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>
    

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


    HTML

    具有namekeywordsmeta 元素提供了一种指定适用于整个页面的关键字的方法。这些关键字仅包含文本,因此您不能使用 URI。

    所以对于典型的博客标签,你应该采用以下方式(可能除了meta-keywords)。

    链接类型

    HTML5 定义了link type tag:

    tag关键字表示被引用文档所代表的标签适用于当前文档。

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

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

    如果您的标签更像类别(受控词汇而不是免费标签),您可以使用link type 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>
    
    <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>
    

    当您还有其他元数据要列出时,我会选择 dl,例如作者、发表日期等。

    带有逗号分隔的a 元素的div 当然也可以:

    <div>Tags: <a href="/tags/foo" rel="tag">foo</a>, <a href="/tags/bar" rel="tag">bar</a></div>
    

    列表的容器

    footer element 的列表should be 的一部分(如果您在博客文章中使用article,则在article 内):

    页脚通常包含有关其部分的信息,例如作者、相关文档的链接、版权数据等。

    词汇

    Schema.org

    CreativeWork 定义属性keywordsBlogPosting 继承它):

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

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

    由于keywords 需要一个逗号分隔的标签列表,所以不能使用dl(除非dl 只包含标签)。

    使用ul,它在微数据中可能如下所示:

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

    如果使用div,您需要添加另一个div/child,以便标签“标签:”不会被解释为标签本身:

    <div>Tags: <span itemprop="keywords"><a href="/tags/foo" rel="tag">foo</a>, <a href="/tags/bar" rel="tag">bar</a></span></div>
    

    常用标签

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

    来自他们在 RDFa 中的 Quick Start Guide 的示例:

    <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>
    

    说明:内容被标记为 (ctag:tagged),带有标签 (ctag:Tag)。该标签由 URI“http://rdf.freebase.com/ns/en.phoenix_mars_mission”定义(ctag:means),它被称为(ctag:label)“Phoenix Mars Lander”

    您可以使用 ctag:AuthorTag 类代替 ctag:Tag(这意味着它由内容作者标记)。

    护城河

    还有 MOAT 词汇表,代表“Meaning Of A Tag”。不幸的是,their website 似乎消失了(?)。

    允许用户定义标记对象和语义 Web 资源的 URI 之间关系的本体

    【讨论】:

    • 感谢这篇长文,但老实说它并没有提供太多帮助。我想知道的是通过使用 HTML5 和微数据来标记关键字的语义正确方法。我知道 Microformats rel="tag" 的东西,但它和 RDF 都不是这里的重点。正如问题中提到的,Microdata 的keywords 属性是复数形式,那么在一个单词上使用它会不会很奇怪?
    • 如果在&lt;a&gt;&lt;img&gt; 标记上使用微数据属性,则其值来自hrefsrc 属性。因此,您的第二个示例(使用 &lt;span&gt; 的示例)是获取文本值的正确方法。
    • @IanY.:我的印象是你的最后一句话(“关于如何使用 HTML5 和 Microdata 标记博客文章的关键字是否有共同的共识?”)是指“关键字”一般。您不限于在 Microdata 中使用 schema.org 词汇表,所以我提到了 Common Tag 和 MOAT,因为您可以使用它们来代替 schema.org 词汇表或与 schema.org 词汇表结合使用。
    • @IanY:我更新了有关多个 keywords 属性的 schema.org 部分。我认为您必须使用多个。
    • @IanY.:嗯,是的,但是属性名称没有任何“意义”,所以你应该忽略它。有一个 proposal 可以将一些 schema.org 属性从复数更改为单数。但是,对于 keywords,它表示它“不是语法复数”。
    猜你喜欢
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2014-06-10
    • 2010-10-03
    • 1970-01-01
    相关资源
    最近更新 更多