如何改进引用的以下标记?
我正在寻求语法和语义的改进,以产生一个效果好的HTML5标准,在当前的浏览器中表现良好,并在搜索引擎中得到很好的解析.
关于这个问题的赏金是专家意见和指导.我的研究提出了许多意见和片段,所以我正在寻求明确的答案,完整的样本和规范的文件.
这是我的工作正在进行中,我正在寻求关于它的正确性的建议:
>使用< div class =“citation”>包裹所有东西
>使用< article>用itemscope和BlogPost来封装包含其嵌套信息的帖子信息.
>使用< header> < h1 itemprop =“headline”>包装邮件名称链接.
>使用< cite>包装邮件名称.
>使用< footer>包装作者信息和博客信息.
>使用< address>包装作者链接和名称.
>使用rel =“author”注释作者姓名的链接.
>使用itemprop =“isPartOf”将帖子连接到博客.
这是我正在进行的工作HTML源:
<!-- Hello World authored by Alice posted on Bob's blog --> <div class="citation"> <article itemscope itemtype="http://schema.org/BlogPosting"> <header> <h1 itemprop="headline"> <a itemprop="url" href="…"> <cite itemprop="name">Hello World</cite> </a> </h1> </header> <footer> authored by <span itemprop="author" itemscope itemtype="http://schema.org/Person"> <address> <a itemprop="url" rel="author" href="…"> <span itemprop="name">Alice</span> </a> </address> </span> posted on <span itemprop="isPartOf" itemscope itemtype="http://schema.org/Blog"> <a itemprop="url" href="…"> <span itemprop="name">Bob's blog</span> </a> </span> </footer> </article> </div>
到目前为止的相关说明:
>< cite>标签W3引用说标签是“短语级别”,所以它的工作方式就像一个内联的跨度,而不是一个块div.但是< article>标签似乎受益于使用< h1>< header>< footer> ;.尽可能地告诉我,规范并没有给出一个解决方案来引用一篇文章,使用< cite>包装< article>.有解决方法吗? (正在进行中的工作通过使用< div class =“citation”>)
>< address>标签W3参考表示内容“地址元素不能用于表示任意地址,除非这些地址实际上是相关联系信息.”最好我可以告诉,规范没有给出标记文章作者的URL和名称的解决方案,与文章的联系信息不同.有解决方案吗? (正在进行中的工作通过使用< address>作为作者的URL和名称)
解决方法
<body itemscope itemtype="http://schema.org/WebPage"> <ul> <li> <cite itemprop="citation" itemscope itemtype="http://schema.org/BlogPosting"> <a href="…" itemprop="url" rel="external"><span itemprop="name headline">Hello World</span></a>,authored by <span itemprop="author" itemscope itemtype="http://schema.org/Person"><a href="…" itemprop="url" rel="external"><span itemprop="name">Alice</span></a></span>,posted on <span itemprop="isPartOf" itemscope itemtype="http://schema.org/CreativeWork"><a href="…" itemprop="url" rel="external"><span itemprop="name">Bob’s blog</span></a></span>. </cite> </li> <li> <cite itemprop="citation" itemscope itemtype="http://schema.org/BlogPosting">…</cite> </li> </ul> </body>
使用分段内容元素article
,就像你的例子一样,当然是可能的,虽然也许是不寻常的(如果我正确地理解你的用例):由于文章是一个分段的内容元素,它在文档大纲中创建一个条目,它可能或可能不是你想要的情况. (例如,可以check the outline with the HTML5 Outliner)
另一个迹象表明,分段内容元素可能不是最佳选择:您的文章不包含任何实际的“主”内容.简单地说,分割内容元素的主要内容可以通过剥离其元数据来确定:页眉,页脚和地址元素. (这不是明确指定的,而是从0703的定义开始)
但是,没有这个内容没有错.你可以很容易地想象(也许你打算这么做),你会引用博客帖子(这个案例similar to a search result entry)的代码段,在这种情况下你会有:
<article> <header></header> <blockquote></blockquote> <!-- the non-Metadata part of the article --> <footer></footer> </article>
我会进一步假设你想使用文章.
关于您的HTML5的注意事项
>语义上,不需要包装div.您可以直接向文章添加引文类.
> header
element是optional if it just contains a heading element(当你的标题不仅仅是一个标题元素时,这个元素很有意义).不过,当然没有错.
>我更喜欢在cite
element中包含一个元素(类似于规范中的第五个例子).
> span元素只能包含phrasing content,所以地址不能作为一个小孩使用.
> address
element必须包含联系信息才能使用.所以如果这个元素是合适的取决于链接页面上可用的内容:如果它是一个联系表单,是的;如果它是一个创作的博客文章的列表,不.
> author
link type可能不合适,因为它被定义为提供关于article元素的作者的信息.但严格来说,你是作者.如果文章仅由博客作者的实际内容组成,则使用作者链接类型将是适当的;但在您的情况下,您正在撰写内容(“由…创作”,“张贴在”上).
>您可能希望使用external
link type all external links.
关于您的Microdata的注意事项:
>您可以指定Schema.org属性标题和名称in the same itemprop
(separated with space).
>您可能需要在文章中使用Schema.org的citation
property(这要求您指定CreativeWork
的父类型或其子类型之一;即,您的情况下可能为WebPage
或甚至为AboutPage
).
以你的榜样,这将给出:
<body itemscope itemtype="http://schema.org/WebPage"> <article itemprop="citation" itemscope itemtype="http://schema.org/BlogPosting" class="citation"> <header> <h1> <cite itemprop="headline name"><a itemprop="url" href="…" rel="external">Hello World</a></cite> </h1> </header> <footer> authored by <span itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href="…" rel="external"><span itemprop="name">Alice</span></a> </span> posted on <span itemprop="isPartOf" itemscope itemtype="http://schema.org/Blog"> <a itemprop="url" href="…" rel="external"><span itemprop="name">Bob’s blog</span></a> </span> </footer> </article> </body>
(所有考虑的事情,我仍然喜欢无断面的变体.)