2010-06-07 18 views
6

'dan "kayıp" bilgiye sahiptir. WSDL dosyasından bir web referansı oluşturmak için BizTalk 2006 R2 kullanıyorum.BizTalk Web Başvurusu - oluşturulan XSD, WSDL

Oluşturulan XSD'nin WSDL ile karşılaştırılması, birçok bilginin kaybolduğu aşikardır.

WSDL aşağıdaki özü düşünün:

<s:element form="unqualified" minOccurs="0" maxOccurs="4" name="Applicant"> 
    <s:complexType> 
    <s:sequence> 
     <s:element form="unqualified" minOccurs="1" maxOccurs="1" name="ApplicantIdentifier"> 
     <s:simpleType> 
      <s:restriction base="s:string" /> 
     </s:simpleType> 
     </s:element> 
     <s:element form="unqualified" minOccurs="0" maxOccurs="1" name="Name"> 
     <s:complexType> 
      <s:sequence> 
      <s:element form="unqualified" minOccurs="0" maxOccurs="1" name="Title"> 
       <s:simpleType> 
       <s:restriction base="s:string"> 
        <s:maxLength value="10" /> 
       </s:restriction> 
       </s:simpleType> 
      </s:element> 
      <s:element form="unqualified" minOccurs="0" maxOccurs="1" name="Forename"> 
       <s:simpleType> 
       <s:restriction base="s:string"> 
        <s:pattern value="[0-9A-Za-z \-]*" /> 
        <s:maxLength value="15" /> 
        <s:minLength value="1" /> 
       </s:restriction> 
       </s:simpleType> 
      </s:element> 
      <!-- more --> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
    </s:sequence> 
    </s:complexType> 
</s:element> 

BizTalk üretti eşdeğer XSD geçerli:

<xs:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="Applicant"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="ApplicantIdentifier" type="xs:string" /> 
     <xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Name"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Title" type="xs:string" /> 
      <xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Forename" type="xs:string" /> 
      <!-- more --> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

Yani, XSD kısıtlama desenleri kaybetti ve kendi değerlerini belirledi minOccurs ve maxOccurs için.

Başka bir kaynaktan XSD'ye eşlemeliyim ve WSDL'ye uygun olmayan verileri bu aşamada yakalamak istiyorum.

BizTalk'un neden XSD'deki kısıtlamaları korumamış olduğunu bilen var mı; veya kayıpsız XSD nasıl üretebilirim?

+0

Xsd.exe aynı sonuçları kullanıyor mu? – TEEKAY

+0

Öneri için teşekkürler TEEKAY. WSDL dosyasında xsd.exe'yi işaret ettiğimde: xsd.exe "C: \ Demos \ MyProblem.wsdl"/o: "C: \ Demolar" "Hata: geçersiz komut satırı argümanı:" hatası aldım C: \ Demos \ MyProblem.wsdl '" Daha sonra dosya uzantısını xsd.exe'yi kandırmaya çalıştım: xsd.exe" C: \ Demos \ MyProblem.xsd "/ o:" C: \ Demolar " Ve hatayı aldım: "Hata: Sadece sınıflardan veya veri kümelerinden birini oluşturabilir." Öneriniz için zaten teşekkürler. –

cevap

1

, kısıtlama ve maxOccurs> 1 aslında bir şey yapmak için gidiş değildir ... bir örnektir BizTalk tarafından çalışma zamanında kullanılır. Sanırım bu, web referansının neden kayıp olduğunu gösteriyor.

Kişisel olarak 'web referansı ekle' özelliğini veya 'adaptör meta verilerini ekle'/WCF'yi hiç sevmedim. Eğer wsdl, xsd dosyasına tip tanımlarını manuel olarak kopyalayan sık sık değişiyorsa:

a) wsdl'yi almak, tür (ler) i çıkarmak ve xsd'yi güncellemek için basit bir konsol uygulaması oluşturmaya bakın. dosya (VS'deki Dış Araçlar menüsünden tekme) ve

b) sık sık hizmet sözleşmesi değişiklikleri gerektiren geliştirme işleminizde neyin ters gittiğini öğrenin!