以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 Web Services & Semantic Web Services 』 (http://bbs.xml.org.cn/list.asp?boardid=10) ---- 通过比较来理解Schema与WSDL中的targetNamespace属性 (http://bbs.xml.org.cn/dispbbs.asp?boardid=10&rootid=&id=36223) |
-- 作者:flyfoxs -- 发布时间:7/30/2006 11:09:00 AM -- 通过比较来理解Schema与WSDL中的targetNamespace属性 注:此帖只是自己领悟所得,如有错误请大家指教。后面附了参考文献,如果我讲的不清,大家可以接着去查看参考文献。 在Schema中targetNamespace定义了Schema定义出的新元素与属性的名称空间。也就是它是对所定义的XML模型进行限制:限制定义出的元素,或者属性的名称空间。与targetNamespace相关的还有两个属性:elementFormDefault ,attributeFormDefault,这两个属性的缺省值都是unqualified。 如果定义为unqualified表示定义的元素的名称空间可以缺省,此时直接引用父元素的名称空间。如果是qualified则表示,必需要指明名称空间,不能直接引用其父元素的,要指明。(如果Schema限定的文档,刚好定义了”空的名称空间“并且刚好与targetNamespace一至,可以缺省)。
在WSDL中也有一个targetNamespace,但是没有Schema中的两个属性。但其它这两个属性在WSDL中其实并不需要,不管这两个属性取值,对文档其实没有什么影响,所以也就不用定义这两个属性。 不失一般性,下面我假定WSDL与SOAP绑定。WSDL是用来定义的是服务的一些属性,targetNamespace定义的服务“收到的请求”与“发出响应”的一些属性(也许有其它的,但我没发现,如果有知道的,请指教),定义了请求与响应对应的XML元素应该使用的名称空间。从SOAP协议中,我们可以看到,响应与请求元素的父元素是<env:Body>,它的名称空间是SOAP标准指定了的,根据不同的SOPA协议版本不同,比如Soap1.1为http://schemas.xmlsoap.org/soap/envelope/ ,而Soap1.2为http://www.w3.org/2001/06/soap-envelope。 这样导致了响应与请求元素也就无法使用其父元素的名称空间,要使响应与请求的名称空间与targetNamespace一至,元素也就不能使用缺省的父元素的名称空间,必需显示的使用完整的名称空间。这样在Schema中出现的elementFormDefault ,attributeFormDefault两个属性,也就在WSDL中没有存在的必要了。
参考文献: http://www.w3.org/TR/xmlschema-0/#UnqualLocals (Schema的官方文档) http://www.w3.org/TR/wsdl#_Toc492291093 (WSDL的官方文档)
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
31.250ms |