Спасибо за этот интересный вопрос. Здесь есть еще несколько вещей, которые стоит рассмотреть.
Что такое пара? Два элемента вместе. Поэтому нам нужен тег для этого.
Допустим, это тег pair
.
<pair></pair>
Пара содержит ключ и соответствующее значение:
<pair><key>keyname</key><value>value</value></pair>
Затем нам нужно перечислить пары:
<pairlist>
<pair><key>keyname</key><value>value</value></pair>
<pair><key>keyname</key><value>value</value></pair>
</pairlist>
Следующее, что нужно учесть, это отображение пар.
Обычный макет табличный:
key value
key value
и необязательный разделитель, обычно это двоеточие:
key : value
key : value
Двоеточие можно легко добавить с помощью CSS, но это точно не сработает в IE.
Случай, описанный выше, является идеальным. Но не существует корректной HTML-разметки, которая легко вписалась бы в это.
<ч />
Подводя итог:
dl
семантически ближе всего, для простых случаев ключа и значения, но трудно применять визуальные стили
(например, чтобы отобразить пары в строке или добавить красную рамку для только что зависшей пары). Корпус, который больше всего подходит для dl
- глоссарий. Но это не тот случай, который мы обсуждаем.
Единственная альтернатива, которую я вижу в этом случае, это использовать table
, например:
<table summary="This are the key and value pairs">
<caption>Some notes about semantics</caption>
<thead class="aural if not needed">
<tr><th scope="col">keys</th><th scope="col">values</th></tr>
</thead>
<tbody class="group1">
<tr><th scope="row">key1</th><td>value1</td></tr>
<tr><th scope="row">key2</th><td>value2</td></tr>
</tbody>
<tbody class="group2">
<tr><th scope="row">key3</th><td>value3</td></tr>
<tr><th scope="row">key4</th><td>value4</td></tr>
</tbody>
</table>
Еще один:
<ul>
<li><strong>key</strong> value</li>
<li><strong>key</strong> value</li>
</ul>
или
<ul>
<li><b>key</b> value</li>
<li><b>key</b> value</li>
</ul>
или, когда ключи могут быть связаны:
<ul>
<li><a href="/key1">key1</a> value</li>
<li><a href="/key2">key1</a> value</li>
</ul>
Пары ключ и значение обычно хранятся в базе данных, и они обычно хранят табличные данные,
так что таблица подойдет лучше всего ИМХО.
Что вы думаете?