WebService的WSDL编写
<?xml version="1.0" encoding="UTF-8"?><!-- 定义一个班级,班级有班级名称,有年纪,有学生 --><!ELEMENT classroom (claName,grade,students)><!—将id定义为班级的一个属性(ID性质不能有同名的) --><!ATTLIST classroom id ID #REQUIRED><!-- 设置节点的类型“#PCDATA”,在DTD里面只有“#PCDATA”这一种类型限制(它的局限性) --><!ELEMENT claName (#PCDATA)><!ELEMENT grade (#PCDATA)><!-- 一个班级内会有好多学生于是学生是个复数,然后再定义每个学生 --><!ELEMENT students (student+)><!—常用控制符?表示0或者1次,*代表0或者多次,+1次以上包含1次,默认不写就表示1次(这些是正则规则) --><!-- 定义每个学生的信息 --><!ELEMENT student (id,stuName,age)><!ELEMENT id (#PCDATA)><!ELEMENT stuName (#PCDATA)><!ELEMENT age (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE classroom SYSTEM "classroom.dtd"><classroom id="c1"><claName>10计算机应用技术</claName><grade>2010</grade><students><student><id>1</id><stuName>zhangsan</stuName><age>12</age></student><student><id>2</id><stuName>lisi</stuName><age>122</age></student></students></classroom>
<?xml version="1.0" encoding="UTF-8"?><!-- 首先,先看一下schema的几个属性,xmlns:xsd引用schema的文件固定写法,当然后面的:xsd可以不写也可以换其他的,他表示要引用schema的信息需要在xsd:下引用,tagetNameSpace指定的本文件的命名空间,xmlns:tns与tagetNameSpace是一致的,其后面的tns是指明要引用当前命名空间下的信息需要在前面加上tns前缀 --><?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/classroom" xmlns:tns="http://www.example.org/classroom" elementFormDefault="qualified"><!-- 定义一个节点学生,是学生类型 --><xsd:element name="student" type="tns:studentType"/><!-- 下面定义学生类型是什么样子的,complexType代表是复杂类型 --><xsd:complexType name="studentType"><!-- 复杂类型一般都需要建立一个序列 --><xsd:sequence><!-- 设置属性及类型 --><xsd:element name="name" type="xsd:string"/><xsd:element name="sex" type="tns:sexType"/></xsd:sequence></xsd:complexType><!-- 设置类型的限制条件 --><xsd:simpleType name="sexType"><xsd:restriction base="xsd:string"><xsd:enumeration value="男"/><xsd:enumeration value="女"/></xsd:restriction></xsd:simpleType></xsd:schema>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://www.dhy.com/user/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="userService"targetNamespace="http://www.dhy.com/user/"><!-- 引入xsd文件 --><wsdl:types><xsd:schema targetNamespace="http://www.dhy.com/user/"><!-- <xsd:import namespace="http://www.dhy.com/user/" schemaLocation="user.xsd"/> --><xsd:include schemaLocation="user.xsd"/></xsd:schema></wsdl:types><!-- add的消息(相当于类有一个add方法) --><wsdl:message name="add"><!-- 消息里面包含add对象(相当于类中要传入的值) --><wsdl:part element="tns:add" name="parameters" /></wsdl:message><!-- add的返回消息相当于return --><wsdl:message name="addResponse"><wsdl:part element="tns:addResponse" name="parameters" /></wsdl:message><wsdl:message name="delete"><wsdl:part element="tns:delete" name="parameters" /></wsdl:message><wsdl:message name="deleteResponse"><wsdl:part element="tns:deleteResponse" name="parameters" /></wsdl:message><!-- 接口方法 --><wsdl:portType name="IUserService"><!-- 具有add方法 ,这里注意wsdl的add和tns的add不是一个意思--><wsdl:operation name="add"><!-- 输入项 --><wsdl:input message="tns:add" /><!-- 输出项 --><wsdl:output message="tns:addResponse" /></wsdl:operation><!-- 具有delete方法 --><wsdl:operation name="delete"><wsdl:input message="tns:delete" /><wsdl:output message="tns:deleteResponse" /></wsdl:operation></wsdl:portType><wsdl:binding name="userServiceSOAP" type="tns:IUserService"><soap:binding style="document"transport="http://schemas.xmlsoap.org/soap/http" /><wsdl:operation name="add"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation><wsdl:operation name="delete"><wsdl:input><soap:body use="literal" /></wsdl:input><wsdl:output><soap:body use="literal" /></wsdl:output></wsdl:operation></wsdl:binding><!-- 服务名称,总结起来就是IUserService为服务接口,userService为服务的名称,我们想调用服务提供add方法,我们传入add类型的信息(在user.xsd中定义)即User的信息,然后服务端给返回个addResponse(也在user.xsd中定义) --><wsdl:service name="userService"><wsdl:port binding="tns:userSOAP" name="userSOAP"><soap:address location="http://localhost:8989/ms/" /></wsdl:port></wsdl:service></wsdl:definitions>