LemMinX provides an implementation of the LSP for XML, written in Java, and based on the Eclipse LSP4J framework.
It implements most of the language server protocol features to provide XML editing support while also exposing extension points for 3rd party adopters to provide custom features via a plugin system.
Here are some plugin examples:
XML syntax/matched grammar validation, via the Xerces XML validator
XML completion based on grammar, via Xerces
Proof-of-Concept plugins like Maven, emmet or web.xml extensions.
LemMinX is reusable as a Language Server for downstream projects, but some components, such as the fault-tolerant parser or the service layer can also be reused directly.