Reference XMLSchema-元素引用自身-如何执行?

Reference XMLSchema-元素引用自身-如何执行?,reference,xsd,Reference,Xsd,我有一个任务,需要创建一个具有0个或多个子元素的元素辅助元素。我必须使用key和keyref来创建引用。我搞不懂这些参考资料是怎么起作用的。以下是我到目前为止所写的内容: <xsd:element name="Workers"> <xsd:complexType> <xsd:sequence> <xsd:element name="Worker" maxOccurs="unbounded">

我有一个任务,需要创建一个具有0个或多个子元素的元素辅助元素。我必须使用key和keyref来创建引用。我搞不懂这些参考资料是怎么起作用的。以下是我到目前为止所写的内容:

<xsd:element name="Workers">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="Worker" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:sequence>

                        <xsd:element name="name" type="xsd:string"/>
                        <xsd:element name="subordinate" minOccurs="0" maxOccurs="unbounded"/>

                    </xsd:sequence>
                    <xsd:attribute name="identyfikator" type="PESEL" use="required"/>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:key name="id">
        <xsd:selector xpath="Worker"/>
        <xsd:field xpath="@identyfikator"/>
    </xsd:key>

    <xsd:keyref name="subordinate_ref" refer="id">
        <xsd:selector xpath="Worker/subordinate"/>
        <xsd:field xpath="@identyfikator"/>
    </xsd:keyref>   
</xsd:element>
PESEL是我自己的类型,密钥限制很有效,因为我无法在XML文档中创建具有相同密钥的两个worker。但是,我可以将任何内容创建为从属元素,并且不会显示任何警告。据我所知,在这种情况下,我应该只能添加员工作为下属,如果他们已经存在,对吗?如何创建适当的引用? 这是我第一次使用XMLSchema,如果代码太乱,我很抱歉。 提前谢谢

创建一个Worker ComplexType,并使Worker和substance都属于该类型

大致如此:

<!-- Define the below where appropriate. -->
<xsd:element name="Worker" type="WorkerType" />

<xsd:complexType name="WorkerType">
    <xsd:sequence>

        <xsd:element name="name" type="xsd:string"/>
        <xsd:element name="subordinate" type="WorkerType" minOccurs="0" maxOccurs="unbounded"/>

    </xsd:sequence>
    <xsd:attribute name="identyfikator" type="PESEL" use="required"/>

</xsd:complexType>
    <xsd:attribute name="identyfikator" type="xsd:ID" use="required"/>