Является ли концепция ссылки неотделимой от ее HTML-разметки? - PullRequest
4 голосов
/ 27 ноября 2009

Я ищу стратегию для управления ссылками в статьях. Тело статьи сохраняется в базе данных и извлекается при сборке страницы. Что все должно быть сохранено в базе данных, чтобы легко определять и управлять ссылками?

Некоторые пуристы считают, что разметка НИКОГДА не должна храниться в базе данных. Некоторые считают, что все в порядке в меру. Но для меня понятие ссылки почти неотделимо от разметки html.

Есть ли лучший, более лаконичный способ представления ссылки в статье (в базе данных), чем просто встраивание "якорного текста"?

Одна идея, которую я выдвинул, заключается в том, чтобы внедрить достаточно разметки, чтобы семантически описать области интереса, и в другой таблице сопоставить эти понятия с реальными URL. Все встречи с определенным понятием заключаются в ссылку.

<p>Here is an example of a
<span class="external-reference semantic-web">semantic</span> 
approach to link management.</p>

Таблица может затем связать URL-адрес статьи и ключевой класс 'semantic-web' с URL-адресом, подобным http://en.wikipedia.org/wiki/Semantic_Web

<p>Here is an example of a <span class="external-reference semantic-web">
<a href="http://en.wikipedia.org/wiki/Semantic_Web">semantic</a></span> 
approach to link management.</p>

Что мне нравится в этом подходе, так это то, что все мои URL-адреса находятся в одном месте в базе данных. Я мог бы технически изменить или удалить ссылки, не касаясь основной части статьи. У меня есть очень хорошие имена классов для CSS.

Мне не нравится иметь другую таблицу для обслуживания и еще один шаг / фазу во время рендеринга. Это может замедлить время отклика.

Существуют ли другие стратегии, обеспечивающие превосходное управление ссылками?

Ответы [ 2 ]

1 голос
/ 27 ноября 2009

Возможно, вы захотите взглянуть на шаблоны (например, Smarty для PHP).

Я согласен, что разметка не должна обычно храниться в базе данных.

Однако вы можете также рассмотреть возможность реализации концепции «указатель», где при каждой ссылке вы разбиваете свое хранилище страницы, добавляете указатель в таблице на ссылку, затем указатель в таблице ссылок на следующий сегмент содержания для страницы. (Я понятия не имею, насколько это будет сложно - просто идея.)

Или посмотрите, как различные инструменты CMS обрабатывают эту идею. Некоторые просто помещают все в базу данных как один большой блок текста, другие полагаются на шаблоны, а другие могут делать что-то еще полностью (например, объектно-ориентированные среды, такие как Plone ).

1 голос
/ 27 ноября 2009

Я видел несколько попыток сделать это.

Один из способов сделать это - перенаправить URL. На сервере можно реализовать логический компонент, который будет интерпретировать то, что запрашивает URL, а не путь к контенту.

Другая попытка состоит в том, что ссылки первоначально устанавливаются в ссылочное значение [которое можно найти в базе данных] и запрашиваются во время выполнения / генерации.

В любом случае вам придется ссылаться на материал, на который вы хотите сослаться, с каким-то идентификатором.

...