1

我有以下 HTML 结构:

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

由于我拥有的数据并没有始终如一地具有区域或地点,因此我无法可靠地使用属性addressRegion以及在schema.orgaddressLocality中定义的内容。相反,我认为我应该将该属性用于除邮政编码之外的所有内容。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 结构的情况下做到这一点?

4

2 回答 2

1

您可以使用更高级别的 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>
于 2015-01-22T03:04:35.113 回答
1

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

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

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

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

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

scor 建议添加一个 parentdiv,这是一个很好且简单的解决方案。

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


关于您的标记的旁注:

根据我对邮政地址标记的建议,我将使用元素来分隔街道地址行,如果需要分组(如您的情况),则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 的streetAddressproperty的使用。不应包括地区或地方,因为它们不是“街道地址”的一部分。我只会标记实际的街道地址,即使这意味着在您的情况下该地区和地点不会包含在图表中。

于 2015-01-22T14:28:25.673 回答