beberapa elemen memiliki banyak kesamaan dalam skema xsd

Jika saya memiliki banyak tipe kompleks di xsd, yang misalnya memiliki sejumlah bidang umum, seperti 'id', atau 'nama', atau 'tanggal' atau 'anyspecialId', yang berarti tipe tersebut sangat mirip satu sama lain. yang lain, dan akan menjadi mimpi buruk untuk menambahkan lagi satu bidang umum ke masing-masing bidang tersebut. Apakah mungkin untuk mendefinisikan beberapa tipe dasar untuk tipe kompleks, sehingga tipe kompleks ini akan memperluas bidang/item dari tipe induk dasar? Dalam hal ini saya hanya menambahkan bidang baru ini ke tipe dasar, dan bukan ke masing-masing bidang turunan. Apakah itu mungkin?


person javagirl    schedule 16.03.2012    source sumber
comment
Ekstensi tidak selalu merupakan yang terbaik; jika Anda mengalami masalah yang melibatkan pembatasan, menerjemahkannya ke objek tidaklah mudah, jadi menggunakan model grup (untuk elemen xsd:group dan atribut atributGroup) adalah alternatif lain yang mungkin ingin Anda pertimbangkan untuk mencapai usabilitas.   -  person Petru Gardea    schedule 16.03.2012


Jawaban (2)


Tentu saja Anda harus menggunakan ekstensi tipe:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

</xs:schema>

http://www.w3schools.com/schema/el_extension.asp

person andbi    schedule 16.03.2012

Menurunkan tipe berdasarkan ekstensi tentu saja merupakan salah satu cara untuk mengatasi hal ini. Pendekatan lain yang kadang-kadang bisa bekerja lebih baik adalah dengan menggunakan kelompok model bernama. Hal ini bisa lebih fleksibel, misalnya tidak menerapkan batasan bahwa elemen umum harus didahulukan sebelum elemen khusus.

person Michael Kay    schedule 16.03.2012