DEINICIO  DE CONTRATO DE DATOS  - SPRING WEB SERVICES SOAP

El documento WSDL conocido como contrato de servicio, provee una forma estándar en la cual el Cliente del servicio y el Servidor intercambian datos sin importar las diferencias de aplicaciones y plataformas.

XML Schema Definition (XSD), conocido como contrato de datos describe la estructura de los tipos de datos que serán intercambiados.

* Desarrollaremos el contrato guiados mediante la documentación de Spring
 
CONTRATO DE DATOS (XML Schema Definition)
Tipos de datos
Tipo integer: tipo de dato numerico
<xs:element name="Number" type="xs:integer" />
 
Tipo String:tipo de dato que no pone restricción en el campo (o nombre)
<xsd:element name="coError" type="xsd:string" />
 
Tipo NCName (Non-colonized name): a diferencia del string no permite los “:” en el campo. Ejms: “name”
Su tipo contrario seria el QName (Qualified name), ejems: “ns:name”
<xs:element name="FirstName" type="xs:NCName" />
 
Tipo date: tipo de fecha que consiste en un año, mes y dia
<xs:element name="EndDate" type="xs:date" />
 
Tipo NMTOKEN: pertenece al conjunto del XML 1.0 “token names” (tokens de nombre) compuestos por caracteres dígitos, “.”, “:”, “-” y caracteres definidos por Unicode.
En este caso lo utilizamos para fechas
<xs:element name="StartDate" type="xs:NMTOKEN" />
 
Etiquetas en el archivo de contrato de datos
Etiqueta <sequence>
Utilizada para indicar que el orden de los elementos es importante
 
<xs:element name="HolidayRequest">
       <xs:complexType>
             <xs:sequence>//INDICADOR DE ORDEN
                    <xs:element name="Holiday" type="hr:HolidayType" />
                    <xs:element name="Employee" type="hr:EmployeeType" />
             </xs:sequence>
       </xs:complexType>
</xs:element>
 
Etiqueta <all>
Indica al XML parse que el orden no es significante.
<xs:element name="HolidayRequest">
       <xs:complexType>
             <xs:all>
                    <xs:element name="Holiday" type="hr:HolidayType" />
                    <xs:element name="Employee" type="hr:EmployeeType" />
             </xs:all>
       </xs:complexType>
</xs:element>