【问题标题】:How to maintain element version in xsd如何在 xsd 中维护元素版本
【发布时间】:2013-02-11 10:52:21
【问题描述】:

我有 3 个不同的 xsd。 xsd2 是 xsd1 的超集。 xsd3 是 xsd2 的超集。 我有所有 3 个不同的客户端,它们可能属于任何一个 xsds。 对于他们使用他们的 xsd 提出的每个 xml 请求,我必须生成一个 xml 响应。 我想如果我在某个地方维护哪个元素,哪个版本支持元素属性,然后基于该列表,我可以选择使用 xsd3 填充或不填充该元素。在服务器上,我正在考虑使用 xsd3。因此使用版本列表,我将能够生成可由 xsd1 和 xsd2 解析的 xml。 我想在 xsd 本身内部维护这个元素版本映射。 我怎么做? 我在服务器端使用 jaxb 进行 xml 解析

【问题讨论】:

    标签: java xsd jaxb versioning


    【解决方案1】:

    从您的描述看来,版本之间的差异似乎只是在声明的元素集合中,因此我们可以通过删除一些 xs:element 元素从 xsd3 派生 xsd2,从 xsd2 派生 xsd1 也是如此。

    在这种假设下,管理元素-版本映射的最简单方法是在每个元素声明中添加某个非 XSD 命名空间中的属性,指定哪些版本包含/支持该元素。

    <xs:element name="E" type="tns:T" my:versions="1"/>
    <xs:element name="F" type="tns:T2" my:versions="1 2 3"/>
    <xs:element name="G" type="tns:T3" my:versions="1 2"/>
    <xs:element name="H" type="tns:T4" my:versions="1"/>
    

    您还可以使用 xs:annotation/xs:appinfo 来管理更复杂的信息。

    这些能否满足您的需求取决于您的 XSD 工具提供的界面,或者取决于您从架构文档中提取信息并在没有 XSD 工具帮助的情况下自行利用的能力。

    【讨论】:

      猜你喜欢
      • 2014-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多