如何在企业架构师中使用UML生成XSD simpleType
我在EnterpriseArchitect中使用标准UML,并希望从模型中生成xsd。我知道我可以将模型转换为具有XSDComplexType原型的类型,然后每次转换后都对其进行修改?或者直接附加它们,但我希望尽可能不知道xsd 这是我在使用UML类时得到的,值是属性: 这是我在使用UML枚举时得到的结果: 这是我希望作为输出实现的目标,而不是上述目标:如何在企业架构师中使用UML生成XSD simpleType,xsd,enterprise-architect,Xsd,Enterprise Architect,我在EnterpriseArchitect中使用标准UML,并希望从模型中生成xsd。我知道我可以将模型转换为具有XSDComplexType原型的类型,然后每次转换后都对其进行修改?或者直接附加它们,但我希望尽可能不知道xsd 这是我在使用UML类时得到的,值是属性: 这是我在使用UML枚举时得到的结果: 这是我希望作为输出实现的目标,而不是上述目标: 要使用的UML类型以及要用于所需输出的字段/标记的位置?您应该使用原型XSDsimpleType而不是XSDCOmplexType。输入标记值
要使用的UML类型以及要用于所需输出的字段/标记的位置?您应该使用原型XSDsimpleType而不是XSDCOmplexType。输入标记值的限制
请参阅中的限制和中的标记。没有标准可用的直接UML到XML模式转换 要在EA中实现这一点,您需要使用MDA转换,从UML模型到XSD模型,然后从这个XSD模型生成XML模式
另一种选择是使用Schema Composer,但这会减少对生成的XSD的控制。尝试从有效的XSD源进行反向工程,看看EA生成了什么。@Thomas Kilian这不起作用。EA生成带有原型的类,就像在执行模型转换时生成的类一样,该模型转换可用于执行转换时的XSD生成输出当前包,其中包含XSD类型等。但是我想知道在执行转换之前UML元素应该查看。我不想创建一个包含XSD元素的UML模型,我想创建一个独立的目标不可知的UML模型,例如,也应该能够生成代码。很久以前我在EA中使用XSD。但那一次我为EA写了自己的im-/导出器。原因是/是UML和XSD之间没有定义映射。只是有几个惯例。取决于你在这个方向上做了多少,我建议你也这样做。FWIW:我可以用一个模式定义重新定义上面的内容,EA创建了一个模式,我不想直接在不可知模型中使用这个类型。XSD只是一种输出。但是,生成器在生成XSD模型时选择XSDSimpleType,然后在此基础上选择XSD,这有什么区别呢?
<xs:complexType name="Longitude">
<xs:sequence>
<xs:element name="value" type="xs:double" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="Longitude">
<!-- where to define that? e.g. to be double instead, string is default -->
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="Longitude">
<xs:restriction base="xs:double">
<minInclusive value="0.0"/>
<maxInclusive value="359.99999999"/>
</xs:restriction>
</xs:simpleType>