我正在开发一个接收XML请求并提供响应的应用程序。 XSD架构用于帮助验证这些请求并定义XML请求(和响应)的结构。
之前我从未使用过XSD架构,而且谷歌搜索没有证明有用!
XML旧请求的一大块是:
<Products id="847DD">
<ProductType>ASD LFGA</ProductType>
<ProductType>DDD DDD2</ProductType>
<ProductType>KLO O947</ProductType>
</Products>
XSD的部分如下:
<xs:complexType name="Products">
<xs:sequence>
<xs:element name="ProductType" type="xs:string" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
现在我被要求扩展产品类型元素以包含三个子元素:所以新XML将如下所示:
<Products id="0002N">
<ProductType>
<Ind>0</Ind>
<ProductTypeCode>KKK</ProductTypeCode >
<lob>AAW</lob>
</ProductType>
<ProductType>
<Ind>0</Ind>
<ProductTypeCode>DD98</ProductTypeCode >
<lob>SSE</lob>
</ProductType>
<ProductType>
<Ind>K</Ind>
<ProductTypeCode>LKO9</ProductTypeCode >
<lob>XSD</lob>
</ProductType>
</Products>
我挂断的是架构的版本控制。这是架构的1.0版。我们不确定有多少客户正在使用此XML请求服务。因此,我们不能简单地抛弃1.0版本并使用2.0版本。
已要求保持与旧的结构化XML请求的向后兼容性。
我觉得我可以掌握这方面的编程(Java)方面,稍后在XSD架构中有一个版本属性,我可以依靠它来弄清楚应该用什么java逻辑来读取XML文档。 / p>
如何正确版本XSD?我是否必须制作全新的XSD?或者我可以在这里包含新结构吗?我知道我可能需要将ProductType从元素转换为另一个ComplexType(仅适用于V2),我假设我可以嵌套那些? (ComplexType中的ComplextType)?