How to allow for ampersand in XMLtable()?
The error message clearly told you to use &amp;amp;.

with data as (
  select 'Hallöle AT&amp;amp;T and AT &amp;amp; T sloven&amp;#264;ina Hallöle sloven&amp;#273;ina' str from dual
)
select a.str, b.str2
from data a, xmltable( '/'
  passing xmltype( '&lt;dat&gt;' || a.str || '&lt;/dat&gt;' )
  columns
   str2 varchar2(4000) path '/dat'
) b
;

STR
-------------------------------------------------------------------------
STR2
--------------------------------------------------------------------------------
Hallöle AT&amp;amp;T and AT &amp;amp; T sloven&amp;#264;ina Hallöle sloven&amp;#273;ina
Hallöle AT&amp;T and AT &amp; T slovenĈina Hallöle slovenđina


Update (will not work for other special characters such as &amp;gt;):

with data as (
  select regexp_replace('Hallöle AT&amp;T and AT &amp; T sloven&amp;#264;ina Hallöle sloven&amp;#273;ina', '(&amp;)([^#])', '\1amp;\2') str from dual
)
select a.str, b.str2
from data a, xmltable( '/'
  passing xmltype( '&lt;dat&gt;' || a.str || '&lt;/dat&gt;' )
  columns
   str2 varchar2(4000) path '/dat'
) b
;

STR
-------------------------------------------------------------------------
STR2
--------------------------------------------------------------------------------
Hallöle AT&amp;amp;T and AT &amp;amp; T sloven&amp;#264;ina Hallöle sloven&amp;#273;ina
Hallöle AT&amp;T and AT &amp; T slovenĈina Hallöle slovenđina