Ph.D. Thesis - Business Informatics Group
Ph.D. Thesis - Business Informatics Group
Ph.D. Thesis - Business Informatics Group
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2.3 A DTD to Ecore Transformation Framework<br />
XML Element Type<br />
XML Attribute<br />
XOR<br />
Table 2.1: Transformation Rules from DTD to Ecore<br />
Rule DTD Concept Ecore Concept<br />
R 1 XMLElemType (ET) EClass<br />
XMLElemType. Name EClass.name<br />
(1) XMLEmptyET no additional elements required<br />
(2) XMLAnyET no additional elements required<br />
(3) XMLAtomicET add EAttribute<br />
EAttribute.name=”PCDATA”, EAttribute.eAttributeType=EString,<br />
EAttribute.defaultValue=XMLAtomicET.value<br />
(4) XMLCompositeET<br />
ElemContent<br />
If XMLSequence with<br />
cardinality=1 and nested=false<br />
If XMLChoice with cardinality=1<br />
and nested=false<br />
If XMLContentParticle with<br />
cardinality>1 or nested=true<br />
add EReference for each XMLElementType in XMLSequence<br />
EReference.name=XMLElementType.name, EReference.containment=true<br />
add EReference for each XMLElementType in XMLChoice<br />
EReference.name=XMLElementType.name, EReference.containment=true<br />
add OCL constraints restricting the alternative EReferences<br />
add helper EClasses for each XMLSequence or XMLChoice serving as containers<br />
for nested XMLContentParticles<br />
(5) XMLCompositeETMixedContent add EReference for each XMLElementType<br />
EReference.name=XMLElementType.name, EReference.containment=true<br />
add EAttribute<br />
EAttribute.name=”PCDATA”, EAttribute.eAttributeType=EString,<br />
EAttribute.defaultValue= XMLCompositeETMixedContent.value<br />
R1.1 XMLContentParticle.cardinality EReference.multiplicity<br />
(1) ? (Zero-or-one)<br />
EReference.lowerBound=0, EReference.upperBound=1<br />
(2) * (Zero-or-more)<br />
EReference.lowerBound=0, EReference.upperBound=-1<br />
(3) + (One-or-more)<br />
EReference.lowerBound=1, EReference.upperBound=-1<br />
(4) no symbol<br />
EReference.lowerBound=1, EReference.upperBound=1<br />
R2 XMLAttribute EAttribute<br />
XMLAttribute.name EAttribute.name<br />
(1) XMLStringAtt, NMTOKEN(S), IDREF(S) EAttribute.eAttributeType=EString<br />
(2) ID EAttribute.eAttributeType=EString, EAttribute.id=true<br />
(3) XMLEnumAtt add EEnum<br />
EEnum.name= XMLEnumAtt.name+”_ENUM”<br />
for each XMLEnumLiteral add EEnumLiteral<br />
EAttribute.eAttributeType=EEnum<br />
R2.1 XMLAttribute.cardinality EAttribute.multiplicity<br />
R3<br />
(1) default_value<br />
(2) #FIXED<br />
(3) #REQUIRED<br />
(4) #IMPLIED<br />
If XMLElemType is part of several<br />
XMLCompositeETElemContent<br />
Single-valued<br />
Multi-valued<br />
Single-valued<br />
Multi-valued<br />
EAttribute.lowerBound=1, EAttribute.upperBound=1,<br />
EAttribute.defaultValue=XMLAttribute.default_value<br />
EAttribute.lowerBound=1, EAttribute.upperBound=-1,<br />
EAttribute.defaultValue=XMLAttribute.default_value<br />
EAttribute.lowerBound=1, EAttribute.upperBound=1,<br />
EAttribute.defaultValue=default_value, EAttribute.unchangeable=true<br />
EAttribute.lowerBound=1, EAttribute.upperBound=-1,<br />
EAttribute.defaultValue=default_value, EAttribute.unchangeable=true<br />
Single-valued EAttribute.lowerBound=1, EAttribute.upperBound=1<br />
Multi-valued EAttribute.lowerBound=1, EAttribute.upperBound=-1<br />
Single-valued EAttribute.lowerBound=0, EAttribute.upperBound=1<br />
Multi-valued EAttribute.lowerBound=0, EAttribute.upperBound=1<br />
then add OCL constraint to contained EClass specifying that the produced<br />
EReferences are exclusive<br />
27