2014-11-05 31 views
3

正在玩弄grails的xsd-reverse-enginering插件,并且遇到了一些问题,我想我知道它是什么,但不知道如何解决它。xsd-reverse-enginering抛出未知类型

有一个巨大的xsd文件包含一个相对高级的模式,我想我会试着看看我是否可以通过让grails从它创建一个gorm对象来节省我很多时间。问题是,制作xsd文件的代理机构根据数据的内容命名了许多XML类型。例如,他们有一个名为消息类型

 <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 

我如何能管理这个任何想法,我能例如定义类型的东西?

+0

任何人都知道添加简单类型的简单方法,可以为我工作。 – vrghost 2014-11-11 06:54:00

+0

根据元素的文档,你是否可以通过'NewSubmission','SubmissionVariation','SubmissionReplacement'和'SubmissionVoid'为'MessageType'设置'enum'? – dmahapatro 2014-11-14 14:36:03

+0

我没有设法使用它的文档方式,这些帮助我会怎么样? – vrghost 2014-11-14 16:40:13

回答

0

,如果你想声明这个类型,你应该定义一个适当的方式类型的标签(如下所述: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> 
+0

我无法更改XML,这是我的问题的一部分,我很乐意为编写XML的组织编写正确的格式,但他们不这样做。这就是为什么我需要让grails模块弄清楚。 – vrghost 2014-11-21 12:58:54

+0

你可以尝试定义一个新的xsd,它将从'locked'xsd继承它的ptoperties吗?像这篇文章中所示:http://stackoverflow.com/questions/10084145/xsd-extend-a-complex-type – ymz 2014-11-22 18:49:20