從XSD

2013-04-10 31 views
0

生成類我有簡單的XML這樣的:從XSD

<?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:使用JAXB

<?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> 

然後生成的Java類。並使用解組。

幾乎一切正常,但exporterVersion字段沒有從xml中拉出。

我嘗試使用導入命名空間。但沒有任何反應 如果設置attributeFormDefault="qualified"是attribut出口不拉

回答

0

架構中的變化(注意xmi:前綴作爲名稱的一部分)

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

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

你應該不要在exporterVersion的名稱中使用xmi:限定符。該名稱空間是在XML文檔中定義的,但未在模式中定義。

更重要的是,據我所知,你根本不需要XSD。看起來您正在嘗試直接使用XMI映射規範的模式並構建符合該模式的XML文檔。如果是這種情況,則不需要您自己的模式。

無論如何,您的XML文檔不會以任何方式引用您自己的模式,因此它根本不應該處理該XML文檔。