验证WSDL文件
WSDL文档不仅是WSDL文档,而且还是XML文档。因此,它可以作为XML和WSDL进行验证。下方列表包含了有关XMLSpy企业版和专业版中WSDL验证行为的重要信息。
•专业版执行简单的Schema验证,也就是说,它将WSDL文件视为XML文件,并根据在http://schemas.xmlsoap.org/wsdl/中定义的Schema对其进行验证。
•企业版提供的WSDL验证超出了专业版所提供的XML验证。它不会根据http://schemas.xmlsoap.org/wsdl/进行验证,而是依据https://www.altova.com/specs_wsdl.html#_document-s文档及其逻辑。这将在WSDL的上下文中提供额外的验证信息。因此,WSDL文件可能在专业版中是有效的,但在企业版中是无效的(参见下方示例)。
•http://schemas.xmlsoap.org/wsdl/和https://www.altova.com/specs_wsdl.html#_document-s之间有一个区别。前一个Schema不包含在WSDL规范中定义的extensibility elements的定义。看起来这个缺点是官方W3C Schema中的一个错误;这个缺点在后一个Schema中得到了解决(由企业版使用)。
•由于专业版使用http://schemas.xmlsoap.org/wsdl/进行验证,因此扩展性元素在专业版中会被报告为无效,但在企业版 (它使用https://www.altova.com/specs_wsdl.html#_document-s)中却有效。
•由于W3C Schema是W3C工作组提供的官方Schema,因此不幸的是,其中的任何错误都超出了Altova的控制范围。
示例
以下示例是WSDL文件的一部分。请注意,getCityTime元素已在文件中声明。此元素被错误地引用为getCityTimes。企业版将检查之前引用的元素是否已在文件中声明,而专业版不会检查这一点。此文件(假设文件的其余部分都是有效的)将在专业版中视为有效,但在企业版(假设未在文件的其他位置定义getCityTimes)中视为无效。
<s:element name="getCityTime">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="city" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="abc">
<s:complexType>
<s:sequence>
<s:element ref="getCityTimes"/>
</s:sequence>
</s:complexType>
</s:element>