YAZ uses a very simple implementation of SOAP that only, currenly, supports what is sufficient to offer SRW functionality. The implementation uses the tree API of libxml2 to encode and decode SOAP packages.
Like the Z39.50 ASN.1 module, the YAZ SRW implementation uses simple C structs to represent SOAP packages as well as HTTP packages.