View Issue Details

IDProjectCategoryView StatusLast Update
0001084Dracca[All Projects] Generalpublic2017-08-09 20:49
ReporterXenostomAssigned ToXenostom 
PrioritynormalSeverityfeatureReproducibilityN/A
Status CloseResolutionfixed 
Product Version 
Target VersionFixed in Version1.0.1 
Summary0001084: Rédiger la XSD de chaque document XML
DescriptionCela va me prendre un sacré moment, mais il est important de rédiger la XSD de chaque type de document XML que j'ai dans Dracca:

• NetBeans offrira alors l'auto-complétion dans ces XML
• Il sera possible de les valider avant de déployer le gamebook en ligne (évitant ainsi les erreurs)
• Cela fixera de manière univoque la structure de chaque document, et le contenu à mettre dans chaque noeud

Donc, c'est vraiment une sacrée valeur ajoutée pour ne pas risquer de m'embrouiller dans le projet d'ici quelques années.
TagsNo tags attached.
Attach Tags

Relationships

related to 0001100 CloseXenostom warning: failed to load external entity "/cygdrive/c/wamp/www/dracca/sources/gamebook/univers/espece/personnage/.xml" 

Activities

Xenostom

Xenostom

2016-03-17 13:16

developer   ~0001612

A noter que j'ai 621 documents XML à traiter... je n'aurai pas autant de XSD, évidemment, mais y'en aura quand même un sacré paquet!
Xenostom

Xenostom

2016-03-17 19:10

developer   ~0001613

Last edited: 2016-04-01 17:07

View 2 revisions

Ah oui, en effet, c'est juste génial: l'auto-complétion est hyper-pratique, et la validation m'a corrigée des tas de fautes que j'avais pu faire dans mes fiches de personnages.

A noter: il faudra surement faire un shell qui auto-génère certaines XSD, qui seront alors incluses dans les XSD normales, pour pouvoir faire l'auto-complétion et la validation des attributs "ref" (genre, si je fais un noeud 'personnage ref=""', l'auto-complétion se fait sur la liste complète des personnages de Dracca).

Cela fera d'ailleurs une vérification supplémentaire s'assurant par exemple que je n'ai pas utilisé un objet inexistant dans le gamebook.

Xenos

Xenos

2016-03-31 23:01

administrator   ~0001656

Last edited: 2016-04-01 17:07

Eh ben, ça a été long! Mais c'est fait!

J'ai maintenant une XSD pour chaque XML de Dracca. Ainsi, j'ai pu corriger des tas d'erreurs un peu partout (genre des références à des lieux qui n'existaient pas encore, des personnages oubliés, des erreurs de typo etc).

Dans la foulée, j'ai vu que NetBeans savait gérer les XSD pour l'auto-complétion: j'ai donc l'auto-complétion quand je rédige le gamebook! Cela veut dire qu'en faisant "Ctrl+Espace", NetBeans me liste les noeuds XML autorisés à cet endroit. Une fois le noeud voulu choisi, NetBeans l'insère dans le document avec les attributs obligatoires! Encore du gain de temps (et des erreurs évitées)!

Mais encore mieux: j'ai ajouté un bout de code dans le compilateur pour générer une XSD à partir des documents XML du gamebook. Ainsi, le schéma usuel est le suivant:
• J'ajoute un nouvel élément à l'univers de jeu en créant un XML qui le décrit (personnage, objet, etc)
• J'indique la XSD à utiliser pour ce XML
• Je rédige le contenu de ce XML, aidé par l'auto-complétion de NetBeans (grâce à la XSD précédente, manuellement créée et appliquée au XML)
• Je peux valider rapidement les modifications courantes grâce à NetBeans (Ctrl+Shift+F9): il m'indique alors si le XML est valide, et si non, les endroits qui ne vont pas
• Comme ma XSD manuelle utilise la XSD auto-générée, alors ma XSD manuelle dispose de la liste de tous les objets du jeu et NetBeans peut me dire si je fait référence à un objet inexistant
• Une fois que le XML est ok, je commit, et il est automatiquement revalidé (pour être sûr de ne pas commiter un truc que j'ai oublié de valider)
• La XSD autogénérée peut être regénérée manuellement (bouton Run / XSD Only). Elle est aussi regénrée automatiquement avant le deploy (ou en faisant un "Run/Check").

Et je gagne du temps, pour un code plus sûr!
Xenos

Xenos

2016-03-31 23:47

administrator   ~0001657

Last edited: 2017-08-09 20:49

View 2 revisions

Et un article explicatif en prime: https://toile.reinom.com/les-astuces-et-les-pieges-de-xml/#XSD

Bon Diou que c'est bon d'avoir cette auto-complétion qui magiquement indique tout ce que l'univers de jeu contient! J'espère juste que cela tiendra dans le temps (car l'univers de jeu ne fera que grossir). Au pire, je sous-catégoriserai des trucs.

Issue History

Date Modified Username Field Change
2016-03-17 13:14 Xenostom New Issue
2016-03-17 13:14 Xenostom Status New => Understood
2016-03-17 13:16 Xenostom Note Added: 0001612
2016-03-17 13:16 Xenostom Assigned To => Xenostom
2016-03-17 13:16 Xenostom Status Understood => In progress
2016-03-17 19:10 Xenostom Note Added: 0001613
2016-03-17 19:12 Xenostom Note Edited: 0001613 View Revisions
2016-03-25 17:48 Xenostom Relationship added related to 0001100
2016-03-31 23:01 Xenos Note Added: 0001656
2016-03-31 23:47 Xenos Note Added: 0001657
2016-03-31 23:47 Xenos Status In progress => Ready
2016-03-31 23:47 Xenos Resolution open => fixed
2016-04-01 16:50 AutoUpdater Status Ready => Resolved
2016-04-01 17:07 AutoUpdater Fixed in Version => 1.0.1
2016-04-01 17:13 Xenos Status Resolved => Close
2017-04-25 17:16 Xenos Project @15@ => Dracca
2017-08-09 20:49 Xenos Note Edited: 0001657 View Revisions