2009-11-10 6 views
1

J'utilise EMF, et j'ai créé mon ecore à partir de XSD.Comment ne pas écrire le DocumentRoot au XML

Je remarque que les éléments XML enregistrés par l'éditeur possèdent l'élément DocumentRoot, qui ne fait pas partie de mon XSD d'origine. Puis-je en quelque sorte ne pas le générer, donc il ne sera pas dans les fichiers XML de l'éditeur?

Ido

Répondre

0

Si aucun des éléments globaux ou attributs dans votre schéma, vous n'obtiendrez une racine de document. Mais de bien sûr votre schéma n'a pas spécifié de une seule façon d'écrire un document dans ce cas , ce sont seulement les types définis et choses qui peuvent être utilisées dans un autre schéma . Certains schémas devront déclarer un élément global afin de spécifier la racine d'un document.

source: dev.eclipse.org

est créé une racine du document si votre modèle a un et que vous utilisez l'option de méta-données étendue au cours chargement. La racine du document a caractéristiques qui correspondent à chacun des vos éléments globaux, et la caractéristique particulière du document racine qui est réellement réglé lorsque désérialisation correspondra exactement à l'élément racine qui apparaît dans la sérialisation. L'utilisation EObject.eContents(). Get (0) sur l'instance racine du document renverra l'enfant EObject de la racine du document, et la eContainmentFeature de cet enfant() correspondra à votre élément global .

Il est bon de garder à l'esprit que les éléments correspondent aux caractéristiques qui correspondent aux classificateurs. Puisqu'un EClass correspond à un type complexe , avoir une instance d'un EClass (type complexe) n'est pas suffisamment d'informations pour dire quel élément qui devrait être sérialisé comme; qui est déterminé par eContainmentFeature(), de sorte que c'est pourquoi une racine de documents est nécessaire pour spécifier l'élément racine , parce que sans eContainer il ne peut pas être une eContainmentFeature significative().

source: dev.eclipse.org

Essayez le mailing list.