2009-05-08 7 views
0

다른 시스템에서 XML 응답을 받았지만 XSD가 없으므로 Create Schema 옵션을 사용하여 XML 응답을 생성했습니다.BizTalk 생성 XSD가 XML 유효성 검사에 실패했습니다.

그런 다음 XSD를 내 BizTalk 2006 R2 프로젝트에 추가하고 "입력 인스턴스 파일 이름"속성을 원래 XML 메시지로 설정했습니다. XSI의 : 유형 속성 값 'http://www.w3.org/2001/XMLSchema:int'요소 '에 대해 유효하지 않은
오류 BEC2004가 ...

는 "유효성 검사 인스턴스"옵션을 시도하고 너무 같은 오류의 부부와 함께, ???하지 못한 http://www.aniteps.com/xml/schemas/awm/images4:NumberOfErrors '입니다. 스키마의 유형에서 유효하게 파생 된 유형이 아니거나 xsi : type 파생이 차단되어 있기 때문입니다.

XSD를 생성하는 데 사용 된 XML 오류가 어떻게 발생합니까?

내가 가진 XML 예제입니다

...

<?xml version="1.0" encoding="utf-8"?> 
<ImportIndexDocumentResponse 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://www.aniteps.com/xml/schemas/awm/images4"> 
    <HasErrors>false</HasErrors> 
    <NumberOfErrors xsi:type="xsd:int">0</NumberOfErrors> 
    <ErrorDescription xsi:type="xsd:string">No exception ocurred.</ErrorDescription> 
    <ErrorNumber xsi:type="xsd:int">0</ErrorNumber> 
    <FailedItems> 
    <Item> 
     <OriginalDataString xsi:type="xsd:string" /> 
     <ErrorDescription xsi:type="xsd:string" /> 
    </Item> 
    </FailedItems> 
    <UniqueDocumentReferences> 
    <UniqueDocumentReference>FA40FE</UniqueDocumentReference> 
    <UniqueDocumentReference>U55922</UniqueDocumentReference> 
    </UniqueDocumentReferences> 
</ImportIndexDocumentResponse> 

비즈 토크 비주얼 스튜디오 2005 생성/...

<?xml version="1.0" encoding="utf-8"?> 
<xsd:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      attributeFormDefault="unqualified" 
      elementFormDefault="qualified" 
      targetNamespace="http://www.aniteps.com/xml/schemas/awm/images4"> 
    <xs:element name="ImportIndexDocumentResponse"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="HasErrors" type="xs:boolean" /> 
     <xs:element name="NumberOfErrors" type="xs:unsignedByte" /> 
     <xs:element name="ErrorDescription" type="xs:string" /> 
     <xs:element name="ErrorNumber" type="xs:unsignedByte" /> 
     <xs:element name="FailedItems"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Item"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="OriginalDataString" /> 
        <xs:element name="ErrorDescription" /> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element name="UniqueDocumentReferences"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element maxOccurs="unbounded" name="UniqueDocumentReference" type="xs:string" /> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xsd:schema> 

답변

4

XSD를 생성 합리적 바보이며, 통지하지 않았다 샘플 인스턴스 문서에는 형식 주석 (xsi : type 특성)이 포함되어 있습니다. 그래서 <ErrorDescription>은 부호없는 바이트를 포함하고 부호가없는 정수를 포함해야한다고 결정했습니다. 이는 형식 주석이 말했듯이 말입니다.

그렇다면 요소에 대한 두 가지 고유 한 유형 정의가 있으므로 유효성 검사기가 혼동스러워지는 것은 누구에게 해당됩니다. 형식 정의가 xsi : type 재정의와 일치하도록 스키마를 변경해보십시오. 약간 도움이 될 수 있습니다.

+0

Tomas의 Spot을 xs : int로 변경하면 내 단위 테스트가 효과가 있습니다. 도움 주셔서 감사합니다. – SteveC

관련 문제