1

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

1 回答 1

0

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

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

于 2013-08-15T04:34:39.960 回答