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>
我希望有一个元素引用同级元素,但我不确定如何在我的模式中实现它。我的 .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>