我希望有一个元素引用兄弟,但我不确定如何在我的架构中实现它。我的.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;被发现了。
我可以看出为什么它会引发错误,但不明白我会改变它。
答案 0 :(得分:1)
具有属性的元素必须是复杂类型。 所以supervisor元素应该定义如下
<xs:element name="supervisor">
<xs:complexType>
<xs:attribute name="staff" type = "pidType" use="required"/>
</xs:complexType>
</xs:element>