Using a schema, I created classes for my web service using the XSD.exe tool.
With the classes I then wrote a web service function, but the WSDL that is
generated has different minOccurs and maxOccurs values for my elements. I
can seem to figure out why this has changed or how to correct it. I can't
find any way to manually modify the classes for minOccurs or maxOccurs
either. It can happen whether I explicitly set the minOccurs/maxOccurs values
in the original schema or leave them as defaults. Any insight? Code samples
below. Thanks.
schema ---> xsd.exe ---> New class(es) ---> WSDL
'// ***** Original schema sample *****
<xsd:complexType name="MessageHeaderType">
<xsd:sequence>
<xsd:element name="MessageID" type="BLS-DB:MessageIDType"/>
<xsd:element name="Acknowledgement" type="BLS-DB:AcknowledgementType"
minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="MessageIDType">
<xsd:sequence>
<xsd:element name="ID" type="xsd:normalizedString"/>
<xsd:element name="Timestamp" type="xsd:dateTime"/>
<xsd:element name="MessageType" type="BLS-DB:MessageNameType"/>
<xsd:element name="Sender" type="BLS-DB:ParticipantType"/>
</xsd:sequence>
</xsd:complexType>
'//***** Generated Class Sample *****
'<remarks/>
<System.Xml.Serialization.XmlTypeAttribute([Namespace]:="M-TEST")> _
Public Class MessageHeaderType
'<remarks/>
Public MessageID As MessageIDType
'<remarks/>
Public Acknowledgement As AcknowledgementType
End Class
'<remarks/>
<System.Xml.Serialization.XmlTypeAttribute([Namespace]:="M-TEST")> _
Public Class MessageIDType
'<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Data Type:="normalizedString")> _
Public ID As String
'<remarks/>
Public Timestamp As Date
'<remarks/>
Public MessageType As MessageNameType
'<remarks/>
Public Sender As ParticipantType
End Class
'//***** Generated WSDL Sample *****
<s:complexType name="MessageHeaderType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="MessageID"
type="s1:MessageIDType" />
<s:element minOccurs="0" maxOccurs="1" name="Acknowledgement"
type="s1:AcknowledgementType" />
</s:sequence>
</s:complexType>
<s:complexType name="MessageIDType">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ID"
type="s:normalizedString" />
<s:element minOccurs="1" maxOccurs="1" name="Timestamp"
type="s:dateTime" />
<s:element minOccurs="1" maxOccurs="1" name="MessageType"
type="s1:MessageNameType" />
<s:element minOccurs="1" maxOccurs="1" name="Sender"
type="s1:ParticipantType" />
</s:sequence>
</s:complexType>