M1

Générer un schéma XML pour des classes

Aucune idée si c'est exactement comme ça qu'il faut faire mais en tous cas, ça marche.

Il faut d'abord créer une classe et placer des annotations pour que la création du schéma XML se fasse avec @XmlRootElement pour la classe et @XmlAttribute pour chaque attribut qui doit être présent dans le schéma :

import javax.xml.bind.annotation.*;

@XmlRootElement
public class Ouvrage {
  protected String auteur;
  protected String editeur;
  protected Float prix;
  protected Integer ISBN;
  protected ArrayList<String> references;

  public Ouvrage(String a, String e, Float p, Integer i) {
    this.auteur = a;
    // ...
  }

  /* Il faut obligatoirement un constructeur vide */
  public Ouvrage() { }

  @XmlAttribute
  public String getAuteur() {
    return this.auteur;
  }

  public void setAuteur(String auteur) {
    this.auteur = auteur;
  }

  // ...
}

Ensuite, dans Eclipse, il faut aller dans le menu File -> New -> Other.... Une fenêtre apparaît. Il faut ensuite aller dans le dossier JAXB et sélectionner Schema from JAXB classes.

Ensuite cliquer sur Next, selectionner le projet, ensuite Next et cocher le projet puis cliquer sur Finish.

Un fichier .xml doit être créé :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="ouvrage" type="ouvrage"/>

  <xs:complexType name="ouvrage">
    <xs:sequence/>
    <xs:attribute name="auteur" type="xs:string"/>
    <xs:attribute name="editeur" type="xs:string"/>
    <xs:attribute name="prix" type="xs:float"/>
    <xs:attribute name="isbn" type="xs:int"/>
    <xs:attribute name="references">
      <xs:simpleType>
        <xs:list itemType="xs:string"/>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
</xs:schema>