Является ли концепция ссылки неотделимой от ее HTML-разметки?
Вопрос
Я ищу стратегию для управления ссылками в статьях. Тело статьи сохраняется в базе данных и извлекается при сборке страницы. Что все должно быть сохранено в базе данных, чтобы легко определять и управлять ссылками?
Некоторые пуристы считают, что разметка НИКОГДА не должна храниться в базе данных. Некоторые считают, что все в порядке в меру. Но для меня понятие ссылки практически неотделимо от разметки 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.
Мне не нравится иметь другую таблицу для обслуживания и еще один шаг / фазу во время рендеринга. Это может замедлить время отклика.
Существуют ли другие стратегии, обеспечивающие превосходное управление ссылками?
Решение
Возможно, вы захотите взглянуть на шаблоны (например, Smarty для PHP).
Я согласен, что разметка не должна обычно храниться в базе данных.
Однако вы можете также рассмотреть возможность использования " указателя " Концепция, при которой при каждой ссылке вы ломаете свое хранилище страницы, добавляете указатель в таблице на ссылку, затем указатель в таблице ссылок на следующий сегмент контента для страницы. (Я понятия не имею, насколько это будет сложно - просто идея.)
Или посмотрите, как различные инструменты CMS обрабатывают эту идею. Некоторые просто помещают все в базу данных как один большой блок текста, в то время как другие полагаются на шаблоны, а другие могут делать что-то еще полностью (например, объектно-ориентированные среды, такие как Plone ).
Другие советы
Я видел несколько попыток сделать это.
Один из способов сделать это - перенаправить URL. На сервере можно реализовать логический компонент, который будет интерпретировать то, что запрашивает URL, а не путь к контенту. Р>
Другая попытка состоит в том, что ссылки изначально устанавливаются в ссылочное значение [которое можно найти в базе данных] и запрашиваются во время выполнения / генерации. Р>
В любом случае вам придется ссылаться на материал, на который вы хотите сослаться, с каким-то идентификатором. Р>