2012-05-31 3 views
0

아래 xsd에서 유효성 검사 오류가 발생합니다.XS : 모든 스키마 변환

cos-nonambig : "http://alert.schemas.tr.com/TriggerSynchronizationService/Data/2010-02-08/ ":resyncRequestID 및 WC [## any] (또는 대체 그룹의 요소)는 위반합니다. "고유 한 입자 속성". 이 스키마에 대한 유효성 검사 중에이 두 입자에 대해 모호함이 생깁니다.

xs : any를 올바르게 선언하지 않았다고 생각합니다.

<xs:complexType name="GenerationTriggerData"> 
    <xs:sequence> 
    <xs:element minOccurs="0" maxOccurs="1" name="resyncRequestID" type="xs:int" /> 
    <xs:element minOccurs="0" maxOccurs="1" name="userID" type="xs:string" /> 
    <xs:element minOccurs="0" maxOccurs="1" name="alertID" type="xs:string" /> 
    <xs:element minOccurs="0" maxOccurs="1" name="triggerID" type="xs:string" /> 
    <xs:element minOccurs="0" maxOccurs="1" name="logicalType" type="xs:string" /> 
    <xs:element minOccurs="0" maxOccurs="1" name="version" type="xs:string" /> 
    <xs:element minOccurs="0" maxOccurs="1" name="state" type="q1:State_Enum" /> 
    <xs:element minOccurs="0" maxOccurs="1" name="criteria"  xmlns:q2="http://expressions.schemas.tfn.thomson.com/2006-09-04/" type="q2:ExpressionRoot" /> 
    <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>        
    </xs:sequence> 
</xs:complexType> 

답변

0

XSD는 모호한 콘텐츠를 허용하지 않습니다. UPA는 파서가 XSD와 관련이있는 곳을 명확하게 파악할 수 있는지에 대한 것입니다. 심지어 look-ahead은 허용되지 않습니다.

xsd:any은 (##) 어떤 네임 스페이스가 될 수 있으므로 resyncRequestID은 일치합니다. 이 경우 첫 번째 (선택 사항) 또는 와일드 카드입니까? 여기서 내용은 명확하게 모호하며 미리보기가 도움이되지 않습니다.

한 가지 방법은 xsd : 모든 정의가 변경되어 모든 선행 내용과 일치하지 않게하는 것입니다. 네임 스페이스를 제약하는 것은 항상 쉬운 방법입니다.

또는 xsd : any 필수 항목 바로 앞에 입자를 만듭니다. 이 방법을 통해 독자는 "야생"이 시작되는 곳을 알 수 있습니다 ...

이것이 옵션이 아니면 xs : any 바로 앞에 특수한 "마커"태그를 삽입하십시오. 의무적이어야합니다!

XSD의 UPA 디자인 제약 조건을 충족시키기 위해 위의 내용을 일반적으로 "XSD 리팩토링"이라고합니다.

관련 문제