public static function loadMessagesAndVersions($wsdls)
    {
        $msgAndVer = [];

        foreach ($wsdls as $wsdl) {
            $wsdlIdentifier = self::makeWsdlIdentifier($wsdl);

            self::$wsdlIds[$wsdlIdentifier] = $wsdl;

            self::loadWsdlXpath($wsdl, $wsdlIdentifier);

            $operations = self::$wsdlDomXpath[$wsdlIdentifier]->query(self::XPATH_ALL_OPERATIONS);
            if ($operations->length === 0) {
                //No operations found - are there any external WSDLs being imported?
                $imports = self::$wsdlDomXpath[$wsdlIdentifier]->query(self::XPATH_IMPORTS);
                $operations = [];

                foreach ($imports as $import) {
                    if (!empty($import->value)) {
                        $tmpMsg = self::getMessagesAndVersionsFromImportedWsdl(
                            $import->value,
                            $wsdl,
                            $wsdlIdentifier
                        );
                        foreach ($tmpMsg as $msgName => $msgInfo) {
                            $msgAndVer[$msgName] = $msgInfo;
                        }
                    }
                }
            }

            $msgAndVer = array_merge(
                $msgAndVer,
                self::loopOperationsWithQuery(
                    $operations,
                    self::XPATH_VERSION_FOR_OPERATION,
                    $wsdlIdentifier,
                    self::$wsdlDomXpath[$wsdlIdentifier]
                )
            );
        }

        return $msgAndVer;
    }