xsd 两个xsd整合_使用多态替代xsd:choice

本文探讨了在XML Schema(xsd)中使用多态性代替`xsd:choice`的情况,以实现更优的编程语言映射。通过示例说明,解释了如何将`xsd:choice`转换为多态类型,从而提高可扩展性和类型指示。多态类型在JAX-RPC映射中提供更友好的API,并在性能和扩展性方面具有优势。
摘要由CSDN通过智能技术生成

xsd 两个xsd整合

xsd:choice是一种较为常见的XML构造。 但是,将xsd:choice映射到编程语言并不总是那么简单。 例如,JAX-RPC规范定义的Web服务的Java映射没有提供从xsd:choice到Java的显式映射。 每当JAX-RPC代码生成器在类型定义中遇到xsd:choice时,它都会将该类型映射到javax.xml.soap.SOAPElementSOAPElement是SAAJ API的一部分,它不是一个非常用户友好的API。

您可以采取一些措施以获得更好的API。 如果您能够更改XML模式,一个不错的选择是用多态替换xsd:choice

比较xsd:choice和多态

多态性的意思是“许多形状”。 例如,可以使用基本类型声明方法参数。 调用该方法时,该参数的实例是该类型的特定扩展。

您可以类似地描述xsd:choice 。 可以使用描述所有可能选择的类型声明方法参数。 调用该方法时,该参数的实例将包含特定的选择。

实际的单词是不同的,但是它们的含义本质上是相同的。

将简单的xsd:choice类型映射为多态类型

要将典型选择类型转换为一组多态类型,需要在给定选择类型C下执行以下操作,其中包含选择c1..cn:

  1. 构建包含C的那些元素(不是选择元素)的抽象类型P
  2. 对于c1..cn中的每个c,构建E of P的扩展类型E of P其中包含c的元素。

用示例理解概念总是比较容易的。 看一下付款选项的声明。 清单1是选择类型。 清单2是对一组多态类型的转换。

清单1.选择付款
<complexType name="Payment">
  <sequence>
    <element name="amount" type="int"/>
    <choice>
      <element name="cash" nillable="true" type="string"/>
      <element name="check" type="tns:Check"/>
      <element name="credit" type="tns:Credit"/>
    </choice>
  </sequence>
</complexType>

<complexType name="Check">
  <sequence>
    <element name="checkNo" type="int"/>
  </sequence>
</complexType>
<complexType name="Credit">
  <sequence>
    <element name="cardNo" type="string"/>
    <element name="expiration" type="date"/>
  </sequence>
&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值