Аннотирование / маркировка произвольных фрагментов HTML-разметки - PullRequest
1 голос
/ 10 июля 2011

Решая проблему аннотирования HTML-разметки и сохранения меток в самой разметке, элемент <mark> оказался пробным решением.Маркировка в строке:

<p>The fox <mark>jumped over</mark> the lazy dog.</p>

Я хочу распространить эту идею на маркировку (выделение) произвольных фрагментов текста в документе.К сожалению, следуя этому подходу, отметьте, скажем, через абзацы, сгенерируйте недопустимый HTML (<mark> ожидает фразовое содержимое) и, возможно, нарушите иерархию DOM:

<mark><p>Red Green Blue.</p> <p>Magenta, Cyan,</mark> Black</p>

Хотя интеллектуальный анализатор может перевести вышеприведенный:

<p><mark>Red Green Blue.</mark></p> <p><mark>Magenta, Cyan,</mark> Black</p>

это не сохраняет того факта, что был один знак, охватывающий абзац и фрагмент второго абзаца, а не два знака!

Что является лучшим, возможно, семантическимспособ сделать это, не нарушая иерархию DOM?Я пытаюсь запросить эти данные через DOM / JS API.

1 Ответ

0 голосов
/ 11 июля 2011

Единственное жизнеспособное решение с точки зрения разметки - это следовать примеру вашего умного парсера.Предполагая, что информация выделения (или, скорее, информация о том, что исходное выделение охватывало абзацы) требуется только для машинного использования, можно затем добавить пользовательский атрибут данных , группирующий эти отдельные элементы mark:

<p><mark data-mark-group="1">Red Green Blue.</mark></p> <p><mark data-mark-group="1">Magenta, Cyan,</mark> Black</p>

Эта информация также может потенциально использоваться с каким-то JS для обозначения основных моментов по абзацам в стиле, но я оставлю это в качестве упражнения для читателя.

...