我想定义一个自己的“personinfo”类型,以便其他元素可以引用这个复杂类型,但是我得到了一些验证错误。你能教我正确的方法来定义“personinfo”吗?这是由命名空间问题引起的吗?
<?xml version="1.0" encoding="iso-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="xyz">
<xs:complexType>
<xs:all>
<xs:element name="enable" type="xs:boolean" minOccurs="0" />
<xs:element name="employee" type="personinfo" />
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:0)
您应该在xs:schema元素下移动personInfo类型的定义,即在同一级别上移动xyz的定义。其他结构应该没问题。
如果您的模式没有定义目标名称空间(即定义的元素和类型所属的名称空间),那么您没有在类型属性中引用带有前缀的复杂类型。但我认为定义目标命名空间(和相应的前缀)更好,然后你必须以限定的形式写它,比如type =“myNs:personInfo”。