XML 元素引用兄弟姐妹

XML Element Reference a Sibling

我希望有一个元素引用同级元素,但我不确定如何在我的模式中实现它。我的 .xml 文件中有以下内容:

 <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: 元素 'supervisor' 是一个简单类型,因此它不能有属性,除了命名空间名称与“http://www.w3.org/2001/XMLSchema-instance”相同且其 [ local name] 是 'type'、'nil'、'schemaLocation' 或 'noNamespaceSchemaLocation' 之一。但是,找到了属性 'staff'。

我明白为什么它会引发错误,但不明白我会将其更改为什么。

具有属性的元素必须是复杂类型。 所以 supervisor 元素应该定义如下

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

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

        </xs:complexType>

</xs:element>