0

我有一系列 XSD 文件,它们被用作软件接口规范的主类型定义文件。我正在尝试将它们作为类模型导入 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类图

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

所需图表
所需的 EA 图

XML 间谍的输出
XML SPY 图

4

1 回答 1

2

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

于 2016-06-18T07:46:58.597 回答