2011-07-24 54 views
15

我将schema.org Microdata添加到我的网站。如何将'name'和'url'属性添加到相同的标记?

我的HTML代码是这样的:

<div itemscope itemtype="http://schema.org/Organization"> 
<span class="title">Name of the organization</span> 
<a href="http://www.ABCCompany.com/">ABC Company</a> 
</div> 

自组织的itemprop“URL”和“名”都在锚标记。我该如何在同一个标​​签上注明“url”和“name”itemprop?我必须为此添加额外的span标签吗?

我试过在这个上搜索一些编码示例,但找不到任何示例来显示在同一个标​​记上使用多个itemprop

最后,我想有微观数据是这样的:

url="http://www.ABCCompany.com", name="ABC Company" 
+0

克努特问到有没有为@cygri提供了正确的答案他的答案被删除。如果他的回答有帮助,您可能希望查看并选择它。 – Will

回答

30

你必须通过嵌套两个元素来做到这一点。例如,您可以嵌套<span><a>内,换上了itemprop="name"

<div itemscope itemtype="http://schema.org/Organization"> 
    <a itemprop="url" href="http://www.ABCCompany.com/"> 
     <span itemprop="name">ABC Company</span> 
    </a> 
</div> 

我发现this site方便测试这样的事情。

+2

这样嵌套itemprops真的合法吗?你看过规范中的任何例子吗?我看到的嵌套itemprops上唯一的例子是其中一个itemprops是一个itemtype,它启动一个新的itemscope。 – knut

+3

是的,当然这是合法的。为什么不呢?规范中的算法会递归到所有子元素中,除非它上面有@itemscope。 – cygri

+3

@knut - 一个'itemprop'不会像'itemscope'那样创建一个新的范围。每个元素类型('',''等)确定将哪个部分提取为附加的'itemprop'属性的值。 –

2

谷歌可能有问题。 “丰富网页摘要测试工具”表示当您将锚标记标记为网址时,标记的主体将用作值而不是href属性。但是没有人想要在锚标签中显示网址。

+2

如果您使用丰富网页摘要测试工具,并且您在锚点上有itemprop ='name',它会将href中的文本显示为链接项目,因此看起来像是有效的,并且它看起来像是'网址“和”名字“一举成名。 但是,如果你看看网站管理员工具,你会看到itemprop ='name'实际上是使用name属性的URL。 根据我的经验,你需要在锚上有itemprop ='url',然后在itemprop ='name'的锚上有一个span。 测试工具真的是骗人的。 – emptywalls

0

这也适用,可能看起来有点易于维护:

<div itemscope itemtype="http://schema.org/Organization"> 
<span class="title" itemprop="name"><a itemprop="url" href="http://www.ABCCompany.com/">ABC Company</span></a> 
</div> 

谷歌的schema.org支持,因为原来的问题被张贴在google structured data tester有了很大的改善。上面的代码在其中正确验证。

相关问题