It's an excellent idea to define standard XML data types and vocabularies to enable better information exchange and process integration within your enterprise. (It definitely does not defeat the whole notion of SOA -- in fact, vocabulary management is a prerequisite to gaining advanced SOA benefits.) As a general rule, WSDL messages should use standard data types whenever possible rather than proliferating redundant, incompatible, and inconsistent ways to represent enterprise data. The actual WSDL message elements, though, are typically unique to a specific service. For example, if you have a service that exposes the operation "getCustomer", you should define WSDL message elements called "getCustomer" and "getCustomerResponse", specifically for this WSDL, but the elements should use corporate standard types, such as "Customer".
It's also an excellent idea to capture those standard data types in a centralized data dictionary or repository to facilitate use of those standard types. There is no widely accepted formal repository standard for WSDLs and XML Schemas, so all solutions are essentially proprietary. (Note that a repository for managing service artifacts is different from a registry for enabling the exchange of service information at runtime. The standard for runtime exchange is UDDI. UDDI is an index to artifacts, but it does not manage the artifacts themselves.)
The SOA repository vendors (HP, Software AG, IBM, BEA, LogicLibrary, SOA Software, etc) provide compelling solutions that help you manage services and service artifacts, including XML data types. (Most of these products include and/or support synchronization with a UDDI registry.) If you're interested in high-end vocabulary management tools, take a look at Progress DataXtend SI and Liaison Contivo.
This was first published in April 2008