2012-07-17 33 views
4

我試圖定義我的第一個XML-模式:XML的模式XSD錯誤:與命名空間

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" 
    targetNamespace="http://www.example.net/test" 
    xmlns:t="http://www.example.net/test"> 

    <xs:annotation> 
     <xs:documentation>This schema describes the xml format that is used in for ILTIS stuff.</xs:documentation> 
    </xs:annotation> 
    <xs:complexType name="station"> 
     <xs:sequence> 
      <xs:element name="transition" type="transition" minOccurs="1" /> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="transition"> 
     <xs:sequence> 
      <xs:element name="wActions" type="wActions" maxOccurs="1" minOccurs="1"/> 
      <xs:element name="oActions" type="oAction" maxOccurs="1" minOccurs="1"/> 
     </xs:sequence> 
     <xs:attribute name="from" type="xs:string" use="required"/> 
     <xs:attribute name="to" type="xs:string" use="required"/> 
    </xs:complexType> 

    <xs:complexType name="wActions"> 
     <xs:sequence> 
      <xs:element name="wMessage" type="wMessage" maxOccurs="2" minOccurs="1"/> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="oActions"> 
     <xs:sequence> 
      <xs:element name="trainRunMessage" type="trainRunMessage" maxOccurs="2" minOccurs="1"/> 
      <xs:element name="wMessage" type="wMessage" maxOccurs="2" minOccurs="0"/> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="trainRunMessage"> 
      <xs:attribute name="track" type="xs:string" use="required"/> 
      <xs:attribute name="offset" type="xs:string" default="0"/> 
      <xs:attribute name="station" type="xs:string" use="required"/> 
    </xs:complexType> 


    <xs:complexType name="wMessage"> 
     <xs:attribute name="track" type="xs:string" use="required"/> 
    </xs:complexType> 
</xs:schema> 

可是我的氧氣編輯器總是拋出此錯誤消息:

src-resolve.4.1: Error resolving component 'transition'. It was detected that 'transition' has no namespace, but components with no target namespace are not referenceable from schema document 'file:/C:/Users/mbohlaender/Desktop/rules-example-schema2.xsd'. If 'transition' is intended to have a namespace, perhaps a prefix needs to be provided. If it is intended that 'transition' has no namespace, then an 'import' without a "namespace" attribute should be added to 'file:/C:/Users/mbohlaender/Desktop/rules-example-schema2.xsd'. 

我仍然沒有得出我做錯了什麼。 請用簡單的方法回答。

+1

如果可能的話,你也可以嘗試更換 「的xmlns:T」 與 「的xmlns」。 – 2014-06-12 12:05:28

回答

8

在您的<transition>元素的定義中,您引用的是類型transition,這是氧氣無法識別的。它不存在。您只在模式中定義了一個名稱爲transition的複雜類型,因此該類型最終將導入目標命名空間http://www.example.net/test,該目標命名空間使用t前綴導入。

試着寫

<xs:element name="transition" type="t:transition" minOccurs="1" /> 
+2

當然,這同樣適用於所有其他類型的屬性。 – 2012-07-17 14:27:10