':' означает, что ваш документ использует пространства имен, и пространства имен меняют мир.
Для начала, объявление пространства имен в исходном XML (например, xmlns:extendedmarkupcontroller="urn:ExtendedMarkupController"
) не становится узлом атрибута вмодель данных XDM, поэтому вы не можете получить к ней доступ, используя ось атрибута (или сокращение «@» для оси атрибута).Если вы хотите найти элемент, имя которого находится в этом пространстве имен, то правильный предикат для использования будет
[namespace-uri()='urn:ExtendedMarkupController']
В вашем примере, однако, элемент объявляет пространство имен, но этона самом деле не использует пространство имен.Проверка того, объявляет ли элемент определенное пространство имен, когда это пространство имен фактически не используется, является довольно необычным требованием.Вы можете сделать это с осью пространства имен:
[namespace::extendedmarkupcontroller="urn:ExtendedMarkupController"]
, хотя некоторые процессоры XPath не полностью реализуют спецификацию в этой области.
Этого должно быть достаточно для этой конкретной проблемы, но есливы начинаете работать с пространствами имен. Я бы порекомендовал прочитать эту тему, прежде чем писать какой-либо код, потому что есть много подводных камней.