在 Enterprise Architect 中从 XSD 导入 Class

Importing Class from XSD in Enterprise Architect

我有一系列 XSD 文件,它们被用作软件接口规范的主类型定义文件。我正在尝试将它们作为 class 模型导入到 Enterprise Architect 中。

出于某种原因,XSD 的原始开发人员决定将序列元素列为 "ref" 而不是直接列出,并且引用的定义存在于单独的 XSD 文件中,从相关文件中引用。

到目前为止,没有问题,它是标准的 XSD 语法,示例如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="commonTestElements.xsd"/>
<xs:element name="someElementName">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="someAttributeName" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="someOtherElementName" type="xs:boolean"/>

在参考文件 (commonTestelements.xsd) 中,我有以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <!-- element declarations -->
    <xs:element name="someAttributeName">       
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1"/>
                <xs:maxLength value="80"/>
                <xs:whiteSpace value="preserve"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
</xs:schema>

XML Spy 解释得很好,Visual Studio 也是如此(尽管 VS 有一些不受欢迎的怪癖)。但是,将其导入 EA 会产生纯粹的垃圾,如随附的屏幕剪辑所示。

错误图表

问题是:有没有办法让 EA 导入它并正确显示 class,这将是两个通过命名关联链接在一起的 class,如图所示手动创建的图表? (我不知道这是否正是 EA 的做法,但这比在图表中插入一堆垃圾名称要好得多)。 XML间谍的观点也可以接受。

所需图表

来自 XML 间谍的输出

UML 和 XSD 之间没有 1:1 映射。许多工具创建特定映射的事实并不意味着另一个工具会获得相同的结果。 EA 的 importer 不能修改。所以你唯一的选择就是编写自己的导入器(我过去这样做过,并不难)。