2012-12-20 6 views
0

xml 파일에 대해 xml 스키마를 쓰고 있습니다. 다음 코드에 대해이 오류가 발생하지만 이유를 파악할 수 없습니다. 어떠한 제안?xml 스키마 (XML 오류)

cvc-type.3.1.1 : 'employees'요소는 단순한 유형이므로 'http://www.w3.org/2001/XMLSchema-a-'과 동일한 네임 스페이스 이름을 가진 요소를 제외하고는 특성을 가질 수 없습니다. instance '이고 [local name]은'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"/> 
+1

오류 메시지는 매우 명확하게 보입니다. 'employees' 타입은 스키마가 그것을 허용하지 않기 때문에'essns' 속성을 가질 수 없습니다. –

답변

1

요소는 단순 유형 또는 복잡한 유형을 가질 수있다.

단순 유형의 요소는 적절한 유형의 유효한 주변의 래퍼에 지나지 않습니다. 다른 콘텐츠를 가질 수 없으며 자식 요소를 가질 수 없으며 속성을 가질 수 없습니다.

즉, 복합 유형에 의해 관리되는 요소 만 속성을 가질 수 있습니다. (: 무기 호, XSI : 유형, XSI :의 schemaLocation 및 XSI : XSI를 들어, 오류 메시지에 설명 된대로 예외가 이루어진다.의 noNamespaceSchemaLocation) 귀하의 '직원'요소가 간단한 유형을 가진 것으로 선언

하십시오 정수리스트. 따라서 정수 목록을 포함 할 수는 있지만 속성을 선언하지 않았습니다. 그렇게하고 싶다면 속성을 추가하여 단순 유형을 확장하는 복합 유형 인 "단순한 내용의 복합 유형"으로 선언 할 수 있습니다.

<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> 

아니면 무엇을 당신이 의도하는 값 정수의 목록이 될 수 essns라는 이름의 속성을 가진 빈 요소로 employees를 선언했다 가능성이 있습니다. 이 경우 간단한 콘텐츠로 복잡한 유형을 원하지 않습니다. 원하는 콘텐츠는 단순 콘텐츠가 아니기 때문에 콘텐츠입니다.

<xs:element name="employees-sib"> 
    <xs:complexType mixed="false"> 
    <xs:sequence/> 
    <xs:attribute name="essns" 
        type="tns:list-of-integers"/> 
    </xs:complexType> 
</xs:element>