Сейчас в ссылке невозможно указать тот элемент (то место документа),
который не имеет ни атрибута name, ни атрибута id.
Предлагаю указывать необходимый элемент в нотации XPath
после названия документа и знаков "#:", и называть такое указание меткой читателя.
Пусть '@@' означает конктест элемента за исключением вложенных элементов (получившиеся строки склеиваются; последовательность пробелов, табуляций, переводов строки считаются за один пробел); а знак '~' означает функцию 'contains', в которой переставлены аргументы, т.е. 'a~b' эквивалентно 'contains(b,a)'. Если подходящих html-элементов несколько, найденным является первый из них.
Знак "плюс" между двумя элементами означает то же самое, что и в CSS - что оба элемента находятся на одном и том же уровне иерархии (т.е. вложены в один и тот же обрамляющий элемент), и что номер элемента, расположенного справа от знака "плюс", нужно отсчитывать не от начала содержимого обрамляющего элемента - начать отсчет нужно после элемента, расположенного слева от знака "плюс".
В первом примере браузер ищет первый элемент html,
внутри него ищет первый элемент body,
в котором он ищет 4-й элемент h3 -
метка читателя ссылается на 12-й элемент p после него,
вложенный в элемент body.
Во втором примере браузер ищет первый элемент body,
затем среди элементов, расположенных внутри него, он последовательно ищет:
3-й тег h1;
2-й тег h2 после этого h1;
5-й тег h3 после этого h2;
8-й тег p после этого h3 -
метка читателя ссылается на 3-й элемент b внутри этого параграфа.