media-io / xml-schema

Generate rust code (structures and enum) from XSD
MIT License
53 stars 29 forks source link

Added sequences to extension generation #51

Open NiklasVousten opened 2 weeks ago

NiklasVousten commented 2 weeks ago

This adds new fields to the struct, if it is an extended type. Previously only attribute were added, but not sequence elements.

The following example schema

<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>

will result in the following code

# [derive (Clone , Debug , Default , PartialEq , yaserde_derive :: YaDeserialize , yaserde_derive :: YaSerialize)]
pub struct Fullpersoninfo {
  # [yaserde (flatten)]
  pub base : Personinfo ,
  # [yaserde (rename = \"address\")]
  pub address : String ,
  # [yaserde (rename = \"city\")]
  pub city : String ,
  # [yaserde (rename = \"country\")]
  pub country : String ,
}