Разница между описанием и контентом: закодированные теги в RSS2 - PullRequest
28 голосов
/ 28 августа 2011

В чем разница, если таковая имеется, между тегом <description> и тегом <content:encoded> в спецификациях формата RSS 2.0?

Один важнее другого?

Должен ли я использовать оба в своих каналах или одного будет достаточно?

Ответы [ 3 ]

30 голосов
/ 10 сентября 2011

Тег <description> предназначен для краткого изложения поста, но только в текст .Без разметки.

Вы можете обойти это, если вы уберете теги или добавите содержимое в:

<![CDATA[ post body goes <strong>here</strong> ]>

Но вы не должны этого делать .

Если вы хотите разметки, вы должны использовать <content:encoded> и использовать обертки <![CDATA[ и ]> здесь.

Элемент content:encoded можно использовать вместе с элементом description для предоставления полного содержимого элемента вместе с более короткой сводкой.При таком подходе полный текст элемента представлен в content:encoded, а сводка - в description.

RSS Профиль Best Practices: содержание: закодировано

Короче говоря, <description> для резюме , а остальная часть поста находится в <content:encoded>.

Так как некоторые читатели могут не поддерживать теги, как ожидалось, вы обычно видите весь пост в <description>, а не их сочетание.

12 голосов
/ 03 июня 2015

Предыдущий ответ неверен.

RSS 2.0 spec очень ясно, что вы можете закодировать значение элемента .

Элемент также может быть завершен сам по себе, если это так, описание содержит текст (допускается кодирование объектов HTML; см. Примеры), а ссылка и заголовок могут быть опущены.Все элементы элемента являются необязательными, однако должен присутствовать хотя бы один из заголовка или описания.

1 голос
/ 27 февраля 2019

Ответ, данный @random, имеет некоторую правду, но в конечном итоге ситуация сложная (если не запутанная), как указано в спецификации RSS 2.0 , при принятии решения о том, как обрабатывать description. / или в другое время наряду с content:encoded.

TLDR: Когда производитель контента желает включить ОБА текстовую сводку КАК ХОРОШО как более полный контент, ситуация проясняется: используйте description для более простой текстовой сводки и content:encoded для более полного html-контента. Но когда они хотят включить только один из двух, только краткий или только более полный контент, тогда они ПРЕДЛАГАЮТСЯ использовать для этого тег description, и в этом случае все остается неоднозначным! Самое печальное решение, по моей оценке, это означает, что вы ДОЛЖНЫ включить контент fulller-html, чтобы прояснить ситуацию, в противном случае тег description столь же неоднозначен, как и всегда.

Издателям, которые не хотят использовать сводки item в своих лентах, СЛЕДУЕТ использовать элемент description для полного содержимого элемента, а не content:encoded, поскольку он имеет самую широкую поддержку.

Издателям, использующим сводки, СЛЕДУЕТ хранить сводку в описании и полный контент в content:encoded, заказывая description сначала внутри item. Для элементов без сводки полное содержимое ДОЛЖНО храниться в description.

Нужно медленно готовить медитировать на то, что все это значило, но я думаю это пункты на вынос:

  1. Если указан только один из этих двух тегов, он ДОЛЖЕН быть тегом description.
  2. Это означает, что content:encoded НЕ ДОЛЖЕН существовать без тега description, размещенного рядом с ним (и фактически над ним).
  3. К сожалению, это означает, что когда есть только один тег (который должен быть description), ситуация остается такой же неоднозначной, как и всегда: т.е. description продолжает оставаться ЛИБО простой текстовой сводкой, ИЛИ более полным HTML-контентом, вы не можете знать!
  4. Когда даются ОБА, это единственный раз, когда неоднозначность удаляется: тогда description должна быть более простой сводкой, а content:encoded будет содержать более полный HTML-контент.

Или, может быть, я все это неправильно прочитал.

Лично я думаю, что это решение было очень неудачным. Очевидно, они делали это для обеспечения обратной совместимости, поэтому читатели в то время могли всегда иметь некоторое описание для чтения (поскольку content:encoded еще не поддерживалось или не получало широкого распространения). Но при этом они в основном инвалиды этого. На данный момент под мостом стоит вода, но я думаю, что они могли бы сделать, получая лучшее из обоих миров, - добавить атрибут к description, например: <description type="html | text">. Поэтому, если <description type="text"> (обратите внимание, что для более полного html-контента указано, что content:encoded - это всегда ), то указание description - это просто более простое резюме, и производителю НЕ нужно также предоставлять полный контент в -заказ для читателей, чтобы узнать тип этого тега. В то время как пожилые читатели просто проигнорировали бы этот дополнительный атрибут. Вода под мостом, но мы можем мечтать.

Итак, мне кажется, что все в воздухе, ** если только не добавлены теги ОБА, только тогда вы сможете сделать правильные предположения.

P.S. Что касается различия между полным и суммарным содержанием, см. Их оригинальное обсуждение по тегу description.

...