Schema is the protocol
More precisely, it’s schema+encoding that define a concrete protocol, but if we’re assuming the verbose encoding (‘normal’ XML, for debugging), it’s the schema alone that suffices for defining the protocol. And, naturally, each version of an XML schema defines a different protocol. Due to the flexible processing of XML, apps are quite often able to handle several protocols. (Which albeit are/shouldbe/mustbe quite similar.)
And as encodings are completely isolated from the schema, those are transparent for the application.
Btw., this is no way an academic discussion, this is pure practice. I’m into implementation currently, all major research is on the hold currently.