Syndication : Atom 1.0  RSS 2.0
Blogs des développeurs   »   Akrogen Blog

Article complet: Tutorial WST- DOM SSE [Step 3]

26/02/2009

Permalink 17:32:27, Catégories: Plugin Eclipse, Récapitulatif Eclipse, Frameworks, 1922 mots   French (FR) , azerr

[Eclipse][Java] Tutorial WST- DOM SSE [Step 3]

A cette étape, le fichier XML shapesDiagram*.xml n'a aucune validation. La validation d'un fichier XML peut s'effectuer à l'aide d'une DTD ou d'un schéma XML. Dans notre cas nous allons valider le fichier XML à l'aide du schéma XML shapesDiagram.xsd. WST gère la validation de fichiers XML par Schéma XML. Le Schéma XML peut se trouver à plusieurs endroits :

  • en local. Le schéma XML se trouve dans un projet Eclipse ou sur le disque. Le lien avec le schéma XML s'effectue en utilisant les attributs schemaLocation ou noNamespaceSchemaLocation.
  • dans le catalogue XML de WST qui contient les DTD et les schémas XML que l'on peut utiliser dans l'éditeur XML. Le lien avec le schéma XML peut s'effectuer uniquement à l'aide d'un espace de nom. Il y a deux possibilités pour enregistrer le schéma XML dans le catalogue XML :
    • User Specified Entries : qui permet d'enregistrer son schéma XML dans le catalogue.
    • Plugin Specified Entries qui contiennent les schémas XML et DTD disponibles. Ils proviennent des plugins installés dans votre Eclipse qui ont enregistrés leur DTD et Schéma XML à l'aide du point d'extension org.eclipse.wst.xml.core.catalogContributions fourni par le projet XML de WST.

Il y a un double intérêt de lier le fichier XML shapesDiagram*.xml au Schema XML shapesDiagram.xsd :

Vous pouvez télécharger le projet org.eclipse.wst.xml.examples.shapes_1.0.0.zip présenté dans ce billet.

[Suite:]

Schéma XML - shapesDiagram.xsd

Je ne vais pas faire un cours sur les Schéma XML, et je vous conseille vivement de lire l'article Tutorial XML Schema, notemment :

Le schéma XML shapesDiagram.xsd est un schéma définissant l'espace de nom http://www.eclipse.org/shapes/ :

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  elementFormDefault="qualified"  
  attributeFormDefault="unqualified" 
  targetNamespace="http://www.eclipse.org/shapes/"  
  xmlns="http://www.eclipse.org/shapes/"> 
  <xsd:element name="diagram"> 
  ... 

Il est important de noter que elementFormDefault="qualified" et attributeFormDefault="unqualified" doivent être définis.

Le document XML shapesDiagram*.xml sera lié au schéma à en utilisant l'espace de nom http://www.eclipse.org/shapes/ :

<diagram xmlns="http://www.eclipse.org/shapes/" > 
... 

shapesDiagram.xsd

Voici le contenu du Schéma XML shapesDiagram.xsd :

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  elementFormDefault="qualified" attributeFormDefault="unqualified" 
  targetNamespace="http://www.eclipse.org/shapes/"  
  xmlns="http://www.eclipse.org/shapes/"> 
  <xsd:element name="diagram"> 
    <xsd:complexType>      
      <xsd:sequence> 
        <xsd:element name="shapes" minOccurs="0" maxOccurs="1">          
          <xsd:complexType> 
            <xsd:choice minOccurs="0" maxOccurs="unbounded"> 
              <xsd:element name="rectangle" type="RectangleType"></xsd:element> 
              <xsd:element name="ellipse" type="EllipseType"></xsd:element> 
            </xsd:choice> 
          </xsd:complexType> 
        </xsd:element> 
      </xsd:sequence> 
      <xsd:attribute name="title" type="xsd:string"></xsd:attribute> 
    </xsd:complexType> 
  </xsd:element> 
  <xsd:complexType name="RectangleType"> 
    <xsd:complexContent> 
      <xsd:extension base="ShapeType" /> 
    </xsd:complexContent> 
  </xsd:complexType> 
  <xsd:complexType name="EllipseType"> 
    <xsd:complexContent> 
      <xsd:extension base="ShapeType" /> 
    </xsd:complexContent> 
  </xsd:complexType> 
  <xsd:complexType name="ShapeType" abstract="true"> 
    <xsd:attribute name="x" type="xsd:int"></xsd:attribute> 
    <xsd:attribute name="y" type="xsd:int"></xsd:attribute> 
    <xsd:attribute name="width" type="xsd:int"></xsd:attribute> 
    <xsd:attribute name="height" type="xsd:int"></xsd:attribute> 
  </xsd:complexType> 
</xsd:schema>

Local

Créez un projet vide TestShapesDiagramSchemaXML et dans ce projet créez le fichier Schema XML shapesDiagram.xsd (avec le contenu comme décrit ci-dessus) et le fichier XML shapesDiagram.xml comme ceci :

<?xml version="1.0" encoding="UTF-8"?> 
<diagram xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="shapesDiagram.xsd"> 
  <shapes> 
    <rectangle x="0" y="10" width="45" height="78"/> 
    <ellipse /> 
    <rectangle /> 
    <ellipse /> 
  </shapes> 
</diagram>

DOM-SSE  - Schema XML - Project

Comme vous pouvez le constater, le fichier shapesDiagram.xml est lié au schéma XML shapesDiagram.xsd avec l'attribut schemaLocation qui contient
l'espace de nom http://www.eclipse.org/shapes/, suivi d'un espace puis du nom du fichier schéma XML shapesDiagram.xsd :

