Как отношения ссылок HTML связаны с идентификаторами фрагментов? - PullRequest
1 голос
/ 14 мая 2019

Иногда мы используем атрибут rel, передающий значение для ссылки на определенную страницу или фрагмент страницы, например:

<link rel="author" href="https://example.com/humans.txt">
<a rel="bookmark" href="https://example.com/page#thing">thing</a>

Пока все хорошо.

Case

Теперь скажите, что у меня есть страница глоссария, https://example.com/glossary, и на этой странице у меня есть список определений с набором терминов:

<dl id="dictionary">
  <dt id="foo">foo</dt>
  <dd>A foo is not a <a href="#bar">bar</a>.</dd>
  <dt id="bar">bar</dt>
  <dd>A metric unit of pressure that serves alcoholic beverages.</dd>
</dl>

Это заставляет задуматься, чтоНадлежащим / лучшим способом является ссылка на глоссарий и конкретный термин в указанном глоссарии.Я предложил следующие варианты:

Для глоссария:

1. <link rel="glossary" href="https://example.com/glossary">
2. <link rel="glossary" href="https://example.com/glossary#dictionary">

Для конкретного термина:

1. <a rel="bookmark" href="https://example.com/glossary#bar">bar</a>
2. <a rel="glossary" href="https://example.com/glossary#bar">bar</a>
3. <a rel="bookmark glossary" href="https://example.com/glossary#bar">bar</a>
4. <a href="https://example.com/glossary#bar">bar</a>

Что вы считаете лучшимварианты, а почему?Обратите внимание, что вполне возможно, что лучший способ - это то, что я не учел.

1 Ответ

1 голос
/ 14 мая 2019

Тип ссылки glossary относится к «документу, содержащему глоссарий терминов, относящихся к текущему документу».

Тип ссылки bookmark дает постоянную ссылку для ближайшего предка article, а если ее нет, для ближайшего предка section .

Таким образом, когда вы ссылаетесь на определение термина для термина, который появляется в сообщении в блоге (или аналогичном), вы не должны использовать тип bookmark, в противном случае постоянная ссылка для этого сообщения в блоге будет URL-адресом термина определение. Но поскольку сообщение в блоге содержит термины, которые определены в глоссарии, вы можете связать глоссарий с типом ссылки glossary.

<!DOCTYPE html>
<title>Blog post that contains a term defined in the glossary</title>
<link rel="glossary" href="/glossary" />

<article>
  <p>The <a href="/glossary#foo">foo</a> is great.</p>
</article>

Предоставление идентификаторов фрагментов для glossary никогда не должно повредить, и это даже потребовалось бы в некоторых случаях: например, когда идентификатор фрагмента необходим для отображения глоссария, или когда документ дополнительно содержит другое основное содержимое к глоссарию.


Примечание: вы можете использовать элемент dfn в элементе dt и переместить атрибут id в элемент dfn.

<dl id="dictionary">
  <dt><dfn id="foo">foo</dfn></dt>
  <dd>A foo is not a <a href="#bar">bar</a>.</dd>
</dl>

Вас также может заинтересовать добавление структурированных данных с использованием Schema.org DefinedTerm и DefinedTermSet.

...