我正在使用Spring 3.1
我有一个通用响应XSD,我用它作为几种请求类型的响应。我现在有了一个新要求,其中每个请求都需要具有单独的响应类型。但我想要的是这些新的响应具有相同的通用响应结构。属性ect是相同的,唯一的变化是名称,即<xs:element name="itemOneResponse">
我的通用回复 - genericResponse.xsd :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://me.com" attributeFormDefault="unqualified">
<xs:element name="genericResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="responseCode" type="xs:int"/>
<xs:element name="errorCode" type="xs:int"/>
<xs:element name="errorDescription" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我有3个新的个人回复与通用回复相同,但名称不同。一个例子如下:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://me.com" attributeFormDefault="unqualified">
<xs:element name="itemOneResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="responseCode" type="xs:int"/>
<xs:element name="errorCode" type="xs:int"/>
<xs:element name="errorDescription" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如何获取新的自定义响应以引用genericResponse.xsd架构及其元素?
答案 0 :(得分:0)
使用xs:complexType
属性定义单个name
,然后使用xs:complexType
的{{1}}属性引用该type
。
xs:element
答案 1 :(得分:0)
编写一个通用的XSD文档,其中有一个使用abstract =“true”定义的genericResponse的元素声明。
然后为每种消息类型编写一个XSD文档,它使用xs:include来合并通用XSD,并使用subsitutionGroup =“genericResponse”定义响应的特定元素,以便可以使用特定元素代替抽象的,通用的。如果没有为此元素指定类型,那么它将继承genericResponse元素的类型。 (或者,您可以为自定义元素指定一种扩展或限制泛型类型的类型。)
然后,应针对特定消息类型的自定义架构验证单个消息。