Looking to the service array:

<verbatim>
simpletypes -> list of ... {tns1:Envelope {base string comment {} xns tns1}} ...
</verbatim>

so it is considered as simple type, cousing this result.

Looking at the wsdl:

Definition of FullExtend in the output:
<verbatim>
      <xs:complexType name="MapServerInfo">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:sequence>
          <xs:element name="Name" type="xs:string" />
          <xs:element name="Description" type="xs:string" />
          <xs:element minOccurs="0" name="FullExtent" type="Envelope" />

</verbatim>

-> type is "Envelope".

<verbatim>
<definitions


  <types>
    <xs:schema


..
      <xs:complexType name="Envelope" abstract="true">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Geometry" />
        </xs:complexContent>
      </xs:complexType>
</verbatim>

Now letts look for Geometry:

<verbatim>
      <xs:complexType name="Geometry">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
      </xs:complexType>
</verbatim>

This is nothing.


When reverse looking for the returned element "XMin", I only get one type, which directly follows the Extend type:

<verbatim>
      <xs:complexType name="Envelope" abstract="true">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Geometry" />
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="EnvelopeN">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Envelope">
            <xs:sequence>
              <xs:element name="XMin" type="xs:double" />
              <xs:element name="YMin" type="xs:double" />
              <xs:element name="XMax" type="xs:double" />
              <xs:element name="YMax" type="xs:double" />
              <xs:element minOccurs="0" name="ZMin" type="xs:double" />
              <xs:element minOccurs="0" name="ZMax" type="xs:double" />
              <xs:element minOccurs="0" name="MMin" type="xs:double" />
              <xs:element minOccurs="0" name="MMax" type="xs:double" />
              <xs:element minOccurs="0" name="SpatialReference" type="SpatialReference" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
      <xs:complexType name="EnvelopeB">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
        <xs:complexContent mixed="false">
          <xs:extension base="Envelope">
            <xs:sequence>
              <xs:element name="Bytes" type="xs:base64Binary" />
            </xs:sequence>
          </xs:extension>
        </xs:complexContent>
      </xs:complexType>
</verbatim>

Here is the definition matching the input data.

It seams to be something like abstract classes in oo-c.

The type is empty and replaced by one of the real types in function of context.

So, I suppose, abstract classes are not supported or broken.