Though some people claim that XML Validation is the highest goal for SOAP processors, it can have very bad effects - in fact quite the opposite, i.e. accepting (formally) invalid XML in a defined way is required.
This is especially true in SOA environments: Imagine a SOAP server and a SOAP Client, both aiming to perform an upgrade, which adds a child element to a datatype.
The client usually cannot upgrade before the server is upgraded (because additional elements usually imply additional processing which will fail without the additional attribute).
The server cannot upgrade, because the client will fail fatally because of a unknown XML element.
This scenario results in an undesirable situation where SOAP Client and Server can only be upgraded simultaneously, which effectifely prevents "rolling" updates where several systems in a cluster (and in clusters in different tiers) are updated one ofter another.
One way to allow such "rolling" updates is handling unknown XML elements / attributes in a defined non-fatal way.
The probably best way to do so is just to skip them - the application above can't handle these, anyway, and returning __SKIP__ is the natural way for SOAP::WSDL's typemaps.