我应该如何在 xml 中引用另一个 complexType,作为元素或作为我自己定义的键的属性?为以下自引用建模的正确方法是什么?第一种方法甚至可能,还是会导致无限的自我引用?
<xs:complexType name="Category">
<xs:sequence>
<xs:element name="ParentCategory" type="Category" minOccurs="1" maxOccurs="1"></xs:element>
<xs:element name="ChildCategory" type="Category" minOccurs="0" maxOccurs="unbounded"></xs:element>
</xs:sequence>
<xs:attribute name="CategoryName" type="xs:string"></xs:attribute>
</xs:complexType>
或者
<xs:complexType name="Category">
<xs:sequence>
<xs:element name="ChildCategory" type="Category" minOccurs="0" maxOccurs="unbounded"></xs:element>
</xs:sequence>
<xs:attribute name="CategoryName" type="xs:string"></xs:attribute>
<xs:attribute name="ParentCategory" type="xs:string"></xs:attribute>
</xs:complexType>
我有点困惑——因为我想成为面向对象的,但不确定这在 XML 中会是什么样子。将 ParentCategory 引用为 Category-type 是否会要求我再次在 XML 中编写 Category-type,它本身具有 ParentCategory 子元素等...导致无限类型引用。