需要rel =规范URI的同一页面上的多个对象

时间:2012-05-08 19:19:46

标签: html5 semantic-web semantic-markup rel

编辑:这个问题很长,包括我正在寻找的那种事情的几个例子。我找到了答案(见下文),就是这样的东西确实存在,你可以在schema.org上阅读所有相关内容。

我希望能够将某些语义信息附加到同一页面上的多个不同项目中。例如,我的页面有一个歌曲列表,看起来有点像:

<div class="song">
    <img src="cover-art-image" />
    <p>Description on image</p>
    <a id="..." href="link-to-song">View song</a>
</div>
<div class="song">
    ...
</div>

现在,我想显示有关这些对象的语义信息(在本例中为歌曲),因此我们在歌曲的实际页面上的<meta>标签中包含语义数据(以及<link rel="author" ...>等等上)。

所以我想知道什么是最好的方式来沟通(搜索引擎,JavaScript的一些点,或者在我们的例子中是一个浏览器插件)链接"View song"是一个唯一描述语义的URI对象(元数据和所有)。

我已经阅读了有关使用link rel="canonical"的内容,但据我所知,这是用于标题,用于描述当前页面(或者,告知搜索引擎当前页面的规范表示是什么),而我想要的是传达我们想要描述当前页面上显示的子对象。所以,在一个理想的世界里,我会写一些类似的东西:

<div class="song">
    <img ... />
    <p> ... </p>
    <a href="link-to-song" rel="canonical">View Song</a>
</div>

描述href末尾的事物(即歌曲的页面)是父HTML节点的规范表示。但是,这并不是rel="canonical"的意思:是否已经定义了类似的东西(即沟通)我想要的东西?

如果没有,那么实施此类内容最“网络友好”的方式是什么?我确定只使用多个rel="canonical"链接不是这样做的方式(并且通过尝试嵌入实际上应该有用的语义数据来冒犯搜索引擎会很好。)

我唯一能想到的就是把它放在像

这样的东西上
<a href="..." rev="summary"> ... </a>

反映出这里显示的内容是条目主页上的内容摘要 - 但我不认为这被解释为“范围”意味着“包含此链接的DOM节点是摘要。 ..“。

编辑:关于如何使用它的另一个例子(如果我的意思不明确)可能是让博客帖子上的每条评论都包含这样一个链接,该链接将唯一地标识与该特定关联的URI。帖子。点击该链接后,您会找到一个包含例如评论的<link rel="author"...>信息,返回帖子的链接,等等。

编辑:为了更明确我的意思,我们已经使用了像

这样的元数据
<link rel="canonical" href="..." />

在页面的<head>中,用于传达有关 URI中描述的对象(或内容)的语义数据。因此,生成在<head>中的元数据可以被视为作用域(滥用术语)到页面级别。我想知道我们如何在页面的某些层面上对元数据进行范围界定(所以在上面的例子中,我想在包含它们的DOM节点的层次上调整元信息的范围)。以下是无效的标记(由于显而易见的原因,将由搜索引擎处罚),但说明了我的意思:

<html>
    <head>
        <link rel="canonical" href="/canonical/representation/of/this/page.html" />
    </head>
    <body>
        <div id="item1">
            <a rel="canonical" href="/canonical/representation/of/item1.html" />
            <p>Some local description of item2</p>
        </div>
        <div id="item2">
            <a rel="canonical" href="/canonical/representation/of/item2.html" />
            <p>Some local description of item2</p>
        </div>
     </body>
</html>

然后在地址/canonical/representation/of/item1.html我们可能会找到一些语义数据(例如,Open Graph数据):

<html prefix="og: http://ogp.me/ns#">
    <head>
        <meta property="og:title" content="Some title" />
        <meta property="og:type" content="music.song" />
        <meta property="og:url" content="/canonical/representation/of/item1.html" />
    </head>
    <body>
        <!-- User-facing content of the page -->
    </body>
</html>

此关系需要rel=...标记的原因是我们要将其标记为包含有关页面特定部分的相关语义数据(而不是页面中的其他链接,可能指向任何位置) ),并且应该跟随想要发现这样的数据的程序(然后可以知道这些数据只与链接所在的特定DOM节点“作用域”的页面部分相关)。

2 个答案:

答案 0 :(得分:2)

事实证明,使用 Microdata 完成了 。它与<canvas>,原生视频和朋友没有同样的关注,但它是HTML5规范(here)的一部分,甚至意味着拥有JavaScript API(尽管Opera是到目前为止唯一实现它的浏览器 - 没有惊喜。)

更好的是,事实证明像谷歌,必应和雅虎这样的人!所有人都关心这些东西,并创建schema.org来记录它(以及提供现成数据类型的完整列表)。

答案 1 :(得分:0)

我理解您所说的是,您希望确保链接的含义是将用户带到有关该歌曲的页面。所以你想确保链接的含义是清楚的。你有没有想过这个:

<a href="" class="song">
    <img ... />
    <p> ... </p>
</a>

我最初想的是在那里加上一个数字标签,但感觉不对; http://html5doctor.com/your-questions-15/令人敬畏的权威证实了我的怀疑。