通用类型 xsd 就像 java
generic type xsd like in java
问题:在 xsd 对象定义中可以有与在 Java 泛型中相同的行为吗?
所以基本上我需要的是 return xml 对象类型的 Soap 方法是 returned 对象(子对象之一)的具体类型,而不是父对象,基类型。基本上 wsdl 说 returned 对象是父对象,或者是子对象之一。
更具体:
Java:
public <T extends BaseObject> T getData(){
....
return oneOfTheChildObjectsOfBaseObject;
}
xsd:
<xs:complexType name="baseObject">
<xs:complexContent>
<xs:sequence>
<xs:element name="element1" type="xs:string"/>
</xs:sequence>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Child1">
<xs:complexContent>
<xs:extension base="tns:baseObject">
.... specific child props
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Child2">
<xs:complexContent>
<xs:extension base="tns:baseObject">
.... specific child props
</xs:extension>
</xs:complexContent>
</xs:complexType>
SOAP 消息只是一个 XML 文档,带有符合 SOAP 模式的信封和符合其中一种操作类型模式的 <body>
标记。
在 XML 中执行所需操作的标准方法是使用 xsi:type 属性提供元素的具体类型。您指定的类型 必须 派生自基本类型,否则 XML 处理器应该报告错误。根据 XSD 的构造方式,可能还有其他关于允许哪些类型的规则。
为了完整起见,您可能还想阅读有关替换组的内容 - 它们为元素而非类型提供等效机制。
问题:在 xsd 对象定义中可以有与在 Java 泛型中相同的行为吗?
所以基本上我需要的是 return xml 对象类型的 Soap 方法是 returned 对象(子对象之一)的具体类型,而不是父对象,基类型。基本上 wsdl 说 returned 对象是父对象,或者是子对象之一。
更具体:
Java:
public <T extends BaseObject> T getData(){
....
return oneOfTheChildObjectsOfBaseObject;
}
xsd:
<xs:complexType name="baseObject">
<xs:complexContent>
<xs:sequence>
<xs:element name="element1" type="xs:string"/>
</xs:sequence>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Child1">
<xs:complexContent>
<xs:extension base="tns:baseObject">
.... specific child props
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Child2">
<xs:complexContent>
<xs:extension base="tns:baseObject">
.... specific child props
</xs:extension>
</xs:complexContent>
</xs:complexType>
SOAP 消息只是一个 XML 文档,带有符合 SOAP 模式的信封和符合其中一种操作类型模式的 <body>
标记。
在 XML 中执行所需操作的标准方法是使用 xsi:type 属性提供元素的具体类型。您指定的类型 必须 派生自基本类型,否则 XML 处理器应该报告错误。根据 XSD 的构造方式,可能还有其他关于允许哪些类型的规则。
为了完整起见,您可能还想阅读有关替换组的内容 - 它们为元素而非类型提供等效机制。