Во-первых, я хотел бы отметить, что вы можете найти это и многое другое в спецификациях XPath .
Краткая версия заключается в том, что префикс @
указывает на узел атрибута (в отличие от узлов элемента и текста, как правило), *
означает «любое имя» более или менее (поэтому *
соответствует всем элементам и @*
все атрибуты), node()
соответствует любому элементу или текстовому узлу, |
- оператор «соединения» или «объединения» (поэтому @*|node()
соответствует всем элементам, тексту и узлам атрибутов).
Переходя к менее распространенному материалу, namespace-uri()
возвращает полный URI для пространства имен "узла контекста" (подумайте "это" в терминах ОО), а name()
возвращает имя текущего узла с соответствующий префикс пространства имен (обратите внимание, что префикс взят из файла XSLT, а не из файла XML, если они различаются).
Наконец, {...}
- это способ включить выражение XPath в значение атрибута, где они обычно не допускаются. Вы чаще всего будете видеть их в таких конструкциях, как <a href="{link/url}">
.
Я понимаю, что это, вероятно, довольно толстое чтение. Надеюсь, это поможет, хотя. : -)