It's true that not all webmention targets are HTML documents. Because of this, I think it's reasonable to clarify the text, changing
> The sender MUST fetch the target URL (and follow redirects [FETCH]) and check for an HTTP Link header [RFC5988] with a rel value of `webmention`, or an HTML `<link>` or `<a>` element with a rel value of `webmention`.
to
> The sender MUST fetch the target URL (and follow redirects [FETCH]) and check for an HTTP Link header [RFC5988] with a rel value of `webmention`, and if the content-type of the target URL is HTML, the sender MUST also check for an HTML `<link>` or `<a>` element with a rel value of `webmention`.
Requiring all senders to check for the HTTP `Link` header provides the largest opportunity for interop among implementations, since it's possible to publish a Link header regardless of content type.
If you have specific examples of wanting to advertise a webmention endpoint in a non-HTML document, please document them and suggest a (as you said) "standards-compliant way" of advertising the endpoint in the document.
WeChat ID
aaronpk_tv