【问题标题】:How to markup a document with RDFa when data is across multiple elements当数据跨多个元素时如何使用 RDFa 标记文档
【发布时间】:2015-01-21 17:20:28
【问题描述】:

我有以下 HTML 结构:

<address>
  <div>Address Line One</div>
  <div>Address Line Two</div>
  <div>Address Line Three</div>
  <div>Post Code</div>
</address>

由于我拥有的数据并非始终具有地区或地区,因此我无法可靠地使用schema.org 中定义的属性addressRegionaddressLocality。相反,我认为我应该将streetAddress 属性用于除邮政编码之外的所有内容。

我的问题是这是否是有效的 RDFa 标记?:

<address property="address" typeof="PostalAddress">
  <div property="streetAddress">Address Line One</div>
  <div property="streetAddress">Address Line Two</div>
  <div property="streetAddress">Address Line Three</div>
  <div property="postalCode">Post Code</div>
</address>

如果没有,是否有其他方法可以在不改变 HTML 结构的情况下做到这一点?

【问题讨论】:

    标签: semantic-web semantic-markup schema.org rdfa linked-data


    【解决方案1】:

    您的标记在语法上是有效的,但它可能没有传达您的意思。

    您正在向 PostalAddress 节点添加 三个 街道地址 (!),但是

    • 消费者没有理由认为这是实际一个街道地址的三个部分,并且

    • RDFa 无论如何都不依赖这些三元组的相对顺序(除非您使用lists),因此当消费者查询您的数据时,这三个streetAddress 值可能以任何顺序出现。

    因此,如果不更改 HTML 中的 something(我不确定您对“结构”的确切含义),您将无法解决此问题。

    scor suggests to add a parent div,这是一个很好且简单的解决方案。

    还有许多其他方法可以添加这个三元组(例如,添加一个提供完整街道地址的 meta 元素并从 div 元素中删除属性),但除非您对您的内容有一些特殊限制可以/不能更改您的 HTML,请使用 div


    关于您的标记的附注:

    基于我的recommendation for postal address markup,我会使用br 元素来分隔街道地址行,如果需要分组,比如你的情况,我会使用可选的span 元素:

    <address>
      <p property="schema:address" typeof="schema:PostalAddress">
        <span property="schema:streetAddress">
          Address Line One<br>
          Address Line Two<br>
          Address Line Three<br>
        </span>
        <span property="schema:postalCode">
          Post Code
        </span>
      </p>
    </address>
    

    也就是说,我会质疑您对 Schema.org 的 streetAddress property 的使用。不应包括地区或地方,因为它们不是“街道地址”的一部分。我只会标记实际的街道地址,即使在您的情况下这意味着该地区和地点不会包含在图表中。

    【讨论】:

    • 非常有用且内容丰富的答案。非常感谢。
    【解决方案2】:

    您可以用更高级别的 div 包装您的一系列 div 元素:

    <address property="address" typeof="PostalAddress">
      <div property="streetAddress">
        <div>Address Line One</div>
        <div>Address Line Two</div>
        <div>Address Line Three</div>
      </div>
      <div property="postalCode">Post Code</div>
    </address>
    

    【讨论】:

    • 你是说“不改变 HTML 的结构”就没有办法做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2015-06-08
    • 2011-02-14
    相关资源
    最近更新 更多