如何在XML模式文件中定义complexType?

时间:2013-08-15 01:29:11

标签: xml xsd

我想定义一个自己的“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>

1 个答案:

答案 0 :(得分:0)

您应该在xs:schema元素下移动personInfo类型的定义,即在同一级别上移动xyz的定义。其他结构应该没问题。

如果您的模式没有定义目标名称空间(即定义的元素和类型所属的名称空间),那么您没有在类型属性中引用带有前缀的复杂类型。但我认为定义目标命名空间(和相应的前缀)更好,然后你必须以限定的形式写它,比如type =“myNs:personInfo”。