• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

xsd:any:幕后故事

发布: 2008-6-02 15:29 | 作者: 不详 | 来源: Russell Butek/developerWorks 中国 | 查看: 63次 | 进入软件测试论坛讨论

领测软件测试网 关键字:xsd:any XML 

  xsd:any 是一个用于设计 XML 模式的流行特性。但它所带来的麻烦常常比它所带来的价值还要多。了解 xsd:any 在 XML 本身中和 JAX-RPC Java 语言绑定中的一些不足之处后,即使您决定使用 xsd:any,也能为更好地使用它做好准备。

  引言

  人们为什么喜欢使用 xsd:any 呢?我听人们谈起过很多原因:为了实现松散耦合、为了启用版本管理、为了获得完全灵活的多态性。而所有这些理由最终都归结为不需对 API 进行更改。这是一个很不错的理由,但在实践中,使用 xsd:any 既不恰当,也不实际。如果所处的是动态环境,仅处理 XML,则 xsd:any 可能非常合适(也的确如此)。但大多数人并不喜欢动态访问 XML(即 SAX 或 DOM 或 SAAJ 编程模型)的复杂性,而且,即使他们喜欢这种复杂性,动态性也会受到局限。而 XML 很少存在于“真空环境”中。XML 几乎总是映射到别的对象或与其他对象进行交互。例如,XML 模式可能作为 Web 服务的一部分而存在,而这意味着将可能处理语言绑定问题。因此,应当对语言绑定将 xsd:any 映射到给定语言的方式加以注意。在本文中,我将重点讨论 JAX-RPC Java™ 语言绑定。

  使用 xsd:any 的 Web 服务示例

  让我们看一下清单 1 中的 WSDL 文件示例。这是一个简单的宠物医院 Web 服务。它定义了一个名为 registerPet 的操作,其输入信息包含一个 xsd:any。此 WSDL 还定义了两个宠物类型:cat 和 fish。

  清单 1. 使用 xsd:any 的兽医服务 WSDL

<?xml version="1.0" encoding="UTF-8"?>
<definitions
    targetNamespace="urn:any"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="urn:any"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <schema
        targetNamespace="urn:any"
        xmlns:tns="urn:any"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns="http://www.w3.org/2001/XMLSchema">
      <complexType name="Cat">
        <sequence>
          <element name="name" type="xsd:string"/>
          <element name="breed" type="xsd:string"/>
        </sequence>
      </complexType>
      <complexType name="Fish">
        <sequence>
          <element name="name" type="xsd:string"/>
          <element name="saltWater" type="xsd:boolean"/>
        </sequence>
      </complexType>
      <element name="registerPet">
        <complexType>
          <sequence>
            <any namespace="##any"/>
          </sequence>
        </complexType>
      </element>
      <element name="registerPetResponse">
        <complexType>
          <sequence/>
        </complexType>
      </element>
    </schema>
  </types>
  <message name="registerPetRequest">
    <part name="registerPetRequest" element="tns:registerPet"/>
  </message>

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 故事 xsd 幕后

51/512345>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网