2016-03-27 98 views
0

我期待有一個元素引用兄弟,但我不確定如何在我的模式中實現這一點。我在我的.xml文件如下:XML元素參考a兄弟

<staff pid="818789"> 
    <supervisor staff="201022"></supervisor> 
    ... 
</staff> 

含義每個工作人員都會有一個主管誰也是一名工作人員,所以我期待引用他們,如果這是可能的。

「pid」是我在我的模式中創建的一個類型,它只是一個6位數的字符串。

我已經在我的.xsd文件如下:

<xs:element name="staff"> 
    <xs:complexType>  
     <xs:sequence> 
      <xs:element name="supervisorID" type="pidType" minOccurs="0" maxOccurs="1"/> 
      ... 
     </xs:sequence> 
     <xs:attribute name="pid" type="pidType" use="required"/> 
    </xs:complexType> 
</xs:element> 

它提供了以下錯誤:

錯誤 - CVC-type.3.1.1:元素 '主管' 是一個簡單的類型,所以它不能擁有屬性,除了命名空間名稱與'http://www.w3.org/2001/XMLSchema-instance'相同且[本地名稱]是'type','nil','schemaLocation'或'noNamespaceSchemaLocation'之一的屬性外。但是,找到了「員工」屬性。

我可以看到它爲什麼會引發錯誤,但不明白我會改變它。

+0

告訴我們的工作人員元素 – Kachna

+0

完整的XSD完全無關那麼,爲什麼很重要? – Porteous96

回答

1

具有屬性的元素必須是複雜類型。 所以主管元素應該被定義爲跟隨

<xs:element name="supervisor"> 
     <xs:complexType> 

        <xs:attribute name="staff" type = "pidType" use="required"/> 

     </xs:complexType> 

</xs:element> 
+0

感謝您的回答,它似乎解決了我的問題,但現在我有新的錯誤。您是否介意解釋您的答案以瞭解它? – Porteous96

+0

你的編輯解決了我的問題,我明白你所做的。非常感謝。 – Porteous96