Altova XMLSpy 2025 Enterprise Edition

Générer du code depuis des Schémas XML ou des DTD

Accueil Préc Haut Suivant

Avec le générateur de code XMLSpy, vous pouvez générer du code de programmation C#, C++, ou Java depuis des schémas XML ou des DTD. Les bibliothèques de schema wrapper générées peuvent ensuite être intégrées dans votre application personnalisée pour lire, modifier ou écrire des documents XML par le biais d’un programme.

 

Générer du code de programme

1.Ouvrir le schéma pour lequel vous souhaitez générer du code de source.

2.Choisir l’item de menu DTD/Schéma | Générer du code de programme.

3.Dans le volet Choisir modèle du dialogue qui s’ouvre, définir les options de génération de code.

4.Cliquez sur OK. Le dialogue Chercher des dossiers apparaît.

5.Choisir le dossier cible et cliquer sur OK.

6.Vous êtes invité à ouvrir le projet récemment créé dans Microsoft Visual Studio. Cliquez sur Oui. Si le code de Java est produit, vous êtes invité à ouvrir le répertoire de sortie correspondant.

 

Lorsque XMLSpy génbère du code depuis un schéma XML ou DTD, les bibliothèques suivantes sont créées :

 

C++ ou C#

Java

Objectif

Altova

com.altova

Bibliothèque de base contenant un support de runtime commun, à l’identique pour chaque schéma.

AltovaXML

com.altova.xml

Bibliothèque de base contenant un support de runtime pour XML, à l’identique pour chaque schéma.

[YourSchema]

com.YourSchema

Une bibliothèque contenant des déclarations générées depuis le schema d’entrée, nommée comme le fichier de schéma ou DTD. Cette bibliothèque est un DOM (W3C Document Object Model) wrapper qui vous permet de lire, modifier ou créer des documents XML facilement et en toute sécurité. Toutes les données sont contenues à l’intérieur du DOM, et il existe des méthodes pour les données d’extraction depuis le DOM, et pour mettre à jour et créer des données dans le DOM.

 

Le code généré C++ prend en charge soit Microsoft MSXML ou Apache Xerces 3. La syntaxe pour utiliser le code généré est généralement semblable pour les deux mises en œuvre DOM, à l’exception de quelques légères différences (par exemple, Xerces prend en charge plus de fonctions surchargées).

 

Le code C# généré utilise la bibliothèque .NET standard System.XML comme mise en œuvre sous-jacente de DOM.

 

Le code Java généré utilise JAXP (Java API pour le traitement XML) comme interface sous-jacente DOM.

[YourSchemaTest]

com.YourSchemaTest

Le code généré inclut également un squelette d’application test nommé après votre schéma (par exemple, YourSchemaTest). Ceci est une application compilable qui appelle une méthode Example() vide. Vous pouvez ajouter votre code de texte dans cette méthode pour un test rapide et simple de votre bibliothèque récemment générée.

 

Tout en prototypant une application depuis un schéma XML changeant fréquemment, vous devrez éventuellement générer fréquemment du code dans le même répertoire, de manière à ce que les changements de schéma sont réfléchis immédiatement dans le code. Veuillez noter que l’application de test généré et les bibliothèques Altova sont écrasées à chaque fois que vous générez du code dans le même répertoire cible. C’est pourquoi il ne faut pas ajouter du code à l’application de test généré. Au lieu de cela, veuillez intégrer les bibliothèques dans votre projet (voir Intégrer des Bibliothèques Schema Wrapper).

 

Génération de nom et espaces de nom

XMLSpy génère des classes correspondant à tous les éléments déclarés ou types complexes qui redéfinissent tout type complexe de votre schéma XML, préservant la dérivation de classe, telle que définie par les extensions des types complexes dans votre schéma XML. Dans le cas de schémas complexes qui importent des composants de schéma de multiples espaces de noms, XMLSpy préserve cette information en générant les espaces de noms C# or C++ appropriés ou les packs Java.

 

