XML元素引用同级

时间:2016-03-27 22:13:46

标签: xml xsd siblings

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

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

意味着每位员工都会有一位主管也是员工,所以如果可能的话,我希望引用它们。

&#34; PID&#34;是我在架构中创建的类型,它只是一个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:元素&#39;主管&#39;是一个简单的类型,因此它不能具有属性,除了那些名称空间名称与&#39; http://www.w3.org/2001/XMLSchema-instance&#39;相同的属性。并且其[本地名称]是&#39; type&#39;,&#39; nil&#39;,&#39; schemaLocation&#39;或者&#39; noNamespaceSchemaLocation&#39;。但是,该属性,&#39; staff&#39;被发现了。

我可以看出为什么它会引发错误,但不明白我会改变它。

1 个答案:

答案 0 :(得分:1)

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

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

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

        </xs:complexType>

</xs:element>