У меня есть эта XML-база данных:
<database>
<event>
<location> abc </location>
</event>
<event>
<location> abc </location>
</event>
<event>
<location> abc </location>
</event>
<event>
<location> def </location>
</event>
<event>
<location> def </location>
</event>
<database>
И я попытался получить этот вывод с помощью XPath:
abc
def
Типы узла местоположения.
Если я использую
//location
результатом будут токены:
abc
abc
abc
def
def
Возможно ли это даже с XPath? Я пробовал, но не нашел решения.
@МайклКей en.wikipedia.org/wiki/…
К сожалению, и «тип», и «токен» имеют разные значения в языке XPath.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Использование: distinct-values(//location)
Важно отметить, что это работает только с XPath-2.0.
Спасибо, но это я уже пробовал. Я получаю эту ошибку: Uncaught DOMException: Не удалось выполнить «оценку» для «Документа»: строка «различные значения (// расположение)» не является допустимым выражением XPath. показать результат xhttp.onreadystatechange
Есть ли веская причина, по которой вы не можете использовать процессор XPath 2.0? Даже в мире Javascript существуют процессоры XPath 2.0.
Группировку в строгом XPath 1.0 можно выполнить с помощью этого выражения:
/database
/event
/location[
not(. = ../preceding-sibling::event/location)
]
Примечание: имеет квадратичную сложность. В небольших документах об этом можно не беспокоиться.
Я действительно не знаю, что вы имеете в виду под «типами» и «токенами» здесь, вы, кажется, используете слова с нетрадиционным значением.