我正在尝试使xsd有效。我有这个“简单”的文件
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Pairs">
<xs:complexType>
<xs:sequence>
<xs:element name="t1" type="xs:string"/>
<xs:element name="t2" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Configuration">
<xs:complexType>
<xs:sequence>
<xs:element name="pairs" type="Pairs" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="elems" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我收到了这个错误:
'Pairs' must refer to an existing simple or complex type.
我已经阅读了这篇文章:Error: Must refer to an existing simple or complex type和其他人,但我仍然不明白为什么我会遇到这个错误。
非常感谢,
S上。
答案 0 :(得分:0)
我想我在xsd中发现了问题。 我不能用
<xs:element name="pairs" type="Pairs" minOccurs="1" maxOccurs="unbounded"/>
因为 Pairs 不是类型,但它是元素。 然后,我可以将引用用于元素
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Pairs">
<xs:complexType>
<xs:sequence>
<xs:element name="t1" type="xs:string"/>
<xs:element name="t2" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Configuration">
<xs:complexType>
<xs:sequence>
<xs:element ref="Pairs" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="elems" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
或将 Pairs 声明为 complexType
<xs:complexType name="Pairs">
<xs:sequence>
<xs:element name="t1" type="xs:string"/>
<xs:element name="t2" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="Configuration">
<xs:complexType>
<xs:sequence>
<xs:element name="pairs" type="Pairs" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="elems" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
最后一个xsd为我解决了这个问题。
我希望这个答案有用。
S上。