Как разметить документ с помощью RDFa, когда данные находятся в нескольких элементах

У меня есть следующая структура HTML:

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

Поскольку данные, которые у меня есть, не всегда содержат регионы или населенные пункты, я не могу надежно использовать свойства addressRegion и addressLocality, как определено на schema.org. . Вместо этого я думаю, что мне следует использовать свойство 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?


person benjaminjosephw    schedule 21.01.2015    source источник


Ответы (2)


Ваша разметка синтаксически корректна, но она, вероятно, не передает того, что вы имеете в виду.

Вы добавляете три адреса (!) к узлу PostalAddress, но

  • у потребителей нет оснований предполагать, что это три части фактически одного адреса, и

  • В любом случае RDFa не полагается на относительный порядок этих троек (если только вы не используете списки), поэтому, когда потребитель запрашивает ваши данные, эти три значения streetAddress могут появляться в любом порядке.

Таким образом, не изменяя что-то (я не уверен, что именно вы имеете в виду под «структурой») в своем HTML, вы не сможете это исправить.

scor предлагает добавить родителя div, что является хорошим и простым решением.

Есть много других способов, как добавить эту тройку (например, добавление элемента 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>

Тем не менее, я бы поставил под сомнение использование вами свойства streetAddress Schema.org. Регионы или населенные пункты не должны быть включены, потому что они не являются частью «уличного адреса». Я бы отметил только фактическую улицу, даже если в вашем случае это будет означать, что регион и населенный пункт не будут включены в график.

person unor    schedule 22.01.2015
comment
Невероятно полезный и информативный ответ. Большое спасибо. - person benjaminjosephw; 22.01.2015

Вы можете обернуть свою серию элементов 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>
person scor    schedule 22.01.2015
comment
Вы говорите, что это невозможно сделать без изменения структуры HTML? - person benjaminjosephw; 22.01.2015