Майкл Кей прав. «&» Само по себе недопустимо в XML. Это всегда должно сопровождаться сущностью. Примеры включают & <> и т. Д.
Если вы думаете, что ваш поиск не будет работать, потому что вы ищете «&» вместо «&», это неправильное мышление. Как человек, попробуйте перевести в своей голове, что «&» действительно похоже на «&», на анализатор XML. Делать это будет работать:
<url>{substring-before(data($y/link[1]/@href),'&')}</url>