2014-10-03 3 views
0

우리는 OData XML에서 우리 자신의 스키마를 생성하여 파트너가보다 간단하고 일반적으로 사용할 수 있도록합니다. 그러나, 나는 자신의 타입 (자기 참조)을 호출하는이 문제를 발견하고이 문제를 해결할 수있는 방법을 찾지 못했습니다.XSD 자체 참조 문제

다음은 발췌 내용입니다.

<xsd:element name="User" type="userType"/> 
<xsd:complexType name="userType"> 
    <xsd:all> 
     <xsd:element name="customManagerList"> 
      <xsd:annotation> 
       <xsd:documentation>Custom Manager</xsd:documentation> 
      </xsd:annotation> 
      <xsd:complexType> 
       <xsd:sequence> 
        <xsd:element name="customManager" type="userType" maxOccurs="unbounded"/> 
       </xsd:sequence> 
      </xsd:complexType> 
     </xsd:element> 
    </xsd:all> 
</xsd:complexType> 
</xsd:schema> 
+0

customManager 요소 particle에 minOccurs = "0"을 추가하기 만하면됩니다. –

답변

2

지금까지 전혀 문제가 없습니다. 다만, <xsd:schema> 태그 예컨대 :

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
... 
</xsd:schema> 

당신의 조각을 둘러싼 검증을 통해 통과시켰다. 그것은 작동합니다. complexType는 자신을 참조 할 수 있습니다.

+0

스키마가 XSD 스펙에 따라 유효하다는 것은 사실입니다. 그러나 모든 실용적인 이유에 따라 ** 유효한 XML 인스턴스를 만들 수있는 방법이 없기 때문에 ** 무효입니다. 작동 시키려면 customManager 요소 particle에 minOccurs = "0"을 추가해야합니다. 내가 본 일부 유효성 검사기는이 불가 능성을 올바르게 파악하고 오류로보고합니다. –