【问题标题】:Importing and using external schema using XML Beans使用 XML Beans 导入和使用外部模式
【发布时间】:2010-09-21 21:01:59
【问题描述】:

我有一点问题。我很久以前为我们的生产系统编写了一个 API,它使用了 Apache XML Beans。模式是同质的(即没有导入,所有内容都来自同一个模式),并且一切正常,即使 API 处理的代码非常冗长。从那以后,我使用 JAXB 编写了一个更简单、更优雅的 restful API,考虑到旧 API 的部分内容,即不同的模式,但一些元素是相同的。为了清理和简化我在旧 API 中的绑定代码,我通过删除它们并导入新模式并改用这些元素来替换一些部分。但是,每当我尝试解析使用新模式混合的文档时,我都会从 XML Beans 收到验证错误:

error: cvc-complex-type.2.4a: Expected element 'redundant-element@http://www.my.com/old/xmlns' instead of 'redundant-element@http://www.my.com/new/xmlns' here in element redundant-element-list@http://www.my.com/old/xmlns

有没有人遇到过这种情况?有什么解决方案或想法吗?我真的很感激。非常感谢。

【问题讨论】:

  • 您能粘贴一些 XSD 以便我们排除格式错误的 xsd 问题吗?
  • 我实际上有机会重做整个事情。我使用的 XSD 是在 Eclipse 中创建的,使用他们的图形编辑器进行编辑,并针对 XSD 模式的 W3C 验证器进行了验证,因此我可以安全地排除格式错误的 xsd 问题。

标签: java xsd schema xmlbeans multiple-schema


【解决方案1】:

看起来文档中的命名空间还是旧的。没有架构和文档很难分辨。

【讨论】:

    【解决方案2】:

    感谢您的回复。我已经尝试在文档的根目录和“冗余元素”本身上以多种排列方式显式添加新的命名空间。即:

    <oldxmlns:root xmlns:oldxmlns="abc" xmnls:newxmlns="xyz">
          .....
    </oldxmlns:root>
    

    .. 和 ...

    <oldxmlns:root xmlns:oldxmlns="abc">
       <oldxmlns:nested-element>
             .....
          <newxmlns:redundant-element xmnls:newxmlns="xyz">
               .....
          </newxmlns:redundant-element>
             .....
       </oldxmlns:nested-element>
    </oldxmlns:root>
    

    ...我还尝试了许多与默认命名空间等的组合,但都没有奏效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多