【问题标题】:xsd-reverse-enginering throws unknown typexsd-reverse-engineering 抛出未知类型
【发布时间】:2014-11-05 10:11:10
【问题描述】:

正在玩 grails 的 xsd-reverse-engineing 插件,遇到了一个问题,我想我知道它是什么,但不知道如何解决它。

有一个巨大的 xsd 文件,其中包含一个相对高级的模式,我想我会尝试通过让 grails 从中创建一个 gorm 对象来为自己节省很多时间。问题是制作 xsd 文件的机构已经根据数据的内容命名了许多 XML 类型。例如,它们有一个名为 MessageType 的元素

        <xs:element name="MessageCategory" type="MessageType" id="S1.1">
        <xs:annotation>
            <xs:documentation>The type of message: either an original Submission (NewSubmission), an update on a submission (SubmissionVariation), a complete replacement of one message with another (SubmissionReplacement) or submission that should not have been sent (SubmissionVoid) that should be effectively deleted.</xs:documentation>
        </xs:annotation>
    </xs:element>

这会引发以下错误

Unknown simpleType: MessageType  

关于如何管理它的任何想法,例如我可以定义类型或其他东西吗?

【问题讨论】:

  • 任何人都知道添加简单类型的简单方法,可以为我工作。
  • 根据元素的文档,你不能有一个enum 用于MessageTypeNewSubmissionSubmissionVariationSubmissionReplacementSubmissionVoid 吗?
  • 我没有设法在它的文档方面使用太多,这些对我有什么帮助?

标签: grails xsd


【解决方案1】:

如果你想声明这个类型,你应该以适当的方式定义类型标签(如这里所述:http://msdn.microsoft.com/en-US/library/8w07bk3h%28v=vs.80%29.aspx

例如:一个简单的类型定义(如数字)

<xs:simpleType name="MessageType">
  <xs:restriction base="xs:integer">
    <xs:minInclusive value="0"/>
    <xs:maxInclusive value="100"/>
  </xs:restriction>
</xs:simpleType>

复杂类型定义(称为元素)

<xs:element name="MessageType">

  <xs:simpleType ...>
  </xs:simpleType>

  <xs:simpleType ...>
  </xs:simpleType>

</xs:element>

【讨论】:

  • 我无法更改 XML,这是我的问题的一部分,我希望编写 XML 的组织遵循正确的格式,但他们没有。这就是为什么我需要得到 grails 模块来解决这个问题。
  • 你能尝试定义一个新的xsd,它会从'locked' xsd继承它的ptoperties吗?类似于这篇文章中显示的内容:stackoverflow.com/questions/10084145/xsd-extend-a-complex-type
猜你喜欢
  • 2021-09-01
  • 2015-05-04
  • 2017-08-13
  • 2019-06-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 2014-12-12
相关资源
最近更新 更多