【问题标题】:Importing Class from XSD in Enterprise Architect在 Enterprise Architect 中从 XSD 导入类
【发布时间】:2016-06-18 15:46:58
【问题描述】:

我有一系列 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 的做法,但这比在图表中插入一堆垃圾名称要好得多)。 XML Spy 的观点也是可以接受的。

所需图表

XML Spy 的输出

【问题讨论】:

    标签: xml xsd enterprise-architect xmlspy


    【解决方案1】:

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

    【讨论】:

    • 这就是我害怕的。有没有一种 EA 编码方面的方法?
    • 你这是什么意思?
    • 试图弄清楚这些是如何在 EA 中设置的,因为我无法从他们拥有的极其有限的帮助文件中弄清楚:w3schools.com/xml/schema_facets.asp
    • 我明白了。如前所述,您不能配置 EA 的导入器。你需要自己写。 XSD 和 UML 元素之间的映射可以通过许多算法规则来完成。最终,XSD 转换可能会有所帮助,但我对此不太熟悉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    相关资源
    最近更新 更多