0

我有这样的简单xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:mdmi="http://schema.omg.org/spec/MDMI/1.0">
      <xmi:Documentation 
xmi:exporter="Firestar MDMI Tool" xmi:exporterVersion="1.0">
      </xmi:Documentation>
    </xmi:XMI>

我创建了 xsd:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://schema.omg.org/spec/XMI/2.1">
    <xs:element name="XMI">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Documentation">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:string">
                                <xs:attribute type="xs:string" name="exporter"/>
                                <xs:attribute type="xs:string" name="xmi:exporterVersion"/>
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute type="xs:float" name="version"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

然后生成使用 JAXB 的 java 类。并使用解组。

几乎一切正常,但exporterVersion没有从 xml 中提取字段。

我尝试使用导入命名空间。但是如果设置attributeFormDefault="qualified"属性导出器没有被拉起,什么也不会发生

4

2 回答 2

0

您不应该xmi:在名称中使用限定符 for exporterVersion。该名称空间在 XML 文档中定义,但未在模式中定义。

更重要的是,据我所知,您根本不需要 XSD。您似乎正在尝试直接使用 XMI 映射规范的模式并构建符合该模式的 XML 文档。如果是这种情况,则不需要您自己的模式。

无论如何,您的 XML 文档不会以任何方式引用您自己的模式,因此它根本不会影响处理该 XML 文档。

于 2013-04-10T17:24:06.453 回答
0

在您的架构更改中(注意xmi:前缀作为名称的一部分)

 <xs:attribute type="xs:string" name="xmi:exporterVersion"/>

<xs:attribute type="xs:string" name="exporterVersion"/>
于 2013-04-10T17:06:05.240 回答