内联微数据内容显示与JSON-LD中的相同标记不同

时间:2016-03-30 10:31:40

标签: html microdata json-ld

我有关于Microdata的问题。通常我在页面中插入Microdata作为内联属性,但我决定将HTML代码和结构化数据分开,所以我开始创建内联JSON-LD。

在使用Google testing tool测试网页时,我注意到Google根据结构化Microdata显示的内容之间存在一些差异。 itemscope是WebPageElement,而itemprop是text:文本是从数据库中提取的,因此它可以包含HTML标记,因为它是使用文本编辑器生成的。

使用的HTML代码(第一个divitemprop="text"在JSON-LD中不存在):

<div class="text" itemprop="text">

        <h3>Lorem ipsum dolor sit amet, <br>consectetur adipiscing elit. Aliquam aliquet porttitor est non egestas. </h3>
        <p>Aenean quis est eu odio iaculis egestas. Aliquam erat volutpat. Praesent egestas nunc tortor, nec viverra nunc vestibulum vel.  </p>

        <h3 class="titolo_gruppo_faq">Aliquam erat volutpat.</h3> 
        <h4 class="trigger_open">Nullam luctus dui vel ex pretium bibendum</h4> 
        <div class="openable">
            <p>Quisque at ante varius, porta nunc nec, cursus justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec dictum molestie neque sit amet gravida. Sed et justo vitae quam ullamcorper tempor. Vestibulum consequat erat risus, vitae facilisis turpis bibendum vitae. Aliquam erat volutpat. Donec laoreet, dolor ac sodales consectetur, massa nisi vehicula libero, vel sollicitudin massa lacus id purus. Quisque egestas venenatis purus, tempus ultrices mauris iaculis aliquet. </p>
        </div>
    </div>

在内嵌微数据中,标签被剥离,只显示文字:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam aliquet porttitor est non egestas. Aenean quis est eu odio iaculis egestas. 
Aliquam erat volutpat. Praesent egestas nunc tortor, nec viverra nunc vestibulum vel! 
Aliquam erat volutpat.

在JSON-LD中,只有一些标签被剥离,而其他标签和HTML属性仍然存在:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam aliquet porttitor est non egestas. <br>
Aenean quis est eu odio iaculis egestas. Aliquam erat volutpat. Praesent egestas nunc tortor, nec viverra nunc vestibulum vel! 
<h3 class="titolo_gruppo_faq">Aliquam erat volutpat.</h3> 
<h4 class="trigger_open">Nullam luctus dui vel ex pretium bibendum?</h4> 
<div class="openable"> 
<p>Quisque at ante varius, porta nunc nec, cursus justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec dictum molestie neque sit amet gravida. Sed et justo vitae quam ullamcorper tempor. Vestibulum consequat erat risus, vitae facilisis turpis bibendum vitae. Aliquam erat volutpat. Donec laoreet, dolor ac sodales consectetur, massa nisi vehicula libero, vel sollicitudin massa lacus id purus. Quisque egestas venenatis purus, tempus ultrices mauris iaculis aliquet. </p> 
</div>

JSON-LD示例:

{
    "@context":"http://schema.org"
    ,"@type":"QAPage"
    ,"about":"Lorem ipsum about"
    ,"headline":"Dolor sit amet headline"
    ,"text":"Nunc placerat metus magna, eget suscipit libero blandit tristique. Vestibulum turpis sapien, ultrices non libero sed, sagittis malesuada lorem. "
    ,"mainContentOfPage":
    {
        "@type":"WebPageElement"
        ,"headline":Lorem ipsum"
        ,"text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit.Aliquam aliquet porttitor est non egestas. <br>\nAenean quis est eu odio iaculis egestas.\nAliquam erat volutpat. Praesent egestas nunc tortor, nec viverra nunc vestibulum vel!\n<h3 class=\"titolo_gruppo_faq\">Aliquam erat volutpat.</h3> \n<h4 class=\"trigger_open\">Nullam luctus dui vel ex pretium bibendum?</h4> \n<div class=\"openable\">\n <p>Quisque at ante varius, porta nunc nec, cursus justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec dictum molestie neque sit amet gravida. Sed et justo vitae quam ullamcorper tempor. Vestibulum consequat erat risus, vitae facilisis turpis bibendum vitae. Aliquam erat volutpat.\nDonec laoreet, dolor ac sodales consectetur, massa nisi vehicula libero, vel sollicitudin massa lacus id purus. Quisque egestas venenatis purus, tempus ultrices mauris iaculis aliquet. </p> \n</div>\n
    }
    ,"author":{
        "@type":"Organization"
        ,"name":"Organization Ltd"
    }
    ,"inLanguage":"it-IT"
}

为什么会出现这种差异?

这种差异是否会影响Google展示内容和信息的方式?

1 个答案:

答案 0 :(得分:2)

JSON-LD(作为HTML script元素中的数据块),如果属性值应该是字符串,则Microdata的工作方式不同:

  • 在JSON-LD中,值为纯文本(即,字符<>没有特殊含义)
  • 在Microdata中,值是元素的 textContent (即HTML元素被剥离)

在您的JSON-LD示例中,没有剥离某些标记,它包含您在text属性中提供的HTML标记(解释为纯文本)。

假设您已经在HTML <span><b>Hello world</b></span>中,并且想要提供内容&#34; Hello world&#34;作为text属性的值。

在Microdata中,您可以使用以下方法之一:

<span itemprop="text"><b>Hello world</b></span>
<span><b itemprop="text">Hello world</b></span>
<meta itemprop="text" content="Hello world" />

在JSON-LD中,您只能使用:

"text": "Hello world",

如果你愿意的话

"text": "<b>Hello world</b>",

该值将是&#34;&lt; b&gt; Hello world&lt; / b&gt;&#34;,其中&lt; b&gt;和&lt; / b&gt;不是HTML,而是字符串值的一部分。