views:

148

answers:

1

Hi, I'm using EMF, and I created my ecore from XSD.

I notice that the XML that are being saved by the editor have the element DocumentRoot, which is not part of my original XSD. Can I somehow not generate it, so it will not be in the XML files of the editor?

Ido

A: 

If you have no global elements or attributes in your schema, then you won't get a document root. But of course your schema has not specified a single way to write a document in this case, it's only defined types and stuff that can be used in another schema. Some schema will need to declare a global element in order to specify the root of a document.

source: dev.eclipse.org

A document root is created if your model has one and you are using the extended meta data option during loading. The document root has features that correspond to each of your global elements, and the particular feature of the document root that's actually set when deserializing will correspond exactly to the root element that appears in the serialization. Using EObject.eContents().get(0) on the document root instance will return the child EObject of the document root, and that child's eContainmentFeature() will correspond to your global element.

It's good to keep in mind that elements correspond to features that that types correspond to classifiers. Since an EClass corresponds to a complex type, having an instance of an EClass (complex type) is not sufficient information to say what element that should be serialized as; that's determined by eContainmentFeature(), so that's why a document root is needed to specify the root element, because without an eContainer there cannot be a meaningful eContainmentFeature().

source: dev.eclipse.org

Try the mailing list.

Adeel Ansari