Это не саксонская, а фундаментальная часть того, как работают пространства имен. В ваших примерах 1 и 2 элемент RESPONSE
не находится в пространстве имен, но в случае 3 он (и все его потомки) находятся в пространстве имен http://www.abc.com/
. С API javax.xml.xpath
вам нужно определить NamespaceContext
, если вы хотите иметь возможность сопоставлять узлы в определенном пространстве имен, или, поскольку вы находитесь в XPath 2.0, вы можете использовать обозначение *:localName
для соответствия всем узлам с помощью данное локальное имя, независимо от их пространства имен.
/*:RESPONSE/*:HEADER/*:HITS
Первый будет работать так, как вы хотите - однако вы обойдете ограничение безопасности, и теперь ваши страницы уязвимы для внедрения JavaScript (что является первоначальной причиной, по которой это изменение было сделано).
Второй просто не работает. Она не расширяет переменную ${parameter1}
, а просто кодирует ее как URL-адрес, например:
onclick="myFunction?$%7Bparameter1%7D"
Вы действительно должны делать это, как показано на странице.
th:data-parameter1="${parameter1}" onclick="myFunction(this.getAttribute('data-parameter1'));"