<diagram xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.eclipse.org/shapes/ shapesDiagram.xsd"> 
..

Auto-complétion

L'éditeur XML est capable d'utiliser les informations du Schema XML pour proposer les noeuds DOM (element, attributs...) disponibles en fonction de la position du curseur dans l'éditeur. Si vous vous positionnez en dessous de l'élement shapes, puis que vous effectuez Ctrl+Space, la fenêtre d'auto-complétion s'affiche en proposant les élements XML ellipse et rectangle :

DOM-SSE  - Schema XML - Auto-Complétion

Validation

L'éditeur XML gère les erreurs de validation du contenu XML de l'editeur. Par exemple si vous tentez d'ajouter l'élement XML <a>, un marqueur rouge s'affiche en indiquant que l'élement insérés ne suit pas le schéma XML :

DOM-SSE  - Schema XML - Validation

Catalogue XML

Le plugin XML de WST fournit la possibilité de stocker les DTD et les chéma XML dans un catalogue XML. Pour y accéder, Ouvrez les préferences via le menu Window/Préférences et accédez au noeud XML/XML Catalog :

DOM-SSE  - XML Catalog - Preferences

Il existe 2 entrées de catalogues :

  • User Specified Entries : qui permet d'enregistrer son schéma XML dans le catalogue.
  • Plugin Specified Entries qui contiennent les schémas XML et DTD disponibles. Ils proviennent des plugins installés dans votre Eclipse qui ont enregistrés leur DTD et Schéma XML à l'aide du point d'extension org.eclipse.wst.xml.core.catalogContributions fourni par le projet XML de WST.

Catalogue XML - User-Specified Entry

Pour faire référence au schéma XML shapesDiagram.xsd uniquement par espace de nom sans utiliser schemaLocation :

<diagram xmlns="http://www.eclipse.org/shapes/" > 
... 

il faut enregistrer le schéma XML dans le catalogue XML (section User-Specified Entry). Pour cela accéder au catalogue XML et sélectionnez User-Specified Entry, puis cliquez sur le bouton Add.... Sélectionner le schéma XML :

DOM-SSE  - Catalog XML - Add Entry

Key Type à la valeur Namespace Name car nous souhaitons faire réference au schéma par l'espace de nom http://www.eclipse.org/shapes/.

Remplacer le fichier shapesDiagram.xml par ce contenu pour vérifiez que le schéma XML est bien enregistré dans le catalogue XML.

<?xml version="1.0" encoding="UTF-8"?> 
<diagram xmlns="http://www.eclipse.org/shapes/"> 
  <shapes> 
    <rectangle x="0" y="10" width="45" height="78" /> 
    <ellipse /> 
    <rectangle /> 
    <ellipse /> 
  </shapes> 
</diagram>

Catalogue XML - Extension

WST donne la possibilité à n'importe quel plugin, d'enregistrer un schéma XML dans le catalogue XML. En effet le point d'extension.org.eclipse.wst.xml.core.catalogContributions à un plugin d'enregistrer un schéma XML dans le catalogue XML.

Nous allons modifier Shapes DOM-SSE pour enregistrer le schéma XML dans le catalogue XML de WST. Les étapes sont :

  • Créer un répertore xsd dans le plugin org.eclipse.wst.xml.examples.shapes.
  • Créer shapesDiagram.xsd dans le répertore xsd.
  • Ajouter le point d'extension org.eclipse.wst.xml.core.catalogContributions dans le fichier plugin.xml comme suit :

<plugin> 
...<extension 
  point="org.eclipse.wst.xml.core.catalogContributions"> 
  <catalogContribution 
  id="org.eclipse.wst.xml.examples.shapes.catalog"> 
  <public 
  publicId="http://www.eclipse.org/shapes/" 
  uri="xsd/shapesDiagram.xsd"> 
  </public> 
  </catalogContribution> 
  </extension> 
...

Le wizard de création ShapesCreationWizard d'un fichier shapesDiagram*.xml doit être modifié pour ajouter l'espace de nom http://www.eclipse.org/shapes/ au XML généré. Pour cela modifier la méthode ShapesCreationWizard#getInitialContents() comme ceci :

 
  protected InputStream getInitialContents() { 
      String xml = new String("<diagram xmlns=\"http://www.eclipse.org/shapes/\" " + 
          " title=\"My shapes diagram\" >\n" + // 
          "\t<shapes>\n" // 
          + "\t\t<rectangle x=\"10\" y=\"20\" width=\"100\" height=\"100\" />\n" // 
          + "\t\t<ellipse x=\"15\" y=\"25\" width=\"80\" height=\"50\" />\n" // 
          + "\t</shapes>\n" + // 
          "</diagram>"); 
      return new ByteArrayInputStream(xml.getBytes()); 
    }

Lorsque vous relancez Shapes DOM-SSE, vous pourrez constater que le schéma XML est enregistrés dans l'entrée XML Catalog Plugin Specificied Entries.

Social Bookmarking:

                                     

Commentaires, Pingbacks:

Connectez-vous pour vous abonner à cet article:

Flux de commentaires pour cet article : Atom 1.0  RSS 2.0

Cet article n'a pas de Commentaires/Pingbacks pour le moment...

Vous devez être identifié pour poster un commentaire.

Liste des blogs

Akrogen Blog

Catégories


Rechercher

<  Février 2012  >
Lun Mar Mer Jeu Ven Sam Dim
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29        

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web