Create a SimpleType element

Hi!,

I’m migrating an API based on nusoap and I want to know, how I can create “SimpleType” elements with Laminas?

First, I create a soap server with nusoap:

require_once __DIR__ . "/vendor/autoload.php";
require_once __DIR__ . "/vendor/econea/nusoap/src/nusoap.php";

$namespace = "Soap.Service";
$server = new soap_server();
$server->configureWSDL("mysoap", $namespace);
$server->wsdl->schemaTargetNamespace = $namespace;

Then, I add the SimpleType’s. In this case, I need to create a SimpleType for only receive one of the array elements in a ComplexType:

$server->wsdl->addSimpleType(
    'tipoDocumento',
    'xsd:string',
    'SimpleType',
    'scalar',
    [
        'DNI',
        'LE',
        'LC',
        'CI',
        'PASSPORT'
    ]
);

Finally, I create the ComplexType’s where I need to use the SimpleType “tipoDocumento”:

$server->wsdl->addComplexType(
'persona',
'complexType',
'struct',
'sequence',
'',
array(
        'tipoDocumento' => array('name' => 'tipoDocumento', 'type' => 'xsd:tipoDocumento'),
        'nombre' => array('name' => 'nombre', 'type' => 'xsd:string', 'use' => 'required'),
        'email' => array('name' => 'email', 'type' => 'xsd:string', 'minOccurs' => '0'),
    )
);

This is the xml that I wanted:

<xsd:simpleType name="tipoDocumento">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="DNI"/>
        <xsd:enumeration value="LE"/>
        <xsd:enumeration value="LC"/>
        <xsd:enumeration value="CI"/>
        <xsd:enumeration value="PASSPORT"/>
        </xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="persona">
    <xsd:all>
        <xsd:element name="tipoDocumento" type="xsd:tipoDocumento"/>
        <xsd:element name="nombre" type="xsd:string" use="required"/>
        <xsd:element name="email" type="xsd:string" minOccurs="0" maxOccurs="2"/>
    </xsd:all>
</xsd:complexType>

Thanks!