1

私はxmlファイルに対してxmlスキーマを書いています。次のコードでこのエラーが発生しましたが、理由がわかりません。なにか提案を?

cvc-type.3.1.1: 要素 'employees' は単純型であるため、名前空間名が 'http://www.w3.org/2001/XMLSchema-instance' と同じであり、 [ローカル名] は、'type'、'nil'、'schemaLocation'、または 'noNamespaceSchemaLocation' のいずれかです。ただし、属性「essns」が見つかりました。simpleType で始まる問題が見つかりました。

<xs:element name="employees" >
      <xs:simpleType>
        <xs:list itemType ="xs:integer"/>
      </xs:simpleType>
      </xs:element>
      <xs:element name= "projectsControlled">
      <xs:simpleType>
        <xs:list itemType ="xs:integer" />
      </xs:simpleType>
      </xs:element>

以下はxmlコードです

<employees essns="888665555"/>
<projectsControlled pnos="20"/>
4

1 に答える 1

2

要素には、単純型または複合型があります。

単純型の要素は、適切な型の有効な要素のラッパーにすぎません。他のコンテンツを持つこと、子要素を持つこと、および属性を持つことは許可されていません。

つまり、複合型によって管理される要素のみが属性を持つことができます。(エラー メッセージで説明されているように、xsi:nil、xsi:type、xsi:schemaLocation、および xsi:noNamespaceSchemaLocation に対して例外が作成されます。)

「employees」要素は、整数のリストという単純な型を持つものとして宣言されています。したがって、整数のリストを含めることができますが、属性を宣言していません。それをしたい場合は、「単純なコンテンツを持つ複合型」を持つと宣言できます。基本的には、属性を追加して単純型を拡張する複合型です。

<xs:simpleType name="list-of-integers">
  <xs:list itemType="xs:integer"/>
</xs:simpleType>

<xs:element name="employees">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="tns:list-of-integers">
        <xs:attribute name="essns" 
                      type="tns:list-of-integers"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

または、値が整数のリストであるemployeesという名前の属性を持つ空の要素として宣言することを意図していた可能性があります。その場合、必要なのは単純なコンテンツではなくコンテンツがないessnsため、単純なコンテンツを持つ複合型は必要ありません。

<xs:element name="employees-sib">
  <xs:complexType mixed="false">
    <xs:sequence/>
    <xs:attribute name="essns" 
                  type="tns:list-of-integers"/>
  </xs:complexType>
</xs:element>
于 2012-12-20T23:28:00.793 に答える