混合JSON-LD和Microdata Schema.org [英] Mixing JSON-LD and Microdata Schema.org
问题描述
如果我有以下标记:
<body itemscope="" itemtype="http://schema.org/WebPage">
<h1 itemprop="name">Lecture 12: Graphs, networks, incidence matrices</h1>
<p itemprop="description">These video lectures of Professor Gilbert
Strang teaching 18.06 were recorded in Fall 1999 and do not
correspond precisely to the current edition of the textbook.</p>
<div itemprop="publisher" itemscope="" itemtype="http://schema.org/CollegeOrUniversity">
<h4 class="footer">About <span itemprop="name">MIT OpenCourseWare</span></h4>
</div>
<a itemprop="license"
rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/deed.en_US"><img
src="/images/cc_by-nc-sa.png" alt="Creative Commons logo with terms BY-NC-SA." /></a>
</body>
我想重构发布者属性,因为它很复杂,我不想显示它并执行以下操作:
And I want to refactor the publisher property because it's complicated and I don't want to necessarily display it and do this:
<body itemscope="" itemtype="http://schema.org/WebPage">
<h1 itemprop="name">Lecture 12: Graphs, networks, incidence matrices</h1>
<p itemprop="description">These video lectures of Professor Gilbert
Strang teaching 18.06 were recorded in Fall 1999 and do not
correspond precisely to the current edition of the textbook.</p>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "CollegeOrUniversity",
"name": "MIT OpenCourseWare"
}
</script>
<a itemprop="license"
rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/deed.en_US"><img
src="/images/cc_by-nc-sa.png" alt="Creative Commons logo with terms BY-NC-SA." /></a>
</body>
我怎么说<script>
块与itemprop="publisher"
属性有关?
How do I say that the <script>
block relates to the itemprop="publisher"
property?
我猜这两个选项是i).将itemprop
属性添加到脚本标签或ii).将@attribute
代替itemprop
添加到JSON-LD块.
I guess the two options are i). adding an itemprop
attribute to the script tag or ii). adding an @attribute
to in lieu of itemprop
to the JSON-LD block.
我都找不到任何文档.有人知道答案吗?
I cannot find documentation on either. Does anyone know the answer?
推荐答案
不可能这样.如果在script
元素上使用itemprop
属性,则属性值将是 textContent .本质上类似于itemprop="{ "@context": "http://schema.org", "@type": "CollegeOrUniversity", "name": "MIT OpenCourseWare" }"
,因此该值为纯文本,而不是JSON-LD(并且不解释为JSON-LD).
This is not possible like that. If you use the itemprop
attribute on the script
element, the property value will be the textContent of script
. This would be essentially something like itemprop="{ "@context": "http://schema.org", "@type": "CollegeOrUniversity", "name": "MIT OpenCourseWare" }"
, so the value is the plain text, not JSON-LD (and not interpreted as JSON-LD).
如果您不想在页面上显示发布者名称,则可以使用meta
元素:
If you don’t want to have the publisher name visible on your page, you could use a meta
element:
<div itemprop="publisher" itemscope itemtype="http://schema.org/CollegeOrUniversity">
<meta itemprop="name" content="MIT OpenCourseWare" />
</div>
对于JSON-LD节点和引用,也可以使用节点标识符(@id
) Microdata中的此URI,但某些使用者可能不支持它(某些使用者可能根本不遵循引用,有些使用者可能只识别Schema.org对
It would also be possible to use a node identifier (@id
) for the JSON-LD node and reference this URI in Microdata, but some consumers might not support it (some might not follow references at all, some might only recognize what Schema.org expects for the publisher
property: Organization
/Person
, but not URL):
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "CollegeOrUniversity",
"@id": "http://example.com/mit-opencourseware#thing",
"name": "MIT OpenCourseWare"
}
</script>
<link itemprop="publisher" href="http://example.com/mit-opencourseware#thing" />
这篇关于混合JSON-LD和Microdata Schema.org的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!