2009-09-30 22 views
16

varsayalım bir complexType yerine bir eleman uzatmak. Şu anda foo elemanını barElement elemanına genişletmek ve bu uzantıyı bar olarak adlandırmak istiyorum. kullanın XML Şeması Bazı şema var

en de başkası foo tanımlamıştır ve şema değiştirilemez varsayalım, şeyleri zorlaştırmak için. Buradaki örnek önemsiz olsa da, foo içeriğinin daha karmaşık olabileceğini ve yeni bir şemayı tanımlamanın fooElement elemanını kopyalamak kadar basit olmadığını varsayalım.

Etkili, yeni bir şema tanımlamak istiyorum:

<xsd:schema xmlns:fns="otherschema" ...> 
    <xsd:import namespace="otherschema" /> 
    <xsd:element name="bar"> 
     <xsd:complexContent> 
      <xsd:extension base="fns:foo"> 
       <xsd:sequence> 
        <xsd:element name="barElement" type="xs:string" /> 
       </xsd:sequence> 
      </xsd:extension> 
     </xsd:complexContent> 
    </xsd:element> 
</xsd:schema> 

Maalesef <xsd:extension> 'ın base niteliği yalnızca XSD tip argümanları değil unsurlar kabul eder. Bir öğeyi nasıl uzatabilirim? (Ben bir öğeyi uzatabilirsiniz?)

+3

Harika bir soru, aynı şeyi yapmak isterim - ve imkansız göründüğüne inanmıyorum. Çılgın! –

cevap

8

Ben foo elemanını taklit ediyor ve kemikleri uzanmaktadır yeni bir tür oluşturacak. En iyi çözüm olmasa da, öğeyi doğrudan genişletebildiğiniz gibi aynı sonucu elde edersiniz.

<xs:complexType name="fooType"> 
    <xs:sequence> 
     <xs:element name="fooElement" type="xs:string" /> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="barType"> 
    <xs:complexContent mixed="false"> 
     <xs:extension base="fooType"> 
     <xs:sequence> 
      <xs:element name="barElement" type="xs:string" /> 
     </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 

    <xs:element name="bar" type="barType" /> 
+0

Bu, onu her aradığımda öğeyi kapsülleme zorlamaz mı? istenmeyen bir yerine basitçe ... gibi sözdizimi neden olacaktır. –

+0

Hayır, sonuç şu soruları soruyordum: Ben

+0

Düzenlemenizi kabul ediyorum - katılıyorum - teşekkürler. –

İlgili konular