Généralement, le générateur de code tente de préserver les noms pour les espaces de noms générés, classes et membres depuis le schéma XML d’origine. Les caractères qui ne sont pas valides en identifiants dans le langage cible sont remplacés par a "_". Les noms qui qui entreraient en collision avec les autres noms ou mots réservés sont rendus uniques en ajoutant un numéro. La génération de nom peut être influencée en changeant les paramètres par défaut dans le modèle SPL.

 

Les espaces de noms depuis le schéma XML sont convertis en packs dans Java ou espaces de noms dans le code C# or C++, utilisant le préfixe d’espace de noms depuis le schéma comme espace de nom du code. La bibliothèque complète est intégrée dans un pack pu appareil de noms dérivé depuis le nom de fichier du schéma, donc vous pouvez utiliser le multiples bibliothèques générées dans un programme sans conflits de noms.

 

Types de données

Le Schéma XML a un modèle de type de données plus élaboré que Java, C# ou C++. Le générateur de code convertit les types de schéma XML intégrés en des types primitifs spécifique au langage, ou pour des classes délivrées avec la bibliothèque d’Altova. Des types complexes et types dérivés dans le schéma sont convertis en classes dans la bibliothèque générée. Les facettes d’énumération de types simples sont converties en constantes symboliques.

 

Le mappage de types simples peut être configuré en modèle SPL, voir Référence SPL.

 

Si vos fichiers d’instance XML utilisent vos types de schéma associés au temps et à la durée, ceux-ci sont convertis en classes natives d’Altova dans le code généré. Pour plus d’informations concernant les classes de bibliothèque, voir :

 

Référence aux classes générées (C++)

Référence aux classes générées (C#)

Référence aux classes générées (Java)

 

Pour des informations sur le type de conversion et autres détails applicables à chaque langage, voir :

 

À propos des Schema Wrapper Libraries (C++)

À propos des Schema Wrapper Libraries (C#)

À propos des Schema Wrapper Libraries (Java)

 

Gestion de la mémoire

Une arborescence DOM est comprise de nœuds, qui sont toujours la propriété d’un document DOM spécifique - même si le nœud ne fait pas actuellement partie du contenu du document. Toutes les classes générées sont référencées aux nœuds DOM qu’ils représentent, et non aux valeurs. Ceci signifie qu’assigner une instance de la classe générée ne copie pas la valeur, ceci crée une référence supplémentaire aux mêmes données.

 

Prise en charge du schéma XML

Les constructions de schéma XML suivantes sont traduites en code :

 

a) espaces de noms XML

 

b) Types simples :

 

Types de schéma XML intégrés

Les types simples dérivés par extension

Les types simples dérivés par restriction

Facettes

Enumérations

Motifs

 

c) Types complexes :

 

Nœud anyType intégré

Types complexes définis par l’utilisateur

Dérivé par extension : Mappé vers les classes dérivées

Dérivé par restriction

Contenu complexe

Contenu simple

Contenu mixte

 

Les fonctions de schéma XML avancées suivantes ne son pas prises en charge (ou pas entièrement prises en charge) dans les classes wrapper générées :

 

Caractères génériques : xs:any and xs:anyAttribute

Modèles de contenu (séquence, choix, tout). Le compositeur du niveau supérieur est disponible dans SPL, mais n’est pas appliqué par les classes générées.

Valeurs par défaut et fixes pour les attributs. Celles-ci sont disponibles dans SPL, mais ne sont pas définies ou appliquées par les classes générées.

Attributs xsi:type, types abstraits. Si vous devez écrire l’attribut xsi:type, utilisez la méthode SetXsiType() de classes générées.

Types d’union : pas toutes les combinaisons sont prises en charge.

Les groupes de substitution sont partiellement pris en charge (resolus comme « choice »).

Attribut nillable="true" et xsi:nil

Contraintes uniques

Contraintes d’identité (key and keyref)

 

© 2018-2024 Altova GmbH