2013-04-05 10 views
2

이있는 'all'모델 그룹이 있어야합니다.XSD 유효성 검사 오류 : cos-all-limited.1.2 : 스키마 생성 중에 다음 오류를 나타내는 XSD와

org.xml.sax.SAXParseException; systemId: file:/D:/Basil/Projects/myproducts.xsd; lineNumber: 577; columnNumber: 50; cos-all-limited.1.2: An 'all' model group must appear in a particle with '{'min occurs'}' = '{'max occurs'}' = 1, and that particle must be part of a pair which constitutes the '{'content type'}' of a complex type definition. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4124) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:4107) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:588) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:555) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:521) 
    at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:240) 
    at com.sun.tools.xjc.reader.xmlschema.parser.SchemaConstraintChecker.check(SchemaConstraintChecker.java:101) 
    at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:357) 
    at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:167) 
    at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:113) 
    at com.sun.tools.xjc.Driver.run(Driver.java:313) 
    at org.codehaus.mojo.jaxb2.AbstractXjcMojo.execute(AbstractXjcMojo.java:298) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 

아래의 관련 XSD가 붙여 넣어집니다. 실제 오류가 무엇인지 이해할 수 없습니다. 오류는 끝에서 세 번째 줄에 있습니다. 도와주세요.

<xs:group name="prodVar"> 
    <xs:all> 
    <xs:element name="prodVar" minOccurs="0" maxOccurs="1"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="varName" type="xs:string" minOccurs="0" maxOccurs="unbounded" /> 
       <xs:element ref="skuList" /> 
       <xs:element name="vStory" type="xs:string" minOccurs="0" /> 
       <xs:element ref="attList" /> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="colorSwatchList" minOccurs="0" maxOccurs="1"> 
     <xs:complexType> 
      <xs:sequence minOccurs="1" maxOccurs="unbounded"> 
       <xs:element name="colorSwatch" minOccurs="0" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="swatchName" type="xs:string" minOccurs="0" /> 
         <xs:element name="swatchHeight" type="xs:string" minOccurs="0" /> 
         <xs:element name="swatchWidth" type="xs:string" minOccurs="0" /> 
         <xs:element name="colorName" type="xs:string" minOccurs="0" /> 
         <xs:element name="mainImageHeight" type="xs:string" minOccurs="0" /> 
         <xs:element name="mainImageWidth" type="xs:string" minOccurs="0" /> 
         <xs:element name="mainImageName" type="xs:string" minOccurs="0" /> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    </xs:all> 
</xs:group> 

<!--lot of other stuff --> 

<xs:element name="prodVarList" minOccurs="0" maxOccurs="1"> 
    <xs:complexType> <!-- ERROR HERE --> 
     <xs:group ref="prodVar" minOccurs="0" maxOccurs="unbounded" /> 
    </xs:complexType> 
</xs:element> 

답변

3

그냥 XSD 1.0 <xs:group ref="prodVar" minOccurs="0" maxOccurs="unbounded" />

maxOccurs="unbounded" 제거, xs:all는 ('! 좋은 시도를'일부는 말할 수, 간접적으로 여기에) 반복도 xs:all에서 어떤 입자 않으며이 될 수 없습니다 다른 컴포지션 아래에 중첩되어 있습니다.

+0

[답변]에 대한 [내 의견] (http://stackoverflow.com/questions/10902485/xml-elements-in-any-order-some-required-and-others-arent/14843147#comment63268281_14843147)을 참조하십시오. (http://stackoverflow.com/a/14843147/5445670)에서 [이 관련 질문] (http://stackoverflow.com/q/10902485/5445670)을 대체합니다. –